<?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>194434</bug_id>
          
          <creation_ts>2019-02-08 05:43:24 -0800</creation_ts>
          <short_desc>[ESNext] Implement private methods</short_desc>
          <delta_ts>2021-02-10 14:44:20 -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>213372</dependson>
          <blocked>194435</blocked>
    
    <blocked>219181</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Caio Lima">ticaiolima</reporter>
          <assigned_to name="Caio Lima">ticaiolima</assigned_to>
          <cc>709922234</cc>
    
    <cc>annulen</cc>
    
    <cc>caitp</cc>
    
    <cc>chi187</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mike</cc>
    
    <cc>msaboff</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</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>1504159</commentid>
    <comment_count>0</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2019-02-08 05:43:24 -0800</bug_when>
    <thetext>The proposal https://tc39.github.io/proposal-private-methods/ is on Stage 3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539403</commentid>
    <comment_count>1</comment_count>
      <attachid>370694</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2019-05-27 08:55:23 -0700</bug_when>
    <thetext>Created attachment 370694
WIP - Patch

This patch is dependent on changes from https://bugs.webkit.org/show_bug.cgi?id=174212.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548605</commentid>
    <comment_count>2</comment_count>
      <attachid>373050</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2019-06-27 13:48:10 -0700</bug_when>
    <thetext>Created attachment 373050
Patch

This Patch does not apply to tree, since it is a diff from patch on https://bugs.webkit.org/show_bug.cgi?id=174212.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579561</commentid>
    <comment_count>3</comment_count>
      <attachid>380859</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2019-10-14 00:24:27 -0700</bug_when>
    <thetext>Created attachment 380859
Patch

This patch is the diff of private methods on top of class fields patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580066</commentid>
    <comment_count>4</comment_count>
      <attachid>380859</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-10-15 05:57:35 -0700</bug_when>
    <thetext>Comment on attachment 380859
Patch

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

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:3027
&gt; +    if (!m_privateNamesStack.size())
&gt; +        return;

Could this be an assertion?

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:-304
&gt; -

You could probably drop this file if it&apos;s just whitespace changes.

&gt; Source/JavaScriptCore/runtime/JSSymbolTableObject.h:45
&gt; -    
&gt; +

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618673</commentid>
    <comment_count>5</comment_count>
      <attachid>390683</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-02-13 13:12:15 -0800</bug_when>
    <thetext>Created attachment 390683
WIP - Patch

This patch is the diff on top of current private fields patch on https://bugs.webkit.org/show_bug.cgi?id=206431</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629588</commentid>
    <comment_count>6</comment_count>
      <attachid>393477</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-03-13 06:09:32 -0700</bug_when>
    <thetext>Created attachment 393477
WIP - Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686414</commentid>
    <comment_count>7</comment_count>
      <attachid>408191</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-09-07 12:11:50 -0700</bug_when>
    <thetext>Created attachment 408191
WIP - Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699870</commentid>
    <comment_count>8</comment_count>
      <attachid>411896</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-10-20 12:06:17 -0700</bug_when>
    <thetext>Created attachment 411896
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700160</commentid>
    <comment_count>9</comment_count>
      <attachid>411978</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-10-21 06:15:16 -0700</bug_when>
    <thetext>Created attachment 411978
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700331</commentid>
    <comment_count>10</comment_count>
      <attachid>411978</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-10-21 12:56:35 -0700</bug_when>
    <thetext>Comment on attachment 411978
Patch

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

I think it might be worth adding some tests which try to tier up the brand check and still are able to throw via OSRExit or generic slow path, to be sure that it&apos;s ok that the result of GetPrivateName doesn&apos;t get used

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:2731
&gt; +RegisterID* BytecodeGenerator::emitGetPrivateName(RegisterID* dst, RegisterID* base, RegisterID* property)

Oops 😬, nice

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:2802
&gt; +    // This is going to trhow TypeError if brand is not present

nit: throw

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:2803
&gt; +    emitGetPrivateName(newTemporary(), base, brandSymbol);

Not really actionable right now, but just thinking: In cases where there are multiple instances of the same class, we will throw on the GetFromScope before here. It will be a better error in some ways (it will show the field name), but worse in other ways (won&apos;t explain what it&apos;s trying to do).

Also, I&apos;m a bit worried that the result of the GetPrivateName is not going to be USED anywhere, and we might decide to throw it out if the operation isn&apos;t considered effectful.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:2960
&gt; +    if (!m_privateNamesStack.size())

nit: Right now, the only caller is guarding on `hasPrivateNames`. Does it make sense to just ASSERT() this and make sure it&apos;s only called in places it makes sense? (ditto above)

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:903
&gt; +        if (generator.isPrivateMethod(identifier())) {

Maybe it would make sense to rename BaseDotNode::isPrivateField() to make this clearer, because it seems weird that `isPrivateField()` and `isPrivateMethod()` can both be true

&gt; Source/JavaScriptCore/parser/VariableEnvironment.h:104
&gt; +    bool isPrivateAccess() const { return isMethod(); }

I find the name is a bit confusing --- Can we call this `is[Private]MethodOrAccessor` instead?

&quot;private access&quot; reads like it applies to any private member access, to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700404</commentid>
    <comment_count>11</comment_count>
      <attachid>411978</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-10-21 14:47:08 -0700</bug_when>
    <thetext>Comment on attachment 411978
Patch

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

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:2803
&gt;&gt; +    emitGetPrivateName(newTemporary(), base, brandSymbol);
&gt; 
&gt; Not really actionable right now, but just thinking: In cases where there are multiple instances of the same class, we will throw on the GetFromScope before here. It will be a better error in some ways (it will show the field name), but worse in other ways (won&apos;t explain what it&apos;s trying to do).
&gt; 
&gt; Also, I&apos;m a bit worried that the result of the GetPrivateName is not going to be USED anywhere, and we might decide to throw it out if the operation isn&apos;t considered effectful.

This turns out to be wrong, I was thinking `@privateBrandName` would be different for each instance of the class, but it looks like that&apos;s not the case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700800</commentid>
    <comment_count>12</comment_count>
      <attachid>412125</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-10-22 13:30:14 -0700</bug_when>
    <thetext>Created attachment 412125
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700806</commentid>
    <comment_count>13</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-10-22 13:34:29 -0700</bug_when>
    <thetext>(In reply to Caitlin Potter (:caitp) from comment #11)
&gt; Comment on attachment 411978 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=411978&amp;action=review
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:2803
&gt; &gt;&gt; +    emitGetPrivateName(newTemporary(), base, brandSymbol);
&gt; &gt; 
&gt; &gt; Not really actionable right now, but just thinking: In cases where there are multiple instances of the same class, we will throw on the GetFromScope before here. It will be a better error in some ways (it will show the field name), but worse in other ways (won&apos;t explain what it&apos;s trying to do).
&gt; &gt; 
&gt; &gt; Also, I&apos;m a bit worried that the result of the GetPrivateName is not going to be USED anywhere, and we might decide to throw it out if the operation isn&apos;t considered effectful.
&gt; 
&gt; This turns out to be wrong, I was thinking `@privateBrandName` would be
&gt; different for each instance of the class, but it looks like that&apos;s not the
&gt; case.

It is different for each evaluation of a class. For instances of the same class evaluation, it&apos;s the same. Also, `GetPrivateName` has `MustGenerate` flag, so it DCE won&apos;t be able to remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703305</commentid>
    <comment_count>14</comment_count>
      <attachid>412125</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-10-30 20:59:06 -0700</bug_when>
    <thetext>Comment on attachment 412125
Patch

We discussed at meeting and we will go to the different design of the implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704843</commentid>
    <comment_count>15</comment_count>
      <attachid>413292</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-11-05 07:02:14 -0800</bug_when>
    <thetext>Created attachment 413292
WIP - Patch

This patch is rewriting the mechanism we had to inner functions and evals that reference private methods. We are not relying on VariableEnvironment anymore, making it uncoupled from TDZ variables. It also resolve merge conflicts from recent ToT changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706593</commentid>
    <comment_count>16</comment_count>
      <attachid>413857</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-11-11 13:15:41 -0800</bug_when>
    <thetext>Created attachment 413857
WIP - Patch

It starts new brand check mechanism storing them on Structure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713244</commentid>
    <comment_count>17</comment_count>
      <attachid>415781</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-12-09 11:45:36 -0800</bug_when>
    <thetext>Created attachment 415781
WIP - Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718684</commentid>
    <comment_count>18</comment_count>
      <attachid>417378</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2021-01-11 08:13:54 -0800</bug_when>
    <thetext>Created attachment 417378
WIP - Patch

Rebase and adding BrandedStructure info to ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721013</commentid>
    <comment_count>19</comment_count>
      <attachid>417999</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2021-01-20 14:50:57 -0800</bug_when>
    <thetext>Created attachment 417999
WIP - Patch

New version of patch including now inlining of `check_private_brand` and `set_private_brand` IC during DFGByteCodeParser.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723786</commentid>
    <comment_count>20</comment_count>
      <attachid>418748</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2021-01-29 10:54:41 -0800</bug_when>
    <thetext>Created attachment 418748
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724262</commentid>
    <comment_count>21</comment_count>
      <attachid>418881</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2021-02-01 08:48:43 -0800</bug_when>
    <thetext>Created attachment 418881
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724280</commentid>
    <comment_count>22</comment_count>
      <attachid>418888</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2021-02-01 09:34:45 -0800</bug_when>
    <thetext>Created attachment 418888
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724423</commentid>
    <comment_count>23</comment_count>
      <attachid>418929</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2021-02-01 14:46:15 -0800</bug_when>
    <thetext>Created attachment 418929
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726221</commentid>
    <comment_count>24</comment_count>
      <attachid>418929</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2021-02-05 12:10:18 -0800</bug_when>
    <thetext>Comment on attachment 418929
Patch

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

Super nice!  Thanks for all of your hard work on this patch.  R=me with comments.

&gt; Source/JavaScriptCore/ChangeLog:66
&gt; +                foo(o) { return this.#m(); }

I think you meant:

foo(o) { return o.#m(); }

&gt; Source/JavaScriptCore/ChangeLog:81
&gt; +        check_private_brand this, loc11

Not this, but rather whatever loc corresponds to `o`.

&gt; Source/JavaScriptCore/ChangeLog:131
&gt; +        `JITPravateBrandAccessGenerator` to support IC for both operands.

JITPrivateBrandAccessGenerator?

&gt; Source/JavaScriptCore/ChangeLog:139
&gt; +        FTL. During DFG parsing we try reduce those access  to `CheckIdentifeir`
&gt; +        and `CheckStructure` (with `PutStructure` for `set_private_brand` cases)
&gt; +        based on available profiled data.

I would have added a blurb about how this is meant to eventually impact optimization. Namely, we expect CheckIdentifier to be eliminated by virtue of likely constant-folding of the load of the identifier (I think? - if that&apos;s not the case, then write something different ;-)) and CheckStructure is likely to be redundant to other CheckStructures that would be done on any activity on the receiver. In particular: CheckStructure from brand checks is on a path-of-no-return to a GetByOffset sequence, in practically all cases where the branch check IC was in a clean (finite structure set) state. That GetByOffset sequence will have a CheckStructure anyway. So, we&apos;re just moving the CheckStructure up. And we achieve that design by having the right defenses in place: the branch check can be polymorphic if it wants to be.

&gt; Source/JavaScriptCore/bytecode/SetPrivateBrandStatus.cpp:158
&gt; +        auto bless = [&amp;] (const SetPrivateBrandStatus&amp; result) -&gt; SetPrivateBrandStatus {
&gt; +            if (!context-&gt;isInlined(codeOrigin)) {
&gt; +                SetPrivateBrandStatus baselineResult = computeForBaseline(
&gt; +                    baselineBlock, baselineMap, bytecodeIndex, didExit);
&gt; +                baselineResult.merge(result);
&gt; +                return baselineResult;
&gt; +            }
&gt; +            if (didExit.isSet(ExitFromInlined))
&gt; +                return result.slowVersion();
&gt; +            return result;
&gt; +        };
&gt; +
&gt; +        if (status.stubInfo) {
&gt; +            SetPrivateBrandStatus result;
&gt; +            {
&gt; +                ConcurrentJSLocker locker(context-&gt;optimizedCodeBlock-&gt;m_lock);
&gt; +                result = computeForStubInfoWithoutExitSiteFeedback(
&gt; +                    locker, context-&gt;optimizedCodeBlock, status.stubInfo);
&gt; +            }
&gt; +            if (result.isSet())
&gt; +                return bless(result);
&gt; +        }

Not necessarily your problem, but it&apos;s a shame that we keep writing this boilerplate.  We really need some templates for doing this stuff to all statuses.  Though we&apos;d have to be careful, since if I remember right, there are *slight* differences.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4138
&gt; +                auto operationToCall = accessType == AccessType::CheckPrivateBrand ? operationCheckPrivateBrandOptimize : operationSetPrivateBrandOptimize;

I know that it would be much more verbose, but it would be so helpful for folks reading the code if this was a switch on accessType (including a DFG_CRASH default case).  That would also make the code much harder to abuse if someone tried to call this with the wrong accessType by accident.

&gt; Source/JavaScriptCore/runtime/Structure.cpp:1532
&gt; +bool BrandedStructure::checkBrand(Symbol* brand)
&gt; +{
&gt; +    UniquedStringImpl* brandUid = &amp;brand-&gt;uid();
&gt; +    for (BrandedStructure* currentStructure = this; currentStructure; currentStructure = currentStructure-&gt;m_parentBrand.get()) {
&gt; +        if (brandUid == currentStructure-&gt;m_brand)
&gt; +            return true;
&gt; +    }
&gt; +    return false;
&gt; +}

I would totally have had this as an inline method in BrandedStructure.h.

&gt; Source/JavaScriptCore/runtime/Structure.h:884
&gt; +class BrandedStructure final : public Structure {

It would be so great if this was in its own file, and there was a separate BrandedStructure.cpp as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726226</commentid>
    <comment_count>25</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2021-02-05 12:13:49 -0800</bug_when>
    <thetext>(In reply to Filip Pizlo from comment #24)

&gt; 
&gt; I would have added a blurb about how this is meant to eventually impact
&gt; optimization. Namely, we expect CheckIdentifier to be eliminated by virtue
&gt; of likely constant-folding of the load of the identifier (I think? - if
&gt; that&apos;s not the case, then write something different ;-)) and CheckStructure
&gt; is likely to be redundant to other CheckStructures that would be done on any
&gt; activity on the receiver. In particular: CheckStructure from brand checks is
&gt; on a path-of-no-return to a GetByOffset sequence, in practically all cases
&gt; where the branch check IC was in a clean (finite structure set) state. That
&gt; GetByOffset sequence will have a CheckStructure anyway. So, we&apos;re just
&gt; moving the CheckStructure up. And we achieve that design by having the right
&gt; defenses in place: the branch check can be polymorphic if it wants to be.
&gt; 

Also, I think it&apos;s not CheckIdentifier, but CheckIsConstant in the code.  And yeah, we expect that to fold because lexical constants are foldable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726729</commentid>
    <comment_count>26</comment_count>
      <attachid>418929</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2021-02-08 12:17:09 -0800</bug_when>
    <thetext>Comment on attachment 418929
Patch

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

Thank you very much for the review!

&gt;&gt; Source/JavaScriptCore/ChangeLog:66
&gt;&gt; +                foo(o) { return this.#m(); }
&gt; 
&gt; I think you meant:
&gt; 
&gt; foo(o) { return o.#m(); }

Yes. Nice catch there.

&gt;&gt; Source/JavaScriptCore/ChangeLog:81
&gt;&gt; +        check_private_brand this, loc11
&gt; 
&gt; Not this, but rather whatever loc corresponds to `o`.

Fixed.

&gt;&gt; Source/JavaScriptCore/ChangeLog:131
&gt;&gt; +        `JITPravateBrandAccessGenerator` to support IC for both operands.
&gt; 
&gt; JITPrivateBrandAccessGenerator?

Fixed.

&gt;&gt; Source/JavaScriptCore/ChangeLog:139
&gt;&gt; +        based on available profiled data.
&gt; 
&gt; I would have added a blurb about how this is meant to eventually impact optimization. Namely, we expect CheckIdentifier to be eliminated by virtue of likely constant-folding of the load of the identifier (I think? - if that&apos;s not the case, then write something different ;-)) and CheckStructure is likely to be redundant to other CheckStructures that would be done on any activity on the receiver. In particular: CheckStructure from brand checks is on a path-of-no-return to a GetByOffset sequence, in practically all cases where the branch check IC was in a clean (finite structure set) state. That GetByOffset sequence will have a CheckStructure anyway. So, we&apos;re just moving the CheckStructure up. And we achieve that design by having the right defenses in place: the branch check can be polymorphic if it wants to be.

This is very useful information to be on ChangeLog. Added.

&gt;&gt; Source/JavaScriptCore/bytecode/SetPrivateBrandStatus.cpp:158
&gt;&gt; +        }
&gt; 
&gt; Not necessarily your problem, but it&apos;s a shame that we keep writing this boilerplate.  We really need some templates for doing this stuff to all statuses.  Though we&apos;d have to be careful, since if I remember right, there are *slight* differences.

I agree. this bothered me when writing those classes.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4138
&gt;&gt; +                auto operationToCall = accessType == AccessType::CheckPrivateBrand ? operationCheckPrivateBrandOptimize : operationSetPrivateBrandOptimize;
&gt; 
&gt; I know that it would be much more verbose, but it would be so helpful for folks reading the code if this was a switch on accessType (including a DFG_CRASH default case).  That would also make the code much harder to abuse if someone tried to call this with the wrong accessType by accident.

Agreed. Done and I also included an ASSERT on `JITPrivateBrandAccessGenerator` to avoid misuse of `accessType` there as well.

&gt;&gt; Source/JavaScriptCore/runtime/Structure.cpp:1532
&gt;&gt; +}
&gt; 
&gt; I would totally have had this as an inline method in BrandedStructure.h.

Agreed. Done.

&gt;&gt; Source/JavaScriptCore/runtime/Structure.h:884
&gt;&gt; +class BrandedStructure final : public Structure {
&gt; 
&gt; It would be so great if this was in its own file, and there was a separate BrandedStructure.cpp as well.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726778</commentid>
    <comment_count>27</comment_count>
      <attachid>419624</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2021-02-08 13:45:43 -0800</bug_when>
    <thetext>Created attachment 419624
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726809</commentid>
    <comment_count>28</comment_count>
      <attachid>419630</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2021-02-08 14:35:05 -0800</bug_when>
    <thetext>Created attachment 419630
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727041</commentid>
    <comment_count>29</comment_count>
      <attachid>419714</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2021-02-09 07:44:48 -0800</bug_when>
    <thetext>Created attachment 419714
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727056</commentid>
    <comment_count>30</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-09 08:30:31 -0800</bug_when>
    <thetext>Committed r272580: &lt;https://commits.webkit.org/r272580&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 419714.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727077</commentid>
    <comment_count>31</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-02-09 09:01:28 -0800</bug_when>
    <thetext>New warnings:

[539/2409] Building CXX object Source/...ources/UnifiedSource-f0a787a9-11.cpp.o
In file included from DerivedSources/JavaScriptCore/unified-sources/UnifiedSource-f0a787a9-11.cpp:4:
../../Source/JavaScriptCore/bytecode/SetPrivateBrandVariant.cpp: In copy constructor ‘JSC::SetPrivateBrandVariant::SetPrivateBrandVariant(const JSC::SetPrivateBrandVariant&amp;)’:
../../Source/JavaScriptCore/bytecode/SetPrivateBrandVariant.cpp:44:13: warning: implicitly-declared ‘constexpr JSC::SetPrivateBrandVariant&amp; JSC::SetPrivateBrandVariant::operator=(const JSC::SetPrivateBrandVariant&amp;)’ is deprecated [-Wdeprecated-copy]
   44 |     *this = other;
      |             ^~~~~
../../Source/JavaScriptCore/bytecode/SetPrivateBrandVariant.cpp:42:1: note: because ‘JSC::SetPrivateBrandVariant’ has user-provided ‘JSC::SetPrivateBrandVariant::SetPrivateBrandVariant(const JSC::SetPrivateBrandVariant&amp;)’
   42 | SetPrivateBrandVariant::SetPrivateBrandVariant(const SetPrivateBrandVariant&amp; other)
      | ^~~~~~~~~~~~~~~~~~~~~~

[566/2409] Building CXX object Source/...sources/UnifiedSource-f0a787a9-3.cpp.o
In file included from DerivedSources/JavaScriptCore/unified-sources/UnifiedSource-f0a787a9-3.cpp:6:
../../Source/JavaScriptCore/bytecode/CheckPrivateBrandVariant.cpp: In copy constructor ‘JSC::CheckPrivateBrandVariant::CheckPrivateBrandVariant(const JSC::CheckPrivateBrandVariant&amp;)’:
../../Source/JavaScriptCore/bytecode/CheckPrivateBrandVariant.cpp:43:13: warning: implicitly-declared ‘JSC::CheckPrivateBrandVariant&amp; JSC::CheckPrivateBrandVariant::operator=(const JSC::CheckPrivateBrandVariant&amp;)’ is deprecated [-Wdeprecated-copy]
   43 |     *this = other;
      |             ^~~~~
../../Source/JavaScriptCore/bytecode/CheckPrivateBrandVariant.cpp:41:1: note: because ‘JSC::CheckPrivateBrandVariant’ has user-provided ‘JSC::CheckPrivateBrandVariant::CheckPrivateBrandVariant(const JSC::CheckPrivateBrandVariant&amp;)’
   41 | CheckPrivateBrandVariant::CheckPrivateBrandVariant(const CheckPrivateBrandVariant&amp; other)
      | ^~~~~~~~~~~~~~~~~~~~~~~~

I think the copy constructors should be removed so that we get default copy constructors instead, yes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727086</commentid>
    <comment_count>32</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2021-02-09 09:35:42 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #31)
&gt; New warnings:
&gt; 
&gt; [539/2409] Building CXX object
&gt; Source/...ources/UnifiedSource-f0a787a9-11.cpp.o
&gt; In file included from
&gt; DerivedSources/JavaScriptCore/unified-sources/UnifiedSource-f0a787a9-11.cpp:
&gt; 4:
&gt; ../../Source/JavaScriptCore/bytecode/SetPrivateBrandVariant.cpp: In copy
&gt; constructor ‘JSC::SetPrivateBrandVariant::SetPrivateBrandVariant(const
&gt; JSC::SetPrivateBrandVariant&amp;)’:
&gt; ../../Source/JavaScriptCore/bytecode/SetPrivateBrandVariant.cpp:44:13:
&gt; warning: implicitly-declared ‘constexpr JSC::SetPrivateBrandVariant&amp;
&gt; JSC::SetPrivateBrandVariant::operator=(const JSC::SetPrivateBrandVariant&amp;)’
&gt; is deprecated [-Wdeprecated-copy]
&gt;    44 |     *this = other;
&gt;       |             ^~~~~
&gt; ../../Source/JavaScriptCore/bytecode/SetPrivateBrandVariant.cpp:42:1: note:
&gt; because ‘JSC::SetPrivateBrandVariant’ has user-provided
&gt; ‘JSC::SetPrivateBrandVariant::SetPrivateBrandVariant(const
&gt; JSC::SetPrivateBrandVariant&amp;)’
&gt;    42 | SetPrivateBrandVariant::SetPrivateBrandVariant(const
&gt; SetPrivateBrandVariant&amp; other)
&gt;       | ^~~~~~~~~~~~~~~~~~~~~~
&gt; 
&gt; [566/2409] Building CXX object
&gt; Source/...sources/UnifiedSource-f0a787a9-3.cpp.o
&gt; In file included from
&gt; DerivedSources/JavaScriptCore/unified-sources/UnifiedSource-f0a787a9-3.cpp:6:
&gt; ../../Source/JavaScriptCore/bytecode/CheckPrivateBrandVariant.cpp: In copy
&gt; constructor ‘JSC::CheckPrivateBrandVariant::CheckPrivateBrandVariant(const
&gt; JSC::CheckPrivateBrandVariant&amp;)’:
&gt; ../../Source/JavaScriptCore/bytecode/CheckPrivateBrandVariant.cpp:43:13:
&gt; warning: implicitly-declared ‘JSC::CheckPrivateBrandVariant&amp;
&gt; JSC::CheckPrivateBrandVariant::operator=(const
&gt; JSC::CheckPrivateBrandVariant&amp;)’ is deprecated [-Wdeprecated-copy]
&gt;    43 |     *this = other;
&gt;       |             ^~~~~
&gt; ../../Source/JavaScriptCore/bytecode/CheckPrivateBrandVariant.cpp:41:1:
&gt; note: because ‘JSC::CheckPrivateBrandVariant’ has user-provided
&gt; ‘JSC::CheckPrivateBrandVariant::CheckPrivateBrandVariant(const
&gt; JSC::CheckPrivateBrandVariant&amp;)’
&gt;    41 | CheckPrivateBrandVariant::CheckPrivateBrandVariant(const
&gt; CheckPrivateBrandVariant&amp; other)
&gt;       | ^~~~~~~~~~~~~~~~~~~~~~~~
&gt; 
&gt; I think the copy constructors should be removed so that we get default copy
&gt; constructors instead, yes?

Yes, let&apos;s just remove it. I&apos;m sending a patch to fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727103</commentid>
    <comment_count>33</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2021-02-09 09:57:45 -0800</bug_when>
    <thetext>Handling warning on https://bugs.webkit.org/show_bug.cgi?id=221612. I&apos;m also disabling Test262 tests for now, since `class-methods-private` flag also includes private accessors tests that is being handled on https://bugs.webkit.org/show_bug.cgi?id=194435</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727821</commentid>
    <comment_count>34</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-10 14:44:20 -0800</bug_when>
    <thetext>&lt;rdar://problem/74207158&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370694</attachid>
            <date>2019-05-27 08:55:23 -0700</date>
            <delta_ts>2019-06-27 13:48:10 -0700</delta_ts>
            <desc>WIP - Patch</desc>
            <filename>private_methods.diff</filename>
            <type>text/plain</type>
            <size>82501</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWJyYW5kLWNoZWNrLmpz
IGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtYnJhbmQtY2hlY2suanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjU5M2FiYjNmYmU1Ci0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtYnJhbmQtY2hlY2suanMKQEAgLTAs
MCArMSwzMyBAQAorLy9AIHJ1bigiLS11c2VDbGFzc0ZpZWxkcz10cnVlIC0tdXNlUHJpdmF0ZU1l
dGhvZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBlKSB7CisgICAgaWYgKGEgIT09IGUp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAi
ICsgYSk7Cit9CisKK2NsYXNzIEMgeworICAgICNtKCkgeworICAgICAgICByZXR1cm4gdGhpcy4j
ZjsKKyAgICB9CisKKyAgICBtZXRob2QoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtKCk7Cisg
ICAgfQorCisgICAgI2YgPSA0OworfQorCitsZXQgYyA9IG5ldyBDKCk7Cithc3NlcnQoYy5tZXRo
b2QoKSwgNCk7CisKK3RyeSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgICNtKCkgeyByZXR1cm4g
MzsgfQorICAgIH0KKworICAgIGxldCBvID0gbmV3IEMoKTsKKyAgICBjLm1ldGhvZC5jYWxsKG8p
OworfSBjYXRjaCAoZSkgeworICAgIGFzc2VydChlIGluc3RhbmNlb2YgVHlwZUVycm9yLCB0cnVl
KTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtY29tcGFy
aXNvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWNvbXBhcmlzb24uanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmMwNTUwMWFlODg5Ci0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtY29tcGFyaXNvbi5qcwpA
QCAtMCwwICsxLDMxIEBACisvL0AgcnVuKCItLXVzZUNsYXNzRmllbGRzPXRydWUgLS11c2VQcml2
YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0
aW9uIChsaHMsIHJocykgeworICAgICAgICBpZiAobGhzICE9PSByaHMpCisgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgbGhzICsgIiBidWcgZ290OiAiICsgcmhzKTsK
KyAgICB9LAorCisgICAgdGhyb3dzOiBmdW5jdGlvbiAoZXhwZWN0ZWRFcnJvciwgb3ApIHsKKyAg
ICAgICAgdHJ5IHsKKyAgICAgICAgICBvcCgpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAg
ICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEVycm9yKSkKKyAgICAgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhwZWN0ZWRFcnJvciAr
ICIgYnV0IHRocmV3OiAiICsgZSk7CisgICAgICAgIH0KKyAgICB9Cit9OworCitjbGFzcyBDIHsK
KyAgICAjbSgpIHsgcmV0dXJuICd0ZXN0MjYyJzsgfQorCisgICAgZ2V0UHJpdmF0ZU1ldGhvZCgp
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI207CisgICAgfQorfQorCitsZXQgYzEgPSBuZXcgQygp
OworbGV0IGMyID0gbmV3IEMoKTsKKworYXNzZXJ0LnNhbWVWYWx1ZShjMS5nZXRQcml2YXRlTWV0
aG9kKCksIGMyLmdldFByaXZhdGVNZXRob2QoKSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL3ByaXZhdGUtbWV0aG9kLWV4dGVuZHMtYnJhbmQtY2hlY2suanMgYi9KU1Rlc3RzL3N0cmVz
cy9wcml2YXRlLW1ldGhvZC1leHRlbmRzLWJyYW5kLWNoZWNrLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43NDdlZmMzZjlhOQotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWV4dGVuZHMtYnJhbmQtY2hlY2suanMKQEAgLTAs
MCArMSw0MSBAQAorLy9AIHJ1bigiLS11c2VDbGFzc0ZpZWxkcz10cnVlIC0tdXNlUHJpdmF0ZU1l
dGhvZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBlKSB7CisgICAgaWYgKGEgIT09IGUp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAi
ICsgYSk7Cit9CisKK2NsYXNzIEJhc2UgeworICAgICNtQmFzZSgpIHsKKyAgICAgICAgcmV0dXJu
IDQ7CisgICAgfQorCisgICAgbWV0aG9kQmFzZSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI21C
YXNlKCk7CisgICAgfQorfQorCitjbGFzcyBDIGV4dGVuZHMgQmFzZSB7CisgICAgI20oKSB7Cisg
ICAgICAgIHJldHVybiB0aGlzLiNmOworICAgIH0KKworICAgIG1ldGhvZCgpIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuI20oKTsKKyAgICB9CisKKyAgICAjZiA9IDE1OworfQorCitsZXQgYyA9IG5l
dyBDKCk7Cithc3NlcnQoYy5tZXRob2QoKSwgMTUpOworYXNzZXJ0KGMubWV0aG9kQmFzZSgpLCA0
KTsKKworbGV0IGJhc2UgPSBuZXcgQmFzZSAoKTsKK2Fzc2VydChiYXNlLm1ldGhvZEJhc2UoKSwg
NCk7Cit0cnkgeworICAgIGMubWV0aG9kLmNhbGwoYmFzZSk7Cit9IGNhdGNoIChlKSB7CisgICAg
YXNzZXJ0KGUgaW5zdGFuY2VvZiBUeXBlRXJyb3IsIHRydWUpOworfQorCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1nZXQtYW5kLWNhbGwuanMgYi9KU1Rlc3RzL3N0
cmVzcy9wcml2YXRlLW1ldGhvZC1nZXQtYW5kLWNhbGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAuLmNmOGQyYzE0ZTMyCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtZ2V0LWFuZC1jYWxsLmpzCkBAIC0wLDAgKzEsMzMgQEAK
Ky8vQCBydW4oIi0tdXNlQ2xhc3NGaWVsZHM9dHJ1ZSAtLXVzZVByaXZhdGVNZXRob2RzPXRydWUi
KQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7
CisgICAgICAgIGlmIChsaHMgIT09IHJocykKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigi
RXhwZWN0ZWQ6ICIgKyBsaHMgKyAiIGJ1ZyBnb3Q6ICIgKyByaHMpOworICAgIH0sCisKKyAgICB0
aHJvd3M6IGZ1bmN0aW9uIChleHBlY3RlZEVycm9yLCBvcCkgeworICAgICAgICB0cnkgeworICAg
ICAgICAgIG9wKCk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKCEoZSBp
bnN0YW5jZW9mIGV4cGVjdGVkRXJyb3IpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleHBlY3RlZEVycm9yICsgIiBidXQgdGhyZXc6ICIg
KyBlKTsKKyAgICAgICAgfQorICAgIH0KK307CisKK2NsYXNzIEMgeworICAgICNtKCkgeyByZXR1
cm4gdGhpcy5fdjsgfQorCisgICAgZ2V0UHJpdmF0ZU1ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuI207CisgICAgfQorfQorCitsZXQgYyA9IG5ldyBDKCk7CisKK2xldCBvMSA9IHtfdjog
J3Rlc3QyNjInfTsKK2xldCBvMiA9IHtfdjogJ2Zvbyd9OyAKK2Fzc2VydC5zYW1lVmFsdWUoYy5n
ZXRQcml2YXRlTWV0aG9kKCkuY2FsbChvMSksICd0ZXN0MjYyJyk7Cithc3NlcnQuc2FtZVZhbHVl
KGMuZ2V0UHJpdmF0ZU1ldGhvZCgpLmNhbGwobzIpLCAnZm9vJyk7CisKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLW5lc3RlZC1jbGFzcy5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL3ByaXZhdGUtbWV0aG9kLW5lc3RlZC1jbGFzcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMC4uZTZjOTk0OGMxYjMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9wcml2YXRlLW1ldGhvZC1uZXN0ZWQtY2xhc3MuanMKQEAgLTAsMCArMSw2OCBAQAor
Ly9AIHJ1bigiLS11c2VDbGFzc0ZpZWxkcz10cnVlIC0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIp
CisKK2Z1bmN0aW9uIGFzc2VydChhLCBlKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7Cit9CisK
KygoKSA9PiB7CisgICAgY2xhc3MgQmFzZSB7CisgICAgICAgIEMgPSBjbGFzcyB7CisgICAgICAg
ICAgICBtZXRob2QoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuI21CYXNlKCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAjbUJhc2UoKSB7CisgICAgICAgICAg
ICByZXR1cm4gNDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBiYXNlID0gbmV3IEJhc2Uo
KTsKKyAgICBsZXQgYyA9IG5ldyBiYXNlLkMoKTsKKyAgICBhc3NlcnQoYy5tZXRob2QuY2FsbChi
YXNlKSwgNCk7CisKKyAgICB0cnkgeworICAgICAgICBjLm1ldGhvZCgpOworICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBUeXBlRXJyb3IsIHRydWUpOworICAg
IH0KK30pKCk7CisKKy8vIFRlc3Qgc2hhZG93IG1ldGhvZHMKKworKCgpID0+IHsKKyAgICBjbGFz
cyBCYXNlIHsKKyAgICAgICAgbWV0aG9kKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI20o
KTsKKyAgICAgICAgfQorCisgICAgICAgIEMgPSBjbGFzcyB7CisgICAgICAgICAgICBtZXRob2Qo
bykgeworICAgICAgICAgICAgICAgIHJldHVybiBvLiNtKCk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICNtKCkgeworICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZvbzsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgZm9vID0gNDsKKyAgICAgICAgfTsKKworICAgICAgICAj
bSgpIHsKKyAgICAgICAgICAgIHJldHVybiAiZm9vIjsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGxldCBiYXNlID0gbmV3IEJhc2UoKTsKKyAgICBsZXQgYyA9IG5ldyBiYXNlLkMoKTsKKyAgICBh
c3NlcnQoYy5tZXRob2QoYyksIDQpOworICAgIGFzc2VydChiYXNlLm1ldGhvZCgpLCAiZm9vIik7
CisKKyAgICB0cnkgeworICAgICAgICBjLm1ldGhvZChiYXNlKTsKKyAgICB9IGNhdGNoIChlKSB7
CisgICAgICAgIGFzc2VydChlIGluc3RhbmNlb2YgVHlwZUVycm9yLCB0cnVlKTsKKyAgICB9Cit9
KSgpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZHMtb24tcHJv
eHkuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZHMtb24tcHJveHkuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmFlYjg5YjEwNmE4Ci0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2RzLW9uLXByb3h5LmpzCkBAIC0w
LDAgKzEsNDIgQEAKKy8vQCBydW4oIi0tdXNlQ2xhc3NGaWVsZHM9dHJ1ZSAtLXVzZVByaXZhdGVN
ZXRob2RzPXRydWUiKQorCitmdW5jdGlvbiBhc3NlcnQoYSwgZSwgbSkgeworICAgIGlmIChhICE9
PSBlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IobSk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydEFy
cmF5Q29udGVudChhLCBlKSB7CisgICAgYXNzZXJ0KGEubGVuZ3RoLCBlLmxlbmd0aCwgIlNpemUg
b2YgYXJyYXlzIGRvZXNuJ3QgbWF0Y2giKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVu
Z3RoOyBpKyspCisgICAgICAgIGFzc2VydChhW2ldLCBlW2ldLCAiYVsiICsgaSArICJdID0gIiAr
IGFbaV0gKyAiIGJ1dCBlWyIgKyBpICsgIl0gPSAiICsgZVtpXSk7Cit9CisKK2xldCBhcnIgPSBb
XTsKKworY2xhc3MgUHJveHlCYXNlIHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgcmV0
dXJuIG5ldyBQcm94eSh0aGlzLCB7CisgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uIChvYmosIHBy
b3ApIHsKKyAgICAgICAgICAgICAgICBhcnIucHVzaChwcm9wKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gb2JqW3Byb3BdOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9Cit9CisK
K2NsYXNzIFRlc3QgZXh0ZW5kcyBQcm94eUJhc2UgeworICAgICNtKCkgeworICAgICAgICByZXR1
cm4gMzsKKyAgICB9CisKKyAgICBtZXRob2QoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtKCk7
CisgICAgfQorfQorCitsZXQgdCA9IG5ldyBUZXN0KCk7CitsZXQgciA9IHQubWV0aG9kKCk7Cith
c3NlcnQociwgMywgIkV4cGVjdGVkOiAzIGJ1dCBnb3Q6ICIgKyByKTsKKworYXNzZXJ0QXJyYXlD
b250ZW50KGFyciwgWydtZXRob2QnXSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3By
aXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWRpcmVjdC1ldmFsLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
cHJpdmF0ZS1uYW1lcy1hdmFpbGFibGUtb24tZGlyZWN0LWV2YWwuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmUyNzA3MjEwZGFjCi0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1lcy1hdmFpbGFibGUtb24tZGlyZWN0LWV2YWwuanMK
QEAgLTAsMCArMSwyMyBAQAorLy9AIHJ1bigiLS11c2VDbGFzc0ZpZWxkcz10cnVlIC0tdXNlUHJp
dmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5j
dGlvbiAobGhzLCByaHMpIHsKKyAgICAgICAgaWYgKGxocyAhPT0gcmhzKQorICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIHJocyArICIgYnVnIGdvdDogIiArIGxocyk7
CisgICAgfQorfTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgI20o
KSB7IHJldHVybiAndGVzdCc7IH0KKworICAgICAgICBjYWxsTWV0aG9kRnJvbUV2YWwoKSB7Cisg
ICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXM7CisgICAgICAgICAgICByZXR1cm4gZXZhbCgnc2Vs
Zi4jbSgpJyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAg
YXNzZXJ0LnNhbWVWYWx1ZShjLmNhbGxNZXRob2RGcm9tRXZhbCgpLCAndGVzdCcpOworfSkoKTsK
KwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sIGIvSlNUZXN0cy90ZXN0
MjYyL2NvbmZpZy55YW1sCmluZGV4IGIxMmMyMjEyNDhmLi5hZDZkMGYyNTc2MCAxMDA2NDQKLS0t
IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi9jb25m
aWcueWFtbApAQCAtMTcsNyArMTcsNiBAQCBza2lwOgogICAgIC0gU3ltYm9sLm1hdGNoQWxsCiAg
ICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0OTMxCiAgICAg
LSByZWdleHAtbG9va2JlaGluZAotICAgIC0gY2xhc3MtbWV0aG9kcy1wcml2YXRlCiAgICAgLSBj
bGFzcy1zdGF0aWMtZmllbGRzLXB1YmxpYwogICAgIC0gY2xhc3Mtc3RhdGljLWZpZWxkcy1wcml2
YXRlCiAgICAgLSBjbGFzcy1zdGF0aWMtbWV0aG9kcy1wcml2YXRlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCmluZGV4IGZl
ZjQxMjI2MDNiLi43ZDhhMzc5M2ZkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKQEAgLTU4LDE0ICs1OCwxNCBAQCBT
b3VyY2VDb2RlIEJ1aWx0aW5FeGVjdXRhYmxlczo6ZGVmYXVsdENvbnN0cnVjdG9yU291cmNlQ29k
ZShDb25zdHJ1Y3RvcktpbmQgY29ucwogICAgIHJldHVybiBTb3VyY2VDb2RlKCk7CiB9CiAKLVVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZURlZmF1
bHRDb25zdHJ1Y3RvcihDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVu
dGlmaWVyJiBuYW1lKQorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRh
Ymxlczo6Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yKENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rv
cktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHBy
aXZhdGVCcmFuZFJlcXVpcmVtZW50KQogewogICAgIHN3aXRjaCAoY29uc3RydWN0b3JLaW5kKSB7
CiAgICAgY2FzZSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU6CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQ29uc3RydWN0b3JLaW5kOjpCYXNlOgogICAgIGNhc2UgQ29uc3RydWN0b3JLaW5kOjpFeHRl
bmRzOgotICAgICAgICByZXR1cm4gY3JlYXRlRXhlY3V0YWJsZShtX3ZtLCBkZWZhdWx0Q29uc3Ry
dWN0b3JTb3VyY2VDb2RlKGNvbnN0cnVjdG9yS2luZCksIG5hbWUsIGNvbnN0cnVjdG9yS2luZCwg
Q29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0KTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUV4
ZWN1dGFibGUobV92bSwgZGVmYXVsdENvbnN0cnVjdG9yU291cmNlQ29kZShjb25zdHJ1Y3Rvcktp
bmQpLCBuYW1lLCBjb25zdHJ1Y3RvcktpbmQsIENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVj
dCwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTgxLDcgKzgxLDcgQEAgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgU291
cmNlQ29kZSYgY28KICAgICByZXR1cm4gQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRh
YmxlKHZtLCBjb2RlLCBuYW1lLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGNvbnN0cnVjdEFiaWxp
dHkpOwogfQogCi1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVz
OjpjcmVhdGVFeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBjb25z
dCBJZGVudGlmaWVyJiBuYW1lLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBDb25z
dHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkpCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgU291
cmNlQ29kZSYgc291cmNlLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBDb25zdHJ1Y3RvcktpbmQg
Y29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIFByaXZh
dGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KQogewogICAgIC8vIEZJ
WE1FOiBDYW4gd2UganVzdCBtYWtlIE1ldGFEYXRhIGNvbXB1dGF0aW9uIGJlIGNvbnN0ZXhwciBh
bmQgaGF2ZSB0aGUgY29tcGlsZXIgZG8gdGhpcyBmb3IgdXM/CiAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzI3MgpAQCAtMjU0LDcgKzI1NCw3IEBAIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1
dGFibGUoVk0mIHZtLCBjb25zdCBTCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgJm1ldGFkYXRhLCBraW5kLCBjb25zdHJ1Y3RB
YmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIFdURjo6bnVsbG9wdCwgRGVyaXZl
ZENvbnRleHRUeXBlOjpOb25lLCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3Rvcik7Cisg
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsICZtZXRhZGF0YSwga2lu
ZCwgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBXVEY6Om51
bGxvcHQsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQs
IGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKTsKICAgICByZXR1cm4gZnVuY3Rpb25F
eGVjdXRhYmxlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQnVpbHRpbkV4ZWN1dGFibGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
QnVpbHRpbkV4ZWN1dGFibGVzLmgKaW5kZXggYWE0NDMzYzZjZWMuLjk0OWFlMmQ3YjBjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxl
cy5oCkBAIC01NywxMiArNTcsMTEgQEAgU291cmNlQ29kZSBuYW1lIyNTb3VyY2UoKTsKICN1bmRl
ZiBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUwogCiAgICAgc3RhdGljIFNvdXJjZUNvZGUgZGVm
YXVsdENvbnN0cnVjdG9yU291cmNlQ29kZShDb25zdHJ1Y3RvcktpbmQpOwotICAgIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoQ29uc3RydWN0b3JL
aW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKTsKLQotICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogY3JlYXRlRXhlY3V0YWJsZShWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBj
b25zdCBJZGVudGlmaWVyJiwgQ29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5KTsKKyAg
ICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yKENv
bnN0cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgUHJpdmF0ZUJyYW5kUmVxdWly
ZW1lbnQpOwogCisgICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVF
eGVjdXRhYmxlKFZNJiwgY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXImLCBDb25z
dHJ1Y3RvcktpbmQsIENvbnN0cnVjdEFiaWxpdHksIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID0g
UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmUpOworICAgIAogICAgIHZvaWQgZmluYWxpemVV
bmNvbmRpdGlvbmFsbHkoKTsKLQogcHJpdmF0ZToKICAgICBWTSYgbV92bTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCmluZGV4IGI4ZmE3MDYxNDU1
Li40Mjk2ZjNhNTc4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0J1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWls
dGluTmFtZXMuaApAQCAtNzIsNiArNzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhn
ZXRPd25Qcm9wZXJ0eU5hbWVzKSBcCiAgICAgbWFjcm8ob3duS2V5cykgXAogICAgIG1hY3JvKFNl
dCkgXAorICAgIG1hY3JvKGNyZWF0ZVByaXZhdGVTeW1ib2wpIFwKICAgICBtYWNybyh0eXBlZEFy
cmF5TGVuZ3RoKSBcCiAgICAgbWFjcm8odHlwZWRBcnJheVNvcnQpIFwKICAgICBtYWNybyh0eXBl
ZEFycmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3RvcikgXApAQCAtMTc0LDYgKzE3NSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIG1hY3JvKG1ldGEpIFwKICAgICBtYWNybyh3ZWJBc3NlbWJseUNvbXBp
bGVTdHJlYW1pbmdJbnRlcm5hbCkgXAogICAgIG1hY3JvKHdlYkFzc2VtYmx5SW5zdGFudGlhdGVT
dHJlYW1pbmdJbnRlcm5hbCkgXAorICAgIG1hY3JvKHByaXZhdGVCcmFuZCkgXAogICAgIG1hY3Jv
KGluc3RhbmNlRmllbGRJbml0aWFsaXplcikKIAogbmFtZXNwYWNlIFN5bWJvbHMgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggMTMzYTIw
MjUzZWEuLmFkMmNhYzVjM2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpc3QucmIKQEAgLTUwMyw2ICs1MDMsMTIgQEAgb3AgOmdldF9ieV92YWwsCiAg
ICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAogICAgIH0KIAorb3AgOmNoZWNrX3By
aXZhdGVfYnJhbmQsCisgICAgYXJnczogeworICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIs
CisgICAgICAgIGJyYW5kOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgfQorCiBvcCA6cHV0X2J5X3Zh
bCwKICAgICBhcmdzOiB7CiAgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggMWUyMGNi
OTM2MTkuLjc5MjZlMmM2ZDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVVc2VEZWYuaApAQCAtMjU1LDYgKzI1NSw3IEBAIHZvaWQgY29tcHV0ZVVzZXNG
b3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgY29u
c3QgSW5zCiAgICAgVVNFUyhPcEFkZFByaXZhdGVGaWVsZCwgYmFzZSwgdmFsdWUsIHNjb3BlKQog
ICAgIFVTRVMoT3BHZXRQcml2YXRlRmllbGQsIGJhc2UsIHNjb3BlKQogICAgIFVTRVMoT3BQdXRQ
cml2YXRlRmllbGQsIGJhc2UsIHZhbHVlLCBzY29wZSkKKyAgICBVU0VTKE9wQ2hlY2tQcml2YXRl
QnJhbmQsIGJhc2UsIGJyYW5kKQogCiAgICAgY2FzZSBvcF9uZXdfYXJyYXlfd2l0aF9zcHJlYWQ6
CiAgICAgICAgIGhhbmRsZU5ld0FycmF5TGlrZShpbnN0cnVjdGlvbi0+YXM8T3BOZXdBcnJheVdp
dGhTcHJlYWQ+KCkpOwpAQCAtMzU1LDYgKzM1Niw3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRl
Y29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgSW5z
CiAgICAgY2FzZSBvcF9zdXBlcl9zYW1wbGVyX2VuZDoKICAgICBjYXNlIG9wX2FkZF9wcml2YXRl
X2ZpZWxkOgogICAgIGNhc2Ugb3BfcHV0X3ByaXZhdGVfZmllbGQ6CisgICAgY2FzZSBvcF9jaGVj
a19wcml2YXRlX2JyYW5kOgogI2RlZmluZSBMTElOVF9IRUxQRVJfT1BDT0RFUyhvcGNvZGUsIGxl
bmd0aCkgY2FzZSBvcGNvZGU6CiAgICAgICAgIEZPUl9FQUNIX0xMSU5UX09QQ09ERV9FWFRFTlNJ
T04oTExJTlRfSEVMUEVSX09QQ09ERVMpOwogI3VuZGVmIExMSU5UX0hFTFBFUl9PUENPREVTCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4
IDQxYmU4NDRjN2E1Li5lYjE3MzZlMGRmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKQEAgLTM1LDEwICszNSwxMSBAQCBlbnVtIGNsYXNz
IEV2YWxDb250ZXh0VHlwZSAgICA6IHVpbnQ4X3QgeyBOb25lLCBGdW5jdGlvbkV2YWxDb250ZXh0
LCBJbnN0YW5jZUZpZQogLy8gRklYTUU6IFRoZXNlIGZsYWdzLCBQYXJzZXJNb2RlcyBhbmQgcHJv
cGFnYXRpb24gdG8gWFhYQ29kZUJsb2NrcyBzaG91bGQgYmUgcmVvcmdhbml6ZWQuCiAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ3CiBzdHJ1Y3QgRXhlY3V0
YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNTdHJp
Y3RNb2RlLCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24sIENvbnN0
cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2Rl
LCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBE
ZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlv
bkNvbnRleHQsIGJvb2wgaXNDbGFzc0NvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4
dFR5cGUpCisgICAgRXhlY3V0YWJsZUluZm8oYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1v
ZGUsIGJvb2wgaXNDb25zdHJ1Y3RvciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24sIENvbnN0cnVjdG9yS2luZCBj
b25zdHJ1Y3RvcktpbmQsIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBTdXBlckJpbmRp
bmcgc3VwZXJCaW5kaW5nLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBEZXJpdmVkQ29udGV4
dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJv
b2wgaXNDbGFzc0NvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUpCiAgICAg
ICAgIDogbV91c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3RyaWN0TW9kZShpc1N0
cmljdE1vZGUpCiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3RydWN0b3IpCisgICAg
ICAgICwgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudChzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQpKQogICAgICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oaXNC
dWlsdGluRnVuY3Rpb24pCiAgICAgICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCiAgICAgICAgICwgbV9zdXBlckJpbmRpbmcoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykpCkBAIC01Nyw2ICs1OCw3IEBAIHN0cnVj
dCBFeGVjdXRhYmxlSW5mbyB7CiAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1f
dXNlc0V2YWw7IH0KICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNT
dHJpY3RNb2RlOyB9CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9p
c0NvbnN0cnVjdG9yOyB9CisgICAgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxQcml2YXRlQnJhbmRSZXF1
aXJlbWVudD4obV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7IH0KICAgICBib29sIGlzQnVpbHRp
bkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogICAgIENv
bnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQogICAgIFN1cGVyQmluZGlu
ZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxTdXBlckJpbmRpbmc+
KG1fc3VwZXJCaW5kaW5nKTsgfQpAQCAtNzEsNiArNzMsNyBAQCBwcml2YXRlOgogICAgIHVuc2ln
bmVkIG1fdXNlc0V2YWwgOiAxOwogICAgIHVuc2lnbmVkIG1faXNTdHJpY3RNb2RlIDogMTsKICAg
ICB1bnNpZ25lZCBtX2lzQ29uc3RydWN0b3IgOiAxOworICAgIHVuc2lnbmVkIG1fcHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQgOiAxOwogICAgIHVuc2lnbmVkIG1faXNCdWlsdGluRnVuY3Rpb24gOiAx
OwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKICAgICB1bnNpZ25lZCBtX3N1
cGVyQmluZGluZyA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCBmOWMzYmE5ZDcxNi4uZDJkZDFmOTNiZjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmNwcApAQCAtNTksNiArNTksNyBAQCBVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2Rl
QmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29kZVR5cGUgY29kZQogICAgICwg
bV91c2VzRXZhbChpbmZvLnVzZXNFdmFsKCkpCiAgICAgLCBtX2lzU3RyaWN0TW9kZShpbmZvLmlz
U3RyaWN0TW9kZSgpKQogICAgICwgbV9pc0NvbnN0cnVjdG9yKGluZm8uaXNDb25zdHJ1Y3Rvcigp
KQorICAgICwgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
aW5mby5wcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpKSkKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJp
YWJsZXMoZmFsc2UpCiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGluZm8uaXNCdWlsdGluRnVu
Y3Rpb24oKSkKICAgICAsIG1fc3VwZXJCaW5kaW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmZv
LnN1cGVyQmluZGluZygpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggMmEzNTBhMWYxMWMuLjdkOTAyODEyZmUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
aApAQCAtMTE2LDYgKzExNiw3IEBAIHB1YmxpYzoKICAgICBlbnVtIHsgQ2FsbEZ1bmN0aW9uLCBB
cHBseUZ1bmN0aW9uIH07CiAKICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVy
biBtX2lzQ29uc3RydWN0b3I7IH0KKyAgICBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRl
QnJhbmRSZXF1aXJlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50PihtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50KTsgfQogICAgIGJvb2wgaXNT
dHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KICAgICBib29sIHVz
ZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV91c2VzRXZhbDsgfQogICAgIFNvdXJjZVBhcnNlTW9k
ZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlTW9kZTsgfQpAQCAtNDEyLDYgKzQx
Myw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV91c2VzRXZhbCA6IDE7CiAgICAgdW5zaWdu
ZWQgbV9pc1N0cmljdE1vZGUgOiAxOwogICAgIHVuc2lnbmVkIG1faXNDb25zdHJ1Y3RvciA6IDE7
CisgICAgdW5zaWduZWQgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA6IDE7CiAgICAgdW5zaWdu
ZWQgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5G
dW5jdGlvbiA6IDE7CiAgICAgdW5zaWduZWQgbV9zdXBlckJpbmRpbmcgOiAxOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZS5jcHAKaW5kZXggMzNiMGY0M2RhOGEuLmUzNjM0OWQxZjFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKIAogICAgIGJv
b2wgaXNDbGFzc0NvbnRleHQgPSBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSA9PSBTdXBlckJp
bmRpbmc6Ok5lZWRlZDsKIAotICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSgmdm0sIEZ1bmN0aW9uQ29kZSwgRXhl
Y3V0YWJsZUluZm8oZnVuY3Rpb24tPnVzZXNFdmFsKCksIGZ1bmN0aW9uLT5pc1N0cmljdE1vZGUo
KSwga2luZCA9PSBDb2RlRm9yQ29uc3RydWN0LCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWls
dGluRnVuY3Rpb24sIGV4ZWN1dGFibGUtPmNvbnN0cnVjdG9yS2luZCgpLCBzY3JpcHRNb2RlLCBl
eGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSwgcGFyc2VNb2RlLCBleGVjdXRhYmxlLT5kZXJpdmVk
Q29udGV4dFR5cGUoKSwgZmFsc2UsIGlzQ2xhc3NDb250ZXh0LCBFdmFsQ29udGV4dFR5cGU6OkZ1
bmN0aW9uRXZhbENvbnRleHQpLCBjb2RlR2VuZXJhdGlvbk1vZGUpOworICAgIFVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0
ZSgmdm0sIEZ1bmN0aW9uQ29kZSwgRXhlY3V0YWJsZUluZm8oZnVuY3Rpb24tPnVzZXNFdmFsKCks
IGZ1bmN0aW9uLT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2RlRm9yQ29uc3RydWN0LCBleGVj
dXRhYmxlLT5wcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpLCBmdW5jdGlvbktpbmQgPT0gVW5saW5r
ZWRCdWlsdGluRnVuY3Rpb24sIGV4ZWN1dGFibGUtPmNvbnN0cnVjdG9yS2luZCgpLCBzY3JpcHRN
b2RlLCBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSwgcGFyc2VNb2RlLCBleGVjdXRhYmxlLT5k
ZXJpdmVkQ29udGV4dFR5cGUoKSwgZmFsc2UsIGlzQ2xhc3NDb250ZXh0LCBFdmFsQ29udGV4dFR5
cGU6OkZ1bmN0aW9uRXZhbENvbnRleHQpLCBjb2RlR2VuZXJhdGlvbk1vZGUpOwogCiAgICAgVmFy
aWFibGVFbnZpcm9ubWVudCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcyA9IGV4ZWN1dGFibGUtPnBh
cmVudFNjb3BlVERaVmFyaWFibGVzKCk7CiAgICAgZXJyb3IgPSBCeXRlY29kZUdlbmVyYXRvcjo6
Z2VuZXJhdGUodm0sIGZ1bmN0aW9uLmdldCgpLCBzb3VyY2UsIHJlc3VsdCwgY29kZUdlbmVyYXRp
b25Nb2RlLCAmcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOwpAQCAtODMsNyArODMsNyBAQCBzdGF0
aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrKAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBwYXJlbnRTb3VyY2UsIEZ1bmN0aW9uTWV0YWRhdGFOb2Rl
KiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBraW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0
cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBPcHRpb25hbDxDb21w
YWN0VmFyaWFibGVNYXA6OkhhbmRsZT4gcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIERlcml2ZWRD
b250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNCdWlsdGluRGVmYXVsdENsYXNz
Q29uc3RydWN0b3IpCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU291cmNlQ29k
ZSYgcGFyZW50U291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5j
dGlvbktpbmQga2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNl
clNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgT3B0aW9uYWw8Q29tcGFjdFZhcmlhYmxlTWFwOjpIYW5k
bGU+IHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENv
bnRleHRUeXBlLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVu
dCwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvcikKICAgICA6IEJhc2UoKnZt
LCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2ZpcnN0TGluZU9mZnNldChub2RlLT5maXJzdExpbmUoKSAt
IHBhcmVudFNvdXJjZS5maXJzdExpbmUoKS5vbmVCYXNlZEludCgpKQogICAgICwgbV9saW5lQ291
bnQobm9kZS0+bGFzdExpbmUoKSAtIG5vZGUtPmZpcnN0TGluZSgpKQpAQCAtMTA4LDYgKzEwOCw3
IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0CiAgICAgLCBtX3NjcmlwdE1vZGUoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHNjcmlwdE1vZGUpKQogICAgICwgbV9zdXBlckJpbmRpbmcoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KG5vZGUtPnN1cGVyQmluZGluZygpKSkKICAgICAsIG1fZGVyaXZlZENvbnRl
eHRUeXBlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXJpdmVkQ29udGV4dFR5cGUpKQorICAgICwg
bV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudChzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQpKQogICAgICwgbV9pc0NhY2hlZChmYWxzZSkKICAgICAsIG1fdW5saW5r
ZWRDb2RlQmxvY2tGb3JDYWxsKCkKICAgICAsIG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDb25zdHJ1
Y3QoKQpAQCAtMTIyLDYgKzEyMyw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0CiAgICAgQVNT
RVJUKG1fc2NyaXB0TW9kZSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2NyaXB0TW9kZSkpOwog
ICAgIEFTU0VSVChtX3N1cGVyQmluZGluZyA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+
c3VwZXJCaW5kaW5nKCkpKTsKICAgICBBU1NFUlQobV9kZXJpdmVkQ29udGV4dFR5cGUgPT0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGRlcml2ZWRDb250ZXh0VHlwZSkpOworICAgIEFTU0VSVChtX3By
aXZhdGVCcmFuZFJlcXVpcmVtZW50ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihwcml2YXRlQnJh
bmRSZXF1aXJlbWVudCkpOwogICAgIEFTU0VSVCghKG1faXNCdWlsdGluRGVmYXVsdENsYXNzQ29u
c3RydWN0b3IgJiYgY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lKSk7
CiAgICAgaWYgKCFub2RlLT5jbGFzc1NvdXJjZSgpLmlzTnVsbCgpKQogICAgICAgICBzZXRDbGFz
c1NvdXJjZShub2RlLT5jbGFzc1NvdXJjZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKaW5kZXgg
ZjM1YWFkZjIxOTQuLmIwM2IwODZjZWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtNjks
MTAgKzY5LDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICZ2bS51bmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZVNwYWNlLnNwYWNlOwogICAgIH0KIAotICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBG
dW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQgdW5saW5rZWRG
dW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJT
Y3JpcHRNb2RlIHNjcmlwdE1vZGUsIE9wdGlvbmFsPENvbXBhY3RWYXJpYWJsZU1hcDo6SGFuZGxl
PiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250
ZXh0VHlwZSwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvciA9IGZhbHNlKQor
ICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNKiB2bSwgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5r
ZWRGdW5jdGlvbktpbmQgdW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29u
c3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIE9wdGlvbmFsPENv
bXBhY3RWYXJpYWJsZU1hcDo6SGFuZGxlPiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRGVyaXZl
ZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQg
cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZSwg
Ym9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvciA9IGZhbHNlKQogICAgIHsKICAg
ICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGluc3RhbmNlID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLT5oZWFwKSkKLSAg
ICAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCB2bS0+dW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgbm9kZSwgdW5saW5rZWRGdW5j
dGlvbktpbmQsIGNvbnN0cnVjdEFiaWxpdHksIHNjcmlwdE1vZGUsIFdURk1vdmUocGFyZW50U2Nv
cGVURFpWYXJpYWJsZXMpLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQnVpbHRpbkRlZmF1bHRDbGFz
c0NvbnN0cnVjdG9yKTsKKyAgICAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKHZt
LCB2bS0+dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwg
bm9kZSwgdW5saW5rZWRGdW5jdGlvbktpbmQsIGNvbnN0cnVjdEFiaWxpdHksIHNjcmlwdE1vZGUs
IFdURk1vdmUocGFyZW50U2NvcGVURFpWYXJpYWJsZXMpLCBkZXJpdmVkQ29udGV4dFR5cGUsIHBy
aXZhdGVCcmFuZFJlcXVpcmVtZW50LCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3Rvcik7
CiAgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbigqdm0pOwogICAgICAgICByZXR1cm4g
aW5zdGFuY2U7CiAgICAgfQpAQCAtMTQ1LDYgKzE0NSw4IEBAIHB1YmxpYzoKICAgICBDb2RlRmVh
dHVyZXMgZmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzOyB9CiAgICAgYm9vbCBo
YXNDYXB0dXJlZFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ2FwdHVyZWRWYXJpYWJs
ZXM7IH0KIAorICAgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVt
ZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ+
KG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOyB9CisKICAgICBzdGF0aWMgY29uc3QgYm9vbCBu
ZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCop
OwogCkBAIC0yMTYsNyArMjE4LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSosIFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNv
ZGUmLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1
Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUsIE9wdGlvbmFsPENvbXBhY3RWYXJpYWJsZU1h
cDo6SGFuZGxlPiwgIEpTQzo6RGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQnVpbHRpbkRlZmF1
bHRDbGFzc0NvbnN0cnVjdG9yKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSos
IFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIFVu
bGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUs
IE9wdGlvbmFsPENvbXBhY3RWYXJpYWJsZU1hcDo6SGFuZGxlPiwgIEpTQzo6RGVyaXZlZENvbnRl
eHRUeXBlLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xh
c3NDb25zdHJ1Y3Rvcik7CiAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoRGVjb2RlciYs
IGNvbnN0IENhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZSYpOwogCiAgICAgdm9pZCBkZWNvZGVDYWNo
ZWRDb2RlQmxvY2tzKCk7CkBAIC0yNDQsNiArMjQ2LDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25l
ZCBtX3NjcmlwdE1vZGU6IDE7IC8vIEpTUGFyc2VyU2NyaXB0TW9kZQogICAgIHVuc2lnbmVkIG1f
c3VwZXJCaW5kaW5nIDogMTsKICAgICB1bnNpZ25lZCBtX2Rlcml2ZWRDb250ZXh0VHlwZTogMjsK
KyAgICB1bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsKICAgICBib29sIG1f
aXNDYWNoZWQgOiAxOwogCiAgICAgdW5pb24gewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA2OTJiMzZk
ZGM4Zi4uZDYyZGU3OGVhMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0zOTMsNiArMzkzLDggQEAg
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2Rl
KiBmdW5jdGlvbk5vZGUsIFVubGlua2UKIHsKICAgICBmb3IgKGF1dG8mIGNvbnN0YW50UmVnaXN0
ZXIgOiBtX2xpbmtUaW1lQ29uc3RhbnRSZWdpc3RlcnMpCiAgICAgICAgIGNvbnN0YW50UmVnaXN0
ZXIgPSBudWxscHRyOworICAgIAorICAgIHB1c2hQcml2YXRlQWNjZXNzTmFtZXMoKnBhcmVudFNj
b3BlVERaVmFyaWFibGVzKTsKIAogICAgIGFsbG9jYXRlQ2FsbGVlU2F2ZVNwYWNlKCk7CiAgICAg
CkBAIC03MzYsOCArNzM4LDE3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRv
cihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgICAg
ICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNS
ZWdpc3Rlcik7CiAKLSAgICAgICAgICAgICAgICBpZiAoT3B0aW9uczo6dXNlQ2xhc3NGaWVsZHMo
KSAmJiBjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkJhc2UpCisgICAgICAg
ICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUNsYXNzRmllbGRzKCkgJiYgY29uc3RydWN0b3JLaW5k
KCkgPT0gQ29uc3RydWN0b3JLaW5kOjpCYXNlKSB7CisgICAgICAgICAgICAgICAgICAgIGJvb2wg
c2hvdWxkRW1pdFByaXZhdGVCcmFuZCA9IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkgPT0gUHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5lZWRlZDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNo
b3VsZEVtaXRQcml2YXRlQnJhbmQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEpTVGV4dFBv
c2l0aW9uIGRpdm90KG1fc2NvcGVOb2RlLT5maXJzdExpbmUoKSwgbV9zY29wZU5vZGUtPnN0YXJ0
T2Zmc2V0KCksIG1fc2NvcGVOb2RlLT5saW5lU3RhcnRPZmZzZXQoKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBWYXJpYWJsZSBwcml2YXRlQnJhbmRWYXIgPSB2YXJpYWJsZShwcm9wZXJ0eU5h
bWVzKCkuYnVpbHRpbk5hbWVzKCkucHJpdmF0ZUJyYW5kUHJpdmF0ZU5hbWUoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZUJyYW5kVmFyU2NvcGUg
PSBlbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHByaXZhdGVCcmFuZFZhcik7CisgICAgICAgICAg
ICAgICAgICAgICAgICBSZWdpc3RlcklEKiBwcml2YXRlQnJhbmRTeW1ib2wgPSBlbWl0R2V0UHJp
dmF0ZUJyYW5kKG5ld1RlbXBvcmFyeSgpLCBwcml2YXRlQnJhbmRWYXJTY29wZS5nZXQoKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBlbWl0RGlyZWN0UHV0QnlWYWwoJm1fdGhpc1JlZ2lzdGVy
LCBwcml2YXRlQnJhbmRTeW1ib2wsIHByaXZhdGVCcmFuZFN5bWJvbCk7CisgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgZW1pdEluc3RhbmNlRmllbGRJbml0aWFsaXph
dGlvbklmTmVlZGVkKCZtX3RoaXNSZWdpc3RlciwgJm1fY2FsbGVlUmVnaXN0ZXIsIG1fc2NvcGVO
b2RlLT5wb3NpdGlvbigpLCBtX3Njb3BlTm9kZS0+cG9zaXRpb24oKSwgbV9zY29wZU5vZGUtPnBv
c2l0aW9uKCkpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29u
c3RydWN0b3JLaW5kKCkgIT0gQ29uc3RydWN0b3JLaW5kOjpOb25lKQogICAgICAgICAgICAgICAg
IGVtaXRUaHJvd1R5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBjb25zdHJ1Y3RvciB3aXRo
b3V0IHxuZXd8Iik7CiAgICAgICAgICAgICBlbHNlIHsKQEAgLTg3Myw2ICs4ODQsNyBAQCBCeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5v
ZGUsIFVubGlua2VkRXZhbENvZAogCiAgICAgbV9jb2RlQmxvY2stPnNldE51bVBhcmFtZXRlcnMo
MSk7CiAKKyAgICBwdXNoUHJpdmF0ZUFjY2Vzc05hbWVzKCpwYXJlbnRTY29wZVREWlZhcmlhYmxl
cyk7CiAgICAgcHVzaFREWlZhcmlhYmxlcygqcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIFREWkNo
ZWNrT3B0aW1pemF0aW9uOjpEb05vdE9wdGltaXplLCBURFpSZXF1aXJlbWVudDo6VW5kZXJURFop
OwogCiAgICAgZW1pdEVudGVyKCk7CkBAIC0xOTQ5LDcgKzE5NjEsNyBAQCBib29sIEJ5dGVjb2Rl
R2VuZXJhdG9yOjppbnN0YW50aWF0ZUxleGljYWxWYXJpYWJsZXMoY29uc3QgVmFyaWFibGVFbnZp
cm9ubWVudCYgbAogICAgICAgICBpZiAobGV4aWNhbFZhcmlhYmxlcy5wcml2YXRlTmFtZXNTaXpl
KCkpIHsKICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcHJpdmF0ZU5hbWUgOiBsZXhpY2Fs
VmFyaWFibGVzLnByaXZhdGVOYW1lcygpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHByaXZhdGVO
YW1lLnZhbHVlLmlzRGVjbGFyZWQoKSkKLSAgICAgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUt
PmFkZFByaXZhdGVOYW1lKHByaXZhdGVOYW1lLmtleS5nZXQoKSk7CisgICAgICAgICAgICAgICAg
ICAgIHN5bWJvbFRhYmxlLT5hZGRQcml2YXRlTmFtZShwcml2YXRlTmFtZS5rZXksIHByaXZhdGVO
YW1lLnZhbHVlKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaGFzQ2FwdHVyZWRWYXJp
YWJsZXMgPSB0cnVlOwpAQCAtMjc3OSw2ICsyNzkxLDExIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRQcml2YXRlRmllbGRBZGQoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmll
ciYKICAgICBPcEFkZFByaXZhdGVGaWVsZDo6ZW1pdCh0aGlzLCBiYXNlLCBhZGRDb25zdGFudChu
YW1lKSwgdmFsdWUsIHNjb3BlUmVnaXN0ZXIoKSk7CiB9CiAKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRDaGVja1ByaXZhdGVCcmFuZChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBi
cmFuZCkKK3sKKyAgICBPcENoZWNrUHJpdmF0ZUJyYW5kOjplbWl0KHRoaXMsIGJhc2UsIGJyYW5k
KTsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcml2YXRlRmllbGRH
ZXQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBu
YW1lKQogewogICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGlu
c3RydWN0aW9ucygpLnNpemUoKSk7CkBAIC0yNzg2LDYgKzI4MDMsMjkgQEAgUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcml2YXRlRmllbGRHZXQoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKgogICAgIHJldHVybiBkc3Q7CiB9CiAKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRDcmVhdGVQcml2YXRlQnJhbmQoUmVnaXN0ZXJJRCogc2NvcGUsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKK3sKKyAgICBhdXRvIHN5bWJvbFZhciA9IHZhcmlhYmxl
KHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5jcmVhdGVQcml2YXRlU3ltYm9sUHJpdmF0
ZU5hbWUoKSk7CisKKyAgICBSZWdpc3RlcklEKiBzeW1ib2xTY29wZSA9IG5ld1RlbXBvcmFyeSgp
OworICAgIHN5bWJvbFNjb3BlID0gZW1pdFJlc29sdmVTY29wZShzeW1ib2xTY29wZSwgc3ltYm9s
VmFyKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3ltYm9sRnVuY3Rpb24gPSBlbWl0R2V0RnJv
bVNjb3BlKG5ld1RlbXBvcmFyeSgpLCBzeW1ib2xTY29wZSwgc3ltYm9sVmFyLCBUaHJvd0lmTm90
Rm91bmQpOworCisgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKCp0aGlzLCBudWxscHRyKTsKKyAgICBl
bWl0TG9hZChhcmdzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gbmV3U3ltYm9sID0gZW1pdENhbGwobmV3VGVtcG9yYXJ5KCksIHN5bWJvbEZ1
bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0
LCBkaXZvdEVuZCwgRGVidWdnYWJsZUNhbGw6Ok5vKTsKKworICAgIFZhcmlhYmxlIHByaXZhdGVC
cmFuZFZhciA9IHZhcmlhYmxlKHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5wcml2YXRl
QnJhbmRQcml2YXRlTmFtZSgpKTsKKworICAgIGVtaXRQdXRUb1Njb3BlKHNjb3BlLCBwcml2YXRl
QnJhbmRWYXIsIG5ld1N5bWJvbC5nZXQoKSwgRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxp
emF0aW9uTW9kZTo6SW5pdGlhbGl6YXRpb24pOworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEdldFByaXZhdGVCcmFuZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IHNjb3BlKQoreworICAgIFZhcmlhYmxlIHByaXZhdGVCcmFuZFZhciA9IHZhcmlhYmxlKHByb3Bl
cnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5wcml2YXRlQnJhbmRQcml2YXRlTmFtZSgpKTsKKyAg
ICByZXR1cm4gZW1pdEdldEZyb21TY29wZShkc3QsIHNjb3BlLCBwcml2YXRlQnJhbmRWYXIsIFRo
cm93SWZOb3RGb3VuZCk7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
UHJpdmF0ZUZpZWxkU2V0KFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIG5hbWUs
IFJlZ2lzdGVySUQqIHZhbHVlKQogewogICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vz
c0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7CkBAIC0yODg4LDYgKzI5MjgsMzgg
QEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6bGlmdFREWkNoZWNrSWZQb3NzaWJsZShjb25zdCBW
YXJpYWJsZSYgdmFyaWFibGUpCiAgICAgfQogfQogCitib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjpp
c1ByaXZhdGVNZXRob2QoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCit7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gbV9wcml2YXRlTmFtZXNTdGFjay5zaXplKCk7IGktLTsgKSB7CisgICAgICAgIGF1
dG8mIG1hcCA9IG1fcHJpdmF0ZU5hbWVzU3RhY2tbaV07CisgICAgICAgIGF1dG8gaXQgPSBtYXAu
ZmluZChpZGVudC5pbXBsKCkpOworICAgICAgICBpZiAoaXQgIT0gbWFwLmVuZCgpKQorICAgICAg
ICAgICAgcmV0dXJuIGl0LT52YWx1ZS5pc01ldGhvZCgpOworICAgIH0KKworICAgIHJldHVybiBm
YWxzZTsKK30KKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cHVzaFByaXZhdGVBY2Nlc3NOYW1l
cyhjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBlbnZpcm9ubWVudCkKK3sKKyAgICAgaWYgKCFl
bnZpcm9ubWVudC5wcml2YXRlTmFtZXNTaXplKCkpCisgICAgICAgIHJldHVybjsKKworICAgICBW
YXJpYWJsZUVudmlyb25tZW50OjpQcml2YXRlTmFtZXMgcHJpdmF0ZU5hbWVzTWFwOworICAgICBm
b3IgKGNvbnN0IGF1dG8mIGVudHJ5IDogZW52aXJvbm1lbnQucHJpdmF0ZU5hbWVzKCkpCisgICAg
ICAgIHByaXZhdGVOYW1lc01hcC5hZGQoZW50cnkua2V5LCBlbnRyeS52YWx1ZSk7CisKKyAgICAg
bV9wcml2YXRlTmFtZXNTdGFjay5hcHBlbmQoV1RGTW92ZShwcml2YXRlTmFtZXNNYXApKTsKK30K
Kwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cG9wUHJpdmF0ZUFjY2Vzc05hbWVzKCkKK3sKKyAg
ICBpZiAoIW1fcHJpdmF0ZU5hbWVzU3RhY2suc2l6ZSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX3ByaXZhdGVOYW1lc1N0YWNrLnJlbW92ZUxhc3QoKTsKK30KKwogdm9pZCBCeXRlY29kZUdl
bmVyYXRvcjo6cHVzaFREWlZhcmlhYmxlcyhjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBlbnZp
cm9ubWVudCwgVERaQ2hlY2tPcHRpbWl6YXRpb24gb3B0aW1pemF0aW9uLCBURFpSZXF1aXJlbWVu
dCByZXF1aXJlbWVudCkKIHsKICAgICBpZiAoIWVudmlyb25tZW50LnNpemUoKSkKQEAgLTI5MTAs
NiArMjk4MiwyNCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoVERaVmFyaWFibGVzKGNv
bnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGVudmlyb25tZW50LAogICAgIG1fY2FjaGVkVmFyaWFi
bGVzVW5kZXJURFogPSB7IH07CiB9CiAKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmdldEF2YWls
YWJsZVByaXZhdGVBY2Nlc3NOYW1lcyhWYXJpYWJsZUVudmlyb25tZW50JiByZXN1bHQpCit7Cisg
ICAgU21hbGxQdHJTZXQ8VW5pcXVlZFN0cmluZ0ltcGwqLCAxNj4gZXhjbHVkZWROYW1lczsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBtX3ByaXZhdGVOYW1lc1N0YWNrLnNpemUoKTsgaS0tOyApIHsK
KyAgICAgICAgYXV0byYgbWFwID0gbV9wcml2YXRlTmFtZXNTdGFja1tpXTsKKyAgICAgICAgZm9y
IChhdXRvJiBlbnRyeSA6IG1hcCkgIHsKKyAgICAgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc1By
aXZhdGVBY2Nlc3MoKSkgeworICAgICAgICAgICAgICAgIGlmICghZXhjbHVkZWROYW1lcy5jb250
YWlucyhlbnRyeS5rZXkuZ2V0KCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gYWRkUmVz
dWx0ID0gcmVzdWx0LmFkZFByaXZhdGVOYW1lKGVudHJ5LmtleSk7CisgICAgICAgICAgICAgICAg
ICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBlbnRyeS52YWx1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgZXhjbHVkZWROYW1lcy5hZGQoZW50cnkua2V5LmdldCgpKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBleGNsdWRlZE5hbWVz
LmFkZChlbnRyeS5rZXkuZ2V0KCkpOworICAgICAgICB9CisgICAgfQorfQorICAgIAogT3B0aW9u
YWw8Q29tcGFjdFZhcmlhYmxlTWFwOjpIYW5kbGU+IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZXRWYXJp
YWJsZXNVbmRlclREWigpCiB7CiAgICAgaWYgKG1fY2FjaGVkVmFyaWFibGVzVW5kZXJURFopIHsK
QEAgLTI5NDMsNiArMzAzMyw4IEBAIE9wdGlvbmFsPENvbXBhY3RWYXJpYWJsZU1hcDo6SGFuZGxl
PiBCeXRlY29kZUdlbmVyYXRvcjo6Z2V0VmFyaWFibGVzVW5kZXJURFooKQogICAgICAgICB9CiAg
ICAgfQogCisgICAgZ2V0QXZhaWxhYmxlUHJpdmF0ZUFjY2Vzc05hbWVzKGVudmlyb25tZW50KTsK
KwogICAgIG1fY2FjaGVkVmFyaWFibGVzVW5kZXJURFogPSBtX3ZtLT5tX2NvbXBhY3RWYXJpYWJs
ZU1hcC0+Z2V0KGVudmlyb25tZW50KTsKICAgICBtX2hhc0NhY2hlZFZhcmlhYmxlc1VuZGVyVERa
ID0gIWVudmlyb25tZW50LmlzRW1wdHkoKTsKICAgICBpZiAoIW1faGFzQ2FjaGVkVmFyaWFibGVz
VW5kZXJURFopCkBAIC0zMTI0LDkgKzMyMTYsOSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdE5ld01ldGhvZERlZmluaXRpb24oUmVnaXN0ZXJJRCogZHN0LCBNZXRob2REZQog
fQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0RlZmF1bHRDb25zdHJ1
Y3RvcihSZWdpc3RlcklEKiBkc3QsIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIGNv
bnN0IElkZW50aWZpZXImIG5hbWUsCi0gICAgY29uc3QgSWRlbnRpZmllciYgZWNtYU5hbWUsIGNv
bnN0IFNvdXJjZUNvZGUmIGNsYXNzU291cmNlKQorICAgIGNvbnN0IElkZW50aWZpZXImIGVjbWFO
YW1lLCBjb25zdCBTb3VyY2VDb2RlJiBjbGFzc1NvdXJjZSwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpCiB7Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUgPSBtX3ZtLT5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y3JlYXRlRGVm
YXVsdENvbnN0cnVjdG9yKGNvbnN0cnVjdG9yS2luZCwgbmFtZSk7CisgICAgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBtX3ZtLT5idWlsdGluRXhlY3V0YWJsZXMoKS0+
Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yKGNvbnN0cnVjdG9yS2luZCwgbmFtZSwgcHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQpOwogICAgIGV4ZWN1dGFibGUtPnNldEludmFsaWRUeXBlUHJvZmlsaW5n
T2Zmc2V0cygpOwogICAgIGV4ZWN1dGFibGUtPnNldEVjbWFOYW1lKGVjbWFOYW1lKTsKICAgICBl
eGVjdXRhYmxlLT5zZXRDbGFzc1NvdXJjZShjbGFzc1NvdXJjZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXgg
OTFhNmY1NDRlODUuLmZiYTZkMjMyMGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC0zODksNiArMzg5LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rp
b25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNv
bnRleHQ7IH0KICAgICAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVO
b2RlLT51c2VzRXZhbCgpOyB9CiAgICAgICAgIGJvb2wgdXNlc1RoaXMoKSBjb25zdCB7IHJldHVy
biBtX3Njb3BlTm9kZS0+dXNlc1RoaXMoKTsgfQorICAgICAgICBQcml2YXRlQnJhbmRSZXF1aXJl
bWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2Nr
LT5wcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpOyB9CiAgICAgICAgIENvbnN0cnVjdG9yS2luZCBj
b25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+Y29uc3RydWN0b3JL
aW5kKCk7IH0KICAgICAgICAgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZygpIGNvbnN0IHsgcmV0
dXJuIG1fY29kZUJsb2NrLT5zdXBlckJpbmRpbmcoKTsgfQogICAgICAgICBKU1BhcnNlclNjcmlw
dE1vZGUgc2NyaXB0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5zY3JpcHRNb2Rl
KCk7IH0KQEAgLTczNiw3ICs3MzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBSZWdp
c3RlcklEKiBlbWl0TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jdGlvbk1ldGFkYXRh
Tm9kZSopOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uKFJl
Z2lzdGVySUQqIGRzdCwgRnVuY0V4cHJOb2RlKik7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRO
ZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCogZHN0LCBDb25zdHJ1Y3RvcktpbmQsIGNv
bnN0IElkZW50aWZpZXImIG5hbWUsIGNvbnN0IElkZW50aWZpZXImIGVjbWFOYW1lLCBjb25zdCBT
b3VyY2VDb2RlJiBjbGFzc1NvdXJjZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdEZWZh
dWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCogZHN0LCBDb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElk
ZW50aWZpZXImIG5hbWUsIGNvbnN0IElkZW50aWZpZXImIGVjbWFOYW1lLCBjb25zdCBTb3VyY2VD
b2RlJiBjbGFzc1NvdXJjZSwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3SW5zdGFuY2VGaWVsZEluaXRp
YWxpemVyRnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+JiYg
aW5zdGFuY2VGaWVsZExvY2F0aW9ucywgYm9vbCBpc0Rlcml2ZWQpOwogICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCosIEFycm93RnVu
Y0V4cHJOb2RlKik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdNZXRob2REZWZpbml0aW9u
KFJlZ2lzdGVySUQqIGRzdCwgTWV0aG9kRGVmaW5pdGlvbk5vZGUqKTsKQEAgLTc4Miw2ICs3ODMs
MTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQcml2YXRlRmll
bGRHZXQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVy
JiBuYW1lKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFByaXZhdGVGaWVsZFNldChSZWdpc3Rl
cklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBSZWdpc3RlcklEKiB2YWx1ZSk7CiAK
KyAgICAgICAgdm9pZCBlbWl0Q3JlYXRlUHJpdmF0ZUJyYW5kKFJlZ2lzdGVySUQqIGRzdCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFy
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKKyAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdEdldFByaXZhdGVCcmFuZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNjb3BlKTsK
KyAgICAgICAgdm9pZCBlbWl0Q2hlY2tQcml2YXRlQnJhbmQoUmVnaXN0ZXJJRCogYmFzZSwgUmVn
aXN0ZXJJRCogYnJhbmQpOworCiAgICAgICAgIHZvaWQgZW1pdFN1cGVyU2FtcGxlckJlZ2luKCk7
CiAgICAgICAgIHZvaWQgZW1pdFN1cGVyU2FtcGxlckVuZCgpOwogCkBAIC0xMTM2LDEwICsxMTQx
LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3Vy
Y2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUgJiYgbWV0YWRhdGEtPmNvbnN0cnVjdG9yS2luZCgpICE9
IENvbnN0cnVjdG9yS2luZDo6Tm9uZSkKICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RBYmlsaXR5
ID0gQ29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0OwogCi0gICAgICAgICAgICByZXR1cm4g
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291
cmNlKCksIG1ldGFkYXRhLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVu
Y3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCBzY3JpcHRN
b2RlKCksIFdURk1vdmUob3B0aW9uYWxWYXJpYWJsZXNVbmRlclREWiksIG5ld0Rlcml2ZWRDb250
ZXh0VHlwZSk7CisgICAgICAgICAgICByZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6
OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksIG1ldGFkYXRhLCBpc0J1aWx0aW5G
dW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0
aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCBzY3JpcHRNb2RlKCksIFdURk1vdmUob3B0aW9uYWxWYXJp
YWJsZXNVbmRlclREWiksIG5ld0Rlcml2ZWRDb250ZXh0VHlwZSwgbWV0YWRhdGEtPnByaXZhdGVC
cmFuZFJlcXVpcmVtZW50KCkpOwogICAgICAgICB9CiAKICAgICAgICAgT3B0aW9uYWw8Q29tcGFj
dFZhcmlhYmxlTWFwOjpIYW5kbGU+IGdldFZhcmlhYmxlc1VuZGVyVERaKCk7CisgICAgICAgIHZv
aWQgZ2V0QXZhaWxhYmxlUHJpdmF0ZUFjY2Vzc05hbWVzKFZhcmlhYmxlRW52aXJvbm1lbnQmKTsK
IAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q29uc3RydWN0VmFyYXJncyhSZWdpc3RlcklEKiBk
c3QsIFJlZ2lzdGVySUQqIGZ1bmMsIFJlZ2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVnaXN0ZXJJ
RCogYXJndW1lbnRzLCBSZWdpc3RlcklEKiBmaXJzdEZyZWVSZWdpc3RlciwgaW50MzJfdCBmaXJz
dFZhckFyZ09mZnNldCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBEZWJ1
Z2dhYmxlQ2FsbCk7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxPcD4KQEAgLTExOTcs
NiArMTIwMywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIG1fbGFzdEluc3RydWN0
aW9uID0gcHJldkxhc3RJbnN0cnVjdGlvbjsKICAgICAgICAgfQogCisgICAgICAgIGJvb2wgaXNQ
cml2YXRlTWV0aG9kKGNvbnN0IElkZW50aWZpZXImKTsKKworICAgICAgICB2b2lkIHB1c2hQcml2
YXRlQWNjZXNzTmFtZXMoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYpOworICAgICAgICB2b2lk
IHBvcFByaXZhdGVBY2Nlc3NOYW1lcygpOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgSW5zdHJ1
Y3Rpb25TdHJlYW1Xcml0ZXIgbV93cml0ZXI7CiAKQEAgLTEyMTEsNiArMTIyMiw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBWZWN0b3I8TGV4aWNhbFNjb3BlU3RhY2tFbnRyeT4gbV9sZXhp
Y2FsU2NvcGVTdGFjazsKIAogICAgICAgICBWZWN0b3I8VERaTWFwPiBtX1REWlN0YWNrOworICAg
ICAgICBWZWN0b3I8VmFyaWFibGVFbnZpcm9ubWVudDo6UHJpdmF0ZU5hbWVzPiBtX3ByaXZhdGVO
YW1lc1N0YWNrOwogICAgICAgICBPcHRpb25hbDxzaXplX3Q+IG1fdmFyU2NvcGVMZXhpY2FsU2Nv
cGVTdGFja0luZGV4OwogICAgICAgICB2b2lkIHB1c2hURFpWYXJpYWJsZXMoY29uc3QgVmFyaWFi
bGVFbnZpcm9ubWVudCYsIFREWkNoZWNrT3B0aW1pemF0aW9uLCBURFpSZXF1aXJlbWVudCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcAppbmRleCA3NGIwZDNlZjAxZi4uZTc5ZjM0OGQ2ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTcwNiw2ICs3
MDYsMTMgQEAgdm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWcKIAogICAgIGlmIChub2RlLmlzQ2xhc3NQ
cm9wZXJ0eSgpKSB7CiAgICAgICAgIEFTU0VSVChub2RlLm5lZWRzU3VwZXJCaW5kaW5nKCkpOwor
CisgICAgICAgIGlmIChub2RlLnR5cGUoKSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0ZU1ldGhvZCkg
eworICAgICAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKCpub2RlLm5h
bWUoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoZ2VuZXJhdG9yLnNj
b3BlUmVnaXN0ZXIoKSwgdmFyLCB2YWx1ZS5nZXQoKSwgRG9Ob3RUaHJvd0lmTm90Rm91bmQsIElu
aXRpYWxpemF0aW9uTW9kZTo6Q29uc3RJbml0aWFsaXphdGlvbik7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcGVydHlOYW1l
UmVnaXN0ZXI7CiAgICAgICAgIGlmIChub2RlLm5hbWUoKSkKICAgICAgICAgICAgIHByb3BlcnR5
TmFtZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsICpub2RlLm5hbWUoKSk7
CkBAIC04MTEsOCArODE4LDE5IEBAIFJlZ2lzdGVySUQqIERvdEFjY2Vzc29yTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVyCiAKIFJlZ2lzdGVy
SUQqIEJhc2VEb3ROb2RlOjplbWl0R2V0UHJvcGVydHlWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZlB0cjxSZWdp
c3RlcklEPiYgdGhpc1ZhbHVlKQogewotICAgIGlmIChpc1ByaXZhdGVOYW1lKCkpCisgICAgaWYg
KGlzUHJpdmF0ZU5hbWUoKSkgeworICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzUHJpdmF0ZU1ldGhv
ZChpZGVudGlmaWVyKCkpKSB7CisgICAgICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3Iu
dmFyaWFibGUoaWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBz
Y29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CisKKyAgICAg
ICAgICAgIFJlZ2lzdGVySUQqIHByaXZhdGVCcmFuZFN5bWJvbCA9IGdlbmVyYXRvci5lbWl0R2V0
UHJpdmF0ZUJyYW5kKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCkpOworICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDaGVja1ByaXZhdGVCcmFuZChiYXNlLCBwcml2YXRlQnJh
bmRTeW1ib2wpOworCisgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2Nv
cGUoZHN0LCBzY29wZS5nZXQoKSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOworICAgICAgICB9CisK
ICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0UHJpdmF0ZUZpZWxkR2V0KGRzdCwgYmFzZSwg
aWRlbnRpZmllcigpKTsKKyAgICB9CiAKICAgICBpZiAobV9iYXNlLT5pc1N1cGVyTm9kZSgpKSB7
CiAgICAgICAgIGlmICghdGhpc1ZhbHVlKQpAQCAtODMxLDggKzg0OSwyMCBAQCBSZWdpc3RlcklE
KiBCYXNlRG90Tm9kZTo6ZW1pdEdldFByb3BlcnR5VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaQogCiBSZWdpc3RlcklEKiBCYXNlRG90Tm9kZTo6ZW1pdFB1dFByb3BlcnR5
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVy
SUQqIHZhbHVlLCBSZWZQdHI8UmVnaXN0ZXJJRD4mIHRoaXNWYWx1ZSkKIHsKLSAgICBpZiAoaXNQ
cml2YXRlTmFtZSgpKQorICAgIGlmIChpc1ByaXZhdGVOYW1lKCkpIHsKKyAgICAgICAgYXV0byBp
ZGVudGlmaWVyTmFtZSA9IGlkZW50aWZpZXIoKTsKKyAgICAgICAgaWYgKGdlbmVyYXRvci5pc1By
aXZhdGVNZXRob2QoaWRlbnRpZmllck5hbWUpKSB7CisgICAgICAgICAgICBWYXJpYWJsZSB2YXIg
PSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnRpZmllck5hbWUpOworICAgICAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwg
dmFyKTsKKworICAgICAgICAgICAgUmVnaXN0ZXJJRCogcHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2Vu
ZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29w
ZS5nZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENoZWNrUHJpdmF0ZUJyYW5kKGJh
c2UsIHByaXZhdGVCcmFuZFN5bWJvbCk7CisKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0VGhy
b3dUeXBlRXJyb3IoIlRyeWluZyB0byBhY2Nlc3MgYSBub3QgZGVmaW5lZCBwcml2YXRlIHNldHRl
ciIpOworICAgICAgICB9CisKICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0UHJpdmF0ZUZp
ZWxkU2V0KGJhc2UsIG1faWRlbnQsIHZhbHVlKTsKKyAgICB9CiAKICAgICBpZiAobV9iYXNlLT5p
c1N1cGVyTm9kZSgpKSB7CiAgICAgICAgIGlmICghdGhpc1ZhbHVlKQpAQCAtOTcxLDEwICsxMDAx
LDE2IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlCiAKICAgICAgICAgLy8gSW5pdGlhbGl6ZSBp
bnN0YW5jZSBmaWVsZHMgYWZ0ZXIgc3VwZXItY2FsbC4KICAgICAgICAgaWYgKE9wdGlvbnM6OnVz
ZUNsYXNzRmllbGRzKCkpIHsKKyAgICAgICAgICAgIGlmIChnZW5lcmF0b3IucHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQoKSA9PSBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6TmVlZGVkKSB7CisgICAg
ICAgICAgICAgICAgLy8gRklYTUU6IHR1cm4gdGhpcyBhIG1ldGhvZCBvZiBCeXRlY29kZUdlbmVy
YXRvci4gSXQgaXMgdGhlIHNhbWUgYXMgQmFzZSBjb25zdHJ1Y3RvcgorICAgICAgICAgICAgICAg
IFZhcmlhYmxlIHByaXZhdGVCcmFuZFZhciA9IGdlbmVyYXRvci52YXJpYWJsZShnZW5lcmF0b3Iu
cHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLnByaXZhdGVCcmFuZFByaXZhdGVOYW1lKCkp
OworICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlQnJhbmRWYXJTY29w
ZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHByaXZhdGVCcmFuZFZhcik7
CisgICAgICAgICAgICAgICAgUmVnaXN0ZXJJRCogcHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2VuZXJh
dG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBwcml2YXRl
QnJhbmRWYXJTY29wZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJl
Y3RQdXRCeVZhbChnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCksIHByaXZhdGVCcmFuZFN5bWJvbCwg
cHJpdmF0ZUJyYW5kU3ltYm9sKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZ1bmMgPSBn
ZW5lcmF0b3IuZW1pdExvYWREZXJpdmVkQ29uc3RydWN0b3IoKTsKICAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0SW5zdGFuY2VGaWVsZEluaXRpYWxpemF0aW9uSWZOZWVkZWQoZ2VuZXJhdG9yLnRo
aXNSZWdpc3RlcigpLCBmdW5jLmdldCgpLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCkpOwogICAgICAgICB9Ci0KICAgICAgICAgcmV0dXJuIHJldDsKICAgICB9CiAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IGZ1bmMgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByKTsKQEAgLTQwNzks
NiArNDExNSwxMyBAQCBSZWdpc3RlcklEKiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogICAgIGlmIChtX25lZWRzTGV4
aWNhbFNjb3BlKQogICAgICAgICBnZW5lcmF0b3IucHVzaExleGljYWxTY29wZSh0aGlzLCBCeXRl
Y29kZUdlbmVyYXRvcjo6VERaQ2hlY2tPcHRpbWl6YXRpb246Ok9wdGltaXplLCBCeXRlY29kZUdl
bmVyYXRvcjo6TmVzdGVkU2NvcGVUeXBlOjpJc05lc3RlZCk7CiAKKyAgICBib29sIGhhc1ByaXZh
dGVOYW1lcyA9ICEhbV9sZXhpY2FsVmFyaWFibGVzLnByaXZhdGVOYW1lc1NpemUoKTsKKyAgICBi
b29sIHNob3VsZEVtaXRQcml2YXRlQnJhbmQgPSBtX2xleGljYWxWYXJpYWJsZXMuaGFzUHJpdmF0
ZUFjY2VzcygpOworICAgIGlmIChoYXNQcml2YXRlTmFtZXMpCisgICAgICAgIGdlbmVyYXRvci5w
dXNoUHJpdmF0ZUFjY2Vzc05hbWVzKG1fbGV4aWNhbFZhcmlhYmxlcyk7CisgICAgaWYgKHNob3Vs
ZEVtaXRQcml2YXRlQnJhbmQpCisgICAgICAgIGdlbmVyYXRvci5lbWl0Q3JlYXRlUHJpdmF0ZUJy
YW5kKGdlbmVyYXRvci5zY29wZVJlZ2lzdGVyKCksIG1fcG9zaXRpb24sIG1fcG9zaXRpb24sIG1f
cG9zaXRpb24pOworCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHN1cGVyY2xhc3M7CiAgICAgaWYg
KG1fY2xhc3NIZXJpdGFnZSkgewogICAgICAgICBzdXBlcmNsYXNzID0gZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpOwpAQCAtNDA4OCwxNSArNDEzMSwxOCBAQCBSZWdpc3RlcklEKiBDbGFzc0V4cHJO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25zdHJ1Y3RvcjsKICAgICBib29sIG5lZWRzSG9t
ZU9iamVjdCA9IGZhbHNlOwogCisKKyAgICBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRl
QnJhbmRSZXF1aXJlbWVudCA9IHNob3VsZEVtaXRQcml2YXRlQnJhbmQgPyBQcml2YXRlQnJhbmRS
ZXF1aXJlbWVudDo6TmVlZGVkIDogUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmU7CiAgICAg
aWYgKG1fY29uc3RydWN0b3JFeHByZXNzaW9uKSB7CiAgICAgICAgIEFTU0VSVChtX2NvbnN0cnVj
dG9yRXhwcmVzc2lvbi0+aXNGdW5jRXhwck5vZGUoKSk7CiAgICAgICAgIEZ1bmN0aW9uTWV0YWRh
dGFOb2RlKiBtZXRhZGF0YSA9IHN0YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+KG1fY29uc3RydWN0
b3JFeHByZXNzaW9uKS0+bWV0YWRhdGEoKTsKICAgICAgICAgbWV0YWRhdGEtPnNldEVjbWFOYW1l
KGVjbWFOYW1lKCkpOwogICAgICAgICBtZXRhZGF0YS0+c2V0Q2xhc3NTb3VyY2UobV9jbGFzc1Nv
dXJjZSk7CisgICAgICAgIG1ldGFkYXRhLT5zZXRQcml2YXRlQnJhbmRSZXF1aXJlbWVudChwcml2
YXRlQnJhbmRSZXF1aXJlbWVudCk7CiAgICAgICAgIGNvbnN0cnVjdG9yID0gZ2VuZXJhdG9yLmVt
aXROb2RlKGRzdCwgbV9jb25zdHJ1Y3RvckV4cHJlc3Npb24pOwogICAgICAgICBuZWVkc0hvbWVP
YmplY3QgPSBtX2NsYXNzSGVyaXRhZ2UgfHwgbWV0YWRhdGEtPnN1cGVyQmluZGluZygpID09IFN1
cGVyQmluZGluZzo6TmVlZGVkOwogICAgIH0gZWxzZQotICAgICAgICBjb25zdHJ1Y3RvciA9IGdl
bmVyYXRvci5lbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKGdlbmVyYXRvci5maW5hbERlc3RpbmF0
aW9uKGRzdCksIG1fY2xhc3NIZXJpdGFnZSA/IENvbnN0cnVjdG9yS2luZDo6RXh0ZW5kcyA6IENv
bnN0cnVjdG9yS2luZDo6QmFzZSwgbV9uYW1lLCBlY21hTmFtZSgpLCBtX2NsYXNzU291cmNlKTsK
KyAgICAgICAgY29uc3RydWN0b3IgPSBnZW5lcmF0b3IuZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3Rv
cihnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCBtX2NsYXNzSGVyaXRhZ2UgPyBDb25z
dHJ1Y3RvcktpbmQ6OkV4dGVuZHMgOiBDb25zdHJ1Y3RvcktpbmQ6OkJhc2UsIG1fbmFtZSwgZWNt
YU5hbWUoKSwgbV9jbGFzc1NvdXJjZSwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOwogCiAgICAg
Y29uc3QgYXV0byYgcHJvcGVydHlOYW1lcyA9IGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCk7CiAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3RvdHlwZSA9IGdlbmVyYXRvci5lbWl0TmV3T2JqZWN0
KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSk7CkBAIC00MTY2LDYgKzQyMTIsOSBAQCBSZWdpc3Rl
cklEKiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRAogICAgICAgICBnZW5lcmF0b3IucG9wTGV4aWNhbFNjb3BlKHRoaXMp
OwogICAgIH0KIAorICAgIGlmIChoYXNQcml2YXRlTmFtZXMpCisgICAgICAgIGdlbmVyYXRvci5w
b3BQcml2YXRlQWNjZXNzTmFtZXMoKTsKKwogICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3Qs
IGNvbnN0cnVjdG9yLmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGE2ODI4MWU0YzBkLi5lMmVjMjQ4ZjgzNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjg0LDYg
KzI4NCw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2Rl
SUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJCiAgICAgY2FzZSBvcF9hZGRfcHJpdmF0
ZV9maWVsZDogLy8gRklYTUU6IGFkZCBKSVQgc3VwcG9ydCBmb3IgcHJpdmF0ZSBmaWVsZCBvcHMu
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU2MTkKICAgICBjYXNl
IG9wX2dldF9wcml2YXRlX2ZpZWxkOgogICAgIGNhc2Ugb3BfcHV0X3ByaXZhdGVfZmllbGQ6Cisg
ICAgY2FzZSBvcF9jaGVja19wcml2YXRlX2JyYW5kOgogICAgIGNhc2Ugb3BfdG9fcHJvcGVydHlf
a2V5OgogICAgIGNhc2UgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZToKICAgICBjYXNlIGxsaW50X2V2
YWxfcHJvbG9ndWU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggMzVjZGViMWQyOWMu
LjU3ZDZjZTBjODYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC00MjMsNiArNDIz
LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVf
T1Aob3BfYWRkX3ByaXZhdGVfZmllbGQpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfcHJpdmF0
ZV9maWVsZCkKICAgICAgICAgREVGSU5FX09QKG9wX3RvX3Byb3BlcnR5X2tleSkKKyAgICAgICAg
REVGSU5FX09QKG9wX2NoZWNrX3ByaXZhdGVfYnJhbmQpCiAKICAgICAgICAgREVGSU5FX09QKG9w
X3JldCkKICAgICAgICAgREVGSU5FX09QKG9wX3JzaGlmdCkKQEAgLTU5Miw2ICs1OTMsNyBAQCB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NB
U0VfU0xPV19PUChnZXRfcHJpdmF0ZV9maWVsZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NM
T1dfT1AocHV0X3ByaXZhdGVfZmllbGQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09Q
KHRvX3Byb3BlcnR5X2tleSkKKyAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AoY2hlY2tf
cHJpdmF0ZV9icmFuZCkKIAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IGRkZmZkYWMx
YTFjLi5kZTg4YTBlZjBjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC02MzgsNiArNjM4
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfcHJpdmF0ZV9m
aWVsZChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3ByaXZh
dGVfZmllbGQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3RvX3By
b3BlcnR5X2tleShjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfY2hl
Y2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiopOwogCiAgICAgICAgIHZvaWQgZW1p
dFNsb3dfb3BfYWRkKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2NhbGwoY29uc3QgSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCA5YTI5NzkxNjhhNy4uMWNiMTJiMzMxNGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMTU4Miw2ICsxNTgy
LDEwIEBAIHZvaWQgSklUOjplbWl0X29wX3RvX3Byb3BlcnR5X2tleShjb25zdCBJbnN0cnVjdGlv
biopCiB7CiAgICAgYWRkU2xvd0Nhc2UoanVtcCgpKTsKIH0KK3ZvaWQgSklUOjplbWl0X29wX2No
ZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qKQoreworICAgIGFkZFNsb3dDYXNl
KGp1bXAoKSk7Cit9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IDUwODZk
ODQyMmI0Li4yZDUzZDY4ZjJmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTE1NjgsNyArMTU2OCw2IEBAIGxs
aW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUs
IGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgZGlzcGF0Y2goKQogZW5kKQogCi0KIG1hY3JvIHB1
dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0KQogICAgIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3Bh
dGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgICAgICBtYWNybyBjb250aWd1b3VzUHV0QnlWYWwo
c3RvcmVDYWxsYmFjaykKQEAgLTI1OTgsNiArMjU5NywxMCBAQCBsbGludE9wV2l0aE1ldGFkYXRh
KG9wX2FkZF9wcml2YXRlX2ZpZWxkLCBPcEFkZFByaXZhdGVGaWVsZCwgbWFjcm8gKHNpemUsIGdl
dCwgZAogICAgIGRpc3BhdGNoKCkKIGVuZCkKIAorbGxpbnRPcChvcF9jaGVja19wcml2YXRlX2Jy
YW5kLCBPcENoZWNrUHJpdmF0ZUJyYW5kLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCkKKyAg
ICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9jaGVja19wcml2YXRlX2JyYW5kKQorICAgIGRpc3Bh
dGNoKCkKK2VuZCkKIAogbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfcHJpdmF0ZV9maWVsZCwg
T3BHZXRQcml2YXRlRmllbGQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwg
cmV0dXJuKQogICAgIGdldChtX2Jhc2UsIHQwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0FTVEJ1aWxkZXIuaAppbmRleCA2NWUwNGZjMWViYi4uZTI2YWYwMmJhZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC0xMzkwLDYgKzEzOTAsNyBAQCBF
eHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbgogICAgIH0KICAgICBpZiAoIW5vZGUpCiAgICAgICAgIG5v
ZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRv
dC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZG90LT50eXBlKCksIGFyZ3MsIGRpdm90LCBk
aXZvdFN0YXJ0LCBkaXZvdEVuZCk7CisKICAgICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhk
b3QtPmRpdm90KCksIGRvdC0+ZGl2b3RFbmQoKS5vZmZzZXQpOwogICAgIHJldHVybiBub2RlOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAppbmRleCA2MTVlMjlhNWQ2My4u
NzIzNGE0NzM0ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC0x
MDU5LDIwICsxMDU5LDIxIEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+
IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VUNoYXI+OjpwCiAgICAgfSBlbHNlCiAg
ICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSBudWxscHRyOwogICAgIAorICAgIGF1dG8gaWRlbnRU
eXBlID0gaXNQcml2YXRlTmFtZSA/IFBSSVZBVEVOQU1FIDogSURFTlQ7CiAgICAgaWYgKFVOTElL
RUxZKChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgJiYgIShsZXhlckZsYWdzICYgTGV4ZXJG
bGFnc0lnbm9yZVJlc2VydmVkV29yZHMpKSAmJiAhaXNQcml2YXRlSWRlbnRpZmllcikgewogICAg
ICAgICBBU1NFUlQoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcik7CiAgICAgICAgIGlmIChyZW1haW5p
bmcgPCBtYXhUb2tlbkxlbmd0aCkgewogICAgICAgICAgICAgY29uc3QgSGFzaFRhYmxlVmFsdWUq
IGVudHJ5ID0gSlNDOjptYWluVGFibGUuZW50cnkoKmlkZW50KTsKICAgICAgICAgICAgIEFTU0VS
VCgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpIHx8ICFlbnRyeSk7CiAgICAgICAgICAgICBp
ZiAoIWVudHJ5KQotICAgICAgICAgICAgICAgIHJldHVybiBJREVOVDsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gaWRlbnRUeXBlOwogICAgICAgICAgICAgSlNUb2tlblR5cGUgdG9rZW4gPSBzdGF0
aWNfY2FzdDxKU1Rva2VuVHlwZT4oZW50cnktPmxleGVyVmFsdWUoKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gKHRva2VuICE9IFJFU0VSVkVEX0lGX1NUUklDVCkgfHwgc3RyaWN0TW9kZSA/IHRva2Vu
IDogSURFTlQ7CisgICAgICAgICAgICByZXR1cm4gKHRva2VuICE9IFJFU0VSVkVEX0lGX1NUUklD
VCkgfHwgc3RyaWN0TW9kZSA/IHRva2VuIDogaWRlbnRUeXBlOwogICAgICAgICB9Ci0gICAgICAg
IHJldHVybiBJREVOVDsKKyAgICAgICAgcmV0dXJuIGlkZW50VHlwZTsKICAgICB9CiAKLSAgICBy
ZXR1cm4gSURFTlQ7CisgICAgcmV0dXJuIGlkZW50VHlwZTsKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gdGVtcGxhdGU8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBK
U1Rva2VuVHlwZSBMZXhlcjxDaGFyYWN0ZXJUeXBlPjo6cGFyc2VJZGVudGlmaWVyU2xvd0Nhc2Uo
SlNUb2tlbkRhdGEqIHRva2VuRGF0YSwgdW5zaWduZWQgbGV4ZXJGbGFncywgYm9vbCBzdHJpY3RN
b2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3Ry
dWN0b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMu
aAppbmRleCBmODZlMWE2ZDI5Mi4uZmI1MjI0Zjc3YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCkBAIC0yNTMsNyArMjUzLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICwgbV90eXBlKHR5cGUpCiAgICAgICAgICwgbV9uZWVkc1N1
cGVyQmluZGluZyhzdXBlckJpbmRpbmcgPT0gU3VwZXJCaW5kaW5nOjpOZWVkZWQpCiAgICAgICAg
ICwgbV9wdXRUeXBlKHB1dFR5cGUpCi0gICAgICAgICwgbV9pc1ByaXZhdGUoISEodHlwZSAmIFBy
aXZhdGUpKQorICAgICAgICAsIG1faXNQcml2YXRlKCEhKHR5cGUgJiAoUHJpdmF0ZUZpZWxkIHwg
UHJpdmF0ZU1ldGhvZCkpKQogICAgICAgICAsIG1fY2xhc3NFbGVtZW50VGFnKHN0YXRpY19jYXN0
PHVuc2lnbmVkPih0YWcpKQogICAgICAgICAsIG1faXNPdmVycmlkZGVuQnlEdXBsaWNhdGUoZmFs
c2UpCiAgICAgewpAQCAtMjY2LDcgKzI2Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAs
IG1fdHlwZSh0eXBlKQogICAgICAgICAsIG1fbmVlZHNTdXBlckJpbmRpbmcoc3VwZXJCaW5kaW5n
ID09IFN1cGVyQmluZGluZzo6TmVlZGVkKQogICAgICAgICAsIG1fcHV0VHlwZShwdXRUeXBlKQot
ICAgICAgICAsIG1faXNQcml2YXRlKCEhKHR5cGUgJiBQcml2YXRlKSkKKyAgICAgICAgLCBtX2lz
UHJpdmF0ZSghISh0eXBlICYgKFByaXZhdGVGaWVsZCB8IFByaXZhdGVNZXRob2QpKSkKICAgICAg
ICAgLCBtX2NsYXNzRWxlbWVudFRhZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4odGFnKSkKICAgICAg
ICAgLCBtX2lzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlKGZhbHNlKQogICAgIHsKQEAgLTI3OSw3ICsy
NzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLCBtX3R5cGUodHlwZSkKICAgICAgICAg
LCBtX25lZWRzU3VwZXJCaW5kaW5nKHN1cGVyQmluZGluZyA9PSBTdXBlckJpbmRpbmc6Ok5lZWRl
ZCkKICAgICAgICAgLCBtX3B1dFR5cGUocHV0VHlwZSkKLSAgICAgICAgLCBtX2lzUHJpdmF0ZSgh
ISh0eXBlICYgUHJpdmF0ZSkpCisgICAgICAgICwgbV9pc1ByaXZhdGUoISEodHlwZSAmIChQcml2
YXRlRmllbGQgfCBQcml2YXRlTWV0aG9kKSkpCiAgICAgICAgICwgbV9jbGFzc0VsZW1lbnRUYWco
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRhZykpCiAgICAgICAgICwgbV9pc092ZXJyaWRkZW5CeUR1
cGxpY2F0ZShmYWxzZSkKICAgICB7CkBAIC0yOTIsNyArMjkyLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICwgbV90eXBlKHR5cGUpCiAgICAgICAgICwgbV9uZWVkc1N1cGVyQmluZGluZyhz
dXBlckJpbmRpbmcgPT0gU3VwZXJCaW5kaW5nOjpOZWVkZWQpCiAgICAgICAgICwgbV9wdXRUeXBl
KHB1dFR5cGUpCi0gICAgICAgICwgbV9pc1ByaXZhdGUoISEodHlwZSAmIFByaXZhdGUpKQorICAg
ICAgICAsIG1faXNQcml2YXRlKCEhKHR5cGUgJiAoUHJpdmF0ZUZpZWxkIHwgUHJpdmF0ZU1ldGhv
ZCkpKQogICAgICAgICAsIG1fY2xhc3NFbGVtZW50VGFnKHN0YXRpY19jYXN0PHVuc2lnbmVkPih0
YWcpKQogICAgICAgICAsIG1faXNPdmVycmlkZGVuQnlEdXBsaWNhdGUoZmFsc2UpCiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IDFkZjljNjE5MTU4Li41MzFiN2Rl
MTJmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtNzA2LDcgKzcwNiw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGVudW0gY2xhc3MgQ2xhc3NFbGVtZW50VGFnIDogdWlu
dDhfdCB7IE5vLCBJbnN0YW5jZSwgU3RhdGljLCBMYXN0VGFnIH07CiAgICAgY2xhc3MgUHJvcGVy
dHlOb2RlIGZpbmFsIDogcHVibGljIFBhcnNlckFyZW5hRnJlZWFibGUgewogICAgIHB1YmxpYzoK
LSAgICAgICAgZW51bSBUeXBlIDogdWludDhfdCB7IENvbnN0YW50ID0gMSwgR2V0dGVyID0gMiwg
U2V0dGVyID0gNCwgQ29tcHV0ZWQgPSA4LCBTaG9ydGhhbmQgPSAxNiwgU3ByZWFkID0gMzIsIFBy
aXZhdGUgPSA2NCB9OworICAgICAgICBlbnVtIFR5cGUgOiB1aW50OF90IHsgQ29uc3RhbnQgPSAx
LCBHZXR0ZXIgPSAyLCBTZXR0ZXIgPSA0LCBDb21wdXRlZCA9IDgsIFNob3J0aGFuZCA9IDE2LCBT
cHJlYWQgPSAzMiwgUHJpdmF0ZUZpZWxkID0gNjQsIFByaXZhdGVNZXRob2QgPSAxMjggfTsKICAg
ICAgICAgZW51bSBQdXRUeXBlIDogdWludDhfdCB7IFVua25vd24sIEtub3duRGlyZWN0IH07CiAK
ICAgICAgICAgUHJvcGVydHlOb2RlKGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSos
IFR5cGUsIFB1dFR5cGUsIFN1cGVyQmluZGluZywgQ2xhc3NFbGVtZW50VGFnKTsKQEAgLTczNiw3
ICs3MzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogbV9u
YW1lOwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9leHByZXNzaW9uOwogICAgICAgICBFeHBy
ZXNzaW9uTm9kZSogbV9hc3NpZ247Ci0gICAgICAgIHVuc2lnbmVkIG1fdHlwZSA6IDc7CisgICAg
ICAgIHVuc2lnbmVkIG1fdHlwZTsKICAgICAgICAgdW5zaWduZWQgbV9uZWVkc1N1cGVyQmluZGlu
ZyA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1fcHV0VHlwZSA6IDE7CiAgICAgICAgIHVuc2lnbmVk
IG1faXNQcml2YXRlIDogMTsKQEAgLTIwMzAsNiArMjAzMCw5IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB2b2lkIHNldEluZmVycmVkTmFtZShjb25zdCBJZGVudGlmaWVyJiBpbmZlcnJlZE5h
bWUpIHsgQVNTRVJUKCFpbmZlcnJlZE5hbWUuaXNOdWxsKCkpOyBtX2luZmVycmVkTmFtZSA9IGlu
ZmVycmVkTmFtZTsgfQogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpbmZlcnJlZE5hbWUoKSB7
IHJldHVybiBtX2luZmVycmVkTmFtZS5pc0VtcHR5KCkgPyBtX2lkZW50IDogbV9pbmZlcnJlZE5h
bWU7IH0KIAorICAgICAgICB2b2lkIHNldFByaXZhdGVCcmFuZFJlcXVpcmVtZW50KFByaXZhdGVC
cmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KSB7IG1fcHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQpOyB9CisgICAgICAgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVp
cmVtZW50KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ+KG1f
cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOyB9CisKICAgICAgICAgRnVuY3Rpb25Nb2RlIGZ1bmN0
aW9uTW9kZSgpIHsgcmV0dXJuIG1fZnVuY3Rpb25Nb2RlOyB9CiAKICAgICAgICAgaW50IGZ1bmN0
aW9uTmFtZVN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbk5hbWVTdGFydDsgfQpAQCAt
MjA3MSw2ICsyMDc0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuc2lnbmVkIG1fc3Vw
ZXJCaW5kaW5nIDogMTsKICAgICAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwog
ICAgICAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uIDogMTsKKyAg
ICAgICAgdW5zaWduZWQgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA6IDE7CiAgICAgICAgIFNv
dXJjZVBhcnNlTW9kZSBtX3BhcnNlTW9kZTsKICAgICAgICAgRnVuY3Rpb25Nb2RlIG1fZnVuY3Rp
b25Nb2RlOwogICAgICAgICBJZGVudGlmaWVyIG1faWRlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5jcHAKaW5kZXggOWY3YWIyNzllMjUuLjcxOTQ0Mzg1ZjQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yOTM2LDE1ICsyOTM2LDE5IEBA
IHBhcnNlTWV0aG9kOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUFJJVkFURU5B
TUU6IHsKICAgICAgICAgICAgIEFTU0VSVChPcHRpb25zOjp1c2VDbGFzc0ZpZWxkcygpKTsKLSAg
ICAgICAgICAgIEpTVG9rZW4gdG9rZW4gPSBtX3Rva2VuOwogICAgICAgICAgICAgaWRlbnQgPSBt
X3Rva2VuLm1fZGF0YS5pZGVudDsKICAgICAgICAgICAgIGZhaWxJZlRydWUodGFnID09IENsYXNz
RWxlbWVudFRhZzo6U3RhdGljLCAiU3RhdGljIGNsYXNzIGVsZW1lbnQgY2Fubm90IGJlIHByaXZh
dGUiKTsKICAgICAgICAgICAgIGZhaWxJZlRydWUoaXNHZXR0ZXIgfHwgaXNTZXR0ZXIsICJDYW5u
b3QgcGFyc2UgY2xhc3MgbWV0aG9kIHdpdGggcHJpdmF0ZSBuYW1lIik7CiAgICAgICAgICAgICBB
U1NFUlQoaWRlbnQpOwogICAgICAgICAgICAgbmV4dCgpOwotICAgICAgICAgICAgZmFpbElmVHJ1
ZShtYXRjaEFuZFVwZGF0ZShPUEVOUEFSRU4sIHRva2VuKSwgIkNhbm5vdCBwYXJzZSBjbGFzcyBt
ZXRob2Qgd2l0aCBwcml2YXRlIG5hbWUiKTsKKyAgICAgICAgICAgIGlmIChPcHRpb25zOjp1c2VQ
cml2YXRlTWV0aG9kcygpICYmIG1hdGNoKE9QRU5QQVJFTikpIHsKKyAgICAgICAgICAgICAgICBz
ZW1hbnRpY0ZhaWxJZlRydWUoY2xhc3NTY29wZS0+ZGVjbGFyZVByaXZhdGVNZXRob2QoKmlkZW50
KSAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb24sICJDYW5u
b3QgZGVjbGFyZSBwcml2YXRlIG1ldGhvZCB0d2ljZSIpOworICAgICAgICAgICAgICAgIHR5cGUg
PSBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KHR5cGUgfCBQcm9wZXJ0eU5vZGU6OlBy
aXZhdGVNZXRob2QpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaChPUEVOUEFSRU4pLCAiQ2Fubm90IHBh
cnNlIGNsYXNzIG1ldGhvZCB3aXRoIHByaXZhdGUgbmFtZSIpOwogICAgICAgICAgICAgc2VtYW50
aWNGYWlsSWZUcnVlKGNsYXNzU2NvcGUtPmRlY2xhcmVQcml2YXRlTmFtZSgqaWRlbnQpICYgRGVj
bGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbiwgIkNhbm5vdCBkZWNs
YXJlIHByaXZhdGUgZmllbGQgdHdpY2UiKTsKLSAgICAgICAgICAgIHR5cGUgPSBzdGF0aWNfY2Fz
dDxQcm9wZXJ0eU5vZGU6OlR5cGU+KHR5cGUgfCBQcm9wZXJ0eU5vZGU6OlByaXZhdGUpOworICAg
ICAgICAgICAgdHlwZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4odHlwZSB8IFBy
b3BlcnR5Tm9kZTo6UHJpdmF0ZUZpZWxkKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRl
eCAxMGM3ZmJlYjZiOS4uMTc2OTJiMzk4ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuaApAQCAtNDk4LDYgKzQ5OCwyNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fbGV4aWNhbFZh
cmlhYmxlcy51c2VQcml2YXRlTmFtZShpZGVudCk7CiAgICAgfQogCisgICAgRGVjbGFyYXRpb25S
ZXN1bHRNYXNrIGRlY2xhcmVQcml2YXRlTWV0aG9kKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYWxsb3dzTGV4aWNhbERlY2xhcmF0aW9ucyk7CisgICAg
ICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayByZXN1bHQgPSBEZWNsYXJhdGlvblJlc3VsdDo6VmFs
aWQ7CisgICAgICAgIGJvb2wgYWRkUmVzdWx0ID0gbV9sZXhpY2FsVmFyaWFibGVzLmRlY2xhcmVQ
cml2YXRlTWV0aG9kKGlkZW50KTsKKworICAgICAgICBpZiAoIWFkZFJlc3VsdCkgeworICAgICAg
ICAgICAgcmVzdWx0IHw9IERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFy
YXRpb247CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAg
Ly8gV2UgZGVjbGFyZSBpdCBzaW5jZSB3ZSBzdG9yZSBwcml2YXRlIG1ldGhvZHMgb24gY2xhc3MK
KyAgICAgICAgLy8gc2NvcGUuCisgICAgICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJh
dGlvblJlc3VsdCA9IGRlY2xhcmVMZXhpY2FsVmFyaWFibGUoJmlkZW50LCBmYWxzZSk7CisgICAg
ICAgIEFTU0VSVF9VTlVTRUQoZGVjbGFyYXRpb25SZXN1bHQsIGRlY2xhcmF0aW9uUmVzdWx0ID09
IERlY2xhcmF0aW9uUmVzdWx0OjpWYWxpZCk7CisgICAgICAgIHVzZVZhcmlhYmxlKCZpZGVudCwg
ZmFsc2UpOworICAgICAgICBhZGRDbG9zZWRWYXJpYWJsZUNhbmRpZGF0ZVVuY29uZGl0aW9uYWxs
eShpZGVudC5pbXBsKCkpOworCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCiAgICAg
RGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmVQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVy
JiBpZGVudCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2FsbG93c0xleGljYWxEZWNsYXJhdGlv
bnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rl
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCmluZGV4IDVk
NTg4MmM3NTcxLi4zOTFkODA5MGYwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXJNb2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyTW9kZXMuaApAQCAtMzcsNiArMzcsOCBAQCBlbnVtIGNsYXNzIEpTUGFyc2VyU2NyaXB0
TW9kZSB7IENsYXNzaWMsIE1vZHVsZSB9OwogZW51bSBjbGFzcyBDb25zdHJ1Y3RvcktpbmQgeyBO
b25lLCBCYXNlLCBFeHRlbmRzIH07CiBlbnVtIGNsYXNzIFN1cGVyQmluZGluZyB7IE5lZWRlZCwg
Tm90TmVlZGVkIH07CiAKK2VudW0gY2xhc3MgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgeyBOb25l
LCBOZWVkZWQgfTsKKwogZW51bSBjbGFzcyBDb2RlR2VuZXJhdGlvbk1vZGUgOiB1aW50OF90IHsK
ICAgICBEZWJ1Z2dlciA9IDEgPDwgMCwKICAgICBUeXBlUHJvZmlsZXIgPSAxIDw8IDEsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNw
cAppbmRleCBlMzJlOTI2M2RmMi4uMzAwY2FjZWViZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcApAQCAtMTA3LDYgKzEw
Nyw0MCBAQCB2b2lkIFZhcmlhYmxlRW52aXJvbm1lbnQ6Om1hcmtWYXJpYWJsZUFzRXhwb3J0ZWQo
Y29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPgogICAgIGZpbmRSZXN1bHQtPnZhbHVlLnNl
dElzRXhwb3J0ZWQoKTsKIH0KIAordm9pZCBWYXJpYWJsZUVudmlyb25tZW50OjptYXJrUHJpdmF0
ZU5hbWVBc0RlY2xhcmVkKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCit7CisgICAgaWYg
KCFtX3JhcmVEYXRhKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBmaW5kUmVzdWx0ID0gbV9y
YXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZmluZChpZGVudGlmaWVyLmltcGwoKSk7CisgICAgUkVM
RUFTRV9BU1NFUlQoZmluZFJlc3VsdCAhPSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5lbmQo
KSk7CisgICAgZmluZFJlc3VsdC0+dmFsdWUuc2V0SXNEZWNsYXJlZCgpOworfQorCisvLyBGSVhN
RTogVGhlIGNvZGUgaXMgdGhlIHNhbWUgb2YgZGVjbGFyZVByaXZhdGVOYW1lLiBSZWZhY3RvciB0
aGlzLgorYm9vbCBWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZU1ldGhvZChjb25z
dCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQoreworICAgIGlmICghbV9y
YXJlRGF0YSkKKyAgICAgICAgbV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8VmFyaWFibGVF
bnZpcm9ubWVudFJhcmVEYXRhPigpOworCisgICAgYXV0byBmaW5kUmVzdWx0ID0gbV9yYXJlRGF0
YS0+bV9wcml2YXRlTmFtZXMuZmluZChpZGVudGlmaWVyKTsKKworICAgIGlmIChmaW5kUmVzdWx0
ID09IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmVuZCgpKSB7CisgICAgICAgIFByaXZhdGVO
YW1lRW50cnkgZW50cnkoUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc0RlY2xhcmVkIHwgUHJp
dmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc01ldGhvZCk7CisKKyAgICAgICAgYXV0byBhZGRSZXN1
bHQgPSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoaWRlbnRpZmllciwgZW50cnkpOwor
ICAgICAgICByZXR1cm4gYWRkUmVzdWx0LmlzTmV3RW50cnk7CisgICAgfQorCisKKyAgICBpZiAo
ZmluZFJlc3VsdC0+dmFsdWUuaXNEZWNsYXJlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7IC8v
IEVycm9yOiBkZWNsYXJpbmcgYSBkdXBsaWNhdGUgcHJpdmF0ZSBuYW1lLgorCisgICAgLy8gaXQg
d2FzIHByZXZpb3VzbHkgdXNlZCwgbWFyayBpdCBhcyBkZWNsYXJlZC4KKyAgICBQcml2YXRlTmFt
ZUVudHJ5IGVudHJ5KFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNEZWNsYXJlZCB8IFByaXZh
dGVOYW1lRW50cnk6OlRyYWl0czo6SXNVc2VkIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJ
c01ldGhvZCk7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1l
cy5zZXQoaWRlbnRpZmllciwgZW50cnkpOworICAgIHJldHVybiAhYWRkUmVzdWx0LmlzTmV3RW50
cnk7Cit9CisKIGJvb2wgVmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVByaXZhdGVOYW1lKGNv
bnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCiB7CiAgICAgaWYgKCFt
X3JhcmVEYXRhKQpAQCAtMTU5LDYgKzE5MywyNSBAQCBDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVu
dDo6Q29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudAog
ICAgIH0pOwogCiAgICAgbV9oYXNoID0gMDsKKyAgICBpZiAoZW52LnByaXZhdGVOYW1lc1NpemUo
KSkgeworICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPFVuaXF1ZWRTdHJpbmdJbXBsKiwgUHJpdmF0
ZU5hbWVFbnRyeT4sIDE2PiBzb3J0ZWRQcml2YXRlRW50cmllczsKKyAgICAgICAgc29ydGVkUHJp
dmF0ZUVudHJpZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShlbnYucHJpdmF0ZU5hbWVzU2l6ZSgp
KTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbnRyaWVzIDogZW52LnByaXZhdGVOYW1lcygp
KQorICAgICAgICAgICAgc29ydGVkUHJpdmF0ZUVudHJpZXMuYXBwZW5kKHtlbnRyaWVzLmtleS5n
ZXQoKSwgZW50cmllcy52YWx1ZX0pOworCisgICAgICAgIHN0ZDo6c29ydChzb3J0ZWRQcml2YXRl
RW50cmllcy5iZWdpbigpLCBzb3J0ZWRQcml2YXRlRW50cmllcy5lbmQoKSwgW10gKGNvbnN0IGF1
dG8mIGEsIGNvbnN0IGF1dG8mIGIpIHsKKyAgICAgICAgICAgIHJldHVybiBhLmZpcnN0IDwgYi5m
aXJzdDsKKyAgICAgICAgfSk7CisKKyAgICAgICAgbV9wcml2YXRlQWNjZXNzTmFtZXMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShlbnYucHJpdmF0ZU5hbWVzU2l6ZSgpKTsKKyAgICAgICAgZm9yIChj
b25zdCBhdXRvJiBwYWlyIDogc29ydGVkUHJpdmF0ZUVudHJpZXMpIHsKKyAgICAgICAgICAgIG1f
cHJpdmF0ZUFjY2Vzc05hbWVzLmFwcGVuZChwYWlyLmZpcnN0KTsKKyAgICAgICAgICAgIG1fcHJp
dmF0ZU5hbWVNZXRhZGF0YS5hcHBlbmQocGFpci5zZWNvbmQpOworICAgICAgICAgICAgbV9oYXNo
IF49IHBhaXIuZmlyc3QtPmhhc2goKTsKKyAgICAgICAgICAgIG1faGFzaCArPSBwYWlyLnNlY29u
ZC5iaXRzKCk7CisgICAgICAgIH0KKyAgICB9CisKICAgICBtX3ZhcmlhYmxlcy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KHNvcnRlZEVudHJpZXMuc2l6ZSgpKTsKICAgICBtX3ZhcmlhYmxlTWV0YWRh
dGEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzb3J0ZWRFbnRyaWVzLnNpemUoKSk7CiAgICAgZm9y
IChjb25zdCBhdXRvJiBwYWlyIDogc29ydGVkRW50cmllcykgewpAQCAtMTgyLDYgKzIzNSwxMCBA
QCBib29sIENvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50OjpvcGVyYXRvcj09KGNvbnN0IENvbXBh
Y3RWYXJpYWJsZUVudmlyb25tZW50JiBvdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYg
KG1fdmFyaWFibGVNZXRhZGF0YSAhPSBvdGhlci5tX3ZhcmlhYmxlTWV0YWRhdGEpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9wcml2YXRlQWNjZXNzTmFtZXMgIT0gb3RoZXIubV9w
cml2YXRlQWNjZXNzTmFtZXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9wcml2
YXRlTmFtZU1ldGFkYXRhICE9IG90aGVyLm1fcHJpdmF0ZU5hbWVNZXRhZGF0YSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xOTUsNiArMjUyLDEyIEBA
IFZhcmlhYmxlRW52aXJvbm1lbnQgQ29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQ6OnRvVmFyaWFi
bGVFbnZpcm9ubWVudCgpIGNvbnN0CiAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUg
PSBtX3ZhcmlhYmxlTWV0YWRhdGFbaV07CiAgICAgfQogCisgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9wcml2YXRlQWNjZXNzTmFtZXMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgYXV0byBh
ZGRSZXN1bHQgPSByZXN1bHQuYWRkUHJpdmF0ZU5hbWUobV9wcml2YXRlQWNjZXNzTmFtZXNbaV0p
OworICAgICAgICBBU1NFUlQoYWRkUmVzdWx0LmlzTmV3RW50cnkpOworICAgICAgICBhZGRSZXN1
bHQuaXRlcmF0b3ItPnZhbHVlID0gbV9wcml2YXRlTmFtZU1ldGFkYXRhW2ldOworICAgIH0KKwog
ICAgIGlmIChtX2lzRXZlcnl0aGluZ0NhcHR1cmVkKQogICAgICAgICByZXN1bHQubWFya0FsbFZh
cmlhYmxlc0FzQ2FwdHVyZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaAppbmRleCA1OGYxYTBiNTYyMy4uNTM4NWVlMGEyNTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9u
bWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9u
bWVudC5oCkBAIC04NiwxMSArODYsMTYgQEAgc3RydWN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRy
eUhhc2hUcmFpdHMgOiBIYXNoVHJhaXRzPFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeT4KIH07CiAK
IHN0cnVjdCBQcml2YXRlTmFtZUVudHJ5IHsKKyAgICBmcmllbmQgY2xhc3MgQ2FjaGVkUHJpdmF0
ZU5hbWVFbnRyeTsKKwogcHVibGljOgogICAgIFByaXZhdGVOYW1lRW50cnkodWludDE2X3QgdHJh
aXRzID0gMCkgeyBtX2JpdHMgPSB0cmFpdHM7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBp
c1VzZWQoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1VzZWQ7IH0KICAgICBBTFdBWVNfSU5M
SU5FIGJvb2wgaXNEZWNsYXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzRGVjbGFyZWQ7
IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNNZXRob2QoKSBjb25zdCB7IHJldHVybiBtX2Jp
dHMgJiBJc01ldGhvZDsgfQorCisgICAgYm9vbCBpc1ByaXZhdGVBY2Nlc3MoKSBjb25zdCB7IHJl
dHVybiBpc01ldGhvZCgpOyB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNVc2VkKCkg
eyBtX2JpdHMgfD0gSXNVc2VkOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzRGVjbGFy
ZWQoKSB7IG1fYml0cyB8PSBJc0RlY2xhcmVkOyB9CkBAIC0xMDUsNiArMTEwLDcgQEAgcHVibGlj
OgogICAgIGVudW0gVHJhaXRzIDogdWludDE2X3QgewogICAgICAgICBJc1VzZWQgPSAxIDw8IDAs
CiAgICAgICAgIElzRGVjbGFyZWQgPSAxIDw8IDEsCisgICAgICAgIElzTWV0aG9kID0gMSA8PCAy
LAogICAgIH07CiAKIHByaXZhdGU6CkBAIC0xMTgsOCArMTI0LDEwIEBAIHN0cnVjdCBQcml2YXRl
TmFtZUVudHJ5SGFzaFRyYWl0cyA6IEhhc2hUcmFpdHM8UHJpdmF0ZU5hbWVFbnRyeT4gewogY2xh
c3MgVmFyaWFibGVFbnZpcm9ubWVudCB7CiBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaE1hcDxS
ZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBWYXJpYWJsZUVudmlyb25tZW50RW50cnksIElkZW50
aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+LCBWYXJp
YWJsZUVudmlyb25tZW50RW50cnlIYXNoVHJhaXRzPiBNYXA7Ci0gICAgdHlwZWRlZiBIYXNoTWFw
PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIFByaXZhdGVOYW1lRW50cnksIElkZW50aWZpZXJS
ZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+LCBQcml2YXRlTmFt
ZUVudHJ5SGFzaFRyYWl0cz4gUHJpdmF0ZU5hbWVzOworICAgIAogcHVibGljOgorICAgIHR5cGVk
ZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBQcml2YXRlTmFtZUVudHJ5LCBJ
ZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+Piwg
UHJpdmF0ZU5hbWVFbnRyeUhhc2hUcmFpdHM+IFByaXZhdGVOYW1lczsKKwogICAgIFZhcmlhYmxl
RW52aXJvbm1lbnQoKQogICAgIHsgfQogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQoVmFyaWFibGVF
bnZpcm9ubWVudCYmIG90aGVyKQpAQCAtMTQwLDYgKzE0OCwxNiBAQCBwdWJsaWM6CiAgICAgQUxX
QVlTX0lOTElORSBNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFw
LmVuZCgpOyB9CiAgICAgQUxXQVlTX0lOTElORSBNYXA6OkFkZFJlc3VsdCBhZGQoY29uc3QgUmVm
UHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikgeyByZXR1cm4gbV9tYXAuYWRkKGlk
ZW50aWZpZXIsIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpKTsgfQogICAgIEFMV0FZU19JTkxJ
TkUgTWFwOjpBZGRSZXN1bHQgYWRkKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsgcmV0
dXJuIGFkZChpZGVudGlmaWVyLmltcGwoKSk7IH0KKworICAgIEFMV0FZU19JTkxJTkUgUHJpdmF0
ZU5hbWVzOjpBZGRSZXN1bHQgYWRkUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnRp
ZmllcikgeyByZXR1cm4gYWRkUHJpdmF0ZU5hbWUoaWRlbnRpZmllci5pbXBsKCkpOyB9CisgICAg
QUxXQVlTX0lOTElORSBQcml2YXRlTmFtZXM6OkFkZFJlc3VsdCBhZGRQcml2YXRlTmFtZShjb25z
dCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAg
aWYgKCFtX3JhcmVEYXRhKQorICAgICAgICAgICAgbV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlx
dWU8VmFyaWFibGVFbnZpcm9ubWVudFJhcmVEYXRhPigpOworCisgICAgICAgIHJldHVybiBtX3Jh
cmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoaWRlbnRpZmllciwgUHJpdmF0ZU5hbWVFbnRyeSgp
KTsKKyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJl
dHVybiBtX21hcC5zaXplKCkgKyBwcml2YXRlTmFtZXNTaXplKCk7IH0KICAgICBBTFdBWVNfSU5M
SU5FIHVuc2lnbmVkIG1hcFNpemUoKSBjb25zdCB7IHJldHVybiBtX21hcC5zaXplKCk7IH0KICAg
ICBBTFdBWVNfSU5MSU5FIGJvb2wgY29udGFpbnMoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJ
bXBsPiYgaWRlbnRpZmllcikgY29uc3QgeyByZXR1cm4gbV9tYXAuY29udGFpbnMoaWRlbnRpZmll
cik7IH0KQEAgLTE2MCw2ICsxNzgsMTcgQEAgcHVibGljOgogCiAgICAgdHlwZWRlZiBXVEY6Okl0
ZXJhdG9yUmFuZ2U8UHJpdmF0ZU5hbWVzOjppdGVyYXRvcj4gUHJpdmF0ZU5hbWVzUmFuZ2U7CiAK
KyAgICB2b2lkIG1hcmtQcml2YXRlTmFtZUFzRGVjbGFyZWQoY29uc3QgSWRlbnRpZmllciYpOwor
CisgICAgYm9vbCBkZWNsYXJlUHJpdmF0ZU1ldGhvZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlm
aWVyKSB7IHJldHVybiBkZWNsYXJlUHJpdmF0ZU1ldGhvZChpZGVudGlmaWVyLmltcGwoKSk7IH0K
KyAgICBib29sIGRlY2xhcmVQcml2YXRlTWV0aG9kKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4mIGlkZW50aWZpZXIpOworCisgICAgYm9vbCBkZWNsYXJlUHJpdmF0ZVNldHRlcihjb25z
dCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBkZWNsYXJlUHJpdmF0ZVNldHRlcihp
ZGVudGlmaWVyLmltcGwoKSk7IH0KKyAgICBib29sIGRlY2xhcmVQcml2YXRlU2V0dGVyKGNvbnN0
IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpOworCisgICAgYm9vbCBkZWNs
YXJlUHJpdmF0ZUdldHRlcihjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBk
ZWNsYXJlUHJpdmF0ZUdldHRlcihpZGVudGlmaWVyLmltcGwoKSk7IH0KKyAgICBib29sIGRlY2xh
cmVQcml2YXRlR2V0dGVyKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZp
ZXIpOworICAgIAogICAgIGJvb2wgZGVjbGFyZVByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXIm
IGlkZW50aWZpZXIpIHsgcmV0dXJuIGRlY2xhcmVQcml2YXRlTmFtZShpZGVudGlmaWVyLmltcGwo
KSk7IH0KICAgICBib29sIGRlY2xhcmVQcml2YXRlTmFtZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0
cmluZ0ltcGw+JiBpZGVudGlmaWVyKTsKICAgICB2b2lkIHVzZVByaXZhdGVOYW1lKGNvbnN0IFJl
ZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpOwpAQCAtMTgxLDYgKzIxMCwxOSBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5zaXpl
KCk7CiAgICAgfQogCisgICAgQUxXQVlTX0lOTElORSBib29sIGhhc1ByaXZhdGVBY2Nlc3MoKSBj
b25zdAorICAgIHsKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgICAgIGZvciAoYXV0byBlbnRyeSA6IHByaXZhdGVOYW1lcygpKSB7Cisg
ICAgICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNQcml2YXRlQWNjZXNzKCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCiAgICAgQUxXQVlTX0lOTElORSBib29sIGhhc1ByaXZhdGVOYW1lKGNvbnN0IElkZW50
aWZpZXImIGlkZW50aWZpZXIpCiAgICAgewogICAgICAgICBpZiAoIW1fcmFyZURhdGEpCkBAIC0y
NjMsNiArMzA1LDkgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmlu
Z0ltcGw+PiBtX3ZhcmlhYmxlczsKICAgICBWZWN0b3I8VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5
PiBtX3ZhcmlhYmxlTWV0YWRhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1w
bD4+IG1fcHJpdmF0ZUFjY2Vzc05hbWVzOworICAgIFZlY3RvcjxQcml2YXRlTmFtZUVudHJ5PiBt
X3ByaXZhdGVOYW1lTWV0YWRhdGE7CisKICAgICB1bnNpZ25lZCBtX2hhc2g7CiAgICAgYm9vbCBt
X2lzRXZlcnl0aGluZ0NhcHR1cmVkOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NhY2hlZFR5cGVzLmNwcAppbmRleCA1MGFhZjcwMmYzNS4uNmE3OWEyZDY5MWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTEwNTks
NiArMTA1OSwyMiBAQCBwcml2YXRlOgogICAgIGludHB0cl90IG1fYml0czsKIH07CiAKK2NsYXNz
IENhY2hlZFByaXZhdGVOYW1lRW50cnkgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFByaXZhdGVOYW1l
RW50cnk+IHsKK3B1YmxpYzoKKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUHJpdmF0
ZU5hbWVFbnRyeSYgcHJpdmF0ZU5hbWVFbnRyeSkKKyAgICB7CisgICAgICAgIG1fYml0cyA9IHBy
aXZhdGVOYW1lRW50cnkubV9iaXRzOworICAgIH0KKworICAgIHZvaWQgZGVjb2RlKERlY29kZXIm
LCBQcml2YXRlTmFtZUVudHJ5JiBwcml2YXRlTmFtZUVudHJ5KSBjb25zdAorICAgIHsKKyAgICAg
ICAgcHJpdmF0ZU5hbWVFbnRyeS5tX2JpdHMgPSBtX2JpdHM7CisgICAgfQorCitwcml2YXRlOgor
ICAgIHVpbnQxNl90IG1fYml0czsKK307CisKIGNsYXNzIENhY2hlZFN5bWJvbFRhYmxlUmFyZURh
dGEgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFN5bWJvbFRhYmxlOjpTeW1ib2xUYWJsZVJhcmVEYXRh
PiB7CiBwdWJsaWM6CiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU3lt
Ym9sVGFibGU6OlN5bWJvbFRhYmxlUmFyZURhdGEmIHJhcmVEYXRhKQpAQCAtMTA3NCw3ICsxMDkw
LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBDYWNoZWRIYXNoU2V0PENhY2hl
ZFJlZlB0cjxDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbD4sIFN0cmluZ1JlcEhhc2g+IG1fcHJpdmF0
ZU5hbWVzOworICAgIENhY2hlZEhhc2hNYXA8Q2FjaGVkUmVmUHRyPENhY2hlZFVuaXF1ZWRTdHJp
bmdJbXBsPiwgQ2FjaGVkUHJpdmF0ZU5hbWVFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hU
cmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnlIYXNoVHJh
aXRzPiBtX3ByaXZhdGVOYW1lczsKIH07CiAKIGNsYXNzIENhY2hlZFN5bWJvbFRhYmxlIDogcHVi
bGljIENhY2hlZE9iamVjdDxTeW1ib2xUYWJsZT4gewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db2RlQ2FjaGUuaAppbmRleCAzNzY4NTU1ZGE4Yy4uNGQzMzFmMjkzODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCkBAIC0yNzksNyArMjc5LDcgQEAg
VW5saW5rZWRDb2RlQmxvY2tUeXBlKiBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrSW1wbChWTSYg
dm0sIGNvbnN0IFNvdXJjZUNvZGUmIHMKIAogICAgIGJvb2wgdXNlc0V2YWwgPSByb290Tm9kZS0+
ZmVhdHVyZXMoKSAmIEV2YWxGZWF0dXJlOwogICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gcm9vdE5v
ZGUtPmZlYXR1cmVzKCkgJiBTdHJpY3RNb2RlRmVhdHVyZTsKLSAgICBFeGVjdXRhYmxlSW5mbyBl
eGVjdXRhYmxlSW5mbyh1c2VzRXZhbCwgaXNTdHJpY3RNb2RlLCBmYWxzZSwgZmFsc2UsIENvbnN0
cnVjdG9yS2luZDo6Tm9uZSwgc2NyaXB0TW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIENh
Y2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBkZXJpdmVkQ29udGV4
dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGZhbHNlLCBldmFsQ29udGV4dFR5cGUpOwor
ICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsLCBpc1N0cmljdE1vZGUs
IGZhbHNlLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZSwgZmFsc2UsIENvbnN0cnVjdG9y
S2luZDo6Tm9uZSwgc2NyaXB0TW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIENhY2hlVHlw
ZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUs
IGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGZhbHNlLCBldmFsQ29udGV4dFR5cGUpOwogCiAgICAg
VW5saW5rZWRDb2RlQmxvY2tUeXBlKiB1bmxpbmtlZENvZGVCbG9jayA9IFVubGlua2VkQ29kZUJs
b2NrVHlwZTo6Y3JlYXRlKCZ2bSwgZXhlY3V0YWJsZUluZm8sIGNvZGVHZW5lcmF0aW9uTW9kZSk7
CiAgICAgdW5saW5rZWRDb2RlQmxvY2stPnJlY29yZFBhcnNlKHJvb3ROb2RlLT5mZWF0dXJlcygp
LCByb290Tm9kZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwgbGluZUNvdW50LCB1bmxpbmtlZEVu
ZENvbHVtbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcAppbmRleCAzMjZlN2VlZGYxYS4uMTdkN2Q0MWZkZjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMTU2Miw0
ICsxNTYyLDI5IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfcHJpdmF0ZV9maWVsZCkK
ICAgICBFTkQoKTsKIH0KIAorU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NoZWNrX3ByaXZhdGVf
YnJhbmQpCit7CisgICAgQkVHSU4oKTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wQ2hl
Y2tQcml2YXRlQnJhbmQ+KCk7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEdFVChieXRlY29k
ZS5tX2Jhc2UpLmpzVmFsdWUoKTsKKyAgICBpZiAoIWJhc2VWYWx1ZS5pc09iamVjdCgpKQorICAg
ICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkJyYW5kIGNoZWNrIGZhaWxlZCIpKTsK
KyAgICBKU1ZhbHVlIGJyYW5kID0gR0VUX0MoYnl0ZWNvZGUubV9icmFuZCkuanNWYWx1ZSgpOwor
ICAgIEFTU0VSVChicmFuZC5pc1N5bWJvbCgpKTsKKworICAgIGJhc2VWYWx1ZS5yZXF1aXJlT2Jq
ZWN0Q29lcmNpYmxlKGV4ZWMpOworICAgIENIRUNLX0VYQ0VQVElPTigpOworICAgIGF1dG8gcHJv
cGVydHkgPSBicmFuZC50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIENIRUNLX0VYQ0VQVElPTigp
OworCisgICAgQVNTRVJUKHByb3BlcnR5LmlzUHJpdmF0ZU5hbWUoKSk7CisgICAgUHJvcGVydHlT
bG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OlByb3BlcnR5U2xvdDo6SW50ZXJuYWxN
ZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgIGJvb2wgZm91bmQgPSBKU09iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90KGFzT2JqZWN0KGJhc2VWYWx1ZSksIGV4ZWMsIHByb3BlcnR5LCBzbG90KTsK
KyAgICBpZiAoIWZvdW5kKQorICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkJy
YW5kIGNoZWNrIGZhaWxlZCIpKTsKKworICAgIEVORCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgK
aW5kZXggOWRlZDcwMTdiOWMuLmUzOWE2MmVhMGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMzk4LDYgKzM5OCw3IEBAIFNMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc3ByZWFkKTsKIFNMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfYWRkX3ByaXZhdGVfZmllbGQpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9nZXRfcHJpdmF0ZV9maWVsZCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX3B1dF9wcml2YXRlX2ZpZWxkKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
Y2hlY2tfcHJpdmF0ZV9icmFuZCk7CiAKIHVzaW5nIFNsb3dQYXRoRnVuY3Rpb24gPSBTbG93UGF0
aFJldHVyblR5cGUoU0xPV19QQVRIICopKEV4ZWNTdGF0ZSosIGNvbnN0IEluc3RydWN0aW9uKik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRh
YmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oCmlu
ZGV4IDU3YjdhMzVmNDMyLi5kYzIzMzJkNDM3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKIAog
ICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkg
Y29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8odXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCks
IGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6
OkNsYXNzaWMsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dy
YW1Nb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUoKSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBm
YWxzZSwgZXZhbENvbnRleHRUeXBlKCkpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJs
ZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1c2VzRXZhbCgpLCBpc1N0cmlj
dE1vZGUoKSwgZmFsc2UsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lLCBmYWxzZSwgQ29u
c3RydWN0b3JLaW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIFN1cGVyQmlu
ZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBkZXJpdmVkQ29u
dGV4dFR5cGUoKSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgZXZhbENvbnRleHRU
eXBlKCkpOyB9CiAKICAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMoKSB7IHJldHVybiBtX3VubGlu
a2VkRXZhbENvZGVCbG9jay0+bnVtVmFyaWFibGVzKCk7IH0KICAgICB1bnNpZ25lZCBudW1GdW5j
dGlvbkhvaXN0aW5nQ2FuZGlkYXRlcygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2Nr
LT5udW1GdW5jdGlvbkhvaXN0aW5nQ2FuZGlkYXRlcygpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggNjRkNDY4ZTgzZjQuLmM5
ZTBkZmNhM2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCkBAIC0yNjQsNiArMjY0LDEyIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGhhc093bkxlbmd0aFByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYykKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0YXJnZXQtPmhhc093blByb3BlcnR5KGV4
ZWMsIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkpKTsKIH0KIAorc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY3JlYXRlUHJpdmF0ZVN5bWJvbChFeGVjU3RhdGUqIGV4ZWMpCit7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFN5
bWJvbDo6Y3JlYXRlKHZtLCBQcml2YXRlU3ltYm9sSW1wbDo6Y3JlYXRlTnVsbFN5bWJvbCgpKSk7
Cit9CisKICNpZiAhQVNTRVJUX0RJU0FCTEVECiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBhc3NlcnRDYWxsKEV4ZWNTdGF0ZSogZXhlYykKIHsKQEAgLTEwMjAsNiArMTAyNiw5
IEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT4ganNO
YW1lLCBsb3dlck5hbWUgIyMgQ29uc3RydWN0CiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYWtlQm91bmRGdW5jdGlvblByaXZhdGVO
YW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgNSwgU3RyaW5nKCksIG1ha2VCb3Vu
ZEZ1bmN0aW9uKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAogICAgICAgICBH
bG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaGFzT3du
TGVuZ3RoUHJvcGVydHlQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMs
IDEsIFN0cmluZygpLCBoYXNPd25MZW5ndGhQcm9wZXJ0eSksIFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KSwKIAorICAgICAgICAvLyBQcml2YXRlU3ltYm9sIGNyZWF0aW9uCisgICAg
ICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmNy
ZWF0ZVByaXZhdGVTeW1ib2xQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRo
aXMsIDAsIFN0cmluZygpLCBjcmVhdGVQcml2YXRlU3ltYm9sKSwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpLAorCiAgICAgICAgIC8vIE1hcCBhbmQgU2V0IGhlbHBlcnMuCiAgICAg
ICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5t
YXBCdWNrZXRIZWFkUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNNYXBCdWNrZXRIZWFkLCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8
IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYXBCdWNrZXROZXh0UHJpdmF0ZU5h
bWUoKSwgcHJpdmF0ZUZ1bmNNYXBCdWNrZXROZXh0LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Nj
b3BlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCmluZGV4
IGVkMmE5YTJhNmIwLi45MTcxZGJhYWMzYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTY29wZS5jcHAKQEAgLTM0MSw4ICszNDEsMTMgQEAgdm9pZCBKU1Njb3BlOjpjb2xsZWN0
Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKEpTU2NvcGUqIHNjb3BlLCBWYXJpYWJsZUVudmlyb25t
ZW4KICAgICAgICAgICAgIHJlc3VsdC5hZGQoaXRlci0+a2V5KTsKICAgICAgICAgaWYgKHN5bWJv
bFRhYmxlLT5oYXNQcml2YXRlTmFtZXMoKSkgewogICAgICAgICAgICAgYXV0byBwcml2YXRlTmFt
ZXMgPSBzeW1ib2xUYWJsZS0+cHJpdmF0ZU5hbWVzKCk7Ci0gICAgICAgICAgICBmb3IgKGF1dG8g
ZW5kID0gcHJpdmF0ZU5hbWVzLmVuZCgpLCBpdGVyID0gcHJpdmF0ZU5hbWVzLmJlZ2luKCk7IGl0
ZXIgIT0gZW5kOyArK2l0ZXIpCi0gICAgICAgICAgICAgICAgcmVzdWx0LnVzZVByaXZhdGVOYW1l
KCppdGVyKTsKKyAgICAgICAgICAgIGZvciAoYXV0byBlbmQgPSBwcml2YXRlTmFtZXMuZW5kKCks
IGl0ZXIgPSBwcml2YXRlTmFtZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgeworICAg
ICAgICAgICAgICAgIGlmIChpdGVyLT52YWx1ZS5pc1ByaXZhdGVBY2Nlc3MoKSkgeworICAgICAg
ICAgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IHJlc3VsdC5hZGRQcml2YXRlTmFtZShpdGVy
LT5rZXkpOworICAgICAgICAgICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0g
aXRlci0+dmFsdWU7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAg
IHJlc3VsdC51c2VQcml2YXRlTmFtZShpdGVyLT5rZXkpOworICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTeW1ib2xUYWJsZU9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
eW1ib2xUYWJsZU9iamVjdC5oCmluZGV4IDgzZjIzMzI0OWUzLi45MTJmMjEyODU0NCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3Qu
aApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRQcm9wZXJ0
eU5hbWVzOwogICAgIAogICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3ltYm9sVGFibGUuZ2V0KCk7IH0KLSAgICAKKwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQ
cm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBF
bnVtZXJhdGlvbk1vZGUpOwogICAgIApAQCAtODIsOCArODIsOCBAQCBwcm90ZWN0ZWQ6CiAgICAg
ICAgIG1fc3ltYm9sVGFibGUuc2V0KHZtLCB0aGlzLCBzeW1ib2xUYWJsZSk7CiAgICAgICAgIGlm
IChzeW1ib2xUYWJsZS0+aGFzUHJpdmF0ZU5hbWVzKCkpIHsKICAgICAgICAgICAgIG1fcmFyZURh
dGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEpTU3ltYm9sVGFibGVPYmplY3RSYXJlRGF0YT4oKTsKLSAg
ICAgICAgICAgIGZvciAoYXV0byBrZXkgOiBzeW1ib2xUYWJsZS0+cHJpdmF0ZU5hbWVzKCkpCi0g
ICAgICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuc2V0KGtleS5nZXQoKSwg
UHJpdmF0ZVN5bWJvbEltcGw6OmNyZWF0ZSgqa2V5LmdldCgpKSk7CisgICAgICAgICAgICBmb3Ig
KGF1dG8gZW50cnkgOiBzeW1ib2xUYWJsZS0+cHJpdmF0ZU5hbWVzKCkpCisgICAgICAgICAgICAg
ICAgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuc2V0KGVudHJ5LmtleS5nZXQoKSwgUHJpdmF0
ZVN5bWJvbEltcGw6OmNyZWF0ZSgqZW50cnkua2V5LmdldCgpKSk7CiAgICAgICAgIH0KICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dy
YW1FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZS5oCmluZGV4IGY5YjdlMmFkYmZlLi4wZDk1NzQ3YTUzZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZS5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKIAogICAgIERFQ0xBUkVfSU5GTzsKIAot
ICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0
YWJsZUluZm8odXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3Ry
dWN0b3JLaW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6Ok1vZHVsZSwgU3VwZXJCaW5kaW5n
OjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVNb2RlLCBkZXJpdmVk
Q29udGV4dFR5cGUoKSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgRXZhbENvbnRl
eHRUeXBlOjpOb25lKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29u
c3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8odXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZh
bHNlLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZSwgZmFsc2UsIENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUsIFN1cGVyQmluZGluZzo6Tm90TmVl
ZGVkLCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUV2YWx1YXRlTW9kZSwgZGVyaXZlZENvbnRleHRU
eXBlKCksIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgZmFsc2UsIEV2YWxDb250ZXh0VHlwZTo6
Tm9uZSk7IH0KIAogICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrKCkgeyByZXR1cm4gbV91bmxpbmtlZE1vZHVsZVByb2dyYW1D
b2RlQmxvY2suZ2V0KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5o
CmluZGV4IDI5YzZiMzIzYjgxLi5lMTg4NmQ2YTNiYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wdGlvbnMuaApAQCAtNTE5LDYgKzUxOSw3IEBAIGNvbnN0ZXhwciBib29sIGVuYWJs
ZVdlYkFzc2VtYmx5U3RyZWFtaW5nQXBpID0gZmFsc2U7CiAgICAgdihkb3VibGUsIHZhbGlkYXRl
QWJzdHJhY3RJbnRlcnByZXRlclN0YXRlUHJvYmFiaWxpdHksIDAuNSwgTm9ybWFsLCBudWxscHRy
KSBcCiAgICAgdihvcHRpb25TdHJpbmcsIGR1bXBKSVRNZW1vcnlQYXRoLCBudWxscHRyLCBSZXN0
cmljdGVkLCBudWxscHRyKSBcCiAgICAgdihib29sLCB1c2VDbGFzc0ZpZWxkcywgdHJ1ZSwgTm9y
bWFsLCAiSWYgdHJ1ZSwgdGhlIHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgZGF0YSBmaWVsZHMgaW5z
aWRlIGNsYXNzZXMuIikgXAorICAgIHYoYm9vbCwgdXNlUHJpdmF0ZU1ldGhvZHMsIHRydWUsIE5v
cm1hbCwgIklmIHRydWUsIHRoZSBwYXJzZXIgd2lsbCB1bmRlcnN0YW5kIHByaXZhdGUgbWV0aG9k
cyBhbmQgYWNjZXNzb3JzLiBUaGlzIHJlcXVpcmVzIHVzZUNsYXNzRmVpbGRzIHRvIGJlIHRydWUu
IikgXAogCiBlbnVtIE9wdGlvbkVxdWl2YWxlbmNlIHsKICAgICBTYW1lT3B0aW9uLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgKaW5kZXgg
Yjk2ODQ0NDU2YTMuLmRkMjY0MWE2Zjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgog
ICAgICAgICAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRh
YmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGlzU3Ry
aWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJT
Y3JpcHRNb2RlOjpDbGFzc2ljLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VN
b2RlOjpQcm9ncmFtTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIGlzQXJyb3dGdW5jdGlvbkNv
bnRleHQoKSwgZmFsc2UsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSk7IH0KKyAgICBFeGVjdXRhYmxl
SW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNF
dmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5v
bmUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xh
c3NpYywgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1v
ZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNl
LCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUpOyB9CiAKICAgICBUZW1wbGF0ZU9iamVjdE1hcCYgZW5z
dXJlVGVtcGxhdGVPYmplY3RNYXAoVk0mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3ltYm9sLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N5bWJvbC5jcHAKaW5kZXggYzhiZTAzYWY4MjUuLjgzOGJhOWY1YTIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbC5jcHAKQEAgLTEzMyw0ICsxMzMsMTEgQEAgU3ltYm9s
KiBTeW1ib2w6OmNyZWF0ZShWTSYgdm0sIFN5bWJvbEltcGwmIHVpZCkKICAgICByZXR1cm4gc3lt
Ym9sOwogfQogCitTeW1ib2wqIFN5bWJvbDo6Y3JlYXRlUHJpdmF0ZShWTSYgdm0sIFByaXZhdGVT
eW1ib2xJbXBsJiB1aWQpCit7CisgICAgU3ltYm9sKiBzeW1ib2wgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxTeW1ib2w+KHZtLmhlYXApKSBTeW1ib2wodm0sIHVpZCk7CisgICAgc3ltYm9s
LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIHN5bWJvbDsKK30KKwogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1i
b2wuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbC5oCmluZGV4IGNhOTk0
MmU1NWFlLi40MWQ3MWUzNzJkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3ltYm9sLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9s
LmgKQEAgLTQ4LDYgKzQ4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBTeW1ib2wqIGNyZWF0ZShW
TSYpOwogICAgIHN0YXRpYyBTeW1ib2wqIGNyZWF0ZVdpdGhEZXNjcmlwdGlvbihWTSYsIGNvbnN0
IFN0cmluZyYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTeW1ib2wqIGNyZWF0ZShW
TSYsIFN5bWJvbEltcGwmIHVpZCk7CisgICAgc3RhdGljIFN5bWJvbCogY3JlYXRlUHJpdmF0ZShW
TSYsIFByaXZhdGVTeW1ib2xJbXBsJiB1aWQpOwogCiAgICAgUHJpdmF0ZU5hbWUgcHJpdmF0ZU5h
bWUoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVOYW1lOyB9CiAgICAgU3RyaW5nIGRlc2NyaXB0
aXZlU3RyaW5nKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TeW1ib2xUYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1i
b2xUYWJsZS5jcHAKaW5kZXggODYwYzkxYmU5OTQuLjMyZDcxMzNlZTE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCkBAIC0xODgsNyArMTg4LDcg
QEAgU3ltYm9sVGFibGUqIFN5bWJvbFRhYmxlOjpjbG9uZVNjb3BlUGFydChWTSYgdm0pCiAgICAg
ICAgICAgICBhdXRvIGl0ZXIgPSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5iZWdpbigpOwog
ICAgICAgICAgICAgYXV0byBlbmQgPSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5lbmQoKTsK
ICAgICAgICAgICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVyKQotICAgICAgICAgICAgICAg
IHJlc3VsdC0+bV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKCppdGVyKTsKKyAgICAgICAg
ICAgICAgICByZXN1bHQtPm1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChpdGVyLT5rZXks
IGl0ZXItPnZhbHVlKTsKICAgICAgICAgfQogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCmluZGV4IGM2Yjg0MWZkZTdhLi4xOWY1MzgxZWVh
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCkBAIC0z
NCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJTY29wZWRBcmd1
bWVudHNUYWJsZS5oIgogI2luY2x1ZGUgIlR5cGVMb2NhdGlvbi5oIgorI2luY2x1ZGUgIlZhcmlh
YmxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJWYXJPZmZzZXQuaCIKICNpbmNsdWRlICJXYXRj
aHBvaW50LmgiCiAjaW5jbHVkZSA8bWVtb3J5PgpAQCAtNDQ5LDggKzQ1MCw3IEBAIHB1YmxpYzoK
ICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgUmVmUHRyPFR5
cGVTZXQ+LCBJZGVudGlmaWVyUmVwSGFzaD4gVW5pcXVlVHlwZVNldE1hcDsKICAgICB0eXBlZGVm
IEhhc2hNYXA8VmFyT2Zmc2V0LCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiBPZmZzZXRUb1Zh
cmlhYmxlTWFwOwogICAgIHR5cGVkZWYgVmVjdG9yPFN5bWJvbFRhYmxlRW50cnkqPiBMb2NhbFRv
RW50cnlWZWM7Ci0gICAgdHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4s
IFN0cmluZ1JlcEhhc2g+IFByaXZhdGVOYW1lU2V0OwotICAgIHR5cGVkZWYgV1RGOjpJdGVyYXRv
clJhbmdlPHR5cGVuYW1lIFByaXZhdGVOYW1lU2V0OjppdGVyYXRvcj4gUHJpdmF0ZU5hbWVJdGVy
YXRvclJhbmdlOworICAgIHR5cGVkZWYgV1RGOjpJdGVyYXRvclJhbmdlPHR5cGVuYW1lIFZhcmlh
YmxlRW52aXJvbm1lbnQ6OlByaXZhdGVOYW1lczo6aXRlcmF0b3I+IFByaXZhdGVOYW1lSXRlcmF0
b3JSYW5nZTsKIAogICAgIHN0YXRpYyBTeW1ib2xUYWJsZSogY3JlYXRlKFZNJiB2bSkKICAgICB7
CkBAIC01OTMsNyArNTkzLDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzUHJpdmF0ZU5hbWVzKCkg
Y29uc3QgeyByZXR1cm4gbV9yYXJlRGF0YSAmJiBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5z
aXplKCk7IH0KICAgICBBTFdBWVNfSU5MSU5FIFByaXZhdGVOYW1lSXRlcmF0b3JSYW5nZSBwcml2
YXRlTmFtZXMoKQogICAgIHsKLSAgICAgICAgUHJpdmF0ZU5hbWVTZXQ6Oml0ZXJhdG9yIGJlZ2lu
LCBlbmQ7CisgICAgICAgIFZhcmlhYmxlRW52aXJvbm1lbnQ6OlByaXZhdGVOYW1lczo6aXRlcmF0
b3IgYmVnaW4sIGVuZDsKICAgICAgICAgaWYgKG1fcmFyZURhdGEpIHsKICAgICAgICAgICAgIGJl
Z2luID0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYmVnaW4oKTsKICAgICAgICAgICAgIGVu
ZCA9IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmVuZCgpOwpAQCAtNjAxLDE0ICs2MDEsMTQg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gUHJpdmF0ZU5hbWVJdGVyYXRvclJhbmdlKGJlZ2lu
LCBlbmQpOwogICAgIH0KIAotICAgIHZvaWQgYWRkUHJpdmF0ZU5hbWUoVW5pcXVlZFN0cmluZ0lt
cGwqIGtleSkKKyAgICB2b2lkIGFkZFByaXZhdGVOYW1lKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3Ry
aW5nSW1wbD4mIGtleSwgUHJpdmF0ZU5hbWVFbnRyeSB2YWx1ZSkKICAgICB7CiAgICAgICAgIEFT
U0VSVChrZXkgJiYgIWtleS0+aXNTeW1ib2woKSk7CiAgICAgICAgIGlmICghbV9yYXJlRGF0YSkK
ICAgICAgICAgICAgIG1fcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFN5bWJvbFRhYmxlUmFy
ZURhdGE+KCk7CiAKLSAgICAgICAgQVNTRVJUKCFtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5j
b250YWlucyhrZXkpKTsKLSAgICAgICAgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKGtl
eSk7CisgICAgICAgIEFTU0VSVChtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5maW5kKGtleSkg
PT0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZW5kKCkpOworICAgICAgICBtX3JhcmVEYXRh
LT5tX3ByaXZhdGVOYW1lcy5hZGQoa2V5LCB2YWx1ZSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRW50cnk+CkBAIC03MzEsNyArNzMxLDcgQEAgcHVibGljOgogICAgICAgICBPZmZz
ZXRUb1ZhcmlhYmxlTWFwIG1fb2Zmc2V0VG9WYXJpYWJsZU1hcDsKICAgICAgICAgVW5pcXVlVHlw
ZVNldE1hcCBtX3VuaXF1ZVR5cGVTZXRNYXA7CiAgICAgICAgIFdyaXRlQmFycmllcjxDb2RlQmxv
Y2s+IG1fY29kZUJsb2NrOwotICAgICAgICBQcml2YXRlTmFtZVNldCBtX3ByaXZhdGVOYW1lczsK
KyAgICAgICAgVmFyaWFibGVFbnZpcm9ubWVudDo6UHJpdmF0ZU5hbWVzIG1fcHJpdmF0ZU5hbWVz
OwogICAgIH07CiAKIHByaXZhdGU6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373050</attachid>
            <date>2019-06-27 13:48:10 -0700</date>
            <delta_ts>2019-10-14 00:24:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>private_methods.diff</filename>
            <type>text/plain</type>
            <size>125622</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
ZTQwYzA1MDZmMDEuLjIyODYzYTYyMWI1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZwor
KysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE5LTA2LTI3ICBDYWlv
IExpbWEgIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KKworICAgICAgICBbRVNOZXh0XSBJbXBsZW1l
bnQgcHJpdmF0ZSBtZXRob2RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTQ0MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHN0cmVzcy9wcml2YXRlLWJyYW5kLWluc3RhbGxlZC1hZnRlci1zdXBlci1j
YWxsLWZyb20tZXZhbC5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAoQSk6
CisgICAgICAgIChDLnByb3RvdHlwZS5tZXRob2QpOgorICAgICAgICAoQyk6CisgICAgICAgIChD
LnByb3RvdHlwZS5iYXNlQWNjZXNzKToKKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2Qt
YnJhbmQtY2hlY2suanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKEMucHJv
dG90eXBlLm0pOgorICAgICAgICAoQy5wcm90b3R5cGUubWV0aG9kKToKKyAgICAgICAgKEMpOgor
ICAgICAgICAodHJ5LkMucHJvdG90eXBlLm0pOgorICAgICAgICAodHJ5LkMpOgorICAgICAgICAo
Y2F0Y2gpOgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZC1jb21wYXJpc29uLmpzOiBB
ZGRlZC4KKyAgICAgICAgKGxldC5hc3NlcnQuc2FtZVZhbHVlKToKKyAgICAgICAgKGxldC5hc3Nl
cnQudGhyb3dzKToKKyAgICAgICAgKEMucHJvdG90eXBlLm0pOgorICAgICAgICAoQy5wcm90b3R5
cGUuZ2V0UHJpdmF0ZU1ldGhvZCk6CisgICAgICAgIChDKToKKyAgICAgICAgKiBzdHJlc3MvcHJp
dmF0ZS1tZXRob2QtZXh0ZW5kcy1icmFuZC1jaGVjay5qczogQWRkZWQuCisgICAgICAgIChhc3Nl
cnQpOgorICAgICAgICAoQmFzZS5wcm90b3R5cGUubUJhc2UpOgorICAgICAgICAoQmFzZS5wcm90
b3R5cGUubWV0aG9kQmFzZSk6CisgICAgICAgIChCYXNlKToKKyAgICAgICAgKEMucHJvdG90eXBl
Lm0pOgorICAgICAgICAoQy5wcm90b3R5cGUubWV0aG9kKToKKyAgICAgICAgKEMpOgorICAgICAg
ICAoY2F0Y2gpOgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZC1nZXQtYW5kLWNhbGwu
anM6IEFkZGVkLgorICAgICAgICAobGV0LmFzc2VydC5zYW1lVmFsdWUpOgorICAgICAgICAobGV0
LmFzc2VydC50aHJvd3MpOgorICAgICAgICAoQy5wcm90b3R5cGUubSk6CisgICAgICAgIChDLnBy
b3RvdHlwZS5nZXRQcml2YXRlTWV0aG9kKToKKyAgICAgICAgKEMpOgorICAgICAgICAqIHN0cmVz
cy9wcml2YXRlLW1ldGhvZC1uZXN0ZWQtY2xhc3MuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0
KToKKyAgICAgICAgKEMpOgorICAgICAgICAocHJvdG90eXBlLm1CYXNlKToKKyAgICAgICAgKGNh
dGNoKToKKyAgICAgICAgKHByb3RvdHlwZS5tZXRob2QpOgorICAgICAgICAoQy5wcm90b3R5cGUu
bSk6CisgICAgICAgIChwcm90b3R5cGUubSk6CisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0
aG9kcy1vbi1wcm94eS5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAoYXNz
ZXJ0QXJyYXlDb250ZW50KToKKyAgICAgICAgKHByb3RvdHlwZS5tKToKKyAgICAgICAgKHByb3Rv
dHlwZS5tZXRob2QpOgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW5hbWVzLWF2YWlsYWJsZS1v
bi1kaXJlY3QtZXZhbC5qczogQWRkZWQuCisgICAgICAgIChsZXQuYXNzZXJ0LnNhbWVWYWx1ZSk6
CisgICAgICAgIChDLnByb3RvdHlwZS5tKToKKyAgICAgICAgKEMucHJvdG90eXBlLmNhbGxNZXRo
b2RGcm9tRXZhbCk6CisgICAgICAgIChDKToKKyAgICAgICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1s
OgorCiAyMDE4LTExLTAyICBYYW4gTMOzcGV6ICA8eGFuQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W0pTQ10gQWRkIHN1cHBvcnQgZm9yIGNsYXNzIGZpZWxkcwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvcHJpdmF0ZS1icmFuZC1pbnN0YWxsZWQtYWZ0ZXItc3VwZXItY2FsbC1mcm9tLWFycm93
LWZ1bmN0aW9uLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1icmFuZC1pbnN0YWxsZWQtYWZ0
ZXItc3VwZXItY2FsbC1mcm9tLWFycm93LWZ1bmN0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwLi42M2M4MDVjZmVjZQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL3ByaXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVyLWNhbGwtZnJvbS1h
cnJvdy1mdW5jdGlvbi5qcwpAQCAtMCwwICsxLDI3IEBACisvL0AgcnVuKCItLXVzZUNsYXNzRmll
bGRzPXRydWUgLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGEs
IGUpIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKK30KKworY2xhc3MgQSB7fQorCitjbGFzcyBD
IGV4dGVuZHMgQSB7CisgICAgI21ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuICJiYXNlIjsKKyAg
ICB9CisKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgbGV0IGluaXQgPSAoKSA9PiBzdXBl
cigpOworICAgICAgICBpbml0KCk7CisgICAgfQorCisgICAgYmFzZUFjY2VzcygpIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuI21ldGhvZCgpOworICAgIH0KK30KKworbGV0IGMgPSBuZXcgQygpOwor
YXNzZXJ0KGMuYmFzZUFjY2VzcygpLCAiYmFzZSIpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9wcml2YXRlLWJyYW5kLWluc3RhbGxlZC1hZnRlci1zdXBlci1jYWxsLWZyb20tZXZhbC5q
cyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVyLWNh
bGwtZnJvbS1ldmFsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4w
ZmQzNDI1MmU3ZgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYnJh
bmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVyLWNhbGwtZnJvbS1ldmFsLmpzCkBAIC0wLDAgKzEsMjYg
QEAKKy8vQCBydW4oIi0tdXNlQ2xhc3NGaWVsZHM9dHJ1ZSAtLXVzZVByaXZhdGVNZXRob2RzPXRy
dWUiKQorCitmdW5jdGlvbiBhc3NlcnQoYSwgZSkgeworICAgIGlmIChhICE9PSBlKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOwor
fQorCitjbGFzcyBBIHt9CisKK2NsYXNzIEMgZXh0ZW5kcyBBIHsKKyAgICAjbWV0aG9kKCkgewor
ICAgICAgICByZXR1cm4gImJhc2UiOworICAgIH0KKworICAgIGNvbnN0cnVjdG9yKCkgeworICAg
ICAgICBldmFsKCJzdXBlcigpIik7CisgICAgfQorCisgICAgYmFzZUFjY2VzcygpIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuI21ldGhvZCgpOworICAgIH0KK30KKworbGV0IGMgPSBuZXcgQygpOwor
YXNzZXJ0KGMuYmFzZUFjY2VzcygpLCAiYmFzZSIpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9wcml2YXRlLW1ldGhvZC1icmFuZC1jaGVjay5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZh
dGUtbWV0aG9kLWJyYW5kLWNoZWNrLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwLi41OTNhYmIzZmJlNQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3By
aXZhdGUtbWV0aG9kLWJyYW5kLWNoZWNrLmpzCkBAIC0wLDAgKzEsMzMgQEAKKy8vQCBydW4oIi0t
dXNlQ2xhc3NGaWVsZHM9dHJ1ZSAtLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitmdW5jdGlv
biBhc3NlcnQoYSwgZSkgeworICAgIGlmIChhICE9PSBlKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworfQorCitjbGFzcyBDIHsK
KyAgICAjbSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI2Y7CisgICAgfQorCisgICAgbWV0aG9k
KCkgeworICAgICAgICByZXR1cm4gdGhpcy4jbSgpOworICAgIH0KKworICAgICNmID0gNDsKK30K
KworbGV0IGMgPSBuZXcgQygpOworYXNzZXJ0KGMubWV0aG9kKCksIDQpOworCit0cnkgeworICAg
IGNsYXNzIEMgeworICAgICAgICAjbSgpIHsgcmV0dXJuIDM7IH0KKyAgICB9CisKKyAgICBsZXQg
byA9IG5ldyBDKCk7CisgICAgYy5tZXRob2QuY2FsbChvKTsKK30gY2F0Y2ggKGUpIHsKKyAgICBh
c3NlcnQoZSBpbnN0YW5jZW9mIFR5cGVFcnJvciwgdHJ1ZSk7Cit9CisKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWNvbXBhcmlzb24uanMgYi9KU1Rlc3RzL3N0cmVz
cy9wcml2YXRlLW1ldGhvZC1jb21wYXJpc29uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwLi5jMDU1MDFhZTg4OQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL3ByaXZhdGUtbWV0aG9kLWNvbXBhcmlzb24uanMKQEAgLTAsMCArMSwzMSBAQAorLy9AIHJ1
bigiLS11c2VDbGFzc0ZpZWxkcz10cnVlIC0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xl
dCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAobGhzLCByaHMpIHsKKyAgICAg
ICAgaWYgKGxocyAhPT0gcmhzKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZDogIiArIGxocyArICIgYnVnIGdvdDogIiArIHJocyk7CisgICAgfSwKKworICAgIHRocm93czog
ZnVuY3Rpb24gKGV4cGVjdGVkRXJyb3IsIG9wKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAg
b3AoKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNl
b2YgZXhwZWN0ZWRFcnJvcikpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBl
Y3RlZCB0byB0aHJvdzogIiArIGV4cGVjdGVkRXJyb3IgKyAiIGJ1dCB0aHJldzogIiArIGUpOwor
ICAgICAgICB9CisgICAgfQorfTsKKworY2xhc3MgQyB7CisgICAgI20oKSB7IHJldHVybiAndGVz
dDI2Mic7IH0KKworICAgIGdldFByaXZhdGVNZXRob2QoKSB7CisgICAgICAgIHJldHVybiB0aGlz
LiNtOworICAgIH0KK30KKworbGV0IGMxID0gbmV3IEMoKTsKK2xldCBjMiA9IG5ldyBDKCk7CisK
K2Fzc2VydC5zYW1lVmFsdWUoYzEuZ2V0UHJpdmF0ZU1ldGhvZCgpLCBjMi5nZXRQcml2YXRlTWV0
aG9kKCkpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1leHRl
bmRzLWJyYW5kLWNoZWNrLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtZXh0ZW5k
cy1icmFuZC1jaGVjay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u
NzQ3ZWZjM2Y5YTkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1l
dGhvZC1leHRlbmRzLWJyYW5kLWNoZWNrLmpzCkBAIC0wLDAgKzEsNDEgQEAKKy8vQCBydW4oIi0t
dXNlQ2xhc3NGaWVsZHM9dHJ1ZSAtLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitmdW5jdGlv
biBhc3NlcnQoYSwgZSkgeworICAgIGlmIChhICE9PSBlKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworfQorCitjbGFzcyBCYXNl
IHsKKyAgICAjbUJhc2UoKSB7CisgICAgICAgIHJldHVybiA0OworICAgIH0KKworICAgIG1ldGhv
ZEJhc2UoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtQmFzZSgpOworICAgIH0KK30KKworY2xh
c3MgQyBleHRlbmRzIEJhc2UgeworICAgICNtKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZjsK
KyAgICB9CisKKyAgICBtZXRob2QoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtKCk7CisgICAg
fQorCisgICAgI2YgPSAxNTsKK30KKworbGV0IGMgPSBuZXcgQygpOworYXNzZXJ0KGMubWV0aG9k
KCksIDE1KTsKK2Fzc2VydChjLm1ldGhvZEJhc2UoKSwgNCk7CisKK2xldCBiYXNlID0gbmV3IEJh
c2UgKCk7Cithc3NlcnQoYmFzZS5tZXRob2RCYXNlKCksIDQpOwordHJ5IHsKKyAgICBjLm1ldGhv
ZC5jYWxsKGJhc2UpOworfSBjYXRjaCAoZSkgeworICAgIGFzc2VydChlIGluc3RhbmNlb2YgVHlw
ZUVycm9yLCB0cnVlKTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1t
ZXRob2QtZ2V0LWFuZC1jYWxsLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtZ2V0
LWFuZC1jYWxsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jZjhk
MmMxNGUzMgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9k
LWdldC1hbmQtY2FsbC5qcwpAQCAtMCwwICsxLDMzIEBACisvL0AgcnVuKCItLXVzZUNsYXNzRmll
bGRzPXRydWUgLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAg
ICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChsaHMsIHJocykgeworICAgICAgICBpZiAobGhzICE9PSBy
aHMpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgbGhzICsgIiBi
dWcgZ290OiAiICsgcmhzKTsKKyAgICB9LAorCisgICAgdGhyb3dzOiBmdW5jdGlvbiAoZXhwZWN0
ZWRFcnJvciwgb3ApIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICBvcCgpOworICAgICAgICB9
IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEVycm9y
KSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAi
ICsgZXhwZWN0ZWRFcnJvciArICIgYnV0IHRocmV3OiAiICsgZSk7CisgICAgICAgIH0KKyAgICB9
Cit9OworCitjbGFzcyBDIHsKKyAgICAjbSgpIHsgcmV0dXJuIHRoaXMuX3Y7IH0KKworICAgIGdl
dFByaXZhdGVNZXRob2QoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtOworICAgIH0KK30KKwor
bGV0IGMgPSBuZXcgQygpOworCitsZXQgbzEgPSB7X3Y6ICd0ZXN0MjYyJ307CitsZXQgbzIgPSB7
X3Y6ICdmb28nfTsgCithc3NlcnQuc2FtZVZhbHVlKGMuZ2V0UHJpdmF0ZU1ldGhvZCgpLmNhbGwo
bzEpLCAndGVzdDI2MicpOworYXNzZXJ0LnNhbWVWYWx1ZShjLmdldFByaXZhdGVNZXRob2QoKS5j
YWxsKG8yKSwgJ2ZvbycpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1l
dGhvZC1uZXN0ZWQtY2xhc3MuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1uZXN0
ZWQtY2xhc3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmU2Yzk5
NDhjMWIzCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2Qt
bmVzdGVkLWNsYXNzLmpzCkBAIC0wLDAgKzEsNjggQEAKKy8vQCBydW4oIi0tdXNlQ2xhc3NGaWVs
ZHM9dHJ1ZSAtLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitmdW5jdGlvbiBhc3NlcnQoYSwg
ZSkgeworICAgIGlmIChhICE9PSBlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVk
OiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworfQorCisoKCkgPT4geworICAgIGNsYXNzIEJh
c2UgeworICAgICAgICBDID0gY2xhc3MgeworICAgICAgICAgICAgbWV0aG9kKCkgeworICAgICAg
ICAgICAgICAgIHJldHVybiB0aGlzLiNtQmFzZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgI21CYXNlKCkgeworICAgICAgICAgICAgcmV0dXJuIDQ7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBsZXQgYmFzZSA9IG5ldyBCYXNlKCk7CisgICAgbGV0IGMgPSBuZXcgYmFz
ZS5DKCk7CisgICAgYXNzZXJ0KGMubWV0aG9kLmNhbGwoYmFzZSksIDQpOworCisgICAgdHJ5IHsK
KyAgICAgICAgYy5tZXRob2QoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGFzc2VydChl
IGluc3RhbmNlb2YgVHlwZUVycm9yLCB0cnVlKTsKKyAgICB9Cit9KSgpOworCisvLyBUZXN0IHNo
YWRvdyBtZXRob2RzCisKKygoKSA9PiB7CisgICAgY2xhc3MgQmFzZSB7CisgICAgICAgIG1ldGhv
ZCgpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLiNtKCk7CisgICAgICAgIH0KKworICAgICAg
ICBDID0gY2xhc3MgeworICAgICAgICAgICAgbWV0aG9kKG8pIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gby4jbSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjbSgpIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdGhpcy5mb287CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGZvbyA9IDQ7CisgICAgICAgIH07CisKKyAgICAgICAgI20oKSB7CisgICAgICAgICAgICByZXR1
cm4gImZvbyI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYmFzZSA9IG5ldyBCYXNlKCk7
CisgICAgbGV0IGMgPSBuZXcgYmFzZS5DKCk7CisgICAgYXNzZXJ0KGMubWV0aG9kKGMpLCA0KTsK
KyAgICBhc3NlcnQoYmFzZS5tZXRob2QoKSwgImZvbyIpOworCisgICAgdHJ5IHsKKyAgICAgICAg
Yy5tZXRob2QoYmFzZSk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBhc3NlcnQoZSBpbnN0
YW5jZW9mIFR5cGVFcnJvciwgdHJ1ZSk7CisgICAgfQorfSkoKTsKKwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2RzLW9uLXByb3h5LmpzIGIvSlNUZXN0cy9zdHJlc3Mv
cHJpdmF0ZS1tZXRob2RzLW9uLXByb3h5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwLi5hZWI4OWIxMDZhOAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L3ByaXZhdGUtbWV0aG9kcy1vbi1wcm94eS5qcwpAQCAtMCwwICsxLDQyIEBACisvL0AgcnVuKCIt
LXVzZUNsYXNzRmllbGRzPXRydWUgLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworZnVuY3Rp
b24gYXNzZXJ0KGEsIGUsIG0pIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKG0pOworfQorCitmdW5jdGlvbiBhc3NlcnRBcnJheUNvbnRlbnQoYSwgZSkgeworICAg
IGFzc2VydChhLmxlbmd0aCwgZS5sZW5ndGgsICJTaXplIG9mIGFycmF5cyBkb2Vzbid0IG1hdGNo
Iik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKQorICAgICAgICBhc3Nl
cnQoYVtpXSwgZVtpXSwgImFbIiArIGkgKyAiXSA9ICIgKyBhW2ldICsgIiBidXQgZVsiICsgaSAr
ICJdID0gIiArIGVbaV0pOworfQorCitsZXQgYXJyID0gW107CisKK2NsYXNzIFByb3h5QmFzZSB7
CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIHJldHVybiBuZXcgUHJveHkodGhpcywgewor
ICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAob2JqLCBwcm9wKSB7CisgICAgICAgICAgICAgICAg
YXJyLnB1c2gocHJvcCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG9ialtwcm9wXTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorfQorCitjbGFzcyBUZXN0IGV4dGVuZHMgUHJv
eHlCYXNlIHsKKyAgICAjbSgpIHsKKyAgICAgICAgcmV0dXJuIDM7CisgICAgfQorCisgICAgbWV0
aG9kKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jbSgpOworICAgIH0KK30KKworbGV0IHQgPSBu
ZXcgVGVzdCgpOworbGV0IHIgPSB0Lm1ldGhvZCgpOworYXNzZXJ0KHIsIDMsICJFeHBlY3RlZDog
MyBidXQgZ290OiAiICsgcik7CisKK2Fzc2VydEFycmF5Q29udGVudChhcnIsIFsnbWV0aG9kJ10p
OworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5hbWVzLWF2YWlsYWJsZS1v
bi1kaXJlY3QtZXZhbC5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxl
LW9uLWRpcmVjdC1ldmFsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
Li5lMjcwNzIxMGRhYwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUt
bmFtZXMtYXZhaWxhYmxlLW9uLWRpcmVjdC1ldmFsLmpzCkBAIC0wLDAgKzEsMjMgQEAKKy8vQCBy
dW4oIi0tdXNlQ2xhc3NGaWVsZHM9dHJ1ZSAtLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCits
ZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7CisgICAg
ICAgIGlmIChsaHMgIT09IHJocykKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0
ZWQ6ICIgKyByaHMgKyAiIGJ1ZyBnb3Q6ICIgKyBsaHMpOworICAgIH0KK307CisKKyhmdW5jdGlv
biAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisK
KyAgICAgICAgY2FsbE1ldGhvZEZyb21FdmFsKCkgeworICAgICAgICAgICAgbGV0IHNlbGYgPSB0
aGlzOworICAgICAgICAgICAgcmV0dXJuIGV2YWwoJ3NlbGYuI20oKScpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5jYWxs
TWV0aG9kRnJvbUV2YWwoKSwgJ3Rlc3QnKTsKK30pKCk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
dGVzdDI2Mi9jb25maWcueWFtbCBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAppbmRleCA4
YTVhOTliMjA3OC4uMTM5OTA0ODY2ZGEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9jb25m
aWcueWFtbAorKysgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKQEAgLTE0LDcgKzE0LDYg
QEAgc2tpcDoKICAgICAtIGFzeW5jLWl0ZXJhdGlvbgogICAgICMgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDkzMQogICAgIC0gcmVnZXhwLWxvb2tiZWhpbmQKLSAg
ICAtIGNsYXNzLW1ldGhvZHMtcHJpdmF0ZQogICAgIC0gY2xhc3Mtc3RhdGljLWZpZWxkcy1wdWJs
aWMKICAgICAtIGNsYXNzLXN0YXRpYy1maWVsZHMtcHJpdmF0ZQogICAgIC0gY2xhc3Mtc3RhdGlj
LW1ldGhvZHMtcHJpdmF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggMTJmNDU4YzMwNjku
LmUxYzQ0NmQ1M2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOTQgQEAK
KzIwMTktMDYtMjcgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgorCisgICAgICAg
IFtFU05leHRdIEltcGxlbWVudCBwcml2YXRlIG1ldGhvZHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDQzNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYWRkaW5nIHN1cHBvcnQg
dG8gcHJpdmF0ZSBtZXRob2RzIGZvbGxvd2luZyB0aGUKKyAgICAgICAgc3BlY2lmaWNhdGlvbiBv
biBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtcHJpdmF0ZS1tZXRob2RzLy4KKyAgICAgICAgVGhp
cyBpcyBpbnRyb2R1Y2luZyBhIG5ldyB3YXkgdG8gZGVjbGFyZSBwcml2YXRlIG1ldGhvZHMgb24K
KyAgICAgICAgY2xhc3Mgc3ludGF4LiBQcml2YXRlIG1ldGhvZHMgYXJlIG9ubHkgYWNjZXNzaWJs
ZSB3aXRoaW4KKyAgICAgICAgY2xhc3NlcyB0aGV5IHdlcmUgZGVjbGFyZWQsIGFuZCBvbmx5IGNh
biBiZSBjYWxsZWQgZnJvbQorICAgICAgICBvYmplY3RzIHRoYXQgYXJlIGluc3RhbmNlIG9mIHRo
ZXNlIGNsYXNzZXMuCisgICAgICAgIFRvIGd1YXJhbnRlZSBzdWNoIHJ1bGVzLCB0aGUgcHJvcG9z
YWwgcHJlc2VudHMgdGhlIGNvbmNlcHQgb2YKKyAgICAgICAgQnJhbmQgQ2hlY2suIER1cmluZyBj
bGFzcyBldmFsdWF0aW9uLCBpZiBhIHByaXZhdGUgbWV0aG9kIGlzIHByZXNlbnQsCisgICAgICAg
IGEgYGJyYW5kYCBpcyBpbnN0YWxsZWQgaW4gdGhpcyBjbGFzcy4gRXZlcnkgaW5zdGFuY2Ugb2Yg
c3VjaCBjbGFzcworICAgICAgICB0aGVuIGdldHMgdGhpcyBicmFuZCBpbnN0YWxsZWQgZHVyaW5n
IGBbW0NvbnN0cnVjdF1dYCBvcGVyYXRpb24uIEl0CisgICAgICAgIG1lYW5zIHRoYXQgYW4gb2Jq
ZWN0IGNhbiBoYXZlIG11bHRpcGxlIGJyYW5kcyAoZS5nIHdoZW4gdGhlcmUgaXMgYWxzbworICAg
ICAgICBwcml2YXRlIG1ldGhvZHMgZGVjbGFyZWQgb24gc3VwZXIgY2xhc3MpLiBCZWZvcmUgYWNj
ZXNzaW5nIGEgcHJpdmF0ZQorICAgICAgICBtZXRob2QsIHRoZXJlIGlzIGEgY2hlY2sgdG8gdmFs
aWRhdGUgaWYgdGhlIHRhcmdldCBvZiB0aGUgY2FsbCBoYXMgdGhlCisgICAgICAgIGJyYW5kIG9m
IGNhbGxlZSBtZXRob2QuCisgICAgICAgIFRoZSBicmFuZCBjaGVjayBtZWNoYW5pc20gaXMgaW1w
bGVtZW50ZWQgdXNpbmcgYSBgQHByaXZhdGVCcmFuZGAKKyAgICAgICAgc3RvcmVkIG9uIGNsYXNz
IHNjb3BlLiBIZXJlIGlzIGEgcmVwcmVzZW50YXRpb24gb2YgaG93IHRoaXMgbWVjaGFuaXNtCisg
ICAgICAgIHdvcmtzOgorCisgICAgICAgIGBgYAorICAgICAgICBjbGFzcyBDIHsKKyAgICAgICAg
ICAgICNtKCkgeyByZXR1cm4gMzsgfQorICAgICAgICAgICAgbWV0aG9kKCkgeyByZXR1cm4gdGhp
cy4jbSgpOyB9CisgICAgICAgIH0KKworICAgICAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgICAg
IGNvbnNvbGUubG9nKGMubWV0aG9kKCkpOyAvLyBwcmludHMgMworICAgICAgICBgYGAKKworICAg
ICAgICBHZW5lcmF0ZWQgYnl0ZWNvZGUgZm9yIHRoZSBmb2xsb3dpbmcgcmVwcmVzZW50YXRpb246
CisgICAgICAgIGBgYAorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBAcHJpdmF0ZUJyYW5k
ID0gQGNyZWF0ZVByaXZhdGVTeW1ib2woKTsKKyAgICAgICAgICAgIGNvbnN0ICNtID0gZnVuY3Rp
b24gKCkgeyByZXR1cm4gMzsgfQorICAgICAgICAgICAgQy5wcm90b3R5cGUubWV0aG9kID0gZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICAgICAgQGNoZWNrUHJpdmF0ZUJyYW5kKHRoaXMsIEBwcml2
YXRlQnJhbmQwKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuICNtLmNhbGwodGhpcyk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBDID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
QHB1dERpcmVjdEJ5VmFsKHRoaXMsIEBwcml2YXRlQnJhbmQsIEBwcml2YXRlQnJhbmQpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgbGV0IGMgPSBuZXcgQygpOworICAgICAg
ICBjb25zb2xlLmxvZyhjLm1ldGhvZCgpKTsgLy8gcHJpbnRzIDMKKyAgICAgICAgYGBgCisKKyAg
ICAgICAgQm90aCAiQHByaXZhdGVCcmFuZCIgYW5kICJAY3JlYXRlUHJpdmF0ZVN5bWJvbCIgYXJl
IGludGVybmFsIHByaXZhdGUKKyAgICAgICAgbmFtZXMgYW5kIGNhbid0IGJlIGRlZmluZWQgYnkg
dXNlciBjb2RlIG9yIG9ic2VydmVkIGJ5IHByb3hpZXMuCisgICAgICAgIFRoZSAiQGNoZWNrUHJp
dmF0ZUJyYW5kIiByZXByZXNlbnRzIGEgbmV3IGJ5dGVjb2RlIG9wZXJhdGlvbgorICAgICAgICBp
bnRyb2R1Y2VkIHRvIHBlcmZvcm0gYnJhbmQgY2hlY2sgc2VtYW50aWNzLiBUaGlzIG5ldyBieXRl
Y29kZQorICAgICAgICBwZXJmb3JtcyBhIFtbR2V0T3duUHJvcGVydHldXSBkaXJlY3RseSBpbnRv
IHRhcmdldCBvYmplY3QsIHNvIHdlIGNhbgorICAgICAgICBwcm9wZXJseSBzdXBwb3J0IHByaXZh
dGUgYnJhbmRzIGluc3RhbGxlZCBvbiBQcm94eSBvYmplY3RzLgorICAgICAgICBJdCBjb3VsZCBh
bHNvIGJlIGltcGxlbWVudGVkIGFzIGEgYGdldF9ieV92YWxfZGlyZWN0YCwgaG93ZXZlciB3ZQor
ICAgICAgICBkZWNpZGVkIHRvIG1ha2UgbW9yZSBzcGVjaWZpYyBieXRlY29kZSwgc2luY2UgdGhp
cyB3b3VsZCBiZSB0aGUgb25seQorICAgICAgICB1c2UgY2FzZSBmb3IgdGhpcyBieXRlY29kZS4g
V2hlbmV2ZXIgYSBuZXcgdXNlIGNhc2UgYXBwZWFyLCB3ZSBjYW4KKyAgICAgICAgZ2VuZXJhbGl6
ZSBgY2hlY2tfcHJpdmF0ZV9icmFuZGAgdG8gdXNlIGBnZXRfYnlfdmFsX2RpcmVjdGAuCisKKyAg
ICAgICAgVXNpbmcgb3BfY2hlY2tfcHJpdmF0ZV9icmFuZCwgd2UgY2FuIGRvIGZvbGxvd2luZyBv
cHRpbWl6YXRpb25zOgorICAgICAgICAgICAgMS4gU3VwcG9ydCBJQyBvbiBMTEludCwgc2luY2Ug
b25jZSBzdG9yZWQgaW4gYSBzdHJ1Y3R1cmUsIHRoZQorICAgICAgICAgICAgICAgcHJpdmF0ZSBi
cmFuZCBpcyBuZXZlciByZW1vdmVkLgorICAgICAgICAgICAgMi4gUmVtb3ZlIHJlZHVuZGFudCBj
aGVja3Mgb24gREZHL0ZUTCBsYXllcnMuCisKKyAgICAgICAgVG8gcHJvcGVybHkgc3RvcmUgdGhl
IHByaXZhdGUgYnJhbmQgb2YgYSBjbGFzcyBvbiBhbGwgT2JqZWN0cywKKyAgICAgICAgaW5jbHVk
aW5nIFByb3hpZXMsIHdlIHVzZSAiQHB1dERpcmVjdEJ5VmFsIi4gVGhpcyBpbnRydWN0aW9uIHB1
dHMKKyAgICAgICAgdmFsdWUgb24gT2JqZWN0J3MgcHJvcGVydGllcyB3aXRob3V0IGV4ZWN1dGlu
ZyBbW1B1dF1dIHNlbWFudGljcy4KKyAgICAgICAgV2l0aCB0aGlzIGRlc2lnbiwgd2UgYXZvaWQg
YWxsb2NhdGluZyBhIGZpZWxkIGZvciBldmVyeSBpbnN0YW5jZQorICAgICAgICBvZiBhIGNsYXNz
LCBzaW5jZSBwcml2YXRlIG1ldGhvZHMgYXJlIHN0b3JlZCBvbiBjbGFzcworICAgICAgICBsZXhp
Y2FsIHNjb3BlLiBFdmVyeSBvYmplY3Qgd2lsbCBoYXZlIHRvIGFsbG9jYXRlIGl0cyBwcml2YXRl
CisgICAgICAgIGJyYW5kIGxpc3QuIFRoaXMgZGVzaWduIGluc2VydHMgbm8gb3ZlcmhlYWQgb24g
b2JqZWN0cyBhbmQgY2xhc3NlcworICAgICAgICB3aXRob3V0IHByaXZhdGUgbWV0aG9kcy9hY2Nl
c3Nvci4KKworICAgICAgICBSZXNvbHZpbmcgY29ycmVjdCBicmFuZCBjaGVjazoKKworICAgICAg
ICBJbiB0aGUgY2FzZSBvZiBzaGFkb3dpbmcgb3IgbmVzdGVkIHNjb3BlLCB3ZSBuZWVkIHRvIGVt
aXQgYnJhbmQKKyAgICAgICAgY2hlY2tzIHRvIHRoZSByaWdodCBwcml2YXRlIGJyYW5kLiBTZWUg
Y29kZSBiZWxvdzoKKworICAgICAgICBgYGAKKyAgICAgICAgY2xhc3MgQyB7CisgICAgICAgICAg
ICAjbSgpIHsgcmV0dXJuIDM7IH0KKyAgICAgICAgICAgIG1ldGhvZCgpIHsgcmV0dXJuIHRoaXMu
I20oKTt9CisKKyAgICAgICAgICAgIEEgPSBjbGFzcyB7CisgICAgICAgICAgICAgICAgI20yKCkg
eyByZXR1cm4gMzsgfQorICAgICAgICAgICAgICAgIGZvbyhvKSB7IHJldHVybiB0aGlzLiNtKCk7
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBgYGAKKworICAgICAgICBUaGUg
Y2FsbCBvZiAiI20iIGluIGBmb29gIHJlZmVycyB0byAiQy4jbSIuIEluIHN1Y2ggY2FzZSwgd2Ug
bmVlZCB0bworICAgICAgICBjaGVjayBDJ3MgcHJpdmF0ZSBicmFuZCwgaW5zdGVhZCBvZiBBJ3Mg
cHJpdmF0ZSBicmFuZC4KKyAgICAgICAgVG8gcGVyZm9ybSB0aGUgcHJvcGVyIGNoZWNrIHdlIGZp
cnN0IHJlc29sdmUgc2NvcGUgb2YgIiNtIiBhbmQgdGhlbgorICAgICAgICBjaGVjayB0aGUgcHJp
dmF0ZSBicmFuZCBvZiB0aGlzIHNjb3BlICh0aGUgc2NvcGUgd2hlcmUgdGhlIHByaXZhdGUKKyAg
ICAgICAgbWV0aG9kIGFuZCBicmFuZCBhcmUgc3RvcmVkIGlzIHRoZSBzYW1lKS4KKyAgICAgICAg
U28gdGhlIGJ5dGVjb2RlIHRvIGxvb2t1cCB0aGUgcmlnaHQgYnJhbmQgaXM6CisKKyAgICAgICAg
YGBgCisgICAgICAgIHJlc29sdmVfc2NvcGUgbG9jMTAsICIjbSIKKyAgICAgICAgZ2V0X2Zyb21f
c2NvcGUgbG9jMTEsIGxvYzEwLCAiQHByaXZhdGVCcmFuZCIKKyAgICAgICAgY2hlY2tfcHJpdmF0
ZV9icmFuZCB0aGlzLCBsb2MxMQorICAgICAgICBnZXRfZnJvbV9zY29wZSBsb2MxMSwgbG9jMTAs
ICIjbSIKKyAgICAgICAgLy8gc2V0dXAgY2FsbCBmcmFtZQorICAgICAgICBjYWxsIGxvYzExLCAu
Li4KKyAgICAgICAgLy8gLi4uCisgICAgICAgIGBgYAorCisgICAgICAgICogYnVpbHRpbnMvQnVp
bHRpbkV4ZWN1dGFibGVzLmNwcDoKKyAgICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpj
cmVhdGVEZWZhdWx0Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpCdWlsdGluRXhlY3V0YWJs
ZXM6OmNyZWF0ZUV4ZWN1dGFibGUpOgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRh
Ymxlcy5oOgorCisgICAgICAgIFdlIGFyZSBhZGRpbmcgYSBuZXcgcGFyYW1ldGVyIGBQcml2YXRl
QnJhbmRSZXF1aXJlbWVudGAgdG8gcHJvcGFnYXRlCisgICAgICAgIHdoZW4gYSBkZWZhdWx0IGNv
bnN0cnVjdG9yIG5lZWRzIHRvIGVtaXQgY29kZSB0byBzZXR1cCBwcml2YXRlIGJyYW5kCisgICAg
ICAgIG9uIGluc3RhbmNlcy4KKworICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgor
CisgICAgICAgIEFkZGluZyBgQGNyZWF0ZVByaXZhdGVTeW1ib2xgIGFuZCBgQHByaXZhdGVCcmFu
ZGAuCisgICAgICAgIGBAY3JlYXRlUHJpdmF0ZVN5bWJvbGAgaXMgdXNlZCBhcyBhIGZ1bmN0aW9u
IHRvIGVuYWJsZSB1cyBhbGxvY2F0ZQorICAgICAgICBQcml2YXRlU3ltYm9scyBhdCBleGVjdXRp
b24gdGltZS4gYEBwcml2YXRlQnJhbmRgIGlzIHRoZSBuYW1lIHdlIHVzZQorICAgICAgICB0byBz
dG9yZSBwcml2YXRlIGJyYW5kIG9uIGNsYXNzJ3Mgc2NvcGUuCisKKyAgICAgICAgKiBieXRlY29k
ZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoK
KyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChK
U0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4
ZWN1dGFibGVJbmZvLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxl
SW5mbyk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpwcml2YXRlQnJhbmRSZXF1aXJl
bWVudCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2spOgorICAg
ICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlu
a2VkQ29kZUJsb2NrOjpwcml2YXRlQnJhbmRSZXF1aXJlbWVudCBjb25zdCk6CisgICAgICAgICog
Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpn
ZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAg
ICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAgICAgICogYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKworICAgICAgICBXZSBjaGFuZ2VkIEJ5dGVj
b2RlR2VuZXJhdG9yIGZvciBGdW5jdGlvbk5vZGUgYW5kIEV2YWxOb2RlIHRvCisgICAgICAgIHBy
b3BhZ2F0ZSBwYXJlbnRTY29wZSBWYXJpYWJsZUVudmlyb25tZW50LiBUaGVzZSBlbnZpcm9ubWVu
dHMgc3RvcmVzCisgICAgICAgIHByaXZhdGUgbmFtZSBlbnRyaWVzIHRoYXQgYXJlIHZpc2libGUg
aW50byB0aGUgc2NvcGUgb2YgdGhlCisgICAgICAgIGZ1bmN0aW9uL2V2YWwgaW4gYWRkaXRpb24g
dG8gVERaIHZhcmlhYmxlcy4KKyAgICAgICAgVGhpcyBpcyByZXF1aXJlZCB0byBpZGVudGlmeSB0
aGUga2luZCBvZiBhY2Nlc3MgYSBwcml2YXRlIG5hbWUgaXMKKyAgICAgICAgcmVmZXJyaW5nIHRv
LCBzaW5jZSBpdCBjYW4gYmUgYSBwcml2YXRlIGZpZWxkIG9yIGEgcHJpdmF0ZSBtZXRob2QuCisg
ICAgICAgIEdpdmVuIHRoaXMgY2hhbmdlLCB3ZSBjaGFuZ2VkIHRoZSBuYW1lIG9mIFZhcmlhYmxl
RW52aXJvbm1lbnQKKyAgICAgICAgZnJvbSBgcGFyZW50U2NvcGVURFpWYXJpYWJsZXNgIHRvIGBw
YXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnRgLgorCisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjppbnN0YW50aWF0ZUxleGljYWxWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdENoZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDcmVhdGVQcml2YXRlQnJhbmQpOgorCisgICAgICAgIFRo
ZSBwcm9jZXNzIHRvIGNyZWF0ZSBhIHByaXZhdGUgYnJhbmQgaXMgYXMgZm9sbG93czoKKyAgICAg
ICAgICAgIDEuIENyZWF0ZSBhIFByaXZhdGVTeW1ib2wgdXNpbmcgYEBjcmVhdGVQcml2YXRlU3lt
Ym9sYC4KKyAgICAgICAgICAgIDIuIFN0b3JlIHRoaXMgc3ltYm9sIGludG8gYSBnaXZlbiBzY29w
ZSAoaS5lIGNsYXNzIGxleGljYWwgc2NvcGUpCisgICAgICAgICAgICAgICBvbiBgQHByaXZhdGVC
cmFuZGAgdmFyaWFibGUuCisKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJ
bnN0YWxsUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRHZXRQcml2YXRlQnJhbmQpOgorCisgICAgICAgIFRoaXMgb3BlcmF0aW9uIGxvb2t1cCBmb3Ig
YEBwcml2YXRlQnJhbmRgIGZyb20gYSBnaXZlbiBzY29wZS4KKworICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6aXNQcml2YXRlTWV0aG9kKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OnB1c2hQcml2YXRlQWNjZXNzTmFtZXMpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6cG9wUHJpdmF0ZUFjY2Vzc05hbWVzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmdldEF2YWlsYWJsZVByaXZhdGVBY2Nlc3NOYW1lcyk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZXRWYXJpYWJsZXNVbmRlclREWik6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdJbnN0YW5jZUZpZWxkSW5pdGlhbGl6
ZXJGdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6
CisKKyAgICAgICAgV2UgYWRkZWQgYG1fcHJpdmF0ZU5hbWVzU3RhY2tgIHRvIEJ5dGVjb2RlR2Vu
ZXJhdG9yIHRvIHJlcHJlc2VudCB0aGUKKyAgICAgICAgc2NvcGUgY2hhaW4gb2YgYXZhaWxhYmxl
IHByaXZhdGUgbmFtZXMgd2hpbGUgZ2VuZXJhdGluZyBieXRlY29kZS4KKworICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgY29uc3QpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6bWFrZUZ1bmN0aW9uKToKKworICAgICAgICBU
aGlzIGNoYW5nZSBpcyByZXF1aXJlZCB0byBwcm9wZXJseSBwcm9wYWdhdGUgUHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQKKyAgICAgICAgdG8gYXJyb3cgZnVuY3Rpb25zIHRoYXQgY2FuIHBvdGVudGlh
bGx5IGNhbGwgc3VwZXIoKS4KKworICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9w
ZXJ0eSk6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjplbWl0R2V0UHJvcGVydHlWYWx1ZSk6
CisKKyAgICAgICAgQWRkaW5nIHN1cHBvcnQgdG8gcHJvcGVybHkgYWNjZXNzIHByaXZhdGUgbWV0
aG9kLiBTaW5jZSB3ZSBzdG9yZQorICAgICAgICBwcml2YXRlIG1ldGhvZHMgb24gY2xhc3MgbGV4
aWNhbCBzY29wZSwgd2UgbmVlZCBhIGRpZmZlcmVudCBzZXQgb2YKKyAgICAgICAgaW5zdHJ1Y3Rp
b25zIHRvIGFjY2VzcyBhIHByaXZhdGUgbWV0aG9kIGluc3RlYWQgb2YgdXNpbmcKKyAgICAgICAg
YGdldF9wcml2YXRlX2ZpZWxkYC4KKworICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6ZW1pdFB1
dFByb3BlcnR5KToKKworICAgICAgICBJbiB0aGUgY2FzZSBvZiB3ZSB0cnlpbmcgdG8gd3JpdGUg
aW4gYSBwcml2YXRlIG1ldGhvZCwgd2UgbmVlZCB0bworICAgICAgICB0aHJvdyBhIFR5cGVFcnJv
ciBhY2NvcmRpbmcgdG8gc3BlY2lmaWNhdGlvbgorICAgICAgICAoaHR0cHM6Ly90YzM5LmVzL3By
b3Bvc2FsLXByaXZhdGUtbWV0aG9kcy8jc2VjLXByaXZhdGVmaWVsZHNldCkuCisKKyAgICAgICAg
KEpTQzo6RnVuY3Rpb25DYWxsVmFsdWVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVn
Z2VyQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1
YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAqIGludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6ZXZhbCk6CisgICAgICAgICog
aml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6
CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9jaGVja19wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKiBsbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAg
ICAgIChKU0M6OkxleGVyPFVDaGFyPjo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKiBwYXJz
ZXIvTm9kZUNvbnN0cnVjdG9ycy5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU5vZGU6OlByb3Bl
cnR5Tm9kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25NZXRhZGF0YU5vZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKToKKyAgICAgICAgKiBwYXJz
ZXIvTm9kZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIu
aDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OmRlY2xhcmVQcml2YXRlTWV0aG9kKToKKyAgICAgICAg
KiBwYXJzZXIvUGFyc2VyTW9kZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvVmFyaWFibGVFbnZpcm9u
bWVudC5jcHA6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6Om1hcmtQcml2YXRl
TmFtZUFzRGVjbGFyZWQpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNs
YXJlUHJpdmF0ZU1ldGhvZCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmRl
Y2xhcmVQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkNvbXBhY3RWYXJpYWJsZUVudmlyb25t
ZW50OjpDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudCk6CisgICAgICAgIChKU0M6OkNvbXBhY3RW
YXJpYWJsZUVudmlyb25tZW50OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q29t
cGFjdFZhcmlhYmxlRW52aXJvbm1lbnQ6OnRvVmFyaWFibGVFbnZpcm9ubWVudCBjb25zdCk6CisK
KyAgICAgICAgV2UgYWRkZWQgc3VwcG9ydCB0byBDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudCBh
bHNvIHN0b3JlIHByaXZhdGUKKyAgICAgICAgbmFtZXMuCisKKyAgICAgICAgKiBwYXJzZXIvVmFy
aWFibGVFbnZpcm9ubWVudC5oOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5Ojppc01l
dGhvZCBjb25zdCk6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6OmlzUHJpdmF0ZUFj
Y2VzcyBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmFkZFByaXZh
dGVOYW1lKToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVByaXZh
dGVNZXRob2QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpoYXNQcml2YXRl
QWNjZXNzIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0NhY2hlZFR5cGVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q2FjaGVkUHJpdmF0ZU5hbWVFbnRyeTo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6
Q2FjaGVkUHJpdmF0ZU5hbWVFbnRyeTo6ZGVjb2RlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2Fj
aGVkU3ltYm9sVGFibGU6OmRlY29kZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZEZ1bmN0
aW9uRXhlY3V0YWJsZVJhcmVEYXRhOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRGdW5j
dGlvbkV4ZWN1dGFibGVSYXJlRGF0YTo6ZGVjb2RlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2Fj
aGVkRnVuY3Rpb25FeGVjdXRhYmxlOjpwcml2YXRlQnJhbmRSZXF1aXJlbWVudCBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkNhY2hlZENvZGVCbG9jazo6cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgY29u
c3QpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2sp
OgorICAgICAgICAoSlNDOjpDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmVuY29kZSk6CisgICAg
ICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSk6CisgICAgICAgIChKU0M6OkNhY2hlZENvZGVCbG9jazxDb2RlQmxvY2tUeXBlPjo6
ZW5jb2RlKToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6
OkNvZGVDYWNoZTo6Z2V0VW5saW5rZWRHbG9iYWxGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAg
ICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmg6CisgICAgICAgIChKU0M6OnByaXZhdGVCcmFuZFJlcXVp
cmVtZW50KToKKyAgICAgICAgKEpTQzo6cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ8RGlyZWN0RXZh
bEV4ZWN1dGFibGU+KToKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0lt
cGwpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpT
Qzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6
CisgICAgICAgICogcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChK
U0M6OkRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpEaXJlY3RF
dmFsRXhlY3V0YWJsZTo6RGlyZWN0RXZhbEV4ZWN1dGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUv
RGlyZWN0RXZhbEV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0V2YWxFeGVjdXRhYmxl
Lmg6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpleGVjdXRhYmxlSW5mbyBjb25zdCk6
CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpwcml2YXRlQnJhbmRSZXF1aXJlbWVudCBj
b25zdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OmNyZWF0ZVByaXZhdGVTeW1ib2wpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU1Njb3BlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNT
Y29wZTo6Y29sbGVjdENsb3N1cmVWYXJpYWJsZXNVbmRlclREWik6CisgICAgICAgICogcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTU3ltYm9sVGFibGVPYmpl
Y3Q6OnNldFN5bWJvbFRhYmxlKToKKyAgICAgICAgKiBydW50aW1lL01vZHVsZVByb2dyYW1FeGVj
dXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6CisgICAgICAgICogcnVudGlt
ZS9Qcm9ncmFtRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sLmNwcDoKKyAg
ICAgICAgKEpTQzo6U3ltYm9sOjpjcmVhdGVQcml2YXRlKToKKyAgICAgICAgKiBydW50aW1lL1N5
bWJvbC5oOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuY3BwOgorICAgICAgICAoSlND
OjpTeW1ib2xUYWJsZTo6Y2xvbmVTY29wZVBhcnQpOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9s
VGFibGUuaDoKKwogMjAxOC0xMS0wMiAgWGFuIEzDs3BleiAgPHhhbkBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtKU0NdIEFkZCBzdXBwb3J0IGZvciBjbGFzcyBmaWVsZHMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKaW5kZXgg
YzhjNWExMDAxODIuLmI4MTQ5N2VkNjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcApAQCAtNTgsMTQgKzU4LDE0IEBA
IFNvdXJjZUNvZGUgQnVpbHRpbkV4ZWN1dGFibGVzOjpkZWZhdWx0Q29uc3RydWN0b3JTb3VyY2VD
b2RlKENvbnN0cnVjdG9yS2luZCBjb25zCiAgICAgcmV0dXJuIFNvdXJjZUNvZGUoKTsKIH0KIAot
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRGVm
YXVsdENvbnN0cnVjdG9yKENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElk
ZW50aWZpZXImIG5hbWUsIENsYXNzRmllbGRzSW5pdGlhbGl6ZXIgY2xhc3NGaWVsZHNJbml0aWFs
aXplcikKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNy
ZWF0ZURlZmF1bHRDb25zdHJ1Y3RvcihDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBj
b25zdCBJZGVudGlmaWVyJiBuYW1lLCBDbGFzc0ZpZWxkc0luaXRpYWxpemVyIGNsYXNzRmllbGRz
SW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVt
ZW50KQogewogICAgIHN3aXRjaCAoY29uc3RydWN0b3JLaW5kKSB7CiAgICAgY2FzZSBDb25zdHJ1
Y3RvcktpbmQ6Ok5vbmU6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29uc3RydWN0b3JLaW5k
OjpCYXNlOgogICAgIGNhc2UgQ29uc3RydWN0b3JLaW5kOjpFeHRlbmRzOgotICAgICAgICByZXR1
cm4gY3JlYXRlRXhlY3V0YWJsZShtX3ZtLCBkZWZhdWx0Q29uc3RydWN0b3JTb3VyY2VDb2RlKGNv
bnN0cnVjdG9yS2luZCksIG5hbWUsIGNvbnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJpbGl0eTo6
Q2FuQ29uc3RydWN0LCBjbGFzc0ZpZWxkc0luaXRpYWxpemVyKTsKKyAgICAgICAgcmV0dXJuIGNy
ZWF0ZUV4ZWN1dGFibGUobV92bSwgZGVmYXVsdENvbnN0cnVjdG9yU291cmNlQ29kZShjb25zdHJ1
Y3RvcktpbmQpLCBuYW1lLCBjb25zdHJ1Y3RvcktpbmQsIENvbnN0cnVjdEFiaWxpdHk6OkNhbkNv
bnN0cnVjdCwgY2xhc3NGaWVsZHNJbml0aWFsaXplciwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQp
OwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTgxLDcgKzgxLDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUJ1aWx0
aW5FeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgY28KICAgICByZXR1cm4gQnVp
bHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKHZtLCBjb2RlLCBuYW1lLCBDb25zdHJ1
Y3RvcktpbmQ6Ok5vbmUsIGNvbnN0cnVjdEFiaWxpdHksIENsYXNzRmllbGRzSW5pdGlhbGl6ZXI6
Ok5vdE5lZWRlZCk7CiB9CiAKLVVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhl
Y3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rvcktp
bmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgQ2xhc3NGaWVsZHNJbml0aWFs
aXplciBjbGFzc0ZpZWxkc0luaXRpYWxpemVyKQorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgQ29uc3RydWN0b3JLaW5kIGNv
bnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBDbGFzc0Zp
ZWxkc0luaXRpYWxpemVyIGNsYXNzRmllbGRzSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVp
cmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KQogewogICAgIC8vIEZJWE1FOiBDYW4gd2Ug
anVzdCBtYWtlIE1ldGFEYXRhIGNvbXB1dGF0aW9uIGJlIGNvbnN0ZXhwciBhbmQgaGF2ZSB0aGUg
Y29tcGlsZXIgZG8gdGhpcyBmb3IgdXM/CiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MzI3MgpAQCAtMjU0LDcgKzI1NCw3IEBAIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUoVk0mIHZt
LCBjb25zdCBTCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNy
ZWF0ZSgmdm0sIHNvdXJjZSwgJm1ldGFkYXRhLCBraW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBKU1Bh
cnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIFdURjo6bnVsbG9wdCwgRGVyaXZlZENvbnRleHRUeXBl
OjpOb25lLCBjbGFzc0ZpZWxkc0luaXRpYWxpemVyLCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25z
dHJ1Y3Rvcik7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0
YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsICZt
ZXRhZGF0YSwga2luZCwgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFz
c2ljLCBXVEY6Om51bGxvcHQsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgY2xhc3NGaWVsZHNJ
bml0aWFsaXplciwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGlzQnVpbHRpbkRlZmF1bHRDbGFz
c0NvbnN0cnVjdG9yKTsKICAgICByZXR1cm4gZnVuY3Rpb25FeGVjdXRhYmxlOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgK
aW5kZXggMTc0YzRiMTlmYzIuLjJmM2QxMzBhMjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCkBAIC01OCwxMCArNTgsMTAg
QEAgU291cmNlQ29kZSBuYW1lIyNTb3VyY2UoKTsKICN1bmRlZiBFWFBPU0VfQlVJTFRJTl9FWEVD
VVRBQkxFUwogCiAgICAgc3RhdGljIFNvdXJjZUNvZGUgZGVmYXVsdENvbnN0cnVjdG9yU291cmNl
Q29kZShDb25zdHJ1Y3RvcktpbmQpOwotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBj
cmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoQ29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVy
JiBuYW1lLCBDbGFzc0ZpZWxkc0luaXRpYWxpemVyKTsKLQotICAgIHN0YXRpYyBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlRXhlY3V0YWJsZShWTSYsIGNvbnN0IFNvdXJjZUNvZGUm
LCBjb25zdCBJZGVudGlmaWVyJiwgQ29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBD
bGFzc0ZpZWxkc0luaXRpYWxpemVyKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yKENvbnN0cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmll
ciYgbmFtZSwgQ2xhc3NGaWVsZHNJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQp
OwogCisgICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVFeGVjdXRh
YmxlKFZNJiwgY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXImLCBDb25zdHJ1Y3Rv
cktpbmQsIENvbnN0cnVjdEFiaWxpdHksIENsYXNzRmllbGRzSW5pdGlhbGl6ZXIsIFByaXZhdGVC
cmFuZFJlcXVpcmVtZW50ID0gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmUpOworICAgIAog
ICAgIHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRleCBkYTM3ZjFlNmQz
Ni4uNTZjMjQ2ZTdjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9CdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVp
bHRpbk5hbWVzLmgKQEAgLTcyLDYgKzcyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8o
Z2V0T3duUHJvcGVydHlOYW1lcykgXAogICAgIG1hY3JvKG93bktleXMpIFwKICAgICBtYWNybyhT
ZXQpIFwKKyAgICBtYWNybyhjcmVhdGVQcml2YXRlU3ltYm9sKSBcCiAgICAgbWFjcm8odHlwZWRB
cnJheUxlbmd0aCkgXAogICAgIG1hY3JvKHR5cGVkQXJyYXlTb3J0KSBcCiAgICAgbWFjcm8odHlw
ZWRBcnJheUdldE9yaWdpbmFsQ29uc3RydWN0b3IpIFwKQEAgLTE3OSw2ICsxODAsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBtYWNybyhtZXRhKSBcCiAgICAgbWFjcm8od2ViQXNzZW1ibHlDb21w
aWxlU3RyZWFtaW5nSW50ZXJuYWwpIFwKICAgICBtYWNybyh3ZWJBc3NlbWJseUluc3RhbnRpYXRl
U3RyZWFtaW5nSW50ZXJuYWwpIFwKKyAgICBtYWNybyhwcml2YXRlQnJhbmQpIFwKICAgICBtYWNy
byhpbnN0YW5jZUZpZWxkSW5pdGlhbGl6ZXIpCiAKIG5hbWVzcGFjZSBTeW1ib2xzIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IDBlYTNm
NzFlM2E5Li5lN2Y3OGM4ZDljNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC01MDMsNiArNTAzLDEyIEBAIG9wIDpnZXRfYnlfdmFsLAog
ICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKICAgICB9CiAKK29wIDpjaGVja19w
cml2YXRlX2JyYW5kLAorICAgIGFyZ3M6IHsKKyAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVy
LAorICAgICAgICBicmFuZDogVmlydHVhbFJlZ2lzdGVyLAorICAgIH0KKwogb3AgOnB1dF9ieV92
YWwsCiAgICAgYXJnczogewogICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCmluZGV4IDEyNGYy
OTcxMGQ2Li41YTAyZWVkMjI1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTI1Niw2ICsyNTYsNyBAQCB2b2lkIGNvbXB1dGVVc2Vz
Rm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIGNv
bnN0IElucwogICAgIFVTRVMoT3BBZGRQcml2YXRlRmllbGQsIGJhc2UsIHZhbHVlLCBzY29wZSkK
ICAgICBVU0VTKE9wR2V0UHJpdmF0ZUZpZWxkLCBiYXNlLCBzY29wZSkKICAgICBVU0VTKE9wUHV0
UHJpdmF0ZUZpZWxkLCBiYXNlLCB2YWx1ZSwgc2NvcGUpCisgICAgVVNFUyhPcENoZWNrUHJpdmF0
ZUJyYW5kLCBiYXNlLCBicmFuZCkKIAogICAgIGNhc2Ugb3BfbmV3X2FycmF5X3dpdGhfc3ByZWFk
OgogICAgICAgICBoYW5kbGVOZXdBcnJheUxpa2UoaW5zdHJ1Y3Rpb24tPmFzPE9wTmV3QXJyYXlX
aXRoU3ByZWFkPigpKTsKQEAgLTM1Nyw2ICszNTgsNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0
ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIGNvbnN0IElu
cwogICAgIGNhc2Ugb3Bfc3VwZXJfc2FtcGxlcl9lbmQ6CiAgICAgY2FzZSBvcF9hZGRfcHJpdmF0
ZV9maWVsZDoKICAgICBjYXNlIG9wX3B1dF9wcml2YXRlX2ZpZWxkOgorICAgIGNhc2Ugb3BfY2hl
Y2tfcHJpdmF0ZV9icmFuZDoKICNkZWZpbmUgTExJTlRfSEVMUEVSX09QQ09ERVMob3Bjb2RlLCBs
ZW5ndGgpIGNhc2Ugb3Bjb2RlOgogICAgICAgICBGT1JfRUFDSF9MTElOVF9PUENPREVfRVhURU5T
SU9OKExMSU5UX0hFTFBFUl9PUENPREVTKTsKICN1bmRlZiBMTElOVF9IRUxQRVJfT1BDT0RFUwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZv
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAppbmRl
eCA0NjU5NGRhMGNiNC4uZjhkNjRiNTVkY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0zNiwxMCArMzYsMTEgQEAgZW51bSBjbGFz
cyBDbGFzc0ZpZWxkc0luaXRpYWxpemVyIDogdWludDhfdCB7IE5vdE5lZWRlZCwgTmVlZGVkIH07
CiAvLyBGSVhNRTogVGhlc2UgZmxhZ3MsIFBhcnNlck1vZGVzIGFuZCBwcm9wYWdhdGlvbiB0byBY
WFhDb2RlQmxvY2tzIHNob3VsZCBiZSByZW9yZ2FuaXplZC4KIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDcKIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7Ci0g
ICAgRXhlY3V0YWJsZUluZm8oYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1vZGUsIGJvb2wg
aXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JLaW5kIGNv
bnN0cnVjdG9yS2luZCwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIFN1cGVyQmluZGlu
ZyBzdXBlckJpbmRpbmcsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIERlcml2ZWRDb250ZXh0
VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIENsYXNzRmllbGRzSW5pdGlhbGl6ZXIgY2xhc3NGaWVs
ZHNJbml0aWFsaXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzQ2xhc3ND
b250ZXh0LCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKQorICAgIEV4ZWN1dGFibGVJ
bmZvKGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNTdHJpY3RNb2RlLCBib29sIGlzQ29uc3RydWN0b3Is
IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29sIGlz
QnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBKU1BhcnNl
clNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgU291cmNl
UGFyc2VNb2RlIHBhcnNlTW9kZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlw
ZSwgQ2xhc3NGaWVsZHNJbml0aWFsaXplciBjbGFzc0ZpZWxkc0luaXRpYWxpemVyLCBib29sIGlz
QXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNDbGFzc0NvbnRleHQsIEV2YWxDb250ZXh0VHlw
ZSBldmFsQ29udGV4dFR5cGUpCiAgICAgICAgIDogbV91c2VzRXZhbCh1c2VzRXZhbCkKICAgICAg
ICAgLCBtX2lzU3RyaWN0TW9kZShpc1N0cmljdE1vZGUpCiAgICAgICAgICwgbV9pc0NvbnN0cnVj
dG9yKGlzQ29uc3RydWN0b3IpCisgICAgICAgICwgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4ocHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpKQogICAgICAgICAs
IG1faXNCdWlsdGluRnVuY3Rpb24oaXNCdWlsdGluRnVuY3Rpb24pCiAgICAgICAgICwgbV9jb25z
dHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCiAgICAg
ICAgICwgbV9zdXBlckJpbmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykp
CkBAIC01OSw2ICs2MCw3IEBAIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiAgICAgYm9vbCB1c2Vz
RXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KICAgICBib29sIGlzU3RyaWN0TW9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9vbCBpc0NvbnN0cnVj
dG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnN0cnVjdG9yOyB9CisgICAgUHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxQcml2YXRlQnJhbmRSZXF1aXJlbWVudD4obV9wcml2YXRlQnJhbmRSZXF1aXJlbWVu
dCk7IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1
aWx0aW5GdW5jdGlvbjsgfQogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JL
aW5kKTsgfQogICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxTdXBlckJpbmRpbmc+KG1fc3VwZXJCaW5kaW5nKTsgfQpAQCAtNzQsNiArNzYs
NyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fdXNlc0V2YWwgOiAxOwogICAgIHVuc2lnbmVk
IG1faXNTdHJpY3RNb2RlIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQ29uc3RydWN0b3IgOiAxOwor
ICAgIHVuc2lnbmVkIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgOiAxOwogICAgIHVuc2lnbmVk
IG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5k
IDogMjsKICAgICB1bnNpZ25lZCBtX3N1cGVyQmluZGluZyA6IDE7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCAxNGU2
MmZiOWY4YS4uOTlhOWRjNTY4OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtNjksNiArNjksNyBAQCBVbmxpbmtl
ZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgQ29kZVR5cGUgY29kZQogICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGluZm8uY29uc3RydWN0b3JLaW5kKCkpKQogICAgICwgbV9kZXJpdmVkQ29udGV4dFR5
cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uZGVyaXZlZENvbnRleHRUeXBlKCkpKQogICAg
ICwgbV9jbGFzc0ZpZWxkc0luaXRpYWxpemVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmZvLmNs
YXNzRmllbGRzSW5pdGlhbGl6ZXIoKSkpCisgICAgLCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmZvLnByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkpKQog
ICAgICwgbV9ldmFsQ29udGV4dFR5cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uZXZhbENv
bnRleHRUeXBlKCkpKQogICAgICwgbV9jb2RlVHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29k
ZVR5cGUpKQogICAgICwgbV9kaWRPcHRpbWl6ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTWl4ZWRU
cmlTdGF0ZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5oCmluZGV4IGUxNTQ0Y2NmMDZlLi4wMDQwOTczOGNiZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTEx
Niw2ICsxMTYsNyBAQCBwdWJsaWM6CiAgICAgZW51bSB7IENhbGxGdW5jdGlvbiwgQXBwbHlGdW5j
dGlvbiB9OwogCiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc0Nv
bnN0cnVjdG9yOyB9CisgICAgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxQcml2YXRlQnJhbmRSZXF1aXJl
bWVudD4obV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7IH0KICAgICBib29sIGlzU3RyaWN0TW9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9vbCB1c2VzRXZhbCgp
IGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VN
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1vZGU7IH0KQEAgLTQzMCw2ICs0MzEsNyBAQCBw
cml2YXRlOgogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKICAgICB1bnNpZ25l
ZCBtX2Rlcml2ZWRDb250ZXh0VHlwZSA6IDI7CiAgICAgdW5zaWduZWQgbV9jbGFzc0ZpZWxkc0lu
aXRpYWxpemVyIDogMTsKKyAgICB1bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDog
MTsKICAgICB1bnNpZ25lZCBtX2V2YWxDb250ZXh0VHlwZSA6IDI7CiAgICAgdW5zaWduZWQgbV9j
b2RlVHlwZSA6IDI7CiAgICAgdW5zaWduZWQgbV9kaWRPcHRpbWl6ZSA6IDI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlLmNwcAppbmRleCBmMjVhOWZmNDMwYi4uZDk3ZTg5N2M1MjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlLmNwcApAQCAtNzIsMTAgKzcyLDEwIEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAKICAgICBi
b29sIGlzQ2xhc3NDb250ZXh0ID0gZXhlY3V0YWJsZS0+c3VwZXJCaW5kaW5nKCkgPT0gU3VwZXJC
aW5kaW5nOjpOZWVkZWQ7CiAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQg
PSBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUoJnZtLCBGdW5jdGlvbkNvZGUsIEV4
ZWN1dGFibGVJbmZvKGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2Rl
KCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVp
bHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgc2NyaXB0TW9kZSwg
ZXhlY3V0YWJsZS0+c3VwZXJCaW5kaW5nKCksIHBhcnNlTW9kZSwgZXhlY3V0YWJsZS0+ZGVyaXZl
ZENvbnRleHRUeXBlKCksIGV4ZWN1dGFibGUtPmNsYXNzRmllbGRzSW5pdGlhbGl6ZXIoKSwgZmFs
c2UsIGlzQ2xhc3NDb250ZXh0LCBFdmFsQ29udGV4dFR5cGU6OkZ1bmN0aW9uRXZhbENvbnRleHQp
LCBjb2RlR2VuZXJhdGlvbk1vZGUpOworICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJl
c3VsdCA9IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSgmdm0sIEZ1bmN0aW9uQ29k
ZSwgRXhlY3V0YWJsZUluZm8oZnVuY3Rpb24tPnVzZXNFdmFsKCksIGZ1bmN0aW9uLT5pc1N0cmlj
dE1vZGUoKSwga2luZCA9PSBDb2RlRm9yQ29uc3RydWN0LCBleGVjdXRhYmxlLT5wcml2YXRlQnJh
bmRSZXF1aXJlbWVudCgpLCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24s
IGV4ZWN1dGFibGUtPmNvbnN0cnVjdG9yS2luZCgpLCBzY3JpcHRNb2RlLCBleGVjdXRhYmxlLT5z
dXBlckJpbmRpbmcoKSwgcGFyc2VNb2RlLCBleGVjdXRhYmxlLT5kZXJpdmVkQ29udGV4dFR5cGUo
KSwgZXhlY3V0YWJsZS0+Y2xhc3NGaWVsZHNJbml0aWFsaXplcigpLCBmYWxzZSwgaXNDbGFzc0Nv
bnRleHQsIEV2YWxDb250ZXh0VHlwZTo6RnVuY3Rpb25FdmFsQ29udGV4dCksIGNvZGVHZW5lcmF0
aW9uTW9kZSk7CiAKLSAgICBWYXJpYWJsZUVudmlyb25tZW50IHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzID0gZXhlY3V0YWJsZS0+cGFyZW50U2NvcGVURFpWYXJpYWJsZXMoKTsKLSAgICBlcnJvciA9
IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSh2bSwgZnVuY3Rpb24uZ2V0KCksIHNvdXJjZSwg
cmVzdWx0LCBjb2RlR2VuZXJhdGlvbk1vZGUsICZwYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7Cisg
ICAgVmFyaWFibGVFbnZpcm9ubWVudCBwYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQgPSBl
eGVjdXRhYmxlLT5wYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQoKTsKKyAgICBlcnJvciA9
IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSh2bSwgZnVuY3Rpb24uZ2V0KCksIHNvdXJjZSwg
cmVzdWx0LCBjb2RlR2VuZXJhdGlvbk1vZGUsICZwYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1l
bnQpOwogCiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC04Myw3ICs4Myw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5l
cmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZN
KiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHBhcmVudFNvdXJj
ZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGtpbmQs
IENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNj
cmlwdE1vZGUsIE9wdGlvbmFsPENvbXBhY3RWYXJpYWJsZU1hcDo6SGFuZGxlPiBwYXJlbnRTY29w
ZVREWlZhcmlhYmxlcywgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgQ2xh
c3NGaWVsZHNJbml0aWFsaXplciBjbGFzc0ZpZWxkc0luaXRpYWxpemVyLCBib29sIGlzQnVpbHRp
bkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKQorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNv
bnN0IFNvdXJjZUNvZGUmIHBhcmVudFNvdXJjZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUs
IFVubGlua2VkRnVuY3Rpb25LaW5kIGtpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJp
bGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIE9wdGlvbmFsPENvbXBhY3RWYXJp
YWJsZU1hcDo6SGFuZGxlPiBwYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQsIERlcml2ZWRD
b250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIENsYXNzRmllbGRzSW5pdGlhbGl6ZXIgY2xh
c3NGaWVsZHNJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQsIGJvb2wgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IpCiAgICAg
OiBCYXNlKCp2bSwgc3RydWN0dXJlKQogICAgICwgbV9maXJzdExpbmVPZmZzZXQobm9kZS0+Zmly
c3RMaW5lKCkgLSBwYXJlbnRTb3VyY2UuZmlyc3RMaW5lKCkub25lQmFzZWRJbnQoKSkKICAgICAs
IG1faXNJblN0cmljdENvbnRleHQobm9kZS0+aXNJblN0cmljdENvbnRleHQoKSkKQEAgLTEwMSw2
ICsxMDEsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUoVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdAogICAgICwgbV9zdXBlckJpbmRpbmco
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPnN1cGVyQmluZGluZygpKSkKICAgICAsIG1fcGFy
YW1ldGVyc1N0YXJ0T2Zmc2V0KG5vZGUtPnBhcmFtZXRlcnNTdGFydCgpKQogICAgICwgbV9jbGFz
c0ZpZWxkc0luaXRpYWxpemVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjbGFzc0ZpZWxkc0luaXRp
YWxpemVyKSkKKyAgICAsIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KSkKICAgICAsIG1faXNDYWNoZWQoZmFsc2Up
CiAgICAgLCBtX3R5cGVQcm9maWxpbmdTdGFydE9mZnNldChub2RlLT5mdW5jdGlvbktleXdvcmRT
dGFydCgpKQogICAgICwgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KG5vZGUtPnN0YXJ0U3RhcnRP
ZmZzZXQoKSArIG5vZGUtPnNvdXJjZSgpLmxlbmd0aCgpIC0gMSkKQEAgLTEyMywxMiArMTI0LDEz
IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0CiAgICAgQVNTRVJUKG1fc2NyaXB0TW9kZSA9PSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oc2NyaXB0TW9kZSkpOwogICAgIEFTU0VSVChtX3N1cGVyQmlu
ZGluZyA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+c3VwZXJCaW5kaW5nKCkpKTsKICAg
ICBBU1NFUlQobV9kZXJpdmVkQ29udGV4dFR5cGUgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRl
cml2ZWRDb250ZXh0VHlwZSkpOworICAgIEFTU0VSVChtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50
ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihwcml2YXRlQnJhbmRSZXF1aXJlbWVudCkpOwogICAg
IEFTU0VSVCghKG1faXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IgJiYgY29uc3RydWN0
b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lKSk7CiAgICAgQVNTRVJUKCFtX2NsYXNz
RmllbGRzSW5pdGlhbGl6ZXIgfHwgKGlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCkgfHwgZGVy
aXZlZENvbnRleHRUeXBlID09IERlcml2ZWRDb250ZXh0VHlwZTo6RGVyaXZlZENvbnN0cnVjdG9y
Q29udGV4dCkpOwogICAgIGlmICghbm9kZS0+Y2xhc3NTb3VyY2UoKS5pc051bGwoKSkKICAgICAg
ICAgc2V0Q2xhc3NTb3VyY2Uobm9kZS0+Y2xhc3NTb3VyY2UoKSk7Ci0gICAgaWYgKHBhcmVudFNj
b3BlVERaVmFyaWFibGVzKQotICAgICAgICBlbnN1cmVSYXJlRGF0YSgpLm1fcGFyZW50U2NvcGVU
RFpWYXJpYWJsZXMgPSBXVEZNb3ZlKCpwYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CisgICAgaWYg
KHBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCkKKyAgICAgICAgZW5zdXJlUmFyZURhdGEo
KS5tX3BhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCA9IFdURk1vdmUoKnBhcmVudFNjb3Bl
VmFyaWFibGVFbnZpcm9ubWVudCk7CiB9CiAKIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp+
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCA3
NDJkYTJmMGUxZC4uYjI3NzJkMjZmYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCkBAIC02OSwx
MCArNjksMTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gJnZtLnVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlU3BhY2Uuc3BhY2U7CiAgICAgfQogCi0gICAgc3RhdGljIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiBjcmVhdGUoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1
bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1
bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNj
cmlwdE1vZGUgc2NyaXB0TW9kZSwgT3B0aW9uYWw8Q29tcGFjdFZhcmlhYmxlTWFwOjpIYW5kbGU+
IHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRl
eHRUeXBlLCBDbGFzc0ZpZWxkc0luaXRpYWxpemVyIGNsYXNzRmllbGRzSW5pdGlhbGl6ZXIsIGJv
b2wgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IgPSBmYWxzZSkKKyAgICBzdGF0aWMg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25L
aW5kIHVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxp
dHksIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBPcHRpb25hbDxDb21wYWN0VmFyaWFi
bGVNYXA6OkhhbmRsZT4gcGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50LCBEZXJpdmVkQ29u
dGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBDbGFzc0ZpZWxkc0luaXRpYWxpemVyIGNsYXNz
RmllbGRzSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJl
cXVpcmVtZW50LCBib29sIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yID0gZmFsc2Up
CiAgICAgewogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFuY2UgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0t
PmhlYXApKQotICAgICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHZtLT51
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgc291cmNlLCBub2RlLCB1
bmxpbmtlZEZ1bmN0aW9uS2luZCwgY29uc3RydWN0QWJpbGl0eSwgc2NyaXB0TW9kZSwgV1RGTW92
ZShwYXJlbnRTY29wZVREWlZhcmlhYmxlcyksIGRlcml2ZWRDb250ZXh0VHlwZSwgY2xhc3NGaWVs
ZHNJbml0aWFsaXplciwgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IpOworICAgICAg
ICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHZtLT51bmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgc291cmNlLCBub2RlLCB1bmxpbmtlZEZ1bmN0aW9u
S2luZCwgY29uc3RydWN0QWJpbGl0eSwgc2NyaXB0TW9kZSwgV1RGTW92ZShwYXJlbnRTY29wZVZh
cmlhYmxlRW52aXJvbm1lbnQpLCBkZXJpdmVkQ29udGV4dFR5cGUsIGNsYXNzRmllbGRzSW5pdGlh
bGl6ZXIsIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25z
dHJ1Y3Rvcik7CiAgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbigqdm0pOwogICAgICAg
ICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpAQCAtMTQyLDYgKzE0Miw4IEBAIHB1YmxpYzoKICAg
ICBDb2RlRmVhdHVyZXMgZmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzOyB9CiAg
ICAgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ2FwdHVy
ZWRWYXJpYWJsZXM7IH0KIAorICAgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQ+KG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOyB9CisKICAgICBzdGF0aWMgY29u
c3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95
KEpTQ2VsbCopOwogCkBAIC0xNTcsMTEgKzE1OSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biAhbV9yYXJlRGF0YS0+bV9jbGFzc1NvdXJjZS5pc051bGwoKTsKICAgICB9CiAKLSAgICBWYXJp
YWJsZUVudmlyb25tZW50IHBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkgY29uc3QKKyAgICBWYXJp
YWJsZUVudmlyb25tZW50IHBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCgpIGNvbnN0CiAg
ICAgewotICAgICAgICBpZiAoIW1fcmFyZURhdGEgfHwgIW1fcmFyZURhdGEtPm1fcGFyZW50U2Nv
cGVURFpWYXJpYWJsZXMpCisgICAgICAgIGlmICghbV9yYXJlRGF0YSB8fCAhbV9yYXJlRGF0YS0+
bV9wYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQpCiAgICAgICAgICAgICByZXR1cm4gVmFy
aWFibGVFbnZpcm9ubWVudCgpOwotICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9wYXJlbnRT
Y29wZVREWlZhcmlhYmxlcy5lbnZpcm9ubWVudCgpLnRvVmFyaWFibGVFbnZpcm9ubWVudCgpOwor
ICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9wYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1l
bnQuZW52aXJvbm1lbnQoKS50b1ZhcmlhYmxlRW52aXJvbm1lbnQoKTsKICAgICB9CiAgICAgCiAg
ICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBpc0Fycm93RnVuY3Rpb25Q
YXJzZU1vZGUocGFyc2VNb2RlKCkpOyB9CkBAIC0xOTcsNyArMTk5LDcgQEAgcHVibGljOgogICAg
ICAgICBTb3VyY2VDb2RlIG1fY2xhc3NTb3VyY2U7CiAgICAgICAgIFN0cmluZyBtX3NvdXJjZVVS
TERpcmVjdGl2ZTsKICAgICAgICAgU3RyaW5nIG1fc291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZTsK
LSAgICAgICAgQ29tcGFjdFZhcmlhYmxlTWFwOjpIYW5kbGUgbV9wYXJlbnRTY29wZVREWlZhcmlh
YmxlczsKKyAgICAgICAgQ29tcGFjdFZhcmlhYmxlTWFwOjpIYW5kbGUgbV9wYXJlbnRTY29wZVZh
cmlhYmxlRW52aXJvbm1lbnQ7CiAgICAgICAgIFZlY3RvcjxKU1RleHRQb3NpdGlvbj4gbV9pbnN0
YW5jZUZpZWxkTG9jYXRpb25zOwogICAgIH07CiAKQEAgLTIxOCw3ICsyMjAsNyBAQCBwdWJsaWM6
CiAgICAgfQogCiBwcml2YXRlOgotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiwg
U3RydWN0dXJlKiwgY29uc3QgU291cmNlQ29kZSYsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgVW5s
aW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZSwg
T3B0aW9uYWw8Q29tcGFjdFZhcmlhYmxlTWFwOjpIYW5kbGU+LCAgSlNDOjpEZXJpdmVkQ29udGV4
dFR5cGUsIEpTQzo6Q2xhc3NGaWVsZHNJbml0aWFsaXplciwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0
Q2xhc3NDb25zdHJ1Y3Rvcik7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBT
dHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBVbmxp
bmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlLCBP
cHRpb25hbDxDb21wYWN0VmFyaWFibGVNYXA6OkhhbmRsZT4sICBKU0M6OkRlcml2ZWRDb250ZXh0
VHlwZSwgSlNDOjpDbGFzc0ZpZWxkc0luaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVu
dCwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3Rvcik7CiAgICAgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUoRGVjb2RlciYsIGNvbnN0IENhY2hlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSYpOwogCiAgICAgdm9pZCBkZWNvZGVDYWNoZWRDb2RlQmxvY2tzKFZNJik7CkBAIC0yNDYsNiAr
MjQ4LDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX3N1cGVyQmluZGluZyA6IDE7CiAgICAg
dW5zaWduZWQgbV9wYXJhbWV0ZXJzU3RhcnRPZmZzZXQgOiAzMTsKICAgICB1bnNpZ25lZCBtX2Ns
YXNzRmllbGRzSW5pdGlhbGl6ZXIgOiAxOworICAgIHVuc2lnbmVkIG1fcHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQgOiAxOwogICAgIHVuc2lnbmVkIG1faXNDYWNoZWQgOiAxOwogICAgIHVuc2lnbmVk
IG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0OwogICAgIHVuc2lnbmVkIG1fdHlwZVByb2ZpbGlu
Z0VuZE9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggZDMxYzcxMTg2OGUuLmJkNTc5OGFmN2Fh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMzI4LDcgKzMyOCw3IEBAIFBhcnNlckVycm9yIEJ5dGVj
b2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgcmV0dXJuIFBhcnNlckVycm9yKFBhcnNlckVy
cm9yOjpFcnJvck5vbmUpOwogfQogCi1CeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0
b3IoVk0mIHZtLCBQcm9ncmFtTm9kZSogcHJvZ3JhbU5vZGUsIFVubGlua2VkUHJvZ3JhbUNvZGVC
bG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJh
dGlvbk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzKQorQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3Jh
bU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaywg
T3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBW
YXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQpCiAgICAg
OiBtX2NvZGVHZW5lcmF0aW9uTW9kZShjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAgLCBtX3Njb3Bl
Tm9kZShwcm9ncmFtTm9kZSkKICAgICAsIG1fY29kZUJsb2NrKHZtLCBjb2RlQmxvY2spCkBAIC0z
MzcsNyArMzM3LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2
bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxpbmtlZFAKICAgICAsIG1fdm0oJnZtKQog
ICAgICwgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQocHJvZ3JhbU5vZGUtPnVz
ZXNBcnJvd0Z1bmN0aW9uKCkgfHwgcHJvZ3JhbU5vZGUtPnVzZXNFdmFsKCkpCiB7Ci0gICAgQVNT
RVJUX1VOVVNFRChwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgIXBhcmVudFNjb3BlVERaVmFyaWFi
bGVzLT5zaXplKCkpOworICAgIEFTU0VSVF9VTlVTRUQocGFyZW50U2NvcGVWYXJpYWJsZUVudmly
b25tZW50LCAhcGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50LT5zaXplKCkpOwogCiAgICAg
Zm9yIChhdXRvJiBjb25zdGFudFJlZ2lzdGVyIDogbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJz
KQogICAgICAgICBjb25zdGFudFJlZ2lzdGVyID0gbnVsbHB0cjsKQEAgLTM3NCw3ICszNzQsNyBA
QCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBQcm9ncmFtTm9k
ZSogcHJvZ3JhbU5vZGUsIFVubGlua2VkUAogICAgIH0KIH0KIAotQnl0ZWNvZGVHZW5lcmF0b3I6
OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0
aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBw
YXJlbnRTY29wZVREWlZhcmlhYmxlcykKK0J5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVy
YXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVH
ZW5lcmF0aW9uTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVWYXJp
YWJsZUVudmlyb25tZW50KQogICAgIDogbV9jb2RlR2VuZXJhdGlvbk1vZGUoY29kZUdlbmVyYXRp
b25Nb2RlKQogICAgICwgbV9zY29wZU5vZGUoZnVuY3Rpb25Ob2RlKQogICAgICwgbV9jb2RlQmxv
Y2sodm0sIGNvZGVCbG9jaykKQEAgLTM5Myw2ICszOTMsOCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5s
aW5rZQogewogICAgIGZvciAoYXV0byYgY29uc3RhbnRSZWdpc3RlciA6IG1fbGlua1RpbWVDb25z
dGFudFJlZ2lzdGVycykKICAgICAgICAgY29uc3RhbnRSZWdpc3RlciA9IG51bGxwdHI7CisgICAg
CisgICAgcHVzaFByaXZhdGVBY2Nlc3NOYW1lcygqcGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25t
ZW50KTsKIAogICAgIGFsbG9jYXRlQ2FsbGVlU2F2ZVNwYWNlKCk7CiAgICAgCkBAIC03MzYsOCAr
NzM4LDEzIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1
bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgICAgICAgICAgfSBlbHNl
CiAgICAgICAgICAgICAgICAgICAgIGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7CiAK
LSAgICAgICAgICAgICAgICBpZiAoT3B0aW9uczo6dXNlQ2xhc3NGaWVsZHMoKSAmJiBjb25zdHJ1
Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkJhc2UpCisgICAgICAgICAgICAgICAgaWYg
KE9wdGlvbnM6OnVzZUNsYXNzRmllbGRzKCkgJiYgY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3Ry
dWN0b3JLaW5kOjpCYXNlKSB7CisgICAgICAgICAgICAgICAgICAgIGJvb2wgc2hvdWxkRW1pdFBy
aXZhdGVCcmFuZCA9IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkgPT0gUHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQ6Ok5lZWRlZDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNob3VsZEVtaXRQcml2
YXRlQnJhbmQpCisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0SW5zdGFsbFByaXZhdGVCcmFu
ZCgmbV90aGlzUmVnaXN0ZXIpOworCiAgICAgICAgICAgICAgICAgICAgIGVtaXRJbnN0YW5jZUZp
ZWxkSW5pdGlhbGl6YXRpb25JZk5lZWRlZCgmbV90aGlzUmVnaXN0ZXIsICZtX2NhbGxlZVJlZ2lz
dGVyLCBtX3Njb3BlTm9kZS0+cG9zaXRpb24oKSwgbV9zY29wZU5vZGUtPnBvc2l0aW9uKCksIG1f
c2NvcGVOb2RlLT5wb3NpdGlvbigpKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
IGVsc2UgaWYgKGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSkKICAg
ICAgICAgICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgY29u
c3RydWN0b3Igd2l0aG91dCB8bmV3fCIpOwogICAgICAgICAgICAgZWxzZSB7CkBAIC03ODcsNyAr
Nzk0LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVu
Y3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKIAogICAgIC8vIEFsbCAiYWRkVmFyKCki
cyBuZWVkcyB0byBoYXBwZW4gYmVmb3JlICJpbml0aWFsaXplRGVmYXVsdFBhcmFtZXRlclZhbHVl
c0FuZFNldHVwRnVuY3Rpb25TY29wZVN0YWNrKCkiIGlzIGNhbGxlZAogICAgIC8vIGJlY2F1c2Ug
YSBmdW5jdGlvbidzIGRlZmF1bHQgcGFyYW1ldGVyIEV4cHJlc3Npb25Ob2RlcyB3aWxsIHVzZSB0
ZW1wb3JhcnkgcmVnaXN0ZXJzLgotICAgIHB1c2hURFpWYXJpYWJsZXMoKnBhcmVudFNjb3BlVERa
VmFyaWFibGVzLCBURFpDaGVja09wdGltaXphdGlvbjo6RG9Ob3RPcHRpbWl6ZSwgVERaUmVxdWly
ZW1lbnQ6OlVuZGVyVERaKTsKKyAgICBwdXNoVERaVmFyaWFibGVzKCpwYXJlbnRTY29wZVZhcmlh
YmxlRW52aXJvbm1lbnQsIFREWkNoZWNrT3B0aW1pemF0aW9uOjpEb05vdE9wdGltaXplLCBURFpS
ZXF1aXJlbWVudDo6VW5kZXJURFopOwogCiAgICAgUmVmPExhYmVsPiBjYXRjaExhYmVsID0gbmV3
TGFiZWwoKTsKICAgICBUcnlEYXRhKiB0cnlGb3JtYWxQYXJhbWV0ZXJzRGF0YSA9IG51bGxwdHI7
CkBAIC04NTUsNyArODYyLDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9y
KFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICBwdXNoTGV4
aWNhbFNjb3BlKG1fc2NvcGVOb2RlLCBURFpDaGVja09wdGltaXphdGlvbjo6T3B0aW1pemUsIE5l
c3RlZFNjb3BlVHlwZTo6SXNOb3ROZXN0ZWQsIG51bGxwdHIsIHNob3VsZEluaXRpYWxpemVCbG9j
a1Njb3BlZEZ1bmN0aW9ucyk7CiB9CiAKLUJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVy
YXRvcihWTSYgdm0sIEV2YWxOb2RlKiBldmFsTm9kZSwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9k
ZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpCitC
eXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZh
bE5vZGUsIFVubGlua2VkRXZhbENvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdl
bmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1l
bnQqIHBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCkKICAgICA6IG1fY29kZUdlbmVyYXRp
b25Nb2RlKGNvZGVHZW5lcmF0aW9uTW9kZSkKICAgICAsIG1fc2NvcGVOb2RlKGV2YWxOb2RlKQog
ICAgICwgbV9jb2RlQmxvY2sodm0sIGNvZGVCbG9jaykKQEAgLTg3Myw3ICs4ODAsOCBAQCBCeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5v
ZGUsIFVubGlua2VkRXZhbENvZAogCiAgICAgbV9jb2RlQmxvY2stPnNldE51bVBhcmFtZXRlcnMo
MSk7CiAKLSAgICBwdXNoVERaVmFyaWFibGVzKCpwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgVERa
Q2hlY2tPcHRpbWl6YXRpb246OkRvTm90T3B0aW1pemUsIFREWlJlcXVpcmVtZW50OjpVbmRlclRE
Wik7CisgICAgcHVzaFByaXZhdGVBY2Nlc3NOYW1lcygqcGFyZW50U2NvcGVWYXJpYWJsZUVudmly
b25tZW50KTsKKyAgICBwdXNoVERaVmFyaWFibGVzKCpwYXJlbnRTY29wZVZhcmlhYmxlRW52aXJv
bm1lbnQsIFREWkNoZWNrT3B0aW1pemF0aW9uOjpEb05vdE9wdGltaXplLCBURFpSZXF1aXJlbWVu
dDo6VW5kZXJURFopOwogCiAgICAgZW1pdEVudGVyKCk7CiAKQEAgLTkxOCw3ICs5MjYsNyBAQCBC
eXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZh
bE5vZGUsIFVubGlua2VkRXZhbENvZAogICAgIHB1c2hMZXhpY2FsU2NvcGUobV9zY29wZU5vZGUs
IFREWkNoZWNrT3B0aW1pemF0aW9uOjpPcHRpbWl6ZSwgTmVzdGVkU2NvcGVUeXBlOjpJc05vdE5l
c3RlZCwgbnVsbHB0ciwgc2hvdWxkSW5pdGlhbGl6ZUJsb2NrU2NvcGVkRnVuY3Rpb25zKTsKIH0K
IAotQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgTW9kdWxlUHJv
Z3JhbU5vZGUqIG1vZHVsZVByb2dyYW1Ob2RlLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRp
b25Nb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxl
cykKK0J5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIE1vZHVsZVBy
b2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9kZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0
aW9uTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVWYXJpYWJsZUVu
dmlyb25tZW50KQogICAgIDogbV9jb2RlR2VuZXJhdGlvbk1vZGUoY29kZUdlbmVyYXRpb25Nb2Rl
KQogICAgICwgbV9zY29wZU5vZGUobW9kdWxlUHJvZ3JhbU5vZGUpCiAgICAgLCBtX2NvZGVCbG9j
ayh2bSwgY29kZUJsb2NrKQpAQCAtOTI4LDcgKzkzNiw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpC
eXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIE1vZHVsZVByb2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFt
Tm9kCiAgICAgLCBtX3VzZXNOb25TdHJpY3RFdmFsKGZhbHNlKQogICAgICwgbV9uZWVkc1RvVXBk
YXRlQXJyb3dGdW5jdGlvbkNvbnRleHQobW9kdWxlUHJvZ3JhbU5vZGUtPnVzZXNBcnJvd0Z1bmN0
aW9uKCkgfHwgbW9kdWxlUHJvZ3JhbU5vZGUtPnVzZXNFdmFsKCkpCiB7Ci0gICAgQVNTRVJUX1VO
VVNFRChwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgIXBhcmVudFNjb3BlVERaVmFyaWFibGVzLT5z
aXplKCkpOworICAgIEFTU0VSVF9VTlVTRUQocGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50
LCAhcGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50LT5zaXplKCkpOwogCiAgICAgZm9yIChh
dXRvJiBjb25zdGFudFJlZ2lzdGVyIDogbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzKQogICAg
ICAgICBjb25zdGFudFJlZ2lzdGVyID0gbnVsbHB0cjsKQEAgLTE5NjUsNyArMTk3Myw3IEBAIGJv
b2wgQnl0ZWNvZGVHZW5lcmF0b3I6Omluc3RhbnRpYXRlTGV4aWNhbFZhcmlhYmxlcyhjb25zdCBW
YXJpYWJsZUVudmlyb25tZW50JiBsCiAgICAgICAgIGlmIChsZXhpY2FsVmFyaWFibGVzLnByaXZh
dGVOYW1lc1NpemUoKSkgewogICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwcml2YXRlTmFt
ZSA6IGxleGljYWxWYXJpYWJsZXMucHJpdmF0ZU5hbWVzKCkpIHsKICAgICAgICAgICAgICAgICBp
ZiAocHJpdmF0ZU5hbWUudmFsdWUuaXNEZWNsYXJlZCgpKQotICAgICAgICAgICAgICAgICAgICBz
eW1ib2xUYWJsZS0+YWRkUHJpdmF0ZU5hbWUocHJpdmF0ZU5hbWUua2V5LmdldCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgc3ltYm9sVGFibGUtPmFkZFByaXZhdGVOYW1lKHByaXZhdGVOYW1lLmtl
eSwgcHJpdmF0ZU5hbWUudmFsdWUpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBoYXND
YXB0dXJlZFZhcmlhYmxlcyA9IHRydWU7CkBAIC0yODAyLDYgKzI4MTAsMTEgQEAgdm9pZCBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdFByaXZhdGVGaWVsZEFkZChSZWdpc3RlcklEKiBiYXNlLCBjb25z
dCBJZGVudGlmaWVyJgogICAgIE9wQWRkUHJpdmF0ZUZpZWxkOjplbWl0KHRoaXMsIGJhc2UsIGFk
ZENvbnN0YW50KG5hbWUpLCB2YWx1ZSwgc2NvcGVSZWdpc3RlcigpKTsKIH0KIAordm9pZCBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdENoZWNrUHJpdmF0ZUJyYW5kKFJlZ2lzdGVySUQqIGJhc2UsIFJl
Z2lzdGVySUQqIGJyYW5kKQoreworICAgIE9wQ2hlY2tQcml2YXRlQnJhbmQ6OmVtaXQodGhpcywg
YmFzZSwgYnJhbmQpOworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFBy
aXZhdGVGaWVsZEdldChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElk
ZW50aWZpZXImIG5hbWUpCiB7CiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5z
dHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKQEAgLTI4MDksNiArMjgyMiwzNyBAQCBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFByaXZhdGVGaWVsZEdldChSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqCiAgICAgcmV0dXJuIGRzdDsKIH0KIAordm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZVByaXZhdGVCcmFuZChSZWdpc3RlcklEKiBzY29wZSwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFy
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQoreworICAgIGF1dG8gc3ltYm9sVmFy
ID0gdmFyaWFibGUocHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmNyZWF0ZVByaXZhdGVT
eW1ib2xQcml2YXRlTmFtZSgpKTsKKworICAgIFJlZ2lzdGVySUQqIHN5bWJvbFNjb3BlID0gbmV3
VGVtcG9yYXJ5KCk7CisgICAgc3ltYm9sU2NvcGUgPSBlbWl0UmVzb2x2ZVNjb3BlKHN5bWJvbFNj
b3BlLCBzeW1ib2xWYXIpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzeW1ib2xGdW5jdGlvbiA9
IGVtaXRHZXRGcm9tU2NvcGUobmV3VGVtcG9yYXJ5KCksIHN5bWJvbFNjb3BlLCBzeW1ib2xWYXIs
IFRocm93SWZOb3RGb3VuZCk7CisKKyAgICBDYWxsQXJndW1lbnRzIGFyZ3MoKnRoaXMsIG51bGxw
dHIpOworICAgIGVtaXRMb2FkKGFyZ3MudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwor
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXdTeW1ib2wgPSBlbWl0Q2FsbChuZXdUZW1wb3Jhcnko
KSwgc3ltYm9sRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgYXJncywgZGl2b3Qs
IGRpdm90U3RhcnQsIGRpdm90RW5kLCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOworCisgICAgVmFyaWFi
bGUgcHJpdmF0ZUJyYW5kVmFyID0gdmFyaWFibGUocHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1l
cygpLnByaXZhdGVCcmFuZFByaXZhdGVOYW1lKCkpOworCisgICAgZW1pdFB1dFRvU2NvcGUoc2Nv
cGUsIHByaXZhdGVCcmFuZFZhciwgbmV3U3ltYm9sLmdldCgpLCBEb05vdFRocm93SWZOb3RGb3Vu
ZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpJbml0aWFsaXphdGlvbik7Cit9CisKK3ZvaWQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRJbnN0YWxsUHJpdmF0ZUJyYW5kKFJlZ2lzdGVySUQqIHRhcmdldCkK
K3sKKyAgICBWYXJpYWJsZSBwcml2YXRlQnJhbmRWYXIgPSB2YXJpYWJsZShwcm9wZXJ0eU5hbWVz
KCkuYnVpbHRpbk5hbWVzKCkucHJpdmF0ZUJyYW5kUHJpdmF0ZU5hbWUoKSk7CisgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHByaXZhdGVCcmFuZFZhclNjb3BlID0gZW1pdFJlc29sdmVTY29wZShudWxs
cHRyLCBwcml2YXRlQnJhbmRWYXIpOworICAgIFJlZ2lzdGVySUQqIHByaXZhdGVCcmFuZFN5bWJv
bCA9IGVtaXRHZXRQcml2YXRlQnJhbmQobmV3VGVtcG9yYXJ5KCksIHByaXZhdGVCcmFuZFZhclNj
b3BlLmdldCgpKTsKKyAgICBlbWl0RGlyZWN0UHV0QnlWYWwodGFyZ2V0LCBwcml2YXRlQnJhbmRT
eW1ib2wsIHByaXZhdGVCcmFuZFN5bWJvbCk7Cit9CisKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0R2V0UHJpdmF0ZUJyYW5kKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
c2NvcGUpCit7CisgICAgVmFyaWFibGUgcHJpdmF0ZUJyYW5kVmFyID0gdmFyaWFibGUocHJvcGVy
dHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLnByaXZhdGVCcmFuZFByaXZhdGVOYW1lKCkpOworICAg
IHJldHVybiBlbWl0R2V0RnJvbVNjb3BlKGRzdCwgc2NvcGUsIHByaXZhdGVCcmFuZFZhciwgVGhy
b3dJZk5vdEZvdW5kKTsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQ
cml2YXRlRmllbGRTZXQoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwg
UmVnaXN0ZXJJRCogdmFsdWUpCiB7CiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNz
SW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKQEAgLTI5MTAsNiArMjk1NCwzOCBA
QCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpsaWZ0VERaQ2hlY2tJZlBvc3NpYmxlKGNvbnN0IFZh
cmlhYmxlJiB2YXJpYWJsZSkKICAgICB9CiB9CiAKK2Jvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6Omlz
UHJpdmF0ZU1ldGhvZChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSBtX3ByaXZhdGVOYW1lc1N0YWNrLnNpemUoKTsgaS0tOyApIHsKKyAgICAgICAgYXV0
byYgbWFwID0gbV9wcml2YXRlTmFtZXNTdGFja1tpXTsKKyAgICAgICAgYXV0byBpdCA9IG1hcC5m
aW5kKGlkZW50LmltcGwoKSk7CisgICAgICAgIGlmIChpdCAhPSBtYXAuZW5kKCkpCisgICAgICAg
ICAgICByZXR1cm4gaXQtPnZhbHVlLmlzTWV0aG9kKCk7CisgICAgfQorCisgICAgcmV0dXJuIGZh
bHNlOworfQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoUHJpdmF0ZUFjY2Vzc05hbWVz
KGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGVudmlyb25tZW50KQoreworICAgIGlmICghZW52
aXJvbm1lbnQucHJpdmF0ZU5hbWVzU2l6ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBWYXJp
YWJsZUVudmlyb25tZW50OjpQcml2YXRlTmFtZXMgcHJpdmF0ZU5hbWVzTWFwOworICAgIGZvciAo
Y29uc3QgYXV0byYgZW50cnkgOiBlbnZpcm9ubWVudC5wcml2YXRlTmFtZXMoKSkKKyAgICAgICAg
cHJpdmF0ZU5hbWVzTWFwLmFkZChlbnRyeS5rZXksIGVudHJ5LnZhbHVlKTsKKworICAgIG1fcHJp
dmF0ZU5hbWVzU3RhY2suYXBwZW5kKFdURk1vdmUocHJpdmF0ZU5hbWVzTWFwKSk7Cit9CisKK3Zv
aWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnBvcFByaXZhdGVBY2Nlc3NOYW1lcygpCit7CisgICAgaWYg
KCFtX3ByaXZhdGVOYW1lc1N0YWNrLnNpemUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9w
cml2YXRlTmFtZXNTdGFjay5yZW1vdmVMYXN0KCk7Cit9CisKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OnB1c2hURFpWYXJpYWJsZXMoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgZW52aXJvbm1l
bnQsIFREWkNoZWNrT3B0aW1pemF0aW9uIG9wdGltaXphdGlvbiwgVERaUmVxdWlyZW1lbnQgcmVx
dWlyZW1lbnQpCiB7CiAgICAgaWYgKCFlbnZpcm9ubWVudC5zaXplKCkpCkBAIC0yOTMyLDYgKzMw
MDgsMjQgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cHVzaFREWlZhcmlhYmxlcyhjb25zdCBW
YXJpYWJsZUVudmlyb25tZW50JiBlbnZpcm9ubWVudCwKICAgICBtX2NhY2hlZFZhcmlhYmxlc1Vu
ZGVyVERaID0geyB9OwogfQogCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZXRBdmFpbGFibGVQ
cml2YXRlQWNjZXNzTmFtZXMoVmFyaWFibGVFbnZpcm9ubWVudCYgcmVzdWx0KQoreworICAgIFNt
YWxsUHRyU2V0PFVuaXF1ZWRTdHJpbmdJbXBsKiwgMTY+IGV4Y2x1ZGVkTmFtZXM7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gbV9wcml2YXRlTmFtZXNTdGFjay5zaXplKCk7IGktLTsgKSB7CisgICAg
ICAgIGF1dG8mIG1hcCA9IG1fcHJpdmF0ZU5hbWVzU3RhY2tbaV07CisgICAgICAgIGZvciAoYXV0
byYgZW50cnkgOiBtYXApICB7CisgICAgICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNQcml2YXRl
QWNjZXNzKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWV4Y2x1ZGVkTmFtZXMuY29udGFpbnMo
ZW50cnkua2V5LmdldCgpKSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9
IHJlc3VsdC5hZGRQcml2YXRlTmFtZShlbnRyeS5rZXkpOworICAgICAgICAgICAgICAgICAgICBh
ZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gZW50cnkudmFsdWU7CisgICAgICAgICAgICAgICAg
ICAgIGV4Y2x1ZGVkTmFtZXMuYWRkKGVudHJ5LmtleS5nZXQoKSk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgZXhjbHVkZWROYW1lcy5hZGQo
ZW50cnkua2V5LmdldCgpKTsKKyAgICAgICAgfQorICAgIH0KK30KKyAgICAKIE9wdGlvbmFsPENv
bXBhY3RWYXJpYWJsZU1hcDo6SGFuZGxlPiBCeXRlY29kZUdlbmVyYXRvcjo6Z2V0VmFyaWFibGVz
VW5kZXJURFooKQogewogICAgIGlmIChtX2NhY2hlZFZhcmlhYmxlc1VuZGVyVERaKSB7CkBAIC0y
OTY1LDYgKzMwNTksOCBAQCBPcHRpb25hbDxDb21wYWN0VmFyaWFibGVNYXA6OkhhbmRsZT4gQnl0
ZWNvZGVHZW5lcmF0b3I6OmdldFZhcmlhYmxlc1VuZGVyVERaKCkKICAgICAgICAgfQogICAgIH0K
IAorICAgIGdldEF2YWlsYWJsZVByaXZhdGVBY2Nlc3NOYW1lcyhlbnZpcm9ubWVudCk7CisKICAg
ICBtX2NhY2hlZFZhcmlhYmxlc1VuZGVyVERaID0gbV92bS0+bV9jb21wYWN0VmFyaWFibGVNYXAt
PmdldChlbnZpcm9ubWVudCk7CiAgICAgbV9oYXNDYWNoZWRWYXJpYWJsZXNVbmRlclREWiA9ICFl
bnZpcm9ubWVudC5pc0VtcHR5KCk7CiAgICAgaWYgKCFtX2hhc0NhY2hlZFZhcmlhYmxlc1VuZGVy
VERaKQpAQCAtMzE0Niw5ICszMjQyLDkgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXROZXdNZXRob2REZWZpbml0aW9uKFJlZ2lzdGVySUQqIGRzdCwgTWV0aG9kRGUKIH0KIAog
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3Io
UmVnaXN0ZXJJRCogZHN0LCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBjb25zdCBJ
ZGVudGlmaWVyJiBuYW1lLAotICAgIGNvbnN0IElkZW50aWZpZXImIGVjbWFOYW1lLCBjb25zdCBT
b3VyY2VDb2RlJiBjbGFzc1NvdXJjZSwgQ2xhc3NGaWVsZHNJbml0aWFsaXplciBjbGFzc0ZpZWxk
c0luaXRpYWxpemVyKQorICAgIGNvbnN0IElkZW50aWZpZXImIGVjbWFOYW1lLCBjb25zdCBTb3Vy
Y2VDb2RlJiBjbGFzc1NvdXJjZSwgQ2xhc3NGaWVsZHNJbml0aWFsaXplciBjbGFzc0ZpZWxkc0lu
aXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVu
dCkKIHsKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG1fdm0t
PmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoY29uc3RydWN0
b3JLaW5kLCBuYW1lLCBjbGFzc0ZpZWxkc0luaXRpYWxpemVyKTsKKyAgICBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG1fdm0tPmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5j
cmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoY29uc3RydWN0b3JLaW5kLCBuYW1lLCBjbGFzc0ZpZWxk
c0luaXRpYWxpemVyLCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7CiAgICAgZXhlY3V0YWJsZS0+
c2V0SW52YWxpZFR5cGVQcm9maWxpbmdPZmZzZXRzKCk7CiAgICAgZXhlY3V0YWJsZS0+c2V0RWNt
YU5hbWUoZWNtYU5hbWUpOwogICAgIGV4ZWN1dGFibGUtPnNldENsYXNzU291cmNlKGNsYXNzU291
cmNlKTsKQEAgLTMxNzgsNyArMzI3NCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0TmV3SW5zdGFuY2VGaWVsZEluaXRpYWxpemVyRnVuY3Rpb24oUmVnaXN0ZXJJCiAgICAg
Y29uc3QgYm9vbCBhbHdheXNTdHJpY3RJbkNsYXNzID0gdHJ1ZTsKICAgICBGdW5jdGlvbk1ldGFk
YXRhTm9kZSBtZXRhZGF0YShwYXJzZXJBcmVuYSgpLCBKU1Rva2VuTG9jYXRpb24oKSwgSlNUb2tl
bkxvY2F0aW9uKCksIDAsIDAsIDAsIDAsIDAsIGFsd2F5c1N0cmljdEluQ2xhc3MsIENvbnN0cnVj
dG9yS2luZDo6Tm9uZSwgc3VwZXJCaW5kaW5nLCAwLCBwYXJzZU1vZGUsIGZhbHNlKTsKICAgICBt
ZXRhZGF0YS5maW5pc2hQYXJzaW5nKG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgSWRlbnRpZmllcigp
LCBGdW5jdGlvbk1vZGU6Ok1ldGhvZERlZmluaXRpb24pOwotICAgIGF1dG8gaW5pdGlhbGl6ZXIg
PSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5z
b3VyY2UoKSwgJm1ldGFkYXRhLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGlu
RnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCBzY3Jp
cHRNb2RlKCksIFdURk1vdmUob3B0aW9uYWxWYXJpYWJsZXNVbmRlclREWiksIG5ld0Rlcml2ZWRD
b250ZXh0VHlwZSwgQ2xhc3NGaWVsZHNJbml0aWFsaXplcjo6Tm90TmVlZGVkKTsKKyAgICBhdXRv
IGluaXRpYWxpemVyID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBt
X3Njb3BlTm9kZS0+c291cmNlKCksICZtZXRhZGF0YSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVu
bGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0
QWJpbGl0eSwgc2NyaXB0TW9kZSgpLCBXVEZNb3ZlKG9wdGlvbmFsVmFyaWFibGVzVW5kZXJURFop
LCBuZXdEZXJpdmVkQ29udGV4dFR5cGUsIENsYXNzRmllbGRzSW5pdGlhbGl6ZXI6Ok5vdE5lZWRl
ZCwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmUpOwogICAgIGluaXRpYWxpemVyLT5zZXRJ
bnN0YW5jZUZpZWxkTG9jYXRpb25zKFdURk1vdmUoaW5zdGFuY2VGaWVsZExvY2F0aW9ucykpOwog
CiAgICAgdW5zaWduZWQgaW5kZXggPSBtX2NvZGVCbG9jay0+YWRkRnVuY3Rpb25FeHByKGluaXRp
YWxpemVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCBkMzJmYjY4ZTA2ZS4uNGZhYmU2MzY0YTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmgKQEAgLTM4OSw2ICszODksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9v
bCBuZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX25l
ZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dDsgfQogICAgICAgICBib29sIHVzZXNFdmFs
KCkgY29uc3QgeyByZXR1cm4gbV9zY29wZU5vZGUtPnVzZXNFdmFsKCk7IH0KICAgICAgICAgYm9v
bCB1c2VzVGhpcygpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVOb2RlLT51c2VzVGhpcygpOyB9Cisg
ICAgICAgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCk7IH0K
ICAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJu
IG1fY29kZUJsb2NrLT5jb25zdHJ1Y3RvcktpbmQoKTsgfQogICAgICAgICBTdXBlckJpbmRpbmcg
c3VwZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnN1cGVyQmluZGluZygp
OyB9CiAgICAgICAgIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9jb2RlQmxvY2stPnNjcmlwdE1vZGUoKTsgfQpAQCAtNzM3LDcgKzczOCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5jdGlvbihSZWdpc3Rl
cklEKiBkc3QsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXROZXdGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqKTsK
LSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3RvcihSZWdpc3RlcklE
KiBkc3QsIENvbnN0cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3QgSWRl
bnRpZmllciYgZWNtYU5hbWUsIGNvbnN0IFNvdXJjZUNvZGUmIGNsYXNzU291cmNlLCBDbGFzc0Zp
ZWxkc0luaXRpYWxpemVyKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0RlZmF1bHRDb25z
dHJ1Y3RvcihSZWdpc3RlcklEKiBkc3QsIENvbnN0cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmll
ciYgbmFtZSwgY29uc3QgSWRlbnRpZmllciYgZWNtYU5hbWUsIGNvbnN0IFNvdXJjZUNvZGUmIGNs
YXNzU291cmNlLCBDbGFzc0ZpZWxkc0luaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVu
dCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdJbnN0YW5jZUZpZWxkSW5pdGlhbGl6ZXJG
dW5jdGlvbihSZWdpc3RlcklEKiBkc3QsIFZlY3RvcjxKU1RleHRQb3NpdGlvbj4mJiBpbnN0YW5j
ZUZpZWxkTG9jYXRpb25zLCBib29sIGlzRGVyaXZlZCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiwgQXJyb3dGdW5jRXhwck5v
ZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld01ldGhvZERlZmluaXRpb24oUmVnaXN0
ZXJJRCogZHN0LCBNZXRob2REZWZpbml0aW9uTm9kZSopOwpAQCAtNzgzLDYgKzc4NCwxMSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFByaXZhdGVGaWVsZEdldChS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIG5hbWUp
OwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHJpdmF0ZUZpZWxkU2V0KFJlZ2lzdGVySUQqIGJh
c2UsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIFJlZ2lzdGVySUQqIHZhbHVlKTsKIAorICAgICAg
ICB2b2lkIGVtaXRDcmVhdGVQcml2YXRlQnJhbmQoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOworICAgICAgICB2b2lkIGVtaXRJbnN0YWxsUHJp
dmF0ZUJyYW5kKFJlZ2lzdGVySUQqIHRhcmdldCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRH
ZXRQcml2YXRlQnJhbmQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzY29wZSk7CisgICAg
ICAgIHZvaWQgZW1pdENoZWNrUHJpdmF0ZUJyYW5kKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVy
SUQqIGJyYW5kKTsKKwogICAgICAgICB2b2lkIGVtaXRTdXBlclNhbXBsZXJCZWdpbigpOwogICAg
ICAgICB2b2lkIGVtaXRTdXBlclNhbXBsZXJFbmQoKTsKIApAQCAtMTEyMyw2ICsxMTI5LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIERlcml2ZWRDb250ZXh0VHlw
ZSBuZXdEZXJpdmVkQ29udGV4dFR5cGUgPSBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmU7CiAKKyAg
ICAgICAgICAgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50
ID0gbWV0YWRhdGEtPnByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCk7CiAgICAgICAgICAgICBDbGFz
c0ZpZWxkc0luaXRpYWxpemVyIGNsYXNzRmllbGRzSW5pdGlhbGl6ZXIgPSBtZXRhZGF0YS0+Y2xh
c3NGaWVsZHNJbml0aWFsaXplcigpOwogICAgICAgICAgICAgaWYgKFNvdXJjZVBhcnNlTW9kZVNl
dChTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlLCBTb3VyY2VQYXJzZU1vZGU6OkFz
eW5jQXJyb3dGdW5jdGlvbk1vZGUsIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9u
Qm9keU1vZGUpLmNvbnRhaW5zKG1ldGFkYXRhLT5wYXJzZU1vZGUoKSkpIHsKICAgICAgICAgICAg
ICAgICBpZiAoY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpFeHRlbmRzIHx8
IGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpKSB7CkBAIC0xMTQyLDEwICsxMTQ5LDExIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJz
ZU1vZGU6Ok1ldGhvZE1vZGUgJiYgbWV0YWRhdGEtPmNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0
cnVjdG9yS2luZDo6Tm9uZSkKICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RBYmlsaXR5ID0gQ29u
c3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0OwogCi0gICAgICAgICAgICByZXR1cm4gVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCks
IG1ldGFkYXRhLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24g
OiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCBzY3JpcHRNb2RlKCks
IFdURk1vdmUob3B0aW9uYWxWYXJpYWJsZXNVbmRlclREWiksIG5ld0Rlcml2ZWRDb250ZXh0VHlw
ZSwgY2xhc3NGaWVsZHNJbml0aWFsaXplcik7CisgICAgICAgICAgICByZXR1cm4gVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksIG1l
dGFkYXRhLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBV
bmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCBzY3JpcHRNb2RlKCksIFdU
Rk1vdmUob3B0aW9uYWxWYXJpYWJsZXNVbmRlclREWiksIG5ld0Rlcml2ZWRDb250ZXh0VHlwZSwg
Y2xhc3NGaWVsZHNJbml0aWFsaXplciwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOwogICAgICAg
ICB9CiAKICAgICAgICAgT3B0aW9uYWw8Q29tcGFjdFZhcmlhYmxlTWFwOjpIYW5kbGU+IGdldFZh
cmlhYmxlc1VuZGVyVERaKCk7CisgICAgICAgIHZvaWQgZ2V0QXZhaWxhYmxlUHJpdmF0ZUFjY2Vz
c05hbWVzKFZhcmlhYmxlRW52aXJvbm1lbnQmKTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
Q29uc3RydWN0VmFyYXJncyhSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIFJlZ2lz
dGVySUQqIHRoaXNSZWdpc3RlciwgUmVnaXN0ZXJJRCogYXJndW1lbnRzLCBSZWdpc3RlcklEKiBm
aXJzdEZyZWVSZWdpc3RlciwgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBEZWJ1Z2dhYmxlQ2FsbCk7CiAgICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENhbGxPcD4KQEAgLTEyMDgsNiArMTIxNiwxMSBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgIG1fbGFzdEluc3RydWN0aW9uID0gcHJldkxhc3RJbnN0cnVjdGlvbjsK
ICAgICAgICAgfQogCisgICAgICAgIGJvb2wgaXNQcml2YXRlTWV0aG9kKGNvbnN0IElkZW50aWZp
ZXImKTsKKworICAgICAgICB2b2lkIHB1c2hQcml2YXRlQWNjZXNzTmFtZXMoY29uc3QgVmFyaWFi
bGVFbnZpcm9ubWVudCYpOworICAgICAgICB2b2lkIHBvcFByaXZhdGVBY2Nlc3NOYW1lcygpOwor
CiAgICAgcHJpdmF0ZToKICAgICAgICAgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXIgbV93cml0ZXI7
CiAKQEAgLTEyMjIsNiArMTIzNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBWZWN0b3I8
TGV4aWNhbFNjb3BlU3RhY2tFbnRyeT4gbV9sZXhpY2FsU2NvcGVTdGFjazsKIAogICAgICAgICBW
ZWN0b3I8VERaTWFwPiBtX1REWlN0YWNrOworICAgICAgICBWZWN0b3I8VmFyaWFibGVFbnZpcm9u
bWVudDo6UHJpdmF0ZU5hbWVzPiBtX3ByaXZhdGVOYW1lc1N0YWNrOwogICAgICAgICBPcHRpb25h
bDxzaXplX3Q+IG1fdmFyU2NvcGVMZXhpY2FsU2NvcGVTdGFja0luZGV4OwogICAgICAgICB2b2lk
IHB1c2hURFpWYXJpYWJsZXMoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYsIFREWkNoZWNrT3B0
aW1pemF0aW9uLCBURFpSZXF1aXJlbWVudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCBkY2U1ODhjOTVkNi4uOTI3
YTZjYWRjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAKQEAgLTcwNiw2ICs3MDYsMTMgQEAgdm9pZCBQcm9wZXJ0eUxpc3RO
b2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWcKIAogICAgIGlmIChub2RlLmlzQ2xhc3NQcm9wZXJ0eSgpKSB7CiAgICAgICAgIEFTU0VS
VChub2RlLm5lZWRzU3VwZXJCaW5kaW5nKCkpOworCisgICAgICAgIGlmIChub2RlLnR5cGUoKSAm
IFByb3BlcnR5Tm9kZTo6UHJpdmF0ZU1ldGhvZCkgeworICAgICAgICAgICAgVmFyaWFibGUgdmFy
ID0gZ2VuZXJhdG9yLnZhcmlhYmxlKCpub2RlLm5hbWUoKSk7CisgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdFB1dFRvU2NvcGUoZ2VuZXJhdG9yLnNjb3BlUmVnaXN0ZXIoKSwgdmFyLCB2YWx1ZS5n
ZXQoKSwgRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6Q29uc3RJbml0
aWFsaXphdGlvbik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcGVydHlOYW1lUmVnaXN0ZXI7CiAgICAgICAgIGlmIChub2Rl
Lm5hbWUoKSkKICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVt
aXRMb2FkKG51bGxwdHIsICpub2RlLm5hbWUoKSk7CkBAIC04MTEsOCArODE4LDE5IEBAIFJlZ2lz
dGVySUQqIERvdEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVyCiAKIFJlZ2lzdGVySUQqIEJhc2VEb3ROb2RlOjplbWl0R2V0UHJv
cGVydHlWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3Qs
IFJlZ2lzdGVySUQqIGJhc2UsIFJlZlB0cjxSZWdpc3RlcklEPiYgdGhpc1ZhbHVlKQogewotICAg
IGlmIChpc1ByaXZhdGVOYW1lKCkpCisgICAgaWYgKGlzUHJpdmF0ZU5hbWUoKSkgeworICAgICAg
ICBpZiAoZ2VuZXJhdG9yLmlzUHJpdmF0ZU1ldGhvZChpZGVudGlmaWVyKCkpKSB7CisgICAgICAg
ICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnRpZmllcigpKTsKKyAg
ICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2
ZVNjb3BlKG51bGxwdHIsIHZhcik7CisKKyAgICAgICAgICAgIFJlZ2lzdGVySUQqIHByaXZhdGVC
cmFuZFN5bWJvbCA9IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZUJyYW5kKGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDaGVj
a1ByaXZhdGVCcmFuZChiYXNlLCBwcml2YXRlQnJhbmRTeW1ib2wpOworCisgICAgICAgICAgICBy
ZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZHN0LCBzY29wZS5nZXQoKSwgdmFyLCBU
aHJvd0lmTm90Rm91bmQpOworICAgICAgICB9CisKICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5l
bWl0UHJpdmF0ZUZpZWxkR2V0KGRzdCwgYmFzZSwgaWRlbnRpZmllcigpKTsKKyAgICB9CiAKICAg
ICBpZiAobV9iYXNlLT5pc1N1cGVyTm9kZSgpKSB7CiAgICAgICAgIGlmICghdGhpc1ZhbHVlKQpA
QCAtODMxLDggKzg0OSwyMCBAQCBSZWdpc3RlcklEKiBCYXNlRG90Tm9kZTo6ZW1pdEdldFByb3Bl
cnR5VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaQogCiBSZWdpc3RlcklE
KiBCYXNlRG90Tm9kZTo6ZW1pdFB1dFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZWZQdHI8UmVnaXN0ZXJJ
RD4mIHRoaXNWYWx1ZSkKIHsKLSAgICBpZiAoaXNQcml2YXRlTmFtZSgpKQorICAgIGlmIChpc1By
aXZhdGVOYW1lKCkpIHsKKyAgICAgICAgYXV0byBpZGVudGlmaWVyTmFtZSA9IGlkZW50aWZpZXIo
KTsKKyAgICAgICAgaWYgKGdlbmVyYXRvci5pc1ByaXZhdGVNZXRob2QoaWRlbnRpZmllck5hbWUp
KSB7CisgICAgICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnRp
Zmllck5hbWUpOworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJh
dG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKKworICAgICAgICAgICAgUmVnaXN0
ZXJJRCogcHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQo
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSk7CisgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdENoZWNrUHJpdmF0ZUJyYW5kKGJhc2UsIHByaXZhdGVCcmFuZFN5bWJvbCk7CisK
KyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0VGhyb3dUeXBlRXJyb3IoIlRyeWluZyB0byBhY2Nl
c3MgYSBub3QgZGVmaW5lZCBwcml2YXRlIHNldHRlciIpOworICAgICAgICB9CisKICAgICAgICAg
cmV0dXJuIGdlbmVyYXRvci5lbWl0UHJpdmF0ZUZpZWxkU2V0KGJhc2UsIG1faWRlbnQsIHZhbHVl
KTsKKyAgICB9CiAKICAgICBpZiAobV9iYXNlLT5pc1N1cGVyTm9kZSgpKSB7CiAgICAgICAgIGlm
ICghdGhpc1ZhbHVlKQpAQCAtOTcxLDEwICsxMDAxLDEyIEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9u
Q2FsbFZhbHVlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlCiAKICAgICAgICAgLy8gSW5pdGlhbGl6ZSBpbnN0YW5jZSBmaWVsZHMgYWZ0ZXIgc3VwZXIt
Y2FsbC4KICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUNsYXNzRmllbGRzKCkpIHsKKyAgICAgICAg
ICAgIGlmIChnZW5lcmF0b3IucHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSA9PSBQcml2YXRlQnJh
bmRSZXF1aXJlbWVudDo6TmVlZGVkKQorICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SW5z
dGFsbFByaXZhdGVCcmFuZChnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkpOworCiAgICAgICAgICAg
ICBmdW5jID0gZ2VuZXJhdG9yLmVtaXRMb2FkRGVyaXZlZENvbnN0cnVjdG9yKCk7CiAgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdEluc3RhbmNlRmllbGRJbml0aWFsaXphdGlvbklmTmVlZGVkKGdl
bmVyYXRvci50aGlzUmVnaXN0ZXIoKSwgZnVuYy5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgp
LCBkaXZvdEVuZCgpKTsKICAgICAgICAgfQotCiAgICAgICAgIHJldHVybiByZXQ7CiAgICAgfQog
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcik7
CkBAIC00MDgyLDYgKzQxMTQsMTMgQEAgUmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKICAgICBpZiAo
bV9uZWVkc0xleGljYWxTY29wZSkKICAgICAgICAgZ2VuZXJhdG9yLnB1c2hMZXhpY2FsU2NvcGUo
dGhpcywgQnl0ZWNvZGVHZW5lcmF0b3I6OlREWkNoZWNrT3B0aW1pemF0aW9uOjpPcHRpbWl6ZSwg
Qnl0ZWNvZGVHZW5lcmF0b3I6Ok5lc3RlZFNjb3BlVHlwZTo6SXNOZXN0ZWQpOwogCisgICAgYm9v
bCBoYXNQcml2YXRlTmFtZXMgPSAhIW1fbGV4aWNhbFZhcmlhYmxlcy5wcml2YXRlTmFtZXNTaXpl
KCk7CisgICAgYm9vbCBzaG91bGRFbWl0UHJpdmF0ZUJyYW5kID0gbV9sZXhpY2FsVmFyaWFibGVz
Lmhhc1ByaXZhdGVBY2Nlc3MoKTsKKyAgICBpZiAoaGFzUHJpdmF0ZU5hbWVzKQorICAgICAgICBn
ZW5lcmF0b3IucHVzaFByaXZhdGVBY2Nlc3NOYW1lcyhtX2xleGljYWxWYXJpYWJsZXMpOworICAg
IGlmIChzaG91bGRFbWl0UHJpdmF0ZUJyYW5kKQorICAgICAgICBnZW5lcmF0b3IuZW1pdENyZWF0
ZVByaXZhdGVCcmFuZChnZW5lcmF0b3Iuc2NvcGVSZWdpc3RlcigpLCBtX3Bvc2l0aW9uLCBtX3Bv
c2l0aW9uLCBtX3Bvc2l0aW9uKTsKKwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzdXBlcmNsYXNz
OwogICAgIGlmIChtX2NsYXNzSGVyaXRhZ2UpIHsKICAgICAgICAgc3VwZXJjbGFzcyA9IGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKTsKQEAgLTQwOTIsNyArNDEzMSw3IEBAIFJlZ2lzdGVySUQqIENs
YXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklECiAgICAgYm9vbCBuZWVkc0hvbWVPYmplY3QgPSBmYWxzZTsKIAogICAgIGJvb2wg
aGFzSW5zdGFuY2VGaWVsZHMgPSB0aGlzLT5oYXNJbnN0YW5jZUZpZWxkcygpOwotCisgICAgUHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBzaG91bGRFbWl0
UHJpdmF0ZUJyYW5kID8gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5lZWRlZCA6IFByaXZhdGVC
cmFuZFJlcXVpcmVtZW50OjpOb25lOwogICAgIGlmIChtX2NvbnN0cnVjdG9yRXhwcmVzc2lvbikg
ewogICAgICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvckV4cHJlc3Npb24tPmlzRnVuY0V4cHJOb2Rl
KCkpOwogICAgICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbWV0YWRhdGEgPSBzdGF0aWNfY2Fz
dDxGdW5jRXhwck5vZGUqPihtX2NvbnN0cnVjdG9yRXhwcmVzc2lvbiktPm1ldGFkYXRhKCk7CkBA
IC00MTAwLDEwICs0MTM5LDExIEBAIFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAgICAgICAgIG1l
dGFkYXRhLT5zZXRDbGFzc1NvdXJjZShtX2NsYXNzU291cmNlKTsKICAgICAgICAgaWYgKGhhc0lu
c3RhbmNlRmllbGRzKQogICAgICAgICAgICAgbWV0YWRhdGEtPnNldENsYXNzRmllbGRzSW5pdGlh
bGl6ZXIoQ2xhc3NGaWVsZHNJbml0aWFsaXplcjo6TmVlZGVkKTsKKyAgICAgICAgbWV0YWRhdGEt
PnNldFByaXZhdGVCcmFuZFJlcXVpcmVtZW50KHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KTsKICAg
ICAgICAgY29uc3RydWN0b3IgPSBnZW5lcmF0b3IuZW1pdE5vZGUoY29uc3RydWN0b3IuZ2V0KCks
IG1fY29uc3RydWN0b3JFeHByZXNzaW9uKTsKICAgICAgICAgbmVlZHNIb21lT2JqZWN0ID0gbV9j
bGFzc0hlcml0YWdlIHx8IG1ldGFkYXRhLT5zdXBlckJpbmRpbmcoKSA9PSBTdXBlckJpbmRpbmc6
Ok5lZWRlZDsKICAgICB9IGVsc2UKLSAgICAgICAgY29uc3RydWN0b3IgPSBnZW5lcmF0b3IuZW1p
dE5ld0RlZmF1bHRDb25zdHJ1Y3Rvcihjb25zdHJ1Y3Rvci5nZXQoKSwgbV9jbGFzc0hlcml0YWdl
ID8gQ29uc3RydWN0b3JLaW5kOjpFeHRlbmRzIDogQ29uc3RydWN0b3JLaW5kOjpCYXNlLCBtX25h
bWUsIGVjbWFOYW1lKCksIG1fY2xhc3NTb3VyY2UsIHN0YXRpY19jYXN0PENsYXNzRmllbGRzSW5p
dGlhbGl6ZXI+KGhhc0luc3RhbmNlRmllbGRzKSk7CisgICAgICAgIGNvbnN0cnVjdG9yID0gZ2Vu
ZXJhdG9yLmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoY29uc3RydWN0b3IuZ2V0KCksIG1fY2xh
c3NIZXJpdGFnZSA/IENvbnN0cnVjdG9yS2luZDo6RXh0ZW5kcyA6IENvbnN0cnVjdG9yS2luZDo6
QmFzZSwgbV9uYW1lLCBlY21hTmFtZSgpLCBtX2NsYXNzU291cmNlLCBzdGF0aWNfY2FzdDxDbGFz
c0ZpZWxkc0luaXRpYWxpemVyPihoYXNJbnN0YW5jZUZpZWxkcyksIHByaXZhdGVCcmFuZFJlcXVp
cmVtZW50KTsKIAogICAgIGNvbnN0IGF1dG8mIHByb3BlcnR5TmFtZXMgPSBnZW5lcmF0b3IucHJv
cGVydHlOYW1lcygpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm90b3R5cGUgPSBnZW5lcmF0
b3IuZW1pdE5ld09iamVjdChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCkpOwpAQCAtNDE3Myw2ICs0
MjEzLDkgQEAgUmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKICAgICAgICAgZ2VuZXJhdG9yLnBvcExl
eGljYWxTY29wZSh0aGlzKTsKICAgICB9CiAKKyAgICBpZiAoaGFzUHJpdmF0ZU5hbWVzKQorICAg
ICAgICBnZW5lcmF0b3IucG9wUHJpdmF0ZUFjY2Vzc05hbWVzKCk7CisKICAgICByZXR1cm4gZ2Vu
ZXJhdG9yLm1vdmUoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBjb25zdHJ1Y3Rvci5n
ZXQoKSksIGNvbnN0cnVjdG9yLmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKaW5kZXggNjE3OWFjYzVlYzku
LmFiMTEyM2UzZWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXJDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKQEAgLTI0Nyw3ICsyNDcsNyBAQCBKU1ZhbHVlIERlYnVn
Z2VyQ2FsbEZyYW1lOjpldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihjb25zdCBTdHJpbmcmIHNj
cmlwdCwgSlNPYgogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgdmFyaWFibGVzVW5kZXJURFo7CiAg
ICAgSlNTY29wZTo6Y29sbGVjdENsb3N1cmVWYXJpYWJsZXNVbmRlclREWihzY29wZSgpLT5qc1Nj
b3BlKCksIHZhcmlhYmxlc1VuZGVyVERaKTsKIAotICAgIGF1dG8qIGV2YWwgPSBEaXJlY3RFdmFs
RXhlY3V0YWJsZTo6Y3JlYXRlKGNhbGxGcmFtZSwgbWFrZVNvdXJjZShzY3JpcHQsIGNhbGxGcmFt
ZS0+Y2FsbGVyU291cmNlT3JpZ2luKCkpLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpLCBjb2Rl
QmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBjb2RlQmxv
Y2stPnVubGlua2VkQ29kZUJsb2NrKCktPmNsYXNzRmllbGRzSW5pdGlhbGl6ZXIoKSwgY29kZUJs
b2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5pc0Fycm93RnVuY3Rpb24oKSwgZXZhbENvbnRleHRU
eXBlLCAmdmFyaWFibGVzVW5kZXJURFopOworICAgIGF1dG8qIGV2YWwgPSBEaXJlY3RFdmFsRXhl
Y3V0YWJsZTo6Y3JlYXRlKGNhbGxGcmFtZSwgbWFrZVNvdXJjZShzY3JpcHQsIGNhbGxGcmFtZS0+
Y2FsbGVyU291cmNlT3JpZ2luKCkpLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpLCBjb2RlQmxv
Y2stPnVubGlua2VkQ29kZUJsb2NrKCktPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBjb2RlQmxvY2st
PnVubGlua2VkQ29kZUJsb2NrKCktPmNsYXNzRmllbGRzSW5pdGlhbGl6ZXIoKSwgY29kZUJsb2Nr
LT51bmxpbmtlZENvZGVCbG9jaygpLT5wcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpLCBjb2RlQmxv
Y2stPnVubGlua2VkQ29kZUJsb2NrKCktPmlzQXJyb3dGdW5jdGlvbigpLCBldmFsQ29udGV4dFR5
cGUsICZ2YXJpYWJsZXNVbmRlclREWik7CiAgICAgaWYgKFVOTElLRUxZKGNhdGNoU2NvcGUuZXhj
ZXB0aW9uKCkpKSB7CiAgICAgICAgIGV4Y2VwdGlvbiA9IGNhdGNoU2NvcGUuZXhjZXB0aW9uKCk7
CiAgICAgICAgIGNhdGNoU2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA4NWM1YWMyMjEzMi4uMGNlMzkx
ZWFjMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0
aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHAKQEAgLTI4NSw2ICsyODUsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9w
Y29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSQogICAgIGNhc2Ug
b3BfYWRkX3ByaXZhdGVfZmllbGQ6IC8vIEZJWE1FOiBhZGQgSklUIHN1cHBvcnQgZm9yIHByaXZh
dGUgZmllbGQgb3BzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1
NjE5CiAgICAgY2FzZSBvcF9nZXRfcHJpdmF0ZV9maWVsZDoKICAgICBjYXNlIG9wX3B1dF9wcml2
YXRlX2ZpZWxkOgorICAgIGNhc2Ugb3BfY2hlY2tfcHJpdmF0ZV9icmFuZDoKICAgICBjYXNlIG9w
X3RvX3Byb3BlcnR5X2tleToKICAgICBjYXNlIGxsaW50X3Byb2dyYW1fcHJvbG9ndWU6CiAgICAg
Y2FzZSBsbGludF9ldmFsX3Byb2xvZ3VlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggYTc1ZDFiZWMwMDkuLjM5MWFjYTMxZjNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAKQEAgLTE2Niw3ICsxNjYsNyBAQCBKU1ZhbHVlIGV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiAgICAgICAgIAogICAgICAgICBWYXJpYWJsZUVudmlyb25tZW50IHZhcmlhYmxlc1VuZGVy
VERaOwogICAgICAgICBKU1Njb3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKGNh
bGxlclNjb3BlQ2hhaW4sIHZhcmlhYmxlc1VuZGVyVERaKTsKLSAgICAgICAgZXZhbCA9IERpcmVj
dEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoY2FsbEZyYW1lLCBtYWtlU291cmNlKHByb2dyYW1Tb3Vy
Y2UsIGNhbGxlckNvZGVCbG9jay0+c291cmNlKCkucHJvdmlkZXIoKS0+c291cmNlT3JpZ2luKCkp
LCBjYWxsZXJDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpLCBkZXJpdmVkQ29udGV4dFR5cGUsIGNh
bGxlclVubGlua2VkQ29kZUJsb2NrLT5jbGFzc0ZpZWxkc0luaXRpYWxpemVyKCksIGlzQXJyb3dG
dW5jdGlvbkNvbnRleHQsIGV2YWxDb250ZXh0VHlwZSwgJnZhcmlhYmxlc1VuZGVyVERaKTsKKyAg
ICAgICAgZXZhbCA9IERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoY2FsbEZyYW1lLCBtYWtl
U291cmNlKHByb2dyYW1Tb3VyY2UsIGNhbGxlckNvZGVCbG9jay0+c291cmNlKCkucHJvdmlkZXIo
KS0+c291cmNlT3JpZ2luKCkpLCBjYWxsZXJDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpLCBkZXJp
dmVkQ29udGV4dFR5cGUsIGNhbGxlclVubGlua2VkQ29kZUJsb2NrLT5jbGFzc0ZpZWxkc0luaXRp
YWxpemVyKCksIGNhbGxlclVubGlua2VkQ29kZUJsb2NrLT5wcml2YXRlQnJhbmRSZXF1aXJlbWVu
dCgpLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBldmFsQ29udGV4dFR5cGUsICZ2YXJpYWJsZXNV
bmRlclREWik7CiAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9
PSAhZXZhbCk7CiAgICAgICAgIGlmICghZXZhbCkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDM1Y2RlYjFkMjljLi41N2Q2
Y2UwYzg2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtNDIzLDYgKzQyMyw3IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9w
X2FkZF9wcml2YXRlX2ZpZWxkKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X3ByaXZhdGVfZmll
bGQpCiAgICAgICAgIERFRklORV9PUChvcF90b19wcm9wZXJ0eV9rZXkpCisgICAgICAgIERFRklO
RV9PUChvcF9jaGVja19wcml2YXRlX2JyYW5kKQogCiAgICAgICAgIERFRklORV9PUChvcF9yZXQp
CiAgICAgICAgIERFRklORV9PUChvcF9yc2hpZnQpCkBAIC01OTIsNiArNTkzLDcgQEAgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NM
T1dfT1AoZ2V0X3ByaXZhdGVfZmllbGQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09Q
KHB1dF9wcml2YXRlX2ZpZWxkKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUCh0b19w
cm9wZXJ0eV9rZXkpCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKGNoZWNrX3ByaXZh
dGVfYnJhbmQpCiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBkZGZmZGFjMWExYy4u
ZGU4OGEwZWYwYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNjM4LDYgKzYzOCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X3ByaXZhdGVfZmllbGQo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9wcml2YXRlX2Zp
ZWxkKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF90b19wcm9wZXJ0
eV9rZXkoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2NoZWNrX3By
aXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKIAogICAgICAgICB2b2lkIGVtaXRTbG93
X29wX2FkZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jYWxsKGNvbnN0IEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggODlhYzNjNDM2MzMuLmIwNDZlNDhhNjg0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTE1NzgsNiArMTU3OCwxMCBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF90b19wcm9wZXJ0eV9rZXkoY29uc3QgSW5zdHJ1Y3Rpb24qKQog
ewogICAgIGFkZFNsb3dDYXNlKGp1bXAoKSk7CiB9Cit2b2lkIEpJVDo6ZW1pdF9vcF9jaGVja19w
cml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKikKK3sKKyAgICBhZGRTbG93Q2FzZShqdW1w
KCkpOworfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCA4ZGMzYjIxMjRj
YS4uMDFiNDg5ZGUzMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0yNjQzLDYgKzI2NDMsMTAgQEAgbGxpbnRP
cFdpdGhNZXRhZGF0YShvcF9hZGRfcHJpdmF0ZV9maWVsZCwgT3BBZGRQcml2YXRlRmllbGQsIG1h
Y3JvIChzaXplLCBnZXQsIGQKICAgICBkaXNwYXRjaCgpCiBlbmQpCiAKK2xsaW50T3Aob3BfY2hl
Y2tfcHJpdmF0ZV9icmFuZCwgT3BDaGVja1ByaXZhdGVCcmFuZCwgbWFjcm8gKHNpemUsIGdldCwg
ZGlzcGF0Y2gpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfY2hlY2tfcHJpdmF0ZV9icmFu
ZCkKKyAgICBkaXNwYXRjaCgpCitlbmQpCiAKIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X3By
aXZhdGVfZmllbGQsIE9wR2V0UHJpdmF0ZUZpZWxkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRj
aCwgbWV0YWRhdGEsIHJldHVybikKICAgICBnZXQobV9iYXNlLCB0MCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9MZXhlci5jcHAKaW5kZXggZTNiZTA5NmQ4OTQuLjg4MDU2NGU0ODVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcApAQCAtMTA4MywyMCArMTA4MywyMSBA
QCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpT
VG9rZW5UeXBlIExleGVyPFVDaGFyPjo6cAogICAgIH0gZWxzZQogICAgICAgICB0b2tlbkRhdGEt
PmlkZW50ID0gbnVsbHB0cjsKICAgICAKKyAgICBhdXRvIGlkZW50VHlwZSA9IGlzUHJpdmF0ZU5h
bWUgPyBQUklWQVRFTkFNRSA6IElERU5UOwogICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwg
bWF4VG9rZW5MZW5ndGgpICYmICEobGV4ZXJGbGFncyAmIExleGVyRmxhZ3NJZ25vcmVSZXNlcnZl
ZFdvcmRzKSkgJiYgIWlzUHJpdmF0ZUlkZW50aWZpZXIpIHsKICAgICAgICAgQVNTRVJUKHNob3Vs
ZENyZWF0ZUlkZW50aWZpZXIpOwogICAgICAgICBpZiAocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5n
dGgpIHsKICAgICAgICAgICAgIGNvbnN0IEhhc2hUYWJsZVZhbHVlKiBlbnRyeSA9IEpTQzo6bWFp
blRhYmxlLmVudHJ5KCppZGVudCk7CiAgICAgICAgICAgICBBU1NFUlQoKHJlbWFpbmluZyA8IG1h
eFRva2VuTGVuZ3RoKSB8fCAhZW50cnkpOwogICAgICAgICAgICAgaWYgKCFlbnRyeSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gSURFTlQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIGlkZW50VHlw
ZTsKICAgICAgICAgICAgIEpTVG9rZW5UeXBlIHRva2VuID0gc3RhdGljX2Nhc3Q8SlNUb2tlblR5
cGU+KGVudHJ5LT5sZXhlclZhbHVlKCkpOwotICAgICAgICAgICAgcmV0dXJuICh0b2tlbiAhPSBS
RVNFUlZFRF9JRl9TVFJJQ1QpIHx8IHN0cmljdE1vZGUgPyB0b2tlbiA6IElERU5UOworICAgICAg
ICAgICAgcmV0dXJuICh0b2tlbiAhPSBSRVNFUlZFRF9JRl9TVFJJQ1QpIHx8IHN0cmljdE1vZGUg
PyB0b2tlbiA6IGlkZW50VHlwZTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gSURFTlQ7Cisg
ICAgICAgIHJldHVybiBpZGVudFR5cGU7CiAgICAgfQogCi0gICAgcmV0dXJuIElERU5UOworICAg
IHJldHVybiBpZGVudFR5cGU7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IHRlbXBsYXRlPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gSlNUb2tlblR5cGUgTGV4ZXI8
Q2hhcmFjdGVyVHlwZT46OnBhcnNlSWRlbnRpZmllclNsb3dDYXNlKEpTVG9rZW5EYXRhKiB0b2tl
bkRhdGEsIHVuc2lnbmVkIGxleGVyRmxhZ3MsIGJvb2wgc3RyaWN0TW9kZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKaW5kZXggZjg2ZTFhNmQy
OTIuLmZiNTIyNGY3N2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVDb25zdHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVDb25zdHJ1Y3RvcnMuaApAQCAtMjUzLDcgKzI1Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAsIG1fdHlwZSh0eXBlKQogICAgICAgICAsIG1fbmVlZHNTdXBlckJpbmRpbmcoc3VwZXJC
aW5kaW5nID09IFN1cGVyQmluZGluZzo6TmVlZGVkKQogICAgICAgICAsIG1fcHV0VHlwZShwdXRU
eXBlKQotICAgICAgICAsIG1faXNQcml2YXRlKCEhKHR5cGUgJiBQcml2YXRlKSkKKyAgICAgICAg
LCBtX2lzUHJpdmF0ZSghISh0eXBlICYgKFByaXZhdGVGaWVsZCB8IFByaXZhdGVNZXRob2QpKSkK
ICAgICAgICAgLCBtX2NsYXNzRWxlbWVudFRhZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4odGFnKSkK
ICAgICAgICAgLCBtX2lzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlKGZhbHNlKQogICAgIHsKQEAgLTI2
Niw3ICsyNjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLCBtX3R5cGUodHlwZSkKICAg
ICAgICAgLCBtX25lZWRzU3VwZXJCaW5kaW5nKHN1cGVyQmluZGluZyA9PSBTdXBlckJpbmRpbmc6
Ok5lZWRlZCkKICAgICAgICAgLCBtX3B1dFR5cGUocHV0VHlwZSkKLSAgICAgICAgLCBtX2lzUHJp
dmF0ZSghISh0eXBlICYgUHJpdmF0ZSkpCisgICAgICAgICwgbV9pc1ByaXZhdGUoISEodHlwZSAm
IChQcml2YXRlRmllbGQgfCBQcml2YXRlTWV0aG9kKSkpCiAgICAgICAgICwgbV9jbGFzc0VsZW1l
bnRUYWcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRhZykpCiAgICAgICAgICwgbV9pc092ZXJyaWRk
ZW5CeUR1cGxpY2F0ZShmYWxzZSkKICAgICB7CkBAIC0yNzksNyArMjc5LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICwgbV90eXBlKHR5cGUpCiAgICAgICAgICwgbV9uZWVkc1N1cGVyQmlu
ZGluZyhzdXBlckJpbmRpbmcgPT0gU3VwZXJCaW5kaW5nOjpOZWVkZWQpCiAgICAgICAgICwgbV9w
dXRUeXBlKHB1dFR5cGUpCi0gICAgICAgICwgbV9pc1ByaXZhdGUoISEodHlwZSAmIFByaXZhdGUp
KQorICAgICAgICAsIG1faXNQcml2YXRlKCEhKHR5cGUgJiAoUHJpdmF0ZUZpZWxkIHwgUHJpdmF0
ZU1ldGhvZCkpKQogICAgICAgICAsIG1fY2xhc3NFbGVtZW50VGFnKHN0YXRpY19jYXN0PHVuc2ln
bmVkPih0YWcpKQogICAgICAgICAsIG1faXNPdmVycmlkZGVuQnlEdXBsaWNhdGUoZmFsc2UpCiAg
ICAgewpAQCAtMjkyLDcgKzI5Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAsIG1fdHlw
ZSh0eXBlKQogICAgICAgICAsIG1fbmVlZHNTdXBlckJpbmRpbmcoc3VwZXJCaW5kaW5nID09IFN1
cGVyQmluZGluZzo6TmVlZGVkKQogICAgICAgICAsIG1fcHV0VHlwZShwdXRUeXBlKQotICAgICAg
ICAsIG1faXNQcml2YXRlKCEhKHR5cGUgJiBQcml2YXRlKSkKKyAgICAgICAgLCBtX2lzUHJpdmF0
ZSghISh0eXBlICYgKFByaXZhdGVGaWVsZCB8IFByaXZhdGVNZXRob2QpKSkKICAgICAgICAgLCBt
X2NsYXNzRWxlbWVudFRhZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4odGFnKSkKICAgICAgICAgLCBt
X2lzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlKGZhbHNlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5jcHAKaW5kZXggZTY0YjYyMzJjMTUuLjUzNGMzMDI5MDVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApAQCAtMjAwLDYgKzIwMCw3IEBAIEZ1bmN0
aW9uTWV0YWRhdGFOb2RlOjpGdW5jdGlvbk1ldGFkYXRhTm9kZSgKICAgICAgICAgLCBtX2NvbnN0
cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkKICAgICAg
ICAgLCBtX2NsYXNzRmllbGRzSW5pdGlhbGl6ZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENsYXNz
RmllbGRzSW5pdGlhbGl6ZXI6Ok5vdE5lZWRlZCkpCiAgICAgICAgICwgbV9pc0Fycm93RnVuY3Rp
b25Cb2R5RXhwcmVzc2lvbihpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKKyAgICAgICAg
LCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50KHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcml2YXRl
QnJhbmRSZXF1aXJlbWVudDo6Tm9uZSkpCiAgICAgICAgICwgbV9wYXJzZU1vZGUobW9kZSkKICAg
ICAgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQogICAgICAgICAsIG1fZW5kQ29sdW1u
KGVuZENvbHVtbikKQEAgLTIyNCw2ICsyMjUsNyBAQCBGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVu
Y3Rpb25NZXRhZGF0YU5vZGUoCiAgICAgICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCiAgICAgICAgICwgbV9jbGFzc0ZpZWxkc0lu
aXRpYWxpemVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihDbGFzc0ZpZWxkc0luaXRpYWxpemVyOjpO
b3ROZWVkZWQpKQogICAgICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24oaXNB
cnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCisgICAgICAgICwgbV9wcml2YXRlQnJhbmRSZXF1
aXJlbWVudChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5v
bmUpKQogICAgICAgICAsIG1fcGFyc2VNb2RlKG1vZGUpCiAgICAgICAgICwgbV9zdGFydENvbHVt
bihzdGFydENvbHVtbikKICAgICAgICAgLCBtX2VuZENvbHVtbihlbmRDb2x1bW4pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggM2NhNDJmOGJiYWEuLjAyMTBmYTdmMjJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC03MDcsNyArNzA3LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgZW51bSBjbGFzcyBDbGFzc0VsZW1lbnRUYWcgOiB1aW50OF90IHsg
Tm8sIEluc3RhbmNlLCBTdGF0aWMsIExhc3RUYWcgfTsKICAgICBjbGFzcyBQcm9wZXJ0eU5vZGUg
ZmluYWwgOiBwdWJsaWMgUGFyc2VyQXJlbmFGcmVlYWJsZSB7CiAgICAgcHVibGljOgotICAgICAg
ICBlbnVtIFR5cGUgOiB1aW50OF90IHsgQ29uc3RhbnQgPSAxLCBHZXR0ZXIgPSAyLCBTZXR0ZXIg
PSA0LCBDb21wdXRlZCA9IDgsIFNob3J0aGFuZCA9IDE2LCBTcHJlYWQgPSAzMiwgUHJpdmF0ZSA9
IDY0IH07CisgICAgICAgIGVudW0gVHlwZSA6IHVpbnQ4X3QgeyBDb25zdGFudCA9IDEsIEdldHRl
ciA9IDIsIFNldHRlciA9IDQsIENvbXB1dGVkID0gOCwgU2hvcnRoYW5kID0gMTYsIFNwcmVhZCA9
IDMyLCBQcml2YXRlRmllbGQgPSA2NCwgUHJpdmF0ZU1ldGhvZCA9IDEyOCB9OwogICAgICAgICBl
bnVtIFB1dFR5cGUgOiB1aW50OF90IHsgVW5rbm93biwgS25vd25EaXJlY3QgfTsKIAogICAgICAg
ICBQcm9wZXJ0eU5vZGUoY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiwgVHlwZSwg
UHV0VHlwZSwgU3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcpOwpAQCAtNzM3LDcgKzczNyw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBtX25hbWU7CiAg
ICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHJlc3Npb247CiAgICAgICAgIEV4cHJlc3Npb25O
b2RlKiBtX2Fzc2lnbjsKLSAgICAgICAgdW5zaWduZWQgbV90eXBlIDogNzsKKyAgICAgICAgdW5z
aWduZWQgbV90eXBlOwogICAgICAgICB1bnNpZ25lZCBtX25lZWRzU3VwZXJCaW5kaW5nIDogMTsK
ICAgICAgICAgdW5zaWduZWQgbV9wdXRUeXBlIDogMTsKICAgICAgICAgdW5zaWduZWQgbV9pc1By
aXZhdGUgOiAxOwpAQCAtMjA0Miw2ICsyMDQyLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZvaWQgc2V0RWNtYU5hbWUoY29uc3QgSWRlbnRpZmllciYgZWNtYU5hbWUpIHsgbV9lY21hTmFt
ZSA9IGVjbWFOYW1lOyB9CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGVjbWFOYW1lKCkgeyBy
ZXR1cm4gbV9pZGVudC5pc0VtcHR5KCkgPyBtX2VjbWFOYW1lIDogbV9pZGVudDsgfQogCisgICAg
ICAgIHZvaWQgc2V0UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoUHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpIHsgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihwcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7IH0KKyAgICAg
ICAgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSB7IHJl
dHVybiBzdGF0aWNfY2FzdDxQcml2YXRlQnJhbmRSZXF1aXJlbWVudD4obV9wcml2YXRlQnJhbmRS
ZXF1aXJlbWVudCk7IH0KKwogICAgICAgICBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2RlKCkgeyBy
ZXR1cm4gbV9mdW5jdGlvbk1vZGU7IH0KIAogICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQo
KSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uTmFtZVN0YXJ0OyB9CkBAIC0yMDg2LDYgKzIwODks
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQg
OiAyOwogICAgICAgICB1bnNpZ25lZCBtX2NsYXNzRmllbGRzSW5pdGlhbGl6ZXIgOiAxOwogICAg
ICAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uIDogMTsKKyAgICAg
ICAgdW5zaWduZWQgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA6IDE7CiAgICAgICAgIFNvdXJj
ZVBhcnNlTW9kZSBtX3BhcnNlTW9kZTsKICAgICAgICAgRnVuY3Rpb25Nb2RlIG1fZnVuY3Rpb25N
b2RlOwogICAgICAgICBJZGVudGlmaWVyIG1faWRlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAKaW5kZXggN2RlMWRjMTc0NmYuLmEyOTQ3ZjVhMDFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yOTUwLDE1ICsyOTUwLDIwIEBAIHBh
cnNlTWV0aG9kOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUFJJVkFURU5BTUU6
IHsKICAgICAgICAgICAgIEFTU0VSVChPcHRpb25zOjp1c2VDbGFzc0ZpZWxkcygpKTsKLSAgICAg
ICAgICAgIEpTVG9rZW4gdG9rZW4gPSBtX3Rva2VuOwogICAgICAgICAgICAgaWRlbnQgPSBtX3Rv
a2VuLm1fZGF0YS5pZGVudDsKICAgICAgICAgICAgIGZhaWxJZlRydWUodGFnID09IENsYXNzRWxl
bWVudFRhZzo6U3RhdGljLCAiU3RhdGljIGNsYXNzIGVsZW1lbnQgY2Fubm90IGJlIHByaXZhdGUi
KTsKICAgICAgICAgICAgIGZhaWxJZlRydWUoaXNHZXR0ZXIgfHwgaXNTZXR0ZXIsICJDYW5ub3Qg
cGFyc2UgY2xhc3MgbWV0aG9kIHdpdGggcHJpdmF0ZSBuYW1lIik7CiAgICAgICAgICAgICBBU1NF
UlQoaWRlbnQpOwogICAgICAgICAgICAgbmV4dCgpOwotICAgICAgICAgICAgZmFpbElmVHJ1ZSht
YXRjaEFuZFVwZGF0ZShPUEVOUEFSRU4sIHRva2VuKSwgIkNhbm5vdCBwYXJzZSBjbGFzcyBtZXRo
b2Qgd2l0aCBwcml2YXRlIG5hbWUiKTsKKyAgICAgICAgICAgIGlmIChPcHRpb25zOjp1c2VQcml2
YXRlTWV0aG9kcygpICYmIG1hdGNoKE9QRU5QQVJFTikpIHsKKyAgICAgICAgICAgICAgICBzZW1h
bnRpY0ZhaWxJZlRydWUoY2xhc3NTY29wZS0+ZGVjbGFyZVByaXZhdGVNZXRob2QoKmlkZW50KSAm
IERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb24sICJDYW5ub3Qg
ZGVjbGFyZSBwcml2YXRlIG1ldGhvZCB0d2ljZSIpOworICAgICAgICAgICAgICAgIHR5cGUgPSBz
dGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KHR5cGUgfCBQcm9wZXJ0eU5vZGU6OlByaXZh
dGVNZXRob2QpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBmYWlsSWZUcnVlKG1hdGNoKE9QRU5QQVJFTiksICJDYW5ub3QgcGFyc2UgY2xhc3Mg
bWV0aG9kIHdpdGggcHJpdmF0ZSBuYW1lIik7CiAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRy
dWUoY2xhc3NTY29wZS0+ZGVjbGFyZVByaXZhdGVOYW1lKCppZGVudCkgJiBEZWNsYXJhdGlvblJl
c3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uLCAiQ2Fubm90IGRlY2xhcmUgcHJpdmF0
ZSBmaWVsZCB0d2ljZSIpOwotICAgICAgICAgICAgdHlwZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5
Tm9kZTo6VHlwZT4odHlwZSB8IFByb3BlcnR5Tm9kZTo6UHJpdmF0ZSk7CisgICAgICAgICAgICB0
eXBlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlIHwgUHJvcGVydHlOb2Rl
OjpQcml2YXRlRmllbGQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
ZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDgwMWI4NDI3
OTJjLi45ZDk2ODk1MWYyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBA
IC01MDUsNiArNTA1LDI3IEBAIHB1YmxpYzoKICAgICAgICAgbV9sZXhpY2FsVmFyaWFibGVzLnVz
ZVByaXZhdGVOYW1lKGlkZW50KTsKICAgICB9CiAKKyAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sg
ZGVjbGFyZVByaXZhdGVNZXRob2QoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgeworICAg
ICAgICBBU1NFUlQobV9hbGxvd3NMZXhpY2FsRGVjbGFyYXRpb25zKTsKKyAgICAgICAgRGVjbGFy
YXRpb25SZXN1bHRNYXNrIHJlc3VsdCA9IERlY2xhcmF0aW9uUmVzdWx0OjpWYWxpZDsKKyAgICAg
ICAgYm9vbCBhZGRSZXN1bHQgPSBtX2xleGljYWxWYXJpYWJsZXMuZGVjbGFyZVByaXZhdGVNZXRo
b2QoaWRlbnQpOworCisgICAgICAgIGlmICghYWRkUmVzdWx0KSB7CisgICAgICAgICAgICByZXN1
bHQgfD0gRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbjsKKyAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICAvLyBXZSBkZWNs
YXJlIGl0IHNpbmNlIHdlIHN0b3JlIHByaXZhdGUgbWV0aG9kcyBvbiBjbGFzcworICAgICAgICAv
LyBzY29wZS4KKyAgICAgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmF0aW9uUmVzdWx0
ID0gZGVjbGFyZUxleGljYWxWYXJpYWJsZSgmaWRlbnQsIGZhbHNlKTsKKyAgICAgICAgQVNTRVJU
X1VOVVNFRChkZWNsYXJhdGlvblJlc3VsdCwgZGVjbGFyYXRpb25SZXN1bHQgPT0gRGVjbGFyYXRp
b25SZXN1bHQ6OlZhbGlkKTsKKyAgICAgICAgdXNlVmFyaWFibGUoJmlkZW50LCBmYWxzZSk7Cisg
ICAgICAgIGFkZENsb3NlZFZhcmlhYmxlQ2FuZGlkYXRlVW5jb25kaXRpb25hbGx5KGlkZW50Lmlt
cGwoKSk7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBEZWNsYXJhdGlv
blJlc3VsdE1hc2sgZGVjbGFyZVByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQog
ICAgIHsKICAgICAgICAgQVNTRVJUKG1fYWxsb3dzTGV4aWNhbERlY2xhcmF0aW9ucyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKaW5kZXggNWQ1ODgyYzc1NzEu
LjM5MWQ4MDkwZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlck1vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rl
cy5oCkBAIC0zNyw2ICszNyw4IEBAIGVudW0gY2xhc3MgSlNQYXJzZXJTY3JpcHRNb2RlIHsgQ2xh
c3NpYywgTW9kdWxlIH07CiBlbnVtIGNsYXNzIENvbnN0cnVjdG9yS2luZCB7IE5vbmUsIEJhc2Us
IEV4dGVuZHMgfTsKIGVudW0gY2xhc3MgU3VwZXJCaW5kaW5nIHsgTmVlZGVkLCBOb3ROZWVkZWQg
fTsKIAorZW51bSBjbGFzcyBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCB7IE5vbmUsIE5lZWRlZCB9
OworCiBlbnVtIGNsYXNzIENvZGVHZW5lcmF0aW9uTW9kZSA6IHVpbnQ4X3QgewogICAgIERlYnVn
Z2VyID0gMSA8PCAwLAogICAgIFR5cGVQcm9maWxlciA9IDEgPDwgMSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwCmluZGV4IGUz
MmU5MjYzZGYyLi44Y2E4OTUzNjM3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwCkBAIC0xMDcsNyArMTA3LDIxIEBAIHZv
aWQgVmFyaWFibGVFbnZpcm9ubWVudDo6bWFya1ZhcmlhYmxlQXNFeHBvcnRlZChjb25zdCBSZWZQ
dHI8VW5pcXVlZFN0cmluZ0ltcGw+CiAgICAgZmluZFJlc3VsdC0+dmFsdWUuc2V0SXNFeHBvcnRl
ZCgpOwogfQogCi1ib29sIFZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlTmFtZShj
b25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQordm9pZCBWYXJpYWJs
ZUVudmlyb25tZW50OjptYXJrUHJpdmF0ZU5hbWVBc0RlY2xhcmVkKGNvbnN0IElkZW50aWZpZXIm
IGlkZW50aWZpZXIpCit7CisgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICByZXR1cm47Cisg
ICAgYXV0byBmaW5kUmVzdWx0ID0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZmluZChpZGVu
dGlmaWVyLmltcGwoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoZmluZFJlc3VsdCAhPSBtX3JhcmVE
YXRhLT5tX3ByaXZhdGVOYW1lcy5lbmQoKSk7CisgICAgZmluZFJlc3VsdC0+dmFsdWUuc2V0SXNE
ZWNsYXJlZCgpOworfQorCitib29sIFZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRl
TWV0aG9kKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCit7Cisg
ICAgcmV0dXJuIGRlY2xhcmVQcml2YXRlTmFtZShpZGVudGlmaWVyLCBQcml2YXRlTmFtZUVudHJ5
OjpUcmFpdHM6OklzTWV0aG9kKTsKK30KKworYm9vbCBWYXJpYWJsZUVudmlyb25tZW50OjpkZWNs
YXJlUHJpdmF0ZU5hbWUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmll
ciwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzIGFkZGlvbmFsVHJhaXRzKQogewogICAgIGlmICgh
bV9yYXJlRGF0YSkKICAgICAgICAgbV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8VmFyaWFi
bGVFbnZpcm9ubWVudFJhcmVEYXRhPigpOwpAQCAtMTE1LDE4ICsxMjksMTcgQEAgYm9vbCBWYXJp
YWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZU5hbWUoY29uc3QgUmVmUHRyPFVuaXF1ZWRT
dHJpbmdJbXBsPiYgaWQKICAgICBhdXRvIGZpbmRSZXN1bHQgPSBtX3JhcmVEYXRhLT5tX3ByaXZh
dGVOYW1lcy5maW5kKGlkZW50aWZpZXIpOwogCiAgICAgaWYgKGZpbmRSZXN1bHQgPT0gbV9yYXJl
RGF0YS0+bV9wcml2YXRlTmFtZXMuZW5kKCkpIHsKLSAgICAgICAgUHJpdmF0ZU5hbWVFbnRyeSBl
bnRyeShQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzRGVjbGFyZWQpOworICAgICAgICBQcml2
YXRlTmFtZUVudHJ5IGVudHJ5KFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNEZWNsYXJlZCB8
IGFkZGlvbmFsVHJhaXRzKTsKIAogICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmFyZURhdGEt
Pm1fcHJpdmF0ZU5hbWVzLmFkZChpZGVudGlmaWVyLCBlbnRyeSk7CiAgICAgICAgIHJldHVybiBh
ZGRSZXN1bHQuaXNOZXdFbnRyeTsKICAgICB9CiAKLQogICAgIGlmIChmaW5kUmVzdWx0LT52YWx1
ZS5pc0RlY2xhcmVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gRXJyb3I6IGRlY2xhcmlu
ZyBhIGR1cGxpY2F0ZSBwcml2YXRlIG5hbWUuCiAKICAgICAvLyBpdCB3YXMgcHJldmlvdXNseSB1
c2VkLCBtYXJrIGl0IGFzIGRlY2xhcmVkLgotICAgIFByaXZhdGVOYW1lRW50cnkgZW50cnkoUHJp
dmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc0RlY2xhcmVkIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJh
aXRzOjpJc1VzZWQpOworICAgIFByaXZhdGVOYW1lRW50cnkgZW50cnkoUHJpdmF0ZU5hbWVFbnRy
eTo6VHJhaXRzOjpJc0RlY2xhcmVkIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc1VzZWQg
fCBhZGRpb25hbFRyYWl0cyk7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3JhcmVEYXRhLT5tX3By
aXZhdGVOYW1lcy5zZXQoaWRlbnRpZmllciwgZW50cnkpOwogICAgIHJldHVybiAhYWRkUmVzdWx0
LmlzTmV3RW50cnk7CiB9CkBAIC0xNTksNiArMTcyLDI1IEBAIENvbXBhY3RWYXJpYWJsZUVudmly
b25tZW50OjpDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudChjb25zdCBWYXJpYWJsZUVudmlyb25t
ZW50CiAgICAgfSk7CiAKICAgICBtX2hhc2ggPSAwOworICAgIGlmIChlbnYucHJpdmF0ZU5hbWVz
U2l6ZSgpKSB7CisgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8VW5pcXVlZFN0cmluZ0ltcGwqLCBQ
cml2YXRlTmFtZUVudHJ5PiwgMTY+IHNvcnRlZFByaXZhdGVFbnRyaWVzOworICAgICAgICBzb3J0
ZWRQcml2YXRlRW50cmllcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGVudi5wcml2YXRlTmFtZXNT
aXplKCkpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVudHJpZXMgOiBlbnYucHJpdmF0ZU5h
bWVzKCkpCisgICAgICAgICAgICBzb3J0ZWRQcml2YXRlRW50cmllcy5hcHBlbmQoe2VudHJpZXMu
a2V5LmdldCgpLCBlbnRyaWVzLnZhbHVlfSk7CisKKyAgICAgICAgc3RkOjpzb3J0KHNvcnRlZFBy
aXZhdGVFbnRyaWVzLmJlZ2luKCksIHNvcnRlZFByaXZhdGVFbnRyaWVzLmVuZCgpLCBbXSAoY29u
c3QgYXV0byYgYSwgY29uc3QgYXV0byYgYikgeworICAgICAgICAgICAgcmV0dXJuIGEuZmlyc3Qg
PCBiLmZpcnN0OworICAgICAgICB9KTsKKworICAgICAgICBtX3ByaXZhdGVBY2Nlc3NOYW1lcy5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KGVudi5wcml2YXRlTmFtZXNTaXplKCkpOworICAgICAgICBm
b3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBzb3J0ZWRQcml2YXRlRW50cmllcykgeworICAgICAgICAg
ICAgbV9wcml2YXRlQWNjZXNzTmFtZXMuYXBwZW5kKHBhaXIuZmlyc3QpOworICAgICAgICAgICAg
bV9wcml2YXRlTmFtZU1ldGFkYXRhLmFwcGVuZChwYWlyLnNlY29uZCk7CisgICAgICAgICAgICBt
X2hhc2ggXj0gcGFpci5maXJzdC0+aGFzaCgpOworICAgICAgICAgICAgbV9oYXNoICs9IHBhaXIu
c2Vjb25kLmJpdHMoKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIG1fdmFyaWFibGVzLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoc29ydGVkRW50cmllcy5zaXplKCkpOwogICAgIG1fdmFyaWFibGVN
ZXRhZGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNvcnRlZEVudHJpZXMuc2l6ZSgpKTsKICAg
ICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBzb3J0ZWRFbnRyaWVzKSB7CkBAIC0xODIsNiArMjE0
LDEwIEBAIGJvb2wgQ29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQ6Om9wZXJhdG9yPT0oY29uc3Qg
Q29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQmIG90CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBpZiAobV92YXJpYWJsZU1ldGFkYXRhICE9IG90aGVyLm1fdmFyaWFibGVNZXRhZGF0YSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX3ByaXZhdGVBY2Nlc3NOYW1lcyAhPSBvdGhl
ci5tX3ByaXZhdGVBY2Nlc3NOYW1lcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICht
X3ByaXZhdGVOYW1lTWV0YWRhdGEgIT0gb3RoZXIubV9wcml2YXRlTmFtZU1ldGFkYXRhKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE5NSw2ICsyMzEs
MTIgQEAgVmFyaWFibGVFbnZpcm9ubWVudCBDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudDo6dG9W
YXJpYWJsZUVudmlyb25tZW50KCkgY29uc3QKICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSA9IG1fdmFyaWFibGVNZXRhZGF0YVtpXTsKICAgICB9CiAKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fcHJpdmF0ZUFjY2Vzc05hbWVzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIGF1
dG8gYWRkUmVzdWx0ID0gcmVzdWx0LmFkZFByaXZhdGVOYW1lKG1fcHJpdmF0ZUFjY2Vzc05hbWVz
W2ldKTsKKyAgICAgICAgQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAgYWRk
UmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1fcHJpdmF0ZU5hbWVNZXRhZGF0YVtpXTsKKyAgICB9
CisKICAgICBpZiAobV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZCkKICAgICAgICAgcmVzdWx0Lm1hcmtB
bGxWYXJpYWJsZXNBc0NhcHR1cmVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKaW5kZXggNThmMWEwYjU2MjMuLjkwNmQzMzA5
OWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52
aXJvbm1lbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52
aXJvbm1lbnQuaApAQCAtODYsMTEgKzg2LDE2IEBAIHN0cnVjdCBWYXJpYWJsZUVudmlyb25tZW50
RW50cnlIYXNoVHJhaXRzIDogSGFzaFRyYWl0czxWYXJpYWJsZUVudmlyb25tZW50RW50cnk+CiB9
OwogCiBzdHJ1Y3QgUHJpdmF0ZU5hbWVFbnRyeSB7CisgICAgZnJpZW5kIGNsYXNzIENhY2hlZFBy
aXZhdGVOYW1lRW50cnk7CisKIHB1YmxpYzoKICAgICBQcml2YXRlTmFtZUVudHJ5KHVpbnQxNl90
IHRyYWl0cyA9IDApIHsgbV9iaXRzID0gdHJhaXRzOyB9CiAKICAgICBBTFdBWVNfSU5MSU5FIGJv
b2wgaXNVc2VkKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNVc2VkOyB9CiAgICAgQUxXQVlT
X0lOTElORSBib29sIGlzRGVjbGFyZWQoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc0RlY2xh
cmVkOyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzTWV0aG9kKCkgY29uc3QgeyByZXR1cm4g
bV9iaXRzICYgSXNNZXRob2Q7IH0KKworICAgIGJvb2wgaXNQcml2YXRlQWNjZXNzKCkgY29uc3Qg
eyByZXR1cm4gaXNNZXRob2QoKTsgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzVXNl
ZCgpIHsgbV9iaXRzIHw9IElzVXNlZDsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0Rl
Y2xhcmVkKCkgeyBtX2JpdHMgfD0gSXNEZWNsYXJlZDsgfQpAQCAtMTAzLDggKzEwOCwxMCBAQCBw
dWJsaWM6CiAgICAgfQogCiAgICAgZW51bSBUcmFpdHMgOiB1aW50MTZfdCB7CisgICAgICAgIE5v
bmUgPSAwLAogICAgICAgICBJc1VzZWQgPSAxIDw8IDAsCiAgICAgICAgIElzRGVjbGFyZWQgPSAx
IDw8IDEsCisgICAgICAgIElzTWV0aG9kID0gMSA8PCAyLAogICAgIH07CiAKIHByaXZhdGU6CkBA
IC0xMTgsOCArMTI1LDEwIEBAIHN0cnVjdCBQcml2YXRlTmFtZUVudHJ5SGFzaFRyYWl0cyA6IEhh
c2hUcmFpdHM8UHJpdmF0ZU5hbWVFbnRyeT4gewogY2xhc3MgVmFyaWFibGVFbnZpcm9ubWVudCB7
CiBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+
LCBWYXJpYWJsZUVudmlyb25tZW50RW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRz
PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+LCBWYXJpYWJsZUVudmlyb25tZW50RW50cnlIYXNo
VHJhaXRzPiBNYXA7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1w
bD4sIFByaXZhdGVOYW1lRW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0
cjxVbmlxdWVkU3RyaW5nSW1wbD4+LCBQcml2YXRlTmFtZUVudHJ5SGFzaFRyYWl0cz4gUHJpdmF0
ZU5hbWVzOworICAgIAogcHVibGljOgorICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+LCBQcml2YXRlTmFtZUVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRy
YWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiwgUHJpdmF0ZU5hbWVFbnRyeUhhc2hUcmFp
dHM+IFByaXZhdGVOYW1lczsKKwogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQoKQogICAgIHsgfQog
ICAgIFZhcmlhYmxlRW52aXJvbm1lbnQoVmFyaWFibGVFbnZpcm9ubWVudCYmIG90aGVyKQpAQCAt
MTQwLDYgKzE0OSwxNiBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSBNYXA6OmNvbnN0X2l0
ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmVuZCgpOyB9CiAgICAgQUxXQVlTX0lO
TElORSBNYXA6OkFkZFJlc3VsdCBhZGQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYg
aWRlbnRpZmllcikgeyByZXR1cm4gbV9tYXAuYWRkKGlkZW50aWZpZXIsIFZhcmlhYmxlRW52aXJv
bm1lbnRFbnRyeSgpKTsgfQogICAgIEFMV0FZU19JTkxJTkUgTWFwOjpBZGRSZXN1bHQgYWRkKGNv
bnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsgcmV0dXJuIGFkZChpZGVudGlmaWVyLmltcGwo
KSk7IH0KKworICAgIEFMV0FZU19JTkxJTkUgUHJpdmF0ZU5hbWVzOjpBZGRSZXN1bHQgYWRkUHJp
dmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyByZXR1cm4gYWRkUHJpdmF0
ZU5hbWUoaWRlbnRpZmllci5pbXBsKCkpOyB9CisgICAgQUxXQVlTX0lOTElORSBQcml2YXRlTmFt
ZXM6OkFkZFJlc3VsdCBhZGRQcml2YXRlTmFtZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0lt
cGw+JiBpZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAg
ICAgICAgbV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8VmFyaWFibGVFbnZpcm9ubWVudFJh
cmVEYXRhPigpOworCisgICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5h
ZGQoaWRlbnRpZmllciwgUHJpdmF0ZU5hbWVFbnRyeSgpKTsKKyAgICB9CisKICAgICBBTFdBWVNf
SU5MSU5FIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX21hcC5zaXplKCkgKyBwcml2
YXRlTmFtZXNTaXplKCk7IH0KICAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIG1hcFNpemUoKSBj
b25zdCB7IHJldHVybiBtX21hcC5zaXplKCk7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgY29u
dGFpbnMoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikgY29uc3Qg
eyByZXR1cm4gbV9tYXAuY29udGFpbnMoaWRlbnRpZmllcik7IH0KQEAgLTE2MCw4ICsxNzksMTMg
QEAgcHVibGljOgogCiAgICAgdHlwZWRlZiBXVEY6Okl0ZXJhdG9yUmFuZ2U8UHJpdmF0ZU5hbWVz
OjppdGVyYXRvcj4gUHJpdmF0ZU5hbWVzUmFuZ2U7CiAKKyAgICB2b2lkIG1hcmtQcml2YXRlTmFt
ZUFzRGVjbGFyZWQoY29uc3QgSWRlbnRpZmllciYpOworCisgICAgYm9vbCBkZWNsYXJlUHJpdmF0
ZU1ldGhvZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBkZWNsYXJlUHJp
dmF0ZU1ldGhvZChpZGVudGlmaWVyLmltcGwoKSk7IH0KKyAgICBib29sIGRlY2xhcmVQcml2YXRl
TWV0aG9kKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpOworCiAg
ICAgYm9vbCBkZWNsYXJlUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikg
eyByZXR1cm4gZGVjbGFyZVByaXZhdGVOYW1lKGlkZW50aWZpZXIuaW1wbCgpKTsgfQotICAgIGJv
b2wgZGVjbGFyZVByaXZhdGVOYW1lKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlk
ZW50aWZpZXIpOworICAgIGJvb2wgZGVjbGFyZVByaXZhdGVOYW1lKGNvbnN0IFJlZlB0cjxVbmlx
dWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIsIFByaXZhdGVOYW1lRW50cnk6OlRyYWl0cyBhZGRp
b25hbFRyYWl0cyA9IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6Tm9uZSk7CiAgICAgdm9pZCB1
c2VQcml2YXRlTmFtZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVy
KTsKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdXNlUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmll
ciYgaWRlbnRpZmllcikKICAgICB7CkBAIC0xODEsNiArMjA1LDE5IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLnNpemUoKTsKICAgICB9CiAKKyAg
ICBBTFdBWVNfSU5MSU5FIGJvb2wgaGFzUHJpdmF0ZUFjY2VzcygpIGNvbnN0CisgICAgeworICAg
ICAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAg
ICAgZm9yIChhdXRvIGVudHJ5IDogcHJpdmF0ZU5hbWVzKCkpIHsKKyAgICAgICAgICAgIGlmIChl
bnRyeS52YWx1ZS5pc1ByaXZhdGVBY2Nlc3MoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICBBTFdB
WVNfSU5MSU5FIGJvb2wgaGFzUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmll
cikKICAgICB7CiAgICAgICAgIGlmICghbV9yYXJlRGF0YSkKQEAgLTI2Myw2ICszMDAsOSBAQCBw
cml2YXRlOgogCiAgICAgVmVjdG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+IG1fdmFyaWFi
bGVzOwogICAgIFZlY3RvcjxWYXJpYWJsZUVudmlyb25tZW50RW50cnk+IG1fdmFyaWFibGVNZXRh
ZGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4gbV9wcml2YXRlQWNj
ZXNzTmFtZXM7CisgICAgVmVjdG9yPFByaXZhdGVOYW1lRW50cnk+IG1fcHJpdmF0ZU5hbWVNZXRh
ZGF0YTsKKwogICAgIHVuc2lnbmVkIG1faGFzaDsKICAgICBib29sIG1faXNFdmVyeXRoaW5nQ2Fw
dHVyZWQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2Fj
aGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMu
Y3BwCmluZGV4IDg4NWU0MmZjOGMxLi41OTk5NWJjYjYzMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcApAQCAtMTExNCw2ICsxMTE0LDIyIEBAIHBy
aXZhdGU6CiAgICAgaW50cHRyX3QgbV9iaXRzOwogfTsKIAorY2xhc3MgQ2FjaGVkUHJpdmF0ZU5h
bWVFbnRyeSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8UHJpdmF0ZU5hbWVFbnRyeT4geworcHVibGlj
OgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBQcml2YXRlTmFtZUVudHJ5JiBwcml2
YXRlTmFtZUVudHJ5KQorICAgIHsKKyAgICAgICAgbV9iaXRzID0gcHJpdmF0ZU5hbWVFbnRyeS5t
X2JpdHM7CisgICAgfQorCisgICAgdm9pZCBkZWNvZGUoRGVjb2RlciYsIFByaXZhdGVOYW1lRW50
cnkmIHByaXZhdGVOYW1lRW50cnkpIGNvbnN0CisgICAgeworICAgICAgICBwcml2YXRlTmFtZUVu
dHJ5Lm1fYml0cyA9IG1fYml0czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdWludDE2X3QgbV9i
aXRzOworfTsKKwogY2xhc3MgQ2FjaGVkU3ltYm9sVGFibGVSYXJlRGF0YSA6IHB1YmxpYyBDYWNo
ZWRPYmplY3Q8U3ltYm9sVGFibGU6OlN5bWJvbFRhYmxlUmFyZURhdGE+IHsKIHB1YmxpYzoKICAg
ICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTeW1ib2xUYWJsZTo6U3ltYm9s
VGFibGVSYXJlRGF0YSYgcmFyZURhdGEpCkBAIC0xMTI5LDcgKzExNDUsNyBAQCBwdWJsaWM6CiAg
ICAgfQogCiBwcml2YXRlOgotICAgIENhY2hlZEhhc2hTZXQ8Q2FjaGVkUmVmUHRyPENhY2hlZFVu
aXF1ZWRTdHJpbmdJbXBsPiwgU3RyaW5nUmVwSGFzaD4gbV9wcml2YXRlTmFtZXM7CisgICAgQ2Fj
aGVkSGFzaE1hcDxDYWNoZWRSZWZQdHI8Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGw+LCBDYWNoZWRQ
cml2YXRlTmFtZUVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5p
cXVlZFN0cmluZ0ltcGw+PiwgUHJpdmF0ZU5hbWVFbnRyeUhhc2hUcmFpdHM+IG1fcHJpdmF0ZU5h
bWVzOwogfTsKIAogY2xhc3MgQ2FjaGVkU3ltYm9sVGFibGUgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0
PFN5bWJvbFRhYmxlPiB7CkBAIC0xMTUzLDggKzExNjksMTAgQEAgcHVibGljOgogICAgICAgICBz
eW1ib2xUYWJsZS0+bV91c2VzTm9uU3RyaWN0RXZhbCA9IG1fdXNlc05vblN0cmljdEV2YWw7CiAg
ICAgICAgIHN5bWJvbFRhYmxlLT5tX25lc3RlZExleGljYWxTY29wZSA9IG1fbmVzdGVkTGV4aWNh
bFNjb3BlOwogICAgICAgICBzeW1ib2xUYWJsZS0+bV9zY29wZVR5cGUgPSBtX3Njb3BlVHlwZTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFN5bWJvbFRhYmxlOjpTeW1ib2xUYWJsZVJhcmVEYXRh
PiByYXJlRGF0YShtX3JhcmVEYXRhLmRlY29kZUFzUHRyKGRlY29kZXIpKTsKLSAgICAgICAgc3lt
Ym9sVGFibGUtPm1fcmFyZURhdGEgPSBXVEZNb3ZlKHJhcmVEYXRhKTsKKyAgICAgICAgaWYgKCFt
X3JhcmVEYXRhLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFN5bWJv
bFRhYmxlOjpTeW1ib2xUYWJsZVJhcmVEYXRhPiByYXJlRGF0YShtX3JhcmVEYXRhLmRlY29kZUFz
UHRyKGRlY29kZXIpKTsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5tX3JhcmVEYXRhID0gV1RG
TW92ZShyYXJlRGF0YSk7CisgICAgICAgIH0KICAgICAgICAgU2NvcGVkQXJndW1lbnRzVGFibGUq
IHNjb3BlZEFyZ3VtZW50c1RhYmxlID0gbV9hcmd1bWVudHMuZGVjb2RlKGRlY29kZXIpOwogICAg
ICAgICBpZiAoc2NvcGVkQXJndW1lbnRzVGFibGUpCiAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+
bV9hcmd1bWVudHMuc2V0KGRlY29kZXIudm0oKSwgc3ltYm9sVGFibGUsIHNjb3BlZEFyZ3VtZW50
c1RhYmxlKTsKQEAgLTE2ODEsMjEgKzE2OTksMjEgQEAgcHVibGljOgogICAgIHZvaWQgZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpSYXJl
RGF0YSYgcmFyZURhdGEpCiAgICAgewogICAgICAgICBtX2NsYXNzU291cmNlLmVuY29kZShlbmNv
ZGVyLCByYXJlRGF0YS5tX2NsYXNzU291cmNlKTsKLSAgICAgICAgbV9wYXJlbnRTY29wZVREWlZh
cmlhYmxlcy5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9wYXJlbnRTY29wZVREWlZhcmlhYmxl
cyk7CisgICAgICAgIG1fcGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50LmVuY29kZShlbmNv
ZGVyLCByYXJlRGF0YS5tX3BhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCk7CiAgICAgfQog
CiAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlJhcmVEYXRhKiBkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikgY29uc3QKICAgICB7CiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlOjpSYXJlRGF0YSogcmFyZURhdGEgPSBuZXcgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6
OlJhcmVEYXRhIHsgfTsKICAgICAgICAgbV9jbGFzc1NvdXJjZS5kZWNvZGUoZGVjb2RlciwgcmFy
ZURhdGEtPm1fY2xhc3NTb3VyY2UpOwotICAgICAgICBhdXRvIHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzID0gbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5kZWNvZGUoZGVjb2Rlcik7Ci0gICAgICAg
IHJhcmVEYXRhLT5tX3BhcmVudFNjb3BlVERaVmFyaWFibGVzID0gV1RGTW92ZShwYXJlbnRTY29w
ZVREWlZhcmlhYmxlcyk7CisgICAgICAgIGF1dG8gcGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25t
ZW50ID0gbV9wYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQuZGVjb2RlKGRlY29kZXIpOwor
ICAgICAgICByYXJlRGF0YS0+bV9wYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQgPSBXVEZN
b3ZlKHBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCk7CiAgICAgICAgIHJldHVybiByYXJl
RGF0YTsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgQ2FjaGVkU291cmNlQ29kZVdpdGhvdXRQcm92
aWRlciBtX2NsYXNzU291cmNlOwotICAgIENhY2hlZENvbXBhY3RWYXJpYWJsZU1hcEhhbmRsZSBt
X3BhcmVudFNjb3BlVERaVmFyaWFibGVzOworICAgIENhY2hlZENvbXBhY3RWYXJpYWJsZU1hcEhh
bmRsZSBtX3BhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudDsKIH07CiAKIGNsYXNzIENhY2hl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU+IHsKQEAgLTE3MzEsNiArMTc0OSw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25l
ZCBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX3N1cGVyQmluZGluZzsgfQogICAgIHVu
c2lnbmVkIGRlcml2ZWRDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVyaXZlZENvbnRl
eHRUeXBlOyB9CiAgICAgdW5zaWduZWQgY2xhc3NGaWVsZHNJbml0aWFsaXplcigpIGNvbnN0IHsg
cmV0dXJuIG1fY2xhc3NGaWVsZHNJbml0aWFsaXplcjsgfQorICAgIHVuc2lnbmVkIHByaXZhdGVC
cmFuZFJlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVu
dDsgfQogCiAgICAgSWRlbnRpZmllciBuYW1lKERlY29kZXImIGRlY29kZXIpIGNvbnN0IHsgcmV0
dXJuIG1fbmFtZS5kZWNvZGUoZGVjb2Rlcik7IH0KICAgICBJZGVudGlmaWVyIGVjbWFOYW1lKERl
Y29kZXImIGRlY29kZXIpIGNvbnN0IHsgcmV0dXJuIG1fZWNtYU5hbWUuZGVjb2RlKGRlY29kZXIp
OyB9CkBAIC0xNzY1LDYgKzE3ODQsNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fZnVuY3Rp
b25Nb2RlIDogMjsgLy8gRnVuY3Rpb25Nb2RlCiAgICAgdW5zaWduZWQgbV9kZXJpdmVkQ29udGV4
dFR5cGU6IDI7CiAgICAgdW5zaWduZWQgbV9jbGFzc0ZpZWxkc0luaXRpYWxpemVyIDogMTsKKyAg
ICB1bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsKIAogICAgIENhY2hlZFB0
cjxDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGVSYXJlRGF0YT4gbV9yYXJlRGF0YTsKIApAQCAtMTgx
OCw2ICsxODM4LDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGNvbnN0cnVjdG9yS2luZCgpIGNv
bnN0IHsgcmV0dXJuIG1fY29uc3RydWN0b3JLaW5kOyB9CiAgICAgdW5zaWduZWQgZGVyaXZlZENv
bnRleHRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9kZXJpdmVkQ29udGV4dFR5cGU7IH0KICAgICB1
bnNpZ25lZCBjbGFzc0ZpZWxkc0luaXRpYWxpemVyKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc0Zp
ZWxkc0luaXRpYWxpemVyOyB9CisgICAgdW5zaWduZWQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQo
KSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50OyB9CiAgICAgdW5zaWdu
ZWQgZXZhbENvbnRleHRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9ldmFsQ29udGV4dFR5cGU7IH0K
ICAgICB1bnNpZ25lZCBoYXNUYWlsQ2FsbHMoKSBjb25zdCB7IHJldHVybiBtX2hhc1RhaWxDYWxs
czsgfQogICAgIHVuc2lnbmVkIGxpbmVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUNvdW50
OyB9CkBAIC0xODUxLDYgKzE4NzIsNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fY29uc3Ry
dWN0b3JLaW5kIDogMjsKICAgICB1bnNpZ25lZCBtX2Rlcml2ZWRDb250ZXh0VHlwZSA6IDI7CiAg
ICAgdW5zaWduZWQgbV9jbGFzc0ZpZWxkc0luaXRpYWxpemVyIDogMTsKKyAgICB1bnNpZ25lZCBt
X3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsKICAgICB1bnNpZ25lZCBtX2V2YWxDb250ZXh0
VHlwZSA6IDI7CiAgICAgdW5zaWduZWQgbV9oYXNUYWlsQ2FsbHMgOiAxOwogICAgIHVuc2lnbmVk
IG1fY29kZVR5cGUgOiAyOwpAQCAtMjA0OSw2ICsyMDcxLDcgQEAgQUxXQVlTX0lOTElORSBVbmxp
bmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soRGVjb2RlciYgZGVjb2RlciwgU3RydWN0
dXJlKgogICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoY2FjaGVkQ29kZUJsb2NrLmNvbnN0cnVjdG9y
S2luZCgpKQogICAgICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoY2FjaGVkQ29kZUJsb2NrLmRlcml2
ZWRDb250ZXh0VHlwZSgpKQogICAgICwgbV9jbGFzc0ZpZWxkc0luaXRpYWxpemVyKGNhY2hlZENv
ZGVCbG9jay5jbGFzc0ZpZWxkc0luaXRpYWxpemVyKCkpCisgICAgLCBtX3ByaXZhdGVCcmFuZFJl
cXVpcmVtZW50KGNhY2hlZENvZGVCbG9jay5wcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpKQogICAg
ICwgbV9ldmFsQ29udGV4dFR5cGUoY2FjaGVkQ29kZUJsb2NrLmV2YWxDb250ZXh0VHlwZSgpKQog
ICAgICwgbV9jb2RlVHlwZShjYWNoZWRDb2RlQmxvY2suY29kZVR5cGUoKSkKIApAQCAtMjEzNiw2
ICsyMTU5LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIENhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFVubGkKICAgICBtX3N1cGVyQmluZGluZyA9
IGV4ZWN1dGFibGUubV9zdXBlckJpbmRpbmc7CiAgICAgbV9kZXJpdmVkQ29udGV4dFR5cGUgPSBl
eGVjdXRhYmxlLm1fZGVyaXZlZENvbnRleHRUeXBlOwogICAgIG1fY2xhc3NGaWVsZHNJbml0aWFs
aXplciA9IGV4ZWN1dGFibGUubV9jbGFzc0ZpZWxkc0luaXRpYWxpemVyOworICAgIG1fcHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQgPSBleGVjdXRhYmxlLm1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ7
CiAKICAgICBtX3JhcmVEYXRhLmVuY29kZShlbmNvZGVyLCBleGVjdXRhYmxlLm1fcmFyZURhdGEu
Z2V0KCkpOwogCkBAIC0yMTc0LDYgKzIxOTgsNyBAQCBBTFdBWVNfSU5MSU5FIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShEZWNvZGVyJiBkZQog
ICAgICwgbV9zdXBlckJpbmRpbmcoY2FjaGVkRXhlY3V0YWJsZS5zdXBlckJpbmRpbmcoKSkKICAg
ICAsIG1fcGFyYW1ldGVyc1N0YXJ0T2Zmc2V0KGNhY2hlZEV4ZWN1dGFibGUucGFyYW1ldGVyc1N0
YXJ0T2Zmc2V0KCkpCiAgICAgLCBtX2NsYXNzRmllbGRzSW5pdGlhbGl6ZXIoY2FjaGVkRXhlY3V0
YWJsZS5jbGFzc0ZpZWxkc0luaXRpYWxpemVyKCkpCisgICAgLCBtX3ByaXZhdGVCcmFuZFJlcXVp
cmVtZW50KGNhY2hlZEV4ZWN1dGFibGUucHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSkKICAgICAs
IG1faXNDYWNoZWQoZmFsc2UpCiAgICAgLCBtX3R5cGVQcm9maWxpbmdTdGFydE9mZnNldChjYWNo
ZWRFeGVjdXRhYmxlLnR5cGVQcm9maWxpbmdTdGFydE9mZnNldCgpKQogICAgICwgbV90eXBlUHJv
ZmlsaW5nRW5kT2Zmc2V0KGNhY2hlZEV4ZWN1dGFibGUudHlwZVByb2ZpbGluZ0VuZE9mZnNldCgp
KQpAQCAtMjIzOSw2ICsyMjY0LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIENhY2hlZENvZGVCbG9j
azxDb2RlQmxvY2tUeXBlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnMKICAgICBtX2Nv
bnN0cnVjdG9yS2luZCA9IGNvZGVCbG9jay5tX2NvbnN0cnVjdG9yS2luZDsKICAgICBtX2Rlcml2
ZWRDb250ZXh0VHlwZSA9IGNvZGVCbG9jay5tX2Rlcml2ZWRDb250ZXh0VHlwZTsKICAgICBtX2Ns
YXNzRmllbGRzSW5pdGlhbGl6ZXIgPSBjb2RlQmxvY2subV9jbGFzc0ZpZWxkc0luaXRpYWxpemVy
OworICAgIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBjb2RlQmxvY2subV9wcml2YXRlQnJh
bmRSZXF1aXJlbWVudDsKICAgICBtX2V2YWxDb250ZXh0VHlwZSA9IGNvZGVCbG9jay5tX2V2YWxD
b250ZXh0VHlwZTsKICAgICBtX2xpbmVDb3VudCA9IGNvZGVCbG9jay5tX2xpbmVDb3VudDsKICAg
ICBtX2VuZENvbHVtbiA9IGNvZGVCbG9jay5tX2VuZENvbHVtbjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCmluZGV4IDViM2M0MjRlZjdjLi42YzQwYzFhYTg3
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCkBAIC0x
NTEsNyArMTUxLDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIENvZGVDYWNoZTo6Z2V0
VW5saW5rZWRHbG9iYWxGdW5jdGlvbkV4ZWN1dGFibGUoVk0mIHYKICAgICAvLyBUaGUgRnVuY3Rp
b24gY29uc3RydWN0b3Igb25seSBoYXMgYWNjZXNzIHRvIGdsb2JhbCB2YXJpYWJsZXMsIHNvIG5v
IHZhcmlhYmxlcyB3aWxsIGJlIHVuZGVyIFREWiB1bmxlc3MgdGhleSdyZQogICAgIC8vIGluIHRo
ZSBnbG9iYWwgbGV4aWNhbCBlbnZpcm9ubWVudCwgd2hpY2ggd2UgYWx3YXlzIFREWiBjaGVjayBh
Y2Nlc3NlcyBmcm9tLgogICAgIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSA9IGNv
bnN0cnVjdEFiaWxpdHlGb3JQYXJzZU1vZGUobWV0YWRhdGEtPnBhcnNlTW9kZSgpKTsKLSAgICBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgbWV0YWRhdGEsIFVubGlua2Vk
Tm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xh
c3NpYywgV1RGOjpudWxsb3B0LCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIENsYXNzRmllbGRz
SW5pdGlhbGl6ZXI6Ok5vdE5lZWRlZCk7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUo
JnZtLCBzb3VyY2UsIG1ldGFkYXRhLCBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1Y3RB
YmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIFdURjo6bnVsbG9wdCwgRGVyaXZl
ZENvbnRleHRUeXBlOjpOb25lLCBDbGFzc0ZpZWxkc0luaXRpYWxpemVyOjpOb3ROZWVkZWQsIFBy
aXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lKTsKIAogICAgIGlmICghc291cmNlLnByb3ZpZGVy
KCktPnNvdXJjZVVSTERpcmVjdGl2ZSgpLmlzTnVsbCgpKQogICAgICAgICBmdW5jdGlvbkV4ZWN1
dGFibGUtPnNldFNvdXJjZVVSTERpcmVjdGl2ZShzb3VyY2UucHJvdmlkZXIoKS0+c291cmNlVVJM
RGlyZWN0aXZlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29kZUNhY2hlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaApp
bmRleCBjMjZiYjQwYzYzYy4uYTM5ZmUzNzBlNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvZGVDYWNoZS5oCkBAIC0yNzEsNiArMjcxLDE4IEBAIGlubGluZSBDbGFzc0ZpZWxk
c0luaXRpYWxpemVyIGNsYXNzRmllbGRzSW5pdGlhbGl6ZXI8RGlyZWN0RXZhbEV4ZWN1dGFibGU+
KERpcmVjCiAgICAgcmV0dXJuIGV4ZWN1dGFibGUtPmNsYXNzRmllbGRzSW5pdGlhbGl6ZXIoKTsK
IH0KIAordGVtcGxhdGUgPGNsYXNzIEV4ZWN1dGFibGVUeXBlPgoraW5saW5lIFByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KEV4ZWN1dGFibGVUeXBlKikKK3sK
KyAgICByZXR1cm4gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmU7Cit9CisKK3RlbXBsYXRl
IDw+CitpbmxpbmUgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQ8RGlyZWN0RXZhbEV4ZWN1dGFibGU+KERpcmVjdEV2YWxFeGVjdXRhYmxlKiBleGVjdXRhYmxl
KQoreworICAgIHJldHVybiBleGVjdXRhYmxlLT5wcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpOwor
fQorCiB0ZW1wbGF0ZSA8Y2xhc3MgVW5saW5rZWRDb2RlQmxvY2tUeXBlLCBjbGFzcyBFeGVjdXRh
YmxlVHlwZSA9IFNjcmlwdEV4ZWN1dGFibGU+CiBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIGdlbmVy
YXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNl
LCBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlw
dE1vZGUsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwg
UGFyc2VyRXJyb3ImIGVycm9yLCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlLCBEZXJp
dmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNv
bnRleHQsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaLCBFeGVj
dXRhYmxlVHlwZSogZXhlY3V0YWJsZSA9IG51bGxwdHIpCiB7CkBAIC0yOTEsNyArMzAzLDcgQEAg
VW5saW5rZWRDb2RlQmxvY2tUeXBlKiBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrSW1wbChWTSYg
dm0sIGNvbnN0IFNvdXJjZUNvZGUmIHMKIAogICAgIGJvb2wgdXNlc0V2YWwgPSByb290Tm9kZS0+
ZmVhdHVyZXMoKSAmIEV2YWxGZWF0dXJlOwogICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gcm9vdE5v
ZGUtPmZlYXR1cmVzKCkgJiBTdHJpY3RNb2RlRmVhdHVyZTsKLSAgICBFeGVjdXRhYmxlSW5mbyBl
eGVjdXRhYmxlSW5mbyh1c2VzRXZhbCwgaXNTdHJpY3RNb2RlLCBmYWxzZSwgZmFsc2UsIENvbnN0
cnVjdG9yS2luZDo6Tm9uZSwgc2NyaXB0TW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIENh
Y2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBkZXJpdmVkQ29udGV4
dFR5cGUsIGNsYXNzRmllbGRzSW5pdGlhbGl6ZXIoZXhlY3V0YWJsZSksIGlzQXJyb3dGdW5jdGlv
bkNvbnRleHQsIGZhbHNlLCBldmFsQ29udGV4dFR5cGUpOworICAgIEV4ZWN1dGFibGVJbmZvIGV4
ZWN1dGFibGVJbmZvKHVzZXNFdmFsLCBpc1N0cmljdE1vZGUsIGZhbHNlLCBwcml2YXRlQnJhbmRS
ZXF1aXJlbWVudChleGVjdXRhYmxlKSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgc2Ny
aXB0TW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIENhY2hlVHlwZXM8VW5saW5rZWRDb2Rl
QmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUsIGNsYXNzRmllbGRzSW5p
dGlhbGl6ZXIoZXhlY3V0YWJsZSksIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGZhbHNlLCBldmFs
Q29udGV4dFR5cGUpOwogCiAgICAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiB1bmxpbmtlZENvZGVC
bG9jayA9IFVubGlua2VkQ29kZUJsb2NrVHlwZTo6Y3JlYXRlKCZ2bSwgZXhlY3V0YWJsZUluZm8s
IGNvZGVHZW5lcmF0aW9uTW9kZSk7CiAgICAgdW5saW5rZWRDb2RlQmxvY2stPnJlY29yZFBhcnNl
KHJvb3ROb2RlLT5mZWF0dXJlcygpLCByb290Tm9kZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwg
bGluZUNvdW50LCB1bmxpbmtlZEVuZENvbHVtbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCBjN2I1Mjc0ZGMyMS4uMmRiOGVm
ODVhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcApAQCAtMTU3Nyw0ICsxNTc3LDI5IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9wdXRfcHJpdmF0ZV9maWVsZCkKICAgICBFTkQoKTsKIH0KIAorU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2NoZWNrX3ByaXZhdGVfYnJhbmQpCit7CisgICAgQkVHSU4oKTsKKyAgICBhdXRvIGJ5
dGVjb2RlID0gcGMtPmFzPE9wQ2hlY2tQcml2YXRlQnJhbmQ+KCk7CisKKyAgICBKU1ZhbHVlIGJh
c2VWYWx1ZSA9IEdFVChieXRlY29kZS5tX2Jhc2UpLmpzVmFsdWUoKTsKKyAgICBpZiAoIWJhc2VW
YWx1ZS5pc09iamVjdCgpKQorICAgICAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZXhlYywgIklu
dmFsaWQgYWNjZXNzIHRvIGEgcHJpdmF0ZSBtZW1iZXIuIl9zKSk7CisgICAgSlNWYWx1ZSBicmFu
ZCA9IEdFVF9DKGJ5dGVjb2RlLm1fYnJhbmQpLmpzVmFsdWUoKTsKKyAgICBBU1NFUlQoYnJhbmQu
aXNTeW1ib2woKSk7CisKKyAgICBiYXNlVmFsdWUucmVxdWlyZU9iamVjdENvZXJjaWJsZShleGVj
KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBhdXRvIHByb3BlcnR5ID0gYnJhbmQudG9Q
cm9wZXJ0eUtleShleGVjKTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKworICAgIEFTU0VSVChw
cm9wZXJ0eS5pc1ByaXZhdGVOYW1lKCkpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1
ZSwgUHJvcGVydHlTbG90OjpQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1
aXJ5KTsKKyAgICBib29sIGZvdW5kID0gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChhc09i
amVjdChiYXNlVmFsdWUpLCBleGVjLCBwcm9wZXJ0eSwgc2xvdCk7CisgICAgaWYgKCFmb3VuZCkK
KyAgICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJJbnZhbGlkIGFjY2VzcyB0byBh
IHByaXZhdGUgbWVtYmVyLiJfcykpOworCisgICAgRU5EKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
aAppbmRleCA5ZGVkNzAxN2I5Yy4uZTM5YTYyZWEwYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0zOTgsNiArMzk4LDcgQEAgU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zcHJlYWQpOwogU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9hZGRfcHJpdmF0ZV9maWVsZCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX2dldF9wcml2YXRlX2ZpZWxkKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfcHV0X3ByaXZhdGVfZmllbGQpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9jaGVja19wcml2YXRlX2JyYW5kKTsKIAogdXNpbmcgU2xvd1BhdGhGdW5jdGlvbiA9IFNsb3dQ
YXRoUmV0dXJuVHlwZShTTE9XX1BBVEggKikoRXhlY1N0YXRlKiwgY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZh
bEV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZh
bEV4ZWN1dGFibGUuY3BwCmluZGV4IGE4OGQzMTk2M2ZkLi4xYWY2MmY0MjYyMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxl
LmNwcApAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotRGlyZWN0RXZhbEV4
ZWN1dGFibGUqIERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIERlcml2ZWRD
b250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIENsYXNzRmllbGRzSW5pdGlhbGl6ZXIgY2xh
c3NGaWVsZHNJbml0aWFsaXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29u
dGV4dFR5cGUgZXZhbENvbnRleHRUeXBlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiB2YXJp
YWJsZXNVbmRlclREWikKK0RpcmVjdEV2YWxFeGVjdXRhYmxlKiBEaXJlY3RFdmFsRXhlY3V0YWJs
ZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29s
IGlzSW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBl
LCBDbGFzc0ZpZWxkc0luaXRpYWxpemVyIGNsYXNzRmllbGRzSW5pdGlhbGl6ZXIsIFByaXZhdGVC
cmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29sIGlzQXJyb3dGdW5j
dGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIGNvbnN0IFZhcmlh
YmxlRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaKQogewogICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNDYs
NyArNDYsNyBAQCBEaXJlY3RFdmFsRXhlY3V0YWJsZSogRGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNy
ZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZQogICAgICAgICByZXR1cm4gMDsKICAg
ICB9CiAKLSAgICBhdXRvKiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
RGlyZWN0RXZhbEV4ZWN1dGFibGU+KHZtLmhlYXApKSBEaXJlY3RFdmFsRXhlY3V0YWJsZShleGVj
LCBzb3VyY2UsIGlzSW5TdHJpY3RDb250ZXh0LCBkZXJpdmVkQ29udGV4dFR5cGUsIGNsYXNzRmll
bGRzSW5pdGlhbGl6ZXIsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGV2YWxDb250ZXh0VHlwZSk7
CisgICAgYXV0byogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERpcmVj
dEV2YWxFeGVjdXRhYmxlPih2bS5oZWFwKSkgRGlyZWN0RXZhbEV4ZWN1dGFibGUoZXhlYywgc291
cmNlLCBpc0luU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBjbGFzc0ZpZWxkc0lu
aXRpYWxpemVyLCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4
dCwgZXZhbENvbnRleHRUeXBlKTsKICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbih2bSk7
CiAKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKQEAgLTcwLDExICs3MCwxMiBAQCBEaXJlY3RFdmFs
RXhlY3V0YWJsZSogRGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IFNvdXJjZQogICAgIHJldHVybiBleGVjdXRhYmxlOwogfQogCi1EaXJlY3RFdmFsRXhl
Y3V0YWJsZTo6RGlyZWN0RXZhbEV4ZWN1dGFibGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUg
ZGVyaXZlZENvbnRleHRUeXBlLCBDbGFzc0ZpZWxkc0luaXRpYWxpemVyIGNsYXNzRmllbGRzSW5p
dGlhbGl6ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBlIGV2
YWxDb250ZXh0VHlwZSkKK0RpcmVjdEV2YWxFeGVjdXRhYmxlOjpEaXJlY3RFdmFsRXhlY3V0YWJs
ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpblN0cmlj
dENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIENsYXNzRmll
bGRzSW5pdGlhbGl6ZXIgY2xhc3NGaWVsZHNJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWly
ZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4
dCwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSkKICAgICA6IEV2YWxFeGVjdXRhYmxl
KGV4ZWMsIHNvdXJjZSwgaW5TdHJpY3RDb250ZXh0LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJy
b3dGdW5jdGlvbkNvbnRleHQsIGV2YWxDb250ZXh0VHlwZSkKIHsKLSAgICBBU1NFUlQoY2xhc3NG
aWVsZHNJbml0aWFsaXplciA9PSBDbGFzc0ZpZWxkc0luaXRpYWxpemVyOjpOb3ROZWVkZWQgfHwg
ZGVyaXZlZENvbnRleHRUeXBlID09IERlcml2ZWRDb250ZXh0VHlwZTo6RGVyaXZlZENvbnN0cnVj
dG9yQ29udGV4dCk7CisgICAgQVNTRVJUKChjbGFzc0ZpZWxkc0luaXRpYWxpemVyID09IENsYXNz
RmllbGRzSW5pdGlhbGl6ZXI6Ok5vdE5lZWRlZCAmJiBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9
PSBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZSkgfHwgZGVyaXZlZENvbnRleHRUeXBlID09
IERlcml2ZWRDb250ZXh0VHlwZTo6RGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCk7CiAgICAgbV9j
bGFzc0ZpZWxkc0luaXRpYWxpemVyID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNsYXNzRmllbGRz
SW5pdGlhbGl6ZXIpOworICAgIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4ocHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2
YWxFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFs
RXhlY3V0YWJsZS5oCmluZGV4IDM1MjA4YTdlNmI1Li41MWI2N2I1NzdmOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oCkBA
IC0zMSwxMCArMzEsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIERpcmVjdEV2YWxFeGVj
dXRhYmxlIGZpbmFsIDogcHVibGljIEV2YWxFeGVjdXRhYmxlIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgRGlyZWN0RXZhbEV4ZWN1dGFibGUqIGNyZWF0ZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VD
b2RlJiwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBDbGFzc0Zp
ZWxkc0luaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0
VHlwZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCopOworICAgIHN0YXRpYyBEaXJlY3RFdmFs
RXhlY3V0YWJsZSogY3JlYXRlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGlz
SW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUsIENsYXNzRmllbGRzSW5pdGlhbGl6
ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQs
IEV2YWxDb250ZXh0VHlwZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCopOwogCiBwcml2YXRl
OgotICAgIERpcmVjdEV2YWxFeGVjdXRhYmxlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUm
LCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBDbGFzc0ZpZWxkc0lu
aXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSk7
CisgICAgRGlyZWN0RXZhbEV4ZWN1dGFibGUoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYs
IGJvb2wgaW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUsIENsYXNzRmllbGRzSW5p
dGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29sIGlzQXJyb3dGdW5jdGlvbkNv
bnRleHQsIEV2YWxDb250ZXh0VHlwZSk7CiB9OwogCiBzdGF0aWNfYXNzZXJ0KHNpemVvZihEaXJl
Y3RFdmFsRXhlY3V0YWJsZSkgPT0gc2l6ZW9mKEV2YWxFeGVjdXRhYmxlKSwgIiIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmgKaW5kZXggN2ZiZWE3
YjdjMDUuLjQzMjVhZjMyZGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FdmFsRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V2YWxFeGVjdXRhYmxlLmgKQEAgLTYyLDEzICs2MiwxNCBAQCBwdWJsaWM6CiAKICAgICBERUNM
QVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsg
cmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwg
ZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2lj
LCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwg
ZGVyaXZlZENvbnRleHRUeXBlKCksIGNsYXNzRmllbGRzSW5pdGlhbGl6ZXIoKSwgaXNBcnJvd0Z1
bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgZXZhbENvbnRleHRUeXBlKCkpOyB9CisgICAgRXhlY3V0
YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1
c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50
OjpOb25lLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6
OkNsYXNzaWMsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dy
YW1Nb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUoKSwgY2xhc3NGaWVsZHNJbml0aWFsaXplcigpLCBp
c0Fycm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlLCBldmFsQ29udGV4dFR5cGUoKSk7IH0KIAog
ICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlcygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJs
b2NrLT5udW1WYXJpYWJsZXMoKTsgfQogICAgIHVuc2lnbmVkIG51bUZ1bmN0aW9uSG9pc3RpbmdD
YW5kaWRhdGVzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bUZ1bmN0aW9u
SG9pc3RpbmdDYW5kaWRhdGVzKCk7IH0KICAgICB1bnNpZ25lZCBudW1Ub3BMZXZlbEZ1bmN0aW9u
RGVjbHMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlv
bkRlY2xzKCk7IH0KICAgICBib29sIGFsbG93RGlyZWN0RXZhbENhY2hlKCkgY29uc3QgeyByZXR1
cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPmFsbG93RGlyZWN0RXZhbENhY2hlKCk7IH0KICAg
ICBDbGFzc0ZpZWxkc0luaXRpYWxpemVyIGNsYXNzRmllbGRzSW5pdGlhbGl6ZXIoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxDbGFzc0ZpZWxkc0luaXRpYWxpemVyPihtX2NsYXNzRmllbGRz
SW5pdGlhbGl6ZXIpOyB9CisgICAgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxQcml2YXRlQnJhbmRSZXF1
aXJlbWVudD4obV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7IH0KICAgICBUZW1wbGF0ZU9iamVj
dE1hcCYgZW5zdXJlVGVtcGxhdGVPYmplY3RNYXAoVk0mKTsKIAogcHJvdGVjdGVkOgpAQCAtODEs
NiArODIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0Nl
bGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgdW5zaWduZWQgbV9jbGFzc0ZpZWxkc0luaXRpYWxp
emVyIDogMTsKKyAgICB1bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsKIAog
ICAgIFdyaXRlQmFycmllcjxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPiBtX2V2YWxDb2RlQmxv
Y2s7CiAgICAgV3JpdGVCYXJyaWVyPFVubGlua2VkRXZhbENvZGVCbG9jaz4gbV91bmxpbmtlZEV2
YWxDb2RlQmxvY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKaW5kZXggM2MwNDUzNjQ0OTEuLmQxM2Y5ZmNmMTNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0yNjgsNiAr
MjY4LDEyIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGhhc093bkxlbmd0
aFByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbih0YXJnZXQtPmhhc093blByb3BlcnR5KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPmxl
bmd0aCkpKTsKIH0KIAorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY3JlYXRl
UHJpdmF0ZVN5bWJvbChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFN5bWJvbDo6Y3JlYXRlKHZtLCBQcml2YXRl
U3ltYm9sSW1wbDo6Y3JlYXRlTnVsbFN5bWJvbCgpKSk7Cit9CisKICNpZiAhQVNTRVJUX0RJU0FC
TEVECiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhc3NlcnRDYWxsKEV4ZWNT
dGF0ZSogZXhlYykKIHsKQEAgLTEwMjgsNiArMTAzNCw5IEBAIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT4ganNOYW1lLCBsb3dlck5hbWUgIyMgQ29uc3Ry
dWN0CiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5tYWtlQm91bmRGdW5jdGlvblByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0
ZSh2bSwgdGhpcywgNSwgU3RyaW5nKCksIG1ha2VCb3VuZEZ1bmN0aW9uKSwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaGFzT3duTGVuZ3RoUHJvcGVydHlQcml2YXRlTmFt
ZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCBoYXNPd25MZW5n
dGhQcm9wZXJ0eSksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmli
dXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKIAorICAgICAg
ICAvLyBQcml2YXRlU3ltYm9sIGNyZWF0aW9uCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5jcmVhdGVQcml2YXRlU3ltYm9sUHJpdmF0
ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgY3JlYXRl
UHJpdmF0ZVN5bWJvbCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKKwogICAg
ICAgICAvLyBNYXAgYW5kIFNldCBoZWxwZXJzLgogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubWFwQnVja2V0SGVhZFByaXZhdGVOYW1l
KCksIHByaXZhdGVGdW5jTWFwQnVja2V0SGVhZCwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkubWFwQnVja2V0TmV4dFByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jTWFwQnVj
a2V0TmV4dCwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAppbmRleCBlZDJhOWEyYTZiMC4uOTE3MWRiYWFj
M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCkBAIC0zNDEs
OCArMzQxLDEzIEBAIHZvaWQgSlNTY29wZTo6Y29sbGVjdENsb3N1cmVWYXJpYWJsZXNVbmRlclRE
WihKU1Njb3BlKiBzY29wZSwgVmFyaWFibGVFbnZpcm9ubWVuCiAgICAgICAgICAgICByZXN1bHQu
YWRkKGl0ZXItPmtleSk7CiAgICAgICAgIGlmIChzeW1ib2xUYWJsZS0+aGFzUHJpdmF0ZU5hbWVz
KCkpIHsKICAgICAgICAgICAgIGF1dG8gcHJpdmF0ZU5hbWVzID0gc3ltYm9sVGFibGUtPnByaXZh
dGVOYW1lcygpOwotICAgICAgICAgICAgZm9yIChhdXRvIGVuZCA9IHByaXZhdGVOYW1lcy5lbmQo
KSwgaXRlciA9IHByaXZhdGVOYW1lcy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKQotICAg
ICAgICAgICAgICAgIHJlc3VsdC51c2VQcml2YXRlTmFtZSgqaXRlcik7CisgICAgICAgICAgICBm
b3IgKGF1dG8gZW5kID0gcHJpdmF0ZU5hbWVzLmVuZCgpLCBpdGVyID0gcHJpdmF0ZU5hbWVzLmJl
Z2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXRlci0+
dmFsdWUuaXNQcml2YXRlQWNjZXNzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBhZGRS
ZXN1bHQgPSByZXN1bHQuYWRkUHJpdmF0ZU5hbWUoaXRlci0+a2V5KTsKKyAgICAgICAgICAgICAg
ICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IGl0ZXItPnZhbHVlOworICAgICAgICAg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICByZXN1bHQudXNlUHJpdmF0ZU5hbWUo
aXRlci0+a2V5KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAppbmRl
eCA4ODcyYjg4ZGE1My4uZThmMGEwNTQ5OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0
cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsKICAgICAKICAgICBTeW1i
b2xUYWJsZSogc3ltYm9sVGFibGUoKSBjb25zdCB7IHJldHVybiBtX3N5bWJvbFRhYmxlLmdldCgp
OyB9Ci0gICAgCisKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICAK
QEAgLTgxLDggKzgxLDggQEAgcHJvdGVjdGVkOgogICAgICAgICBtX3N5bWJvbFRhYmxlLnNldCh2
bSwgdGhpcywgc3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoc3ltYm9sVGFibGUtPmhhc1ByaXZh
dGVOYW1lcygpKSB7CiAgICAgICAgICAgICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxK
U1N5bWJvbFRhYmxlT2JqZWN0UmFyZURhdGE+KCk7Ci0gICAgICAgICAgICBmb3IgKGF1dG8ga2V5
IDogc3ltYm9sVGFibGUtPnByaXZhdGVOYW1lcygpKQotICAgICAgICAgICAgICAgIG1fcmFyZURh
dGEtPm1fcHJpdmF0ZU5hbWVzLnNldChrZXkuZ2V0KCksIFByaXZhdGVTeW1ib2xJbXBsOjpjcmVh
dGUoKmtleS5nZXQoKSkpOworICAgICAgICAgICAgZm9yIChhdXRvIGVudHJ5IDogc3ltYm9sVGFi
bGUtPnByaXZhdGVOYW1lcygpKQorICAgICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fcHJpdmF0
ZU5hbWVzLnNldChlbnRyeS5rZXkuZ2V0KCksIFByaXZhdGVTeW1ib2xJbXBsOjpjcmVhdGUoKmVu
dHJ5LmtleS5nZXQoKSkpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaAppbmRleCA4
NTllMWMxZDJlMS4uMDEwMzY3ODU5MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaApAQCAtNjQsNyArNjQsNyBA
QCBwdWJsaWM6CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVj
dXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGlz
U3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJz
ZXJTY3JpcHRNb2RlOjpNb2R1bGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJz
ZU1vZGU6Ok1vZHVsZUV2YWx1YXRlTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIENsYXNzRmll
bGRzSW5pdGlhbGl6ZXI6Ok5vdE5lZWRlZCwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxz
ZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFi
bGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8odXNlc0V2YWwoKSwgaXNTdHJp
Y3RNb2RlKCksIGZhbHNlLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZSwgZmFsc2UsIENv
bnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUsIFN1cGVyQmlu
ZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUV2YWx1YXRlTW9kZSwgZGVy
aXZlZENvbnRleHRUeXBlKCksIENsYXNzRmllbGRzSW5pdGlhbGl6ZXI6Ok5vdE5lZWRlZCwgaXNB
cnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsgfQog
CiAgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZE1vZHVsZVByb2dy
YW1Db2RlQmxvY2soKSB7IHJldHVybiBtX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5n
ZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKaW5kZXggNGQz
ZTkyNTQ1NWIuLmYzYmZhMDQzZDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9ucy5oCkBAIC01MjIsNiArNTIyLDcgQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1i
bHlTdHJlYW1pbmdBcGkgPSBmYWxzZTsKICAgICB2KGRvdWJsZSwgZHVtcEpJVE1lbW9yeUZsdXNo
SW50ZXJ2YWwsIDEwLCBSZXN0cmljdGVkLCAiTWF4aW11bSB0aW1lIGluIGJldHdlZW4gZmx1c2hl
cyBvZiB0aGUgSklUIG1lbW9yeSBkdW1wIGluIHNlY29uZHMuIikgXAogICAgIHYoYm9vbCwgdXNl
VW5saW5rZWRDb2RlQmxvY2tKZXR0aXNvbmluZywgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIFVu
bGlua2VkQ29kZUJsb2NrIGNhbiBiZSBqZXR0aXNvbmVkLiIpIFwKICAgICB2KGJvb2wsIHVzZUNs
YXNzRmllbGRzLCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB0aGUgcGFyc2VyIHdpbGwgdW5kZXJz
dGFuZCBkYXRhIGZpZWxkcyBpbnNpZGUgY2xhc3Nlcy4iKSBcCisgICAgdihib29sLCB1c2VQcml2
YXRlTWV0aG9kcywgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgdGhlIHBhcnNlciB3aWxsIHVuZGVy
c3RhbmQgcHJpdmF0ZSBtZXRob2RzIGFuZCBhY2Nlc3NvcnMuIFRoaXMgcmVxdWlyZXMgdXNlQ2xh
c3NGZWlsZHMgdG8gYmUgdHJ1ZS4iKSBcCiAKIGVudW0gT3B0aW9uRXF1aXZhbGVuY2UgewogICAg
IFNhbWVPcHRpb24sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9ncmFtRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3Jh
bUV4ZWN1dGFibGUuaAppbmRleCAyMzYzOTU3MGQ3Ni4uNjhlZWM2ZmY2YTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaApAQCAtNzEs
NyArNzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIEV4
ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUlu
Zm8odXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JL
aW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIFN1cGVyQmluZGluZzo6Tm90
TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUo
KSwgQ2xhc3NGaWVsZHNJbml0aWFsaXplcjo6Tm90TmVlZGVkLCBpc0Fycm93RnVuY3Rpb25Db250
ZXh0KCksIGZhbHNlLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUpOyB9CisgICAgRXhlY3V0YWJsZUlu
Zm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1c2VzRXZh
bCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25l
LCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNz
aWMsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2Rl
LCBkZXJpdmVkQ29udGV4dFR5cGUoKSwgQ2xhc3NGaWVsZHNJbml0aWFsaXplcjo6Tm90TmVlZGVk
LCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUp
OyB9CiAKICAgICBUZW1wbGF0ZU9iamVjdE1hcCYgZW5zdXJlVGVtcGxhdGVPYmplY3RNYXAoVk0m
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbC5jcHAKaW5kZXggYzhiZTAz
YWY4MjUuLjgzOGJhOWY1YTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TeW1ib2wuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJv
bC5jcHAKQEAgLTEzMyw0ICsxMzMsMTEgQEAgU3ltYm9sKiBTeW1ib2w6OmNyZWF0ZShWTSYgdm0s
IFN5bWJvbEltcGwmIHVpZCkKICAgICByZXR1cm4gc3ltYm9sOwogfQogCitTeW1ib2wqIFN5bWJv
bDo6Y3JlYXRlUHJpdmF0ZShWTSYgdm0sIFByaXZhdGVTeW1ib2xJbXBsJiB1aWQpCit7CisgICAg
U3ltYm9sKiBzeW1ib2wgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTeW1ib2w+KHZtLmhl
YXApKSBTeW1ib2wodm0sIHVpZCk7CisgICAgc3ltYm9sLT5maW5pc2hDcmVhdGlvbih2bSk7Cisg
ICAgcmV0dXJuIHN5bWJvbDsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N5bWJvbC5oCmluZGV4IGNhOTk0MmU1NWFlLi40MWQ3MWUzNzJkOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBTeW1ib2wqIGNyZWF0ZShWTSYpOwogICAgIHN0YXRpYyBTeW1ib2wq
IGNyZWF0ZVdpdGhEZXNjcmlwdGlvbihWTSYsIGNvbnN0IFN0cmluZyYpOwogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBTeW1ib2wqIGNyZWF0ZShWTSYsIFN5bWJvbEltcGwmIHVpZCk7Cisg
ICAgc3RhdGljIFN5bWJvbCogY3JlYXRlUHJpdmF0ZShWTSYsIFByaXZhdGVTeW1ib2xJbXBsJiB1
aWQpOwogCiAgICAgUHJpdmF0ZU5hbWUgcHJpdmF0ZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX3By
aXZhdGVOYW1lOyB9CiAgICAgU3RyaW5nIGRlc2NyaXB0aXZlU3RyaW5nKCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKaW5kZXggZGUwNzE5
Yzg1NDYuLjY4OTY4ZTliNGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TeW1ib2xUYWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3ltYm9sVGFibGUuY3BwCkBAIC0xODUsNyArMTg1LDcgQEAgU3ltYm9sVGFibGUqIFN5bWJvbFRh
YmxlOjpjbG9uZVNjb3BlUGFydChWTSYgdm0pCiAgICAgICAgICAgICBhdXRvIGl0ZXIgPSBtX3Jh
cmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5iZWdpbigpOwogICAgICAgICAgICAgYXV0byBlbmQgPSBt
X3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5lbmQoKTsKICAgICAgICAgICAgIGZvciAoOyBpdGVy
ICE9IGVuZDsgKytpdGVyKQotICAgICAgICAgICAgICAgIHJlc3VsdC0+bV9yYXJlRGF0YS0+bV9w
cml2YXRlTmFtZXMuYWRkKCppdGVyKTsKKyAgICAgICAgICAgICAgICByZXN1bHQtPm1fcmFyZURh
dGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChpdGVyLT5rZXksIGl0ZXItPnZhbHVlKTsKICAgICAgICAg
fQogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N5bWJvbFRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJs
ZS5oCmluZGV4IDkwYmFkMzczZTVlLi5lM2JmMWEyZDc1OSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAi
U2NvcGVkQXJndW1lbnRzVGFibGUuaCIKICNpbmNsdWRlICJUeXBlTG9jYXRpb24uaCIKICNpbmNs
dWRlICJWYXJPZmZzZXQuaCIKKyNpbmNsdWRlICJWYXJpYWJsZUVudmlyb25tZW50LmgiCiAjaW5j
bHVkZSAiV2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvSGFz
aFRyYWl0cy5oPgpAQCAtNDQ4LDggKzQ0OSw3IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEhhc2hN
YXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgUmVmUHRyPFR5cGVTZXQ+LCBJZGVudGlmaWVy
UmVwSGFzaD4gVW5pcXVlVHlwZVNldE1hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8VmFyT2Zmc2V0
LCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiBPZmZzZXRUb1ZhcmlhYmxlTWFwOwogICAgIHR5
cGVkZWYgVmVjdG9yPFN5bWJvbFRhYmxlRW50cnkqPiBMb2NhbFRvRW50cnlWZWM7Ci0gICAgdHlw
ZWRlZiBIYXNoU2V0PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIFN0cmluZ1JlcEhhc2g+IFBy
aXZhdGVOYW1lU2V0OwotICAgIHR5cGVkZWYgV1RGOjpJdGVyYXRvclJhbmdlPHR5cGVuYW1lIFBy
aXZhdGVOYW1lU2V0OjppdGVyYXRvcj4gUHJpdmF0ZU5hbWVJdGVyYXRvclJhbmdlOworICAgIHR5
cGVkZWYgV1RGOjpJdGVyYXRvclJhbmdlPHR5cGVuYW1lIFZhcmlhYmxlRW52aXJvbm1lbnQ6OlBy
aXZhdGVOYW1lczo6aXRlcmF0b3I+IFByaXZhdGVOYW1lSXRlcmF0b3JSYW5nZTsKIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKQEAgLTU5OCw3ICs1OTgsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBoYXNQcml2YXRlTmFtZXMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVEYXRhICYm
IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLnNpemUoKTsgfQogICAgIEFMV0FZU19JTkxJTkUg
UHJpdmF0ZU5hbWVJdGVyYXRvclJhbmdlIHByaXZhdGVOYW1lcygpCiAgICAgewotICAgICAgICBQ
cml2YXRlTmFtZVNldDo6aXRlcmF0b3IgYmVnaW4sIGVuZDsKKyAgICAgICAgVmFyaWFibGVFbnZp
cm9ubWVudDo6UHJpdmF0ZU5hbWVzOjppdGVyYXRvciBiZWdpbiwgZW5kOwogICAgICAgICBpZiAo
bV9yYXJlRGF0YSkgewogICAgICAgICAgICAgYmVnaW4gPSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVO
YW1lcy5iZWdpbigpOwogICAgICAgICAgICAgZW5kID0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFt
ZXMuZW5kKCk7CkBAIC02MDYsMTQgKzYwNiwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBQ
cml2YXRlTmFtZUl0ZXJhdG9yUmFuZ2UoYmVnaW4sIGVuZCk7CiAgICAgfQogCi0gICAgdm9pZCBh
ZGRQcml2YXRlTmFtZShVbmlxdWVkU3RyaW5nSW1wbCoga2V5KQorICAgIHZvaWQgYWRkUHJpdmF0
ZU5hbWUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYga2V5LCBQcml2YXRlTmFtZUVu
dHJ5IHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGtleSAmJiAha2V5LT5pc1N5bWJvbCgp
KTsKICAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQogICAgICAgICAgICAgbV9yYXJlRGF0YSA9IHN0
ZDo6bWFrZV91bmlxdWU8U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKIAotICAgICAgICBBU1NFUlQo
IW1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmNvbnRhaW5zKGtleSkpOwotICAgICAgICBtX3Jh
cmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoa2V5KTsKKyAgICAgICAgQVNTRVJUKG1fcmFyZURh
dGEtPm1fcHJpdmF0ZU5hbWVzLmZpbmQoa2V5KSA9PSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1l
cy5lbmQoKSk7CisgICAgICAgIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChrZXksIHZh
bHVlKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbnRyeT4KQEAgLTc0NCw3ICs3
NDQsNyBAQCBwdWJsaWM6CiAgICAgICAgIE9mZnNldFRvVmFyaWFibGVNYXAgbV9vZmZzZXRUb1Zh
cmlhYmxlTWFwOwogICAgICAgICBVbmlxdWVUeXBlU2V0TWFwIG1fdW5pcXVlVHlwZVNldE1hcDsK
ICAgICAgICAgV3JpdGVCYXJyaWVyPENvZGVCbG9jaz4gbV9jb2RlQmxvY2s7Ci0gICAgICAgIFBy
aXZhdGVOYW1lU2V0IG1fcHJpdmF0ZU5hbWVzOworICAgICAgICBWYXJpYWJsZUVudmlyb25tZW50
OjpQcml2YXRlTmFtZXMgbV9wcml2YXRlTmFtZXM7CiAgICAgfTsKIAogcHJpdmF0ZToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380859</attachid>
            <date>2019-10-14 00:24:27 -0700</date>
            <delta_ts>2020-02-13 13:12:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>private_methods.diff</filename>
            <type>text/plain</type>
            <size>118390</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
OWFmNjFkOTAxNDYuLmIyMzdmMWNjMWY3IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZwor
KysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE5LTA2LTI3ICBDYWlv
IExpbWEgIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KKworICAgICAgICBbRVNOZXh0XSBJbXBsZW1l
bnQgcHJpdmF0ZSBtZXRob2RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTQ0MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHN0cmVzcy9wcml2YXRlLWJyYW5kLWluc3RhbGxlZC1hZnRlci1zdXBlci1j
YWxsLWZyb20tZXZhbC5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAoQSk6
CisgICAgICAgIChDLnByb3RvdHlwZS5tZXRob2QpOgorICAgICAgICAoQyk6CisgICAgICAgIChD
LnByb3RvdHlwZS5iYXNlQWNjZXNzKToKKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2Qt
YnJhbmQtY2hlY2suanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKEMucHJv
dG90eXBlLm0pOgorICAgICAgICAoQy5wcm90b3R5cGUubWV0aG9kKToKKyAgICAgICAgKEMpOgor
ICAgICAgICAodHJ5LkMucHJvdG90eXBlLm0pOgorICAgICAgICAodHJ5LkMpOgorICAgICAgICAo
Y2F0Y2gpOgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZC1jb21wYXJpc29uLmpzOiBB
ZGRlZC4KKyAgICAgICAgKGxldC5hc3NlcnQuc2FtZVZhbHVlKToKKyAgICAgICAgKGxldC5hc3Nl
cnQudGhyb3dzKToKKyAgICAgICAgKEMucHJvdG90eXBlLm0pOgorICAgICAgICAoQy5wcm90b3R5
cGUuZ2V0UHJpdmF0ZU1ldGhvZCk6CisgICAgICAgIChDKToKKyAgICAgICAgKiBzdHJlc3MvcHJp
dmF0ZS1tZXRob2QtZXh0ZW5kcy1icmFuZC1jaGVjay5qczogQWRkZWQuCisgICAgICAgIChhc3Nl
cnQpOgorICAgICAgICAoQmFzZS5wcm90b3R5cGUubUJhc2UpOgorICAgICAgICAoQmFzZS5wcm90
b3R5cGUubWV0aG9kQmFzZSk6CisgICAgICAgIChCYXNlKToKKyAgICAgICAgKEMucHJvdG90eXBl
Lm0pOgorICAgICAgICAoQy5wcm90b3R5cGUubWV0aG9kKToKKyAgICAgICAgKEMpOgorICAgICAg
ICAoY2F0Y2gpOgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZC1nZXQtYW5kLWNhbGwu
anM6IEFkZGVkLgorICAgICAgICAobGV0LmFzc2VydC5zYW1lVmFsdWUpOgorICAgICAgICAobGV0
LmFzc2VydC50aHJvd3MpOgorICAgICAgICAoQy5wcm90b3R5cGUubSk6CisgICAgICAgIChDLnBy
b3RvdHlwZS5nZXRQcml2YXRlTWV0aG9kKToKKyAgICAgICAgKEMpOgorICAgICAgICAqIHN0cmVz
cy9wcml2YXRlLW1ldGhvZC1uZXN0ZWQtY2xhc3MuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0
KToKKyAgICAgICAgKEMpOgorICAgICAgICAocHJvdG90eXBlLm1CYXNlKToKKyAgICAgICAgKGNh
dGNoKToKKyAgICAgICAgKHByb3RvdHlwZS5tZXRob2QpOgorICAgICAgICAoQy5wcm90b3R5cGUu
bSk6CisgICAgICAgIChwcm90b3R5cGUubSk6CisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0
aG9kcy1vbi1wcm94eS5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAoYXNz
ZXJ0QXJyYXlDb250ZW50KToKKyAgICAgICAgKHByb3RvdHlwZS5tKToKKyAgICAgICAgKHByb3Rv
dHlwZS5tZXRob2QpOgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW5hbWVzLWF2YWlsYWJsZS1v
bi1kaXJlY3QtZXZhbC5qczogQWRkZWQuCisgICAgICAgIChsZXQuYXNzZXJ0LnNhbWVWYWx1ZSk6
CisgICAgICAgIChDLnByb3RvdHlwZS5tKToKKyAgICAgICAgKEMucHJvdG90eXBlLmNhbGxNZXRo
b2RGcm9tRXZhbCk6CisgICAgICAgIChDKToKKyAgICAgICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1s
OgorCiAyMDE5LTEwLTA5ICBDYWl0bGluIFBvdHRlciAgPGNhaXRwQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0pTQ10gQWRkIHN1cHBvcnQgZm9yIGluc3RhbmNlIGNsYXNzIGZpZWxkcwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1icmFuZC1pbnN0YWxsZWQtYWZ0ZXItc3VwZXIt
Y2FsbC1mcm9tLWFycm93LWZ1bmN0aW9uLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1icmFu
ZC1pbnN0YWxsZWQtYWZ0ZXItc3VwZXItY2FsbC1mcm9tLWFycm93LWZ1bmN0aW9uLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43Y2U2YmQ3YzI2MQotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVyLXN1
cGVyLWNhbGwtZnJvbS1hcnJvdy1mdW5jdGlvbi5qcwpAQCAtMCwwICsxLDI3IEBACisvL0AgcmVx
dWlyZU9wdGlvbnMoIi0tdXNlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChh
LCBlKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0
ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7Cit9CisKK2NsYXNzIEEge30KKworY2xhc3Mg
QyBleHRlbmRzIEEgeworICAgICNtZXRob2QoKSB7CisgICAgICAgIHJldHVybiAiYmFzZSI7Cisg
ICAgfQorCisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIGxldCBpbml0ID0gKCkgPT4gc3Vw
ZXIoKTsKKyAgICAgICAgaW5pdCgpOworICAgIH0KKworICAgIGJhc2VBY2Nlc3MoKSB7CisgICAg
ICAgIHJldHVybiB0aGlzLiNtZXRob2QoKTsKKyAgICB9Cit9CisKK2xldCBjID0gbmV3IEMoKTsK
K2Fzc2VydChjLmJhc2VBY2Nlc3MoKSwgImJhc2UiKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvcHJpdmF0ZS1icmFuZC1pbnN0YWxsZWQtYWZ0ZXItc3VwZXItY2FsbC1mcm9tLWV2YWwu
anMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLWJyYW5kLWluc3RhbGxlZC1hZnRlci1zdXBlci1j
YWxsLWZyb20tZXZhbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u
M2RhMTNkMGYwZmIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLWJy
YW5kLWluc3RhbGxlZC1hZnRlci1zdXBlci1jYWxsLWZyb20tZXZhbC5qcwpAQCAtMCwwICsxLDI2
IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2Z1bmN0
aW9uIGFzc2VydChhLCBlKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7Cit9CisKK2NsYXNzIEEg
e30KKworY2xhc3MgQyBleHRlbmRzIEEgeworICAgICNtZXRob2QoKSB7CisgICAgICAgIHJldHVy
biAiYmFzZSI7CisgICAgfQorCisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIGV2YWwoInN1
cGVyKCkiKTsKKyAgICB9CisKKyAgICBiYXNlQWNjZXNzKCkgeworICAgICAgICByZXR1cm4gdGhp
cy4jbWV0aG9kKCk7CisgICAgfQorfQorCitsZXQgYyA9IG5ldyBDKCk7Cithc3NlcnQoYy5iYXNl
QWNjZXNzKCksICJiYXNlIik7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUt
bWV0aG9kLWJyYW5kLWNoZWNrLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtYnJh
bmQtY2hlY2suanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjUxZjIy
OGIzMmJhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2Qt
YnJhbmQtY2hlY2suanMKQEAgLTAsMCArMSwzMyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVz
ZUNsYXNzRmllbGRzPXRydWUiKQorCitmdW5jdGlvbiBhc3NlcnQoYSwgZSkgeworICAgIGlmIChh
ICE9PSBlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0
IGdvdDogIiArIGEpOworfQorCitjbGFzcyBDIHsKKyAgICAjbSgpIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuI2Y7CisgICAgfQorCisgICAgbWV0aG9kKCkgeworICAgICAgICByZXR1cm4gdGhpcy4j
bSgpOworICAgIH0KKworICAgICNmID0gNDsKK30KKworbGV0IGMgPSBuZXcgQygpOworYXNzZXJ0
KGMubWV0aG9kKCksIDQpOworCit0cnkgeworICAgIGNsYXNzIEMgeworICAgICAgICAjbSgpIHsg
cmV0dXJuIDM7IH0KKyAgICB9CisKKyAgICBsZXQgbyA9IG5ldyBDKCk7CisgICAgYy5tZXRob2Qu
Y2FsbChvKTsKK30gY2F0Y2ggKGUpIHsKKyAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIFR5cGVFcnJv
ciwgdHJ1ZSk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9k
LWNvbXBhcmlzb24uanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1jb21wYXJpc29u
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hOGQ1MTMzODU0ZQot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWNvbXBhcmlz
b24uanMKQEAgLTAsMCArMSwzMSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZUNsYXNzRmll
bGRzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGxo
cywgcmhzKSB7CisgICAgICAgIGlmIChsaHMgIT09IHJocykKKyAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBsaHMgKyAiIGJ1ZyBnb3Q6ICIgKyByaHMpOworICAgIH0s
CisKKyAgICB0aHJvd3M6IGZ1bmN0aW9uIChleHBlY3RlZEVycm9yLCBvcCkgeworICAgICAgICB0
cnkgeworICAgICAgICAgIG9wKCk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAg
aWYgKCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVkRXJyb3IpKQorICAgICAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleHBlY3RlZEVycm9yICsgIiBidXQg
dGhyZXc6ICIgKyBlKTsKKyAgICAgICAgfQorICAgIH0KK307CisKK2NsYXNzIEMgeworICAgICNt
KCkgeyByZXR1cm4gJ3Rlc3QyNjInOyB9CisKKyAgICBnZXRQcml2YXRlTWV0aG9kKCkgeworICAg
ICAgICByZXR1cm4gdGhpcy4jbTsKKyAgICB9Cit9CisKK2xldCBjMSA9IG5ldyBDKCk7CitsZXQg
YzIgPSBuZXcgQygpOworCithc3NlcnQuc2FtZVZhbHVlKGMxLmdldFByaXZhdGVNZXRob2QoKSwg
YzIuZ2V0UHJpdmF0ZU1ldGhvZCgpKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJp
dmF0ZS1tZXRob2QtZXh0ZW5kcy1icmFuZC1jaGVjay5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZh
dGUtbWV0aG9kLWV4dGVuZHMtYnJhbmQtY2hlY2suanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAuLjIyYTZkMzQwYjQ1Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3MvcHJpdmF0ZS1tZXRob2QtZXh0ZW5kcy1icmFuZC1jaGVjay5qcwpAQCAtMCwwICsxLDQx
IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2Z1bmN0
aW9uIGFzc2VydChhLCBlKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7Cit9CisKK2NsYXNzIEJh
c2UgeworICAgICNtQmFzZSgpIHsKKyAgICAgICAgcmV0dXJuIDQ7CisgICAgfQorCisgICAgbWV0
aG9kQmFzZSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI21CYXNlKCk7CisgICAgfQorfQorCitj
bGFzcyBDIGV4dGVuZHMgQmFzZSB7CisgICAgI20oKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNm
OworICAgIH0KKworICAgIG1ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI20oKTsKKyAg
ICB9CisKKyAgICAjZiA9IDE1OworfQorCitsZXQgYyA9IG5ldyBDKCk7Cithc3NlcnQoYy5tZXRo
b2QoKSwgMTUpOworYXNzZXJ0KGMubWV0aG9kQmFzZSgpLCA0KTsKKworbGV0IGJhc2UgPSBuZXcg
QmFzZSAoKTsKK2Fzc2VydChiYXNlLm1ldGhvZEJhc2UoKSwgNCk7Cit0cnkgeworICAgIGMubWV0
aG9kLmNhbGwoYmFzZSk7Cit9IGNhdGNoIChlKSB7CisgICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBU
eXBlRXJyb3IsIHRydWUpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRl
LW1ldGhvZC1nZXQtYW5kLWNhbGwuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1n
ZXQtYW5kLWNhbGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmYw
OGNiMWEyMTBhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRo
b2QtZ2V0LWFuZC1jYWxsLmpzCkBAIC0wLDAgKzEsMzMgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygi
LS11c2VDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6
IGZ1bmN0aW9uIChsaHMsIHJocykgeworICAgICAgICBpZiAobGhzICE9PSByaHMpCisgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgbGhzICsgIiBidWcgZ290OiAiICsg
cmhzKTsKKyAgICB9LAorCisgICAgdGhyb3dzOiBmdW5jdGlvbiAoZXhwZWN0ZWRFcnJvciwgb3Ap
IHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICBvcCgpOworICAgICAgICB9IGNhdGNoKGUpIHsK
KyAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEVycm9yKSkKKyAgICAgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhwZWN0ZWRF
cnJvciArICIgYnV0IHRocmV3OiAiICsgZSk7CisgICAgICAgIH0KKyAgICB9Cit9OworCitjbGFz
cyBDIHsKKyAgICAjbSgpIHsgcmV0dXJuIHRoaXMuX3Y7IH0KKworICAgIGdldFByaXZhdGVNZXRo
b2QoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtOworICAgIH0KK30KKworbGV0IGMgPSBuZXcg
QygpOworCitsZXQgbzEgPSB7X3Y6ICd0ZXN0MjYyJ307CitsZXQgbzIgPSB7X3Y6ICdmb28nfTsg
Cithc3NlcnQuc2FtZVZhbHVlKGMuZ2V0UHJpdmF0ZU1ldGhvZCgpLmNhbGwobzEpLCAndGVzdDI2
MicpOworYXNzZXJ0LnNhbWVWYWx1ZShjLmdldFByaXZhdGVNZXRob2QoKS5jYWxsKG8yKSwgJ2Zv
bycpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1uZXN0ZWQt
Y2xhc3MuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1uZXN0ZWQtY2xhc3MuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjU3NjkzZDcwNDJkCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtbmVzdGVkLWNsYXNz
LmpzCkBAIC0wLDAgKzEsNjggQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VDbGFzc0ZpZWxk
cz10cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBh
KTsKK30KKworKCgpID0+IHsKKyAgICBjbGFzcyBCYXNlIHsKKyAgICAgICAgQyA9IGNsYXNzIHsK
KyAgICAgICAgICAgIG1ldGhvZCgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4jbUJh
c2UoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgICNtQmFzZSgpIHsKKyAg
ICAgICAgICAgIHJldHVybiA0OworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGJhc2UgPSBu
ZXcgQmFzZSgpOworICAgIGxldCBjID0gbmV3IGJhc2UuQygpOworICAgIGFzc2VydChjLm1ldGhv
ZC5jYWxsKGJhc2UpLCA0KTsKKworICAgIHRyeSB7CisgICAgICAgIGMubWV0aG9kKCk7CisgICAg
fSBjYXRjaCAoZSkgeworICAgICAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIFR5cGVFcnJvciwgdHJ1
ZSk7CisgICAgfQorfSkoKTsKKworLy8gVGVzdCBzaGFkb3cgbWV0aG9kcworCisoKCkgPT4gewor
ICAgIGNsYXNzIEJhc2UgeworICAgICAgICBtZXRob2QoKSB7CisgICAgICAgICAgICByZXR1cm4g
dGhpcy4jbSgpOworICAgICAgICB9CisKKyAgICAgICAgQyA9IGNsYXNzIHsKKyAgICAgICAgICAg
IG1ldGhvZChvKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG8uI20oKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgI20oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZm9v
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb28gPSA0OworICAgICAgICB9OworCisg
ICAgICAgICNtKCkgeworICAgICAgICAgICAgcmV0dXJuICJmb28iOworICAgICAgICB9CisgICAg
fQorCisgICAgbGV0IGJhc2UgPSBuZXcgQmFzZSgpOworICAgIGxldCBjID0gbmV3IGJhc2UuQygp
OworICAgIGFzc2VydChjLm1ldGhvZChjKSwgNCk7CisgICAgYXNzZXJ0KGJhc2UubWV0aG9kKCks
ICJmb28iKTsKKworICAgIHRyeSB7CisgICAgICAgIGMubWV0aG9kKGJhc2UpOworICAgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBUeXBlRXJyb3IsIHRydWUpOwor
ICAgIH0KK30pKCk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9k
cy1vbi1wcm94eS5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1vbi1wcm94eS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzI3YzlkMzI0ZWQKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZHMtb24tcHJveHku
anMKQEAgLTAsMCArMSw0MiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZUNsYXNzRmllbGRz
PXRydWUiKQorCitmdW5jdGlvbiBhc3NlcnQoYSwgZSwgbSkgeworICAgIGlmIChhICE9PSBlKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IobSk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydEFycmF5Q29u
dGVudChhLCBlKSB7CisgICAgYXNzZXJ0KGEubGVuZ3RoLCBlLmxlbmd0aCwgIlNpemUgb2YgYXJy
YXlzIGRvZXNuJ3QgbWF0Y2giKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyBp
KyspCisgICAgICAgIGFzc2VydChhW2ldLCBlW2ldLCAiYVsiICsgaSArICJdID0gIiArIGFbaV0g
KyAiIGJ1dCBlWyIgKyBpICsgIl0gPSAiICsgZVtpXSk7Cit9CisKK2xldCBhcnIgPSBbXTsKKwor
Y2xhc3MgUHJveHlCYXNlIHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgcmV0dXJuIG5l
dyBQcm94eSh0aGlzLCB7CisgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uIChvYmosIHByb3ApIHsK
KyAgICAgICAgICAgICAgICBhcnIucHVzaChwcm9wKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
b2JqW3Byb3BdOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9Cit9CisKK2NsYXNz
IFRlc3QgZXh0ZW5kcyBQcm94eUJhc2UgeworICAgICNtKCkgeworICAgICAgICByZXR1cm4gMzsK
KyAgICB9CisKKyAgICBtZXRob2QoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtKCk7CisgICAg
fQorfQorCitsZXQgdCA9IG5ldyBUZXN0KCk7CitsZXQgciA9IHQubWV0aG9kKCk7Cithc3NlcnQo
ciwgMywgIkV4cGVjdGVkOiAzIGJ1dCBnb3Q6ICIgKyByKTsKKworYXNzZXJ0QXJyYXlDb250ZW50
KGFyciwgWydtZXRob2QnXSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUt
bmFtZXMtYXZhaWxhYmxlLW9uLWRpcmVjdC1ldmFsLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0
ZS1uYW1lcy1hdmFpbGFibGUtb24tZGlyZWN0LWV2YWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAuLjAxNDAyZDc0YjU3Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvcHJpdmF0ZS1uYW1lcy1hdmFpbGFibGUtb24tZGlyZWN0LWV2YWwuanMKQEAgLTAs
MCArMSwyMyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZUNsYXNzRmllbGRzPXRydWUiKQor
CitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7Cisg
ICAgICAgIGlmIChsaHMgIT09IHJocykKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhw
ZWN0ZWQ6ICIgKyByaHMgKyAiIGJ1ZyBnb3Q6ICIgKyBsaHMpOworICAgIH0KK307CisKKyhmdW5j
dGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9
CisKKyAgICAgICAgY2FsbE1ldGhvZEZyb21FdmFsKCkgeworICAgICAgICAgICAgbGV0IHNlbGYg
PSB0aGlzOworICAgICAgICAgICAgcmV0dXJuIGV2YWwoJ3NlbGYuI20oKScpOworICAgICAgICB9
CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5j
YWxsTWV0aG9kRnJvbUV2YWwoKSwgJ3Rlc3QnKTsKK30pKCk7CisKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvdGVzdDI2Mi9jb25maWcueWFtbCBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAppbmRl
eCBhZWZmNTkxZWExMy4uNTJmZTJjMTUxZjMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9j
b25maWcueWFtbAorKysgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKQEAgLTE0LDcgKzE0
LDYgQEAgc2tpcDoKICAgICAtIGFzeW5jLWl0ZXJhdGlvbgogICAgICMgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDkzMQogICAgIC0gcmVnZXhwLWxvb2tiZWhpbmQK
LSAgICAtIGNsYXNzLW1ldGhvZHMtcHJpdmF0ZQogICAgIC0gY2xhc3Mtc3RhdGljLWZpZWxkcy1w
dWJsaWMKICAgICAtIGNsYXNzLXN0YXRpYy1maWVsZHMtcHJpdmF0ZQogICAgIC0gY2xhc3Mtc3Rh
dGljLW1ldGhvZHMtcHJpdmF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggNWExN2Q3MDhi
YWQuLmNlOTEzNWFkYzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyODMg
QEAKKzIwMTktMDYtMjcgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgorCisgICAg
ICAgIFtFU05leHRdIEltcGxlbWVudCBwcml2YXRlIG1ldGhvZHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDQzNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYWRkaW5nIHN1cHBv
cnQgdG8gcHJpdmF0ZSBtZXRob2RzIGZvbGxvd2luZyB0aGUKKyAgICAgICAgc3BlY2lmaWNhdGlv
biBvbiBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtcHJpdmF0ZS1tZXRob2RzLy4KKyAgICAgICAg
VGhpcyBpcyBpbnRyb2R1Y2luZyBhIG5ldyB3YXkgdG8gZGVjbGFyZSBwcml2YXRlIG1ldGhvZHMg
b24KKyAgICAgICAgY2xhc3Mgc3ludGF4LiBQcml2YXRlIG1ldGhvZHMgYXJlIG9ubHkgYWNjZXNz
aWJsZSB3aXRoaW4KKyAgICAgICAgY2xhc3NlcyB0aGV5IHdlcmUgZGVjbGFyZWQsIGFuZCBvbmx5
IGNhbiBiZSBjYWxsZWQgZnJvbQorICAgICAgICBvYmplY3RzIHRoYXQgYXJlIGluc3RhbmNlIG9m
IHRoZXNlIGNsYXNzZXMuCisgICAgICAgIFRvIGd1YXJhbnRlZSBzdWNoIHJ1bGVzLCB0aGUgcHJv
cG9zYWwgcHJlc2VudHMgdGhlIGNvbmNlcHQgb2YKKyAgICAgICAgQnJhbmQgQ2hlY2suIER1cmlu
ZyBjbGFzcyBldmFsdWF0aW9uLCBpZiBhIHByaXZhdGUgbWV0aG9kIGlzIHByZXNlbnQsCisgICAg
ICAgIGEgYGJyYW5kYCBpcyBpbnN0YWxsZWQgaW4gdGhpcyBjbGFzcy4gRXZlcnkgaW5zdGFuY2Ug
b2Ygc3VjaCBjbGFzcworICAgICAgICB0aGVuIGdldHMgdGhpcyBicmFuZCBpbnN0YWxsZWQgZHVy
aW5nIGBbW0NvbnN0cnVjdF1dYCBvcGVyYXRpb24uIEl0CisgICAgICAgIG1lYW5zIHRoYXQgYW4g
b2JqZWN0IGNhbiBoYXZlIG11bHRpcGxlIGJyYW5kcyAoZS5nIHdoZW4gdGhlcmUgaXMgYWxzbwor
ICAgICAgICBwcml2YXRlIG1ldGhvZHMgZGVjbGFyZWQgb24gc3VwZXIgY2xhc3MpLiBCZWZvcmUg
YWNjZXNzaW5nIGEgcHJpdmF0ZQorICAgICAgICBtZXRob2QsIHRoZXJlIGlzIGEgY2hlY2sgdG8g
dmFsaWRhdGUgaWYgdGhlIHRhcmdldCBvZiB0aGUgY2FsbCBoYXMgdGhlCisgICAgICAgIGJyYW5k
IG9mIGNhbGxlZSBtZXRob2QuCisgICAgICAgIFRoZSBicmFuZCBjaGVjayBtZWNoYW5pc20gaXMg
aW1wbGVtZW50ZWQgdXNpbmcgYSBgQHByaXZhdGVCcmFuZGAKKyAgICAgICAgc3RvcmVkIG9uIGNs
YXNzIHNjb3BlLiBIZXJlIGlzIGEgcmVwcmVzZW50YXRpb24gb2YgaG93IHRoaXMgbWVjaGFuaXNt
CisgICAgICAgIHdvcmtzOgorCisgICAgICAgIGBgYAorICAgICAgICBjbGFzcyBDIHsKKyAgICAg
ICAgICAgICNtKCkgeyByZXR1cm4gMzsgfQorICAgICAgICAgICAgbWV0aG9kKCkgeyByZXR1cm4g
dGhpcy4jbSgpOyB9CisgICAgICAgIH0KKworICAgICAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAg
ICAgIGNvbnNvbGUubG9nKGMubWV0aG9kKCkpOyAvLyBwcmludHMgMworICAgICAgICBgYGAKKwor
ICAgICAgICBHZW5lcmF0ZWQgYnl0ZWNvZGUgZm9yIHRoZSBmb2xsb3dpbmcgcmVwcmVzZW50YXRp
b246CisgICAgICAgIGBgYAorICAgICAgICB7IC8vIGNsYXNzIGxleGljYWwgc2NvcGUKKyAgICAg
ICAgICAgIGNvbnN0IEBwcml2YXRlQnJhbmQwID0gQGNyZWF0ZVByaXZhdGVTeW1ib2woKTsKKyAg
ICAgICAgICAgIGNvbnN0ICNtID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gMzsgfQorICAgICAgICAg
ICAgQy5wcm90b3R5cGUubWV0aG9kID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgQGdl
dERpcmVjdEJ5VmFsKHRoaXMsIEBwcml2YXRlQnJhbmQwKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gI20uY2FsbCh0aGlzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEMgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgICAgICBAcHV0RGlyZWN0QnlWYWwodGhpcywgQHByaXZhdGVCcmFu
ZDAsIEBwcml2YXRlQnJhbmQwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IGxldCBjID0gbmV3IEMoKTsKKyAgICAgICAgY29uc29sZS5sb2coYy5tZXRob2QoKSk7IC8vIHBy
aW50cyAzCisgICAgICAgIGBgYAorCisgICAgICAgIFRoZSBicmFuZCBjaGVjayBpcyBwZXJmb3Jt
ZWQgYnkgYGdldF9ieV92YWxfZGlyZWN0YCwgd2hlcmUgd2UgcmUtdXNlCisgICAgICAgIHRoZSBt
ZWNoYW5pc20gaW50cm9kdWNlZCBieSBwcml2YXRlIGNsYXNzIGZpZWxkcy4gV2UgY2FuIHNlZSB0
aGUKKyAgICAgICAgcHJpdmF0ZSBicmFuZCBhcyBhIHNwZWNpYWwgcHJpdmF0ZSBmaWVsZCBpbnN0
YWxsZWQgZHVyaW5nCisgICAgICAgIGBbW0NvbnN0cnVjdF1dYCBvcGVyYXRpb24uIFNpbmNlIHRo
ZSBwcml2YXRlIGJyYW5kIGlzIGEgcHJpdmF0ZSBmaWVsZCwKKyAgICAgICAgd2UgdGhyb3cgYFR5
cGVFcnJvcmAgd2hlbiB0aGUgbG9va3VwIGZhaWwuCisKKyAgICAgICAgVG8gcHJvcGVybHkgc3Rv
cmUgdGhlIHByaXZhdGUgYnJhbmQgb2YgYSBjbGFzcyBvbiBhbGwgT2JqZWN0cywKKyAgICAgICAg
aW5jbHVkaW5nIFByb3hpZXMsIHdlIHVzZSAiQHB1dERpcmVjdEJ5VmFsIi4gVGhpcyBpbnRydWN0
aW9uIHB1dHMKKyAgICAgICAgdmFsdWUgb24gT2JqZWN0J3MgcHJvcGVydGllcyB3aXRob3V0IGV4
ZWN1dGluZyBbW1B1dF1dIHNlbWFudGljcy4KKyAgICAgICAgV2l0aCB0aGlzIGRlc2lnbiwgd2Ug
YXZvaWQgYWxsb2NhdGluZyBhIGZpZWxkIGZvciBldmVyeSBpbnN0YW5jZQorICAgICAgICBvZiBh
IGNsYXNzLCBzaW5jZSBwcml2YXRlIG1ldGhvZHMgYXJlIHN0b3JlZCBvbiBjbGFzcworICAgICAg
ICBsZXhpY2FsIHNjb3BlLiBFdmVyeSBvYmplY3Qgd2lsbCBoYXZlIHRvIGFsbG9jYXRlIGl0cyBw
cml2YXRlCisgICAgICAgIGJyYW5kIGxpc3QuIFRoaXMgZGVzaWduIGluc2VydHMgbm8gb3Zlcmhl
YWQgb24gb2JqZWN0cyBhbmQgY2xhc3NlcworICAgICAgICB3aXRob3V0IHByaXZhdGUgbWV0aG9k
cy9hY2Nlc3Nvci4KKworICAgICAgICBSZXNvbHZpbmcgY29ycmVjdCBicmFuZCBjaGVjazoKKwor
ICAgICAgICBJbiB0aGUgY2FzZSBvZiBzaGFkb3dpbmcgb3IgbmVzdGVkIHNjb3BlLCB3ZSBuZWVk
IHRvIGVtaXQgYnJhbmQKKyAgICAgICAgY2hlY2tzIHRvIHRoZSByaWdodCBwcml2YXRlIGJyYW5k
LiBTZWUgY29kZSBiZWxvdzoKKworICAgICAgICBgYGAKKyAgICAgICAgY2xhc3MgQyB7CisgICAg
ICAgICAgICAjbSgpIHsgcmV0dXJuIDM7IH0KKyAgICAgICAgICAgIG1ldGhvZCgpIHsgcmV0dXJu
IHRoaXMuI20oKTt9CisKKyAgICAgICAgICAgIEEgPSBjbGFzcyB7CisgICAgICAgICAgICAgICAg
I20yKCkgeyByZXR1cm4gMzsgfQorICAgICAgICAgICAgICAgIGZvbyhvKSB7IHJldHVybiB0aGlz
LiNtKCk7IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBgYGAKKworICAgICAg
ICBUaGUgY2FsbCBvZiAiI20iIGluIGBmb29gIHJlZmVycyB0byAiQzo6I20iLiBJbiBzdWNoIGNh
c2UsIHdlIG5lZWQgdG8KKyAgICAgICAgY2hlY2sgQydzIHByaXZhdGUgYnJhbmQsIGluc3RlYWQg
b2YgQSdzIHByaXZhdGUgYnJhbmQuCisgICAgICAgIFRvIHBlcmZvcm0gdGhlIHByb3BlciBjaGVj
aywgd2UgZmlyc3QgcmVzb2x2ZSBzY29wZSBvZiAiI20iIGFuZCB0aGVuCisgICAgICAgIGNoZWNr
IHRoZSBwcml2YXRlIGJyYW5kIG9mIHRoaXMgc2NvcGUgKHRoZSBzY29wZSB3aGVyZSB0aGUgcHJp
dmF0ZQorICAgICAgICBtZXRob2QgYW5kIGJyYW5kIGFyZSBzdG9yZWQgaXMgdGhlIHNhbWUpLgor
ICAgICAgICBTbyB0aGUgYnl0ZWNvZGUgdG8gbG9va3VwIHRoZSByaWdodCBicmFuZCBpczoKKwor
ICAgICAgICBgYGAKKyAgICAgICAgcmVzb2x2ZV9zY29wZSBsb2MxMCwgIiNtIgorICAgICAgICBn
ZXRfZnJvbV9zY29wZSBsb2MxMSwgbG9jMTAsICJAcHJpdmF0ZUJyYW5kIgorICAgICAgICBnZXRf
YnlfdmFsX2RpcmVjdCBsb2MxMiwgdGhpcywgbG9jMTEKKyAgICAgICAgZ2V0X2Zyb21fc2NvcGUg
bG9jMTEsIGxvYzEwLCAiI20iCisgICAgICAgIC8vIHNldHVwIGNhbGwgZnJhbWUKKyAgICAgICAg
Y2FsbCBsb2MxMSwgLi4uCisgICAgICAgIC8vIC4uLgorICAgICAgICBgYGAKKworICAgICAgICAq
IGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6CisgICAgICAgIChKU0M6OkJ1aWx0aW5F
eGVjdXRhYmxlczo6Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6QnVp
bHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKToKKyAgICAgICAgKiBidWlsdGlucy9C
dWlsdGluRXhlY3V0YWJsZXMuaDoKKworICAgICAgICBXZSBhcmUgYWRkaW5nIGEgbmV3IHBhcmFt
ZXRlciBgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnRgIHRvIHByb3BhZ2F0ZQorICAgICAgICB3aGVu
IGEgZGVmYXVsdCBjb25zdHJ1Y3RvciBuZWVkcyB0byBlbWl0IGNvZGUgdG8gc2V0dXAgcHJpdmF0
ZSBicmFuZAorICAgICAgICBvbiBpbnN0YW5jZXMuCisKKyAgICAgICAgKiBidWlsdGlucy9CdWls
dGluTmFtZXMuaDoKKworICAgICAgICBBZGRpbmcgYEBjcmVhdGVQcml2YXRlU3ltYm9sYCBhbmQg
YEBwcml2YXRlQnJhbmRgLgorICAgICAgICBgQGNyZWF0ZVByaXZhdGVTeW1ib2xgIGlzIHVzZWQg
YXMgYSBmdW5jdGlvbiB0byBlbmFibGUgdXMgYWxsb2NhdGUKKyAgICAgICAgUHJpdmF0ZVN5bWJv
bHMgYXQgZXhlY3V0aW9uIHRpbWUuIGBAcHJpdmF0ZUJyYW5kYCBpcyB0aGUgbmFtZSB3ZSB1c2UK
KyAgICAgICAgdG8gc3RvcmUgcHJpdmF0ZSBicmFuZCBvbiBjbGFzcydzIHNjb3BlLgorCisgICAg
ICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVj
b2RlVXNlRGVmLmg6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQp
OgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAg
KiBieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5m
bzo6RXhlY3V0YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6cHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29k
ZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAg
ICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgY29uc3Qp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAg
ICAgICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKToKKyAgICAgICAg
KEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisKKyAgICAgICAgV2Ug
Y2hhbmdlZCBCeXRlY29kZUdlbmVyYXRvciBmb3IgRnVuY3Rpb25Ob2RlIGFuZCBFdmFsTm9kZSB0
bworICAgICAgICBwcm9wYWdhdGUgcGFyZW50U2NvcGUgVmFyaWFibGVFbnZpcm9ubWVudC4gVGhl
c2UgZW52aXJvbm1lbnRzIHN0b3JlcworICAgICAgICBwcml2YXRlIG5hbWUgZW50cmllcyB0aGF0
IGFyZSB2aXNpYmxlIGludG8gdGhlIHNjb3BlIG9mIHRoZQorICAgICAgICBmdW5jdGlvbi9ldmFs
IGluIGFkZGl0aW9uIHRvIFREWiB2YXJpYWJsZXMuCisgICAgICAgIFRoaXMgaXMgcmVxdWlyZWQg
dG8gaWRlbnRpZnkgdGhlIGtpbmQgb2YgYWNjZXNzIGEgcHJpdmF0ZSBuYW1lIGlzCisgICAgICAg
IHJlZmVycmluZyB0bywgc2luY2UgaXQgY2FuIGJlIGEgcHJpdmF0ZSBmaWVsZCBvciBhIHByaXZh
dGUgbWV0aG9kLgorICAgICAgICBHaXZlbiB0aGlzIGNoYW5nZSwgd2UgY2hhbmdlZCB0aGUgbmFt
ZSBvZiBWYXJpYWJsZUVudmlyb25tZW50CisgICAgICAgIGZyb20gYHBhcmVudFNjb3BlVERaVmFy
aWFibGVzYCB0byBgcGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50YC4KKworICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aW5zdGFudGlhdGVMZXhpY2FsVmFyaWFibGVzKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDaGVja1ByaXZhdGVCcmFuZCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlUHJpdmF0ZUJyYW5kKToK
KworICAgICAgICBUaGUgcHJvY2VzcyB0byBjcmVhdGUgYSBwcml2YXRlIGJyYW5kIGlzIGFzIGZv
bGxvd3M6CisgICAgICAgICAgICAxLiBDcmVhdGUgYSBQcml2YXRlU3ltYm9sIHVzaW5nIGBAY3Jl
YXRlUHJpdmF0ZVN5bWJvbGAuCisgICAgICAgICAgICAyLiBTdG9yZSB0aGlzIHN5bWJvbCBpbnRv
IGEgZ2l2ZW4gc2NvcGUgKGkuZSBjbGFzcyBsZXhpY2FsIHNjb3BlKQorICAgICAgICAgICAgICAg
b24gYEBwcml2YXRlQnJhbmRgIHZhcmlhYmxlLgorCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0SW5zdGFsbFByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0R2V0UHJpdmF0ZUJyYW5kKToKKworICAgICAgICBUaGlzIG9wZXJhdGlv
biBsb29rdXAgZm9yIGBAcHJpdmF0ZUJyYW5kYCBmcm9tIGEgZ2l2ZW4gc2NvcGUuCisKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmlzUHJpdmF0ZU1ldGhvZCk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoUHJpdmF0ZUFjY2Vzc05hbWVzKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnBvcFByaXZhdGVBY2Nlc3NOYW1lcyk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZXRBdmFpbGFibGVQcml2YXRlQWNjZXNzTmFtZXMp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2V0VmFyaWFibGVzVW5kZXJURFop
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0RlZmF1bHRDb25zdHJ1
Y3Rvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3SW5zdGFuY2VG
aWVsZEluaXRpYWxpemVyRnVuY3Rpb24pOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oOgorCisgICAgICAgIFdlIGFkZGVkIGBtX3ByaXZhdGVOYW1lc1N0YWNrYCB0
byBCeXRlY29kZUdlbmVyYXRvciB0byByZXByZXNlbnQgdGhlCisgICAgICAgIHNjb3BlIGNoYWlu
IG9mIGF2YWlsYWJsZSBwcml2YXRlIG5hbWVzIHdoaWxlIGdlbmVyYXRpbmcgYnl0ZWNvZGUuCisK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnByaXZhdGVCcmFuZFJlcXVpcmVtZW50
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Om1ha2VGdW5jdGlvbik6
CisKKyAgICAgICAgVGhpcyBjaGFuZ2UgaXMgcmVxdWlyZWQgdG8gcHJvcGVybHkgcHJvcGFnYXRl
IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50CisgICAgICAgIHRvIGFycm93IGZ1bmN0aW9ucyB0aGF0
IGNhbiBwb3RlbnRpYWxseSBjYWxsIHN1cGVyKCkuCisKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1
dENvbnN0YW50UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6ZW1pdEdldFBy
b3BlcnR5VmFsdWUpOgorCisgICAgICAgIEFkZGluZyBzdXBwb3J0IHRvIHByb3Blcmx5IGFjY2Vz
cyBwcml2YXRlIG1ldGhvZC4gU2luY2Ugd2Ugc3RvcmUKKyAgICAgICAgcHJpdmF0ZSBtZXRob2Rz
IG9uIGNsYXNzIGxleGljYWwgc2NvcGUsIHdlIG5lZWQgYSBkaWZmZXJlbnQgc2V0IG9mCisgICAg
ICAgIGluc3RydWN0aW9ucyB0byBhY2Nlc3MgYSBwcml2YXRlIG1ldGhvZC4KKworICAgICAgICAo
SlNDOjpCYXNlRG90Tm9kZTo6ZW1pdFB1dFByb3BlcnR5KToKKworICAgICAgICBJbiB0aGUgY2Fz
ZSBvZiB3ZSB0cnlpbmcgdG8gd3JpdGUgaW4gYSBwcml2YXRlIG1ldGhvZCwgd2UgbmVlZCB0bwor
ICAgICAgICB0aHJvdyBhIFR5cGVFcnJvciBhY2NvcmRpbmcgdG8gc3BlY2lmaWNhdGlvbgorICAg
ICAgICAoaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXByaXZhdGUtbWV0aG9kcy8jc2VjLXByaXZh
dGVmaWVsZHNldCkuCisKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsVmFsdWVOb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6
RGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAg
KiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5
TGV2ZWwpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6ZXZhbCk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6
cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBp
bGVTbG93Q2FzZXMpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUT3Bj
b2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jaGVja19wcml2YXRlX2JyYW5k
KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAq
IHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFyPjo6cGFyc2VJZGVu
dGlmaWVyKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oOgorICAgICAgICAo
SlNDOjpQcm9wZXJ0eU5vZGU6OlByb3BlcnR5Tm9kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVz
LmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25NZXRhZGF0YU5vZGU6OkZ1bmN0aW9uTWV0YWRh
dGFOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFy
c2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MpOgor
ICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OmRlY2xhcmVQ
cml2YXRlTWV0aG9kKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyTW9kZXMuaDoKKyAgICAgICAg
KiBwYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OlZhcmlhYmxl
RW52aXJvbm1lbnQ6Om1hcmtQcml2YXRlTmFtZUFzRGVjbGFyZWQpOgorICAgICAgICAoSlNDOjpW
YXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZU1ldGhvZCk6CisgICAgICAgIChKU0M6
OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6
OkNvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50OjpDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudCk6
CisgICAgICAgIChKU0M6OkNvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50OjpvcGVyYXRvcj09IGNv
bnN0KToKKyAgICAgICAgKEpTQzo6Q29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQ6OnRvVmFyaWFi
bGVFbnZpcm9ubWVudCBjb25zdCk6CisKKyAgICAgICAgV2UgYWRkZWQgc3VwcG9ydCB0byBDb21w
YWN0VmFyaWFibGVFbnZpcm9ubWVudCBhbHNvIHN0b3JlIHByaXZhdGUKKyAgICAgICAgbmFtZXMu
CisKKyAgICAgICAgKiBwYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oOgorICAgICAgICAoSlND
OjpQcml2YXRlTmFtZUVudHJ5Ojppc01ldGhvZCBjb25zdCk6CisgICAgICAgIChKU0M6OlByaXZh
dGVOYW1lRW50cnk6OmlzUHJpdmF0ZUFjY2VzcyBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlh
YmxlRW52aXJvbm1lbnQ6OmFkZFByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVF
bnZpcm9ubWVudDo6ZGVjbGFyZVByaXZhdGVNZXRob2QpOgorICAgICAgICAoSlNDOjpWYXJpYWJs
ZUVudmlyb25tZW50OjpoYXNQcml2YXRlQWNjZXNzIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1l
L0NhY2hlZFR5cGVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkUHJpdmF0ZU5hbWVFbnRyeTo6
ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6Q2FjaGVkUHJpdmF0ZU5hbWVFbnRyeTo6ZGVjb2RlIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkU3ltYm9sVGFibGU6OmRlY29kZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkNhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZVJhcmVEYXRhOjplbmNvZGUpOgor
ICAgICAgICAoSlNDOjpDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGVSYXJlRGF0YTo6ZGVjb2RlIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlOjpwcml2YXRlQnJh
bmRSZXF1aXJlbWVudCBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZENvZGVCbG9jazo6cHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVC
bG9jazo6VW5saW5rZWRDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDYWNoZWRGdW5jdGlvbkV4
ZWN1dGFibGU6OmVuY29kZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkNhY2hlZENv
ZGVCbG9jazxDb2RlQmxvY2tUeXBlPjo6ZW5jb2RlKToKKyAgICAgICAgKiBydW50aW1lL0NvZGVD
YWNoZS5jcHA6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0VW5saW5rZWRHbG9iYWxGdW5j
dGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmg6CisgICAgICAg
IChKU0M6OnByaXZhdGVCcmFuZFJlcXVpcmVtZW50KToKKyAgICAgICAgKEpTQzo6cHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQ8RGlyZWN0RXZhbEV4ZWN1dGFibGU+KToKKyAgICAgICAgKEpTQzo6Z2Vu
ZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9EaXJlY3RFdmFsRXhl
Y3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OkRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpEaXJlY3RFdmFsRXhlY3V0YWJsZTo6RGlyZWN0RXZhbEV4ZWN1dGFi
bGUpOgorICAgICAgICAqIHJ1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuaDoKKyAgICAgICAg
KiBydW50aW1lL0V2YWxFeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxl
OjpleGVjdXRhYmxlSW5mbyBjb25zdCk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpw
cml2YXRlQnJhbmRSZXF1aXJlbWVudCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0ZVByaXZhdGVTeW1ib2wpOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU1Njb3Bl
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTY29wZTo6Y29sbGVjdENsb3N1cmVWYXJpYWJsZXNVbmRl
clREWik6CisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0Lmg6CisgICAgICAg
IChKU0M6OkpTU3ltYm9sVGFibGVPYmplY3Q6OnNldFN5bWJvbFRhYmxlKToKKyAgICAgICAgKiBy
dW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9PcHRp
b25zLmg6CisgICAgICAgICogcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oOgorICAgICAgICAq
IHJ1bnRpbWUvU3ltYm9sLmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sOjpjcmVhdGVQcml2YXRl
KToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbC5oOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9s
VGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZTo6Y2xvbmVTY29wZVBhcnQpOgor
ICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuaDoKKwogMjAxOS0xMC0wOSAgQ2FpdGxpbiBQ
b3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtKU0NdIEFkZCBzdXBwb3J0IGZv
ciBpbnN0YW5jZSBjbGFzcyBmaWVsZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKaW5kZXggOTc4M2U3M2FmNmMuLmE5NDJk
MmFkZmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bkV4ZWN1dGFibGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVp
bHRpbkV4ZWN1dGFibGVzLmNwcApAQCAtNTksNyArNTksNyBAQCBTb3VyY2VDb2RlIEJ1aWx0aW5F
eGVjdXRhYmxlczo6ZGVmYXVsdENvbnN0cnVjdG9yU291cmNlQ29kZShDb25zdHJ1Y3RvcktpbmQg
Y29ucwogICAgIHJldHVybiBTb3VyY2VDb2RlKCk7CiB9CiAKLVVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZURlZmF1bHRDb25zdHJ1Y3RvcihDb25z
dHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBDbGFz
c0ZpZWxkc0luaXRpYWxpemVyIGNsYXNzRmllbGRzSW5pdGlhbGl6ZXIpCitVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVEZWZhdWx0Q29uc3RydWN0
b3IoQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFt
ZSwgQ2xhc3NGaWVsZHNJbml0aWFsaXplciBjbGFzc0ZpZWxkc0luaXRpYWxpemVyLCBQcml2YXRl
QnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCkKIHsKICAgICBzd2l0Y2gg
KGNvbnN0cnVjdG9yS2luZCkgewogICAgIGNhc2UgQ29uc3RydWN0b3JLaW5kOjpOb25lOgpAQCAt
NjcsNyArNjcsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFi
bGVzOjpjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoQ29uc3RydQogICAgICAgICBicmVhazsKICAg
ICBjYXNlIENvbnN0cnVjdG9yS2luZDo6QmFzZToKICAgICBjYXNlIENvbnN0cnVjdG9yS2luZDo6
RXh0ZW5kczoKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUV4ZWN1dGFibGUobV92bSwgZGVmYXVsdENv
bnN0cnVjdG9yU291cmNlQ29kZShjb25zdHJ1Y3RvcktpbmQpLCBuYW1lLCBjb25zdHJ1Y3Rvcktp
bmQsIENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdCwgY2xhc3NGaWVsZHNJbml0aWFsaXpl
cik7CisgICAgICAgIHJldHVybiBjcmVhdGVFeGVjdXRhYmxlKG1fdm0sIGRlZmF1bHRDb25zdHJ1
Y3RvclNvdXJjZUNvZGUoY29uc3RydWN0b3JLaW5kKSwgbmFtZSwgY29uc3RydWN0b3JLaW5kLCBD
b25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3QsIGNsYXNzRmllbGRzSW5pdGlhbGl6ZXIsIHBy
aXZhdGVCcmFuZFJlcXVpcmVtZW50KTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC03OCw3ICs3OCw3IEBAIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKGNv
bnN0IFNvCiAgICAgcmV0dXJuIGNyZWF0ZUV4ZWN1dGFibGUobV92bSwgY29kZSwgbmFtZSwgY29u
c3RydWN0b3JLaW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBDbGFzc0ZpZWxkc0luaXRpYWxpemVyOjpO
b3ROZWVkZWQpOwogfQogCi1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1
dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNl
LCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5k
LCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIENsYXNzRmllbGRzSW5pdGlhbGl6
ZXIgY2xhc3NGaWVsZHNJbml0aWFsaXplcikKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBC
dWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIENvbnN0cnVjdG9yS2luZCBjb25z
dHJ1Y3RvcktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgQ2xhc3NGaWVs
ZHNJbml0aWFsaXplciBjbGFzc0ZpZWxkc0luaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJl
bWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCkKIHsKICAgICAvLyBGSVhNRTogQ2FuIHdlIGp1
c3QgbWFrZSBNZXRhRGF0YSBjb21wdXRhdGlvbiBiZSBjb25zdGV4cHIgYW5kIGhhdmUgdGhlIGNv
bXBpbGVyIGRvIHRoaXMgZm9yIHVzPwogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTMyNzIKQEAgLTI1MSw3ICsyNTEsNyBAQCBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKFZNJiB2bSwg
Y29uc3QgUwogICAgICAgICB9CiAgICAgfQogCi0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVh
dGUodm0sIHNvdXJjZSwgJm1ldGFkYXRhLCBraW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNl
clNjcmlwdE1vZGU6OkNsYXNzaWMsIFdURjo6bnVsbG9wdCwgRGVyaXZlZENvbnRleHRUeXBlOjpO
b25lLCBjbGFzc0ZpZWxkc0luaXRpYWxpemVyLCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1
Y3Rvcik7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJs
ZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUodm0sIHNvdXJjZSwgJm1ldGFk
YXRhLCBraW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMs
IFdURjo6bnVsbG9wdCwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBjbGFzc0ZpZWxkc0luaXRp
YWxpemVyLCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCwgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29u
c3RydWN0b3IpOwogICAgIHJldHVybiBmdW5jdGlvbkV4ZWN1dGFibGU7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaAppbmRl
eCA0NzM5YmExZDY1Zi4uYWI1NjYzY2FjOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgKQEAgLTU4LDEwICs1OCwxMCBAQCBT
b3VyY2VDb2RlIG5hbWUjI1NvdXJjZSgpOwogI3VuZGVmIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFC
TEVTCiAKICAgICBzdGF0aWMgU291cmNlQ29kZSBkZWZhdWx0Q29uc3RydWN0b3JTb3VyY2VDb2Rl
KENvbnN0cnVjdG9yS2luZCk7Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0
ZURlZmF1bHRDb25zdHJ1Y3RvcihDb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5h
bWUsIENsYXNzRmllbGRzSW5pdGlhbGl6ZXIpOwotCi0gICAgc3RhdGljIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiBjcmVhdGVFeGVjdXRhYmxlKFZNJiwgY29uc3QgU291cmNlQ29kZSYsIGNv
bnN0IElkZW50aWZpZXImLCBDb25zdHJ1Y3RvcktpbmQsIENvbnN0cnVjdEFiaWxpdHksIENsYXNz
RmllbGRzSW5pdGlhbGl6ZXIpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVh
dGVEZWZhdWx0Q29uc3RydWN0b3IoQ29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBu
YW1lLCBDbGFzc0ZpZWxkc0luaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7CiAK
KyAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUV4ZWN1dGFibGUo
Vk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYsIENvbnN0cnVjdG9yS2lu
ZCwgQ29uc3RydWN0QWJpbGl0eSwgQ2xhc3NGaWVsZHNJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQgPSBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZSk7CisgICAgCiAgICAg
dm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCmluZGV4IGNkYzBlZDNhMDU1Li44
ODM3ZjJkNTZjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1
aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGlu
TmFtZXMuaApAQCAtMTY5LDYgKzE2OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKHdl
YkFzc2VtYmx5Q29tcGlsZVN0cmVhbWluZ0ludGVybmFsKSBcCiAgICAgbWFjcm8od2ViQXNzZW1i
bHlJbnN0YW50aWF0ZVN0cmVhbWluZ0ludGVybmFsKSBcCiAgICAgbWFjcm8oaW5zdGFuY2VGaWVs
ZEluaXRpYWxpemVyKSBcCisgICAgbWFjcm8ocHJpdmF0ZUJyYW5kKSBcCiAgICAgbWFjcm8oY3Jl
YXRlUHJpdmF0ZVN5bWJvbCkKIAogbmFtZXNwYWNlIFN5bWJvbHMgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAppbmRleCA0NjU5NGRhMGNiNC4u
ZjhkNjRiNTVkY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9F
eGVjdXRhYmxlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVj
dXRhYmxlSW5mby5oCkBAIC0zNiwxMCArMzYsMTEgQEAgZW51bSBjbGFzcyBDbGFzc0ZpZWxkc0lu
aXRpYWxpemVyIDogdWludDhfdCB7IE5vdE5lZWRlZCwgTmVlZGVkIH07CiAvLyBGSVhNRTogVGhl
c2UgZmxhZ3MsIFBhcnNlck1vZGVzIGFuZCBwcm9wYWdhdGlvbiB0byBYWFhDb2RlQmxvY2tzIHNo
b3VsZCBiZSByZW9yZ2FuaXplZC4KIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTE1NDcKIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7Ci0gICAgRXhlY3V0YWJsZUlu
Zm8oYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3Rvciwg
Ym9vbCBpc0J1aWx0aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwg
SlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcs
IFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29u
dGV4dFR5cGUsIENsYXNzRmllbGRzSW5pdGlhbGl6ZXIgY2xhc3NGaWVsZHNJbml0aWFsaXplciwg
Ym9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzQ2xhc3NDb250ZXh0LCBFdmFsQ29u
dGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgdXNlc0V2
YWwsIGJvb2wgaXNTdHJpY3RNb2RlLCBib29sIGlzQ29uc3RydWN0b3IsIFByaXZhdGVCcmFuZFJl
cXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29sIGlzQnVpbHRpbkZ1bmN0aW9u
LCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBKU1BhcnNlclNjcmlwdE1vZGUgc2Ny
aXB0TW9kZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgU291cmNlUGFyc2VNb2RlIHBhcnNl
TW9kZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgQ2xhc3NGaWVsZHNJ
bml0aWFsaXplciBjbGFzc0ZpZWxkc0luaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNv
bnRleHQsIGJvb2wgaXNDbGFzc0NvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5
cGUpCiAgICAgICAgIDogbV91c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3RyaWN0
TW9kZShpc1N0cmljdE1vZGUpCiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3RydWN0
b3IpCisgICAgICAgICwgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudChzdGF0aWNfY2FzdDx1bnNp
Z25lZD4ocHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpKQogICAgICAgICAsIG1faXNCdWlsdGluRnVu
Y3Rpb24oaXNCdWlsdGluRnVuY3Rpb24pCiAgICAgICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCiAgICAgICAgICwgbV9zdXBlckJp
bmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykpCkBAIC01OSw2ICs2MCw3
IEBAIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsg
cmV0dXJuIG1fdXNlc0V2YWw7IH0KICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0
dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0NvbnN0cnVjdG9yOyB9CisgICAgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxQcml2YXRl
QnJhbmRSZXF1aXJlbWVudD4obV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7IH0KICAgICBib29s
IGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsg
fQogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQogICAgIFN1
cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxTdXBl
ckJpbmRpbmc+KG1fc3VwZXJCaW5kaW5nKTsgfQpAQCAtNzQsNiArNzYsNyBAQCBwcml2YXRlOgog
ICAgIHVuc2lnbmVkIG1fdXNlc0V2YWwgOiAxOwogICAgIHVuc2lnbmVkIG1faXNTdHJpY3RNb2Rl
IDogMTsKICAgICB1bnNpZ25lZCBtX2lzQ29uc3RydWN0b3IgOiAxOworICAgIHVuc2lnbmVkIG1f
cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgOiAxOwogICAgIHVuc2lnbmVkIG1faXNCdWlsdGluRnVu
Y3Rpb24gOiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKICAgICB1bnNp
Z25lZCBtX3N1cGVyQmluZGluZyA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCA3MGI5YmI0ZGJhMC4uZGIxNzRh
OThmNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmNwcApAQCAtNjksNiArNjksNyBAQCBVbmxpbmtlZENvZGVCbG9jazo6VW5s
aW5rZWRDb2RlQmxvY2soVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29kZVR5cGUgY29k
ZQogICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uY29u
c3RydWN0b3JLaW5kKCkpKQogICAgICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGluZm8uZGVyaXZlZENvbnRleHRUeXBlKCkpKQogICAgICwgbV9jbGFzc0ZpZWxk
c0luaXRpYWxpemVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmZvLmNsYXNzRmllbGRzSW5pdGlh
bGl6ZXIoKSkpCisgICAgLCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50KHN0YXRpY19jYXN0PHVu
c2lnbmVkPihpbmZvLnByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkpKQogICAgICwgbV9ldmFsQ29u
dGV4dFR5cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uZXZhbENvbnRleHRUeXBlKCkpKQog
ICAgICwgbV9jb2RlVHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZVR5cGUpKQogICAgICwg
bV9kaWRPcHRpbWl6ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTWl4ZWRUcmlTdGF0ZSkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmlu
ZGV4IDJlMWY2MDNjM2IxLi45MzgwZWVjMDI3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTExNiw2ICsxMTYsNyBAQCBw
dWJsaWM6CiAgICAgZW51bSB7IENhbGxGdW5jdGlvbiwgQXBwbHlGdW5jdGlvbiB9OwogCiAgICAg
Ym9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnN0cnVjdG9yOyB9Cisg
ICAgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxQcml2YXRlQnJhbmRSZXF1aXJlbWVudD4obV9wcml2YXRl
QnJhbmRSZXF1aXJlbWVudCk7IH0KICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0
dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJu
IG1fdXNlc0V2YWw7IH0KICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYXJzZU1vZGU7IH0KQEAgLTQyMiw2ICs0MjMsNyBAQCBwcml2YXRlOgogICAgIHVu
c2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKICAgICB1bnNpZ25lZCBtX2Rlcml2ZWRDb250
ZXh0VHlwZSA6IDI7CiAgICAgdW5zaWduZWQgbV9jbGFzc0ZpZWxkc0luaXRpYWxpemVyIDogMTsK
KyAgICB1bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsKICAgICB1bnNpZ25l
ZCBtX2V2YWxDb250ZXh0VHlwZSA6IDI7CiAgICAgdW5zaWduZWQgbV9jb2RlVHlwZSA6IDI7CiAg
ICAgdW5zaWduZWQgbV9kaWRPcHRpbWl6ZSA6IDI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApp
bmRleCAyZjg0MDJhZGEyNC4uODM1YjM3N2EyZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNw
cApAQCAtNzIsMTAgKzcyLDEwIEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBn
ZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAKICAgICBib29sIGlzQ2xhc3NDb250
ZXh0ID0gZXhlY3V0YWJsZS0+c3VwZXJCaW5kaW5nKCkgPT0gU3VwZXJCaW5kaW5nOjpOZWVkZWQ7
CiAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrOjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29kZSwgRXhlY3V0YWJsZUluZm8oZnVu
Y3Rpb24tPnVzZXNFdmFsKCksIGZ1bmN0aW9uLT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2Rl
Rm9yQ29uc3RydWN0LCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24sIGV4
ZWN1dGFibGUtPmNvbnN0cnVjdG9yS2luZCgpLCBzY3JpcHRNb2RlLCBleGVjdXRhYmxlLT5zdXBl
ckJpbmRpbmcoKSwgcGFyc2VNb2RlLCBleGVjdXRhYmxlLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwg
ZXhlY3V0YWJsZS0+Y2xhc3NGaWVsZHNJbml0aWFsaXplcigpLCBmYWxzZSwgaXNDbGFzc0NvbnRl
eHQsIEV2YWxDb250ZXh0VHlwZTo6RnVuY3Rpb25FdmFsQ29udGV4dCksIGNvZGVHZW5lcmF0aW9u
TW9kZSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKHZtLCBGdW5jdGlvbkNvZGUsIEV4ZWN1dGFibGVJbmZv
KGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0g
Q29kZUZvckNvbnN0cnVjdCwgZXhlY3V0YWJsZS0+cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSwg
ZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25z
dHJ1Y3RvcktpbmQoKSwgc2NyaXB0TW9kZSwgZXhlY3V0YWJsZS0+c3VwZXJCaW5kaW5nKCksIHBh
cnNlTW9kZSwgZXhlY3V0YWJsZS0+ZGVyaXZlZENvbnRleHRUeXBlKCksIGV4ZWN1dGFibGUtPmNs
YXNzRmllbGRzSW5pdGlhbGl6ZXIoKSwgZmFsc2UsIGlzQ2xhc3NDb250ZXh0LCBFdmFsQ29udGV4
dFR5cGU6OkZ1bmN0aW9uRXZhbENvbnRleHQpLCBjb2RlR2VuZXJhdGlvbk1vZGUpOwogCi0gICAg
VmFyaWFibGVFbnZpcm9ubWVudCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcyA9IGV4ZWN1dGFibGUt
PnBhcmVudFNjb3BlVERaVmFyaWFibGVzKCk7Ci0gICAgZXJyb3IgPSBCeXRlY29kZUdlbmVyYXRv
cjo6Z2VuZXJhdGUodm0sIGZ1bmN0aW9uLmdldCgpLCBzb3VyY2UsIHJlc3VsdCwgY29kZUdlbmVy
YXRpb25Nb2RlLCAmcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOworICAgIFZhcmlhYmxlRW52aXJv
bm1lbnQgcGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50ID0gZXhlY3V0YWJsZS0+cGFyZW50
U2NvcGVWYXJpYWJsZUVudmlyb25tZW50KCk7CisgICAgZXJyb3IgPSBCeXRlY29kZUdlbmVyYXRv
cjo6Z2VuZXJhdGUodm0sIGZ1bmN0aW9uLmdldCgpLCBzb3VyY2UsIHJlc3VsdCwgY29kZUdlbmVy
YXRpb25Nb2RlLCAmcGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50KTsKIAogICAgIGlmIChl
cnJvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtODMsNyArODMsNyBA
QCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBwYXJlbnRTb3VyY2UsIEZ1bmN0aW9uTWV0YWRh
dGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBraW5kLCBDb25zdHJ1Y3RBYmlsaXR5
IGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBPcHRpb25h
bDxDb21wYWN0VmFyaWFibGVNYXA6OkhhbmRsZT4gcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIERl
cml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIENsYXNzRmllbGRzSW5pdGlhbGl6
ZXIgY2xhc3NGaWVsZHNJbml0aWFsaXplciwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25z
dHJ1Y3RvcikKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBw
YXJlbnRTb3VyY2UsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9u
S2luZCBraW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2Ny
aXB0TW9kZSBzY3JpcHRNb2RlLCBPcHRpb25hbDxDb21wYWN0VmFyaWFibGVNYXA6OkhhbmRsZT4g
cGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZl
ZENvbnRleHRUeXBlLCBDbGFzc0ZpZWxkc0luaXRpYWxpemVyIGNsYXNzRmllbGRzSW5pdGlhbGl6
ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29s
IGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKQogICAgIDogQmFzZSh2bSwgc3RydWN0
dXJlKQogICAgICwgbV9maXJzdExpbmVPZmZzZXQobm9kZS0+Zmlyc3RMaW5lKCkgLSBwYXJlbnRT
b3VyY2UuZmlyc3RMaW5lKCkub25lQmFzZWRJbnQoKSkKICAgICAsIG1faXNJblN0cmljdENvbnRl
eHQobm9kZS0+aXNJblN0cmljdENvbnRleHQoKSkKQEAgLTEwMSw2ICsxMDEsNyBAQCBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdAogICAgICwgbV9zdXBlckJpbmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KG5vZGUtPnN1cGVyQmluZGluZygpKSkKICAgICAsIG1fcGFyYW1ldGVyc1N0YXJ0T2Zmc2V0
KG5vZGUtPnBhcmFtZXRlcnNTdGFydCgpKQogICAgICwgbV9jbGFzc0ZpZWxkc0luaXRpYWxpemVy
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihjbGFzc0ZpZWxkc0luaXRpYWxpemVyKSkKKyAgICAsIG1f
cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50KSkKICAgICAsIG1faXNDYWNoZWQoZmFsc2UpCiAgICAgLCBtX3R5cGVQcm9m
aWxpbmdTdGFydE9mZnNldChub2RlLT5mdW5jdGlvbktleXdvcmRTdGFydCgpKQogICAgICwgbV90
eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KG5vZGUtPnN0YXJ0U3RhcnRPZmZzZXQoKSArIG5vZGUtPnNv
dXJjZSgpLmxlbmd0aCgpIC0gMSkKQEAgLTEyMywxMiArMTI0LDEzIEBAIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0CiAgICAgQVNTRVJUKG1fc2NyaXB0TW9kZSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oc2NyaXB0TW9kZSkpOwogICAgIEFTU0VSVChtX3N1cGVyQmluZGluZyA9PSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4obm9kZS0+c3VwZXJCaW5kaW5nKCkpKTsKICAgICBBU1NFUlQobV9kZXJpdmVk
Q29udGV4dFR5cGUgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlcml2ZWRDb250ZXh0VHlwZSkp
OworICAgIEFTU0VSVChtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID09IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihwcml2YXRlQnJhbmRSZXF1aXJlbWVudCkpOwogICAgIEFTU0VSVCghKG1faXNCdWls
dGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IgJiYgY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3Ry
dWN0b3JLaW5kOjpOb25lKSk7CiAgICAgQVNTRVJUKCFtX2NsYXNzRmllbGRzSW5pdGlhbGl6ZXIg
fHwgKGlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCkgfHwgZGVyaXZlZENvbnRleHRUeXBlID09
IERlcml2ZWRDb250ZXh0VHlwZTo6RGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCkpOwogICAgIGlm
ICghbm9kZS0+Y2xhc3NTb3VyY2UoKS5pc051bGwoKSkKICAgICAgICAgc2V0Q2xhc3NTb3VyY2Uo
bm9kZS0+Y2xhc3NTb3VyY2UoKSk7Ci0gICAgaWYgKHBhcmVudFNjb3BlVERaVmFyaWFibGVzKQot
ICAgICAgICBlbnN1cmVSYXJlRGF0YSgpLm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXMgPSBXVEZN
b3ZlKCpwYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CisgICAgaWYgKHBhcmVudFNjb3BlVmFyaWFi
bGVFbnZpcm9ubWVudCkKKyAgICAgICAgZW5zdXJlUmFyZURhdGEoKS5tX3BhcmVudFNjb3BlVmFy
aWFibGVFbnZpcm9ubWVudCA9IFdURk1vdmUoKnBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVu
dCk7CiB9CiAKIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp+VW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCBmMjlmNjliZTY1Yi4uNmYxODg3
NDhhOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCkBAIC03MCwxMCArNzAsMTAgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gJnZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc3Bh
Y2U7CiAgICAgfQogCi0gICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVh
dGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uTWV0YWRhdGFOb2Rl
KiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3Ry
dWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9k
ZSwgT3B0aW9uYWw8Q29tcGFjdFZhcmlhYmxlTWFwOjpIYW5kbGU+IHBhcmVudFNjb3BlVERaVmFy
aWFibGVzLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBDbGFzc0ZpZWxk
c0luaXRpYWxpemVyIGNsYXNzRmllbGRzSW5pdGlhbGl6ZXIsIGJvb2wgaXNCdWlsdGluRGVmYXVs
dENsYXNzQ29uc3RydWN0b3IgPSBmYWxzZSkKKyAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIGNyZWF0ZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rp
b25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIHVubGlua2VkRnVuY3Rp
b25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0
TW9kZSBzY3JpcHRNb2RlLCBPcHRpb25hbDxDb21wYWN0VmFyaWFibGVNYXA6OkhhbmRsZT4gcGFy
ZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENv
bnRleHRUeXBlLCBDbGFzc0ZpZWxkc0luaXRpYWxpemVyIGNsYXNzRmllbGRzSW5pdGlhbGl6ZXIs
IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29sIGlz
QnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yID0gZmFsc2UpCiAgICAgewogICAgICAgICBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0uaGVhcCkpCi0gICAgICAgICAg
ICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgbm9kZSwgdW5saW5rZWRGdW5jdGlvbktpbmQs
IGNvbnN0cnVjdEFiaWxpdHksIHNjcmlwdE1vZGUsIFdURk1vdmUocGFyZW50U2NvcGVURFpWYXJp
YWJsZXMpLCBkZXJpdmVkQ29udGV4dFR5cGUsIGNsYXNzRmllbGRzSW5pdGlhbGl6ZXIsIGlzQnVp
bHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKTsKKyAgICAgICAgICAgIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKHZtLCB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5n
ZXQoKSwgc291cmNlLCBub2RlLCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgY29uc3RydWN0QWJpbGl0
eSwgc2NyaXB0TW9kZSwgV1RGTW92ZShwYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQpLCBk
ZXJpdmVkQ29udGV4dFR5cGUsIGNsYXNzRmllbGRzSW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFuZFJl
cXVpcmVtZW50LCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3Rvcik7CiAgICAgICAgIGlu
c3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAg
ICB9CkBAIC0xNDMsNiArMTQzLDggQEAgcHVibGljOgogICAgIENvZGVGZWF0dXJlcyBmZWF0dXJl
cygpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXM7IH0KICAgICBib29sIGhhc0NhcHR1cmVkVmFy
aWFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNDYXB0dXJlZFZhcmlhYmxlczsgfQogCisgICAg
UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxQcml2YXRlQnJhbmRSZXF1aXJlbWVudD4obV9wcml2YXRlQnJh
bmRSZXF1aXJlbWVudCk7IH0KKwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3Ry
dWN0aW9uID0gdHJ1ZTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCkBAIC0x
NjksMTEgKzE3MSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhbV9yYXJlRGF0YS0+bV9j
bGFzc1NvdXJjZS5pc051bGwoKTsKICAgICB9CiAKLSAgICBWYXJpYWJsZUVudmlyb25tZW50IHBh
cmVudFNjb3BlVERaVmFyaWFibGVzKCkgY29uc3QKKyAgICBWYXJpYWJsZUVudmlyb25tZW50IHBh
cmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCgpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAo
IW1fcmFyZURhdGEgfHwgIW1fcmFyZURhdGEtPm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpCisg
ICAgICAgIGlmICghbV9yYXJlRGF0YSB8fCAhbV9yYXJlRGF0YS0+bV9wYXJlbnRTY29wZVZhcmlh
YmxlRW52aXJvbm1lbnQpCiAgICAgICAgICAgICByZXR1cm4gVmFyaWFibGVFbnZpcm9ubWVudCgp
OwotICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5l
bnZpcm9ubWVudCgpLnRvVmFyaWFibGVFbnZpcm9ubWVudCgpOworICAgICAgICByZXR1cm4gbV9y
YXJlRGF0YS0+bV9wYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQuZW52aXJvbm1lbnQoKS50
b1ZhcmlhYmxlRW52aXJvbm1lbnQoKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBpc0Fycm93RnVu
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBpc0Fycm93RnVuY3Rpb25QYXJzZU1vZGUocGFyc2VNb2Rl
KCkpOyB9CkBAIC0yMDksNyArMjExLDcgQEAgcHVibGljOgogICAgICAgICBTb3VyY2VDb2RlIG1f
Y2xhc3NTb3VyY2U7CiAgICAgICAgIFN0cmluZyBtX3NvdXJjZVVSTERpcmVjdGl2ZTsKICAgICAg
ICAgU3RyaW5nIG1fc291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZTsKLSAgICAgICAgQ29tcGFjdFZh
cmlhYmxlTWFwOjpIYW5kbGUgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlczsKKyAgICAgICAgQ29t
cGFjdFZhcmlhYmxlTWFwOjpIYW5kbGUgbV9wYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQ7
CiAgICAgICAgIFZlY3RvcjxKU1RleHRQb3NpdGlvbj4gbV9pbnN0YW5jZUZpZWxkTG9jYXRpb25z
OwogICAgIH07CiAKQEAgLTIzMCw3ICsyMzIsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRl
OgotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNJiwgU3RydWN0dXJlKiwgY29uc3Qg
U291cmNlQ29kZSYsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgVW5saW5rZWRGdW5jdGlvbktpbmQs
IENvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZSwgT3B0aW9uYWw8Q29tcGFjdFZh
cmlhYmxlTWFwOjpIYW5kbGU+LCAgSlNDOjpEZXJpdmVkQ29udGV4dFR5cGUsIEpTQzo6Q2xhc3NG
aWVsZHNJbml0aWFsaXplciwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3Rvcik7
CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0mLCBTdHJ1Y3R1cmUqLCBjb25zdCBT
b3VyY2VDb2RlJiwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCwg
Q29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlLCBPcHRpb25hbDxDb21wYWN0VmFy
aWFibGVNYXA6OkhhbmRsZT4sICBKU0M6OkRlcml2ZWRDb250ZXh0VHlwZSwgSlNDOjpDbGFzc0Zp
ZWxkc0luaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCwgYm9vbCBpc0J1aWx0aW5E
ZWZhdWx0Q2xhc3NDb25zdHJ1Y3Rvcik7CiAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUo
RGVjb2RlciYsIGNvbnN0IENhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZSYpOwogCiAgICAgdm9pZCBk
ZWNvZGVDYWNoZWRDb2RlQmxvY2tzKFZNJik7CkBAIC0yNTgsNiArMjYwLDcgQEAgcHJpdmF0ZToK
ICAgICB1bnNpZ25lZCBtX3N1cGVyQmluZGluZyA6IDE7CiAgICAgdW5zaWduZWQgbV9wYXJhbWV0
ZXJzU3RhcnRPZmZzZXQgOiAzMTsKICAgICB1bnNpZ25lZCBtX2NsYXNzRmllbGRzSW5pdGlhbGl6
ZXIgOiAxOworICAgIHVuc2lnbmVkIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgOiAxOwogICAg
IHVuc2lnbmVkIG1faXNDYWNoZWQgOiAxOwogICAgIHVuc2lnbmVkIG1fdHlwZVByb2ZpbGluZ1N0
YXJ0T2Zmc2V0OwogICAgIHVuc2lnbmVkIG1fdHlwZVByb2ZpbGluZ0VuZE9mZnNldDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAKaW5kZXggMzlhYmJiNWZmNTUuLjZiOTcxN2UxMGIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cApAQCAtMzM5LDcgKzMzOSw3IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5l
cmF0ZSgpCiAgICAgcmV0dXJuIFBhcnNlckVycm9yKFBhcnNlckVycm9yOjpFcnJvck5vbmUpOwog
fQogCi1CeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBQcm9ncmFt
Tm9kZSogcHJvZ3JhbU5vZGUsIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrLCBP
cHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFZh
cmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKQorQnl0ZWNvZGVHZW5l
cmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2Rl
LCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5l
cmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50
KiBwYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQpCiAgICAgOiBtX2NvZGVHZW5lcmF0aW9u
TW9kZShjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAgLCBtX3Njb3BlTm9kZShwcm9ncmFtTm9kZSkK
ICAgICAsIG1fY29kZUJsb2NrKHZtLCBjb2RlQmxvY2spCkBAIC0zNDgsNyArMzQ4LDcgQEAgQnl0
ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHBy
b2dyYW1Ob2RlLCBVbmxpbmtlZFAKICAgICAsIG1fdm0odm0pCiAgICAgLCBtX25lZWRzVG9VcGRh
dGVBcnJvd0Z1bmN0aW9uQ29udGV4dChwcm9ncmFtTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSB8
fCBwcm9ncmFtTm9kZS0+dXNlc0V2YWwoKSkKIHsKLSAgICBBU1NFUlRfVU5VU0VEKHBhcmVudFNj
b3BlVERaVmFyaWFibGVzLCAhcGFyZW50U2NvcGVURFpWYXJpYWJsZXMtPnNpemUoKSk7CisgICAg
QVNTRVJUX1VOVVNFRChwYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQsICFwYXJlbnRTY29w
ZVZhcmlhYmxlRW52aXJvbm1lbnQtPnNpemUoKSk7CiAKICAgICBmb3IgKGF1dG8mIGNvbnN0YW50
UmVnaXN0ZXIgOiBtX2xpbmtUaW1lQ29uc3RhbnRSZWdpc3RlcnMpCiAgICAgICAgIGNvbnN0YW50
UmVnaXN0ZXIgPSBudWxscHRyOwpAQCAtMzg1LDcgKzM4NSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9y
OjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5s
aW5rZWRQCiAgICAgfQogfQogCi1CeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3Io
Vk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJh
dGlvbk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzKQorQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rp
b25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9j
aywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25z
dCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQpCiAg
ICAgOiBtX2NvZGVHZW5lcmF0aW9uTW9kZShjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAgLCBtX3Nj
b3BlTm9kZShmdW5jdGlvbk5vZGUpCiAgICAgLCBtX2NvZGVCbG9jayh2bSwgY29kZUJsb2NrKQpA
QCAtNDA2LDYgKzQwNiw4IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihW
TSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiB7CiAgICAgZm9yIChh
dXRvJiBjb25zdGFudFJlZ2lzdGVyIDogbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzKQogICAg
ICAgICBjb25zdGFudFJlZ2lzdGVyID0gbnVsbHB0cjsKKyAgICAKKyAgICBwdXNoUHJpdmF0ZUFj
Y2Vzc05hbWVzKCpwYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQpOwogCiAgICAgYWxsb2Nh
dGVDYWxsZWVTYXZlU3BhY2UoKTsKICAgICAKQEAgLTc0Nyw4ICs3NDksMTMgQEAgQnl0ZWNvZGVH
ZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlv
bk5vZGUsIFVubGlua2UKICAgICAgICAgICAgICAgICBjYXNlIENvbnN0cnVjdG9yS2luZDo6Tm9u
ZToKICAgICAgICAgICAgICAgICBjYXNlIENvbnN0cnVjdG9yS2luZDo6QmFzZToKICAgICAgICAg
ICAgICAgICAgICAgZW1pdENyZWF0ZVRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUNsYXNzRmllbGRzKCkpCisgICAgICAgICAgICAgICAg
ICAgIGlmIChPcHRpb25zOjp1c2VDbGFzc0ZpZWxkcygpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIHNob3VsZEVtaXRQcml2YXRlQnJhbmQgPSBwcml2YXRlQnJhbmRSZXF1aXJlbWVu
dCgpID09IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOZWVkZWQ7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoc2hvdWxkRW1pdFByaXZhdGVCcmFuZCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlbWl0SW5zdGFsbFByaXZhdGVCcmFuZCgmbV90aGlzUmVnaXN0ZXIpOworCiAgICAg
ICAgICAgICAgICAgICAgICAgICBlbWl0SW5zdGFuY2VGaWVsZEluaXRpYWxpemF0aW9uSWZOZWVk
ZWQoJm1fdGhpc1JlZ2lzdGVyLCAmbV9jYWxsZWVSZWdpc3RlciwgbV9zY29wZU5vZGUtPnBvc2l0
aW9uKCksIG1fc2NvcGVOb2RlLT5wb3NpdGlvbigpLCBtX3Njb3BlTm9kZS0+cG9zaXRpb24oKSk7
CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgY2FzZSBDb25zdHJ1Y3RvcktpbmQ6OkV4dGVuZHM6CiAgICAgICAgICAgICAg
ICAgICAgIG1vdmVFbXB0eVZhbHVlKCZtX3RoaXNSZWdpc3Rlcik7CkBAIC04MTMsNyArODIwLDcg
QEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25O
b2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKIAogICAgIC8vIEFsbCAiYWRkVmFyKCkicyBuZWVk
cyB0byBoYXBwZW4gYmVmb3JlICJpbml0aWFsaXplRGVmYXVsdFBhcmFtZXRlclZhbHVlc0FuZFNl
dHVwRnVuY3Rpb25TY29wZVN0YWNrKCkiIGlzIGNhbGxlZAogICAgIC8vIGJlY2F1c2UgYSBmdW5j
dGlvbidzIGRlZmF1bHQgcGFyYW1ldGVyIEV4cHJlc3Npb25Ob2RlcyB3aWxsIHVzZSB0ZW1wb3Jh
cnkgcmVnaXN0ZXJzLgotICAgIHB1c2hURFpWYXJpYWJsZXMoKnBhcmVudFNjb3BlVERaVmFyaWFi
bGVzLCBURFpDaGVja09wdGltaXphdGlvbjo6RG9Ob3RPcHRpbWl6ZSwgVERaUmVxdWlyZW1lbnQ6
OlVuZGVyVERaKTsKKyAgICBwdXNoVERaVmFyaWFibGVzKCpwYXJlbnRTY29wZVZhcmlhYmxlRW52
aXJvbm1lbnQsIFREWkNoZWNrT3B0aW1pemF0aW9uOjpEb05vdE9wdGltaXplLCBURFpSZXF1aXJl
bWVudDo6VW5kZXJURFopOwogCiAgICAgUmVmPExhYmVsPiBjYXRjaExhYmVsID0gbmV3TGFiZWwo
KTsKICAgICBUcnlEYXRhKiB0cnlGb3JtYWxQYXJhbWV0ZXJzRGF0YSA9IG51bGxwdHI7CkBAIC04
ODUsNyArODkyLDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2
bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICBwdXNoTGV4aWNhbFNj
b3BlKG1fc2NvcGVOb2RlLCBURFpDaGVja09wdGltaXphdGlvbjo6T3B0aW1pemUsIE5lc3RlZFNj
b3BlVHlwZTo6SXNOb3ROZXN0ZWQsIG51bGxwdHIsIHNob3VsZEluaXRpYWxpemVCbG9ja1Njb3Bl
ZEZ1bmN0aW9ucyk7CiB9CiAKLUJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihW
TSYgdm0sIEV2YWxOb2RlKiBldmFsTm9kZSwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29u
c3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpCitCeXRlY29k
ZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUs
IFVubGlua2VkRXZhbENvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRp
b25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBh
cmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCkKICAgICA6IG1fY29kZUdlbmVyYXRpb25Nb2Rl
KGNvZGVHZW5lcmF0aW9uTW9kZSkKICAgICAsIG1fc2NvcGVOb2RlKGV2YWxOb2RlKQogICAgICwg
bV9jb2RlQmxvY2sodm0sIGNvZGVCbG9jaykKQEAgLTkwMyw3ICs5MTAsOCBAQCBCeXRlY29kZUdl
bmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVu
bGlua2VkRXZhbENvZAogCiAgICAgbV9jb2RlQmxvY2stPnNldE51bVBhcmFtZXRlcnMoMSk7CiAK
LSAgICBwdXNoVERaVmFyaWFibGVzKCpwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgVERaQ2hlY2tP
cHRpbWl6YXRpb246OkRvTm90T3B0aW1pemUsIFREWlJlcXVpcmVtZW50OjpVbmRlclREWik7Cisg
ICAgcHVzaFByaXZhdGVBY2Nlc3NOYW1lcygqcGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50
KTsKKyAgICBwdXNoVERaVmFyaWFibGVzKCpwYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQs
IFREWkNoZWNrT3B0aW1pemF0aW9uOjpEb05vdE9wdGltaXplLCBURFpSZXF1aXJlbWVudDo6VW5k
ZXJURFopOwogCiAgICAgZW1pdEVudGVyKCk7CiAKQEAgLTk0OCw3ICs5NTYsNyBAQCBCeXRlY29k
ZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUs
IFVubGlua2VkRXZhbENvZAogICAgIHB1c2hMZXhpY2FsU2NvcGUobV9zY29wZU5vZGUsIFREWkNo
ZWNrT3B0aW1pemF0aW9uOjpPcHRpbWl6ZSwgTmVzdGVkU2NvcGVUeXBlOjpJc05vdE5lc3RlZCwg
bnVsbHB0ciwgc2hvdWxkSW5pdGlhbGl6ZUJsb2NrU2NvcGVkRnVuY3Rpb25zKTsKIH0KIAotQnl0
ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgTW9kdWxlUHJvZ3JhbU5v
ZGUqIG1vZHVsZVByb2dyYW1Ob2RlLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNv
ZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2Rl
LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcykKK0J5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIE1vZHVsZVByb2dyYW1O
b2RlKiBtb2R1bGVQcm9ncmFtTm9kZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9k
ZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25t
ZW50KQogICAgIDogbV9jb2RlR2VuZXJhdGlvbk1vZGUoY29kZUdlbmVyYXRpb25Nb2RlKQogICAg
ICwgbV9zY29wZU5vZGUobW9kdWxlUHJvZ3JhbU5vZGUpCiAgICAgLCBtX2NvZGVCbG9jayh2bSwg
Y29kZUJsb2NrKQpAQCAtOTU4LDcgKzk2Niw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29k
ZUdlbmVyYXRvcihWTSYgdm0sIE1vZHVsZVByb2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9kCiAg
ICAgLCBtX3VzZXNOb25TdHJpY3RFdmFsKGZhbHNlKQogICAgICwgbV9uZWVkc1RvVXBkYXRlQXJy
b3dGdW5jdGlvbkNvbnRleHQobW9kdWxlUHJvZ3JhbU5vZGUtPnVzZXNBcnJvd0Z1bmN0aW9uKCkg
fHwgbW9kdWxlUHJvZ3JhbU5vZGUtPnVzZXNFdmFsKCkpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChw
YXJlbnRTY29wZVREWlZhcmlhYmxlcywgIXBhcmVudFNjb3BlVERaVmFyaWFibGVzLT5zaXplKCkp
OworICAgIEFTU0VSVF9VTlVTRUQocGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50LCAhcGFy
ZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50LT5zaXplKCkpOwogCiAgICAgZm9yIChhdXRvJiBj
b25zdGFudFJlZ2lzdGVyIDogbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzKQogICAgICAgICBj
b25zdGFudFJlZ2lzdGVyID0gbnVsbHB0cjsKQEAgLTE5OTcsOCArMjAwNSwxMCBAQCBib29sIEJ5
dGVjb2RlR2VuZXJhdG9yOjppbnN0YW50aWF0ZUxleGljYWxWYXJpYWJsZXMoY29uc3QgVmFyaWFi
bGVFbnZpcm9ubWVudCYgbAogICAgICAgICAgICAgc3ltYm9sVGFibGUtPmFkZChOb0xvY2tpbmdO
ZWNlc3NhcnksIGVudHJ5LmtleS5nZXQoKSwgbmV3RW50cnkpOwogCiAgICAgICAgICAgICAvLyBG
SVhNRTogb25seSBkbyB0aGlzIGlmIHRoZXJlIGlzIGFuIGV2YWwoKSB3aXRoaW4gYSBuZXN0ZWQg
c2NvcGUgLS0tIG90aGVyd2lzZSBpdCBpc24ndCBuZWVkZWQuCi0gICAgICAgICAgICBpZiAoZW50
cnkudmFsdWUuaXNQcml2YXRlTmFtZSgpKQotICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5h
ZGRQcml2YXRlTmFtZShlbnRyeS5rZXkuZ2V0KCkpOworICAgICAgICAgICAgaWYgKGVudHJ5LnZh
bHVlLmlzUHJpdmF0ZUZpZWxkKCkpCisgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUtPmFkZFBy
aXZhdGVOYW1lKGVudHJ5LmtleS5nZXQoKSwgUHJpdmF0ZU5hbWVFbnRyeShQcml2YXRlTmFtZUVu
dHJ5OjpUcmFpdHM6OklzRGVjbGFyZWQpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGVudHJ5LnZh
bHVlLmlzUHJpdmF0ZU1ldGhvZCgpKQorICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5hZGRQ
cml2YXRlTmFtZShlbnRyeS5rZXkuZ2V0KCksIFByaXZhdGVOYW1lRW50cnkoUHJpdmF0ZU5hbWVF
bnRyeTo6VHJhaXRzOjpJc0RlY2xhcmVkIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc01l
dGhvZCkpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBoYXNDYXB0dXJlZFZhcmlhYmxl
czsKQEAgLTI4MjEsNiArMjgzMSwzNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdFByaXZhdGVGaWVsZEFkZChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKgogICAgIE9w
UHV0QnlWYWxEaXJlY3Q6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQdXRCeVZh
bFByaXZhdGVGaWVsZEFkZCk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQorICAgIAordm9pZCBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZVByaXZhdGVCcmFuZChSZWdpc3RlcklEKiBzY29wZSwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RT
dGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQoreworICAgIGF1dG8gc3ltYm9s
VmFyID0gdmFyaWFibGUocHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmNyZWF0ZVByaXZh
dGVTeW1ib2xQcml2YXRlTmFtZSgpKTsKKyAgICAgICAgCisgICAgUmVnaXN0ZXJJRCogc3ltYm9s
U2NvcGUgPSBuZXdUZW1wb3JhcnkoKTsKKyAgICBzeW1ib2xTY29wZSA9IGVtaXRSZXNvbHZlU2Nv
cGUoc3ltYm9sU2NvcGUsIHN5bWJvbFZhcik7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHN5bWJv
bEZ1bmN0aW9uID0gZW1pdEdldEZyb21TY29wZShuZXdUZW1wb3JhcnkoKSwgc3ltYm9sU2NvcGUs
IHN5bWJvbFZhciwgVGhyb3dJZk5vdEZvdW5kKTsKKyAgICAgICAgCisgICAgQ2FsbEFyZ3VtZW50
cyBhcmdzKCp0aGlzLCBudWxscHRyKTsKKyAgICBlbWl0TG9hZChhcmdzLnRoaXNSZWdpc3Rlcigp
LCBqc1VuZGVmaW5lZCgpKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV3U3ltYm9sID0gZW1p
dENhbGwobmV3VGVtcG9yYXJ5KCksIHN5bWJvbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVu
Y3Rpb24sIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCwgRGVidWdnYWJsZUNhbGw6
Ok5vKTsKKyAgICAgICAgCisgICAgVmFyaWFibGUgcHJpdmF0ZUJyYW5kVmFyID0gdmFyaWFibGUo
cHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLnByaXZhdGVCcmFuZFByaXZhdGVOYW1lKCkp
OworICAgICAgICAKKyAgICBlbWl0UHV0VG9TY29wZShzY29wZSwgcHJpdmF0ZUJyYW5kVmFyLCBu
ZXdTeW1ib2wuZ2V0KCksIERvTm90VGhyb3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6
OkluaXRpYWxpemF0aW9uKTsKK30KKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEluc3Rh
bGxQcml2YXRlQnJhbmQoUmVnaXN0ZXJJRCogdGFyZ2V0KQoreworICAgIFZhcmlhYmxlIHByaXZh
dGVCcmFuZFZhciA9IHZhcmlhYmxlKHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5wcml2
YXRlQnJhbmRQcml2YXRlTmFtZSgpKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZUJy
YW5kVmFyU2NvcGUgPSBlbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHByaXZhdGVCcmFuZFZhcik7
CisgICAgUmVnaXN0ZXJJRCogcHJpdmF0ZUJyYW5kU3ltYm9sID0gZW1pdEdldFByaXZhdGVCcmFu
ZChuZXdUZW1wb3JhcnkoKSwgcHJpdmF0ZUJyYW5kVmFyU2NvcGUuZ2V0KCkpOworICAgIGVtaXRQ
cml2YXRlRmllbGRBZGQodGFyZ2V0LCBwcml2YXRlQnJhbmRTeW1ib2wsIHByaXZhdGVCcmFuZFN5
bWJvbCk7Cit9CisKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0UHJpdmF0
ZUJyYW5kKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc2NvcGUpCit7CisgICAgVmFyaWFi
bGUgcHJpdmF0ZUJyYW5kVmFyID0gdmFyaWFibGUocHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1l
cygpLnByaXZhdGVCcmFuZFByaXZhdGVOYW1lKCkpOworICAgIHJldHVybiBlbWl0R2V0RnJvbVNj
b3BlKGRzdCwgc2NvcGUsIHByaXZhdGVCcmFuZFZhciwgVGhyb3dJZk5vdEZvdW5kKTsKK30KIAog
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcml2YXRlRmllbGRQdXQoUmVnaXN0
ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewpA
QCAtMjgyOCw2ICsyODY5LDEyIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
UHJpdmF0ZUZpZWxkUHV0KFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqCiAgICAgcmV0dXJu
IHZhbHVlOwogfQogCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2hlY2tQcml2YXRlQnJh
bmQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogYnJhbmRTeW1ib2wpCit7CisgICAgLy8g
VGhpcyBpcyBnb2luZyB0byB0cmhvdyBUeXBlRXJyb3IgaWYgYnJhbmQgaXMgbm90IHByZXNlbnQK
KyAgICBlbWl0RGlyZWN0R2V0QnlWYWwobmV3VGVtcG9yYXJ5KCksIGJhc2UsIGJyYW5kU3ltYm9s
KTsKK30KKwogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFN1cGVyU2FtcGxlckJlZ2luKCkK
IHsKICAgICBPcFN1cGVyU2FtcGxlckJlZ2luOjplbWl0KHRoaXMpOwpAQCAtMjk1MCw2ICsyOTk3
LDM4IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmxpZnRURFpDaGVja0lmUG9zc2libGUoY29u
c3QgVmFyaWFibGUmIHZhcmlhYmxlKQogICAgIH0KIH0KIAorYm9vbCBCeXRlY29kZUdlbmVyYXRv
cjo6aXNQcml2YXRlTWV0aG9kKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQoreworICAgIGZvciAo
dW5zaWduZWQgaSA9IG1fcHJpdmF0ZU5hbWVzU3RhY2suc2l6ZSgpOyBpLS07ICkgeworICAgICAg
ICBhdXRvJiBtYXAgPSBtX3ByaXZhdGVOYW1lc1N0YWNrW2ldOworICAgICAgICBhdXRvIGl0ID0g
bWFwLmZpbmQoaWRlbnQuaW1wbCgpKTsKKyAgICAgICAgaWYgKGl0ICE9IG1hcC5lbmQoKSkKKyAg
ICAgICAgICAgIHJldHVybiBpdC0+dmFsdWUuaXNNZXRob2QoKTsKKyAgICB9CisKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnB1c2hQcml2YXRlQWNjZXNz
TmFtZXMoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgZW52aXJvbm1lbnQpCit7CisgICAgaWYg
KCFlbnZpcm9ubWVudC5wcml2YXRlTmFtZXNTaXplKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IFZhcmlhYmxlRW52aXJvbm1lbnQ6OlByaXZhdGVOYW1lcyBwcml2YXRlTmFtZXNNYXA7CisgICAg
Zm9yIChjb25zdCBhdXRvJiBlbnRyeSA6IGVudmlyb25tZW50LnByaXZhdGVOYW1lcygpKQorICAg
ICAgICBwcml2YXRlTmFtZXNNYXAuYWRkKGVudHJ5LmtleSwgZW50cnkudmFsdWUpOworCisgICAg
bV9wcml2YXRlTmFtZXNTdGFjay5hcHBlbmQoV1RGTW92ZShwcml2YXRlTmFtZXNNYXApKTsKK30K
Kwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cG9wUHJpdmF0ZUFjY2Vzc05hbWVzKCkKK3sKKyAg
ICBpZiAoIW1fcHJpdmF0ZU5hbWVzU3RhY2suc2l6ZSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX3ByaXZhdGVOYW1lc1N0YWNrLnJlbW92ZUxhc3QoKTsKK30KKwogdm9pZCBCeXRlY29kZUdl
bmVyYXRvcjo6cHVzaFREWlZhcmlhYmxlcyhjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBlbnZp
cm9ubWVudCwgVERaQ2hlY2tPcHRpbWl6YXRpb24gb3B0aW1pemF0aW9uLCBURFpSZXF1aXJlbWVu
dCByZXF1aXJlbWVudCkKIHsKICAgICBpZiAoIWVudmlyb25tZW50LnNpemUoKSkKQEAgLTI5NzIs
NiArMzA1MSwyNCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoVERaVmFyaWFibGVzKGNv
bnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGVudmlyb25tZW50LAogICAgIG1fY2FjaGVkVmFyaWFi
bGVzVW5kZXJURFogPSB7IH07CiB9CiAKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmdldEF2YWls
YWJsZVByaXZhdGVBY2Nlc3NOYW1lcyhWYXJpYWJsZUVudmlyb25tZW50JiByZXN1bHQpCit7Cisg
ICAgU21hbGxQdHJTZXQ8VW5pcXVlZFN0cmluZ0ltcGwqLCAxNj4gZXhjbHVkZWROYW1lczsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBtX3ByaXZhdGVOYW1lc1N0YWNrLnNpemUoKTsgaS0tOyApIHsK
KyAgICAgICAgYXV0byYgbWFwID0gbV9wcml2YXRlTmFtZXNTdGFja1tpXTsKKyAgICAgICAgZm9y
IChhdXRvJiBlbnRyeSA6IG1hcCkgIHsKKyAgICAgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc1By
aXZhdGVBY2Nlc3MoKSkgeworICAgICAgICAgICAgICAgIGlmICghZXhjbHVkZWROYW1lcy5jb250
YWlucyhlbnRyeS5rZXkuZ2V0KCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gYWRkUmVz
dWx0ID0gcmVzdWx0LmFkZFByaXZhdGVOYW1lKGVudHJ5LmtleSk7CisgICAgICAgICAgICAgICAg
ICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBlbnRyeS52YWx1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgZXhjbHVkZWROYW1lcy5hZGQoZW50cnkua2V5LmdldCgpKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBleGNsdWRlZE5hbWVz
LmFkZChlbnRyeS5rZXkuZ2V0KCkpOworICAgICAgICB9CisgICAgfQorfQorICAgIAogT3B0aW9u
YWw8Q29tcGFjdFZhcmlhYmxlTWFwOjpIYW5kbGU+IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZXRWYXJp
YWJsZXNVbmRlclREWigpCiB7CiAgICAgaWYgKG1fY2FjaGVkVmFyaWFibGVzVW5kZXJURFopIHsK
QEAgLTMwMDUsNiArMzEwMiw4IEBAIE9wdGlvbmFsPENvbXBhY3RWYXJpYWJsZU1hcDo6SGFuZGxl
PiBCeXRlY29kZUdlbmVyYXRvcjo6Z2V0VmFyaWFibGVzVW5kZXJURFooKQogICAgICAgICB9CiAg
ICAgfQogCisgICAgZ2V0QXZhaWxhYmxlUHJpdmF0ZUFjY2Vzc05hbWVzKGVudmlyb25tZW50KTsK
KwogICAgIG1fY2FjaGVkVmFyaWFibGVzVW5kZXJURFogPSBtX3ZtLm1fY29tcGFjdFZhcmlhYmxl
TWFwLT5nZXQoZW52aXJvbm1lbnQpOwogICAgIG1faGFzQ2FjaGVkVmFyaWFibGVzVW5kZXJURFog
PSAhZW52aXJvbm1lbnQuaXNFbXB0eSgpOwogICAgIGlmICghbV9oYXNDYWNoZWRWYXJpYWJsZXNV
bmRlclREWikKQEAgLTMxODYsOSArMzI4NSw5IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0TmV3TWV0aG9kRGVmaW5pdGlvbihSZWdpc3RlcklEKiBkc3QsIE1ldGhvZERlCiB9
CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RGVmYXVsdENvbnN0cnVj
dG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgY29u
c3QgSWRlbnRpZmllciYgbmFtZSwKLSAgICBjb25zdCBJZGVudGlmaWVyJiBlY21hTmFtZSwgY29u
c3QgU291cmNlQ29kZSYgY2xhc3NTb3VyY2UsIENsYXNzRmllbGRzSW5pdGlhbGl6ZXIgY2xhc3NG
aWVsZHNJbml0aWFsaXplcikKKyAgICBjb25zdCBJZGVudGlmaWVyJiBlY21hTmFtZSwgY29uc3Qg
U291cmNlQ29kZSYgY2xhc3NTb3VyY2UsIENsYXNzRmllbGRzSW5pdGlhbGl6ZXIgY2xhc3NGaWVs
ZHNJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWly
ZW1lbnQpCiB7Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBt
X3ZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoY29uc3Ry
dWN0b3JLaW5kLCBuYW1lLCBjbGFzc0ZpZWxkc0luaXRpYWxpemVyKTsKKyAgICBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG1fdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCkt
PmNyZWF0ZURlZmF1bHRDb25zdHJ1Y3Rvcihjb25zdHJ1Y3RvcktpbmQsIG5hbWUsIGNsYXNzRmll
bGRzSW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KTsKICAgICBleGVjdXRhYmxl
LT5zZXRJbnZhbGlkVHlwZVByb2ZpbGluZ09mZnNldHMoKTsKICAgICBleGVjdXRhYmxlLT5zZXRF
Y21hTmFtZShlY21hTmFtZSk7CiAgICAgZXhlY3V0YWJsZS0+c2V0Q2xhc3NTb3VyY2UoY2xhc3NT
b3VyY2UpOwpAQCAtMzIxOCw3ICszMzE3LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXROZXdJbnN0YW5jZUZpZWxkSW5pdGlhbGl6ZXJGdW5jdGlvbihSZWdpc3RlckkKICAg
ICBjb25zdCBib29sIGFsd2F5c1N0cmljdEluQ2xhc3MgPSB0cnVlOwogICAgIEZ1bmN0aW9uTWV0
YWRhdGFOb2RlIG1ldGFkYXRhKHBhcnNlckFyZW5hKCksIEpTVG9rZW5Mb2NhdGlvbigpLCBKU1Rv
a2VuTG9jYXRpb24oKSwgMCwgMCwgMCwgMCwgMCwgYWx3YXlzU3RyaWN0SW5DbGFzcywgQ29uc3Ry
dWN0b3JLaW5kOjpOb25lLCBzdXBlckJpbmRpbmcsIDAsIHBhcnNlTW9kZSwgZmFsc2UpOwogICAg
IG1ldGFkYXRhLmZpbmlzaFBhcnNpbmcobV9zY29wZU5vZGUtPnNvdXJjZSgpLCBJZGVudGlmaWVy
KCksIEZ1bmN0aW9uTW9kZTo6TWV0aG9kRGVmaW5pdGlvbik7Ci0gICAgYXV0byBpbml0aWFsaXpl
ciA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29wZU5vZGUt
PnNvdXJjZSgpLCAmbWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0
aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIHNj
cmlwdE1vZGUoKSwgV1RGTW92ZSh2YXJpYWJsZXNVbmRlclREWiksIG5ld0Rlcml2ZWRDb250ZXh0
VHlwZSwgQ2xhc3NGaWVsZHNJbml0aWFsaXplcjo6Tm90TmVlZGVkKTsKKyAgICBhdXRvIGluaXRp
YWxpemVyID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3Bl
Tm9kZS0+c291cmNlKCksICZtZXRhZGF0YSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2Vk
QnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0
eSwgc2NyaXB0TW9kZSgpLCBXVEZNb3ZlKHZhcmlhYmxlc1VuZGVyVERaKSwgbmV3RGVyaXZlZENv
bnRleHRUeXBlLCBDbGFzc0ZpZWxkc0luaXRpYWxpemVyOjpOb3ROZWVkZWQsIFByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50OjpOb25lKTsKICAgICBpbml0aWFsaXplci0+c2V0SW5zdGFuY2VGaWVsZExv
Y2F0aW9ucyhXVEZNb3ZlKGluc3RhbmNlRmllbGRMb2NhdGlvbnMpKTsKIAogICAgIHVuc2lnbmVk
IGluZGV4ID0gbV9jb2RlQmxvY2stPmFkZEZ1bmN0aW9uRXhwcihpbml0aWFsaXplcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmgKaW5kZXggNzBjNWM0YjQ3YzAuLmEzODNhZGI3ZGNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC0z
ODksNiArMzg5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbmVlZHNUb1VwZGF0
ZUFycm93RnVuY3Rpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc1RvVXBkYXRlQXJy
b3dGdW5jdGlvbkNvbnRleHQ7IH0KICAgICAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2NvcGVOb2RlLT51c2VzRXZhbCgpOyB9CiAgICAgICAgIGJvb2wgdXNlc1RoaXMoKSBj
b25zdCB7IHJldHVybiBtX3Njb3BlTm9kZS0+dXNlc1RoaXMoKTsgfQorICAgICAgICBQcml2YXRl
QnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fY29kZUJsb2NrLT5wcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpOyB9CiAgICAgICAgIENvbnN0
cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+
Y29uc3RydWN0b3JLaW5kKCk7IH0KICAgICAgICAgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZygp
IGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5zdXBlckJpbmRpbmcoKTsgfQogICAgICAgICBK
U1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2Nr
LT5zY3JpcHRNb2RlKCk7IH0KQEAgLTc0Myw3ICs3NDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5j
dGlvbk1ldGFkYXRhTm9kZSopOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3RnVuY3Rpb25F
eHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY0V4cHJOb2RlKik7Ci0gICAgICAgIFJlZ2lz
dGVySUQqIGVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCogZHN0LCBDb25zdHJ1
Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIGNvbnN0IElkZW50aWZpZXImIGVjbWFO
YW1lLCBjb25zdCBTb3VyY2VDb2RlJiBjbGFzc1NvdXJjZSwgQ2xhc3NGaWVsZHNJbml0aWFsaXpl
cik7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0
ZXJJRCogZHN0LCBDb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIGNvbnN0
IElkZW50aWZpZXImIGVjbWFOYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBjbGFzc1NvdXJjZSwgQ2xh
c3NGaWVsZHNJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOwogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0TmV3SW5zdGFuY2VGaWVsZEluaXRpYWxpemVyRnVuY3Rpb24oUmVnaXN0
ZXJJRCogZHN0LCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+JiYgaW5zdGFuY2VGaWVsZExvY2F0aW9u
cywgYm9vbCBpc0Rlcml2ZWQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3QXJyb3dGdW5j
dGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCosIEFycm93RnVuY0V4cHJOb2RlKik7CiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXROZXdNZXRob2REZWZpbml0aW9uKFJlZ2lzdGVySUQqIGRzdCwgTWV0
aG9kRGVmaW5pdGlvbk5vZGUqKTsKQEAgLTc4OCw2ICs3ODksMTEgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQcml2YXRlRmllbGRBZGQoUmVnaXN0ZXJJRCogYmFz
ZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKICAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdFByaXZhdGVGaWVsZFB1dChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklE
KiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwogCisgICAgICAgIHZvaWQgZW1pdENyZWF0
ZVByaXZhdGVCcmFuZChSZWdpc3RlcklEKiBkc3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdEVuZCk7CisgICAgICAgIHZvaWQgZW1pdEluc3RhbGxQcml2YXRlQnJhbmQoUmVnaXN0
ZXJJRCogdGFyZ2V0KTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldFByaXZhdGVCcmFuZChS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNjb3BlKTsKKyAgICAgICAgdm9pZCBlbWl0Q2hl
Y2tQcml2YXRlQnJhbmQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogYnJhbmQpOworCiAg
ICAgICAgIHZvaWQgZW1pdFN1cGVyU2FtcGxlckJlZ2luKCk7CiAgICAgICAgIHZvaWQgZW1pdFN1
cGVyU2FtcGxlckVuZCgpOwogCkBAIC0xMTM4LDExICsxMTQ0LDEzIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB7CiAgICAgICAgICAgICBEZXJpdmVkQ29udGV4dFR5cGUgbmV3RGVyaXZlZENv
bnRleHRUeXBlID0gRGVyaXZlZENvbnRleHRUeXBlOjpOb25lOwogCisgICAgICAgICAgICBQcml2
YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9IG1ldGFkYXRhLT5w
cml2YXRlQnJhbmRSZXF1aXJlbWVudCgpOwogICAgICAgICAgICAgQ2xhc3NGaWVsZHNJbml0aWFs
aXplciBjbGFzc0ZpZWxkc0luaXRpYWxpemVyID0gbWV0YWRhdGEtPmNsYXNzRmllbGRzSW5pdGlh
bGl6ZXIoKTsKICAgICAgICAgICAgIGlmIChTb3VyY2VQYXJzZU1vZGVTZXQoU291cmNlUGFyc2VN
b2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSwgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rp
b25Nb2RlLCBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbkJvZHlNb2RlKS5jb250
YWlucyhtZXRhZGF0YS0+cGFyc2VNb2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGNvbnN0
cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RXh0ZW5kcyB8fCBpc0Rlcml2ZWRDb25z
dHJ1Y3RvckNvbnRleHQoKSkgewogICAgICAgICAgICAgICAgICAgICBuZXdEZXJpdmVkQ29udGV4
dFR5cGUgPSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQ7CiAg
ICAgICAgICAgICAgICAgICAgIGNsYXNzRmllbGRzSW5pdGlhbGl6ZXIgPSBtX2NvZGVCbG9jay0+
Y2xhc3NGaWVsZHNJbml0aWFsaXplcigpOworICAgICAgICAgICAgICAgICAgICBwcml2YXRlQnJh
bmRSZXF1aXJlbWVudCA9IG1fY29kZUJsb2NrLT5wcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlIGlmIChtX2NvZGVCbG9jay0+
aXNDbGFzc0NvbnRleHQoKSB8fCBpc0Rlcml2ZWRDbGFzc0NvbnRleHQoKSkKICAgICAgICAgICAg
ICAgICAgICAgbmV3RGVyaXZlZENvbnRleHRUeXBlID0gRGVyaXZlZENvbnRleHRUeXBlOjpEZXJp
dmVkTWV0aG9kQ29udGV4dDsKQEAgLTExNTcsMTAgKzExNjUsMTEgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9k
ZSAmJiBtZXRhZGF0YS0+Y29uc3RydWN0b3JLaW5kKCkgIT0gQ29uc3RydWN0b3JLaW5kOjpOb25l
KQogICAgICAgICAgICAgICAgIGNvbnN0cnVjdEFiaWxpdHkgPSBDb25zdHJ1Y3RBYmlsaXR5OjpD
YW5Db25zdHJ1Y3Q7CiAKLSAgICAgICAgICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgbWV0YWRhdGEsIGlzQnVp
bHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFs
RnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIHNjcmlwdE1vZGUoKSwgV1RGTW92ZShvcHRpb25h
bFZhcmlhYmxlc1VuZGVyVERaKSwgbmV3RGVyaXZlZENvbnRleHRUeXBlLCBjbGFzc0ZpZWxkc0lu
aXRpYWxpemVyKTsKKyAgICAgICAgICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgbWV0YWRhdGEsIGlzQnVpbHRp
bkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVu
Y3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIHNjcmlwdE1vZGUoKSwgV1RGTW92ZShvcHRpb25hbFZh
cmlhYmxlc1VuZGVyVERaKSwgbmV3RGVyaXZlZENvbnRleHRUeXBlLCBjbGFzc0ZpZWxkc0luaXRp
YWxpemVyLCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7CiAgICAgICAgIH0KIAogICAgICAgICBP
cHRpb25hbDxDb21wYWN0VmFyaWFibGVNYXA6OkhhbmRsZT4gZ2V0VmFyaWFibGVzVW5kZXJURFoo
KTsKKyAgICAgICAgdm9pZCBnZXRBdmFpbGFibGVQcml2YXRlQWNjZXNzTmFtZXMoVmFyaWFibGVF
bnZpcm9ubWVudCYpOwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDb25zdHJ1Y3RWYXJhcmdz
KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgUmVnaXN0ZXJJRCogdGhpc1JlZ2lz
dGVyLCBSZWdpc3RlcklEKiBhcmd1bWVudHMsIFJlZ2lzdGVySUQqIGZpcnN0RnJlZVJlZ2lzdGVy
LCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3Qs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZGl2b3RFbmQsIERlYnVnZ2FibGVDYWxsKTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2Fs
bE9wPgpAQCAtMTIyMyw2ICsxMjMyLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
bV9sYXN0SW5zdHJ1Y3Rpb24gPSBwcmV2TGFzdEluc3RydWN0aW9uOwogICAgICAgICB9CiAKKyAg
ICAgICAgYm9vbCBpc1ByaXZhdGVNZXRob2QoY29uc3QgSWRlbnRpZmllciYpOworCisgICAgICAg
IHZvaWQgcHVzaFByaXZhdGVBY2Nlc3NOYW1lcyhjb25zdCBWYXJpYWJsZUVudmlyb25tZW50Jik7
CisgICAgICAgIHZvaWQgcG9wUHJpdmF0ZUFjY2Vzc05hbWVzKCk7CisKICAgICBwcml2YXRlOgog
ICAgICAgICBJbnN0cnVjdGlvblN0cmVhbVdyaXRlciBtX3dyaXRlcjsKIApAQCAtMTIzNyw2ICsx
MjUxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFZlY3RvcjxMZXhpY2FsU2NvcGVTdGFj
a0VudHJ5PiBtX2xleGljYWxTY29wZVN0YWNrOwogCiAgICAgICAgIFZlY3RvcjxURFpNYXA+IG1f
VERaU3RhY2s7CisgICAgICAgIFZlY3RvcjxWYXJpYWJsZUVudmlyb25tZW50OjpQcml2YXRlTmFt
ZXM+IG1fcHJpdmF0ZU5hbWVzU3RhY2s7CiAgICAgICAgIE9wdGlvbmFsPHNpemVfdD4gbV92YXJT
Y29wZUxleGljYWxTY29wZVN0YWNrSW5kZXg7CiAgICAgICAgIHZvaWQgcHVzaFREWlZhcmlhYmxl
cyhjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiwgVERaQ2hlY2tPcHRpbWl6YXRpb24sIFREWlJl
cXVpcmVtZW50KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDM3MDllNjg1ZmJkLi5mMjE2M2MzYTgxMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cApAQCAtNTQ1LDcgKzU0NSw3IEBAIFJlZ2lzdGVySUQqIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlCiAgICAgUHJvcGVy
dHlMaXN0Tm9kZSogcCA9IHRoaXM7CiAgICAgUmVnaXN0ZXJJRCogZHN0ID0gbnVsbHB0cjsKICAg
ICBmb3IgKDsgcDsgcCA9IHAtPm1fbmV4dCkgewotICAgICAgICBpZiAoIShwLT5tX25vZGUtPm1f
dHlwZSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0ZSkpCisgICAgICAgIGlmICghKHAtPm1fbm9kZS0+
bV90eXBlICYgUHJvcGVydHlOb2RlOjpQcml2YXRlRmllbGQpKQogICAgICAgICAgICAgY29udGlu
dWU7CiAKICAgICAgICAgZHN0ID0gcC0+bV9ub2RlLT5pc0luc3RhbmNlQ2xhc3NQcm9wZXJ0eSgp
ID8gcHJvdG90eXBlIDogZHN0T3JDb25zdHJ1Y3RvcjsKQEAgLTU2MCw3ICs1NjAsNyBAQCBSZWdp
c3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZQogICAgICAgICBpZiAocC0+aXNDb21wdXRlZENsYXNzRmllbGQo
KSkKICAgICAgICAgICAgIGVtaXRTYXZlQ29tcHV0ZWRGaWVsZE5hbWUoZ2VuZXJhdG9yLCAqcC0+
bV9ub2RlKTsKIAotICAgICAgICBpZiAocC0+aXNJbnN0YW5jZUNsYXNzRmllbGQoKSkgeworICAg
ICAgICBpZiAocC0+aXNJbnN0YW5jZUNsYXNzRmllbGQoKSAmJiAhKHAtPm1fbm9kZS0+dHlwZSgp
ICYgUHJvcGVydHlOb2RlOjpQcml2YXRlTWV0aG9kKSkgewogICAgICAgICAgICAgQVNTRVJUKGlu
c3RhbmNlRmllbGRMb2NhdGlvbnMpOwogICAgICAgICAgICAgaW5zdGFuY2VGaWVsZExvY2F0aW9u
cy0+YXBwZW5kKHAtPnBvc2l0aW9uKCkpOwogICAgICAgICAgICAgY29udGludWU7CkBAIC03MTIs
NyArNzEyLDcgQEAgUmVnaXN0ZXJJRCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGUKIAogdm9pZCBQcm9wZXJ0eUxpc3RO
b2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBuZXdPYmosIFByb3BlcnR5Tm9kZSYgbm9kZSkKIHsKLSAgICBpZiAobm9k
ZS50eXBlKCkgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGUpIHsKKyAgICBpZiAobm9kZS50eXBlKCkg
JiBQcm9wZXJ0eU5vZGU6OlByaXZhdGVGaWVsZCkgewogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gY3JlYXRlUHJpdmF0ZVN5bWJvbCA9IGdlbmVyYXRvci5lbWl0R2V0R2xvYmFsUHJpdmF0ZShn
ZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRp
bk5hbWVzKCkuY3JlYXRlUHJpdmF0ZVN5bWJvbFByaXZhdGVOYW1lKCkpOwogCiAgICAgICAgIENh
bGxBcmd1bWVudHMgYXJndW1lbnRzKGdlbmVyYXRvciwgbnVsbHB0ciwgMCk7CkBAIC03MzAsNiAr
NzMwLDEzIEBAIHZvaWQgUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHko
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnCiAKICAgICBpZiAobm9kZS5pc0NsYXNz
UHJvcGVydHkoKSkgewogICAgICAgICBBU1NFUlQobm9kZS5uZWVkc1N1cGVyQmluZGluZygpKTsK
KworICAgICAgICBpZiAobm9kZS50eXBlKCkgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGVNZXRob2Qp
IHsKKyAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZSgqbm9kZS5u
YW1lKCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKGdlbmVyYXRvci5z
Y29wZVJlZ2lzdGVyKCksIHZhciwgdmFsdWUuZ2V0KCksIERvTm90VGhyb3dJZk5vdEZvdW5kLCBJ
bml0aWFsaXphdGlvbk1vZGU6OkNvbnN0SW5pdGlhbGl6YXRpb24pOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BlcnR5TmFt
ZVJlZ2lzdGVyOwogICAgICAgICBpZiAobm9kZS5uYW1lKCkpCiAgICAgICAgICAgICBwcm9wZXJ0
eU5hbWVSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCAqbm9kZS5uYW1lKCkp
OwpAQCAtODUxLDYgKzg1OCwxNiBAQCBSZWdpc3RlcklEKiBEb3RBY2Nlc3Nvck5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcgogUmVnaXN0ZXJJ
RCogQmFzZURvdE5vZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVmUHRyPFJlZ2lz
dGVySUQ+JiB0aGlzVmFsdWUpCiB7CiAgICAgaWYgKGlzUHJpdmF0ZU5hbWUoKSkgeworICAgICAg
ICBpZiAoZ2VuZXJhdG9yLmlzUHJpdmF0ZU1ldGhvZChpZGVudGlmaWVyKCkpKSB7CisgICAgICAg
ICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnRpZmllcigpKTsKKyAg
ICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2
ZVNjb3BlKG51bGxwdHIsIHZhcik7CisKKyAgICAgICAgICAgIFJlZ2lzdGVySUQqIHByaXZhdGVC
cmFuZFN5bWJvbCA9IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZUJyYW5kKGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDaGVj
a1ByaXZhdGVCcmFuZChiYXNlLCBwcml2YXRlQnJhbmRTeW1ib2wpOworCisgICAgICAgICAgICBy
ZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZHN0LCBzY29wZS5nZXQoKSwgdmFyLCBU
aHJvd0lmTm90Rm91bmQpOworICAgICAgICB9CisKICAgICAgICAgLy8gVE9ETzogb25seSBsb2Fk
IHRoZSBQcml2YXRlU3ltYm9sIG9uY2UgZm9yIHVuYXJ5ICsrIC8gLS0KICAgICAgICAgVmFyaWFi
bGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKG1faWRlbnQpOwogICAgICAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKCF2YXIubG9jYWwoKSwgIlByaXZhdGUgRmllbGQgbmFtZXMgbXVzdCBiZSBzdG9y
ZWQgaW4gY2FwdHVyZWQgdmFyaWFibGVzIik7CkBAIC04ODAsNiArODk3LDE3IEBAIFJlZ2lzdGVy
SUQqIEJhc2VEb3ROb2RlOjplbWl0R2V0UHJvcGVydHlWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpCiBSZWdpc3RlcklEKiBCYXNlRG90Tm9kZTo6ZW1pdFB1dFByb3BlcnR5
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVy
SUQqIHZhbHVlLCBSZWZQdHI8UmVnaXN0ZXJJRD4mIHRoaXNWYWx1ZSkKIHsKICAgICBpZiAoaXNQ
cml2YXRlTmFtZSgpKSB7CisgICAgICAgIGF1dG8gaWRlbnRpZmllck5hbWUgPSBpZGVudGlmaWVy
KCk7CisgICAgICAgIGlmIChnZW5lcmF0b3IuaXNQcml2YXRlTWV0aG9kKGlkZW50aWZpZXJOYW1l
KSkgeworICAgICAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGlkZW50
aWZpZXJOYW1lKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVy
YXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIFJlZ2lzdGVySUQqIHByaXZhdGVCcmFuZFN5bWJvbCA9IGdlbmVyYXRvci5lbWl0R2V0
UHJpdmF0ZUJyYW5kKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCkpOworICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDaGVja1ByaXZhdGVCcmFuZChiYXNlLCBwcml2YXRlQnJh
bmRTeW1ib2wpOworICAgICAgICAgICAgCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFRocm93
VHlwZUVycm9yKCJUcnlpbmcgdG8gYWNjZXNzIGEgbm90IGRlZmluZWQgcHJpdmF0ZSBzZXR0ZXIi
KTsKKyAgICAgICAgfQorCiAgICAgICAgIC8vIFRPRE86IG9ubHkgbG9hZCB0aGUgUHJpdmF0ZVN5
bWJvbCBvbmNlIGZvciB1bmFyeSArKyAvIC0tCiAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVy
YXRvci52YXJpYWJsZShtX2lkZW50KTsKICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghdmFy
LmxvY2FsKCksICJQcml2YXRlIEZpZWxkIG5hbWVzIG11c3QgYmUgc3RvcmVkIGluIGNhcHR1cmVk
IHZhcmlhYmxlcyIpOwpAQCAtMTAzNiwxMCArMTA2NCwxMiBAQCBSZWdpc3RlcklEKiBGdW5jdGlv
bkNhbGxWYWx1ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZQogCiAgICAgICAgIC8vIEluaXRpYWxpemUgaW5zdGFuY2UgZmllbGRzIGFmdGVyIHN1cGVy
LWNhbGwuCiAgICAgICAgIGlmIChPcHRpb25zOjp1c2VDbGFzc0ZpZWxkcygpKSB7CisgICAgICAg
ICAgICBpZiAoZ2VuZXJhdG9yLnByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkgPT0gUHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQ6Ok5lZWRlZCkKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdElu
c3RhbGxQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpKTsKKwogICAgICAgICAg
ICAgZnVuYyA9IGdlbmVyYXRvci5lbWl0TG9hZERlcml2ZWRDb25zdHJ1Y3RvcigpOwogICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRJbnN0YW5jZUZpZWxkSW5pdGlhbGl6YXRpb25JZk5lZWRlZChn
ZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCksIGZ1bmMuZ2V0KCksIGRpdm90KCksIGRpdm90U3RhcnQo
KSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIH0KLQogICAgICAgICByZXR1cm4gcmV0OwogICAgIH0K
IApAQCAtNDQ0Niw2ICs0NDc2LDEzIEBAIFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAgICAgaWYg
KG1fbmVlZHNMZXhpY2FsU2NvcGUpCiAgICAgICAgIGdlbmVyYXRvci5wdXNoTGV4aWNhbFNjb3Bl
KHRoaXMsIEJ5dGVjb2RlR2VuZXJhdG9yOjpURFpDaGVja09wdGltaXphdGlvbjo6T3B0aW1pemUs
IEJ5dGVjb2RlR2VuZXJhdG9yOjpOZXN0ZWRTY29wZVR5cGU6OklzTmVzdGVkKTsKIAorICAgIGJv
b2wgaGFzUHJpdmF0ZU5hbWVzID0gISFtX2xleGljYWxWYXJpYWJsZXMucHJpdmF0ZU5hbWVzU2l6
ZSgpOworICAgIGJvb2wgc2hvdWxkRW1pdFByaXZhdGVCcmFuZCA9IG1fbGV4aWNhbFZhcmlhYmxl
cy5oYXNQcml2YXRlQWNjZXNzKCk7CisgICAgaWYgKGhhc1ByaXZhdGVOYW1lcykKKyAgICAgICAg
Z2VuZXJhdG9yLnB1c2hQcml2YXRlQWNjZXNzTmFtZXMobV9sZXhpY2FsVmFyaWFibGVzKTsKKyAg
ICBpZiAoc2hvdWxkRW1pdFByaXZhdGVCcmFuZCkKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRDcmVh
dGVQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLnNjb3BlUmVnaXN0ZXIoKSwgbV9wb3NpdGlvbiwgbV9w
b3NpdGlvbiwgbV9wb3NpdGlvbik7CisKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3VwZXJjbGFz
czsKICAgICBpZiAobV9jbGFzc0hlcml0YWdlKSB7CiAgICAgICAgIHN1cGVyY2xhc3MgPSBnZW5l
cmF0b3IubmV3VGVtcG9yYXJ5KCk7CkBAIC00NDU2LDcgKzQ0OTMsNyBAQCBSZWdpc3RlcklEKiBD
bGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRAogICAgIGJvb2wgbmVlZHNIb21lT2JqZWN0ID0gZmFsc2U7CiAKICAgICBib29s
IGhhc0luc3RhbmNlRmllbGRzID0gdGhpcy0+aGFzSW5zdGFuY2VGaWVsZHMoKTsKLQorICAgIFBy
aXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID0gc2hvdWxkRW1p
dFByaXZhdGVCcmFuZCA/IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOZWVkZWQgOiBQcml2YXRl
QnJhbmRSZXF1aXJlbWVudDo6Tm9uZTsKICAgICBpZiAobV9jb25zdHJ1Y3RvckV4cHJlc3Npb24p
IHsKICAgICAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JFeHByZXNzaW9uLT5pc0Z1bmNFeHByTm9k
ZSgpKTsKICAgICAgICAgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1ldGFkYXRhID0gc3RhdGljX2Nh
c3Q8RnVuY0V4cHJOb2RlKj4obV9jb25zdHJ1Y3RvckV4cHJlc3Npb24pLT5tZXRhZGF0YSgpOwpA
QCAtNDQ2NCwxMCArNDUwMSwxMSBAQCBSZWdpc3RlcklEKiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogICAgICAgICBt
ZXRhZGF0YS0+c2V0Q2xhc3NTb3VyY2UobV9jbGFzc1NvdXJjZSk7CiAgICAgICAgIGlmIChoYXNJ
bnN0YW5jZUZpZWxkcykKICAgICAgICAgICAgIG1ldGFkYXRhLT5zZXRDbGFzc0ZpZWxkc0luaXRp
YWxpemVyKENsYXNzRmllbGRzSW5pdGlhbGl6ZXI6Ok5lZWRlZCk7CisgICAgICAgIG1ldGFkYXRh
LT5zZXRQcml2YXRlQnJhbmRSZXF1aXJlbWVudChwcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7CiAg
ICAgICAgIGNvbnN0cnVjdG9yID0gZ2VuZXJhdG9yLmVtaXROb2RlKGNvbnN0cnVjdG9yLmdldCgp
LCBtX2NvbnN0cnVjdG9yRXhwcmVzc2lvbik7CiAgICAgICAgIG5lZWRzSG9tZU9iamVjdCA9IG1f
Y2xhc3NIZXJpdGFnZSB8fCBtZXRhZGF0YS0+c3VwZXJCaW5kaW5nKCkgPT0gU3VwZXJCaW5kaW5n
OjpOZWVkZWQ7CiAgICAgfSBlbHNlCi0gICAgICAgIGNvbnN0cnVjdG9yID0gZ2VuZXJhdG9yLmVt
aXROZXdEZWZhdWx0Q29uc3RydWN0b3IoY29uc3RydWN0b3IuZ2V0KCksIG1fY2xhc3NIZXJpdGFn
ZSA/IENvbnN0cnVjdG9yS2luZDo6RXh0ZW5kcyA6IENvbnN0cnVjdG9yS2luZDo6QmFzZSwgbV9u
YW1lLCBlY21hTmFtZSgpLCBtX2NsYXNzU291cmNlLCBzdGF0aWNfY2FzdDxDbGFzc0ZpZWxkc0lu
aXRpYWxpemVyPihoYXNJbnN0YW5jZUZpZWxkcykpOworICAgICAgICBjb25zdHJ1Y3RvciA9IGdl
bmVyYXRvci5lbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKGNvbnN0cnVjdG9yLmdldCgpLCBtX2Ns
YXNzSGVyaXRhZ2UgPyBDb25zdHJ1Y3RvcktpbmQ6OkV4dGVuZHMgOiBDb25zdHJ1Y3RvcktpbmQ6
OkJhc2UsIG1fbmFtZSwgZWNtYU5hbWUoKSwgbV9jbGFzc1NvdXJjZSwgc3RhdGljX2Nhc3Q8Q2xh
c3NGaWVsZHNJbml0aWFsaXplcj4oaGFzSW5zdGFuY2VGaWVsZHMpLCBwcml2YXRlQnJhbmRSZXF1
aXJlbWVudCk7CiAKICAgICBjb25zdCBhdXRvJiBwcm9wZXJ0eU5hbWVzID0gZ2VuZXJhdG9yLnBy
b3BlcnR5TmFtZXMoKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvdG90eXBlID0gZ2VuZXJh
dG9yLmVtaXROZXdPYmplY3QoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpKTsKQEAgLTQ1MzcsNiAr
NDU3NSw5IEBAIFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAgICAgICAgIGdlbmVyYXRvci5wb3BM
ZXhpY2FsU2NvcGUodGhpcyk7CiAgICAgfQogCisgICAgaWYgKGhhc1ByaXZhdGVOYW1lcykKKyAg
ICAgICAgZ2VuZXJhdG9yLnBvcFByaXZhdGVBY2Nlc3NOYW1lcygpOworCiAgICAgcmV0dXJuIGdl
bmVyYXRvci5tb3ZlKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgY29uc3RydWN0b3Iu
Z2V0KCkpLCBjb25zdHJ1Y3Rvci5nZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCmluZGV4IDYxNzlhY2M1ZWM5
Li5hYjExMjNlM2VjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2Vy
L0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCkBAIC0yNDcsNyArMjQ3LDcgQEAgSlNWYWx1ZSBEZWJ1
Z2dlckNhbGxGcmFtZTo6ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBz
Y3JpcHQsIEpTT2IKICAgICBWYXJpYWJsZUVudmlyb25tZW50IHZhcmlhYmxlc1VuZGVyVERaOwog
ICAgIEpTU2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFooc2NvcGUoKS0+anNT
Y29wZSgpLCB2YXJpYWJsZXNVbmRlclREWik7CiAKLSAgICBhdXRvKiBldmFsID0gRGlyZWN0RXZh
bEV4ZWN1dGFibGU6OmNyZWF0ZShjYWxsRnJhbWUsIG1ha2VTb3VyY2Uoc2NyaXB0LCBjYWxsRnJh
bWUtPmNhbGxlclNvdXJjZU9yaWdpbigpKSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgY29k
ZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgY29kZUJs
b2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5jbGFzc0ZpZWxkc0luaXRpYWxpemVyKCksIGNvZGVC
bG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+aXNBcnJvd0Z1bmN0aW9uKCksIGV2YWxDb250ZXh0
VHlwZSwgJnZhcmlhYmxlc1VuZGVyVERaKTsKKyAgICBhdXRvKiBldmFsID0gRGlyZWN0RXZhbEV4
ZWN1dGFibGU6OmNyZWF0ZShjYWxsRnJhbWUsIG1ha2VTb3VyY2Uoc2NyaXB0LCBjYWxsRnJhbWUt
PmNhbGxlclNvdXJjZU9yaWdpbigpKSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgY29kZUJs
b2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgY29kZUJsb2Nr
LT51bmxpbmtlZENvZGVCbG9jaygpLT5jbGFzc0ZpZWxkc0luaXRpYWxpemVyKCksIGNvZGVCbG9j
ay0+dW5saW5rZWRDb2RlQmxvY2soKS0+cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSwgY29kZUJs
b2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5pc0Fycm93RnVuY3Rpb24oKSwgZXZhbENvbnRleHRU
eXBlLCAmdmFyaWFibGVzVW5kZXJURFopOwogICAgIGlmIChVTkxJS0VMWShjYXRjaFNjb3BlLmV4
Y2VwdGlvbigpKSkgewogICAgICAgICBleGNlcHRpb24gPSBjYXRjaFNjb3BlLmV4Y2VwdGlvbigp
OwogICAgICAgICBjYXRjaFNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCA2NGJhYzU1ZTg4
Ny4uZWMxYTMxNThmMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcApAQCAtMTY2LDcgKzE2Niw3IEBAIEpTVmFsdWUgZXZhbChDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKICAgICAgICAgCiAgICAgICAgIFZhcmlhYmxlRW52aXJvbm1lbnQg
dmFyaWFibGVzVW5kZXJURFo7CiAgICAgICAgIEpTU2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFi
bGVzVW5kZXJURFooY2FsbGVyU2NvcGVDaGFpbiwgdmFyaWFibGVzVW5kZXJURFopOwotICAgICAg
ICBldmFsID0gRGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShjYWxsRnJhbWUsIG1ha2VTb3Vy
Y2UocHJvZ3JhbVNvdXJjZSwgY2FsbGVyQ29kZUJsb2NrLT5zb3VyY2UoKS5wcm92aWRlcigpLT5z
b3VyY2VPcmlnaW4oKSksIGNhbGxlckNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIGRlcml2ZWRD
b250ZXh0VHlwZSwgY2FsbGVyVW5saW5rZWRDb2RlQmxvY2stPmNsYXNzRmllbGRzSW5pdGlhbGl6
ZXIoKSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgZXZhbENvbnRleHRUeXBlLCAmdmFyaWFibGVz
VW5kZXJURFopOworICAgICAgICBldmFsID0gRGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShj
YWxsRnJhbWUsIG1ha2VTb3VyY2UocHJvZ3JhbVNvdXJjZSwgY2FsbGVyQ29kZUJsb2NrLT5zb3Vy
Y2UoKS5wcm92aWRlcigpLT5zb3VyY2VPcmlnaW4oKSksIGNhbGxlckNvZGVCbG9jay0+aXNTdHJp
Y3RNb2RlKCksIGRlcml2ZWRDb250ZXh0VHlwZSwgY2FsbGVyVW5saW5rZWRDb2RlQmxvY2stPmNs
YXNzRmllbGRzSW5pdGlhbGl6ZXIoKSwgY2FsbGVyVW5saW5rZWRDb2RlQmxvY2stPnByaXZhdGVC
cmFuZFJlcXVpcmVtZW50KCksIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGV2YWxDb250ZXh0VHlw
ZSwgJnZhcmlhYmxlc1VuZGVyVERaKTsKICAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3Bl
LmV4Y2VwdGlvbigpID09ICFldmFsKTsKICAgICAgICAgaWYgKCFldmFsKQogICAgICAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0xleGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3Bw
CmluZGV4IGFkZjdkZjQyZWIxLi41NjU1N2JmZjBmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9MZXhlci5jcHAKQEAgLTEwNjIsMjAgKzEwNjIsMjEgQEAgdGVtcGxhdGUgPGJvb2wgc2hv
dWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxVQ2hh
cj46OnAKICAgICB9IGVsc2UKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IG51bGxwdHI7CiAg
ICAgCisgICAgYXV0byBpZGVudFR5cGUgPSBpc1ByaXZhdGVOYW1lID8gUFJJVkFURU5BTUUgOiBJ
REVOVDsKICAgICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAh
KGxleGVyRmxhZ3MgJiBMZXhlckZsYWdzSWdub3JlUmVzZXJ2ZWRXb3JkcykpICYmICFpc1ByaXZh
dGVJZGVudGlmaWVyKSB7CiAgICAgICAgIEFTU0VSVChzaG91bGRDcmVhdGVJZGVudGlmaWVyKTsK
ICAgICAgICAgaWYgKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSB7CiAgICAgICAgICAgICBj
b25zdCBIYXNoVGFibGVWYWx1ZSogZW50cnkgPSBKU0M6Om1haW5UYWJsZS5lbnRyeSgqaWRlbnQp
OwogICAgICAgICAgICAgQVNTRVJUKChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgfHwgIWVu
dHJ5KTsKICAgICAgICAgICAgIGlmICghZW50cnkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIElE
RU5UOworICAgICAgICAgICAgICAgIHJldHVybiBpZGVudFR5cGU7CiAgICAgICAgICAgICBKU1Rv
a2VuVHlwZSB0b2tlbiA9IHN0YXRpY19jYXN0PEpTVG9rZW5UeXBlPihlbnRyeS0+bGV4ZXJWYWx1
ZSgpKTsKLSAgICAgICAgICAgIHJldHVybiAodG9rZW4gIT0gUkVTRVJWRURfSUZfU1RSSUNUKSB8
fCBzdHJpY3RNb2RlID8gdG9rZW4gOiBJREVOVDsKKyAgICAgICAgICAgIHJldHVybiAodG9rZW4g
IT0gUkVTRVJWRURfSUZfU1RSSUNUKSB8fCBzdHJpY3RNb2RlID8gdG9rZW4gOiBpZGVudFR5cGU7
CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIElERU5UOworICAgICAgICByZXR1cm4gaWRlbnRU
eXBlOwogICAgIH0KIAotICAgIHJldHVybiBJREVOVDsKKyAgICByZXR1cm4gaWRlbnRUeXBlOwog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB0ZW1wbGF0ZTxib29sIHNob3Vs
ZENyZWF0ZUlkZW50aWZpZXI+IEpTVG9rZW5UeXBlIExleGVyPENoYXJhY3RlclR5cGU+OjpwYXJz
ZUlkZW50aWZpZXJTbG93Q2FzZShKU1Rva2VuRGF0YSogdG9rZW5EYXRhLCB1bnNpZ25lZCBsZXhl
ckZsYWdzLCBib29sIHN0cmljdE1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZUNvbnN0cnVjdG9ycy5oCmluZGV4IGU3MTYwYjI1ZTk3Li5kN2Q2NGMyYWYxZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKQEAg
LTI1Myw3ICsyNTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLCBtX3R5cGUodHlwZSkK
ICAgICAgICAgLCBtX25lZWRzU3VwZXJCaW5kaW5nKHN1cGVyQmluZGluZyA9PSBTdXBlckJpbmRp
bmc6Ok5lZWRlZCkKICAgICAgICAgLCBtX3B1dFR5cGUocHV0VHlwZSkKLSAgICAgICAgLCBtX2lz
UHJpdmF0ZSghISh0eXBlICYgUHJpdmF0ZSkpCisgICAgICAgICwgbV9pc1ByaXZhdGUoISEodHlw
ZSAmIChQcml2YXRlRmllbGQgfCBQcml2YXRlTWV0aG9kKSkpCiAgICAgICAgICwgbV9jbGFzc0Vs
ZW1lbnRUYWcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRhZykpCiAgICAgICAgICwgbV9pc092ZXJy
aWRkZW5CeUR1cGxpY2F0ZShmYWxzZSkKICAgICB7CkBAIC0yNjYsNyArMjY2LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICwgbV90eXBlKHR5cGUpCiAgICAgICAgICwgbV9uZWVkc1N1cGVy
QmluZGluZyhzdXBlckJpbmRpbmcgPT0gU3VwZXJCaW5kaW5nOjpOZWVkZWQpCiAgICAgICAgICwg
bV9wdXRUeXBlKHB1dFR5cGUpCi0gICAgICAgICwgbV9pc1ByaXZhdGUoISEodHlwZSAmIFByaXZh
dGUpKQorICAgICAgICAsIG1faXNQcml2YXRlKCEhKHR5cGUgJiAoUHJpdmF0ZUZpZWxkIHwgUHJp
dmF0ZU1ldGhvZCkpKQogICAgICAgICAsIG1fY2xhc3NFbGVtZW50VGFnKHN0YXRpY19jYXN0PHVu
c2lnbmVkPih0YWcpKQogICAgICAgICAsIG1faXNPdmVycmlkZGVuQnlEdXBsaWNhdGUoZmFsc2Up
CiAgICAgewpAQCAtMjc5LDcgKzI3OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAsIG1f
dHlwZSh0eXBlKQogICAgICAgICAsIG1fbmVlZHNTdXBlckJpbmRpbmcoc3VwZXJCaW5kaW5nID09
IFN1cGVyQmluZGluZzo6TmVlZGVkKQogICAgICAgICAsIG1fcHV0VHlwZShwdXRUeXBlKQotICAg
ICAgICAsIG1faXNQcml2YXRlKCEhKHR5cGUgJiBQcml2YXRlKSkKKyAgICAgICAgLCBtX2lzUHJp
dmF0ZSghISh0eXBlICYgKFByaXZhdGVGaWVsZCB8IFByaXZhdGVNZXRob2QpKSkKICAgICAgICAg
LCBtX2NsYXNzRWxlbWVudFRhZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4odGFnKSkKICAgICAgICAg
LCBtX2lzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlKGZhbHNlKQogICAgIHsKQEAgLTI5Miw3ICsyOTIs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLCBtX3R5cGUodHlwZSkKICAgICAgICAgLCBt
X25lZWRzU3VwZXJCaW5kaW5nKHN1cGVyQmluZGluZyA9PSBTdXBlckJpbmRpbmc6Ok5lZWRlZCkK
ICAgICAgICAgLCBtX3B1dFR5cGUocHV0VHlwZSkKLSAgICAgICAgLCBtX2lzUHJpdmF0ZSghISh0
eXBlICYgUHJpdmF0ZSkpCisgICAgICAgICwgbV9pc1ByaXZhdGUoISEodHlwZSAmIChQcml2YXRl
RmllbGQgfCBQcml2YXRlTWV0aG9kKSkpCiAgICAgICAgICwgbV9jbGFzc0VsZW1lbnRUYWcoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHRhZykpCiAgICAgICAgICwgbV9pc092ZXJyaWRkZW5CeUR1cGxp
Y2F0ZShmYWxzZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmlu
ZGV4IGU2NGI2MjMyYzE1Li41MzRjMzAyOTA1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Ob2Rlcy5jcHAKQEAgLTIwMCw2ICsyMDAsNyBAQCBGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVu
Y3Rpb25NZXRhZGF0YU5vZGUoCiAgICAgICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCiAgICAgICAgICwgbV9jbGFzc0ZpZWxkc0lu
aXRpYWxpemVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihDbGFzc0ZpZWxkc0luaXRpYWxpemVyOjpO
b3ROZWVkZWQpKQogICAgICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24oaXNB
cnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCisgICAgICAgICwgbV9wcml2YXRlQnJhbmRSZXF1
aXJlbWVudChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5v
bmUpKQogICAgICAgICAsIG1fcGFyc2VNb2RlKG1vZGUpCiAgICAgICAgICwgbV9zdGFydENvbHVt
bihzdGFydENvbHVtbikKICAgICAgICAgLCBtX2VuZENvbHVtbihlbmRDb2x1bW4pCkBAIC0yMjQs
NiArMjI1LDcgQEAgRnVuY3Rpb25NZXRhZGF0YU5vZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKAog
ICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1
Y3RvcktpbmQpKQogICAgICAgICAsIG1fY2xhc3NGaWVsZHNJbml0aWFsaXplcihzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oQ2xhc3NGaWVsZHNJbml0aWFsaXplcjo6Tm90TmVlZGVkKSkKICAgICAgICAg
LCBtX2lzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKGlzQXJyb3dGdW5jdGlvbkJvZHlFeHBy
ZXNzaW9uKQorICAgICAgICAsIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lKSkKICAgICAgICAgLCBtX3Bh
cnNlTW9kZShtb2RlKQogICAgICAgICAsIG1fc3RhcnRDb2x1bW4oc3RhcnRDb2x1bW4pCiAgICAg
ICAgICwgbV9lbmRDb2x1bW4oZW5kQ29sdW1uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5oCmluZGV4IDM4ZDA0YTc1YzllLi5kOWRmZmQ0NTkyZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuaApAQCAtNzEzLDcgKzcxMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGVu
dW0gY2xhc3MgQ2xhc3NFbGVtZW50VGFnIDogdWludDhfdCB7IE5vLCBJbnN0YW5jZSwgU3RhdGlj
LCBMYXN0VGFnIH07CiAgICAgY2xhc3MgUHJvcGVydHlOb2RlIGZpbmFsIDogcHVibGljIFBhcnNl
ckFyZW5hRnJlZWFibGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgZW51bSBUeXBlIDogdWludDhf
dCB7IENvbnN0YW50ID0gMSwgR2V0dGVyID0gMiwgU2V0dGVyID0gNCwgQ29tcHV0ZWQgPSA4LCBT
aG9ydGhhbmQgPSAxNiwgU3ByZWFkID0gMzIsIFByaXZhdGUgPSA2NCB9OworICAgICAgICBlbnVt
IFR5cGUgOiB1aW50OF90IHsgQ29uc3RhbnQgPSAxLCBHZXR0ZXIgPSAyLCBTZXR0ZXIgPSA0LCBD
b21wdXRlZCA9IDgsIFNob3J0aGFuZCA9IDE2LCBTcHJlYWQgPSAzMiwgUHJpdmF0ZUZpZWxkID0g
NjQsIFByaXZhdGVNZXRob2QgPSAxMjggfTsKICAgICAgICAgZW51bSBQdXRUeXBlIDogdWludDhf
dCB7IFVua25vd24sIEtub3duRGlyZWN0IH07CiAKICAgICAgICAgUHJvcGVydHlOb2RlKGNvbnN0
IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSosIFR5cGUsIFB1dFR5cGUsIFN1cGVyQmluZGlu
ZywgQ2xhc3NFbGVtZW50VGFnKTsKQEAgLTc0Myw3ICs3NDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgY29uc3QgSWRlbnRpZmllciogbV9uYW1lOwogICAgICAgICBFeHByZXNzaW9uTm9k
ZSogbV9leHByZXNzaW9uOwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9hc3NpZ247Ci0gICAg
ICAgIHVuc2lnbmVkIG1fdHlwZSA6IDc7CisgICAgICAgIHVuc2lnbmVkIG1fdHlwZTsKICAgICAg
ICAgdW5zaWduZWQgbV9uZWVkc1N1cGVyQmluZGluZyA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1f
cHV0VHlwZSA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1faXNQcml2YXRlIDogMTsKQEAgLTIwODks
NiArMjA4OSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHNldEVjbWFOYW1lKGNv
bnN0IElkZW50aWZpZXImIGVjbWFOYW1lKSB7IG1fZWNtYU5hbWUgPSBlY21hTmFtZTsgfQogICAg
ICAgICBjb25zdCBJZGVudGlmaWVyJiBlY21hTmFtZSgpIHsgcmV0dXJuIG1faWRlbnQuaXNFbXB0
eSgpID8gbV9lY21hTmFtZSA6IG1faWRlbnQ7IH0KIAorICAgICAgICB2b2lkIHNldFByaXZhdGVC
cmFuZFJlcXVpcmVtZW50KFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVp
cmVtZW50KSB7IG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4ocHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOyB9CisgICAgICAgIFByaXZhdGVCcmFuZFJlcXVp
cmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQ+KG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOyB9CisKICAg
ICAgICAgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSgpIHsgcmV0dXJuIG1fZnVuY3Rpb25Nb2Rl
OyB9CiAKICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9m
dW5jdGlvbk5hbWVTdGFydDsgfQpAQCAtMjEzMyw2ICsyMTM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKICAgICAgICAgdW5zaWdu
ZWQgbV9jbGFzc0ZpZWxkc0luaXRpYWxpemVyIDogMTsKICAgICAgICAgdW5zaWduZWQgbV9pc0Fy
cm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA6IDE7CisgICAgICAgIHVuc2lnbmVkIG1fcHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQgOiAxOwogICAgICAgICBTb3VyY2VQYXJzZU1vZGUgbV9wYXJzZU1v
ZGU7CiAgICAgICAgIEZ1bmN0aW9uTW9kZSBtX2Z1bmN0aW9uTW9kZTsKICAgICAgICAgSWRlbnRp
ZmllciBtX2lkZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4
IDlkMTJjYTUzYzZjLi5iYmE4MzU4MzAxZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmNwcApAQCAtMjk1MywxNSArMjk1MywyMCBAQCBwYXJzZU1ldGhvZDoKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBSSVZBVEVOQU1FOiB7CiAgICAgICAgICAgICBBU1NF
UlQoT3B0aW9uczo6dXNlQ2xhc3NGaWVsZHMoKSk7Ci0gICAgICAgICAgICBKU1Rva2VuIHRva2Vu
ID0gbV90b2tlbjsKICAgICAgICAgICAgIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CiAg
ICAgICAgICAgICBmYWlsSWZUcnVlKHRhZyA9PSBDbGFzc0VsZW1lbnRUYWc6OlN0YXRpYywgIlN0
YXRpYyBjbGFzcyBlbGVtZW50IGNhbm5vdCBiZSBwcml2YXRlIik7CiAgICAgICAgICAgICBmYWls
SWZUcnVlKGlzR2V0dGVyIHx8IGlzU2V0dGVyLCAiQ2Fubm90IHBhcnNlIGNsYXNzIG1ldGhvZCB3
aXRoIHByaXZhdGUgbmFtZSIpOwogICAgICAgICAgICAgQVNTRVJUKGlkZW50KTsKICAgICAgICAg
ICAgIG5leHQoKTsKLSAgICAgICAgICAgIGZhaWxJZlRydWUobWF0Y2hBbmRVcGRhdGUoT1BFTlBB
UkVOLCB0b2tlbiksICJDYW5ub3QgcGFyc2UgY2xhc3MgbWV0aG9kIHdpdGggcHJpdmF0ZSBuYW1l
Iik7Ci0gICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoY2xhc3NTY29wZS0+ZGVjbGFyZVBy
aXZhdGVOYW1lKCppZGVudCkgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURl
Y2xhcmF0aW9uLCAiQ2Fubm90IGRlY2xhcmUgcHJpdmF0ZSBmaWVsZCB0d2ljZSIpOwotICAgICAg
ICAgICAgdHlwZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4odHlwZSB8IFByb3Bl
cnR5Tm9kZTo6UHJpdmF0ZSk7CisgICAgICAgICAgICBpZiAoT3B0aW9uczo6dXNlQ2xhc3NGaWVs
ZHMoKSAmJiBtYXRjaChPUEVOUEFSRU4pKSB7CisgICAgICAgICAgICAgICAgc2VtYW50aWNGYWls
SWZUcnVlKGNsYXNzU2NvcGUtPmRlY2xhcmVQcml2YXRlTWV0aG9kKCppZGVudCkgJiBEZWNsYXJh
dGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uLCAiQ2Fubm90IGRlY2xhcmUg
cHJpdmF0ZSBtZXRob2QgdHdpY2UiKTsKKyAgICAgICAgICAgICAgICB0eXBlID0gc3RhdGljX2Nh
c3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlIHwgUHJvcGVydHlOb2RlOjpQcml2YXRlTWV0aG9k
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ZmFpbElmVHJ1ZShtYXRjaChPUEVOUEFSRU4pLCAiQ2Fubm90IHBhcnNlIGNsYXNzIG1ldGhvZCB3
aXRoIHByaXZhdGUgbmFtZSIpOworICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGNsYXNz
U2NvcGUtPmRlY2xhcmVQcml2YXRlRmllbGQoKmlkZW50KSAmIERlY2xhcmF0aW9uUmVzdWx0OjpJ
bnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb24sICJDYW5ub3QgZGVjbGFyZSBwcml2YXRlIGZpZWxk
IHR3aWNlIik7CisgICAgICAgICAgICB0eXBlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpU
eXBlPih0eXBlIHwgUHJvcGVydHlOb2RlOjpQcml2YXRlRmllbGQpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5oCmluZGV4IDJjNTUyZWY0NGM2Li42ZGZkMThlOWQxZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC01MDcsMTEgKzUwNywyOCBAQCBwdWJsaWM6CiAgICAg
ICAgIG1fbGV4aWNhbFZhcmlhYmxlcy51c2VQcml2YXRlTmFtZShpZGVudCk7CiAgICAgfQogCi0g
ICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmVQcml2YXRlTmFtZShjb25zdCBJZGVudGlm
aWVyJiBpZGVudCkKKyAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyZVByaXZhdGVNZXRo
b2QoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiAgICAgewogICAgICAgICBBU1NFUlQobV9hbGxv
d3NMZXhpY2FsRGVjbGFyYXRpb25zKTsKICAgICAgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIHJl
c3VsdCA9IERlY2xhcmF0aW9uUmVzdWx0OjpWYWxpZDsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQg
PSBtX2xleGljYWxWYXJpYWJsZXMuZGVjbGFyZVByaXZhdGVOYW1lKGlkZW50KTsKKyAgICAgICAg
Ym9vbCBhZGRSZXN1bHQgPSBtX2xleGljYWxWYXJpYWJsZXMuZGVjbGFyZVByaXZhdGVNZXRob2Qo
aWRlbnQpOworCisgICAgICAgIGlmICghYWRkUmVzdWx0KSB7CisgICAgICAgICAgICByZXN1bHQg
fD0gRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbjsKKyAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICB1c2VWYXJpYWJsZSgm
aWRlbnQsIGZhbHNlKTsKKyAgICAgICAgYWRkQ2xvc2VkVmFyaWFibGVDYW5kaWRhdGVVbmNvbmRp
dGlvbmFsbHkoaWRlbnQuaW1wbCgpKTsKKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0K
KworICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJlUHJpdmF0ZUZpZWxkKGNvbnN0IElk
ZW50aWZpZXImIGlkZW50KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYWxsb3dzTGV4aWNhbERl
Y2xhcmF0aW9ucyk7CisgICAgICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayByZXN1bHQgPSBEZWNs
YXJhdGlvblJlc3VsdDo6VmFsaWQ7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9sZXhpY2Fs
VmFyaWFibGVzLmRlY2xhcmVQcml2YXRlRmllbGQoaWRlbnQpOwogICAgICAgICBpZiAoIWFkZFJl
c3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAgcmVzdWx0IHw9IERlY2xhcmF0aW9uUmVzdWx0
OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb247CiAgICAgICAgIHJldHVybiByZXN1bHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKaW5kZXggNjQxMzEyY2Nj
OWIuLmNlODYwNDcxM2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlck1vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJN
b2Rlcy5oCkBAIC0zNyw2ICszNyw4IEBAIGVudW0gY2xhc3MgSlNQYXJzZXJTY3JpcHRNb2RlIHsg
Q2xhc3NpYywgTW9kdWxlIH07CiAKIGVudW0gY2xhc3MgU3VwZXJCaW5kaW5nIHsgTmVlZGVkLCBO
b3ROZWVkZWQgfTsKIAorZW51bSBjbGFzcyBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCB7IE5vbmUs
IE5lZWRlZCB9OworCiBlbnVtIGNsYXNzIENvZGVHZW5lcmF0aW9uTW9kZSA6IHVpbnQ4X3Qgewog
ICAgIERlYnVnZ2VyID0gMSA8PCAwLAogICAgIFR5cGVQcm9maWxlciA9IDEgPDwgMSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3Bw
CmluZGV4IDFmNTcwODhhMzRjLi40Y2I5MGM3MWJlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwCkBAIC0xMDcsNiArMTA3
LDQxIEBAIHZvaWQgVmFyaWFibGVFbnZpcm9ubWVudDo6bWFya1ZhcmlhYmxlQXNFeHBvcnRlZChj
b25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+CiAgICAgZmluZFJlc3VsdC0+dmFsdWUuc2V0
SXNFeHBvcnRlZCgpOwogfQogCitib29sIFZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2
YXRlTWV0aG9kKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCit7
CisgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3Vu
aXF1ZTxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4oKTsKKworICAgIGF1dG8gZmluZFJl
c3VsdCA9IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmZpbmQoaWRlbnRpZmllcik7CisKKyAg
ICBpZiAoZmluZFJlc3VsdCA9PSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5lbmQoKSkgewor
ICAgICAgICBQcml2YXRlTmFtZUVudHJ5IG1ldGEoUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJ
c0RlY2xhcmVkIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc01ldGhvZCk7CisKKyAgICAg
ICAgYXV0byBlbnRyeSA9IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpOworICAgICAgICBlbnRy
eS5zZXRJc1ByaXZhdGVNZXRob2QoKTsKKyAgICAgICAgZW50cnkuc2V0SXNDb25zdCgpOworICAg
ICAgICBlbnRyeS5zZXRJc0NhcHR1cmVkKCk7CisgICAgICAgIG1fbWFwLmFkZChpZGVudGlmaWVy
LCBlbnRyeSk7CisKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3JhcmVEYXRhLT5tX3ByaXZh
dGVOYW1lcy5hZGQoaWRlbnRpZmllciwgbWV0YSk7CisgICAgICAgIHJldHVybiBhZGRSZXN1bHQu
aXNOZXdFbnRyeTsKKyAgICB9CisKKyAgICBpZiAoZmluZFJlc3VsdC0+dmFsdWUuaXNEZWNsYXJl
ZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7IC8vIEVycm9yOiBkZWNsYXJpbmcgYSBkdXBsaWNh
dGUgcHJpdmF0ZSBuYW1lLgorCisgICAgYXV0byBlbnRyeSA9IFZhcmlhYmxlRW52aXJvbm1lbnRF
bnRyeSgpOworICAgIGVudHJ5LnNldElzUHJpdmF0ZU1ldGhvZCgpOworICAgIGVudHJ5LnNldElz
Q29uc3QoKTsKKyAgICBlbnRyeS5zZXRJc0NhcHR1cmVkKCk7CisgICAgbV9tYXAuYWRkKGlkZW50
aWZpZXIsIGVudHJ5KTsKKworICAgIC8vIGl0IHdhcyBwcmV2aW91c2x5IHVzZWQsIG1hcmsgaXQg
YXMgZGVjbGFyZWQuCisgICAgUHJpdmF0ZU5hbWVFbnRyeSBtZXRhKFByaXZhdGVOYW1lRW50cnk6
OlRyYWl0czo6SXNEZWNsYXJlZCB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNVc2VkIHwg
UHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc01ldGhvZCk7CisgICAgYXV0byBhZGRSZXN1bHQg
PSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5zZXQoaWRlbnRpZmllciwgbWV0YSk7CisgICAg
cmV0dXJuICFhZGRSZXN1bHQuaXNOZXdFbnRyeTsKK30KKwogQ29tcGFjdFZhcmlhYmxlRW52aXJv
bm1lbnQ6OkNvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50KGNvbnN0IFZhcmlhYmxlRW52aXJvbm1l
bnQmIGVudikKICAgICA6IG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQoZW52LmlzRXZlcnl0aGluZ0Nh
cHR1cmVkKCkpCiB7CkBAIC0xMjAsNiArMTU1LDI1IEBAIENvbXBhY3RWYXJpYWJsZUVudmlyb25t
ZW50OjpDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudChjb25zdCBWYXJpYWJsZUVudmlyb25tZW50
CiAgICAgfSk7CiAKICAgICBtX2hhc2ggPSAwOworICAgIGlmIChlbnYucHJpdmF0ZU5hbWVzU2l6
ZSgpKSB7CisgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8VW5pcXVlZFN0cmluZ0ltcGwqLCBQcml2
YXRlTmFtZUVudHJ5PiwgMTY+IHNvcnRlZFByaXZhdGVFbnRyaWVzOworICAgICAgICBzb3J0ZWRQ
cml2YXRlRW50cmllcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGVudi5wcml2YXRlTmFtZXNTaXpl
KCkpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVudHJpZXMgOiBlbnYucHJpdmF0ZU5hbWVz
KCkpCisgICAgICAgICAgICBzb3J0ZWRQcml2YXRlRW50cmllcy5hcHBlbmQoe2VudHJpZXMua2V5
LmdldCgpLCBlbnRyaWVzLnZhbHVlfSk7CisKKyAgICAgICAgc3RkOjpzb3J0KHNvcnRlZFByaXZh
dGVFbnRyaWVzLmJlZ2luKCksIHNvcnRlZFByaXZhdGVFbnRyaWVzLmVuZCgpLCBbXSAoY29uc3Qg
YXV0byYgYSwgY29uc3QgYXV0byYgYikgeworICAgICAgICAgICAgcmV0dXJuIGEuZmlyc3QgPCBi
LmZpcnN0OworICAgICAgICB9KTsKKworICAgICAgICBtX3ByaXZhdGVBY2Nlc3NOYW1lcy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KGVudi5wcml2YXRlTmFtZXNTaXplKCkpOworICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIHBhaXIgOiBzb3J0ZWRQcml2YXRlRW50cmllcykgeworICAgICAgICAgICAg
bV9wcml2YXRlQWNjZXNzTmFtZXMuYXBwZW5kKHBhaXIuZmlyc3QpOworICAgICAgICAgICAgbV9w
cml2YXRlTmFtZU1ldGFkYXRhLmFwcGVuZChwYWlyLnNlY29uZCk7CisgICAgICAgICAgICBtX2hh
c2ggXj0gcGFpci5maXJzdC0+aGFzaCgpOworICAgICAgICAgICAgbV9oYXNoICs9IHBhaXIuc2Vj
b25kLmJpdHMoKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIG1fdmFyaWFibGVzLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkoc29ydGVkRW50cmllcy5zaXplKCkpOwogICAgIG1fdmFyaWFibGVNZXRh
ZGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNvcnRlZEVudHJpZXMuc2l6ZSgpKTsKICAgICBm
b3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBzb3J0ZWRFbnRyaWVzKSB7CkBAIC0xNDMsNiArMTk3LDEw
IEBAIGJvb2wgQ29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQ6Om9wZXJhdG9yPT0oY29uc3QgQ29t
cGFjdFZhcmlhYmxlRW52aXJvbm1lbnQmIG90CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
ZiAobV92YXJpYWJsZU1ldGFkYXRhICE9IG90aGVyLm1fdmFyaWFibGVNZXRhZGF0YSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX3ByaXZhdGVBY2Nlc3NOYW1lcyAhPSBvdGhlci5t
X3ByaXZhdGVBY2Nlc3NOYW1lcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX3By
aXZhdGVOYW1lTWV0YWRhdGEgIT0gb3RoZXIubV9wcml2YXRlTmFtZU1ldGFkYXRhKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE1Niw2ICsyMTQsMTIg
QEAgVmFyaWFibGVFbnZpcm9ubWVudCBDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudDo6dG9WYXJp
YWJsZUVudmlyb25tZW50KCkgY29uc3QKICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSA9IG1fdmFyaWFibGVNZXRhZGF0YVtpXTsKICAgICB9CiAKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fcHJpdmF0ZUFjY2Vzc05hbWVzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIGF1dG8g
YWRkUmVzdWx0ID0gcmVzdWx0LmFkZFByaXZhdGVOYW1lKG1fcHJpdmF0ZUFjY2Vzc05hbWVzW2ld
KTsKKyAgICAgICAgQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAgYWRkUmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1fcHJpdmF0ZU5hbWVNZXRhZGF0YVtpXTsKKyAgICB9CisK
ICAgICBpZiAobV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZCkKICAgICAgICAgcmVzdWx0Lm1hcmtBbGxW
YXJpYWJsZXNBc0NhcHR1cmVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKaW5kZXggNTU3NmM2Y2IyZjQuLmY3OWEyMWUyOTY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJv
bm1lbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJv
bm1lbnQuaApAQCAtNDQsNyArNDQsOCBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSBib29s
IGlzRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc0Z1bmN0aW9uOyB9CiAgICAg
QUxXQVlTX0lOTElORSBib29sIGlzUGFyYW1ldGVyKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYg
SXNQYXJhbWV0ZXI7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNTbG9wcHlNb2RlSG9pc3Rp
bmdDYW5kaWRhdGUoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1Nsb3BweU1vZGVIb2lzdGlu
Z0NhbmRpZGF0ZTsgfQotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1ByaXZhdGVOYW1lKCkgY29u
c3QgeyByZXR1cm4gbV9iaXRzICYgSXNQcml2YXRlTmFtZTsgfQorICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBpc1ByaXZhdGVGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzUHJpdmF0ZUZp
ZWxkOyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzUHJpdmF0ZU1ldGhvZCgpIGNvbnN0IHsg
cmV0dXJuIG1fYml0cyAmIElzUHJpdmF0ZU1ldGhvZDsgfQogCiAgICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldElzQ2FwdHVyZWQoKSB7IG1fYml0cyB8PSBJc0NhcHR1cmVkOyB9CiAgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldElzQ29uc3QoKSB7IG1fYml0cyB8PSBJc0NvbnN0OyB9CkBAIC01Niw3
ICs1Nyw4IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNGdW5jdGlvbigp
IHsgbV9iaXRzIHw9IElzRnVuY3Rpb247IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNQ
YXJhbWV0ZXIoKSB7IG1fYml0cyB8PSBJc1BhcmFtZXRlcjsgfQogICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXRJc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZSgpIHsgbV9iaXRzIHw9IElzU2xv
cHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlOyB9Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElz
UHJpdmF0ZU5hbWUoKSB7IG1fYml0cyB8PSBJc1ByaXZhdGVOYW1lOyB9CisgICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldElzUHJpdmF0ZUZpZWxkKCkgeyBtX2JpdHMgfD0gSXNQcml2YXRlRmllbGQ7
IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNQcml2YXRlTWV0aG9kKCkgeyBtX2JpdHMg
fD0gSXNQcml2YXRlTWV0aG9kOyB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY2xlYXJJc1Zh
cigpIHsgbV9iaXRzICY9IH5Jc1ZhcjsgfQogCkBAIC03OSw3ICs4MSw4IEBAIHByaXZhdGU6CiAg
ICAgICAgIElzRnVuY3Rpb24gPSAxIDw8IDcsCiAgICAgICAgIElzUGFyYW1ldGVyID0gMSA8PCA4
LAogICAgICAgICBJc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZSA9IDEgPDwgOSwKLSAgICAg
ICAgSXNQcml2YXRlTmFtZSA9IDEgPDwgMTAsCisgICAgICAgIElzUHJpdmF0ZUZpZWxkID0gMSA8
PCAxMCwKKyAgICAgICAgSXNQcml2YXRlTWV0aG9kID0gMSA8PCAxMSwKICAgICB9OwogICAgIHVp
bnQxNl90IG1fYml0cyB7IDAgfTsKIH07CkBAIC04OSwxMSArOTIsMTYgQEAgc3RydWN0IFZhcmlh
YmxlRW52aXJvbm1lbnRFbnRyeUhhc2hUcmFpdHMgOiBIYXNoVHJhaXRzPFZhcmlhYmxlRW52aXJv
bm1lbnRFbnRyeT4KIH07CiAKIHN0cnVjdCBQcml2YXRlTmFtZUVudHJ5IHsKKyAgICBmcmllbmQg
Y2xhc3MgQ2FjaGVkUHJpdmF0ZU5hbWVFbnRyeTsKKwogcHVibGljOgogICAgIFByaXZhdGVOYW1l
RW50cnkodWludDE2X3QgdHJhaXRzID0gMCkgeyBtX2JpdHMgPSB0cmFpdHM7IH0KIAogICAgIEFM
V0FZU19JTkxJTkUgYm9vbCBpc1VzZWQoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1VzZWQ7
IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNEZWNsYXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
Yml0cyAmIElzRGVjbGFyZWQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNNZXRob2QoKSBj
b25zdCB7IHJldHVybiBtX2JpdHMgJiBJc01ldGhvZDsgfQorCisgICAgYm9vbCBpc1ByaXZhdGVB
Y2Nlc3MoKSBjb25zdCB7IHJldHVybiBpc01ldGhvZCgpOyB9CiAKICAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0SXNVc2VkKCkgeyBtX2JpdHMgfD0gSXNVc2VkOyB9CiAgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldElzRGVjbGFyZWQoKSB7IG1fYml0cyB8PSBJc0RlY2xhcmVkOyB9CkBAIC0xMDYs
OCArMTE0LDEwIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBlbnVtIFRyYWl0cyA6IHVpbnQxNl90
IHsKKyAgICAgICAgTm9uZSA9IDAsCiAgICAgICAgIElzVXNlZCA9IDEgPDwgMCwKICAgICAgICAg
SXNEZWNsYXJlZCA9IDEgPDwgMSwKKyAgICAgICAgSXNNZXRob2QgPSAxIDw8IDIsCiAgICAgfTsK
IAogcHJpdmF0ZToKQEAgLTEyMSw4ICsxMzEsMTAgQEAgc3RydWN0IFByaXZhdGVOYW1lRW50cnlI
YXNoVHJhaXRzIDogSGFzaFRyYWl0czxQcml2YXRlTmFtZUVudHJ5PiB7CiBjbGFzcyBWYXJpYWJs
ZUVudmlyb25tZW50IHsKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlx
dWVkU3RyaW5nSW1wbD4sIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSwgSWRlbnRpZmllclJlcEhh
c2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFZhcmlhYmxlRW52aXJv
bm1lbnRFbnRyeUhhc2hUcmFpdHM+IE1hcDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVu
aXF1ZWRTdHJpbmdJbXBsPiwgUHJpdmF0ZU5hbWVFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhh
c2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnlIYXNo
VHJhaXRzPiBQcml2YXRlTmFtZXM7CisgICAgCiBwdWJsaWM6CisgICAgdHlwZWRlZiBIYXNoTWFw
PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIFByaXZhdGVOYW1lRW50cnksIElkZW50aWZpZXJS
ZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+LCBQcml2YXRlTmFt
ZUVudHJ5SGFzaFRyYWl0cz4gUHJpdmF0ZU5hbWVzOworCiAgICAgVmFyaWFibGVFbnZpcm9ubWVu
dCgpCiAgICAgeyB9CiAgICAgVmFyaWFibGVFbnZpcm9ubWVudChWYXJpYWJsZUVudmlyb25tZW50
JiYgb3RoZXIpCkBAIC0xNDMsNiArMTU1LDE2IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5F
IE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuZW5kKCk7IH0K
ICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6QWRkUmVzdWx0IGFkZChjb25zdCBSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKSB7IHJldHVybiBtX21hcC5hZGQoaWRlbnRpZmllciwg
VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCkpOyB9CiAgICAgQUxXQVlTX0lOTElORSBNYXA6OkFk
ZFJlc3VsdCBhZGQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyByZXR1cm4gYWRkKGlk
ZW50aWZpZXIuaW1wbCgpKTsgfQorCisgICAgQUxXQVlTX0lOTElORSBQcml2YXRlTmFtZXM6OkFk
ZFJlc3VsdCBhZGRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJl
dHVybiBhZGRQcml2YXRlTmFtZShpZGVudGlmaWVyLmltcGwoKSk7IH0KKyAgICBBTFdBWVNfSU5M
SU5FIFByaXZhdGVOYW1lczo6QWRkUmVzdWx0IGFkZFByaXZhdGVOYW1lKGNvbnN0IFJlZlB0cjxV
bmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCisgICAgeworICAgICAgICBpZiAoIW1fcmFy
ZURhdGEpCisgICAgICAgICAgICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxWYXJpYWJs
ZUVudmlyb25tZW50OjpSYXJlRGF0YT4oKTsKKworICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+
bV9wcml2YXRlTmFtZXMuYWRkKGlkZW50aWZpZXIsIFByaXZhdGVOYW1lRW50cnkoKSk7CisgICAg
fQorCiAgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9t
YXAuc2l6ZSgpICsgcHJpdmF0ZU5hbWVzU2l6ZSgpOyB9CiAgICAgQUxXQVlTX0lOTElORSB1bnNp
Z25lZCBtYXBTaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuc2l6ZSgpOyB9CiAgICAgQUxXQVlT
X0lOTElORSBib29sIGNvbnRhaW5zKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlk
ZW50aWZpZXIpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmNvbnRhaW5zKGlkZW50aWZpZXIpOyB9CkBA
IC0xNjMsMTUgKzE4NSwxOCBAQCBwdWJsaWM6CiAKICAgICB0eXBlZGVmIFdURjo6SXRlcmF0b3JS
YW5nZTxQcml2YXRlTmFtZXM6Oml0ZXJhdG9yPiBQcml2YXRlTmFtZXNSYW5nZTsKIAotICAgIEFM
V0FZU19JTkxJTkUgTWFwOjpBZGRSZXN1bHQgZGVjbGFyZVByaXZhdGVOYW1lKGNvbnN0IElkZW50
aWZpZXImIGlkZW50aWZpZXIpIHsgcmV0dXJuIGRlY2xhcmVQcml2YXRlTmFtZShpZGVudGlmaWVy
LmltcGwoKSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIE1hcDo6QWRkUmVzdWx0IGRlY2xhcmVQcml2
YXRlRmllbGQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyByZXR1cm4gZGVjbGFyZVBy
aXZhdGVGaWVsZChpZGVudGlmaWVyLmltcGwoKSk7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
dXNlUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyB1c2VQcml2YXRl
TmFtZShpZGVudGlmaWVyLmltcGwoKSk7IH0KIAotICAgIE1hcDo6QWRkUmVzdWx0IGRlY2xhcmVQ
cml2YXRlTmFtZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQor
ICAgIGJvb2wgZGVjbGFyZVByaXZhdGVNZXRob2QoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmll
cikgeyByZXR1cm4gZGVjbGFyZVByaXZhdGVNZXRob2QoaWRlbnRpZmllci5pbXBsKCkpOyB9Cisg
ICAgYm9vbCBkZWNsYXJlUHJpdmF0ZU1ldGhvZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0lt
cGw+JiBpZGVudGlmaWVyKTsKKworICAgIE1hcDo6QWRkUmVzdWx0IGRlY2xhcmVQcml2YXRlRmll
bGQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikKICAgICB7CiAg
ICAgICAgIGF1dG8mIG1ldGEgPSBnZXRPckFkZFByaXZhdGVOYW1lKGlkZW50aWZpZXIuZ2V0KCkp
OwogICAgICAgICBtZXRhLnNldElzRGVjbGFyZWQoKTsKICAgICAgICAgYXV0byBlbnRyeSA9IFZh
cmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpOwotICAgICAgICBlbnRyeS5zZXRJc1ByaXZhdGVOYW1l
KCk7CisgICAgICAgIGVudHJ5LnNldElzUHJpdmF0ZUZpZWxkKCk7CiAgICAgICAgIGVudHJ5LnNl
dElzQ29uc3QoKTsKICAgICAgICAgZW50cnkuc2V0SXNDYXB0dXJlZCgpOwogICAgICAgICByZXR1
cm4gbV9tYXAuYWRkKGlkZW50aWZpZXIsIGVudHJ5KTsKQEAgLTE5Nyw2ICsyMjIsMTkgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuc2l6ZSgpOwog
ICAgIH0KIAorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBoYXNQcml2YXRlQWNjZXNzKCkgY29uc3QK
KyAgICB7CisgICAgICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiBwcml2YXRlTmFtZXMoKSkgeworICAgICAg
ICAgICAgaWYgKGVudHJ5LnZhbHVlLmlzUHJpdmF0ZUFjY2VzcygpKQorICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KwogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBoYXNQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVy
JiBpZGVudGlmaWVyKQogICAgIHsKICAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQpAQCAtMjgxLDYg
KzMxOSw5IEBAIHByaXZhdGU6CiAKICAgICBWZWN0b3I8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBs
Pj4gbV92YXJpYWJsZXM7CiAgICAgVmVjdG9yPFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeT4gbV92
YXJpYWJsZU1ldGFkYXRhOworICAgIFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiBt
X3ByaXZhdGVBY2Nlc3NOYW1lczsKKyAgICBWZWN0b3I8UHJpdmF0ZU5hbWVFbnRyeT4gbV9wcml2
YXRlTmFtZU1ldGFkYXRhOworCiAgICAgdW5zaWduZWQgbV9oYXNoOwogICAgIGJvb2wgbV9pc0V2
ZXJ5dGhpbmdDYXB0dXJlZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DYWNoZWRUeXBlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
YWNoZWRUeXBlcy5jcHAKaW5kZXggYjI0YmQwMzZmY2YuLjAzZGM4YjlhZGE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCkBAIC0xMTQ0LDcgKzEx
NDQsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIENhY2hlZEhhc2hTZXQ8Q2Fj
aGVkUmVmUHRyPENhY2hlZFVuaXF1ZWRTdHJpbmdJbXBsPiwgSWRlbnRpZmllclJlcEhhc2g+IG1f
cHJpdmF0ZU5hbWVzOworICAgIENhY2hlZEhhc2hNYXA8Q2FjaGVkUmVmUHRyPENhY2hlZFVuaXF1
ZWRTdHJpbmdJbXBsPiwgUHJpdmF0ZU5hbWVFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hU
cmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnlIYXNoVHJh
aXRzPiBtX3ByaXZhdGVOYW1lczsKIH07CiAKIGNsYXNzIENhY2hlZFN5bWJvbFRhYmxlIDogcHVi
bGljIENhY2hlZE9iamVjdDxTeW1ib2xUYWJsZT4gewpAQCAtMTY5OSwyMSArMTY5OSwyMSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OlJhcmVEYXRhJiByYXJlRGF0YSkKICAgICB7CiAgICAgICAgIG1f
Y2xhc3NTb3VyY2UuZW5jb2RlKGVuY29kZXIsIHJhcmVEYXRhLm1fY2xhc3NTb3VyY2UpOwotICAg
ICAgICBtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzLmVuY29kZShlbmNvZGVyLCByYXJlRGF0YS5t
X3BhcmVudFNjb3BlVERaVmFyaWFibGVzKTsKKyAgICAgICAgbV9wYXJlbnRTY29wZVZhcmlhYmxl
RW52aXJvbm1lbnQuZW5jb2RlKGVuY29kZXIsIHJhcmVEYXRhLm1fcGFyZW50U2NvcGVWYXJpYWJs
ZUVudmlyb25tZW50KTsKICAgICB9CiAKICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
UmFyZURhdGEqIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKSBjb25zdAogICAgIHsKICAgICAgICAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlJhcmVEYXRhKiByYXJlRGF0YSA9IG5ldyBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6UmFyZURhdGEgeyB9OwogICAgICAgICBtX2NsYXNzU291
cmNlLmRlY29kZShkZWNvZGVyLCByYXJlRGF0YS0+bV9jbGFzc1NvdXJjZSk7Ci0gICAgICAgIGF1
dG8gcGFyZW50U2NvcGVURFpWYXJpYWJsZXMgPSBtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzLmRl
Y29kZShkZWNvZGVyKTsKLSAgICAgICAgcmFyZURhdGEtPm1fcGFyZW50U2NvcGVURFpWYXJpYWJs
ZXMgPSBXVEZNb3ZlKHBhcmVudFNjb3BlVERaVmFyaWFibGVzKTsKKyAgICAgICAgYXV0byBwYXJl
bnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQgPSBtX3BhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9u
bWVudC5kZWNvZGUoZGVjb2Rlcik7CisgICAgICAgIHJhcmVEYXRhLT5tX3BhcmVudFNjb3BlVmFy
aWFibGVFbnZpcm9ubWVudCA9IFdURk1vdmUocGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50
KTsKICAgICAgICAgcmV0dXJuIHJhcmVEYXRhOwogICAgIH0KIAogcHJpdmF0ZToKICAgICBDYWNo
ZWRTb3VyY2VDb2RlV2l0aG91dFByb3ZpZGVyIG1fY2xhc3NTb3VyY2U7Ci0gICAgQ2FjaGVkQ29t
cGFjdFZhcmlhYmxlTWFwSGFuZGxlIG1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7CisgICAgQ2Fj
aGVkQ29tcGFjdFZhcmlhYmxlTWFwSGFuZGxlIG1fcGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25t
ZW50OwogfTsKIAogY2xhc3MgQ2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlIDogcHVibGljIENhY2hl
ZE9iamVjdDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4gewpAQCAtMTc0OSw2ICsxNzQ5LDcg
QEAgcHVibGljOgogICAgIHVuc2lnbmVkIHN1cGVyQmluZGluZygpIGNvbnN0IHsgcmV0dXJuIG1f
c3VwZXJCaW5kaW5nOyB9CiAgICAgdW5zaWduZWQgZGVyaXZlZENvbnRleHRUeXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9kZXJpdmVkQ29udGV4dFR5cGU7IH0KICAgICB1bnNpZ25lZCBjbGFzc0ZpZWxk
c0luaXRpYWxpemVyKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc0ZpZWxkc0luaXRpYWxpemVyOyB9
CisgICAgdW5zaWduZWQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBt
X3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50OyB9CiAKICAgICBJZGVudGlmaWVyIG5hbWUoRGVjb2Rl
ciYgZGVjb2RlcikgY29uc3QgeyByZXR1cm4gbV9uYW1lLmRlY29kZShkZWNvZGVyKTsgfQogICAg
IElkZW50aWZpZXIgZWNtYU5hbWUoRGVjb2RlciYgZGVjb2RlcikgY29uc3QgeyByZXR1cm4gbV9l
Y21hTmFtZS5kZWNvZGUoZGVjb2Rlcik7IH0KQEAgLTE3ODMsNiArMTc4NCw3IEBAIHByaXZhdGU6
CiAgICAgdW5zaWduZWQgbV9mdW5jdGlvbk1vZGUgOiAyOyAvLyBGdW5jdGlvbk1vZGUKICAgICB1
bnNpZ25lZCBtX2Rlcml2ZWRDb250ZXh0VHlwZTogMjsKICAgICB1bnNpZ25lZCBtX2NsYXNzRmll
bGRzSW5pdGlhbGl6ZXIgOiAxOworICAgIHVuc2lnbmVkIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQgOiAxOwogCiAgICAgQ2FjaGVkUHRyPENhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZVJhcmVEYXRh
PiBtX3JhcmVEYXRhOwogCkBAIC0xODM2LDYgKzE4MzgsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWdu
ZWQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gbV9jb25zdHJ1Y3RvcktpbmQ7IH0K
ICAgICB1bnNpZ25lZCBkZXJpdmVkQ29udGV4dFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2Rlcml2
ZWRDb250ZXh0VHlwZTsgfQogICAgIHVuc2lnbmVkIGNsYXNzRmllbGRzSW5pdGlhbGl6ZXIoKSBj
b25zdCB7IHJldHVybiBtX2NsYXNzRmllbGRzSW5pdGlhbGl6ZXI7IH0KKyAgICB1bnNpZ25lZCBw
cml2YXRlQnJhbmRSZXF1aXJlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQ7IH0KICAgICB1bnNpZ25lZCBldmFsQ29udGV4dFR5cGUoKSBjb25zdCB7IHJldHVy
biBtX2V2YWxDb250ZXh0VHlwZTsgfQogICAgIHVuc2lnbmVkIGhhc1RhaWxDYWxscygpIGNvbnN0
IHsgcmV0dXJuIG1faGFzVGFpbENhbGxzOyB9CiAgICAgdW5zaWduZWQgbGluZUNvdW50KCkgY29u
c3QgeyByZXR1cm4gbV9saW5lQ291bnQ7IH0KQEAgLTE4NjksNiArMTg3Miw3IEBAIHByaXZhdGU6
CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZGVy
aXZlZENvbnRleHRUeXBlIDogMjsKICAgICB1bnNpZ25lZCBtX2NsYXNzRmllbGRzSW5pdGlhbGl6
ZXIgOiAxOworICAgIHVuc2lnbmVkIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgOiAxOwogICAg
IHVuc2lnbmVkIG1fZXZhbENvbnRleHRUeXBlIDogMjsKICAgICB1bnNpZ25lZCBtX2hhc1RhaWxD
YWxscyA6IDE7CiAgICAgdW5zaWduZWQgbV9jb2RlVHlwZSA6IDI7CkBAIC0yMDY2LDYgKzIwNzAs
NyBAQCBBTFdBWVNfSU5MSU5FIFVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayhE
ZWNvZGVyJiBkZWNvZGVyLCBTdHJ1Y3R1cmUqCiAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChjYWNo
ZWRDb2RlQmxvY2suY29uc3RydWN0b3JLaW5kKCkpCiAgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlw
ZShjYWNoZWRDb2RlQmxvY2suZGVyaXZlZENvbnRleHRUeXBlKCkpCiAgICAgLCBtX2NsYXNzRmll
bGRzSW5pdGlhbGl6ZXIoY2FjaGVkQ29kZUJsb2NrLmNsYXNzRmllbGRzSW5pdGlhbGl6ZXIoKSkK
KyAgICAsIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoY2FjaGVkQ29kZUJsb2NrLnByaXZhdGVC
cmFuZFJlcXVpcmVtZW50KCkpCiAgICAgLCBtX2V2YWxDb250ZXh0VHlwZShjYWNoZWRDb2RlQmxv
Y2suZXZhbENvbnRleHRUeXBlKCkpCiAgICAgLCBtX2NvZGVUeXBlKGNhY2hlZENvZGVCbG9jay5j
b2RlVHlwZSgpKQogCkBAIC0yMTUyLDYgKzIxNTcsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgQ2Fj
aGVkRnVuY3Rpb25FeGVjdXRhYmxlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVW5s
aQogICAgIG1fc3VwZXJCaW5kaW5nID0gZXhlY3V0YWJsZS5tX3N1cGVyQmluZGluZzsKICAgICBt
X2Rlcml2ZWRDb250ZXh0VHlwZSA9IGV4ZWN1dGFibGUubV9kZXJpdmVkQ29udGV4dFR5cGU7CiAg
ICAgbV9jbGFzc0ZpZWxkc0luaXRpYWxpemVyID0gZXhlY3V0YWJsZS5tX2NsYXNzRmllbGRzSW5p
dGlhbGl6ZXI7CisgICAgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9IGV4ZWN1dGFibGUubV9w
cml2YXRlQnJhbmRSZXF1aXJlbWVudDsKIAogICAgIG1fcmFyZURhdGEuZW5jb2RlKGVuY29kZXIs
IGV4ZWN1dGFibGUubV9yYXJlRGF0YS5nZXQoKSk7CiAKQEAgLTIxOTAsNiArMjE5Niw3IEBAIEFM
V0FZU19JTkxJTkUgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKERlY29kZXImIGRlCiAgICAgLCBtX3N1cGVyQmluZGluZyhjYWNoZWRFeGVjdXRh
YmxlLnN1cGVyQmluZGluZygpKQogICAgICwgbV9wYXJhbWV0ZXJzU3RhcnRPZmZzZXQoY2FjaGVk
RXhlY3V0YWJsZS5wYXJhbWV0ZXJzU3RhcnRPZmZzZXQoKSkKICAgICAsIG1fY2xhc3NGaWVsZHNJ
bml0aWFsaXplcihjYWNoZWRFeGVjdXRhYmxlLmNsYXNzRmllbGRzSW5pdGlhbGl6ZXIoKSkKKyAg
ICAsIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoY2FjaGVkRXhlY3V0YWJsZS5wcml2YXRlQnJh
bmRSZXF1aXJlbWVudCgpKQogICAgICwgbV9pc0NhY2hlZChmYWxzZSkKICAgICAsIG1fdHlwZVBy
b2ZpbGluZ1N0YXJ0T2Zmc2V0KGNhY2hlZEV4ZWN1dGFibGUudHlwZVByb2ZpbGluZ1N0YXJ0T2Zm
c2V0KCkpCiAgICAgLCBtX3R5cGVQcm9maWxpbmdFbmRPZmZzZXQoY2FjaGVkRXhlY3V0YWJsZS50
eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkpCkBAIC0yMjU1LDYgKzIyNjIsNyBAQCBBTFdBWVNfSU5M
SU5FIHZvaWQgQ2FjaGVkQ29kZUJsb2NrPENvZGVCbG9ja1R5cGU+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29ucwogICAgIG1fY29uc3RydWN0b3JLaW5kID0gY29kZUJsb2NrLm1fY29uc3Ry
dWN0b3JLaW5kOwogICAgIG1fZGVyaXZlZENvbnRleHRUeXBlID0gY29kZUJsb2NrLm1fZGVyaXZl
ZENvbnRleHRUeXBlOwogICAgIG1fY2xhc3NGaWVsZHNJbml0aWFsaXplciA9IGNvZGVCbG9jay5t
X2NsYXNzRmllbGRzSW5pdGlhbGl6ZXI7CisgICAgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9
IGNvZGVCbG9jay5tX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50OwogICAgIG1fZXZhbENvbnRleHRU
eXBlID0gY29kZUJsb2NrLm1fZXZhbENvbnRleHRUeXBlOwogICAgIG1fbGluZUNvdW50ID0gY29k
ZUJsb2NrLm1fbGluZUNvdW50OwogICAgIG1fZW5kQ29sdW1uID0gY29kZUJsb2NrLm1fZW5kQ29s
dW1uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXgg
ZjBmZmZiYjI0MDcuLjkxMzBiYmMzNzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvZGVDYWNoZS5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogQ29kZUNhY2hlOjpnZXRVbmxpbmtlZEdsb2JhbEZ1bmN0aW9uRXhlY3V0YWJsZShW
TSYgdgogICAgIC8vIFRoZSBGdW5jdGlvbiBjb25zdHJ1Y3RvciBvbmx5IGhhcyBhY2Nlc3MgdG8g
Z2xvYmFsIHZhcmlhYmxlcywgc28gbm8gdmFyaWFibGVzIHdpbGwgYmUgdW5kZXIgVERaIHVubGVz
cyB0aGV5J3JlCiAgICAgLy8gaW4gdGhlIGdsb2JhbCBsZXhpY2FsIGVudmlyb25tZW50LCB3aGlj
aCB3ZSBhbHdheXMgVERaIGNoZWNrIGFjY2Vzc2VzIGZyb20uCiAgICAgQ29uc3RydWN0QWJpbGl0
eSBjb25zdHJ1Y3RBYmlsaXR5ID0gY29uc3RydWN0QWJpbGl0eUZvclBhcnNlTW9kZShtZXRhZGF0
YS0+cGFyc2VNb2RlKCkpOwotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlv
bkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBzb3Vy
Y2UsIG1ldGFkYXRhLCBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCBK
U1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIFdURjo6bnVsbG9wdCwgRGVyaXZlZENvbnRleHRU
eXBlOjpOb25lLCBDbGFzc0ZpZWxkc0luaXRpYWxpemVyOjpOb3ROZWVkZWQpOworICAgIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBzb3VyY2UsIG1ldGFkYXRhLCBVbmxpbmtlZE5vcm1h
bEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMs
IFdURjo6bnVsbG9wdCwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBDbGFzc0ZpZWxkc0luaXRp
YWxpemVyOjpOb3ROZWVkZWQsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lKTsKIAogICAg
IGlmICghc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZVVSTERpcmVjdGl2ZSgpLmlzTnVsbCgpKQog
ICAgICAgICBmdW5jdGlvbkV4ZWN1dGFibGUtPnNldFNvdXJjZVVSTERpcmVjdGl2ZShzb3VyY2Uu
cHJvdmlkZXIoKS0+c291cmNlVVJMRGlyZWN0aXZlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db2RlQ2FjaGUuaAppbmRleCAwY2Y0NGVkZjA3YS4uZjg3NDY2NWE3YWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCkBAIC0yNzEsNiArMjcxLDE4
IEBAIGlubGluZSBDbGFzc0ZpZWxkc0luaXRpYWxpemVyIGNsYXNzRmllbGRzSW5pdGlhbGl6ZXI8
RGlyZWN0RXZhbEV4ZWN1dGFibGU+KERpcmVjCiAgICAgcmV0dXJuIGV4ZWN1dGFibGUtPmNsYXNz
RmllbGRzSW5pdGlhbGl6ZXIoKTsKIH0KIAordGVtcGxhdGUgPGNsYXNzIEV4ZWN1dGFibGVUeXBl
PgoraW5saW5lIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50
KEV4ZWN1dGFibGVUeXBlKikKK3sKKyAgICByZXR1cm4gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6
Ok5vbmU7Cit9CisKK3RlbXBsYXRlIDw+CitpbmxpbmUgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQg
cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ8RGlyZWN0RXZhbEV4ZWN1dGFibGU+KERpcmVjdEV2YWxF
eGVjdXRhYmxlKiBleGVjdXRhYmxlKQoreworICAgIHJldHVybiBleGVjdXRhYmxlLT5wcml2YXRl
QnJhbmRSZXF1aXJlbWVudCgpOworfQorCiB0ZW1wbGF0ZSA8Y2xhc3MgVW5saW5rZWRDb2RlQmxv
Y2tUeXBlLCBjbGFzcyBFeGVjdXRhYmxlVHlwZSA9IFNjcmlwdEV4ZWN1dGFibGU+CiBVbmxpbmtl
ZENvZGVCbG9ja1R5cGUqIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsKFZNJiB2bSwgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgSlNQ
YXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+
IGNvZGVHZW5lcmF0aW9uTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yLCBFdmFsQ29udGV4dFR5cGUg
ZXZhbENvbnRleHRUeXBlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBi
b29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHZh
cmlhYmxlc1VuZGVyVERaLCBFeGVjdXRhYmxlVHlwZSogZXhlY3V0YWJsZSA9IG51bGxwdHIpCiB7
CkBAIC0yOTEsNyArMzAzLDcgQEAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBnZW5lcmF0ZVVubGlu
a2VkQ29kZUJsb2NrSW1wbChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHMKIAogICAgIGJvb2wg
dXNlc0V2YWwgPSByb290Tm9kZS0+ZmVhdHVyZXMoKSAmIEV2YWxGZWF0dXJlOwogICAgIGJvb2wg
aXNTdHJpY3RNb2RlID0gcm9vdE5vZGUtPmZlYXR1cmVzKCkgJiBTdHJpY3RNb2RlRmVhdHVyZTsK
LSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbyh1c2VzRXZhbCwgaXNTdHJpY3RNb2Rl
LCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgc2NyaXB0TW9kZSwgU3VwZXJC
aW5kaW5nOjpOb3ROZWVkZWQsIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFy
c2VNb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUsIGNsYXNzRmllbGRzSW5pdGlhbGl6ZXIoZXhlY3V0
YWJsZSksIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGZhbHNlLCBldmFsQ29udGV4dFR5cGUpOwor
ICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsLCBpc1N0cmljdE1vZGUs
IGZhbHNlLCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudChleGVjdXRhYmxlKSwgZmFsc2UsIENvbnN0
cnVjdG9yS2luZDo6Tm9uZSwgc2NyaXB0TW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIENh
Y2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBkZXJpdmVkQ29udGV4
dFR5cGUsIGNsYXNzRmllbGRzSW5pdGlhbGl6ZXIoZXhlY3V0YWJsZSksIGlzQXJyb3dGdW5jdGlv
bkNvbnRleHQsIGZhbHNlLCBldmFsQ29udGV4dFR5cGUpOwogCiAgICAgVW5saW5rZWRDb2RlQmxv
Y2tUeXBlKiB1bmxpbmtlZENvZGVCbG9jayA9IFVubGlua2VkQ29kZUJsb2NrVHlwZTo6Y3JlYXRl
KHZtLCBleGVjdXRhYmxlSW5mbywgY29kZUdlbmVyYXRpb25Nb2RlKTsKICAgICB1bmxpbmtlZENv
ZGVCbG9jay0+cmVjb3JkUGFyc2Uocm9vdE5vZGUtPmZlYXR1cmVzKCksIHJvb3ROb2RlLT5oYXND
YXB0dXJlZFZhcmlhYmxlcygpLCBsaW5lQ291bnQsIHVubGlua2VkRW5kQ29sdW1uKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxl
LmNwcAppbmRleCBhODhkMzE5NjNmZC4uMWFmNjJmNDI2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKQEAgLTM1
LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLURpcmVjdEV2YWxFeGVjdXRhYmxlKiBE
aXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNl
Q29kZSYgc291cmNlLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUg
ZGVyaXZlZENvbnRleHRUeXBlLCBDbGFzc0ZpZWxkc0luaXRpYWxpemVyIGNsYXNzRmllbGRzSW5p
dGlhbGl6ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBlIGV2
YWxDb250ZXh0VHlwZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJU
RFopCitEaXJlY3RFdmFsRXhlY3V0YWJsZSogRGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpc0luU3RyaWN0
Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgQ2xhc3NGaWVs
ZHNJbml0aWFsaXplciBjbGFzc0ZpZWxkc0luaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJl
bWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0
LCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlLCBjb25zdCBWYXJpYWJsZUVudmlyb25t
ZW50KiB2YXJpYWJsZXNVbmRlclREWikKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTQ2LDcgKzQ2LDcgQEAg
RGlyZWN0RXZhbEV4ZWN1dGFibGUqIERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBTb3VyY2UKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAg
YXV0byogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERpcmVjdEV2YWxF
eGVjdXRhYmxlPih2bS5oZWFwKSkgRGlyZWN0RXZhbEV4ZWN1dGFibGUoZXhlYywgc291cmNlLCBp
c0luU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBjbGFzc0ZpZWxkc0luaXRpYWxp
emVyLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBldmFsQ29udGV4dFR5cGUpOworICAgIGF1dG8q
IGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxEaXJlY3RFdmFsRXhlY3V0
YWJsZT4odm0uaGVhcCkpIERpcmVjdEV2YWxFeGVjdXRhYmxlKGV4ZWMsIHNvdXJjZSwgaXNJblN0
cmljdENvbnRleHQsIGRlcml2ZWRDb250ZXh0VHlwZSwgY2xhc3NGaWVsZHNJbml0aWFsaXplciwg
cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGV2YWxDb250
ZXh0VHlwZSk7CiAgICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogCiAgICAgUGFy
c2VyRXJyb3IgZXJyb3I7CkBAIC03MCwxMSArNzAsMTIgQEAgRGlyZWN0RXZhbEV4ZWN1dGFibGUq
IERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3Vy
Y2UKICAgICByZXR1cm4gZXhlY3V0YWJsZTsKIH0KIAotRGlyZWN0RXZhbEV4ZWN1dGFibGU6OkRp
cmVjdEV2YWxFeGVjdXRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250
ZXh0VHlwZSwgQ2xhc3NGaWVsZHNJbml0aWFsaXplciBjbGFzc0ZpZWxkc0luaXRpYWxpemVyLCBi
b29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5
cGUpCitEaXJlY3RFdmFsRXhlY3V0YWJsZTo6RGlyZWN0RXZhbEV4ZWN1dGFibGUoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBE
ZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBDbGFzc0ZpZWxkc0luaXRpYWxp
emVyIGNsYXNzRmllbGRzSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZh
dGVCcmFuZFJlcXVpcmVtZW50LCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250
ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUpCiAgICAgOiBFdmFsRXhlY3V0YWJsZShleGVjLCBzb3Vy
Y2UsIGluU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25D
b250ZXh0LCBldmFsQ29udGV4dFR5cGUpCiB7Ci0gICAgQVNTRVJUKGNsYXNzRmllbGRzSW5pdGlh
bGl6ZXIgPT0gQ2xhc3NGaWVsZHNJbml0aWFsaXplcjo6Tm90TmVlZGVkIHx8IGRlcml2ZWRDb250
ZXh0VHlwZSA9PSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQp
OworICAgIEFTU0VSVCgoY2xhc3NGaWVsZHNJbml0aWFsaXplciA9PSBDbGFzc0ZpZWxkc0luaXRp
YWxpemVyOjpOb3ROZWVkZWQgJiYgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPT0gUHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQ6Ok5vbmUpIHx8IGRlcml2ZWRDb250ZXh0VHlwZSA9PSBEZXJpdmVkQ29u
dGV4dFR5cGU6OkRlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQpOwogICAgIG1fY2xhc3NGaWVsZHNJ
bml0aWFsaXplciA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjbGFzc0ZpZWxkc0luaXRpYWxpemVy
KTsKKyAgICBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJs
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUu
aAppbmRleCAzNTIwOGE3ZTZiNS4uNTFiNjdiNTc3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuaApAQCAtMzEsMTAgKzMx
LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBEaXJlY3RFdmFsRXhlY3V0YWJsZSBmaW5h
bCA6IHB1YmxpYyBFdmFsRXhlY3V0YWJsZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIERpcmVjdEV2
YWxFeGVjdXRhYmxlKiBjcmVhdGUoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wg
aXNJblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSwgQ2xhc3NGaWVsZHNJbml0aWFs
aXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUsIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKKyAgICBzdGF0aWMgRGlyZWN0RXZhbEV4ZWN1dGFibGUq
IGNyZWF0ZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBpc0luU3RyaWN0Q29u
dGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBDbGFzc0ZpZWxkc0luaXRpYWxpemVyLCBQcml2YXRl
QnJhbmRSZXF1aXJlbWVudCwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4
dFR5cGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKIAogcHJpdmF0ZToKLSAgICBEaXJl
Y3RFdmFsRXhlY3V0YWJsZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBpblN0
cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSwgQ2xhc3NGaWVsZHNJbml0aWFsaXplciwg
Ym9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUpOworICAgIERpcmVj
dEV2YWxFeGVjdXRhYmxlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGluU3Ry
aWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBDbGFzc0ZpZWxkc0luaXRpYWxpemVyLCBQ
cml2YXRlQnJhbmRSZXF1aXJlbWVudCwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFs
Q29udGV4dFR5cGUpOwogfTsKIAogc3RhdGljX2Fzc2VydChzaXplb2YoRGlyZWN0RXZhbEV4ZWN1
dGFibGUpID09IHNpemVvZihFdmFsRXhlY3V0YWJsZSksICIiKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oCmluZGV4IGU2NWQ3NzJlZWY3Li4zNTBi
OGIzMjFlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4
ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0
YWJsZS5oCkBAIC02MiwxMyArNjIsMTQgQEAgcHVibGljOgogCiAgICAgREVDTEFSRV9JTkZPOwog
Ci0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVj
dXRhYmxlSW5mbyh1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25z
dHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgU3VwZXJCaW5k
aW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGRlcml2ZWRDb250
ZXh0VHlwZSgpLCBjbGFzc0ZpZWxkc0luaXRpYWxpemVyKCksIGlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQoKSwgZmFsc2UsIGV2YWxDb250ZXh0VHlwZSgpKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4
ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8odXNlc0V2YWwoKSwg
aXNTdHJpY3RNb2RlKCksIGZhbHNlLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZSwgZmFs
c2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBT
dXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZGVy
aXZlZENvbnRleHRUeXBlKCksIGNsYXNzRmllbGRzSW5pdGlhbGl6ZXIoKSwgaXNBcnJvd0Z1bmN0
aW9uQ29udGV4dCgpLCBmYWxzZSwgZXZhbENvbnRleHRUeXBlKCkpOyB9CiAKICAgICB1bnNpZ25l
ZCBudW1WYXJpYWJsZXMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtVmFy
aWFibGVzKCk7IH0KICAgICB1bnNpZ25lZCBudW1GdW5jdGlvbkhvaXN0aW5nQ2FuZGlkYXRlcygp
IHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1GdW5jdGlvbkhvaXN0aW5nQ2Fu
ZGlkYXRlcygpOyB9CiAgICAgdW5zaWduZWQgbnVtVG9wTGV2ZWxGdW5jdGlvbkRlY2xzKCkgeyBy
ZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpOyB9
CiAgICAgYm9vbCBhbGxvd0RpcmVjdEV2YWxDYWNoZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5r
ZWRFdmFsQ29kZUJsb2NrLT5hbGxvd0RpcmVjdEV2YWxDYWNoZSgpOyB9CiAgICAgQ2xhc3NGaWVs
ZHNJbml0aWFsaXplciBjbGFzc0ZpZWxkc0luaXRpYWxpemVyKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8Q2xhc3NGaWVsZHNJbml0aWFsaXplcj4obV9jbGFzc0ZpZWxkc0luaXRpYWxpemVy
KTsgfQorICAgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ+KG1f
cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOyB9CiAgICAgVGVtcGxhdGVPYmplY3RNYXAmIGVuc3Vy
ZVRlbXBsYXRlT2JqZWN0TWFwKFZNJik7CiAKIHByb3RlY3RlZDoKQEAgLTgxLDYgKzgyLDcgQEAg
cHJvdGVjdGVkOgogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZp
c2l0b3ImKTsKIAogICAgIHVuc2lnbmVkIG1fY2xhc3NGaWVsZHNJbml0aWFsaXplciA6IDE7Cisg
ICAgdW5zaWduZWQgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA6IDE7CiAKICAgICBXcml0ZUJh
cnJpZXI8RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZT4gbV9ldmFsQ29kZUJsb2NrOwogICAgIFdy
aXRlQmFycmllcjxVbmxpbmtlZEV2YWxDb2RlQmxvY2s+IG1fdW5saW5rZWRFdmFsQ29kZUJsb2Nr
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVs
cGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcAppbmRleCBmODc1ZjZmMGNlZi4uMDM0YzAzODVjYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCkBAIC0zMzMsNyArMzMz
LDcgQEAgSlNPYmplY3QqIGNyZWF0ZVREWkVycm9yKEV4ZWNTdGF0ZSogZXhlYykKIAogSlNPYmpl
Y3QqIGNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAg
ICByZXR1cm4gY3JlYXRlVHlwZUVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkNhbm5vdCBhY2Nlc3Mg
aW52YWxpZCBwcml2YXRlIGZpZWxkIiksIGRlZmF1bHRTb3VyY2VBcHBlbmRlciwgVHlwZU5vdGhp
bmcpOworICAgIHJldHVybiBjcmVhdGVUeXBlRXJyb3IoZXhlYywgbWFrZVN0cmluZygiQ2Fubm90
IGFjY2VzcyBpbnZhbGlkIHByaXZhdGUgbWVtYmVyIiksIGRlZmF1bHRTb3VyY2VBcHBlbmRlciwg
VHlwZU5vdGhpbmcpOwogfQogCiBKU09iamVjdCogY3JlYXRlUmVkZWZpbmVkUHJpdmF0ZU5hbWVF
cnJvcihFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMDU5OTVkZmUwOWQuLjg4OGZkNDMxNDBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBA
IC0zMDEsNyArMzAxLDYgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY3Jl
YXRlUHJpdmF0ZVN5bWJvbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKFN5bWJvbDo6Y3JlYXRlKHZtLCBQcml2YXRlU3ltYm9sSW1wbDo6Y3JlYXRl
TnVsbFN5bWJvbCgpLmdldCgpKSk7CiB9CiAKLQogI2lmICFBU1NFUlRfRElTQUJMRUQKIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFzc2VydENhbGwoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTY29wZS5jcHAKaW5kZXggNzIzYmE3MDlhZjYuLjg0NmE1M2RjYjVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcApAQCAtMzQxLDggKzM0MSwxMyBAQCB2b2lk
IEpTU2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFooSlNTY29wZSogc2NvcGUs
IFZhcmlhYmxlRW52aXJvbm1lbgogICAgICAgICAgICAgcmVzdWx0LmFkZChpdGVyLT5rZXkpOwog
ICAgICAgICBpZiAoc3ltYm9sVGFibGUtPmhhc1ByaXZhdGVOYW1lcygpKSB7CiAgICAgICAgICAg
ICBhdXRvIHByaXZhdGVOYW1lcyA9IHN5bWJvbFRhYmxlLT5wcml2YXRlTmFtZXMoKTsKLSAgICAg
ICAgICAgIGZvciAoYXV0byBlbmQgPSBwcml2YXRlTmFtZXMuZW5kKCksIGl0ZXIgPSBwcml2YXRl
TmFtZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikKLSAgICAgICAgICAgICAgICByZXN1
bHQudXNlUHJpdmF0ZU5hbWUoKml0ZXIpOworICAgICAgICAgICAgZm9yIChhdXRvIGVuZCA9IHBy
aXZhdGVOYW1lcy5lbmQoKSwgaXRlciA9IHByaXZhdGVOYW1lcy5iZWdpbigpOyBpdGVyICE9IGVu
ZDsgKytpdGVyKSB7CisgICAgICAgICAgICAgICAgaWYgKGl0ZXItPnZhbHVlLmlzUHJpdmF0ZUFj
Y2VzcygpKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gcmVzdWx0LmFk
ZFByaXZhdGVOYW1lKGl0ZXItPmtleSk7CisgICAgICAgICAgICAgICAgICAgIGFkZFJlc3VsdC5p
dGVyYXRvci0+dmFsdWUgPSBpdGVyLT52YWx1ZTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0LnVzZVByaXZhdGVOYW1lKGl0ZXItPmtleSk7CisgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKaW5kZXggMjhmOWZlNmU1NzUuLjc4
ZjE2OWZmZWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5
bWJvbFRhYmxlT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
eW1ib2xUYWJsZU9iamVjdC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzOwogICAgIAogICAgIFN5bWJvbFRhYmxlKiBzeW1i
b2xUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ltYm9sVGFibGUuZ2V0KCk7IH0KLSAgICAKKwog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgK
aW5kZXggMGM4ZGY4ZTBjZWMuLjcxMjllZDE4NGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgKQEAgLTYzLDcg
KzYzLDcgQEAgcHVibGljOgogCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUlu
Zm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1c2VzRXZh
bCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUs
IEpTUGFyc2VyU2NyaXB0TW9kZTo6TW9kdWxlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291
cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFsdWF0ZU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBD
bGFzc0ZpZWxkc0luaXRpYWxpemVyOjpOb3ROZWVkZWQsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQo
KSwgZmFsc2UsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBl
eGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCks
IGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmUsIGZh
bHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6TW9kdWxlLCBT
dXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFsdWF0ZU1v
ZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBDbGFzc0ZpZWxkc0luaXRpYWxpemVyOjpOb3ROZWVk
ZWQsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgZmFsc2UsIEV2YWxDb250ZXh0VHlwZTo6Tm9u
ZSk7IH0KIAogICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrKCkgeyByZXR1cm4gbV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2Rl
QmxvY2suZ2V0KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvZ3JhbUV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b2dyYW1FeGVjdXRhYmxlLmgKaW5kZXggZTY5MjYwZGFhYTcuLjBhMzk2NDdkMzI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgKQEAg
LTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgICAgICAKICAgICBERUNMQVJFX0lORk87CiAKLSAg
ICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFi
bGVJbmZvKHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVj
dG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBTdXBlckJpbmRpbmc6
Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZGVyaXZlZENvbnRleHRU
eXBlKCksIENsYXNzRmllbGRzSW5pdGlhbGl6ZXI6Ok5vdE5lZWRlZCwgaXNBcnJvd0Z1bmN0aW9u
Q29udGV4dCgpLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsgfQorICAgIEV4ZWN1dGFi
bGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8odXNl
c0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6
Tm9uZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpD
bGFzc2ljLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFt
TW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIENsYXNzRmllbGRzSW5pdGlhbGl6ZXI6Ok5vdE5l
ZWRlZCwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpO
b25lKTsgfQogCiAgICAgVGVtcGxhdGVPYmplY3RNYXAmIGVuc3VyZVRlbXBsYXRlT2JqZWN0TWFw
KFZNJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJv
bC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuY3BwCmluZGV4IGM4
YmUwM2FmODI1Li44MzhiYTlmNWEyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3ltYm9sLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
eW1ib2wuY3BwCkBAIC0xMzMsNCArMTMzLDExIEBAIFN5bWJvbCogU3ltYm9sOjpjcmVhdGUoVk0m
IHZtLCBTeW1ib2xJbXBsJiB1aWQpCiAgICAgcmV0dXJuIHN5bWJvbDsKIH0KIAorU3ltYm9sKiBT
eW1ib2w6OmNyZWF0ZVByaXZhdGUoVk0mIHZtLCBQcml2YXRlU3ltYm9sSW1wbCYgdWlkKQorewor
ICAgIFN5bWJvbCogc3ltYm9sID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3ltYm9sPih2
bS5oZWFwKSkgU3ltYm9sKHZtLCB1aWQpOworICAgIHN5bWJvbC0+ZmluaXNoQ3JlYXRpb24odm0p
OworICAgIHJldHVybiBzeW1ib2w7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TeW1ib2wuaAppbmRleCAwZjBmZTZmZTkyYy4uYTI0NzNkNTZiNTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbC5oCkBAIC00OCw2ICs0OCw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgU3ltYm9sKiBjcmVhdGUoVk0mKTsKICAgICBzdGF0aWMgU3lt
Ym9sKiBjcmVhdGVXaXRoRGVzY3JpcHRpb24oVk0mLCBjb25zdCBTdHJpbmcmKTsKICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgU3ltYm9sKiBjcmVhdGUoVk0mLCBTeW1ib2xJbXBsJiB1aWQp
OworICAgIHN0YXRpYyBTeW1ib2wqIGNyZWF0ZVByaXZhdGUoVk0mLCBQcml2YXRlU3ltYm9sSW1w
bCYgdWlkKTsKIAogICAgIFByaXZhdGVOYW1lIHByaXZhdGVOYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9wcml2YXRlTmFtZTsgfQogICAgIFN0cmluZyBkZXNjcmlwdGl2ZVN0cmluZygpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCmluZGV4IDE0
NTIyYmZkNThkLi5kM2Y1NmI4MmUyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N5bWJvbFRhYmxlLmNwcApAQCAtMTg2LDcgKzE4Niw3IEBAIFN5bWJvbFRhYmxlKiBTeW1i
b2xUYWJsZTo6Y2xvbmVTY29wZVBhcnQoVk0mIHZtKQogICAgICAgICAgICAgYXV0byBpdGVyID0g
bV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYmVnaW4oKTsKICAgICAgICAgICAgIGF1dG8gZW5k
ID0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZW5kKCk7CiAgICAgICAgICAgICBmb3IgKDsg
aXRlciAhPSBlbmQ7ICsraXRlcikKLSAgICAgICAgICAgICAgICByZXN1bHQtPm1fcmFyZURhdGEt
Pm1fcHJpdmF0ZU5hbWVzLmFkZCgqaXRlcik7CisgICAgICAgICAgICAgICAgcmVzdWx0LT5tX3Jh
cmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoaXRlci0+a2V5LCBpdGVyLT52YWx1ZSk7CiAgICAg
ICAgIH0KICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TeW1ib2xUYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9s
VGFibGUuaAppbmRleCAxNzI5MWE3MjNlMC4uZThmNWNmYzQ2MjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1
ZGUgIlNjb3BlZEFyZ3VtZW50c1RhYmxlLmgiCiAjaW5jbHVkZSAiVHlwZUxvY2F0aW9uLmgiCiAj
aW5jbHVkZSAiVmFyT2Zmc2V0LmgiCisjaW5jbHVkZSAiVmFyaWFibGVFbnZpcm9ubWVudC5oIgog
I2luY2x1ZGUgIldhdGNocG9pbnQuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hUcmFpdHMuaD4KQEAgLTQ0OCw4ICs0NDksNyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBI
YXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIFJlZlB0cjxUeXBlU2V0PiwgSWRlbnRp
ZmllclJlcEhhc2g+IFVuaXF1ZVR5cGVTZXRNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFZhck9m
ZnNldCwgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4gT2Zmc2V0VG9WYXJpYWJsZU1hcDsKICAg
ICB0eXBlZGVmIFZlY3RvcjxTeW1ib2xUYWJsZUVudHJ5Kj4gTG9jYWxUb0VudHJ5VmVjOwotICAg
IHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBJZGVudGlmaWVyUmVw
SGFzaD4gUHJpdmF0ZU5hbWVTZXQ7Ci0gICAgdHlwZWRlZiBXVEY6Okl0ZXJhdG9yUmFuZ2U8dHlw
ZW5hbWUgUHJpdmF0ZU5hbWVTZXQ6Oml0ZXJhdG9yPiBQcml2YXRlTmFtZUl0ZXJhdG9yUmFuZ2U7
CisgICAgdHlwZWRlZiBXVEY6Okl0ZXJhdG9yUmFuZ2U8dHlwZW5hbWUgVmFyaWFibGVFbnZpcm9u
bWVudDo6UHJpdmF0ZU5hbWVzOjppdGVyYXRvcj4gUHJpdmF0ZU5hbWVJdGVyYXRvclJhbmdlOwog
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQpAQCAtNTk4LDcgKzU5OCw3IEBA
IHB1YmxpYzoKICAgICBib29sIGhhc1ByaXZhdGVOYW1lcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFy
ZURhdGEgJiYgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuc2l6ZSgpOyB9CiAgICAgQUxXQVlT
X0lOTElORSBQcml2YXRlTmFtZUl0ZXJhdG9yUmFuZ2UgcHJpdmF0ZU5hbWVzKCkKICAgICB7Ci0g
ICAgICAgIFByaXZhdGVOYW1lU2V0OjppdGVyYXRvciBiZWdpbiwgZW5kOworICAgICAgICBWYXJp
YWJsZUVudmlyb25tZW50OjpQcml2YXRlTmFtZXM6Oml0ZXJhdG9yIGJlZ2luLCBlbmQ7CiAgICAg
ICAgIGlmIChtX3JhcmVEYXRhKSB7CiAgICAgICAgICAgICBiZWdpbiA9IG1fcmFyZURhdGEtPm1f
cHJpdmF0ZU5hbWVzLmJlZ2luKCk7CiAgICAgICAgICAgICBlbmQgPSBtX3JhcmVEYXRhLT5tX3By
aXZhdGVOYW1lcy5lbmQoKTsKQEAgLTYwNiwxNCArNjA2LDE0IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIFByaXZhdGVOYW1lSXRlcmF0b3JSYW5nZShiZWdpbiwgZW5kKTsKICAgICB9CiAKLSAg
ICB2b2lkIGFkZFByaXZhdGVOYW1lKFVuaXF1ZWRTdHJpbmdJbXBsKiBrZXkpCisgICAgdm9pZCBh
ZGRQcml2YXRlTmFtZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBrZXksIFByaXZh
dGVOYW1lRW50cnkgdmFsdWUpCiAgICAgewogICAgICAgICBBU1NFUlQoa2V5ICYmICFrZXktPmlz
U3ltYm9sKCkpOwogICAgICAgICBpZiAoIW1fcmFyZURhdGEpCiAgICAgICAgICAgICBtX3JhcmVE
YXRhID0gV1RGOjptYWtlVW5pcXVlPFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7CiAKLSAgICAgICAg
QVNTRVJUKCFtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5jb250YWlucyhrZXkpKTsKLSAgICAg
ICAgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKGtleSk7CisgICAgICAgIEFTU0VSVCht
X3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5maW5kKGtleSkgPT0gbV9yYXJlRGF0YS0+bV9wcml2
YXRlTmFtZXMuZW5kKCkpOworICAgICAgICBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQo
a2V5LCB2YWx1ZSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW50cnk+CkBAIC03
NDUsNyArNzQ1LDcgQEAgcHVibGljOgogICAgICAgICBPZmZzZXRUb1ZhcmlhYmxlTWFwIG1fb2Zm
c2V0VG9WYXJpYWJsZU1hcDsKICAgICAgICAgVW5pcXVlVHlwZVNldE1hcCBtX3VuaXF1ZVR5cGVT
ZXRNYXA7CiAgICAgICAgIFdyaXRlQmFycmllcjxDb2RlQmxvY2s+IG1fY29kZUJsb2NrOwotICAg
ICAgICBQcml2YXRlTmFtZVNldCBtX3ByaXZhdGVOYW1lczsKKyAgICAgICAgVmFyaWFibGVFbnZp
cm9ubWVudDo6UHJpdmF0ZU5hbWVzIG1fcHJpdmF0ZU5hbWVzOwogICAgIH07CiAKIHByaXZhdGU6
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390683</attachid>
            <date>2020-02-13 13:12:15 -0800</date>
            <delta_ts>2020-03-13 06:09:32 -0700</delta_ts>
            <desc>WIP - Patch</desc>
            <filename>private_methods.diff</filename>
            <type>text/plain</type>
            <size>119688</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
MGJiOTkzNzE3NmIuLjRlOTUyNTk3ZmFlIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZwor
KysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE5LTA2LTI3ICBDYWlv
IExpbWEgIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KKworICAgICAgICBbRVNOZXh0XSBJbXBsZW1l
bnQgcHJpdmF0ZSBtZXRob2RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTQ0MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHN0cmVzcy9wcml2YXRlLWJyYW5kLWluc3RhbGxlZC1hZnRlci1zdXBlci1j
YWxsLWZyb20tZXZhbC5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAoQSk6
CisgICAgICAgIChDLnByb3RvdHlwZS5tZXRob2QpOgorICAgICAgICAoQyk6CisgICAgICAgIChD
LnByb3RvdHlwZS5iYXNlQWNjZXNzKToKKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2Qt
YnJhbmQtY2hlY2suanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKEMucHJv
dG90eXBlLm0pOgorICAgICAgICAoQy5wcm90b3R5cGUubWV0aG9kKToKKyAgICAgICAgKEMpOgor
ICAgICAgICAodHJ5LkMucHJvdG90eXBlLm0pOgorICAgICAgICAodHJ5LkMpOgorICAgICAgICAo
Y2F0Y2gpOgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZC1jb21wYXJpc29uLmpzOiBB
ZGRlZC4KKyAgICAgICAgKGxldC5hc3NlcnQuc2FtZVZhbHVlKToKKyAgICAgICAgKGxldC5hc3Nl
cnQudGhyb3dzKToKKyAgICAgICAgKEMucHJvdG90eXBlLm0pOgorICAgICAgICAoQy5wcm90b3R5
cGUuZ2V0UHJpdmF0ZU1ldGhvZCk6CisgICAgICAgIChDKToKKyAgICAgICAgKiBzdHJlc3MvcHJp
dmF0ZS1tZXRob2QtZXh0ZW5kcy1icmFuZC1jaGVjay5qczogQWRkZWQuCisgICAgICAgIChhc3Nl
cnQpOgorICAgICAgICAoQmFzZS5wcm90b3R5cGUubUJhc2UpOgorICAgICAgICAoQmFzZS5wcm90
b3R5cGUubWV0aG9kQmFzZSk6CisgICAgICAgIChCYXNlKToKKyAgICAgICAgKEMucHJvdG90eXBl
Lm0pOgorICAgICAgICAoQy5wcm90b3R5cGUubWV0aG9kKToKKyAgICAgICAgKEMpOgorICAgICAg
ICAoY2F0Y2gpOgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZC1nZXQtYW5kLWNhbGwu
anM6IEFkZGVkLgorICAgICAgICAobGV0LmFzc2VydC5zYW1lVmFsdWUpOgorICAgICAgICAobGV0
LmFzc2VydC50aHJvd3MpOgorICAgICAgICAoQy5wcm90b3R5cGUubSk6CisgICAgICAgIChDLnBy
b3RvdHlwZS5nZXRQcml2YXRlTWV0aG9kKToKKyAgICAgICAgKEMpOgorICAgICAgICAqIHN0cmVz
cy9wcml2YXRlLW1ldGhvZC1uZXN0ZWQtY2xhc3MuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0
KToKKyAgICAgICAgKEMpOgorICAgICAgICAocHJvdG90eXBlLm1CYXNlKToKKyAgICAgICAgKGNh
dGNoKToKKyAgICAgICAgKHByb3RvdHlwZS5tZXRob2QpOgorICAgICAgICAoQy5wcm90b3R5cGUu
bSk6CisgICAgICAgIChwcm90b3R5cGUubSk6CisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0
aG9kcy1vbi1wcm94eS5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAoYXNz
ZXJ0QXJyYXlDb250ZW50KToKKyAgICAgICAgKHByb3RvdHlwZS5tKToKKyAgICAgICAgKHByb3Rv
dHlwZS5tZXRob2QpOgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW5hbWVzLWF2YWlsYWJsZS1v
bi1kaXJlY3QtZXZhbC5qczogQWRkZWQuCisgICAgICAgIChsZXQuYXNzZXJ0LnNhbWVWYWx1ZSk6
CisgICAgICAgIChDLnByb3RvdHlwZS5tKToKKyAgICAgICAgKEMucHJvdG90eXBlLmNhbGxNZXRo
b2RGcm9tRXZhbCk6CisgICAgICAgIChDKToKKyAgICAgICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1s
OgorCiAyMDIwLTAyLTEyICBDYWl0bGluIFBvdHRlciAgPGNhaXRwQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0pTQ10gQWRkIHN1cHBvcnQgZm9yIHByaXZhdGUgY2xhc3MgZmllbGRzCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLWJyYW5kLWluc3RhbGxlZC1hZnRlci1zdXBlci1j
YWxsLWZyb20tYXJyb3ctZnVuY3Rpb24uanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLWJyYW5k
LWluc3RhbGxlZC1hZnRlci1zdXBlci1jYWxsLWZyb20tYXJyb3ctZnVuY3Rpb24uanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjdjZTZiZDdjMjYxCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1icmFuZC1pbnN0YWxsZWQtYWZ0ZXItc3Vw
ZXItY2FsbC1mcm9tLWFycm93LWZ1bmN0aW9uLmpzCkBAIC0wLDAgKzEsMjcgQEAKKy8vQCByZXF1
aXJlT3B0aW9ucygiLS11c2VDbGFzc0ZpZWxkcz10cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGEs
IGUpIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKK30KKworY2xhc3MgQSB7fQorCitjbGFzcyBD
IGV4dGVuZHMgQSB7CisgICAgI21ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuICJiYXNlIjsKKyAg
ICB9CisKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgbGV0IGluaXQgPSAoKSA9PiBzdXBl
cigpOworICAgICAgICBpbml0KCk7CisgICAgfQorCisgICAgYmFzZUFjY2VzcygpIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuI21ldGhvZCgpOworICAgIH0KK30KKworbGV0IGMgPSBuZXcgQygpOwor
YXNzZXJ0KGMuYmFzZUFjY2VzcygpLCAiYmFzZSIpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9wcml2YXRlLWJyYW5kLWluc3RhbGxlZC1hZnRlci1zdXBlci1jYWxsLWZyb20tZXZhbC5q
cyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVyLWNh
bGwtZnJvbS1ldmFsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4z
ZGExM2QwZjBmYgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYnJh
bmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVyLWNhbGwtZnJvbS1ldmFsLmpzCkBAIC0wLDAgKzEsMjYg
QEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VDbGFzc0ZpZWxkcz10cnVlIikKKworZnVuY3Rp
b24gYXNzZXJ0KGEsIGUpIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKK30KKworY2xhc3MgQSB7
fQorCitjbGFzcyBDIGV4dGVuZHMgQSB7CisgICAgI21ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJu
ICJiYXNlIjsKKyAgICB9CisKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgZXZhbCgic3Vw
ZXIoKSIpOworICAgIH0KKworICAgIGJhc2VBY2Nlc3MoKSB7CisgICAgICAgIHJldHVybiB0aGlz
LiNtZXRob2QoKTsKKyAgICB9Cit9CisKK2xldCBjID0gbmV3IEMoKTsKK2Fzc2VydChjLmJhc2VB
Y2Nlc3MoKSwgImJhc2UiKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1t
ZXRob2QtYnJhbmQtY2hlY2suanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1icmFu
ZC1jaGVjay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTFmMjI4
YjMyYmEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1i
cmFuZC1jaGVjay5qcwpAQCAtMCwwICsxLDMzIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNl
Q2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBlKSB7CisgICAgaWYgKGEg
IT09IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQg
Z290OiAiICsgYSk7Cit9CisKK2NsYXNzIEMgeworICAgICNtKCkgeworICAgICAgICByZXR1cm4g
dGhpcy4jZjsKKyAgICB9CisKKyAgICBtZXRob2QoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNt
KCk7CisgICAgfQorCisgICAgI2YgPSA0OworfQorCitsZXQgYyA9IG5ldyBDKCk7Cithc3NlcnQo
Yy5tZXRob2QoKSwgNCk7CisKK3RyeSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgICNtKCkgeyBy
ZXR1cm4gMzsgfQorICAgIH0KKworICAgIGxldCBvID0gbmV3IEMoKTsKKyAgICBjLm1ldGhvZC5j
YWxsKG8pOworfSBjYXRjaCAoZSkgeworICAgIGFzc2VydChlIGluc3RhbmNlb2YgVHlwZUVycm9y
LCB0cnVlKTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2Qt
Y29tcGFyaXNvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWNvbXBhcmlzb24u
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmE4ZDUxMzM4NTRlCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtY29tcGFyaXNv
bi5qcwpAQCAtMCwwICsxLDMxIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlQ2xhc3NGaWVs
ZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAobGhz
LCByaHMpIHsKKyAgICAgICAgaWYgKGxocyAhPT0gcmhzKQorICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJFeHBlY3RlZDogIiArIGxocyArICIgYnVnIGdvdDogIiArIHJocyk7CisgICAgfSwK
KworICAgIHRocm93czogZnVuY3Rpb24gKGV4cGVjdGVkRXJyb3IsIG9wKSB7CisgICAgICAgIHRy
eSB7CisgICAgICAgICAgb3AoKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBp
ZiAoIShlIGluc3RhbmNlb2YgZXhwZWN0ZWRFcnJvcikpCisgICAgICAgICAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4cGVjdGVkRXJyb3IgKyAiIGJ1dCB0
aHJldzogIiArIGUpOworICAgICAgICB9CisgICAgfQorfTsKKworY2xhc3MgQyB7CisgICAgI20o
KSB7IHJldHVybiAndGVzdDI2Mic7IH0KKworICAgIGdldFByaXZhdGVNZXRob2QoKSB7CisgICAg
ICAgIHJldHVybiB0aGlzLiNtOworICAgIH0KK30KKworbGV0IGMxID0gbmV3IEMoKTsKK2xldCBj
MiA9IG5ldyBDKCk7CisKK2Fzc2VydC5zYW1lVmFsdWUoYzEuZ2V0UHJpdmF0ZU1ldGhvZCgpLCBj
Mi5nZXRQcml2YXRlTWV0aG9kKCkpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2
YXRlLW1ldGhvZC1leHRlbmRzLWJyYW5kLWNoZWNrLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0
ZS1tZXRob2QtZXh0ZW5kcy1icmFuZC1jaGVjay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uMjJhNmQzNDBiNDUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9wcml2YXRlLW1ldGhvZC1leHRlbmRzLWJyYW5kLWNoZWNrLmpzCkBAIC0wLDAgKzEsNDEg
QEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VDbGFzc0ZpZWxkcz10cnVlIikKKworZnVuY3Rp
b24gYXNzZXJ0KGEsIGUpIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKK30KKworY2xhc3MgQmFz
ZSB7CisgICAgI21CYXNlKCkgeworICAgICAgICByZXR1cm4gNDsKKyAgICB9CisKKyAgICBtZXRo
b2RCYXNlKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jbUJhc2UoKTsKKyAgICB9Cit9CisKK2Ns
YXNzIEMgZXh0ZW5kcyBCYXNlIHsKKyAgICAjbSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI2Y7
CisgICAgfQorCisgICAgbWV0aG9kKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jbSgpOworICAg
IH0KKworICAgICNmID0gMTU7Cit9CisKK2xldCBjID0gbmV3IEMoKTsKK2Fzc2VydChjLm1ldGhv
ZCgpLCAxNSk7Cithc3NlcnQoYy5tZXRob2RCYXNlKCksIDQpOworCitsZXQgYmFzZSA9IG5ldyBC
YXNlICgpOworYXNzZXJ0KGJhc2UubWV0aG9kQmFzZSgpLCA0KTsKK3RyeSB7CisgICAgYy5tZXRo
b2QuY2FsbChiYXNlKTsKK30gY2F0Y2ggKGUpIHsKKyAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIFR5
cGVFcnJvciwgdHJ1ZSk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUt
bWV0aG9kLWdldC1hbmQtY2FsbC5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWdl
dC1hbmQtY2FsbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjA4
Y2IxYTIxMGEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhv
ZC1nZXQtYW5kLWNhbGwuanMKQEAgLTAsMCArMSwzMyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCIt
LXVzZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTog
ZnVuY3Rpb24gKGxocywgcmhzKSB7CisgICAgICAgIGlmIChsaHMgIT09IHJocykKKyAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBsaHMgKyAiIGJ1ZyBnb3Q6ICIgKyBy
aHMpOworICAgIH0sCisKKyAgICB0aHJvd3M6IGZ1bmN0aW9uIChleHBlY3RlZEVycm9yLCBvcCkg
eworICAgICAgICB0cnkgeworICAgICAgICAgIG9wKCk7CisgICAgICAgIH0gY2F0Y2goZSkgewor
ICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVkRXJyb3IpKQorICAgICAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleHBlY3RlZEVy
cm9yICsgIiBidXQgdGhyZXc6ICIgKyBlKTsKKyAgICAgICAgfQorICAgIH0KK307CisKK2NsYXNz
IEMgeworICAgICNtKCkgeyByZXR1cm4gdGhpcy5fdjsgfQorCisgICAgZ2V0UHJpdmF0ZU1ldGhv
ZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI207CisgICAgfQorfQorCitsZXQgYyA9IG5ldyBD
KCk7CisKK2xldCBvMSA9IHtfdjogJ3Rlc3QyNjInfTsKK2xldCBvMiA9IHtfdjogJ2Zvbyd9OyAK
K2Fzc2VydC5zYW1lVmFsdWUoYy5nZXRQcml2YXRlTWV0aG9kKCkuY2FsbChvMSksICd0ZXN0MjYy
Jyk7Cithc3NlcnQuc2FtZVZhbHVlKGMuZ2V0UHJpdmF0ZU1ldGhvZCgpLmNhbGwobzIpLCAnZm9v
Jyk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLW5lc3RlZC1j
bGFzcy5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLW5lc3RlZC1jbGFzcy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTc2OTNkNzA0MmQKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1uZXN0ZWQtY2xhc3Mu
anMKQEAgLTAsMCArMSw2OCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZUNsYXNzRmllbGRz
PXRydWUiKQorCitmdW5jdGlvbiBhc3NlcnQoYSwgZSkgeworICAgIGlmIChhICE9PSBlKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEp
OworfQorCisoKCkgPT4geworICAgIGNsYXNzIEJhc2UgeworICAgICAgICBDID0gY2xhc3Mgewor
ICAgICAgICAgICAgbWV0aG9kKCkgeworICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiNtQmFz
ZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgI21CYXNlKCkgeworICAg
ICAgICAgICAgcmV0dXJuIDQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYmFzZSA9IG5l
dyBCYXNlKCk7CisgICAgbGV0IGMgPSBuZXcgYmFzZS5DKCk7CisgICAgYXNzZXJ0KGMubWV0aG9k
LmNhbGwoYmFzZSksIDQpOworCisgICAgdHJ5IHsKKyAgICAgICAgYy5tZXRob2QoKTsKKyAgICB9
IGNhdGNoIChlKSB7CisgICAgICAgIGFzc2VydChlIGluc3RhbmNlb2YgVHlwZUVycm9yLCB0cnVl
KTsKKyAgICB9Cit9KSgpOworCisvLyBUZXN0IHNoYWRvdyBtZXRob2RzCisKKygoKSA9PiB7Cisg
ICAgY2xhc3MgQmFzZSB7CisgICAgICAgIG1ldGhvZCgpIHsKKyAgICAgICAgICAgIHJldHVybiB0
aGlzLiNtKCk7CisgICAgICAgIH0KKworICAgICAgICBDID0gY2xhc3MgeworICAgICAgICAgICAg
bWV0aG9kKG8pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gby4jbSgpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAjbSgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mb287
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvbyA9IDQ7CisgICAgICAgIH07CisKKyAg
ICAgICAgI20oKSB7CisgICAgICAgICAgICByZXR1cm4gImZvbyI7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBsZXQgYmFzZSA9IG5ldyBCYXNlKCk7CisgICAgbGV0IGMgPSBuZXcgYmFzZS5DKCk7
CisgICAgYXNzZXJ0KGMubWV0aG9kKGMpLCA0KTsKKyAgICBhc3NlcnQoYmFzZS5tZXRob2QoKSwg
ImZvbyIpOworCisgICAgdHJ5IHsKKyAgICAgICAgYy5tZXRob2QoYmFzZSk7CisgICAgfSBjYXRj
aCAoZSkgeworICAgICAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIFR5cGVFcnJvciwgdHJ1ZSk7Cisg
ICAgfQorfSkoKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2Rz
LW9uLXByb3h5LmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2RzLW9uLXByb3h5Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zMjdjOWQzMjRlZAotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1vbi1wcm94eS5q
cwpAQCAtMCwwICsxLDQyIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlQ2xhc3NGaWVsZHM9
dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBlLCBtKSB7CisgICAgaWYgKGEgIT09IGUpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcihtKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0QXJyYXlDb250
ZW50KGEsIGUpIHsKKyAgICBhc3NlcnQoYS5sZW5ndGgsIGUubGVuZ3RoLCAiU2l6ZSBvZiBhcnJh
eXMgZG9lc24ndCBtYXRjaCIpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkr
KykKKyAgICAgICAgYXNzZXJ0KGFbaV0sIGVbaV0sICJhWyIgKyBpICsgIl0gPSAiICsgYVtpXSAr
ICIgYnV0IGVbIiArIGkgKyAiXSA9ICIgKyBlW2ldKTsKK30KKworbGV0IGFyciA9IFtdOworCitj
bGFzcyBQcm94eUJhc2UgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICByZXR1cm4gbmV3
IFByb3h5KHRoaXMsIHsKKyAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKG9iaiwgcHJvcCkgewor
ICAgICAgICAgICAgICAgIGFyci5wdXNoKHByb3ApOworICAgICAgICAgICAgICAgIHJldHVybiBv
YmpbcHJvcF07CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KK30KKworY2xhc3Mg
VGVzdCBleHRlbmRzIFByb3h5QmFzZSB7CisgICAgI20oKSB7CisgICAgICAgIHJldHVybiAzOwor
ICAgIH0KKworICAgIG1ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI20oKTsKKyAgICB9
Cit9CisKK2xldCB0ID0gbmV3IFRlc3QoKTsKK2xldCByID0gdC5tZXRob2QoKTsKK2Fzc2VydChy
LCAzLCAiRXhwZWN0ZWQ6IDMgYnV0IGdvdDogIiArIHIpOworCithc3NlcnRBcnJheUNvbnRlbnQo
YXJyLCBbJ21ldGhvZCddKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1u
YW1lcy1hdmFpbGFibGUtb24tZGlyZWN0LWV2YWwuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRl
LW5hbWVzLWF2YWlsYWJsZS1vbi1kaXJlY3QtZXZhbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMC4uMDE0MDJkNzRiNTcKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9wcml2YXRlLW5hbWVzLWF2YWlsYWJsZS1vbi1kaXJlY3QtZXZhbC5qcwpAQCAtMCww
ICsxLDIzIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisK
K2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAobGhzLCByaHMpIHsKKyAg
ICAgICAgaWYgKGxocyAhPT0gcmhzKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBl
Y3RlZDogIiArIHJocyArICIgYnVnIGdvdDogIiArIGxocyk7CisgICAgfQorfTsKKworKGZ1bmN0
aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgI20oKSB7IHJldHVybiAndGVzdCc7IH0K
KworICAgICAgICBjYWxsTWV0aG9kRnJvbUV2YWwoKSB7CisgICAgICAgICAgICBsZXQgc2VsZiA9
IHRoaXM7CisgICAgICAgICAgICByZXR1cm4gZXZhbCgnc2VsZi4jbSgpJyk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmNh
bGxNZXRob2RGcm9tRXZhbCgpLCAndGVzdCcpOworfSkoKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy90ZXN0MjYyL2NvbmZpZy55YW1sIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCmluZGV4
IDc1ZTQwOGM2M2ZjLi40NTg3ODQ1OTljYyAxMDA2NDQKLS0tIGEvSlNUZXN0cy90ZXN0MjYyL2Nv
bmZpZy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbApAQCAtMyw2ICszLDcg
QEAKIGZsYWdzOgogICBCaWdJbnQ6IHVzZUJpZ0ludAogICBXZWFrUmVmOiB1c2VXZWFrUmVmcwor
ICBjbGFzcy1tZXRob2RzLXByaXZhdGU6IHVzZUNsYXNzRmllbGRzCiAgIGNsYXNzLWZpZWxkcy1w
cml2YXRlOiB1c2VDbGFzc0ZpZWxkcwogICBjbGFzcy1maWVsZHMtcHVibGljOiB1c2VDbGFzc0Zp
ZWxkcwogc2tpcDoKQEAgLTEyLDcgKzEzLDYgQEAgc2tpcDoKICAgICAjIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ5MzEKICAgICAtIHJlZ2V4cC1sb29rYmVoaW5k
CiAKLSAgICAtIGNsYXNzLW1ldGhvZHMtcHJpdmF0ZQogICAgIC0gY2xhc3Mtc3RhdGljLWZpZWxk
cy1wdWJsaWMKICAgICAtIGNsYXNzLXN0YXRpYy1maWVsZHMtcHJpdmF0ZQogICAgIC0gY2xhc3Mt
c3RhdGljLW1ldGhvZHMtcHJpdmF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggODkyY2Iw
NmI4NTMuLjQ3OTgyMzI1ODZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
ODMgQEAKKzIwMTktMDYtMjcgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgorCisg
ICAgICAgIFtFU05leHRdIEltcGxlbWVudCBwcml2YXRlIG1ldGhvZHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDQzNAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYWRkaW5nIHN1
cHBvcnQgdG8gcHJpdmF0ZSBtZXRob2RzIGZvbGxvd2luZyB0aGUKKyAgICAgICAgc3BlY2lmaWNh
dGlvbiBvbiBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtcHJpdmF0ZS1tZXRob2RzLy4KKyAgICAg
ICAgVGhpcyBpcyBpbnRyb2R1Y2luZyBhIG5ldyB3YXkgdG8gZGVjbGFyZSBwcml2YXRlIG1ldGhv
ZHMgb24KKyAgICAgICAgY2xhc3Mgc3ludGF4LiBQcml2YXRlIG1ldGhvZHMgYXJlIG9ubHkgYWNj
ZXNzaWJsZSB3aXRoaW4KKyAgICAgICAgY2xhc3NlcyB0aGV5IHdlcmUgZGVjbGFyZWQsIGFuZCBv
bmx5IGNhbiBiZSBjYWxsZWQgZnJvbQorICAgICAgICBvYmplY3RzIHRoYXQgYXJlIGluc3RhbmNl
IG9mIHRoZXNlIGNsYXNzZXMuCisgICAgICAgIFRvIGd1YXJhbnRlZSBzdWNoIHJ1bGVzLCB0aGUg
cHJvcG9zYWwgcHJlc2VudHMgdGhlIGNvbmNlcHQgb2YKKyAgICAgICAgQnJhbmQgQ2hlY2suIER1
cmluZyBjbGFzcyBldmFsdWF0aW9uLCBpZiBhIHByaXZhdGUgbWV0aG9kIGlzIHByZXNlbnQsCisg
ICAgICAgIGEgYGJyYW5kYCBpcyBpbnN0YWxsZWQgaW4gdGhpcyBjbGFzcy4gRXZlcnkgaW5zdGFu
Y2Ugb2Ygc3VjaCBjbGFzcworICAgICAgICB0aGVuIGdldHMgdGhpcyBicmFuZCBpbnN0YWxsZWQg
ZHVyaW5nIGBbW0NvbnN0cnVjdF1dYCBvcGVyYXRpb24uIEl0CisgICAgICAgIG1lYW5zIHRoYXQg
YW4gb2JqZWN0IGNhbiBoYXZlIG11bHRpcGxlIGJyYW5kcyAoZS5nIHdoZW4gdGhlcmUgaXMgYWxz
bworICAgICAgICBwcml2YXRlIG1ldGhvZHMgZGVjbGFyZWQgb24gc3VwZXIgY2xhc3MpLiBCZWZv
cmUgYWNjZXNzaW5nIGEgcHJpdmF0ZQorICAgICAgICBtZXRob2QsIHRoZXJlIGlzIGEgY2hlY2sg
dG8gdmFsaWRhdGUgaWYgdGhlIHRhcmdldCBvZiB0aGUgY2FsbCBoYXMgdGhlCisgICAgICAgIGJy
YW5kIG9mIGNhbGxlZSBtZXRob2QuCisgICAgICAgIFRoZSBicmFuZCBjaGVjayBtZWNoYW5pc20g
aXMgaW1wbGVtZW50ZWQgdXNpbmcgYSBgQHByaXZhdGVCcmFuZGAKKyAgICAgICAgc3RvcmVkIG9u
IGNsYXNzIHNjb3BlLiBIZXJlIGlzIGEgcmVwcmVzZW50YXRpb24gb2YgaG93IHRoaXMgbWVjaGFu
aXNtCisgICAgICAgIHdvcmtzOgorCisgICAgICAgIGBgYAorICAgICAgICBjbGFzcyBDIHsKKyAg
ICAgICAgICAgICNtKCkgeyByZXR1cm4gMzsgfQorICAgICAgICAgICAgbWV0aG9kKCkgeyByZXR1
cm4gdGhpcy4jbSgpOyB9CisgICAgICAgIH0KKworICAgICAgICBsZXQgYyA9IG5ldyBDKCk7Cisg
ICAgICAgIGNvbnNvbGUubG9nKGMubWV0aG9kKCkpOyAvLyBwcmludHMgMworICAgICAgICBgYGAK
KworICAgICAgICBHZW5lcmF0ZWQgYnl0ZWNvZGUgZm9yIHRoZSBmb2xsb3dpbmcgcmVwcmVzZW50
YXRpb246CisgICAgICAgIGBgYAorICAgICAgICB7IC8vIGNsYXNzIGxleGljYWwgc2NvcGUKKyAg
ICAgICAgICAgIGNvbnN0IEBwcml2YXRlQnJhbmQwID0gQGNyZWF0ZVByaXZhdGVTeW1ib2woKTsK
KyAgICAgICAgICAgIGNvbnN0ICNtID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gMzsgfQorICAgICAg
ICAgICAgQy5wcm90b3R5cGUubWV0aG9kID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
QGdldERpcmVjdEJ5VmFsKHRoaXMsIEBwcml2YXRlQnJhbmQwKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gI20uY2FsbCh0aGlzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEMgPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICBAcHV0RGlyZWN0QnlWYWwodGhpcywgQHByaXZhdGVC
cmFuZDAsIEBwcml2YXRlQnJhbmQwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICAgICAgY29uc29sZS5sb2coYy5tZXRob2QoKSk7IC8v
IHByaW50cyAzCisgICAgICAgIGBgYAorCisgICAgICAgIFRoZSBicmFuZCBjaGVjayBpcyBwZXJm
b3JtZWQgYnkgYGdldF9ieV92YWxfZGlyZWN0YCwgd2hlcmUgd2UgcmUtdXNlCisgICAgICAgIHRo
ZSBtZWNoYW5pc20gaW50cm9kdWNlZCBieSBwcml2YXRlIGNsYXNzIGZpZWxkcy4gV2UgY2FuIHNl
ZSB0aGUKKyAgICAgICAgcHJpdmF0ZSBicmFuZCBhcyBhIHNwZWNpYWwgcHJpdmF0ZSBmaWVsZCBp
bnN0YWxsZWQgZHVyaW5nCisgICAgICAgIGBbW0NvbnN0cnVjdF1dYCBvcGVyYXRpb24uIFNpbmNl
IHRoZSBwcml2YXRlIGJyYW5kIGlzIGEgcHJpdmF0ZSBmaWVsZCwKKyAgICAgICAgd2UgdGhyb3cg
YFR5cGVFcnJvcmAgd2hlbiB0aGUgbG9va3VwIGZhaWwuCisKKyAgICAgICAgVG8gcHJvcGVybHkg
c3RvcmUgdGhlIHByaXZhdGUgYnJhbmQgb2YgYSBjbGFzcyBvbiBhbGwgT2JqZWN0cywKKyAgICAg
ICAgaW5jbHVkaW5nIFByb3hpZXMsIHdlIHVzZSAiQHB1dERpcmVjdEJ5VmFsIi4gVGhpcyBpbnRy
dWN0aW9uIHB1dHMKKyAgICAgICAgdmFsdWUgb24gT2JqZWN0J3MgcHJvcGVydGllcyB3aXRob3V0
IGV4ZWN1dGluZyBbW1B1dF1dIHNlbWFudGljcy4KKyAgICAgICAgV2l0aCB0aGlzIGRlc2lnbiwg
d2UgYXZvaWQgYWxsb2NhdGluZyBhIGZpZWxkIGZvciBldmVyeSBpbnN0YW5jZQorICAgICAgICBv
ZiBhIGNsYXNzLCBzaW5jZSBwcml2YXRlIG1ldGhvZHMgYXJlIHN0b3JlZCBvbiBjbGFzcworICAg
ICAgICBsZXhpY2FsIHNjb3BlLiBFdmVyeSBvYmplY3Qgd2lsbCBoYXZlIHRvIGFsbG9jYXRlIGl0
cyBwcml2YXRlCisgICAgICAgIGJyYW5kIGxpc3QuIFRoaXMgZGVzaWduIGluc2VydHMgbm8gb3Zl
cmhlYWQgb24gb2JqZWN0cyBhbmQgY2xhc3NlcworICAgICAgICB3aXRob3V0IHByaXZhdGUgbWV0
aG9kcy9hY2Nlc3Nvci4KKworICAgICAgICBSZXNvbHZpbmcgY29ycmVjdCBicmFuZCBjaGVjazoK
KworICAgICAgICBJbiB0aGUgY2FzZSBvZiBzaGFkb3dpbmcgb3IgbmVzdGVkIHNjb3BlLCB3ZSBu
ZWVkIHRvIGVtaXQgYnJhbmQKKyAgICAgICAgY2hlY2tzIHRvIHRoZSByaWdodCBwcml2YXRlIGJy
YW5kLiBTZWUgY29kZSBiZWxvdzoKKworICAgICAgICBgYGAKKyAgICAgICAgY2xhc3MgQyB7Cisg
ICAgICAgICAgICAjbSgpIHsgcmV0dXJuIDM7IH0KKyAgICAgICAgICAgIG1ldGhvZCgpIHsgcmV0
dXJuIHRoaXMuI20oKTt9CisKKyAgICAgICAgICAgIEEgPSBjbGFzcyB7CisgICAgICAgICAgICAg
ICAgI20yKCkgeyByZXR1cm4gMzsgfQorICAgICAgICAgICAgICAgIGZvbyhvKSB7IHJldHVybiB0
aGlzLiNtKCk7IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBgYGAKKworICAg
ICAgICBUaGUgY2FsbCBvZiAiI20iIGluIGBmb29gIHJlZmVycyB0byAiQzo6I20iLiBJbiBzdWNo
IGNhc2UsIHdlIG5lZWQgdG8KKyAgICAgICAgY2hlY2sgQydzIHByaXZhdGUgYnJhbmQsIGluc3Rl
YWQgb2YgQSdzIHByaXZhdGUgYnJhbmQuCisgICAgICAgIFRvIHBlcmZvcm0gdGhlIHByb3BlciBj
aGVjaywgd2UgZmlyc3QgcmVzb2x2ZSBzY29wZSBvZiAiI20iIGFuZCB0aGVuCisgICAgICAgIGNo
ZWNrIHRoZSBwcml2YXRlIGJyYW5kIG9mIHRoaXMgc2NvcGUgKHRoZSBzY29wZSB3aGVyZSB0aGUg
cHJpdmF0ZQorICAgICAgICBtZXRob2QgYW5kIGJyYW5kIGFyZSBzdG9yZWQgaXMgdGhlIHNhbWUp
LgorICAgICAgICBTbyB0aGUgYnl0ZWNvZGUgdG8gbG9va3VwIHRoZSByaWdodCBicmFuZCBpczoK
KworICAgICAgICBgYGAKKyAgICAgICAgcmVzb2x2ZV9zY29wZSBsb2MxMCwgIiNtIgorICAgICAg
ICBnZXRfZnJvbV9zY29wZSBsb2MxMSwgbG9jMTAsICJAcHJpdmF0ZUJyYW5kIgorICAgICAgICBn
ZXRfYnlfdmFsX2RpcmVjdCBsb2MxMiwgdGhpcywgbG9jMTEKKyAgICAgICAgZ2V0X2Zyb21fc2Nv
cGUgbG9jMTEsIGxvYzEwLCAiI20iCisgICAgICAgIC8vIHNldHVwIGNhbGwgZnJhbWUKKyAgICAg
ICAgY2FsbCBsb2MxMSwgLi4uCisgICAgICAgIC8vIC4uLgorICAgICAgICBgYGAKKworICAgICAg
ICAqIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6CisgICAgICAgIChKU0M6OkJ1aWx0
aW5FeGVjdXRhYmxlczo6Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6
QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKToKKyAgICAgICAgKiBidWlsdGlu
cy9CdWlsdGluRXhlY3V0YWJsZXMuaDoKKworICAgICAgICBXZSBhcmUgYWRkaW5nIGEgbmV3IHBh
cmFtZXRlciBgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnRgIHRvIHByb3BhZ2F0ZQorICAgICAgICB3
aGVuIGEgZGVmYXVsdCBjb25zdHJ1Y3RvciBuZWVkcyB0byBlbWl0IGNvZGUgdG8gc2V0dXAgcHJp
dmF0ZSBicmFuZAorICAgICAgICBvbiBpbnN0YW5jZXMuCisKKyAgICAgICAgKiBidWlsdGlucy9C
dWlsdGluTmFtZXMuaDoKKworICAgICAgICBBZGRpbmcgYEBjcmVhdGVQcml2YXRlU3ltYm9sYCBh
bmQgYEBwcml2YXRlQnJhbmRgLgorICAgICAgICBgQGNyZWF0ZVByaXZhdGVTeW1ib2xgIGlzIHVz
ZWQgYXMgYSBmdW5jdGlvbiB0byBlbmFibGUgdXMgYWxsb2NhdGUKKyAgICAgICAgUHJpdmF0ZVN5
bWJvbHMgYXQgZXhlY3V0aW9uIHRpbWUuIGBAcHJpdmF0ZUJyYW5kYCBpcyB0aGUgbmFtZSB3ZSB1
c2UKKyAgICAgICAgdG8gc3RvcmUgcHJpdmF0ZSBicmFuZCBvbiBjbGFzcydzIHNjb3BlLgorCisg
ICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5
dGVjb2RlVXNlRGVmLmg6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZz
ZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAg
ICAgKiBieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxl
SW5mbzo6RXhlY3V0YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6cHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2Vk
Q29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgY29u
c3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKToKKyAgICAg
ICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5o
OgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisKKyAgICAgICAg
V2UgY2hhbmdlZCBCeXRlY29kZUdlbmVyYXRvciBmb3IgRnVuY3Rpb25Ob2RlIGFuZCBFdmFsTm9k
ZSB0bworICAgICAgICBwcm9wYWdhdGUgcGFyZW50U2NvcGUgVmFyaWFibGVFbnZpcm9ubWVudC4g
VGhlc2UgZW52aXJvbm1lbnRzIHN0b3JlcworICAgICAgICBwcml2YXRlIG5hbWUgZW50cmllcyB0
aGF0IGFyZSB2aXNpYmxlIGludG8gdGhlIHNjb3BlIG9mIHRoZQorICAgICAgICBmdW5jdGlvbi9l
dmFsIGluIGFkZGl0aW9uIHRvIFREWiB2YXJpYWJsZXMuCisgICAgICAgIFRoaXMgaXMgcmVxdWly
ZWQgdG8gaWRlbnRpZnkgdGhlIGtpbmQgb2YgYWNjZXNzIGEgcHJpdmF0ZSBuYW1lIGlzCisgICAg
ICAgIHJlZmVycmluZyB0bywgc2luY2UgaXQgY2FuIGJlIGEgcHJpdmF0ZSBmaWVsZCBvciBhIHBy
aXZhdGUgbWV0aG9kLgorICAgICAgICBHaXZlbiB0aGlzIGNoYW5nZSwgd2UgY2hhbmdlZCB0aGUg
bmFtZSBvZiBWYXJpYWJsZUVudmlyb25tZW50CisgICAgICAgIGZyb20gYHBhcmVudFNjb3BlVERa
VmFyaWFibGVzYCB0byBgcGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50YC4KKworICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aW5zdGFudGlhdGVMZXhpY2FsVmFyaWFibGVzKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDaGVja1ByaXZhdGVCcmFuZCk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlUHJpdmF0ZUJyYW5k
KToKKworICAgICAgICBUaGUgcHJvY2VzcyB0byBjcmVhdGUgYSBwcml2YXRlIGJyYW5kIGlzIGFz
IGZvbGxvd3M6CisgICAgICAgICAgICAxLiBDcmVhdGUgYSBQcml2YXRlU3ltYm9sIHVzaW5nIGBA
Y3JlYXRlUHJpdmF0ZVN5bWJvbGAuCisgICAgICAgICAgICAyLiBTdG9yZSB0aGlzIHN5bWJvbCBp
bnRvIGEgZ2l2ZW4gc2NvcGUgKGkuZSBjbGFzcyBsZXhpY2FsIHNjb3BlKQorICAgICAgICAgICAg
ICAgb24gYEBwcml2YXRlQnJhbmRgIHZhcmlhYmxlLgorCisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0SW5zdGFsbFByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0R2V0UHJpdmF0ZUJyYW5kKToKKworICAgICAgICBUaGlzIG9wZXJh
dGlvbiBsb29rdXAgZm9yIGBAcHJpdmF0ZUJyYW5kYCBmcm9tIGEgZ2l2ZW4gc2NvcGUuCisKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmlzUHJpdmF0ZU1ldGhvZCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoUHJpdmF0ZUFjY2Vzc05hbWVzKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnBvcFByaXZhdGVBY2Nlc3NOYW1lcyk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZXRBdmFpbGFibGVQcml2YXRlQWNjZXNzTmFt
ZXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2V0VmFyaWFibGVzVW5kZXJU
RFopOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0RlZmF1bHRDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3SW5zdGFu
Y2VGaWVsZEluaXRpYWxpemVyRnVuY3Rpb24pOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oOgorCisgICAgICAgIFdlIGFkZGVkIGBtX3ByaXZhdGVOYW1lc1N0YWNr
YCB0byBCeXRlY29kZUdlbmVyYXRvciB0byByZXByZXNlbnQgdGhlCisgICAgICAgIHNjb3BlIGNo
YWluIG9mIGF2YWlsYWJsZSBwcml2YXRlIG5hbWVzIHdoaWxlIGdlbmVyYXRpbmcgYnl0ZWNvZGUu
CisKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnByaXZhdGVCcmFuZFJlcXVpcmVt
ZW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Om1ha2VGdW5jdGlv
bik6CisKKyAgICAgICAgVGhpcyBjaGFuZ2UgaXMgcmVxdWlyZWQgdG8gcHJvcGVybHkgcHJvcGFn
YXRlIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50CisgICAgICAgIHRvIGFycm93IGZ1bmN0aW9ucyB0
aGF0IGNhbiBwb3RlbnRpYWxseSBjYWxsIHN1cGVyKCkuCisKKyAgICAgICAgKiBieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6ZW1p
dFB1dENvbnN0YW50UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6ZW1pdEdl
dFByb3BlcnR5VmFsdWUpOgorCisgICAgICAgIEFkZGluZyBzdXBwb3J0IHRvIHByb3Blcmx5IGFj
Y2VzcyBwcml2YXRlIG1ldGhvZC4gU2luY2Ugd2Ugc3RvcmUKKyAgICAgICAgcHJpdmF0ZSBtZXRo
b2RzIG9uIGNsYXNzIGxleGljYWwgc2NvcGUsIHdlIG5lZWQgYSBkaWZmZXJlbnQgc2V0IG9mCisg
ICAgICAgIGluc3RydWN0aW9ucyB0byBhY2Nlc3MgYSBwcml2YXRlIG1ldGhvZC4KKworICAgICAg
ICAoSlNDOjpCYXNlRG90Tm9kZTo6ZW1pdFB1dFByb3BlcnR5KToKKworICAgICAgICBJbiB0aGUg
Y2FzZSBvZiB3ZSB0cnlpbmcgdG8gd3JpdGUgaW4gYSBwcml2YXRlIG1ldGhvZCwgd2UgbmVlZCB0
bworICAgICAgICB0aHJvdyBhIFR5cGVFcnJvciBhY2NvcmRpbmcgdG8gc3BlY2lmaWNhdGlvbgor
ICAgICAgICAoaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXByaXZhdGUtbWV0aG9kcy8jc2VjLXBy
aXZhdGVmaWVsZHNldCkuCisKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsVmFsdWVOb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpT
Qzo6RGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAg
ICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmls
aXR5TGV2ZWwpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6ZXZhbCk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJ
VDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNv
bXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklU
T3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jaGVja19wcml2YXRlX2Jy
YW5kKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAg
ICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFyPjo6cGFyc2VJ
ZGVudGlmaWVyKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oOgorICAgICAg
ICAoSlNDOjpQcm9wZXJ0eU5vZGU6OlByb3BlcnR5Tm9kZSk6CisgICAgICAgICogcGFyc2VyL05v
ZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25NZXRhZGF0YU5vZGU6OkZ1bmN0aW9uTWV0
YWRhdGFOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKiBwYXJzZXIv
UGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3Mp
OgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OmRlY2xh
cmVQcml2YXRlTWV0aG9kKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyTW9kZXMuaDoKKyAgICAg
ICAgKiBwYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OlZhcmlh
YmxlRW52aXJvbm1lbnQ6Om1hcmtQcml2YXRlTmFtZUFzRGVjbGFyZWQpOgorICAgICAgICAoSlND
OjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZU1ldGhvZCk6CisgICAgICAgIChK
U0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlTmFtZSk6CisgICAgICAgIChK
U0M6OkNvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50OjpDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVu
dCk6CisgICAgICAgIChKU0M6OkNvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50OjpvcGVyYXRvcj09
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQ6OnRvVmFy
aWFibGVFbnZpcm9ubWVudCBjb25zdCk6CisKKyAgICAgICAgV2UgYWRkZWQgc3VwcG9ydCB0byBD
b21wYWN0VmFyaWFibGVFbnZpcm9ubWVudCBhbHNvIHN0b3JlIHByaXZhdGUKKyAgICAgICAgbmFt
ZXMuCisKKyAgICAgICAgKiBwYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oOgorICAgICAgICAo
SlNDOjpQcml2YXRlTmFtZUVudHJ5Ojppc01ldGhvZCBjb25zdCk6CisgICAgICAgIChKU0M6OlBy
aXZhdGVOYW1lRW50cnk6OmlzUHJpdmF0ZUFjY2VzcyBjb25zdCk6CisgICAgICAgIChKU0M6OlZh
cmlhYmxlRW52aXJvbm1lbnQ6OmFkZFByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6VmFyaWFi
bGVFbnZpcm9ubWVudDo6ZGVjbGFyZVByaXZhdGVNZXRob2QpOgorICAgICAgICAoSlNDOjpWYXJp
YWJsZUVudmlyb25tZW50OjpoYXNQcml2YXRlQWNjZXNzIGNvbnN0KToKKyAgICAgICAgKiBydW50
aW1lL0NhY2hlZFR5cGVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkUHJpdmF0ZU5hbWVFbnRy
eTo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6Q2FjaGVkUHJpdmF0ZU5hbWVFbnRyeTo6ZGVjb2Rl
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkU3ltYm9sVGFibGU6OmRlY29kZSBjb25zdCk6
CisgICAgICAgIChKU0M6OkNhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZVJhcmVEYXRhOjplbmNvZGUp
OgorICAgICAgICAoSlNDOjpDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGVSYXJlRGF0YTo6ZGVjb2Rl
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlOjpwcml2YXRl
QnJhbmRSZXF1aXJlbWVudCBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZENvZGVCbG9jazo6
cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENv
ZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDYWNoZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OmVuY29kZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkNhY2hl
ZENvZGVCbG9jazxDb2RlQmxvY2tUeXBlPjo6ZW5jb2RlKToKKyAgICAgICAgKiBydW50aW1lL0Nv
ZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0VW5saW5rZWRHbG9iYWxG
dW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmg6CisgICAg
ICAgIChKU0M6OnByaXZhdGVCcmFuZFJlcXVpcmVtZW50KToKKyAgICAgICAgKEpTQzo6cHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQ8RGlyZWN0RXZhbEV4ZWN1dGFibGU+KToKKyAgICAgICAgKEpTQzo6
Z2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAq
IHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9EaXJlY3RFdmFs
RXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OkRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVh
dGUpOgorICAgICAgICAoSlNDOjpEaXJlY3RFdmFsRXhlY3V0YWJsZTo6RGlyZWN0RXZhbEV4ZWN1
dGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuaDoKKyAgICAg
ICAgKiBydW50aW1lL0V2YWxFeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRh
YmxlOjpleGVjdXRhYmxlSW5mbyBjb25zdCk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxl
Ojpwcml2YXRlQnJhbmRSZXF1aXJlbWVudCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0ZVByaXZhdGVTeW1ib2wpOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU1Nj
b3BlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNTY29wZTo6Y29sbGVjdENsb3N1cmVWYXJpYWJsZXNV
bmRlclREWik6CisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0Lmg6CisgICAg
ICAgIChKU0M6OkpTU3ltYm9sVGFibGVPYmplY3Q6OnNldFN5bWJvbFRhYmxlKToKKyAgICAgICAg
KiBydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9P
cHRpb25zLmg6CisgICAgICAgICogcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oOgorICAgICAg
ICAqIHJ1bnRpbWUvU3ltYm9sLmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sOjpjcmVhdGVQcml2
YXRlKToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbC5oOgorICAgICAgICAqIHJ1bnRpbWUvU3lt
Ym9sVGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZTo6Y2xvbmVTY29wZVBhcnQp
OgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuaDoKKwogMjAyMC0wMi0xMiAgQ2FpdGxp
biBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtKU0NdIEFkZCBzdXBwb3J0
IGZvciBwcml2YXRlIGNsYXNzIGZpZWxkcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAppbmRleCAwYTNiNmNlZjMxZC4uYmJj
ZmUyYTI1ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWls
dGluRXhlY3V0YWJsZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9C
dWlsdGluRXhlY3V0YWJsZXMuY3BwCkBAIC01OSw3ICs1OSw3IEBAIFNvdXJjZUNvZGUgQnVpbHRp
bkV4ZWN1dGFibGVzOjpkZWZhdWx0Q29uc3RydWN0b3JTb3VyY2VDb2RlKENvbnN0cnVjdG9yS2lu
ZCBjb25zCiAgICAgcmV0dXJuIFNvdXJjZUNvZGUoKTsKIH0KIAotVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yKENv
bnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKQorVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRGVmYXVs
dENvbnN0cnVjdG9yKENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50
aWZpZXImIG5hbWUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVu
dCkKIHsKICAgICBzd2l0Y2ggKGNvbnN0cnVjdG9yS2luZCkgewogICAgIGNhc2UgQ29uc3RydWN0
b3JLaW5kOjpOb25lOgpAQCAtNjcsNyArNjcsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoQ29uc3RydQog
ICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnN0cnVjdG9yS2luZDo6QmFzZToKICAgICBjYXNl
IENvbnN0cnVjdG9yS2luZDo6RXh0ZW5kczoKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUV4ZWN1dGFi
bGUobV92bSwgZGVmYXVsdENvbnN0cnVjdG9yU291cmNlQ29kZShjb25zdHJ1Y3RvcktpbmQpLCBu
YW1lLCBjb25zdHJ1Y3RvcktpbmQsIENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdCwgbmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpOworICAgICAgICByZXR1cm4gY3JlYXRlRXhlY3V0YWJs
ZShtX3ZtLCBkZWZhdWx0Q29uc3RydWN0b3JTb3VyY2VDb2RlKGNvbnN0cnVjdG9yS2luZCksIG5h
bWUsIGNvbnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0LCBuZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplciwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOwogICAgIH0K
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTc4LDcg
Kzc4LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6
Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUoY29uc3QgU28KICAgICByZXR1cm4gY3JlYXRlRXhlY3V0
YWJsZShtX3ZtLCBjb2RlLCBuYW1lLCBjb25zdHJ1Y3RvcktpbmQsIGNvbnN0cnVjdEFiaWxpdHks
IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObyk7CiB9CiAKLVVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUoVk0mIHZtLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIENvbnN0cnVj
dG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0
eSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIp
CitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVF
eGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBjb25zdCBJZGVudGlm
aWVyJiBuYW1lLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmls
aXR5IGNvbnN0cnVjdEFiaWxpdHksIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRS
ZXF1aXJlbWVudCkKIHsKICAgICAvLyBGSVhNRTogQ2FuIHdlIGp1c3QgbWFrZSBNZXRhRGF0YSBj
b21wdXRhdGlvbiBiZSBjb25zdGV4cHIgYW5kIGhhdmUgdGhlIGNvbXBpbGVyIGRvIHRoaXMgZm9y
IHVzPwogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTMy
NzIKQEAgLTI1MSw3ICsyNTEsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRp
bkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgUwogICAgICAgICB9
CiAgICAgfQogCi0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0
YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUodm0sIHNvdXJjZSwgJm1l
dGFkYXRhLCBraW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNz
aWMsIFdURjo6bnVsbG9wdCwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBuZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplciwgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IpOworICAgIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBzb3VyY2UsICZtZXRhZGF0YSwga2luZCwgY29u
c3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBXVEY6Om51bGxvcHQs
IERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIHBy
aXZhdGVCcmFuZFJlcXVpcmVtZW50LCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3Rvcik7
CiAgICAgcmV0dXJuIGZ1bmN0aW9uRXhlY3V0YWJsZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCmluZGV4IDQ1MTYzOGU4
NzNmLi40M2UzODI3NWIxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaApAQCAtNTgsOSArNTgsOSBAQCBTb3VyY2VDb2RlIG5h
bWUjI1NvdXJjZSgpOwogI3VuZGVmIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTCiAKICAgICBz
dGF0aWMgU291cmNlQ29kZSBkZWZhdWx0Q29uc3RydWN0b3JTb3VyY2VDb2RlKENvbnN0cnVjdG9y
S2luZCk7Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZURlZmF1bHRDb25z
dHJ1Y3RvcihDb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3Jl
YXRlRGVmYXVsdENvbnN0cnVjdG9yKENvbnN0cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYg
bmFtZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50
KTsKIAotICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlRXhlY3V0
YWJsZShWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBJZGVudGlmaWVyJiwgQ29uc3RydWN0
b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcik7Cisg
ICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVFeGVjdXRhYmxlKFZN
JiwgY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXImLCBDb25zdHJ1Y3RvcktpbmQs
IENvbnN0cnVjdEFiaWxpdHksIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJh
bmRSZXF1aXJlbWVudCA9IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lKTsKIAogICAgIHZv
aWQgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCmluZGV4IDg0NDA5MjRiYTUxLi5mNDdjMDVlYWM4YyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaApAQCAt
MTY4LDYgKzE2OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKHdlYkFzc2VtYmx5Q29t
cGlsZVN0cmVhbWluZ0ludGVybmFsKSBcCiAgICAgbWFjcm8od2ViQXNzZW1ibHlJbnN0YW50aWF0
ZVN0cmVhbWluZ0ludGVybmFsKSBcCiAgICAgbWFjcm8oaW5zdGFuY2VGaWVsZEluaXRpYWxpemVy
KSBcCisgICAgbWFjcm8ocHJpdmF0ZUJyYW5kKSBcCiAgICAgbWFjcm8oY3JlYXRlUHJpdmF0ZVN5
bWJvbCkKIAogbmFtZXNwYWNlIFN5bWJvbHMgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAppbmRleCA3N2YxOTI5MDY5MC4uY2JlM2FiOTc2NGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5m
by5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5o
CkBAIC0zNiwxMCArMzYsMTEgQEAgZW51bSBjbGFzcyBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
ciA6IHVpbnQ4X3QgeyBObywgWWVzIH07CiAvLyBGSVhNRTogVGhlc2UgZmxhZ3MsIFBhcnNlck1v
ZGVzIGFuZCBwcm9wYWdhdGlvbiB0byBYWFhDb2RlQmxvY2tzIHNob3VsZCBiZSByZW9yZ2FuaXpl
ZC4KIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDcKIHN0
cnVjdCBFeGVjdXRhYmxlSW5mbyB7Ci0gICAgRXhlY3V0YWJsZUluZm8oYm9vbCB1c2VzRXZhbCwg
Ym9vbCBpc1N0cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5j
dGlvbiwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgSlNQYXJzZXJTY3JpcHRNb2Rl
IHNjcmlwdE1vZGUsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIFNvdXJjZVBhcnNlTW9kZSBw
YXJzZU1vZGUsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJy
b3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNDbGFzc0NvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBl
dmFsQ29udGV4dFR5cGUpCisgICAgRXhlY3V0YWJsZUluZm8oYm9vbCB1c2VzRXZhbCwgYm9vbCBp
c1N0cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3RvciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQg
cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24sIENvbnN0cnVj
dG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBT
dXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBEZXJp
dmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250
ZXh0LCBib29sIGlzQ2xhc3NDb250ZXh0LCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBl
KQogICAgICAgICA6IG1fdXNlc0V2YWwodXNlc0V2YWwpCiAgICAgICAgICwgbV9pc1N0cmljdE1v
ZGUoaXNTdHJpY3RNb2RlKQogICAgICAgICAsIG1faXNDb25zdHJ1Y3Rvcihpc0NvbnN0cnVjdG9y
KQorICAgICAgICAsIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KSkKICAgICAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0
aW9uKGlzQnVpbHRpbkZ1bmN0aW9uKQogICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKQogICAgICAgICAsIG1fc3VwZXJCaW5k
aW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdXBlckJpbmRpbmcpKQpAQCAtNTksNiArNjAsNyBA
QCBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewogICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJl
dHVybiBtX3VzZXNFdmFsOyB9CiAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVy
biBtX2lzU3RyaWN0TW9kZTsgfQogICAgIGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0
dXJuIG1faXNDb25zdHJ1Y3RvcjsgfQorICAgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZh
dGVCcmFuZFJlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQ+KG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOyB9CiAgICAgYm9vbCBp
c0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0K
ICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KICAgICBTdXBl
ckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3VwZXJC
aW5kaW5nPihtX3N1cGVyQmluZGluZyk7IH0KQEAgLTc0LDYgKzc2LDcgQEAgcHJpdmF0ZToKICAg
ICB1bnNpZ25lZCBtX3VzZXNFdmFsIDogMTsKICAgICB1bnNpZ25lZCBtX2lzU3RyaWN0TW9kZSA6
IDE7CiAgICAgdW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKKyAgICB1bnNpZ25lZCBtX3By
aXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1bmN0
aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CiAgICAgdW5zaWdu
ZWQgbV9zdXBlckJpbmRpbmcgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggNTg5MWYyYTVjMjUuLjRiNWM3MGE3
YjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5jcHAKQEAgLTg0LDYgKzg0LDEwIEBAIFVubGlua2VkQ29kZUJsb2NrOjpVbmxp
bmtlZENvZGVCbG9jayhWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDb2RlVHlwZSBjb2Rl
CiAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoaG9sZExvY2soY2VsbExvY2soKSkp
OwogICAgICAgICBtX3JhcmVEYXRhLT5tX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpZZXMpOwogICAg
IH0KKyAgICBpZiAoaW5mby5wcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpID09IFByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50OjpOZWVkZWQpIHsKKyAgICAgICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2Fy
eShob2xkTG9jayhjZWxsTG9jaygpKSk7CisgICAgICAgIG1fcmFyZURhdGEtPm1fcHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJpdmF0ZUJyYW5kUmVxdWly
ZW1lbnQ6Ok5lZWRlZCk7CisgICAgfQogfQogCiB2b2lkIFVubGlua2VkQ29kZUJsb2NrOjp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IGRk
MjE3YjdmZDRmLi5iMzJkZTRiZTU5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTI2Nyw2ICsyNjcsMTMgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vOwogICAgIH0K
IAorICAgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkg
Y29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX3JhcmVEYXRhKQorICAgICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PFByaXZhdGVCcmFuZFJlcXVpcmVtZW50PihtX3JhcmVEYXRhLT5tX3ByaXZh
dGVCcmFuZFJlcXVpcmVtZW50KTsKKyAgICAgICAgcmV0dXJuIFByaXZhdGVCcmFuZFJlcXVpcmVt
ZW50OjpOb25lOworICAgIH0KKwogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0Owog
CiAgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBsaXZlbmVzc0FuYWx5c2lzKENvZGVCbG9j
ayogY29kZUJsb2NrKQpAQCAtNDA5LDYgKzQxNiw3IEBAIHB1YmxpYzoKICAgICAgICAgUmVmQ291
bnRlZEFycmF5PENvbnN0YW50SWRlbnRpZmllclNldEVudHJ5PiBtX2NvbnN0YW50SWRlbnRpZmll
clNldHM7CiAKICAgICAgICAgdW5zaWduZWQgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA6
IDE7CisgICAgICAgIHVuc2lnbmVkIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgOiAxOwogICAg
IH07CiAKICAgICBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNldChJbnN0cnVjdGlvblN0cmVhbTo6T2Zm
c2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9ja0dlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmgKaW5kZXggMjEzYTNhODMyZDcuLmY2NzM0YWIwMjli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2tHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaApAQCAtNTAsNiArNTAsNyBAQCBwdWJsaWM6CiAgICAg
U3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5z
dXBlckJpbmRpbmcoKTsgfQogICAgIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlKCkgY29u
c3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnNjcmlwdE1vZGUoKTsgfQogICAgIE5lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkgY29uc3QgeyByZXR1
cm4gbV9jb2RlQmxvY2stPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCk7IH0KKyAgICBQcml2
YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fY29kZUJsb2NrLT5wcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpOyB9CiAgICAgYm9vbCBp
c1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7
IH0KICAgICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnVzZXNF
dmFsKCk7IH0KICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4g
bV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRl
eCBlM2ZhZGRjYmE5Ni4uZDYxMmQzYTI3YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApA
QCAtNzEsMTAgKzcxLDEwIEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5l
cmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAKICAgICBib29sIGlzQ2xhc3NDb250ZXh0
ID0gZXhlY3V0YWJsZS0+c3VwZXJCaW5kaW5nKCkgPT0gU3VwZXJCaW5kaW5nOjpOZWVkZWQ7CiAK
LSAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrOjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29kZSwgRXhlY3V0YWJsZUluZm8oZnVuY3Rp
b24tPnVzZXNFdmFsKCksIGZ1bmN0aW9uLT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2RlRm9y
Q29uc3RydWN0LCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24sIGV4ZWN1
dGFibGUtPmNvbnN0cnVjdG9yS2luZCgpLCBzY3JpcHRNb2RlLCBleGVjdXRhYmxlLT5zdXBlckJp
bmRpbmcoKSwgcGFyc2VNb2RlLCBleGVjdXRhYmxlLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgZXhl
Y3V0YWJsZS0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgZmFsc2UsIGlzQ2xhc3NDb250
ZXh0LCBFdmFsQ29udGV4dFR5cGU6OkZ1bmN0aW9uRXZhbENvbnRleHQpLCBjb2RlR2VuZXJhdGlv
bk1vZGUpOworICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IFVubGlua2Vk
RnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSh2bSwgRnVuY3Rpb25Db2RlLCBFeGVjdXRhYmxlSW5m
byhmdW5jdGlvbi0+dXNlc0V2YWwoKSwgZnVuY3Rpb24tPmlzU3RyaWN0TW9kZSgpLCBraW5kID09
IENvZGVGb3JDb25zdHJ1Y3QsIGV4ZWN1dGFibGUtPnByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCks
IGZ1bmN0aW9uS2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwgZXhlY3V0YWJsZS0+Y29u
c3RydWN0b3JLaW5kKCksIHNjcmlwdE1vZGUsIGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpLCBw
YXJzZU1vZGUsIGV4ZWN1dGFibGUtPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBleGVjdXRhYmxlLT5u
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBmYWxzZSwgaXNDbGFzc0NvbnRleHQsIEV2YWxD
b250ZXh0VHlwZTo6RnVuY3Rpb25FdmFsQ29udGV4dCksIGNvZGVHZW5lcmF0aW9uTW9kZSk7CiAK
LSAgICBWYXJpYWJsZUVudmlyb25tZW50IHBhcmVudFNjb3BlVERaVmFyaWFibGVzID0gZXhlY3V0
YWJsZS0+cGFyZW50U2NvcGVURFpWYXJpYWJsZXMoKTsKLSAgICBlcnJvciA9IEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0ZSh2bSwgZnVuY3Rpb24uZ2V0KCksIHNvdXJjZSwgcmVzdWx0LCBjb2Rl
R2VuZXJhdGlvbk1vZGUsICZwYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CisgICAgVmFyaWFibGVF
bnZpcm9ubWVudCBwYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQgPSBleGVjdXRhYmxlLT5w
YXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQoKTsKKyAgICBlcnJvciA9IEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0ZSh2bSwgZnVuY3Rpb24uZ2V0KCksIHNvdXJjZSwgcmVzdWx0LCBjb2Rl
R2VuZXJhdGlvbk1vZGUsICZwYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQpOwogCiAgICAg
aWYgKGVycm9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC04Miw3ICs4
Miw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2Vk
RnVuY3Rpb25Db2RlQmxvY2soCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHBhcmVudFNvdXJjZSwgRnVuY3Rpb25N
ZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGtpbmQsIENvbnN0cnVjdEFi
aWxpdHkgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIE9w
dGlvbmFsPENvbXBhY3RWYXJpYWJsZU1hcDo6SGFuZGxlPiBwYXJlbnRTY29wZVREWlZhcmlhYmxl
cywgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNCdWlsdGluRGVm
YXVsdENsYXNzQ29uc3RydWN0b3IpCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3Qg
U291cmNlQ29kZSYgcGFyZW50U291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5s
aW5rZWRGdW5jdGlvbktpbmQga2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5
LCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgT3B0aW9uYWw8Q29tcGFjdFZhcmlhYmxl
TWFwOjpIYW5kbGU+IHBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCwgRGVyaXZlZENvbnRl
eHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVC
cmFuZFJlcXVpcmVtZW50LCBib29sIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKQog
ICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQogICAgICwgbV9maXJzdExpbmVPZmZzZXQobm9kZS0+
Zmlyc3RMaW5lKCkgLSBwYXJlbnRTb3VyY2UuZmlyc3RMaW5lKCkub25lQmFzZWRJbnQoKSkKICAg
ICAsIG1faXNJblN0cmljdENvbnRleHQobm9kZS0+aXNJblN0cmljdENvbnRleHQoKSkKQEAgLTEw
Myw2ICsxMDMsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdAogICAgICwgbV90eXBlUHJvZmls
aW5nU3RhcnRPZmZzZXQobm9kZS0+ZnVuY3Rpb25LZXl3b3JkU3RhcnQoKSkKICAgICAsIG1fdHlw
ZVByb2ZpbGluZ0VuZE9mZnNldChub2RlLT5zdGFydFN0YXJ0T2Zmc2V0KCkgKyBub2RlLT5zb3Vy
Y2UoKS5sZW5ndGgoKSAtIDEpCiAgICAgLCBtX3BhcmFtZXRlckNvdW50KG5vZGUtPnBhcmFtZXRl
ckNvdW50KCkpCisgICAgLCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50KHN0YXRpY19jYXN0PHVu
c2lnbmVkPihwcml2YXRlQnJhbmRSZXF1aXJlbWVudCkpCiAgICAgLCBtX2ZlYXR1cmVzKDApCiAg
ICAgLCBtX3NvdXJjZVBhcnNlTW9kZShub2RlLT5wYXJzZU1vZGUoKSkKICAgICAsIG1fY29uc3Ry
dWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihub2RlLT5jb25zdHJ1Y3RvcktpbmQoKSkp
CkBAIC0xMjIsMTIgKzEyMywxMyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdAogICAgIEFTU0VS
VChtX3NjcmlwdE1vZGUgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNjcmlwdE1vZGUpKTsKICAg
ICBBU1NFUlQobV9zdXBlckJpbmRpbmcgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPnN1
cGVyQmluZGluZygpKSk7CiAgICAgQVNTRVJUKG1fZGVyaXZlZENvbnRleHRUeXBlID09IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihkZXJpdmVkQ29udGV4dFR5cGUpKTsKKyAgICBBU1NFUlQobV9wcml2
YXRlQnJhbmRSZXF1aXJlbWVudCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQpKTsKICAgICBBU1NFUlQoIShtX2lzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0
cnVjdG9yICYmIGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSkpOwog
ICAgIEFTU0VSVCghbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciB8fCAoaXNDbGFzc0NvbnN0
cnVjdG9yRnVuY3Rpb24oKSB8fCBkZXJpdmVkQ29udGV4dFR5cGUgPT0gRGVyaXZlZENvbnRleHRU
eXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KSk7CiAgICAgaWYgKCFub2RlLT5jbGFzc1Nv
dXJjZSgpLmlzTnVsbCgpKQogICAgICAgICBzZXRDbGFzc1NvdXJjZShub2RlLT5jbGFzc1NvdXJj
ZSgpKTsKLSAgICBpZiAocGFyZW50U2NvcGVURFpWYXJpYWJsZXMpCi0gICAgICAgIGVuc3VyZVJh
cmVEYXRhKCkubV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcyA9IFdURk1vdmUoKnBhcmVudFNjb3Bl
VERaVmFyaWFibGVzKTsKKyAgICBpZiAocGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50KQor
ICAgICAgICBlbnN1cmVSYXJlRGF0YSgpLm1fcGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50
ID0gV1RGTW92ZSgqcGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50KTsKIH0KIAogVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6On5VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS5oCmluZGV4IDk4NzM4MzI0ZDc3Li40NjM5MGMwYjYyYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlLmgKQEAgLTcwLDEwICs3MCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biAmdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5zcGFjZTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShWTSYgdm0sIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2Vk
RnVuY3Rpb25LaW5kIHVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0
cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBPcHRpb25hbDxDb21w
YWN0VmFyaWFibGVNYXA6OkhhbmRsZT4gcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIERlcml2ZWRD
b250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
IG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0Nv
bnN0cnVjdG9yID0gZmFsc2UpCisgICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiBjcmVhdGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uTWV0YWRh
dGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwg
Q29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUgc2Ny
aXB0TW9kZSwgT3B0aW9uYWw8Q29tcGFjdFZhcmlhYmxlTWFwOjpIYW5kbGU+IHBhcmVudFNjb3Bl
VmFyaWFibGVFbnZpcm9ubWVudCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlw
ZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIs
IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29sIGlz
QnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yID0gZmFsc2UpCiAgICAgewogICAgICAgICBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0uaGVhcCkpCi0gICAgICAgICAg
ICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgbm9kZSwgdW5saW5rZWRGdW5jdGlvbktpbmQs
IGNvbnN0cnVjdEFiaWxpdHksIHNjcmlwdE1vZGUsIFdURk1vdmUocGFyZW50U2NvcGVURFpWYXJp
YWJsZXMpLCBkZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBp
c0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3Rvcik7CisgICAgICAgICAgICBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1
cmUuZ2V0KCksIHNvdXJjZSwgbm9kZSwgdW5saW5rZWRGdW5jdGlvbktpbmQsIGNvbnN0cnVjdEFi
aWxpdHksIHNjcmlwdE1vZGUsIFdURk1vdmUocGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50
KSwgZGVyaXZlZENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgcHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQsIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKTsKICAg
ICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIGluc3Rh
bmNlOwogICAgIH0KQEAgLTE0Myw2ICsxNDMsOCBAQCBwdWJsaWM6CiAgICAgQ29kZUZlYXR1cmVz
IGZlYXR1cmVzKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlczsgfQogICAgIGJvb2wgaGFzQ2Fw
dHVyZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX2hhc0NhcHR1cmVkVmFyaWFibGVzOyB9
CiAKKyAgICBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFByaXZhdGVCcmFuZFJlcXVpcmVtZW50PihtX3By
aXZhdGVCcmFuZFJlcXVpcmVtZW50KTsgfQorCiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5l
ZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7
CiAKQEAgLTE2OCwxMSArMTcwLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICFtX3JhcmVE
YXRhLT5tX2NsYXNzU291cmNlLmlzTnVsbCgpOwogICAgIH0KIAotICAgIFZhcmlhYmxlRW52aXJv
bm1lbnQgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMoKSBjb25zdAorICAgIFZhcmlhYmxlRW52aXJv
bm1lbnQgcGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50KCkgY29uc3QKICAgICB7Ci0gICAg
ICAgIGlmICghbV9yYXJlRGF0YSB8fCAhbV9yYXJlRGF0YS0+bV9wYXJlbnRTY29wZVREWlZhcmlh
YmxlcykKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhIHx8ICFtX3JhcmVEYXRhLT5tX3BhcmVudFNj
b3BlVmFyaWFibGVFbnZpcm9ubWVudCkKICAgICAgICAgICAgIHJldHVybiBWYXJpYWJsZUVudmly
b25tZW50KCk7Ci0gICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX3BhcmVudFNjb3BlVERaVmFy
aWFibGVzLmVudmlyb25tZW50KCkudG9WYXJpYWJsZUVudmlyb25tZW50KCk7CisgICAgICAgIHJl
dHVybiBtX3JhcmVEYXRhLT5tX3BhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudC5lbnZpcm9u
bWVudCgpLnRvVmFyaWFibGVFbnZpcm9ubWVudCgpOwogICAgIH0KICAgICAKICAgICBib29sIGlz
QXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGlzQXJyb3dGdW5jdGlvblBhcnNlTW9kZShw
YXJzZU1vZGUoKSk7IH0KQEAgLTIwOCw3ICsyMTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIFNvdXJj
ZUNvZGUgbV9jbGFzc1NvdXJjZTsKICAgICAgICAgU3RyaW5nIG1fc291cmNlVVJMRGlyZWN0aXZl
OwogICAgICAgICBTdHJpbmcgbV9zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlOwotICAgICAgICBD
b21wYWN0VmFyaWFibGVNYXA6OkhhbmRsZSBtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzOworICAg
ICAgICBDb21wYWN0VmFyaWFibGVNYXA6OkhhbmRsZSBtX3BhcmVudFNjb3BlVmFyaWFibGVFbnZp
cm9ubWVudDsKICAgICAgICAgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiBtX2luc3RhbmNlRmllbGRM
b2NhdGlvbnM7CiAgICAgfTsKIApAQCAtMjI5LDcgKzIzMSw3IEBAIHB1YmxpYzoKICAgICB9CiAK
IHByaXZhdGU6Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0mLCBTdHJ1Y3R1cmUq
LCBjb25zdCBTb3VyY2VDb2RlJiwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBVbmxpbmtlZEZ1bmN0
aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlLCBPcHRpb25hbDxD
b21wYWN0VmFyaWFibGVNYXA6OkhhbmRsZT4sICBKU0M6OkRlcml2ZWRDb250ZXh0VHlwZSwgSlND
OjpOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3ND
b25zdHJ1Y3Rvcik7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0mLCBTdHJ1Y3R1
cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBVbmxpbmtlZEZ1
bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlLCBPcHRpb25h
bDxDb21wYWN0VmFyaWFibGVNYXA6OkhhbmRsZT4sICBKU0M6OkRlcml2ZWRDb250ZXh0VHlwZSwg
SlNDOjpOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQs
IGJvb2wgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IpOwogICAgIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKERlY29kZXImLCBjb25zdCBDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGUm
KTsKIAogICAgIHZvaWQgZGVjb2RlQ2FjaGVkQ29kZUJsb2NrcyhWTSYpOwpAQCAtMjU5LDcgKzI2
MSw4IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9pc0NhY2hlZCA6IDE7CiAgICAgdW5zaWdu
ZWQgbV90eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQ7CiAgICAgdW5zaWduZWQgbV90eXBlUHJvZmls
aW5nRW5kT2Zmc2V0OwotICAgIHVuc2lnbmVkIG1fcGFyYW1ldGVyQ291bnQ7CisgICAgdW5zaWdu
ZWQgbV9wYXJhbWV0ZXJDb3VudDozMTsKKyAgICB1bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVp
cmVtZW50IDogMTsKICAgICBDb2RlRmVhdHVyZXMgbV9mZWF0dXJlczsKICAgICBTb3VyY2VQYXJz
ZU1vZGUgbV9zb3VyY2VQYXJzZU1vZGU7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQg
OiAyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBhMzQyNGU2MjhhZi4uY2JlOGFjMmFkMzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwCkBAIC0yOTQsNyArMjk0LDcgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5l
cmF0b3I6OmdlbmVyYXRlKCkKICAgICByZXR1cm4gUGFyc2VyRXJyb3IoUGFyc2VyRXJyb3I6OkVy
cm9yTm9uZSk7CiB9CiAKLUJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYg
dm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9k
ZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpCitC
eXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBQcm9ncmFtTm9kZSog
cHJvZ3JhbU5vZGUsIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25T
ZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFZhcmlhYmxl
RW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCkKICAgICA6IEJ5dGVj
b2RlR2VuZXJhdG9yQmFzZShtYWtlVW5pcXVlPFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yPih2
bSwgY29kZUJsb2NrKSwgQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNW
aXJ0dWFsUmVnaXN0ZXJzKCkpCiAgICAgLCBtX2NvZGVHZW5lcmF0aW9uTW9kZShjb2RlR2VuZXJh
dGlvbk1vZGUpCiAgICAgLCBtX3Njb3BlTm9kZShwcm9ncmFtTm9kZSkKQEAgLTMwMyw3ICszMDMs
NyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBQcm9ncmFt
Tm9kZSogcHJvZ3JhbU5vZGUsIFVubGlua2VkUAogICAgICwgbV92bSh2bSkKICAgICAsIG1fbmVl
ZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KHByb2dyYW1Ob2RlLT51c2VzQXJyb3dGdW5j
dGlvbigpIHx8IHByb2dyYW1Ob2RlLT51c2VzRXZhbCgpKQogewotICAgIEFTU0VSVF9VTlVTRUQo
cGFyZW50U2NvcGVURFpWYXJpYWJsZXMsICFwYXJlbnRTY29wZVREWlZhcmlhYmxlcy0+c2l6ZSgp
KTsKKyAgICBBU1NFUlRfVU5VU0VEKHBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCwgIXBh
cmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudC0+c2l6ZSgpKTsKIAogICAgIG1fY29kZUJsb2Nr
LT5zZXROdW1QYXJhbWV0ZXJzKDEpOyAvLyBBbGxvY2F0ZSBzcGFjZSBmb3IgInRoaXMiCiAKQEAg
LTMzNSw3ICszMzUsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0m
IHZtLCBQcm9ncmFtTm9kZSogcHJvZ3JhbU5vZGUsIFVubGlua2VkUAogICAgIH0KIH0KIAotQnl0
ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBm
dW5jdGlvbk5vZGUsIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9u
U2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBWYXJpYWJs
ZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcykKK0J5dGVjb2RlR2VuZXJhdG9y
OjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJh
dGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCog
cGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50KQogICAgIDogQnl0ZWNvZGVHZW5lcmF0b3JC
YXNlKG1ha2VVbmlxdWU8VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I+KHZtLCBjb2RlQmxvY2sp
LCBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3Rl
cnMoKSkKICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2RlKGNvZGVHZW5lcmF0aW9uTW9kZSkKICAg
ICAsIG1fc2NvcGVOb2RlKGZ1bmN0aW9uTm9kZSkKQEAgLTM1NCw2ICszNTQsOCBAQCBCeXRlY29k
ZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0
aW9uTm9kZSwgVW5saW5rZQogICAgICwgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRl
eHQoZnVuY3Rpb25Ob2RlLT51c2VzQXJyb3dGdW5jdGlvbigpIHx8IGZ1bmN0aW9uTm9kZS0+dXNl
c0V2YWwoKSkKICAgICAsIG1fZGVyaXZlZENvbnRleHRUeXBlKGNvZGVCbG9jay0+ZGVyaXZlZENv
bnRleHRUeXBlKCkpCiB7CisgICAgcHVzaFByaXZhdGVBY2Nlc3NOYW1lcygqcGFyZW50U2NvcGVW
YXJpYWJsZUVudmlyb25tZW50KTsKKwogICAgIFN5bWJvbFRhYmxlKiBmdW5jdGlvblN5bWJvbFRh
YmxlID0gU3ltYm9sVGFibGU6OmNyZWF0ZShtX3ZtKTsKICAgICBmdW5jdGlvblN5bWJvbFRhYmxl
LT5zZXRVc2VzTm9uU3RyaWN0RXZhbChtX3VzZXNOb25TdHJpY3RFdmFsKTsKICAgICBpbnQgc3lt
Ym9sVGFibGVDb25zdGFudEluZGV4ID0gMDsKQEAgLTY5Miw4ICs2OTQsMTMgQEAgQnl0ZWNvZGVH
ZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlv
bk5vZGUsIFVubGlua2UKICAgICAgICAgICAgICAgICBjYXNlIENvbnN0cnVjdG9yS2luZDo6Tm9u
ZToKICAgICAgICAgICAgICAgICBjYXNlIENvbnN0cnVjdG9yS2luZDo6QmFzZToKICAgICAgICAg
ICAgICAgICAgICAgZW1pdENyZWF0ZVRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUNsYXNzRmllbGRzKCkpCisgICAgICAgICAgICAgICAg
ICAgIGlmIChPcHRpb25zOjp1c2VDbGFzc0ZpZWxkcygpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIHNob3VsZEVtaXRQcml2YXRlQnJhbmQgPSBwcml2YXRlQnJhbmRSZXF1aXJlbWVu
dCgpID09IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOZWVkZWQ7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoc2hvdWxkRW1pdFByaXZhdGVCcmFuZCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlbWl0SW5zdGFsbFByaXZhdGVCcmFuZCgmbV90aGlzUmVnaXN0ZXIpOworCiAgICAg
ICAgICAgICAgICAgICAgICAgICBlbWl0SW5zdGFuY2VGaWVsZEluaXRpYWxpemF0aW9uSWZOZWVk
ZWQoJm1fdGhpc1JlZ2lzdGVyLCAmbV9jYWxsZWVSZWdpc3RlciwgbV9zY29wZU5vZGUtPnBvc2l0
aW9uKCksIG1fc2NvcGVOb2RlLT5wb3NpdGlvbigpLCBtX3Njb3BlTm9kZS0+cG9zaXRpb24oKSk7
CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgY2FzZSBDb25zdHJ1Y3RvcktpbmQ6OkV4dGVuZHM6CiAgICAgICAgICAgICAg
ICAgICAgIG1vdmVFbXB0eVZhbHVlKCZtX3RoaXNSZWdpc3Rlcik7CkBAIC03NTgsNyArNzY1LDcg
QEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25O
b2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKIAogICAgIC8vIEFsbCAiYWRkVmFyKCkicyBuZWVk
cyB0byBoYXBwZW4gYmVmb3JlICJpbml0aWFsaXplRGVmYXVsdFBhcmFtZXRlclZhbHVlc0FuZFNl
dHVwRnVuY3Rpb25TY29wZVN0YWNrKCkiIGlzIGNhbGxlZAogICAgIC8vIGJlY2F1c2UgYSBmdW5j
dGlvbidzIGRlZmF1bHQgcGFyYW1ldGVyIEV4cHJlc3Npb25Ob2RlcyB3aWxsIHVzZSB0ZW1wb3Jh
cnkgcmVnaXN0ZXJzLgotICAgIHB1c2hURFpWYXJpYWJsZXMoKnBhcmVudFNjb3BlVERaVmFyaWFi
bGVzLCBURFpDaGVja09wdGltaXphdGlvbjo6RG9Ob3RPcHRpbWl6ZSwgVERaUmVxdWlyZW1lbnQ6
OlVuZGVyVERaKTsKKyAgICBwdXNoVERaVmFyaWFibGVzKCpwYXJlbnRTY29wZVZhcmlhYmxlRW52
aXJvbm1lbnQsIFREWkNoZWNrT3B0aW1pemF0aW9uOjpEb05vdE9wdGltaXplLCBURFpSZXF1aXJl
bWVudDo6VW5kZXJURFopOwogCiAgICAgUmVmPExhYmVsPiBjYXRjaExhYmVsID0gbmV3TGFiZWwo
KTsKICAgICBUcnlEYXRhKiB0cnlGb3JtYWxQYXJhbWV0ZXJzRGF0YSA9IG51bGxwdHI7CkBAIC04
MjYsNyArODMzLDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2
bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICBwdXNoTGV4aWNhbFNj
b3BlKG1fc2NvcGVOb2RlLCBURFpDaGVja09wdGltaXphdGlvbjo6T3B0aW1pemUsIE5lc3RlZFNj
b3BlVHlwZTo6SXNOb3ROZXN0ZWQsIG51bGxwdHIsIHNob3VsZEluaXRpYWxpemVCbG9ja1Njb3Bl
ZEZ1bmN0aW9ucyk7CiB9CiAKLUJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihW
TSYgdm0sIEV2YWxOb2RlKiBldmFsTm9kZSwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29u
c3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpCitCeXRlY29k
ZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUs
IFVubGlua2VkRXZhbENvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRp
b25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBh
cmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCkKICAgICA6IEJ5dGVjb2RlR2VuZXJhdG9yQmFz
ZShtYWtlVW5pcXVlPFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yPih2bSwgY29kZUJsb2NrKSwg
Q29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJz
KCkpCiAgICAgLCBtX2NvZGVHZW5lcmF0aW9uTW9kZShjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAg
LCBtX3Njb3BlTm9kZShldmFsTm9kZSkKQEAgLTgzOSw3ICs4NDYsOCBAQCBCeXRlY29kZUdlbmVy
YXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlu
a2VkRXZhbENvZAogewogICAgIG1fY29kZUJsb2NrLT5zZXROdW1QYXJhbWV0ZXJzKDEpOwogCi0g
ICAgcHVzaFREWlZhcmlhYmxlcygqcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIFREWkNoZWNrT3B0
aW1pemF0aW9uOjpEb05vdE9wdGltaXplLCBURFpSZXF1aXJlbWVudDo6VW5kZXJURFopOworICAg
IHB1c2hQcml2YXRlQWNjZXNzTmFtZXMoKnBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCk7
CisgICAgcHVzaFREWlZhcmlhYmxlcygqcGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50LCBU
RFpDaGVja09wdGltaXphdGlvbjo6RG9Ob3RPcHRpbWl6ZSwgVERaUmVxdWlyZW1lbnQ6OlVuZGVy
VERaKTsKIAogICAgIGVtaXRFbnRlcigpOwogCkBAIC04ODQsNyArODkyLDcgQEAgQnl0ZWNvZGVH
ZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2YWxOb2RlLCBV
bmxpbmtlZEV2YWxDb2QKICAgICBwdXNoTGV4aWNhbFNjb3BlKG1fc2NvcGVOb2RlLCBURFpDaGVj
a09wdGltaXphdGlvbjo6T3B0aW1pemUsIE5lc3RlZFNjb3BlVHlwZTo6SXNOb3ROZXN0ZWQsIG51
bGxwdHIsIHNob3VsZEluaXRpYWxpemVCbG9ja1Njb3BlZEZ1bmN0aW9ucyk7CiB9CiAKLUJ5dGVj
b2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIE1vZHVsZVByb2dyYW1Ob2Rl
KiBtb2R1bGVQcm9ncmFtTm9kZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwg
Y29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpCitCeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBNb2R1bGVQcm9ncmFtTm9k
ZSogbW9kdWxlUHJvZ3JhbU5vZGUsIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY29k
ZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUs
IGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVu
dCkKICAgICA6IEJ5dGVjb2RlR2VuZXJhdG9yQmFzZShtYWtlVW5pcXVlPFVubGlua2VkQ29kZUJs
b2NrR2VuZXJhdG9yPih2bSwgY29kZUJsb2NrKSwgQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2Fs
bGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkpCiAgICAgLCBtX2NvZGVHZW5lcmF0aW9u
TW9kZShjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAgLCBtX3Njb3BlTm9kZShtb2R1bGVQcm9ncmFt
Tm9kZSkKQEAgLTg5NCw3ICs5MDIsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5l
cmF0b3IoVk0mIHZtLCBNb2R1bGVQcm9ncmFtTm9kZSogbW9kdWxlUHJvZ3JhbU5vZAogICAgICwg
bV91c2VzTm9uU3RyaWN0RXZhbChmYWxzZSkKICAgICAsIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVu
Y3Rpb25Db250ZXh0KG1vZHVsZVByb2dyYW1Ob2RlLT51c2VzQXJyb3dGdW5jdGlvbigpIHx8IG1v
ZHVsZVByb2dyYW1Ob2RlLT51c2VzRXZhbCgpKQogewotICAgIEFTU0VSVF9VTlVTRUQocGFyZW50
U2NvcGVURFpWYXJpYWJsZXMsICFwYXJlbnRTY29wZVREWlZhcmlhYmxlcy0+c2l6ZSgpKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKHBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCwgIXBhcmVudFNj
b3BlVmFyaWFibGVFbnZpcm9ubWVudC0+c2l6ZSgpKTsKIAogICAgIFN5bWJvbFRhYmxlKiBtb2R1
bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlID0gU3ltYm9sVGFibGU6OmNyZWF0ZShtX3ZtKTsKICAg
ICBtb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlLT5zZXRVc2VzTm9uU3RyaWN0RXZhbChtX3Vz
ZXNOb25TdHJpY3RFdmFsKTsKQEAgLTE4NTMsOCArMTg2MSwxMCBAQCBib29sIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjppbnN0YW50aWF0ZUxleGljYWxWYXJpYWJsZXMoY29uc3QgVmFyaWFibGVFbnZpcm9u
bWVudCYgbAogCiAgICAgICAgICAgICAvLyBGSVhNRTogb25seSBkbyB0aGlzIGlmIHRoZXJlIGlz
IGFuIGV2YWwoKSB3aXRoaW4gYSBuZXN0ZWQgc2NvcGUgLS0tIG90aGVyd2lzZSBpdCBpc24ndCBu
ZWVkZWQuCiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA2NjYzCi0gICAgICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNQcml2YXRlTmFtZSgp
KQotICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5hZGRQcml2YXRlTmFtZShlbnRyeS5rZXku
Z2V0KCkpOworICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVlLmlzUHJpdmF0ZUZpZWxkKCkpCisg
ICAgICAgICAgICAgICAgc3ltYm9sVGFibGUtPmFkZFByaXZhdGVOYW1lKGVudHJ5LmtleS5nZXQo
KSwgUHJpdmF0ZU5hbWVFbnRyeShQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzRGVjbGFyZWQp
KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGVudHJ5LnZhbHVlLmlzUHJpdmF0ZU1ldGhvZCgpKQor
ICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5hZGRQcml2YXRlTmFtZShlbnRyeS5rZXkuZ2V0
KCksIFByaXZhdGVOYW1lRW50cnkoUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc0RlY2xhcmVk
IHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc01ldGhvZCkpOwogICAgICAgICB9CiAgICAg
fQogICAgIHJldHVybiBoYXNDYXB0dXJlZFZhcmlhYmxlczsKQEAgLTI2NzgsMTIgKzI2ODgsNDUg
QEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcml2YXRlRmllbGRBZGQoUmVn
aXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCoKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKK3ZvaWQg
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDcmVhdGVQcml2YXRlQnJhbmQoUmVnaXN0ZXJJRCogc2Nv
cGUsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKK3sKKyAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gY3JlYXRlUHJpdmF0ZVN5bWJvbCA9IG1vdmVMaW5rVGltZUNvbnN0YW50KG51
bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OmNyZWF0ZVByaXZhdGVTeW1ib2wpOworCisgICAgQ2Fs
bEFyZ3VtZW50cyBhcmd1bWVudHMoKnRoaXMsIG51bGxwdHIsIDApOworICAgIGVtaXRMb2FkKGFy
Z3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CisgICAgUmVnaXN0ZXJJRCog
bmV3U3ltYm9sID0gZW1pdENhbGwoZmluYWxEZXN0aW5hdGlvbihudWxscHRyLCBjcmVhdGVQcml2
YXRlU3ltYm9sLmdldCgpKSwgY3JlYXRlUHJpdmF0ZVN5bWJvbC5nZXQoKSwgTm9FeHBlY3RlZEZ1
bmN0aW9uLCBhcmd1bWVudHMsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCwgRGVidWdnYWJs
ZUNhbGw6Ok5vKTsKKworICAgIFZhcmlhYmxlIHByaXZhdGVCcmFuZFZhciA9IHZhcmlhYmxlKHBy
b3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5wcml2YXRlQnJhbmRQcml2YXRlTmFtZSgpKTsK
KworICAgIGVtaXRQdXRUb1Njb3BlKHNjb3BlLCBwcml2YXRlQnJhbmRWYXIsIG5ld1N5bWJvbCwg
RG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6SW5pdGlhbGl6YXRpb24p
OworfQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SW5zdGFsbFByaXZhdGVCcmFuZChS
ZWdpc3RlcklEKiB0YXJnZXQpCit7CisgICAgVmFyaWFibGUgcHJpdmF0ZUJyYW5kVmFyID0gdmFy
aWFibGUocHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLnByaXZhdGVCcmFuZFByaXZhdGVO
YW1lKCkpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlQnJhbmRWYXJTY29wZSA9IGVt
aXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgcHJpdmF0ZUJyYW5kVmFyKTsKKyAgICBSZWdpc3RlcklE
KiBwcml2YXRlQnJhbmRTeW1ib2wgPSBlbWl0R2V0UHJpdmF0ZUJyYW5kKG5ld1RlbXBvcmFyeSgp
LCBwcml2YXRlQnJhbmRWYXJTY29wZS5nZXQoKSk7CisgICAgZW1pdFByaXZhdGVGaWVsZEFkZCh0
YXJnZXQsIHByaXZhdGVCcmFuZFN5bWJvbCwgcHJpdmF0ZUJyYW5kU3ltYm9sKTsKK30KKworUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRQcml2YXRlQnJhbmQoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBzY29wZSkKK3sKKyAgICBWYXJpYWJsZSBwcml2YXRlQnJhbmRW
YXIgPSB2YXJpYWJsZShwcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkucHJpdmF0ZUJyYW5k
UHJpdmF0ZU5hbWUoKSk7CisgICAgcmV0dXJuIGVtaXRHZXRGcm9tU2NvcGUoZHN0LCBzY29wZSwg
cHJpdmF0ZUJyYW5kVmFyLCBUaHJvd0lmTm90Rm91bmQpOworfQorCiBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdFByaXZhdGVGaWVsZFB1dChSZWdpc3RlcklEKiBiYXNlLCBSZWdp
c3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7CiAgICAgT3BQdXRCeVZhbERp
cmVjdDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIFB1dEJ5VmFsUHJpdmF0ZUZp
ZWxkUHV0KTsKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRDaGVja1ByaXZhdGVCcmFuZChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBicmFu
ZFN5bWJvbCkKK3sKKyAgICAvLyBUaGlzIGlzIGdvaW5nIHRvIHRyaG93IFR5cGVFcnJvciBpZiBi
cmFuZCBpcyBub3QgcHJlc2VudAorICAgIGVtaXREaXJlY3RHZXRCeVZhbChuZXdUZW1wb3Jhcnko
KSwgYmFzZSwgYnJhbmRTeW1ib2wpOworfQorCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
U3VwZXJTYW1wbGVyQmVnaW4oKQogewogICAgIE9wU3VwZXJTYW1wbGVyQmVnaW46OmVtaXQodGhp
cyk7CkBAIC0yODEyLDYgKzI4NTUsMzggQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6bGlmdFRE
WkNoZWNrSWZQb3NzaWJsZShjb25zdCBWYXJpYWJsZSYgdmFyaWFibGUpCiAgICAgfQogfQogCiti
b29sIEJ5dGVjb2RlR2VuZXJhdG9yOjppc1ByaXZhdGVNZXRob2QoY29uc3QgSWRlbnRpZmllciYg
aWRlbnQpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gbV9wcml2YXRlTmFtZXNTdGFjay5zaXpl
KCk7IGktLTsgKSB7CisgICAgICAgIGF1dG8mIG1hcCA9IG1fcHJpdmF0ZU5hbWVzU3RhY2tbaV07
CisgICAgICAgIGF1dG8gaXQgPSBtYXAuZmluZChpZGVudC5pbXBsKCkpOworICAgICAgICBpZiAo
aXQgIT0gbWFwLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGl0LT52YWx1ZS5pc01ldGhvZCgp
OworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBCeXRlY29kZUdlbmVyYXRv
cjo6cHVzaFByaXZhdGVBY2Nlc3NOYW1lcyhjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBlbnZp
cm9ubWVudCkKK3sKKyAgICBpZiAoIWVudmlyb25tZW50LnByaXZhdGVOYW1lc1NpemUoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgVmFyaWFibGVFbnZpcm9ubWVudDo6UHJpdmF0ZU5hbWVzIHBy
aXZhdGVOYW1lc01hcDsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGVudHJ5IDogZW52aXJvbm1lbnQu
cHJpdmF0ZU5hbWVzKCkpCisgICAgICAgIHByaXZhdGVOYW1lc01hcC5hZGQoZW50cnkua2V5LCBl
bnRyeS52YWx1ZSk7CisKKyAgICBtX3ByaXZhdGVOYW1lc1N0YWNrLmFwcGVuZChXVEZNb3ZlKHBy
aXZhdGVOYW1lc01hcCkpOworfQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwb3BQcml2YXRl
QWNjZXNzTmFtZXMoKQoreworICAgIGlmICghbV9wcml2YXRlTmFtZXNTdGFjay5zaXplKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fcHJpdmF0ZU5hbWVzU3RhY2sucmVtb3ZlTGFzdCgpOwor
fQorCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoVERaVmFyaWFibGVzKGNvbnN0IFZhcmlh
YmxlRW52aXJvbm1lbnQmIGVudmlyb25tZW50LCBURFpDaGVja09wdGltaXphdGlvbiBvcHRpbWl6
YXRpb24sIFREWlJlcXVpcmVtZW50IHJlcXVpcmVtZW50KQogewogICAgIGlmICghZW52aXJvbm1l
bnQuc2l6ZSgpKQpAQCAtMjgzNCw2ICsyOTA5LDI0IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OnB1c2hURFpWYXJpYWJsZXMoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgZW52aXJvbm1lbnQs
CiAgICAgbV9jYWNoZWRWYXJpYWJsZXNVbmRlclREWiA9IHsgfTsKIH0KIAordm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6Z2V0QXZhaWxhYmxlUHJpdmF0ZUFjY2Vzc05hbWVzKFZhcmlhYmxlRW52aXJv
bm1lbnQmIHJlc3VsdCkKK3sKKyAgICBTbWFsbFB0clNldDxVbmlxdWVkU3RyaW5nSW1wbCosIDE2
PiBleGNsdWRlZE5hbWVzOworICAgIGZvciAodW5zaWduZWQgaSA9IG1fcHJpdmF0ZU5hbWVzU3Rh
Y2suc2l6ZSgpOyBpLS07ICkgeworICAgICAgICBhdXRvJiBtYXAgPSBtX3ByaXZhdGVOYW1lc1N0
YWNrW2ldOworICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbWFwKSAgeworICAgICAgICAgICAg
aWYgKGVudHJ5LnZhbHVlLmlzUHJpdmF0ZUFjY2VzcygpKSB7CisgICAgICAgICAgICAgICAgaWYg
KCFleGNsdWRlZE5hbWVzLmNvbnRhaW5zKGVudHJ5LmtleS5nZXQoKSkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSByZXN1bHQuYWRkUHJpdmF0ZU5hbWUoZW50cnkua2V5
KTsKKyAgICAgICAgICAgICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IGVudHJ5
LnZhbHVlOworICAgICAgICAgICAgICAgICAgICBleGNsdWRlZE5hbWVzLmFkZChlbnRyeS5rZXku
Z2V0KCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgICAgIGV4Y2x1ZGVkTmFtZXMuYWRkKGVudHJ5LmtleS5nZXQoKSk7CisgICAgICAgIH0KKyAg
ICB9Cit9CisKIE9wdGlvbmFsPENvbXBhY3RWYXJpYWJsZU1hcDo6SGFuZGxlPiBCeXRlY29kZUdl
bmVyYXRvcjo6Z2V0VmFyaWFibGVzVW5kZXJURFooKQogewogICAgIGlmIChtX2NhY2hlZFZhcmlh
Ymxlc1VuZGVyVERaKSB7CkBAIC0yODY3LDYgKzI5NjAsOCBAQCBPcHRpb25hbDxDb21wYWN0VmFy
aWFibGVNYXA6OkhhbmRsZT4gQnl0ZWNvZGVHZW5lcmF0b3I6OmdldFZhcmlhYmxlc1VuZGVyVERa
KCkKICAgICAgICAgfQogICAgIH0KIAorICAgIGdldEF2YWlsYWJsZVByaXZhdGVBY2Nlc3NOYW1l
cyhlbnZpcm9ubWVudCk7CisKICAgICBtX2NhY2hlZFZhcmlhYmxlc1VuZGVyVERaID0gbV92bS5t
X2NvbXBhY3RWYXJpYWJsZU1hcC0+Z2V0KGVudmlyb25tZW50KTsKICAgICBtX2hhc0NhY2hlZFZh
cmlhYmxlc1VuZGVyVERaID0gIWVudmlyb25tZW50LmlzRW1wdHkoKTsKICAgICBpZiAoIW1faGFz
Q2FjaGVkVmFyaWFibGVzVW5kZXJURFopCkBAIC0zMDQ1LDkgKzMxNDAsOSBAQCBSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld01ldGhvZERlZmluaXRpb24oUmVnaXN0ZXJJRCog
ZHN0LCBNZXRob2REZQogfQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5l
d0RlZmF1bHRDb25zdHJ1Y3RvcihSZWdpc3RlcklEKiBkc3QsIENvbnN0cnVjdG9yS2luZCBjb25z
dHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsCi0gICAgY29uc3QgSWRlbnRpZmll
ciYgZWNtYU5hbWUsIGNvbnN0IFNvdXJjZUNvZGUmIGNsYXNzU291cmNlLCBOZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcikKKyAgICBjb25zdCBJZGVu
dGlmaWVyJiBlY21hTmFtZSwgY29uc3QgU291cmNlQ29kZSYgY2xhc3NTb3VyY2UsIE5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJh
bmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCkKIHsKLSAgICBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG1fdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCkt
PmNyZWF0ZURlZmF1bHRDb25zdHJ1Y3Rvcihjb25zdHJ1Y3RvcktpbmQsIG5hbWUsIG5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSA9IG1fdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNyZWF0ZURlZmF1bHRDb25zdHJ1
Y3Rvcihjb25zdHJ1Y3RvcktpbmQsIG5hbWUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBw
cml2YXRlQnJhbmRSZXF1aXJlbWVudCk7CiAgICAgZXhlY3V0YWJsZS0+c2V0SW52YWxpZFR5cGVQ
cm9maWxpbmdPZmZzZXRzKCk7CiAgICAgZXhlY3V0YWJsZS0+c2V0RWNtYU5hbWUoZWNtYU5hbWUp
OwogICAgIGV4ZWN1dGFibGUtPnNldENsYXNzU291cmNlKGNsYXNzU291cmNlKTsKQEAgLTMwNzcs
NyArMzE3Miw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3SW5zdGFu
Y2VGaWVsZEluaXRpYWxpemVyRnVuY3Rpb24oUmVnaXN0ZXJJCiAgICAgY29uc3QgYm9vbCBhbHdh
eXNTdHJpY3RJbkNsYXNzID0gdHJ1ZTsKICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSBtZXRhZGF0
YShwYXJzZXJBcmVuYSgpLCBKU1Rva2VuTG9jYXRpb24oKSwgSlNUb2tlbkxvY2F0aW9uKCksIDAs
IDAsIDAsIDAsIDAsIGFsd2F5c1N0cmljdEluQ2xhc3MsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwg
c3VwZXJCaW5kaW5nLCAwLCBwYXJzZU1vZGUsIGZhbHNlKTsKICAgICBtZXRhZGF0YS5maW5pc2hQ
YXJzaW5nKG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgSWRlbnRpZmllcigpLCBGdW5jdGlvbk1vZGU6
Ok1ldGhvZERlZmluaXRpb24pOwotICAgIGF1dG8gaW5pdGlhbGl6ZXIgPSBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgJm1ldGFk
YXRhLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxp
bmtlZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCBzY3JpcHRNb2RlKCksIFdURk1v
dmUodmFyaWFibGVzVW5kZXJURFopLCBuZXdEZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyOjpObyk7CisgICAgYXV0byBpbml0aWFsaXplciA9IFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgpLCAmbWV0
YWRhdGEsIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVu
bGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIHNjcmlwdE1vZGUoKSwgV1RG
TW92ZSh2YXJpYWJsZXNVbmRlclREWiksIG5ld0Rlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZSk7CiAg
ICAgaW5pdGlhbGl6ZXItPnNldEluc3RhbmNlRmllbGRMb2NhdGlvbnMoV1RGTW92ZShpbnN0YW5j
ZUZpZWxkTG9jYXRpb25zKSk7CiAKICAgICB1bnNpZ25lZCBpbmRleCA9IG1fY29kZUJsb2NrLT5h
ZGRGdW5jdGlvbkV4cHIoaW5pdGlhbGl6ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDMxMjk5NmIzMTY3
Li4zNTdjMjA2NWM1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNDAwLDYgKzQwMCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBib29sIG5lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dCgp
IGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0OyB9CiAg
ICAgICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlTm9kZS0+dXNlc0V2
YWwoKTsgfQogICAgICAgICBib29sIHVzZXNUaGlzKCkgY29uc3QgeyByZXR1cm4gbV9zY29wZU5v
ZGUtPnVzZXNUaGlzKCk7IH0KKyAgICAgICAgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+cHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQoKTsgfQogICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JL
aW5kKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmNvbnN0cnVjdG9yS2luZCgpOyB9CiAg
ICAgICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX2NvZGVC
bG9jay0+c3VwZXJCaW5kaW5nKCk7IH0KICAgICAgICAgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlw
dE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+c2NyaXB0TW9kZSgpOyB9CkBAIC03
NDcsNyArNzQ4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dE5ld0Z1bmN0aW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqKTsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiBk
c3QsIEZ1bmNFeHByTm9kZSopOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3RGVmYXVsdENv
bnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlm
aWVyJiBuYW1lLCBjb25zdCBJZGVudGlmaWVyJiBlY21hTmFtZSwgY29uc3QgU291cmNlQ29kZSYg
Y2xhc3NTb3VyY2UsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsKKyAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3RvcihSZWdpc3RlcklEKiBkc3QsIENvbnN0cnVj
dG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3QgSWRlbnRpZmllciYgZWNtYU5h
bWUsIGNvbnN0IFNvdXJjZUNvZGUmIGNsYXNzU291cmNlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
TmV3SW5zdGFuY2VGaWVsZEluaXRpYWxpemVyRnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBWZWN0
b3I8SlNUZXh0UG9zaXRpb24+JiYgaW5zdGFuY2VGaWVsZExvY2F0aW9ucywgYm9vbCBpc0Rlcml2
ZWQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24o
UmVnaXN0ZXJJRCosIEFycm93RnVuY0V4cHJOb2RlKik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXROZXdNZXRob2REZWZpbml0aW9uKFJlZ2lzdGVySUQqIGRzdCwgTWV0aG9kRGVmaW5pdGlvbk5v
ZGUqKTsKQEAgLTc5NCw2ICs3OTUsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRQcml2YXRlRmllbGRBZGQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCog
cHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFBy
aXZhdGVGaWVsZFB1dChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVn
aXN0ZXJJRCogdmFsdWUpOwogCisgICAgICAgIHZvaWQgZW1pdENyZWF0ZVByaXZhdGVCcmFuZChS
ZWdpc3RlcklEKiBkc3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7Cisg
ICAgICAgIHZvaWQgZW1pdEluc3RhbGxQcml2YXRlQnJhbmQoUmVnaXN0ZXJJRCogdGFyZ2V0KTsK
KyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldFByaXZhdGVCcmFuZChSZWdpc3RlcklEKiBkc3Qs
IFJlZ2lzdGVySUQqIHNjb3BlKTsKKyAgICAgICAgdm9pZCBlbWl0Q2hlY2tQcml2YXRlQnJhbmQo
UmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogYnJhbmQpOworCiAgICAgICAgIHZvaWQgZW1p
dFN1cGVyU2FtcGxlckJlZ2luKCk7CiAgICAgICAgIHZvaWQgZW1pdFN1cGVyU2FtcGxlckVuZCgp
OwogCkBAIC0xMTM0LDEwICsxMTQwLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
RGVyaXZlZENvbnRleHRUeXBlIG5ld0Rlcml2ZWRDb250ZXh0VHlwZSA9IERlcml2ZWRDb250ZXh0
VHlwZTo6Tm9uZTsKIAogICAgICAgICAgICAgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSBtZXRhZGF0YS0+aXNDb25zdHJ1Y3RvckFuZE5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyKCkgPyBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6WWVz
IDogTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vOworICAgICAgICAgICAgUHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBtZXRhZGF0YS0+cHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQoKTsKICAgICAgICAgICAgIGlmIChTb3VyY2VQYXJzZU1vZGVTZXQo
U291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSwgU291cmNlUGFyc2VNb2RlOjpBc3lu
Y0Fycm93RnVuY3Rpb25Nb2RlLCBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbkJv
ZHlNb2RlKS5jb250YWlucyhtZXRhZGF0YS0+cGFyc2VNb2RlKCkpKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RXh0ZW5kcyB8fCBp
c0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSkgewogICAgICAgICAgICAgICAgICAgICBuZXdE
ZXJpdmVkQ29udGV4dFR5cGUgPSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRDb25zdHJ1Y3Rv
ckNvbnRleHQ7CiAgICAgICAgICAgICAgICAgICAgIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
ID0gbV9jb2RlQmxvY2stPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCk7CisgICAgICAgICAg
ICAgICAgICAgIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID0gbV9jb2RlQmxvY2stPnByaXZhdGVC
cmFuZFJlcXVpcmVtZW50KCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVs
c2UgaWYgKG1fY29kZUJsb2NrLT5pc0NsYXNzQ29udGV4dCgpIHx8IGlzRGVyaXZlZENsYXNzQ29u
dGV4dCgpKQogICAgICAgICAgICAgICAgICAgICBuZXdEZXJpdmVkQ29udGV4dFR5cGUgPSBEZXJp
dmVkQ29udGV4dFR5cGU6OkRlcml2ZWRNZXRob2RDb250ZXh0OwpAQCAtMTE1MiwxMCArMTE2MCwx
MSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNl
UGFyc2VNb2RlOjpNZXRob2RNb2RlICYmIG1ldGFkYXRhLT5jb25zdHJ1Y3RvcktpbmQoKSAhPSBD
b25zdHJ1Y3RvcktpbmQ6Ok5vbmUpCiAgICAgICAgICAgICAgICAgY29uc3RydWN0QWJpbGl0eSA9
IENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdDsKIAotICAgICAgICAgICAgcmV0dXJuIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29wZU5vZGUtPnNvdXJj
ZSgpLCBtZXRhZGF0YSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0
aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwgc2NyaXB0TW9k
ZSgpLCBXVEZNb3ZlKG9wdGlvbmFsVmFyaWFibGVzVW5kZXJURFopLCBuZXdEZXJpdmVkQ29udGV4
dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsKKyAgICAgICAgICAgIHJldHVybiBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3Vy
Y2UoKSwgbWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5j
dGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIHNjcmlwdE1v
ZGUoKSwgV1RGTW92ZShvcHRpb25hbFZhcmlhYmxlc1VuZGVyVERaKSwgbmV3RGVyaXZlZENvbnRl
eHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQpOwogICAgICAgICB9CiAKICAgICAgICAgT3B0aW9uYWw8Q29tcGFjdFZhcmlhYmxlTWFwOjpI
YW5kbGU+IGdldFZhcmlhYmxlc1VuZGVyVERaKCk7CisgICAgICAgIHZvaWQgZ2V0QXZhaWxhYmxl
UHJpdmF0ZUFjY2Vzc05hbWVzKFZhcmlhYmxlRW52aXJvbm1lbnQmKTsKIAogICAgICAgICBSZWdp
c3RlcklEKiBlbWl0Q29uc3RydWN0VmFyYXJncyhSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IGZ1bmMsIFJlZ2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVnaXN0ZXJJRCogYXJndW1lbnRzLCBS
ZWdpc3RlcklEKiBmaXJzdEZyZWVSZWdpc3RlciwgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RT
dGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBEZWJ1Z2dhYmxlQ2FsbCk7CiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxPcD4KQEAgLTEyMDksNiArMTIxOCwxMSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIG1fbGFzdEluc3RydWN0aW9uID0gcHJldkxhc3RJ
bnN0cnVjdGlvbjsKICAgICAgICAgfQogCisgICAgICAgIGJvb2wgaXNQcml2YXRlTWV0aG9kKGNv
bnN0IElkZW50aWZpZXImKTsKKworICAgICAgICB2b2lkIHB1c2hQcml2YXRlQWNjZXNzTmFtZXMo
Y29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYpOworICAgICAgICB2b2lkIHBvcFByaXZhdGVBY2Nl
c3NOYW1lcygpOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgT3B0aW9uU2V0PENvZGVHZW5lcmF0
aW9uTW9kZT4gbV9jb2RlR2VuZXJhdGlvbk1vZGU7CiAKQEAgLTEyMjEsNiArMTIzNSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBWZWN0b3I8TGV4aWNhbFNjb3BlU3RhY2tFbnRyeT4gbV9s
ZXhpY2FsU2NvcGVTdGFjazsKIAogICAgICAgICBWZWN0b3I8VERaTWFwPiBtX1REWlN0YWNrOwor
ICAgICAgICBWZWN0b3I8VmFyaWFibGVFbnZpcm9ubWVudDo6UHJpdmF0ZU5hbWVzPiBtX3ByaXZh
dGVOYW1lc1N0YWNrOwogICAgICAgICBPcHRpb25hbDxzaXplX3Q+IG1fdmFyU2NvcGVMZXhpY2Fs
U2NvcGVTdGFja0luZGV4OwogICAgICAgICB2b2lkIHB1c2hURFpWYXJpYWJsZXMoY29uc3QgVmFy
aWFibGVFbnZpcm9ubWVudCYsIFREWkNoZWNrT3B0aW1pemF0aW9uLCBURFpSZXF1aXJlbWVudCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcAppbmRleCBmYmQ0ZjFlZDM2Ni4uNGVmNTgzYjlmYTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTU1Myw3
ICs1NTMsNyBAQCBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZQogICAgIFByb3BlcnR5TGlzdE5vZGUq
IHAgPSB0aGlzOwogICAgIFJlZ2lzdGVySUQqIGRzdCA9IG51bGxwdHI7CiAgICAgZm9yICg7IHA7
IHAgPSBwLT5tX25leHQpIHsKLSAgICAgICAgaWYgKCEocC0+bV9ub2RlLT5tX3R5cGUgJiBQcm9w
ZXJ0eU5vZGU6OlByaXZhdGUpKQorICAgICAgICBpZiAoIShwLT5tX25vZGUtPm1fdHlwZSAmIFBy
b3BlcnR5Tm9kZTo6UHJpdmF0ZUZpZWxkKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAg
ICAgIGRzdCA9IHAtPm1fbm9kZS0+aXNJbnN0YW5jZUNsYXNzUHJvcGVydHkoKSA/IHByb3RvdHlw
ZSA6IGRzdE9yQ29uc3RydWN0b3I7CkBAIC01NjgsNyArNTY4LDcgQEAgUmVnaXN0ZXJJRCogUHJv
cGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGUKICAgICAgICAgaWYgKHAtPmlzQ29tcHV0ZWRDbGFzc0ZpZWxkKCkpCiAgICAgICAg
ICAgICBlbWl0U2F2ZUNvbXB1dGVkRmllbGROYW1lKGdlbmVyYXRvciwgKnAtPm1fbm9kZSk7CiAK
LSAgICAgICAgaWYgKHAtPmlzSW5zdGFuY2VDbGFzc0ZpZWxkKCkpIHsKKyAgICAgICAgaWYgKHAt
PmlzSW5zdGFuY2VDbGFzc0ZpZWxkKCkgJiYgIShwLT5tX25vZGUtPnR5cGUoKSAmIFByb3BlcnR5
Tm9kZTo6UHJpdmF0ZU1ldGhvZCkpIHsKICAgICAgICAgICAgIEFTU0VSVChpbnN0YW5jZUZpZWxk
TG9jYXRpb25zKTsKICAgICAgICAgICAgIGluc3RhbmNlRmllbGRMb2NhdGlvbnMtPmFwcGVuZChw
LT5wb3NpdGlvbigpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNzIwLDcgKzcyMCw3IEBA
IFJlZ2lzdGVySUQqIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlCiAKIHZvaWQgUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1
dENvbnN0YW50UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogbmV3T2JqLCBQcm9wZXJ0eU5vZGUmIG5vZGUpCiB7Ci0gICAgaWYgKG5vZGUudHlwZSgpICYg
UHJvcGVydHlOb2RlOjpQcml2YXRlKSB7CisgICAgaWYgKG5vZGUudHlwZSgpICYgUHJvcGVydHlO
b2RlOjpQcml2YXRlRmllbGQpIHsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNyZWF0ZVBy
aXZhdGVTeW1ib2wgPSBnZW5lcmF0b3IubW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlu
a1RpbWVDb25zdGFudDo6Y3JlYXRlUHJpdmF0ZVN5bWJvbCk7CiAKICAgICAgICAgQ2FsbEFyZ3Vt
ZW50cyBhcmd1bWVudHMoZ2VuZXJhdG9yLCBudWxscHRyLCAwKTsKQEAgLTczOCw2ICs3MzgsMTMg
QEAgdm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWcKIAogICAgIGlmIChub2RlLmlzQ2xhc3NQcm9wZXJ0
eSgpKSB7CiAgICAgICAgIEFTU0VSVChub2RlLm5lZWRzU3VwZXJCaW5kaW5nKCkpOworCisgICAg
ICAgIGlmIChub2RlLnR5cGUoKSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0ZU1ldGhvZCkgeworICAg
ICAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKCpub2RlLm5hbWUoKSk7
CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoZ2VuZXJhdG9yLnNjb3BlUmVn
aXN0ZXIoKSwgdmFyLCB2YWx1ZS5nZXQoKSwgRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxp
emF0aW9uTW9kZTo6Q29uc3RJbml0aWFsaXphdGlvbik7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcGVydHlOYW1lUmVnaXN0
ZXI7CiAgICAgICAgIGlmIChub2RlLm5hbWUoKSkKICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJl
Z2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsICpub2RlLm5hbWUoKSk7CkBAIC04
NTksNiArODY2LDE2IEBAIFJlZ2lzdGVySUQqIERvdEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVyCiBSZWdpc3RlcklEKiBCYXNl
RG90Tm9kZTo6ZW1pdEdldFByb3BlcnR5VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWZQdHI8UmVnaXN0ZXJJRD4m
IHRoaXNWYWx1ZSkKIHsKICAgICBpZiAoaXNQcml2YXRlTmFtZSgpKSB7CisgICAgICAgIGlmIChn
ZW5lcmF0b3IuaXNQcml2YXRlTWV0aG9kKGlkZW50aWZpZXIoKSkpIHsKKyAgICAgICAgICAgIFZh
cmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudGlmaWVyKCkpOworICAgICAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUo
bnVsbHB0ciwgdmFyKTsKKworICAgICAgICAgICAgUmVnaXN0ZXJJRCogcHJpdmF0ZUJyYW5kU3lt
Ym9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFy
eSgpLCBzY29wZS5nZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENoZWNrUHJpdmF0
ZUJyYW5kKGJhc2UsIHByaXZhdGVCcmFuZFN5bWJvbCk7CisKKyAgICAgICAgICAgIHJldHVybiBn
ZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShkc3QsIHNjb3BlLmdldCgpLCB2YXIsIFRocm93SWZO
b3RGb3VuZCk7CisgICAgICAgIH0KKwogICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3Iu
dmFyaWFibGUobV9pZGVudCk7CiAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXZhci5sb2Nh
bCgpLCAiUHJpdmF0ZSBGaWVsZCBuYW1lcyBtdXN0IGJlIHN0b3JlZCBpbiBjYXB0dXJlZCB2YXJp
YWJsZXMiKTsKIApAQCAtODg2LDYgKzkwMywxNyBAQCBSZWdpc3RlcklEKiBCYXNlRG90Tm9kZTo6
ZW1pdEdldFByb3BlcnR5VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaQog
UmVnaXN0ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRQdXRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVmUHRy
PFJlZ2lzdGVySUQ+JiB0aGlzVmFsdWUpCiB7CiAgICAgaWYgKGlzUHJpdmF0ZU5hbWUoKSkgewor
ICAgICAgICBhdXRvIGlkZW50aWZpZXJOYW1lID0gaWRlbnRpZmllcigpOworICAgICAgICBpZiAo
Z2VuZXJhdG9yLmlzUHJpdmF0ZU1ldGhvZChpZGVudGlmaWVyTmFtZSkpIHsKKyAgICAgICAgICAg
IFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudGlmaWVyTmFtZSk7CisgICAg
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVT
Y29wZShudWxscHRyLCB2YXIpOworCisgICAgICAgICAgICBSZWdpc3RlcklEKiBwcml2YXRlQnJh
bmRTeW1ib2wgPSBnZW5lcmF0b3IuZW1pdEdldFByaXZhdGVCcmFuZChnZW5lcmF0b3IubmV3VGVt
cG9yYXJ5KCksIHNjb3BlLmdldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2hlY2tQ
cml2YXRlQnJhbmQoYmFzZSwgcHJpdmF0ZUJyYW5kU3ltYm9sKTsKKworICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRUaHJvd1R5cGVFcnJvcigiVHJ5aW5nIHRvIGFjY2VzcyBhIG5vdCBkZWZpbmVk
IHByaXZhdGUgc2V0dGVyIik7CisgICAgICAgIH0KKwogICAgICAgICBWYXJpYWJsZSB2YXIgPSBn
ZW5lcmF0b3IudmFyaWFibGUobV9pZGVudCk7CiAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
IXZhci5sb2NhbCgpLCAiUHJpdmF0ZSBGaWVsZCBuYW1lcyBtdXN0IGJlIHN0b3JlZCBpbiBjYXB0
dXJlZCB2YXJpYWJsZXMiKTsKIApAQCAtMTAzOSwxMiArMTA2NywxNiBAQCBSZWdpc3RlcklEKiBG
dW5jdGlvbkNhbGxWYWx1ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZQogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUaGlzVG9BcnJvd0Z1bmN0
aW9uQ29udGV4dFNjb3BlKCk7CiAKICAgICAgICAgLy8gSW5pdGlhbGl6ZSBpbnN0YW5jZSBmaWVs
ZHMgYWZ0ZXIgc3VwZXItY2FsbC4KLSAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUNsYXNzRmllbGRz
KCkgJiYgZ2VuZXJhdG9yLm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkgPT0gTmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXI6OlllcykgewotICAgICAgICAgICAgQVNTRVJUKGdlbmVyYXRvci5p
c0NvbnN0cnVjdG9yKCkgfHwgZ2VuZXJhdG9yLmlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgp
KTsKLSAgICAgICAgICAgIGZ1bmMgPSBnZW5lcmF0b3IuZW1pdExvYWREZXJpdmVkQ29uc3RydWN0
b3IoKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SW5zdGFuY2VGaWVsZEluaXRpYWxpemF0
aW9uSWZOZWVkZWQoZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBmdW5jLmdldCgpLCBkaXZvdCgp
LCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICBpZiAoT3B0aW9uczo6dXNlQ2xh
c3NGaWVsZHMoKSkgeworICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5wcml2YXRlQnJhbmRSZXF1
aXJlbWVudCgpID09IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOZWVkZWQpCisgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRJbnN0YWxsUHJpdmF0ZUJyYW5kKGdlbmVyYXRvci50aGlzUmVn
aXN0ZXIoKSk7CisKKyAgICAgICAgICAgIGlmIChnZW5lcmF0b3IubmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIoKSA9PSBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6WWVzKSB7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKGdlbmVyYXRvci5pc0NvbnN0cnVjdG9yKCkgfHwgZ2VuZXJhdG9yLmlz
RGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpKTsKKyAgICAgICAgICAgICAgICBmdW5jID0gZ2Vu
ZXJhdG9yLmVtaXRMb2FkRGVyaXZlZENvbnN0cnVjdG9yKCk7CisgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRJbnN0YW5jZUZpZWxkSW5pdGlhbGl6YXRpb25JZk5lZWRlZChnZW5lcmF0b3Iu
dGhpc1JlZ2lzdGVyKCksIGZ1bmMuZ2V0KCksIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RF
bmQoKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLQogICAgICAgICByZXR1cm4gcmV0Owog
ICAgIH0KIApAQCAtNDQ3MSw2ICs0NTAzLDEzIEBAIFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAg
ICAgaWYgKG1fbmVlZHNMZXhpY2FsU2NvcGUpCiAgICAgICAgIGdlbmVyYXRvci5wdXNoTGV4aWNh
bFNjb3BlKHRoaXMsIEJ5dGVjb2RlR2VuZXJhdG9yOjpURFpDaGVja09wdGltaXphdGlvbjo6T3B0
aW1pemUsIEJ5dGVjb2RlR2VuZXJhdG9yOjpOZXN0ZWRTY29wZVR5cGU6OklzTmVzdGVkKTsKIAor
ICAgIGJvb2wgaGFzUHJpdmF0ZU5hbWVzID0gISFtX2xleGljYWxWYXJpYWJsZXMucHJpdmF0ZU5h
bWVzU2l6ZSgpOworICAgIGJvb2wgc2hvdWxkRW1pdFByaXZhdGVCcmFuZCA9IG1fbGV4aWNhbFZh
cmlhYmxlcy5oYXNQcml2YXRlQWNjZXNzKCk7CisgICAgaWYgKGhhc1ByaXZhdGVOYW1lcykKKyAg
ICAgICAgZ2VuZXJhdG9yLnB1c2hQcml2YXRlQWNjZXNzTmFtZXMobV9sZXhpY2FsVmFyaWFibGVz
KTsKKyAgICBpZiAoc2hvdWxkRW1pdFByaXZhdGVCcmFuZCkKKyAgICAgICAgZ2VuZXJhdG9yLmVt
aXRDcmVhdGVQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLnNjb3BlUmVnaXN0ZXIoKSwgbV9wb3NpdGlv
biwgbV9wb3NpdGlvbiwgbV9wb3NpdGlvbik7CisKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3Vw
ZXJjbGFzczsKICAgICBpZiAobV9jbGFzc0hlcml0YWdlKSB7CiAgICAgICAgIHN1cGVyY2xhc3Mg
PSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CkBAIC00NDgxLDE3ICs0NTIwLDE4IEBAIFJlZ2lz
dGVySUQqIENsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklECiAgICAgYm9vbCBuZWVkc0hvbWVPYmplY3QgPSBmYWxzZTsKIAog
ICAgIGF1dG8gbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSB0aGlzLT5oYXNJbnN0YW5jZUZp
ZWxkcygpID8gTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6OlllcyA6IE5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyOjpObzsKLQorICAgIGF1dG8gcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBz
aG91bGRFbWl0UHJpdmF0ZUJyYW5kID8gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5lZWRlZCA6
IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lOwogICAgIGlmIChtX2NvbnN0cnVjdG9yRXhw
cmVzc2lvbikgewogICAgICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvckV4cHJlc3Npb24tPmlzRnVu
Y0V4cHJOb2RlKCkpOwogICAgICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbWV0YWRhdGEgPSBz
dGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPihtX2NvbnN0cnVjdG9yRXhwcmVzc2lvbiktPm1ldGFk
YXRhKCk7CiAgICAgICAgIG1ldGFkYXRhLT5zZXRFY21hTmFtZShlY21hTmFtZSgpKTsKICAgICAg
ICAgbWV0YWRhdGEtPnNldENsYXNzU291cmNlKG1fY2xhc3NTb3VyY2UpOwogICAgICAgICBtZXRh
ZGF0YS0+c2V0TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIobmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIgPT0gTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Olllcyk7CisgICAgICAgIG1ldGFk
YXRhLT5zZXRQcml2YXRlQnJhbmRSZXF1aXJlbWVudChwcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7
CiAgICAgICAgIGNvbnN0cnVjdG9yID0gZ2VuZXJhdG9yLmVtaXROb2RlKGNvbnN0cnVjdG9yLmdl
dCgpLCBtX2NvbnN0cnVjdG9yRXhwcmVzc2lvbik7CiAgICAgICAgIG5lZWRzSG9tZU9iamVjdCA9
IG1fY2xhc3NIZXJpdGFnZSB8fCBtZXRhZGF0YS0+c3VwZXJCaW5kaW5nKCkgPT0gU3VwZXJCaW5k
aW5nOjpOZWVkZWQ7CiAgICAgfSBlbHNlCi0gICAgICAgIGNvbnN0cnVjdG9yID0gZ2VuZXJhdG9y
LmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoY29uc3RydWN0b3IuZ2V0KCksIG1fY2xhc3NIZXJp
dGFnZSA/IENvbnN0cnVjdG9yS2luZDo6RXh0ZW5kcyA6IENvbnN0cnVjdG9yS2luZDo6QmFzZSwg
bV9uYW1lLCBlY21hTmFtZSgpLCBtX2NsYXNzU291cmNlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplcik7CisgICAgICAgIGNvbnN0cnVjdG9yID0gZ2VuZXJhdG9yLmVtaXROZXdEZWZhdWx0Q29u
c3RydWN0b3IoY29uc3RydWN0b3IuZ2V0KCksIG1fY2xhc3NIZXJpdGFnZSA/IENvbnN0cnVjdG9y
S2luZDo6RXh0ZW5kcyA6IENvbnN0cnVjdG9yS2luZDo6QmFzZSwgbV9uYW1lLCBlY21hTmFtZSgp
LCBtX2NsYXNzU291cmNlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgcHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQpOwogCiAgICAgY29uc3QgYXV0byYgcHJvcGVydHlOYW1lcyA9IGdlbmVyYXRv
ci5wcm9wZXJ0eU5hbWVzKCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3RvdHlwZSA9IGdl
bmVyYXRvci5lbWl0TmV3T2JqZWN0KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSk7CkBAIC00NTYx
LDYgKzQ2MDEsOSBAQCBSZWdpc3RlcklEKiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogICAgICAgICBnZW5lcmF0b3Iu
cG9wTGV4aWNhbFNjb3BlKHRoaXMpOwogICAgIH0KIAorICAgIGlmIChoYXNQcml2YXRlTmFtZXMp
CisgICAgICAgIGdlbmVyYXRvci5wb3BQcml2YXRlQWNjZXNzTmFtZXMoKTsKKwogICAgIHJldHVy
biBnZW5lcmF0b3IubW92ZShnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIGNvbnN0cnVj
dG9yLmdldCgpKSwgY29uc3RydWN0b3IuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAppbmRleCBjM2Q0YzNm
OTQ2My4uZTE3ZWU5YmM3MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rl
YnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcApAQCAtMjUzLDcgKzI1Myw3IEBAIEpTVmFsdWUg
RGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKGNvbnN0IFN0cmlu
ZyYgc2NyaXB0LCBKU09iCiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCB2YXJpYWJsZXNVbmRlclRE
WjsKICAgICBKU1Njb3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKHNjb3BlKCkt
PmpzU2NvcGUoKSwgdmFyaWFibGVzVW5kZXJURFopOwogCi0gICAgYXV0byogZXZhbCA9IERpcmVj
dEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtYWtlU291cmNlKHNjcmlwdCwg
Y2FsbEZyYW1lLT5jYWxsZXJTb3VyY2VPcmlnaW4odm0pKSwgY29kZUJsb2NrLT5pc1N0cmljdE1v
ZGUoKSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5kZXJpdmVkQ29udGV4dFR5cGUo
KSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5uZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplcigpLCBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmlzQXJyb3dGdW5jdGlvbigp
LCBldmFsQ29udGV4dFR5cGUsICZ2YXJpYWJsZXNVbmRlclREWik7CisgICAgYXV0byogZXZhbCA9
IERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtYWtlU291cmNlKHNj
cmlwdCwgY2FsbEZyYW1lLT5jYWxsZXJTb3VyY2VPcmlnaW4odm0pKSwgY29kZUJsb2NrLT5pc1N0
cmljdE1vZGUoKSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5kZXJpdmVkQ29udGV4
dFR5cGUoKSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5uZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplcigpLCBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPnByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50KCksIGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+aXNBcnJvd0Z1
bmN0aW9uKCksIGV2YWxDb250ZXh0VHlwZSwgJnZhcmlhYmxlc1VuZGVyVERaKTsKICAgICBpZiAo
VU5MSUtFTFkoY2F0Y2hTY29wZS5leGNlcHRpb24oKSkpIHsKICAgICAgICAgZXhjZXB0aW9uID0g
Y2F0Y2hTY29wZS5leGNlcHRpb24oKTsKICAgICAgICAgY2F0Y2hTY29wZS5jbGVhckV4Y2VwdGlv
bigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAKaW5kZXggYmYyOTg0YTEyODkuLjJhMWJiN2Y2MDgwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTE2NSw3ICsxNjUs
NyBAQCBKU1ZhbHVlIGV2YWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiAgICAgICAgIAogICAgICAgICBWYXJpYWJsZUVudmlyb25tZW50IHZhcmlh
Ymxlc1VuZGVyVERaOwogICAgICAgICBKU1Njb3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1Vu
ZGVyVERaKGNhbGxlclNjb3BlQ2hhaW4sIHZhcmlhYmxlc1VuZGVyVERaKTsKLSAgICAgICAgZXZh
bCA9IERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtYWtlU291cmNl
KHByb2dyYW1Tb3VyY2UsIGNhbGxlckNvZGVCbG9jay0+c291cmNlKCkucHJvdmlkZXIoKS0+c291
cmNlT3JpZ2luKCkpLCBjYWxsZXJDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpLCBkZXJpdmVkQ29u
dGV4dFR5cGUsIGNhbGxlclVubGlua2VkQ29kZUJsb2NrLT5uZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplcigpLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBldmFsQ29udGV4dFR5cGUsICZ2YXJpYWJs
ZXNVbmRlclREWik7CisgICAgICAgIGV2YWwgPSBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRl
KGdsb2JhbE9iamVjdCwgbWFrZVNvdXJjZShwcm9ncmFtU291cmNlLCBjYWxsZXJDb2RlQmxvY2st
PnNvdXJjZSgpLnByb3ZpZGVyKCktPnNvdXJjZU9yaWdpbigpKSwgY2FsbGVyQ29kZUJsb2NrLT5p
c1N0cmljdE1vZGUoKSwgZGVyaXZlZENvbnRleHRUeXBlLCBjYWxsZXJVbmxpbmtlZENvZGVCbG9j
ay0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgY2FsbGVyVW5saW5rZWRDb2RlQmxvY2st
PnByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCksIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGV2YWxD
b250ZXh0VHlwZSwgJnZhcmlhYmxlc1VuZGVyVERaKTsKICAgICAgICAgRVhDRVBUSU9OX0FTU0VS
VCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICFldmFsKTsKICAgICAgICAgaWYgKCFldmFsKQogICAg
ICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
TGV4ZXIuY3BwCmluZGV4IDgxMTQ1ZDY3NzliLi4zNzJkMDcyMGE0YiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9MZXhlci5jcHAKQEAgLTEwNjMsMjAgKzEwNjMsMjEgQEAgdGVtcGxhdGUg
PGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBM
ZXhlcjxVQ2hhcj46OnAKICAgICB9IGVsc2UKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IG51
bGxwdHI7CiAgICAgCisgICAgYXV0byBpZGVudFR5cGUgPSBpc1ByaXZhdGVOYW1lID8gUFJJVkFU
RU5BTUUgOiBJREVOVDsKICAgICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVu
Z3RoKSAmJiAhbGV4ZXJGbGFncy5jb250YWlucyhMZXhlckZsYWdzOjpJZ25vcmVSZXNlcnZlZFdv
cmRzKSkgJiYgIWlzQnVpbHRpbk5hbWUpIHsKICAgICAgICAgQVNTRVJUKHNob3VsZENyZWF0ZUlk
ZW50aWZpZXIpOwogICAgICAgICBpZiAocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpIHsKICAg
ICAgICAgICAgIGNvbnN0IEhhc2hUYWJsZVZhbHVlKiBlbnRyeSA9IEpTQzo6bWFpblRhYmxlLmVu
dHJ5KCppZGVudCk7CiAgICAgICAgICAgICBBU1NFUlQoKHJlbWFpbmluZyA8IG1heFRva2VuTGVu
Z3RoKSB8fCAhZW50cnkpOwogICAgICAgICAgICAgaWYgKCFlbnRyeSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gSURFTlQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIGlkZW50VHlwZTsKICAgICAg
ICAgICAgIEpTVG9rZW5UeXBlIHRva2VuID0gc3RhdGljX2Nhc3Q8SlNUb2tlblR5cGU+KGVudHJ5
LT5sZXhlclZhbHVlKCkpOwotICAgICAgICAgICAgcmV0dXJuICh0b2tlbiAhPSBSRVNFUlZFRF9J
Rl9TVFJJQ1QpIHx8IHN0cmljdE1vZGUgPyB0b2tlbiA6IElERU5UOworICAgICAgICAgICAgcmV0
dXJuICh0b2tlbiAhPSBSRVNFUlZFRF9JRl9TVFJJQ1QpIHx8IHN0cmljdE1vZGUgPyB0b2tlbiA6
IGlkZW50VHlwZTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gSURFTlQ7CisgICAgICAgIHJl
dHVybiBpZGVudFR5cGU7CiAgICAgfQogCi0gICAgcmV0dXJuIElERU5UOworICAgIHJldHVybiBp
ZGVudFR5cGU7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHRlbXBsYXRl
PGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gSlNUb2tlblR5cGUgTGV4ZXI8Q2hhcmFjdGVy
VHlwZT46OnBhcnNlSWRlbnRpZmllclNsb3dDYXNlKEpTVG9rZW5EYXRhKiB0b2tlbkRhdGEsIE9w
dGlvblNldDxMZXhlckZsYWdzPiBsZXhlckZsYWdzLCBib29sIHN0cmljdE1vZGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IDExYmY0YTY4NGExLi5hMjU5M2Y1YTZl
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKQEAgLTIwMiw2ICsyMDIs
NyBAQCBGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUoCiAgICAgICAg
ICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2lu
ZCkpCiAgICAgICAgICwgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcihzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vKSkKICAgICAgICAgLCBtX2lz
QXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9u
KQorICAgICAgICAsIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lKSkKICAgICAgICAgLCBtX3BhcnNlTW9k
ZShtb2RlKQogICAgICAgICAsIG1fc3RhcnRDb2x1bW4oc3RhcnRDb2x1bW4pCiAgICAgICAgICwg
bV9lbmRDb2x1bW4oZW5kQ29sdW1uKQpAQCAtMjI2LDYgKzIyNyw3IEBAIEZ1bmN0aW9uTWV0YWRh
dGFOb2RlOjpGdW5jdGlvbk1ldGFkYXRhTm9kZSgKICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2lu
ZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkKICAgICAgICAgLCBtX25l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihOZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplcjo6Tm8pKQogICAgICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4
cHJlc3Npb24oaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCisgICAgICAgICwgbV9wcml2
YXRlQnJhbmRSZXF1aXJlbWVudChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQ6Ok5vbmUpKQogICAgICAgICAsIG1fcGFyc2VNb2RlKG1vZGUpCiAgICAgICAgICwg
bV9zdGFydENvbHVtbihzdGFydENvbHVtbikKICAgICAgICAgLCBtX2VuZENvbHVtbihlbmRDb2x1
bW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggMjYzZjY1ZmQyZTYuLjhi
OTQ2YmRhYmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC03MTMsNyAr
NzEzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgZW51bSBjbGFzcyBDbGFzc0VsZW1lbnRUYWcg
OiB1aW50OF90IHsgTm8sIEluc3RhbmNlLCBTdGF0aWMsIExhc3RUYWcgfTsKICAgICBjbGFzcyBQ
cm9wZXJ0eU5vZGUgZmluYWwgOiBwdWJsaWMgUGFyc2VyQXJlbmFGcmVlYWJsZSB7CiAgICAgcHVi
bGljOgotICAgICAgICBlbnVtIFR5cGUgOiB1aW50OF90IHsgQ29uc3RhbnQgPSAxLCBHZXR0ZXIg
PSAyLCBTZXR0ZXIgPSA0LCBDb21wdXRlZCA9IDgsIFNob3J0aGFuZCA9IDE2LCBTcHJlYWQgPSAz
MiwgUHJpdmF0ZSA9IDY0IH07CisgICAgICAgIGVudW0gVHlwZSA6IHVpbnQ4X3QgeyBDb25zdGFu
dCA9IDEsIEdldHRlciA9IDIsIFNldHRlciA9IDQsIENvbXB1dGVkID0gOCwgU2hvcnRoYW5kID0g
MTYsIFNwcmVhZCA9IDMyLCBQcml2YXRlRmllbGQgPSA2NCwgUHJpdmF0ZU1ldGhvZCA9IDEyOCB9
OwogICAgICAgICBlbnVtIFB1dFR5cGUgOiB1aW50OF90IHsgVW5rbm93biwgS25vd25EaXJlY3Qg
fTsKIAogICAgICAgICBQcm9wZXJ0eU5vZGUoY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25O
b2RlKiwgVHlwZSwgUHV0VHlwZSwgU3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcpOwpAQCAt
NzMyLDcgKzczMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIGlzQ2xhc3NGaWVs
ZCgpIGNvbnN0IHsgcmV0dXJuIGlzQ2xhc3NQcm9wZXJ0eSgpICYmICFuZWVkc1N1cGVyQmluZGlu
ZygpOyB9CiAgICAgICAgIGJvb2wgaXNJbnN0YW5jZUNsYXNzRmllbGQoKSBjb25zdCB7IHJldHVy
biBpc0luc3RhbmNlQ2xhc3NQcm9wZXJ0eSgpICYmICFuZWVkc1N1cGVyQmluZGluZygpOyB9CiAg
ICAgICAgIGJvb2wgaXNPdmVycmlkZGVuQnlEdXBsaWNhdGUoKSBjb25zdCB7IHJldHVybiBtX2lz
T3ZlcnJpZGRlbkJ5RHVwbGljYXRlOyB9Ci0gICAgICAgIGJvb2wgaXNQcml2YXRlKCkgY29uc3Qg
eyByZXR1cm4gbV90eXBlICYgUHJpdmF0ZTsgfQorICAgICAgICBib29sIGlzUHJpdmF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdHlwZSAmIChQcml2YXRlRmllbGQgfCBQcml2YXRlTWV0aG9kKTsgfQog
ICAgICAgICBib29sIGhhc0NvbXB1dGVkTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXhwcmVzc2lv
bjsgfQogICAgICAgICBib29sIGlzQ29tcHV0ZWRDbGFzc0ZpZWxkKCkgY29uc3QgeyByZXR1cm4g
aXNDbGFzc0ZpZWxkKCkgJiYgaGFzQ29tcHV0ZWROYW1lKCk7IH0KICAgICAgICAgdm9pZCBzZXRJ
c092ZXJyaWRkZW5CeUR1cGxpY2F0ZSgpIHsgbV9pc092ZXJyaWRkZW5CeUR1cGxpY2F0ZSA9IHRy
dWU7IH0KQEAgLTc0Myw3ICs3NDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3Qg
SWRlbnRpZmllciogbV9uYW1lOwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9leHByZXNzaW9u
OwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9hc3NpZ247Ci0gICAgICAgIHVuc2lnbmVkIG1f
dHlwZSA6IDc7CisgICAgICAgIHVuc2lnbmVkIG1fdHlwZTsKICAgICAgICAgdW5zaWduZWQgbV9u
ZWVkc1N1cGVyQmluZGluZyA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1fcHV0VHlwZSA6IDE7CiAg
ICAgICAgIHN0YXRpY19hc3NlcnQoMSA8PCAyID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENsYXNz
RWxlbWVudFRhZzo6TGFzdFRhZyksICJDbGFzc0VsZW1lbnRUYWcgc2hvdWxkbid0IHVzZSBtb3Jl
IHRoYW4gdHdvIGJpdHMiKTsKQEAgLTIwODYsNiArMjA4Niw5IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB2b2lkIHNldEVjbWFOYW1lKGNvbnN0IElkZW50aWZpZXImIGVjbWFOYW1lKSB7IG1f
ZWNtYU5hbWUgPSBlY21hTmFtZTsgfQogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBlY21hTmFt
ZSgpIHsgcmV0dXJuIG1faWRlbnQuaXNFbXB0eSgpID8gbV9lY21hTmFtZSA6IG1faWRlbnQ7IH0K
IAorICAgICAgICB2b2lkIHNldFByaXZhdGVCcmFuZFJlcXVpcmVtZW50KFByaXZhdGVCcmFuZFJl
cXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KSB7IG1fcHJpdmF0ZUJyYW5kUmVxdWly
ZW1lbnQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOyB9
CisgICAgICAgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50
KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ+KG1fcHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQpOyB9CisKICAgICAgICAgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9k
ZSgpIHsgcmV0dXJuIG1fZnVuY3Rpb25Nb2RlOyB9CiAKICAgICAgICAgaW50IGZ1bmN0aW9uTmFt
ZVN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbk5hbWVTdGFydDsgfQpAQCAtMjEzNCw2
ICsyMTM3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuc2lnbmVkIG1fY29uc3RydWN0
b3JLaW5kIDogMjsKICAgICAgICAgdW5zaWduZWQgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
ciA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24g
OiAxOworICAgICAgICB1bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsKICAg
ICAgICAgU291cmNlUGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogICAgICAgICBGdW5jdGlvbk1vZGUg
bV9mdW5jdGlvbk1vZGU7CiAgICAgICAgIElkZW50aWZpZXIgbV9pZGVudDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCA1YjU5YmZiZjg1Ny4uYTE4MDExZjA1Mjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI5MzYsMTUgKzI5
MzYsMjAgQEAgcGFyc2VNZXRob2Q6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQ
UklWQVRFTkFNRTogewogICAgICAgICAgICAgQVNTRVJUKE9wdGlvbnM6OnVzZUNsYXNzRmllbGRz
KCkpOwotICAgICAgICAgICAgSlNUb2tlbiB0b2tlbiA9IG1fdG9rZW47CiAgICAgICAgICAgICBp
ZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OwogICAgICAgICAgICAgZmFpbElmVHJ1ZSh0YWcg
PT0gQ2xhc3NFbGVtZW50VGFnOjpTdGF0aWMsICJTdGF0aWMgY2xhc3MgZWxlbWVudCBjYW5ub3Qg
YmUgcHJpdmF0ZSIpOwogICAgICAgICAgICAgZmFpbElmVHJ1ZShpc0dldHRlciB8fCBpc1NldHRl
ciwgIkNhbm5vdCBwYXJzZSBjbGFzcyBtZXRob2Qgd2l0aCBwcml2YXRlIG5hbWUiKTsKICAgICAg
ICAgICAgIEFTU0VSVChpZGVudCk7CiAgICAgICAgICAgICBuZXh0KCk7Ci0gICAgICAgICAgICBm
YWlsSWZUcnVlKG1hdGNoQW5kVXBkYXRlKE9QRU5QQVJFTiwgdG9rZW4pLCAiQ2Fubm90IHBhcnNl
IGNsYXNzIG1ldGhvZCB3aXRoIHByaXZhdGUgbmFtZSIpOwotICAgICAgICAgICAgc2VtYW50aWNG
YWlsSWZUcnVlKGNsYXNzU2NvcGUtPmRlY2xhcmVQcml2YXRlTmFtZSgqaWRlbnQpICYgRGVjbGFy
YXRpb25SZXN1bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbiwgIkNhbm5vdCBkZWNsYXJl
IHByaXZhdGUgZmllbGQgdHdpY2UiKTsKLSAgICAgICAgICAgIHR5cGUgPSBzdGF0aWNfY2FzdDxQ
cm9wZXJ0eU5vZGU6OlR5cGU+KHR5cGUgfCBQcm9wZXJ0eU5vZGU6OlByaXZhdGUpOworICAgICAg
ICAgICAgaWYgKE9wdGlvbnM6OnVzZUNsYXNzRmllbGRzKCkgJiYgbWF0Y2goT1BFTlBBUkVOKSkg
eworICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShjbGFzc1Njb3BlLT5kZWNsYXJl
UHJpdmF0ZU1ldGhvZCgqaWRlbnQpICYgRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBsaWNh
dGVEZWNsYXJhdGlvbiwgIkNhbm5vdCBkZWNsYXJlIHByaXZhdGUgbWV0aG9kIHR3aWNlIik7Cisg
ICAgICAgICAgICAgICAgdHlwZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4odHlw
ZSB8IFByb3BlcnR5Tm9kZTo6UHJpdmF0ZU1ldGhvZCk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZhaWxJZlRydWUobWF0Y2goT1BFTlBBUkVO
KSwgIkNhbm5vdCBwYXJzZSBjbGFzcyBtZXRob2Qgd2l0aCBwcml2YXRlIG5hbWUiKTsKKyAgICAg
ICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShjbGFzc1Njb3BlLT5kZWNsYXJlUHJpdmF0ZUZpZWxk
KCppZGVudCkgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9u
LCAiQ2Fubm90IGRlY2xhcmUgcHJpdmF0ZSBmaWVsZCB0d2ljZSIpOworICAgICAgICAgICAgdHlw
ZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4odHlwZSB8IFByb3BlcnR5Tm9kZTo6
UHJpdmF0ZUZpZWxkKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGRl
ZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCA1YmM0NjMwN2Ey
NS4uNThmNzJmNmRjNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAt
NTA3LDExICs1MDcsMjggQEAgcHVibGljOgogICAgICAgICBtX2xleGljYWxWYXJpYWJsZXMudXNl
UHJpdmF0ZU5hbWUoaWRlbnQpOwogICAgIH0KIAotICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBk
ZWNsYXJlUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgRGVjbGFyYXRp
b25SZXN1bHRNYXNrIGRlY2xhcmVQcml2YXRlTWV0aG9kKGNvbnN0IElkZW50aWZpZXImIGlkZW50
KQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fYWxsb3dzTGV4aWNhbERlY2xhcmF0aW9ucyk7CiAg
ICAgICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayByZXN1bHQgPSBEZWNsYXJhdGlvblJlc3VsdDo6
VmFsaWQ7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9sZXhpY2FsVmFyaWFibGVzLmRlY2xh
cmVQcml2YXRlTmFtZShpZGVudCk7CisgICAgICAgIGJvb2wgYWRkUmVzdWx0ID0gbV9sZXhpY2Fs
VmFyaWFibGVzLmRlY2xhcmVQcml2YXRlTWV0aG9kKGlkZW50KTsKKworICAgICAgICBpZiAoIWFk
ZFJlc3VsdCkgeworICAgICAgICAgICAgcmVzdWx0IHw9IERlY2xhcmF0aW9uUmVzdWx0OjpJbnZh
bGlkRHVwbGljYXRlRGVjbGFyYXRpb247CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
ICAgICB9CisKKyAgICAgICAgdXNlVmFyaWFibGUoJmlkZW50LCBmYWxzZSk7CisgICAgICAgIGFk
ZENsb3NlZFZhcmlhYmxlQ2FuZGlkYXRlVW5jb25kaXRpb25hbGx5KGlkZW50LmltcGwoKSk7CisK
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBEZWNsYXJhdGlvblJlc3VsdE1h
c2sgZGVjbGFyZVByaXZhdGVGaWVsZChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChtX2FsbG93c0xleGljYWxEZWNsYXJhdGlvbnMpOworICAgICAgICBEZWNs
YXJhdGlvblJlc3VsdE1hc2sgcmVzdWx0ID0gRGVjbGFyYXRpb25SZXN1bHQ6OlZhbGlkOworICAg
ICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbGV4aWNhbFZhcmlhYmxlcy5kZWNsYXJlUHJpdmF0ZUZp
ZWxkKGlkZW50KTsKICAgICAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAg
ICAgIHJlc3VsdCB8PSBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0
aW9uOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXJNb2Rlcy5oCmluZGV4IDY0MTMxMmNjYzliLi5jZTg2MDQ3MTNlYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaApAQCAtMzcsNiArMzcsOCBAQCBl
bnVtIGNsYXNzIEpTUGFyc2VyU2NyaXB0TW9kZSB7IENsYXNzaWMsIE1vZHVsZSB9OwogCiBlbnVt
IGNsYXNzIFN1cGVyQmluZGluZyB7IE5lZWRlZCwgTm90TmVlZGVkIH07CiAKK2VudW0gY2xhc3Mg
UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgeyBOb25lLCBOZWVkZWQgfTsKKwogZW51bSBjbGFzcyBD
b2RlR2VuZXJhdGlvbk1vZGUgOiB1aW50OF90IHsKICAgICBEZWJ1Z2dlciA9IDEgPDwgMCwKICAg
ICBUeXBlUHJvZmlsZXIgPSAxIDw8IDEsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcAppbmRleCAxZjU3MDg4YTM0Yy4uNGNiOTBj
NzFiZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVF
bnZpcm9ubWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJs
ZUVudmlyb25tZW50LmNwcApAQCAtMTA3LDYgKzEwNyw0MSBAQCB2b2lkIFZhcmlhYmxlRW52aXJv
bm1lbnQ6Om1hcmtWYXJpYWJsZUFzRXhwb3J0ZWQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJ
bXBsPgogICAgIGZpbmRSZXN1bHQtPnZhbHVlLnNldElzRXhwb3J0ZWQoKTsKIH0KIAorYm9vbCBW
YXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZU1ldGhvZChjb25zdCBSZWZQdHI8VW5p
cXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQoreworICAgIGlmICghbV9yYXJlRGF0YSkKKyAg
ICAgICAgbV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8VmFyaWFibGVFbnZpcm9ubWVudDo6
UmFyZURhdGE+KCk7CisKKyAgICBhdXRvIGZpbmRSZXN1bHQgPSBtX3JhcmVEYXRhLT5tX3ByaXZh
dGVOYW1lcy5maW5kKGlkZW50aWZpZXIpOworCisgICAgaWYgKGZpbmRSZXN1bHQgPT0gbV9yYXJl
RGF0YS0+bV9wcml2YXRlTmFtZXMuZW5kKCkpIHsKKyAgICAgICAgUHJpdmF0ZU5hbWVFbnRyeSBt
ZXRhKFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNEZWNsYXJlZCB8IFByaXZhdGVOYW1lRW50
cnk6OlRyYWl0czo6SXNNZXRob2QpOworCisgICAgICAgIGF1dG8gZW50cnkgPSBWYXJpYWJsZUVu
dmlyb25tZW50RW50cnkoKTsKKyAgICAgICAgZW50cnkuc2V0SXNQcml2YXRlTWV0aG9kKCk7Cisg
ICAgICAgIGVudHJ5LnNldElzQ29uc3QoKTsKKyAgICAgICAgZW50cnkuc2V0SXNDYXB0dXJlZCgp
OworICAgICAgICBtX21hcC5hZGQoaWRlbnRpZmllciwgZW50cnkpOworCisgICAgICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKGlkZW50aWZpZXIsIG1l
dGEpOworICAgICAgICByZXR1cm4gYWRkUmVzdWx0LmlzTmV3RW50cnk7CisgICAgfQorCisgICAg
aWYgKGZpbmRSZXN1bHQtPnZhbHVlLmlzRGVjbGFyZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OyAvLyBFcnJvcjogZGVjbGFyaW5nIGEgZHVwbGljYXRlIHByaXZhdGUgbmFtZS4KKworICAgIGF1
dG8gZW50cnkgPSBWYXJpYWJsZUVudmlyb25tZW50RW50cnkoKTsKKyAgICBlbnRyeS5zZXRJc1By
aXZhdGVNZXRob2QoKTsKKyAgICBlbnRyeS5zZXRJc0NvbnN0KCk7CisgICAgZW50cnkuc2V0SXND
YXB0dXJlZCgpOworICAgIG1fbWFwLmFkZChpZGVudGlmaWVyLCBlbnRyeSk7CisKKyAgICAvLyBp
dCB3YXMgcHJldmlvdXNseSB1c2VkLCBtYXJrIGl0IGFzIGRlY2xhcmVkLgorICAgIFByaXZhdGVO
YW1lRW50cnkgbWV0YShQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzRGVjbGFyZWQgfCBQcml2
YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzVXNlZCB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6
SXNNZXRob2QpOworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFt
ZXMuc2V0KGlkZW50aWZpZXIsIG1ldGEpOworICAgIHJldHVybiAhYWRkUmVzdWx0LmlzTmV3RW50
cnk7Cit9CisKIENvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50OjpDb21wYWN0VmFyaWFibGVFbnZp
cm9ubWVudChjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBlbnYpCiAgICAgOiBtX2lzRXZlcnl0
aGluZ0NhcHR1cmVkKGVudi5pc0V2ZXJ5dGhpbmdDYXB0dXJlZCgpKQogewpAQCAtMTIwLDYgKzE1
NSwyNSBAQCBDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudDo6Q29tcGFjdFZhcmlhYmxlRW52aXJv
bm1lbnQoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudAogICAgIH0pOwogCiAgICAgbV9oYXNoID0g
MDsKKyAgICBpZiAoZW52LnByaXZhdGVOYW1lc1NpemUoKSkgeworICAgICAgICBWZWN0b3I8c3Rk
OjpwYWlyPFVuaXF1ZWRTdHJpbmdJbXBsKiwgUHJpdmF0ZU5hbWVFbnRyeT4sIDE2PiBzb3J0ZWRQ
cml2YXRlRW50cmllczsKKyAgICAgICAgc29ydGVkUHJpdmF0ZUVudHJpZXMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShlbnYucHJpdmF0ZU5hbWVzU2l6ZSgpKTsKKyAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBlbnRyaWVzIDogZW52LnByaXZhdGVOYW1lcygpKQorICAgICAgICAgICAgc29ydGVkUHJp
dmF0ZUVudHJpZXMuYXBwZW5kKHtlbnRyaWVzLmtleS5nZXQoKSwgZW50cmllcy52YWx1ZX0pOwor
CisgICAgICAgIHN0ZDo6c29ydChzb3J0ZWRQcml2YXRlRW50cmllcy5iZWdpbigpLCBzb3J0ZWRQ
cml2YXRlRW50cmllcy5lbmQoKSwgW10gKGNvbnN0IGF1dG8mIGEsIGNvbnN0IGF1dG8mIGIpIHsK
KyAgICAgICAgICAgIHJldHVybiBhLmZpcnN0IDwgYi5maXJzdDsKKyAgICAgICAgfSk7CisKKyAg
ICAgICAgbV9wcml2YXRlQWNjZXNzTmFtZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShlbnYucHJp
dmF0ZU5hbWVzU2l6ZSgpKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogc29ydGVk
UHJpdmF0ZUVudHJpZXMpIHsKKyAgICAgICAgICAgIG1fcHJpdmF0ZUFjY2Vzc05hbWVzLmFwcGVu
ZChwYWlyLmZpcnN0KTsKKyAgICAgICAgICAgIG1fcHJpdmF0ZU5hbWVNZXRhZGF0YS5hcHBlbmQo
cGFpci5zZWNvbmQpOworICAgICAgICAgICAgbV9oYXNoIF49IHBhaXIuZmlyc3QtPmhhc2goKTsK
KyAgICAgICAgICAgIG1faGFzaCArPSBwYWlyLnNlY29uZC5iaXRzKCk7CisgICAgICAgIH0KKyAg
ICB9CisKICAgICBtX3ZhcmlhYmxlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNvcnRlZEVudHJp
ZXMuc2l6ZSgpKTsKICAgICBtX3ZhcmlhYmxlTWV0YWRhdGEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShzb3J0ZWRFbnRyaWVzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogc29y
dGVkRW50cmllcykgewpAQCAtMTQzLDYgKzE5NywxMCBAQCBib29sIENvbXBhY3RWYXJpYWJsZUVu
dmlyb25tZW50OjpvcGVyYXRvcj09KGNvbnN0IENvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50JiBv
dAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKG1fdmFyaWFibGVNZXRhZGF0YSAhPSBv
dGhlci5tX3ZhcmlhYmxlTWV0YWRhdGEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAo
bV9wcml2YXRlQWNjZXNzTmFtZXMgIT0gb3RoZXIubV9wcml2YXRlQWNjZXNzTmFtZXMpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9wcml2YXRlTmFtZU1ldGFkYXRhICE9IG90aGVy
Lm1fcHJpdmF0ZU5hbWVNZXRhZGF0YSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVy
biB0cnVlOwogfQogCkBAIC0xNTYsNiArMjE0LDEyIEBAIFZhcmlhYmxlRW52aXJvbm1lbnQgQ29t
cGFjdFZhcmlhYmxlRW52aXJvbm1lbnQ6OnRvVmFyaWFibGVFbnZpcm9ubWVudCgpIGNvbnN0CiAg
ICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtX3ZhcmlhYmxlTWV0YWRhdGFbaV07
CiAgICAgfQogCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3ByaXZhdGVBY2Nlc3NOYW1l
cy5zaXplKCk7IGkrKykgeworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IHJlc3VsdC5hZGRQcml2
YXRlTmFtZShtX3ByaXZhdGVBY2Nlc3NOYW1lc1tpXSk7CisgICAgICAgIEFTU0VSVChhZGRSZXN1
bHQuaXNOZXdFbnRyeSk7CisgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtX3By
aXZhdGVOYW1lTWV0YWRhdGFbaV07CisgICAgfQorCiAgICAgaWYgKG1faXNFdmVyeXRoaW5nQ2Fw
dHVyZWQpCiAgICAgICAgIHJlc3VsdC5tYXJrQWxsVmFyaWFibGVzQXNDYXB0dXJlZCgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1l
bnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5o
CmluZGV4IDBjMWQwYWMzZWJhLi5lYTY4MDg2NDUzNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKQEAgLTQ0LDcgKzQ0LDggQEAg
cHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9iaXRzICYgSXNGdW5jdGlvbjsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1BhcmFt
ZXRlcigpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzUGFyYW1ldGVyOyB9CiAgICAgQUxXQVlT
X0lOTElORSBib29sIGlzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlKCkgY29uc3QgeyByZXR1
cm4gbV9iaXRzICYgSXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGU7IH0KLSAgICBBTFdBWVNf
SU5MSU5FIGJvb2wgaXNQcml2YXRlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzUHJp
dmF0ZU5hbWU7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQcml2YXRlRmllbGQoKSBjb25z
dCB7IHJldHVybiBtX2JpdHMgJiBJc1ByaXZhdGVGaWVsZDsgfQorICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBpc1ByaXZhdGVNZXRob2QoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1ByaXZhdGVN
ZXRob2Q7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0NhcHR1cmVkKCkgeyBtX2Jp
dHMgfD0gSXNDYXB0dXJlZDsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0NvbnN0KCkg
eyBtX2JpdHMgfD0gSXNDb25zdDsgfQpAQCAtNTYsNyArNTcsOCBAQCBwdWJsaWM6CiAgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldElzRnVuY3Rpb24oKSB7IG1fYml0cyB8PSBJc0Z1bmN0aW9uOyB9
CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzUGFyYW1ldGVyKCkgeyBtX2JpdHMgfD0gSXNQ
YXJhbWV0ZXI7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNTbG9wcHlNb2RlSG9pc3Rp
bmdDYW5kaWRhdGUoKSB7IG1fYml0cyB8PSBJc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZTsg
fQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1ByaXZhdGVOYW1lKCkgeyBtX2JpdHMgfD0g
SXNQcml2YXRlTmFtZTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1ByaXZhdGVGaWVs
ZCgpIHsgbV9iaXRzIHw9IElzUHJpdmF0ZUZpZWxkOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldElzUHJpdmF0ZU1ldGhvZCgpIHsgbV9iaXRzIHw9IElzUHJpdmF0ZU1ldGhvZDsgfQogCiAg
ICAgQUxXQVlTX0lOTElORSB2b2lkIGNsZWFySXNWYXIoKSB7IG1fYml0cyAmPSB+SXNWYXI7IH0K
IApAQCAtNzksNyArODEsOCBAQCBwcml2YXRlOgogICAgICAgICBJc0Z1bmN0aW9uID0gMSA8PCA3
LAogICAgICAgICBJc1BhcmFtZXRlciA9IDEgPDwgOCwKICAgICAgICAgSXNTbG9wcHlNb2RlSG9p
c3RpbmdDYW5kaWRhdGUgPSAxIDw8IDksCi0gICAgICAgIElzUHJpdmF0ZU5hbWUgPSAxIDw8IDEw
LAorICAgICAgICBJc1ByaXZhdGVGaWVsZCA9IDEgPDwgMTAsCisgICAgICAgIElzUHJpdmF0ZU1l
dGhvZCA9IDEgPDwgMTEsCiAgICAgfTsKICAgICB1aW50MTZfdCBtX2JpdHMgeyAwIH07CiB9OwpA
QCAtODksMTEgKzkyLDE2IEBAIHN0cnVjdCBWYXJpYWJsZUVudmlyb25tZW50RW50cnlIYXNoVHJh
aXRzIDogSGFzaFRyYWl0czxWYXJpYWJsZUVudmlyb25tZW50RW50cnk+CiB9OwogCiBzdHJ1Y3Qg
UHJpdmF0ZU5hbWVFbnRyeSB7CisgICAgZnJpZW5kIGNsYXNzIENhY2hlZFByaXZhdGVOYW1lRW50
cnk7CisKIHB1YmxpYzoKICAgICBQcml2YXRlTmFtZUVudHJ5KHVpbnQxNl90IHRyYWl0cyA9IDAp
IHsgbV9iaXRzID0gdHJhaXRzOyB9CiAKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNVc2VkKCkg
Y29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNVc2VkOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29s
IGlzRGVjbGFyZWQoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc0RlY2xhcmVkOyB9CisgICAg
QUxXQVlTX0lOTElORSBib29sIGlzTWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNN
ZXRob2Q7IH0KKworICAgIGJvb2wgaXNQcml2YXRlQWNjZXNzKCkgY29uc3QgeyByZXR1cm4gaXNN
ZXRob2QoKTsgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzVXNlZCgpIHsgbV9iaXRz
IHw9IElzVXNlZDsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0RlY2xhcmVkKCkgeyBt
X2JpdHMgfD0gSXNEZWNsYXJlZDsgfQpAQCAtMTA2LDggKzExNCwxMCBAQCBwdWJsaWM6CiAgICAg
fQogCiAgICAgZW51bSBUcmFpdHMgOiB1aW50MTZfdCB7CisgICAgICAgIE5vbmUgPSAwLAogICAg
ICAgICBJc1VzZWQgPSAxIDw8IDAsCiAgICAgICAgIElzRGVjbGFyZWQgPSAxIDw8IDEsCisgICAg
ICAgIElzTWV0aG9kID0gMSA8PCAyLAogICAgIH07CiAKIHByaXZhdGU6CkBAIC0xMTUsMTQgKzEy
NSwxNiBAQCBwcml2YXRlOgogfTsKIAogc3RydWN0IFByaXZhdGVOYW1lRW50cnlIYXNoVHJhaXRz
IDogSGFzaFRyYWl0czxQcml2YXRlTmFtZUVudHJ5PiB7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wg
bmVlZHNEZXN0cnVjdGlvbiA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVk
c0Rlc3RydWN0aW9uID0gZmFsc2U7CiB9OwogCiBjbGFzcyBWYXJpYWJsZUVudmlyb25tZW50IHsK
IHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFBhY2tlZFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4sIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hU
cmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRy
eUhhc2hUcmFpdHM+IE1hcDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8UGFja2VkUmVmUHRyPFVuaXF1
ZWRTdHJpbmdJbXBsPiwgUHJpdmF0ZU5hbWVFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hU
cmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnlIYXNoVHJh
aXRzPiBQcml2YXRlTmFtZXM7CisKIHB1YmxpYzoKKyAgICB0eXBlZGVmIEhhc2hNYXA8UGFja2Vk
UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgUHJpdmF0ZU5hbWVFbnRyeSwgSWRlbnRpZmllclJl
cEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1l
RW50cnlIYXNoVHJhaXRzPiBQcml2YXRlTmFtZXM7CisKICAgICBWYXJpYWJsZUVudmlyb25tZW50
KCkgeyB9CiAgICAgVmFyaWFibGVFbnZpcm9ubWVudChWYXJpYWJsZUVudmlyb25tZW50JiYgb3Ro
ZXIpCiAgICAgICAgIDogbV9tYXAoV1RGTW92ZShvdGhlci5tX21hcCkpCkBAIC0xNDQsNiArMTU2
LDE2IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5k
KCkgY29uc3QgeyByZXR1cm4gbV9tYXAuZW5kKCk7IH0KICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6
QWRkUmVzdWx0IGFkZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVy
KSB7IHJldHVybiBtX21hcC5hZGQoaWRlbnRpZmllciwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5
KCkpOyB9CiAgICAgQUxXQVlTX0lOTElORSBNYXA6OkFkZFJlc3VsdCBhZGQoY29uc3QgSWRlbnRp
ZmllciYgaWRlbnRpZmllcikgeyByZXR1cm4gYWRkKGlkZW50aWZpZXIuaW1wbCgpKTsgfQorCisg
ICAgQUxXQVlTX0lOTElORSBQcml2YXRlTmFtZXM6OkFkZFJlc3VsdCBhZGRQcml2YXRlTmFtZShj
b25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBhZGRQcml2YXRlTmFtZShpZGVu
dGlmaWVyLmltcGwoKSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIFByaXZhdGVOYW1lczo6QWRkUmVz
dWx0IGFkZFByaXZhdGVOYW1lKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50
aWZpZXIpCisgICAgeworICAgICAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgICAgICBtX3Jh
cmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4o
KTsKKworICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKGlkZW50
aWZpZXIsIFByaXZhdGVOYW1lRW50cnkoKSk7CisgICAgfQorCiAgICAgQUxXQVlTX0lOTElORSB1
bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuc2l6ZSgpICsgcHJpdmF0ZU5hbWVz
U2l6ZSgpOyB9CiAgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBtYXBTaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9tYXAuc2l6ZSgpOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGNvbnRhaW5zKGNv
bnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpIGNvbnN0IHsgcmV0dXJu
IG1fbWFwLmNvbnRhaW5zKGlkZW50aWZpZXIpOyB9CkBAIC0xNjQsMTUgKzE4NiwxOCBAQCBwdWJs
aWM6CiAKICAgICB1c2luZyBQcml2YXRlTmFtZXNSYW5nZSA9IFdURjo6SXRlcmF0b3JSYW5nZTxQ
cml2YXRlTmFtZXM6Oml0ZXJhdG9yPjsKIAotICAgIEFMV0FZU19JTkxJTkUgTWFwOjpBZGRSZXN1
bHQgZGVjbGFyZVByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsgcmV0
dXJuIGRlY2xhcmVQcml2YXRlTmFtZShpZGVudGlmaWVyLmltcGwoKSk7IH0KKyAgICBBTFdBWVNf
SU5MSU5FIE1hcDo6QWRkUmVzdWx0IGRlY2xhcmVQcml2YXRlRmllbGQoY29uc3QgSWRlbnRpZmll
ciYgaWRlbnRpZmllcikgeyByZXR1cm4gZGVjbGFyZVByaXZhdGVGaWVsZChpZGVudGlmaWVyLmlt
cGwoKSk7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdXNlUHJpdmF0ZU5hbWUoY29uc3QgSWRl
bnRpZmllciYgaWRlbnRpZmllcikgeyB1c2VQcml2YXRlTmFtZShpZGVudGlmaWVyLmltcGwoKSk7
IH0KIAotICAgIE1hcDo6QWRkUmVzdWx0IGRlY2xhcmVQcml2YXRlTmFtZShjb25zdCBSZWZQdHI8
VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQorICAgIGJvb2wgZGVjbGFyZVByaXZhdGVN
ZXRob2QoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyByZXR1cm4gZGVjbGFyZVByaXZh
dGVNZXRob2QoaWRlbnRpZmllci5pbXBsKCkpOyB9CisgICAgYm9vbCBkZWNsYXJlUHJpdmF0ZU1l
dGhvZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKTsKKworICAg
IE1hcDo6QWRkUmVzdWx0IGRlY2xhcmVQcml2YXRlRmllbGQoY29uc3QgUmVmUHRyPFVuaXF1ZWRT
dHJpbmdJbXBsPiYgaWRlbnRpZmllcikKICAgICB7CiAgICAgICAgIGF1dG8mIG1ldGEgPSBnZXRP
ckFkZFByaXZhdGVOYW1lKGlkZW50aWZpZXIuZ2V0KCkpOwogICAgICAgICBtZXRhLnNldElzRGVj
bGFyZWQoKTsKICAgICAgICAgYXV0byBlbnRyeSA9IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgp
OwotICAgICAgICBlbnRyeS5zZXRJc1ByaXZhdGVOYW1lKCk7CisgICAgICAgIGVudHJ5LnNldElz
UHJpdmF0ZUZpZWxkKCk7CiAgICAgICAgIGVudHJ5LnNldElzQ29uc3QoKTsKICAgICAgICAgZW50
cnkuc2V0SXNDYXB0dXJlZCgpOwogICAgICAgICByZXR1cm4gbV9tYXAuYWRkKGlkZW50aWZpZXIs
IGVudHJ5KTsKQEAgLTE5OSw2ICsyMjQsMTkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9y
YXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuc2l6ZSgpOwogICAgIH0KIAorICAgIEFMV0FZU19JTkxJ
TkUgYm9vbCBoYXNQcml2YXRlQWNjZXNzKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghbV9y
YXJlRGF0YSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBmb3IgKGF1dG8g
ZW50cnkgOiBwcml2YXRlTmFtZXMoKSkgeworICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVlLmlz
UHJpdmF0ZUFjY2VzcygpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9
CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgYm9v
bCBoYXNQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogICAgIHsKICAg
ICAgICAgaWYgKCFtX3JhcmVEYXRhKQpAQCAtMjgwLDYgKzMxOCw5IEBAIHByaXZhdGU6CiAKICAg
ICBWZWN0b3I8UGFja2VkUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4gbV92YXJpYWJsZXM7CiAg
ICAgVmVjdG9yPFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeT4gbV92YXJpYWJsZU1ldGFkYXRhOwor
ICAgIFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiBtX3ByaXZhdGVBY2Nlc3NOYW1l
czsKKyAgICBWZWN0b3I8UHJpdmF0ZU5hbWVFbnRyeT4gbV9wcml2YXRlTmFtZU1ldGFkYXRhOwor
CiAgICAgdW5zaWduZWQgbV9oYXNoOwogICAgIGJvb2wgbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZDsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBl
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKaW5k
ZXggY2RjYTFmZDQ5MjkuLmVjNzc4OGFiMjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCkBAIC05NjcsNiArOTY3LDcgQEAgcHVibGljOgogICAg
ICAgICBtX2JpdFZlY3RvcnMuZW5jb2RlKGVuY29kZXIsIHJhcmVEYXRhLm1fYml0VmVjdG9ycyk7
CiAgICAgICAgIG1fY29uc3RhbnRJZGVudGlmaWVyU2V0cy5lbmNvZGUoZW5jb2RlciwgcmFyZURh
dGEubV9jb25zdGFudElkZW50aWZpZXJTZXRzKTsKICAgICAgICAgbV9uZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplciA9IHJhcmVEYXRhLm1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI7CisgICAg
ICAgIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSByYXJlRGF0YS5tX3ByaXZhdGVCcmFuZFJl
cXVpcmVtZW50OwogICAgIH0KIAogICAgIFVubGlua2VkQ29kZUJsb2NrOjpSYXJlRGF0YSogZGVj
b2RlKERlY29kZXImIGRlY29kZXIpIGNvbnN0CkBAIC05ODEsNiArOTgyLDcgQEAgcHVibGljOgog
ICAgICAgICBtX2JpdFZlY3RvcnMuZGVjb2RlKGRlY29kZXIsIHJhcmVEYXRhLT5tX2JpdFZlY3Rv
cnMpOwogICAgICAgICBtX2NvbnN0YW50SWRlbnRpZmllclNldHMuZGVjb2RlKGRlY29kZXIsIHJh
cmVEYXRhLT5tX2NvbnN0YW50SWRlbnRpZmllclNldHMpOwogICAgICAgICByYXJlRGF0YS0+bV9u
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9IG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI7
CisgICAgICAgIHJhcmVEYXRhLT5tX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID0gbV9wcml2YXRl
QnJhbmRSZXF1aXJlbWVudDsKICAgICAgICAgcmV0dXJuIHJhcmVEYXRhOwogICAgIH0KIApAQCAt
OTk0LDYgKzk5Niw3IEBAIHByaXZhdGU6CiAgICAgQ2FjaGVkVmVjdG9yPENhY2hlZEJpdFZlY3Rv
cj4gbV9iaXRWZWN0b3JzOwogICAgIENhY2hlZFZlY3RvcjxDYWNoZWRDb25zdGFudElkZW50aWZp
ZXJTZXRFbnRyeT4gbV9jb25zdGFudElkZW50aWZpZXJTZXRzOwogICAgIHVuc2lnbmVkIG1fbmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgOiAxOworICAgIHVuc2lnbmVkIG1fcHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQgOiAxOwogfTsKIAogY2xhc3MgQ2FjaGVkVmFyaWFibGVFbnZpcm9ubWVudFJh
cmVEYXRhIDogcHVibGljIENhY2hlZE9iamVjdDxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0
YT4gewpAQCAtMTE3NCw3ICsxMTc3LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAg
ICBDYWNoZWRIYXNoU2V0PENhY2hlZFJlZlB0cjxDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbD4sIElk
ZW50aWZpZXJSZXBIYXNoPiBtX3ByaXZhdGVOYW1lczsKKyAgICBDYWNoZWRIYXNoTWFwPENhY2hl
ZFJlZlB0cjxDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbCwgVW5pcXVlZFN0cmluZ0ltcGwsIFdURjo6
UGFja2VkUHRyVHJhaXRzPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnksIElk
ZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+LCBQ
cml2YXRlTmFtZUVudHJ5SGFzaFRyYWl0cz4gbV9wcml2YXRlTmFtZXM7CiB9OwogCiBjbGFzcyBD
YWNoZWRTeW1ib2xUYWJsZSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8U3ltYm9sVGFibGU+IHsKQEAg
LTE3MjksMjEgKzE3MzIsMjEgQEAgcHVibGljOgogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpSYXJlRGF0YSYgcmFyZURh
dGEpCiAgICAgewogICAgICAgICBtX2NsYXNzU291cmNlLmVuY29kZShlbmNvZGVyLCByYXJlRGF0
YS5tX2NsYXNzU291cmNlKTsKLSAgICAgICAgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5lbmNv
ZGUoZW5jb2RlciwgcmFyZURhdGEubV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CisgICAgICAg
IG1fcGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50LmVuY29kZShlbmNvZGVyLCByYXJlRGF0
YS5tX3BhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCk7CiAgICAgfQogCiAgICAgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlJhcmVEYXRhKiBkZWNvZGUoRGVjb2RlciYgZGVjb2Rlcikg
Y29uc3QKICAgICB7CiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpSYXJlRGF0
YSogcmFyZURhdGEgPSBuZXcgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlJhcmVEYXRhIHsg
fTsKICAgICAgICAgbV9jbGFzc1NvdXJjZS5kZWNvZGUoZGVjb2RlciwgcmFyZURhdGEtPm1fY2xh
c3NTb3VyY2UpOwotICAgICAgICBhdXRvIHBhcmVudFNjb3BlVERaVmFyaWFibGVzID0gbV9wYXJl
bnRTY29wZVREWlZhcmlhYmxlcy5kZWNvZGUoZGVjb2Rlcik7Ci0gICAgICAgIHJhcmVEYXRhLT5t
X3BhcmVudFNjb3BlVERaVmFyaWFibGVzID0gV1RGTW92ZShwYXJlbnRTY29wZVREWlZhcmlhYmxl
cyk7CisgICAgICAgIGF1dG8gcGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50ID0gbV9wYXJl
bnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQuZGVjb2RlKGRlY29kZXIpOworICAgICAgICByYXJl
RGF0YS0+bV9wYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQgPSBXVEZNb3ZlKHBhcmVudFNj
b3BlVmFyaWFibGVFbnZpcm9ubWVudCk7CiAgICAgICAgIHJldHVybiByYXJlRGF0YTsKICAgICB9
CiAKIHByaXZhdGU6CiAgICAgQ2FjaGVkU291cmNlQ29kZVdpdGhvdXRQcm92aWRlciBtX2NsYXNz
U291cmNlOwotICAgIENhY2hlZENvbXBhY3RWYXJpYWJsZU1hcEhhbmRsZSBtX3BhcmVudFNjb3Bl
VERaVmFyaWFibGVzOworICAgIENhY2hlZENvbXBhY3RWYXJpYWJsZU1hcEhhbmRsZSBtX3BhcmVu
dFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudDsKIH07CiAKIGNsYXNzIENhY2hlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+
IHsKQEAgLTE3NzksNiArMTc4Miw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBzdXBlckJpbmRp
bmcoKSBjb25zdCB7IHJldHVybiBtX3N1cGVyQmluZGluZzsgfQogICAgIHVuc2lnbmVkIGRlcml2
ZWRDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVyaXZlZENvbnRleHRUeXBlOyB9CiAg
ICAgdW5zaWduZWQgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSBjb25zdCB7IHJldHVybiBt
X25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOyB9CisgICAgdW5zaWduZWQgcHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50OyB9
CiAKICAgICBJZGVudGlmaWVyIG5hbWUoRGVjb2RlciYgZGVjb2RlcikgY29uc3QgeyByZXR1cm4g
bV9uYW1lLmRlY29kZShkZWNvZGVyKTsgfQogICAgIElkZW50aWZpZXIgZWNtYU5hbWUoRGVjb2Rl
ciYgZGVjb2RlcikgY29uc3QgeyByZXR1cm4gbV9lY21hTmFtZS5kZWNvZGUoZGVjb2Rlcik7IH0K
QEAgLTE4MDcsNyArMTgxMSw4IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9wYXJhbWV0ZXJz
U3RhcnRPZmZzZXQgOiAzMTsKICAgICB1bnNpZ25lZCBtX3R5cGVQcm9maWxpbmdTdGFydE9mZnNl
dDsKICAgICB1bnNpZ25lZCBtX3R5cGVQcm9maWxpbmdFbmRPZmZzZXQ7Ci0gICAgdW5zaWduZWQg
bV9wYXJhbWV0ZXJDb3VudDsKKyAgICB1bnNpZ25lZCBtX3BhcmFtZXRlckNvdW50OjMxOworICAg
IHVuc2lnbmVkIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgOiAxOwogICAgIFNvdXJjZVBhcnNl
TW9kZSBtX3NvdXJjZVBhcnNlTW9kZTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6
IDI7CiAgICAgdW5zaWduZWQgbV9mdW5jdGlvbk1vZGUgOiAyOyAvLyBGdW5jdGlvbk1vZGUKQEAg
LTE4NjUsNyArMTg3MCw2IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBpc0NsYXNzQ29udGV4dCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNDbGFzc0NvbnRleHQ7IH0KICAgICB1bnNpZ25lZCBjb25zdHJ1
Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBtX2NvbnN0cnVjdG9yS2luZDsgfQogICAgIHVuc2ln
bmVkIGRlcml2ZWRDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVyaXZlZENvbnRleHRU
eXBlOyB9Ci0gICAgdW5zaWduZWQgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSBjb25zdCB7
IHJldHVybiBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOyB9CiAgICAgdW5zaWduZWQgZXZh
bENvbnRleHRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9ldmFsQ29udGV4dFR5cGU7IH0KICAgICB1
bnNpZ25lZCBoYXNUYWlsQ2FsbHMoKSBjb25zdCB7IHJldHVybiBtX2hhc1RhaWxDYWxsczsgfQog
ICAgIHVuc2lnbmVkIGhhc0NoZWNrcG9pbnRzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNDaGVja3Bv
aW50czsgfQpAQCAtMTg5OCw3ICsxOTAyLDYgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2lz
Q2xhc3NDb250ZXh0IDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CiAg
ICAgdW5zaWduZWQgbV9kZXJpdmVkQ29udGV4dFR5cGUgOiAyOwotICAgIHVuc2lnbmVkIG1fbmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgOiAxOwogICAgIHVuc2lnbmVkIG1fZXZhbENvbnRleHRU
eXBlIDogMjsKICAgICB1bnNpZ25lZCBtX2hhc1RhaWxDYWxscyA6IDE7CiAgICAgdW5zaWduZWQg
bV9jb2RlVHlwZSA6IDI7CkBAIC0yMTgwLDYgKzIxODMsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQg
Q2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
VW5saQogICAgIG1fc3VwZXJCaW5kaW5nID0gZXhlY3V0YWJsZS5tX3N1cGVyQmluZGluZzsKICAg
ICBtX2Rlcml2ZWRDb250ZXh0VHlwZSA9IGV4ZWN1dGFibGUubV9kZXJpdmVkQ29udGV4dFR5cGU7
CiAgICAgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9IGV4ZWN1dGFibGUubV9uZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplcjsKKyAgICBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID0gZXhl
Y3V0YWJsZS5tX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50OwogCiAgICAgbV9yYXJlRGF0YS5lbmNv
ZGUoZW5jb2RlciwgZXhlY3V0YWJsZS5tX3JhcmVEYXRhLmdldCgpKTsKIApAQCAtMjIyMSw2ICsy
MjI1LDcgQEAgQUxXQVlTX0lOTElORSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUoRGVjb2RlciYgZGUKICAgICAsIG1fdHlwZVByb2ZpbGluZ1N0
YXJ0T2Zmc2V0KGNhY2hlZEV4ZWN1dGFibGUudHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KCkpCiAg
ICAgLCBtX3R5cGVQcm9maWxpbmdFbmRPZmZzZXQoY2FjaGVkRXhlY3V0YWJsZS50eXBlUHJvZmls
aW5nRW5kT2Zmc2V0KCkpCiAgICAgLCBtX3BhcmFtZXRlckNvdW50KGNhY2hlZEV4ZWN1dGFibGUu
cGFyYW1ldGVyQ291bnQoKSkKKyAgICAsIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoY2FjaGVk
RXhlY3V0YWJsZS5wcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpKQogICAgICwgbV9mZWF0dXJlcyhj
YWNoZWRFeGVjdXRhYmxlLmZlYXR1cmVzKCkpCiAgICAgLCBtX3NvdXJjZVBhcnNlTW9kZShjYWNo
ZWRFeGVjdXRhYmxlLnNvdXJjZVBhcnNlTW9kZSgpKQogICAgICwgbV9jb25zdHJ1Y3RvcktpbmQo
Y2FjaGVkRXhlY3V0YWJsZS5jb25zdHJ1Y3RvcktpbmQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCmluZGV4IDA1MWVhN2FhNjY4Li4yOTYwZWI5ZmViZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCkBAIC05Miw5
ICs5MiwxMiBAQCBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxv
Y2tJbXBsKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgcwogICAgIGJvb2wgdXNlc0V2YWwgPSBy
b290Tm9kZS0+ZmVhdHVyZXMoKSAmIEV2YWxGZWF0dXJlOwogICAgIGJvb2wgaXNTdHJpY3RNb2Rl
ID0gcm9vdE5vZGUtPmZlYXR1cmVzKCkgJiBTdHJpY3RNb2RlRmVhdHVyZTsKICAgICBOZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9IE5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyOjpObzsKLSAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZV92
PEV4ZWN1dGFibGVUeXBlLCBEaXJlY3RFdmFsRXhlY3V0YWJsZT4pCisgICAgUHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBQcml2YXRlQnJhbmRSZXF1aXJl
bWVudDo6Tm9uZTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZV92PEV4ZWN1dGFibGVU
eXBlLCBEaXJlY3RFdmFsRXhlY3V0YWJsZT4pIHsKICAgICAgICAgbmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIgPSBleGVjdXRhYmxlLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpOwotICAg
IEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsLCBpc1N0cmljdE1vZGUsIGZh
bHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBzY3JpcHRNb2RlLCBTdXBlckJpbmRp
bmc6Ok5vdE5lZWRlZCwgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1v
ZGUsIGRlcml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGlzQXJy
b3dGdW5jdGlvbkNvbnRleHQsIGZhbHNlLCBldmFsQ29udGV4dFR5cGUpOworICAgICAgICBwcml2
YXRlQnJhbmRSZXF1aXJlbWVudCA9IGV4ZWN1dGFibGUtPnByaXZhdGVCcmFuZFJlcXVpcmVtZW50
KCk7CisgICAgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsLCBp
c1N0cmljdE1vZGUsIGZhbHNlLCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCwgZmFsc2UsIENvbnN0
cnVjdG9yS2luZDo6Tm9uZSwgc2NyaXB0TW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIENh
Y2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBkZXJpdmVkQ29udGV4
dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0
LCBmYWxzZSwgZXZhbENvbnRleHRUeXBlKTsKIAogICAgIFVubGlua2VkQ29kZUJsb2NrVHlwZSog
dW5saW5rZWRDb2RlQmxvY2sgPSBVbmxpbmtlZENvZGVCbG9ja1R5cGU6OmNyZWF0ZSh2bSwgZXhl
Y3V0YWJsZUluZm8sIGNvZGVHZW5lcmF0aW9uTW9kZSk7CiAgICAgdW5saW5rZWRDb2RlQmxvY2st
PnJlY29yZFBhcnNlKHJvb3ROb2RlLT5mZWF0dXJlcygpLCByb290Tm9kZS0+aGFzQ2FwdHVyZWRW
YXJpYWJsZXMoKSwgbGluZUNvdW50LCB1bmxpbmtlZEVuZENvbHVtbik7CkBAIC0yNDQsNyArMjQ3
LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIENvZGVDYWNoZTo6Z2V0VW5saW5rZWRH
bG9iYWxGdW5jdGlvbkV4ZWN1dGFibGUoVk0mIHYKICAgICAvLyBUaGUgRnVuY3Rpb24gY29uc3Ry
dWN0b3Igb25seSBoYXMgYWNjZXNzIHRvIGdsb2JhbCB2YXJpYWJsZXMsIHNvIG5vIHZhcmlhYmxl
cyB3aWxsIGJlIHVuZGVyIFREWiB1bmxlc3MgdGhleSdyZQogICAgIC8vIGluIHRoZSBnbG9iYWwg
bGV4aWNhbCBlbnZpcm9ubWVudCwgd2hpY2ggd2UgYWx3YXlzIFREWiBjaGVjayBhY2Nlc3NlcyBm
cm9tLgogICAgIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSA9IGNvbnN0cnVjdEFi
aWxpdHlGb3JQYXJzZU1vZGUobWV0YWRhdGEtPnBhcnNlTW9kZSgpKTsKLSAgICBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU6OmNyZWF0ZSh2bSwgc291cmNlLCBtZXRhZGF0YSwgVW5saW5rZWROb3JtYWxGdW5j
dGlvbiwgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBXVEY6
Om51bGxvcHQsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXI6Ok5vKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVj
dXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSh2bSwgc291cmNlLCBt
ZXRhZGF0YSwgVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJz
ZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBXVEY6Om51bGxvcHQsIERlcml2ZWRDb250ZXh0VHlwZTo6
Tm9uZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vLCBQcml2YXRlQnJhbmRSZXF1aXJl
bWVudDo6Tm9uZSk7CiAKICAgICBpZiAoIXNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2VVUkxEaXJl
Y3RpdmUoKS5pc051bGwoKSkKICAgICAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5zZXRTb3VyY2VV
UkxEaXJlY3RpdmUoc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZVVSTERpcmVjdGl2ZSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRh
YmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRh
YmxlLmNwcAppbmRleCBlYWIzODcyMmY1YS4uMWQ4MjNiYmUxNmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKQEAg
LTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLURpcmVjdEV2YWxFeGVjdXRhYmxl
KiBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgRGVy
aXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29u
dGV4dCwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgY29uc3QgVmFyaWFibGVFbnZp
cm9ubWVudCogdmFyaWFibGVzVW5kZXJURFopCitEaXJlY3RFdmFsRXhlY3V0YWJsZSogRGlyZWN0
RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIERlcml2ZWRDb250
ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRl
QnJhbmRSZXF1aXJlbWVudCwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4
dFR5cGUgZXZhbENvbnRleHRUeXBlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiB2YXJpYWJs
ZXNVbmRlclREWikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNDUsNyArNDUsNyBAQCBEaXJl
Y3RFdmFsRXhlY3V0YWJsZSogRGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBhdXRv
KiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RGlyZWN0RXZhbEV4ZWN1
dGFibGU+KHZtLmhlYXApKSBEaXJlY3RFdmFsRXhlY3V0YWJsZShnbG9iYWxPYmplY3QsIHNvdXJj
ZSwgaXNJblN0cmljdENvbnRleHQsIGRlcml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGV2YWxDb250ZXh0VHlwZSk7Cisg
ICAgYXV0byogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERpcmVjdEV2
YWxFeGVjdXRhYmxlPih2bS5oZWFwKSkgRGlyZWN0RXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0
LCBzb3VyY2UsIGlzSW5TdHJpY3RDb250ZXh0LCBkZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyLCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCwgaXNBcnJvd0Z1bmN0
aW9uQ29udGV4dCwgZXZhbENvbnRleHRUeXBlKTsKICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVh
dGlvbih2bSk7CiAKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKQEAgLTY4LDEwICs2OCwxMCBAQCBE
aXJlY3RFdmFsRXhlY3V0YWJsZSogRGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIHJldHVybiBleGVjdXRhYmxlOwogfQogCi1EaXJl
Y3RFdmFsRXhlY3V0YWJsZTo6RGlyZWN0RXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGluU3RyaWN0Q29udGV4
dCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0
aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSkKLSAgICA6IEV2YWxF
eGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNlLCBpblN0cmljdENvbnRleHQsIGRlcml2ZWRD
b250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgZXZhbENvbnRleHRUeXBlLCBuZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplcikKK0RpcmVjdEV2YWxFeGVjdXRhYmxlOjpEaXJlY3RFdmFs
RXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZl
ZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250
ZXh0VHlwZSkKKyAgICA6IEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNlLCBpblN0
cmljdENvbnRleHQsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwg
ZXZhbENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgcHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQpCiB7Ci0gICAgQVNTRVJUKG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyID09
IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObyB8fCBkZXJpdmVkQ29udGV4dFR5cGUgPT0g
RGVyaXZlZENvbnRleHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KTsKKyAgICBBU1NF
UlQoKG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyID09IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyOjpObyAmJiBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9PSBQcml2YXRlQnJhbmRSZXF1aXJl
bWVudDo6Tm9uZSkgfHwgZGVyaXZlZENvbnRleHRUeXBlID09IERlcml2ZWRDb250ZXh0VHlwZTo6
RGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFi
bGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxl
LmgKaW5kZXggZjdhYmQ1ZjFlZDkuLmU3MjZkNTk4YmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmgKQEAgLTMxLDkgKzMx
LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIERpcmVjdEV2YWxFeGVjdXRhYmxlIGZpbmFs
IDogcHVibGljIEV2YWxFeGVjdXRhYmxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgRGlyZWN0RXZh
bEV4ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBi
b29sIGlzSW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlw
ZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCopOworICAgIHN0YXRpYyBEaXJlY3RFdmFsRXhl
Y3V0YWJsZSogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wg
aXNJblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29sIGlzQXJyb3dGdW5jdGlvbkNv
bnRleHQsIEV2YWxDb250ZXh0VHlwZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCopOwogcHJp
dmF0ZToKLSAgICBEaXJlY3RFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNv
dXJjZUNvZGUmLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBOZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFs
Q29udGV4dFR5cGUpOworICAgIERpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0Kiwg
Y29uc3QgU291cmNlQ29kZSYsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5
cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCwg
Ym9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUpOwogfTsKIAogc3Rh
dGljX2Fzc2VydChzaXplb2YoRGlyZWN0RXZhbEV4ZWN1dGFibGUpID09IHNpemVvZihFdmFsRXhl
Y3V0YWJsZSksICIiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V2YWxFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxF
eGVjdXRhYmxlLmNwcAppbmRleCA1ZTEzODA5N2Q0ZS4uNzVjMWM5ZGI2Y2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5jcHAKQEAgLTMzLDkg
KzMzLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gRXZhbEV4ZWN1dGFi
bGU6OnNfaW5mbyA9IHsgIkV2YWxFeGVjdXRhYmxlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwg
bnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShFdmFsRXhlY3V0YWJsZSkgfTsKIAotRXZhbEV4
ZWN1dGFibGU6OkV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRDb250
ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwg
RXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpCitFdmFsRXhlY3V0YWJsZTo6RXZhbEV4ZWN1
dGFibGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250
ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUgZXZh
bENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQpCiAgICAgOiBCYXNlKGdsb2JhbE9iamVjdC0+dm0oKS5ldmFsRXhlY3V0YWJsZVN0cnVjdHVy
ZS5nZXQoKSwgZ2xvYmFsT2JqZWN0LT52bSgpLCBzb3VyY2UsIGluU3RyaWN0Q29udGV4dCwgZGVy
aXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBldmFsQ29udGV4dFR5cGUs
IE5vSW50cmluc2ljKQogICAgICwgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcihzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4obmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpKQorICAgICwgbV9wcml2
YXRlQnJhbmRSZXF1aXJlbWVudChzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQpKQogewogICAgIEFTU0VSVChzb3VyY2UucHJvdmlkZXIoKS0+c291cmNlVHlwZSgp
ID09IFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaAppbmRleCA3OTI2MWQ5NDFhMi4u
NmRjNmZiYzUyNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2
YWxFeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4
ZWN1dGFibGUuaApAQCAtNjIsMTMgKzYyLDE0IEBAIHB1YmxpYzoKIAogICAgIERFQ0xBUkVfSU5G
TzsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4g
RXhlY3V0YWJsZUluZm8odXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwg
Q29uc3RydWN0b3JLaW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIFN1cGVy
QmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBkZXJpdmVk
Q29udGV4dFR5cGUoKSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgaXNBcnJvd0Z1bmN0
aW9uQ29udGV4dCgpLCBmYWxzZSwgZXZhbENvbnRleHRUeXBlKCkpOyB9CisgICAgRXhlY3V0YWJs
ZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1c2Vz
RXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpO
b25lLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6OkNs
YXNzaWMsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1N
b2RlLCBkZXJpdmVkQ29udGV4dFR5cGUoKSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwg
aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgZXZhbENvbnRleHRUeXBlKCkpOyB9CiAK
ICAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVC
bG9jay0+bnVtVmFyaWFibGVzKCk7IH0KICAgICB1bnNpZ25lZCBudW1GdW5jdGlvbkhvaXN0aW5n
Q2FuZGlkYXRlcygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1GdW5jdGlv
bkhvaXN0aW5nQ2FuZGlkYXRlcygpOyB9CiAgICAgdW5zaWduZWQgbnVtVG9wTGV2ZWxGdW5jdGlv
bkRlY2xzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rp
b25EZWNscygpOyB9CiAgICAgYm9vbCBhbGxvd0RpcmVjdEV2YWxDYWNoZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5hbGxvd0RpcmVjdEV2YWxDYWNoZSgpOyB9CiAg
ICAgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcj4o
bV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcik7IH0KKyAgICBQcml2YXRlQnJhbmRSZXF1aXJl
bWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PFByaXZhdGVCcmFuZFJlcXVpcmVtZW50PihtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50KTsgfQog
ICAgIFRlbXBsYXRlT2JqZWN0TWFwJiBlbnN1cmVUZW1wbGF0ZU9iamVjdE1hcChWTSYpOwogCiBw
cm90ZWN0ZWQ6CkBAIC03NiwxMSArNzcsMTIgQEAgcHJvdGVjdGVkOgogICAgIGZyaWVuZCBjbGFz
cyBTY3JpcHRFeGVjdXRhYmxlOwogCiAgICAgdXNpbmcgQmFzZTo6ZmluaXNoQ3JlYXRpb247Ci0g
ICAgRXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9v
bCBpblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rp
b25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsK
KyAgICBFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBi
b29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5j
dGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIs
IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50KTsKIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIHVuc2lnbmVkIG1fbmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIgOiAxOworICAgIHVuc2lnbmVkIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQgOiAxOwogCiAgICAgV3JpdGVCYXJyaWVyPEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+IG1f
ZXZhbENvZGVCbG9jazsKICAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRFdmFsQ29kZUJsb2NrPiBt
X3VubGlua2VkRXZhbENvZGVCbG9jazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKaW5kZXggZDgxZTU4NjY0MWIuLjFmNjdhOGYwZTEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxw
ZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxw
ZXJzLmNwcApAQCAtMzMxLDcgKzMzMSw3IEBAIEpTT2JqZWN0KiBjcmVhdGVURFpFcnJvcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiBKU09iamVjdCogY3JlYXRlSW52YWxpZFByaXZh
dGVOYW1lRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4g
Y3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygiQ2Fubm90IGFjY2VzcyBp
bnZhbGlkIHByaXZhdGUgZmllbGQiKSwgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBUeXBlTm90aGlu
Zyk7CisgICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmco
IkludmFsaWQgcHJpdmF0ZSBtZW1iZXIgYWNjZXNzIiksIGRlZmF1bHRTb3VyY2VBcHBlbmRlciwg
VHlwZU5vdGhpbmcpOwogfQogCiBKU09iamVjdCogY3JlYXRlUmVkZWZpbmVkUHJpdmF0ZU5hbWVF
cnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcAppbmRleCA0
ODdkOGI4YzFjZC4uN2NkMmY2MWZlYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCkBAIC02OSw3ICs2OSw3
IEBAIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUqIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiB9CiAKIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6
OkluZGlyZWN0RXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRl
eHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBF
dmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKQotICAgIDogRXZhbEV4ZWN1dGFibGUoZ2xv
YmFsT2JqZWN0LCBzb3VyY2UsIGluU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBp
c0Fycm93RnVuY3Rpb25Db250ZXh0LCBldmFsQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyOjpObykKKyAgICA6IEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNl
LCBpblN0cmljdENvbnRleHQsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29u
dGV4dCwgZXZhbENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8sIFBy
aXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU2NvcGUuY3BwCmluZGV4IDk2YzhkYmQ0MzA2Li45ZjEwNTNmZjUxYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKQEAgLTM0MCw4ICszNDAs
MTQgQEAgdm9pZCBKU1Njb3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKEpTU2Nv
cGUqIHNjb3BlLCBWYXJpYWJsZUVudmlyb25tZW4KICAgICAgICAgZm9yIChhdXRvIGVuZCA9IHN5
bWJvbFRhYmxlLT5lbmQobG9ja2VyKSwgaXRlciA9IHN5bWJvbFRhYmxlLT5iZWdpbihsb2NrZXIp
OyBpdGVyICE9IGVuZDsgKytpdGVyKQogICAgICAgICAgICAgcmVzdWx0LmFkZChpdGVyLT5rZXkp
OwogICAgICAgICBpZiAoc3ltYm9sVGFibGUtPmhhc1ByaXZhdGVOYW1lcygpKSB7Ci0gICAgICAg
ICAgICBmb3IgKGF1dG8gbmFtZSA6IHN5bWJvbFRhYmxlLT5wcml2YXRlTmFtZXMoKSkKLSAgICAg
ICAgICAgICAgICByZXN1bHQudXNlUHJpdmF0ZU5hbWUobmFtZSk7ICAgIAorICAgICAgICAgICAg
YXV0byBwcml2YXRlTmFtZXMgPSBzeW1ib2xUYWJsZS0+cHJpdmF0ZU5hbWVzKCk7CisgICAgICAg
ICAgICBmb3IgKGF1dG8gZW5kID0gcHJpdmF0ZU5hbWVzLmVuZCgpLCBpdGVyID0gcHJpdmF0ZU5h
bWVzLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKKyAgICAgICAgICAgICAgICBpZiAo
aXRlci0+dmFsdWUuaXNQcml2YXRlQWNjZXNzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0
byBhZGRSZXN1bHQgPSByZXN1bHQuYWRkUHJpdmF0ZU5hbWUoaXRlci0+a2V5KTsKKyAgICAgICAg
ICAgICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IGl0ZXItPnZhbHVlOworICAg
ICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICByZXN1bHQudXNlUHJpdmF0
ZU5hbWUoaXRlci0+a2V5KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVj
dXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZS5oCmluZGV4IDQ2NTQ2MjAwNGYzLi4zNzJmMTBkNDk1NSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5o
CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIEV4
ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUlu
Zm8odXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JL
aW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6Ok1vZHVsZSwgU3VwZXJCaW5kaW5nOjpOb3RO
ZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVNb2RlLCBkZXJpdmVkQ29udGV4
dFR5cGUoKSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vLCBpc0Fycm93RnVuY3Rpb25D
b250ZXh0KCksIGZhbHNlLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUpOyB9CisgICAgRXhlY3V0YWJs
ZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1c2Vz
RXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpO
b25lLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6Ok1v
ZHVsZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlRXZh
bHVhdGVNb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUoKSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXI6Ok5vLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlLCBFdmFsQ29udGV4dFR5cGU6
Ok5vbmUpOyB9CiAKICAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2Vk
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygpIHsgcmV0dXJuIG1fdW5saW5rZWRNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCmluZGV4IDI5Y2EwMTMyMDU2Li5hMWFkZmVjNjE3MSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5o
CkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgREVDTEFSRV9JTkZPOwog
Ci0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVj
dXRhYmxlSW5mbyh1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25z
dHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgU3VwZXJCaW5k
aW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGRlcml2ZWRDb250
ZXh0VHlwZSgpLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8sIGlzQXJyb3dGdW5jdGlv
bkNvbnRleHQoKSwgZmFsc2UsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSk7IH0KKyAgICBFeGVjdXRh
YmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVz
ZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6
Ok5vbmUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6
Q2xhc3NpYywgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3Jh
bU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6
Tm8sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgZmFsc2UsIEV2YWxDb250ZXh0VHlwZTo6Tm9u
ZSk7IH0KIAogICAgIFRlbXBsYXRlT2JqZWN0TWFwJiBlbnN1cmVUZW1wbGF0ZU9iamVjdE1hcChW
TSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xU
YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAK
aW5kZXggNzc5MGNmNTczZDIuLjlmN2M0YmRiZjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCkBAIC0xODYsNyArMTg2LDcgQEAgU3ltYm9sVGFi
bGUqIFN5bWJvbFRhYmxlOjpjbG9uZVNjb3BlUGFydChWTSYgdm0pCiAKICAgICAgICAgewogICAg
ICAgICAgICAgZm9yIChhdXRvIG5hbWUgOiBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcykKLSAg
ICAgICAgICAgICAgICByZXN1bHQtPm1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChuYW1l
KTsKKyAgICAgICAgICAgICAgICByZXN1bHQtPm1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFk
ZChuYW1lLmtleSwgbmFtZS52YWx1ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAppbmRleCA4N2I0ZGJiYmEzOC4u
OGRjMWU3Njg5ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5
bWJvbFRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFi
bGUuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50c1RhYmxlLmgi
CiAjaW5jbHVkZSAiVHlwZUxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiVmFyT2Zmc2V0LmgiCisjaW5j
bHVkZSAiVmFyaWFibGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKICNp
bmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KQEAgLTQ1MCw4ICs0
NTEsNyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4sIFJlZlB0cjxUeXBlU2V0PiwgSWRlbnRpZmllclJlcEhhc2g+IFVuaXF1ZVR5cGVTZXRN
YXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFZhck9mZnNldCwgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJ
bXBsPj4gT2Zmc2V0VG9WYXJpYWJsZU1hcDsKICAgICB0eXBlZGVmIFZlY3RvcjxTeW1ib2xUYWJs
ZUVudHJ5Kj4gTG9jYWxUb0VudHJ5VmVjOwotICAgIHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8VW5p
cXVlZFN0cmluZ0ltcGw+LCBJZGVudGlmaWVyUmVwSGFzaD4gUHJpdmF0ZU5hbWVTZXQ7Ci0gICAg
dHlwZWRlZiBXVEY6Okl0ZXJhdG9yUmFuZ2U8dHlwZW5hbWUgUHJpdmF0ZU5hbWVTZXQ6Oml0ZXJh
dG9yPiBQcml2YXRlTmFtZUl0ZXJhdG9yUmFuZ2U7CisgICAgdHlwZWRlZiBXVEY6Okl0ZXJhdG9y
UmFuZ2U8dHlwZW5hbWUgVmFyaWFibGVFbnZpcm9ubWVudDo6UHJpdmF0ZU5hbWVzOjppdGVyYXRv
cj4gUHJpdmF0ZU5hbWVJdGVyYXRvclJhbmdlOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2Vs
bFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQpAQCAtNjA1LDE0ICs2MDUsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
bWFrZUl0ZXJhdG9yUmFuZ2UobV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYmVnaW4oKSwgbV9y
YXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZW5kKCkpOwogICAgIH0KIAotICAgIHZvaWQgYWRkUHJp
dmF0ZU5hbWUoVW5pcXVlZFN0cmluZ0ltcGwqIGtleSkKKyAgICB2b2lkIGFkZFByaXZhdGVOYW1l
KGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGtleSwgUHJpdmF0ZU5hbWVFbnRyeSB2
YWx1ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChrZXkgJiYgIWtleS0+aXNTeW1ib2woKSk7CiAg
ICAgICAgIGlmICghbV9yYXJlRGF0YSkKICAgICAgICAgICAgIG1fcmFyZURhdGEgPSBXVEY6Om1h
a2VVbmlxdWU8U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKIAotICAgICAgICBBU1NFUlQoIW1fcmFy
ZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmNvbnRhaW5zKGtleSkpOwotICAgICAgICBtX3JhcmVEYXRh
LT5tX3ByaXZhdGVOYW1lcy5hZGQoa2V5KTsKKyAgICAgICAgQVNTRVJUKG1fcmFyZURhdGEtPm1f
cHJpdmF0ZU5hbWVzLmZpbmQoa2V5KSA9PSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5lbmQo
KSk7CisgICAgICAgIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChrZXksIHZhbHVlKTsK
ICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbnRyeT4KQEAgLTc0NCw3ICs3NDQsNyBA
QCBwdWJsaWM6CiAgICAgICAgIE9mZnNldFRvVmFyaWFibGVNYXAgbV9vZmZzZXRUb1ZhcmlhYmxl
TWFwOwogICAgICAgICBVbmlxdWVUeXBlU2V0TWFwIG1fdW5pcXVlVHlwZVNldE1hcDsKICAgICAg
ICAgV3JpdGVCYXJyaWVyPENvZGVCbG9jaz4gbV9jb2RlQmxvY2s7Ci0gICAgICAgIFByaXZhdGVO
YW1lU2V0IG1fcHJpdmF0ZU5hbWVzOworICAgICAgICBWYXJpYWJsZUVudmlyb25tZW50OjpQcml2
YXRlTmFtZXMgbV9wcml2YXRlTmFtZXM7CiAgICAgfTsKIAogcHJpdmF0ZToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393477</attachid>
            <date>2020-03-13 06:09:32 -0700</date>
            <delta_ts>2020-09-07 12:11:33 -0700</delta_ts>
            <desc>WIP - Patch</desc>
            <filename>private_methods.diff</filename>
            <type>text/plain</type>
            <size>119455</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
ZjRkN2I4MTE5ZjAuLjFlNGIxYTU3MDY3IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZwor
KysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE5LTA2LTI3ICBDYWlv
IExpbWEgIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KKworICAgICAgICBbRVNOZXh0XSBJbXBsZW1l
bnQgcHJpdmF0ZSBtZXRob2RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTQ0MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHN0cmVzcy9wcml2YXRlLWJyYW5kLWluc3RhbGxlZC1hZnRlci1zdXBlci1j
YWxsLWZyb20tZXZhbC5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAoQSk6
CisgICAgICAgIChDLnByb3RvdHlwZS5tZXRob2QpOgorICAgICAgICAoQyk6CisgICAgICAgIChD
LnByb3RvdHlwZS5iYXNlQWNjZXNzKToKKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2Qt
YnJhbmQtY2hlY2suanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKEMucHJv
dG90eXBlLm0pOgorICAgICAgICAoQy5wcm90b3R5cGUubWV0aG9kKToKKyAgICAgICAgKEMpOgor
ICAgICAgICAodHJ5LkMucHJvdG90eXBlLm0pOgorICAgICAgICAodHJ5LkMpOgorICAgICAgICAo
Y2F0Y2gpOgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZC1jb21wYXJpc29uLmpzOiBB
ZGRlZC4KKyAgICAgICAgKGxldC5hc3NlcnQuc2FtZVZhbHVlKToKKyAgICAgICAgKGxldC5hc3Nl
cnQudGhyb3dzKToKKyAgICAgICAgKEMucHJvdG90eXBlLm0pOgorICAgICAgICAoQy5wcm90b3R5
cGUuZ2V0UHJpdmF0ZU1ldGhvZCk6CisgICAgICAgIChDKToKKyAgICAgICAgKiBzdHJlc3MvcHJp
dmF0ZS1tZXRob2QtZXh0ZW5kcy1icmFuZC1jaGVjay5qczogQWRkZWQuCisgICAgICAgIChhc3Nl
cnQpOgorICAgICAgICAoQmFzZS5wcm90b3R5cGUubUJhc2UpOgorICAgICAgICAoQmFzZS5wcm90
b3R5cGUubWV0aG9kQmFzZSk6CisgICAgICAgIChCYXNlKToKKyAgICAgICAgKEMucHJvdG90eXBl
Lm0pOgorICAgICAgICAoQy5wcm90b3R5cGUubWV0aG9kKToKKyAgICAgICAgKEMpOgorICAgICAg
ICAoY2F0Y2gpOgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZC1nZXQtYW5kLWNhbGwu
anM6IEFkZGVkLgorICAgICAgICAobGV0LmFzc2VydC5zYW1lVmFsdWUpOgorICAgICAgICAobGV0
LmFzc2VydC50aHJvd3MpOgorICAgICAgICAoQy5wcm90b3R5cGUubSk6CisgICAgICAgIChDLnBy
b3RvdHlwZS5nZXRQcml2YXRlTWV0aG9kKToKKyAgICAgICAgKEMpOgorICAgICAgICAqIHN0cmVz
cy9wcml2YXRlLW1ldGhvZC1uZXN0ZWQtY2xhc3MuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0
KToKKyAgICAgICAgKEMpOgorICAgICAgICAocHJvdG90eXBlLm1CYXNlKToKKyAgICAgICAgKGNh
dGNoKToKKyAgICAgICAgKHByb3RvdHlwZS5tZXRob2QpOgorICAgICAgICAoQy5wcm90b3R5cGUu
bSk6CisgICAgICAgIChwcm90b3R5cGUubSk6CisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0
aG9kcy1vbi1wcm94eS5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAoYXNz
ZXJ0QXJyYXlDb250ZW50KToKKyAgICAgICAgKHByb3RvdHlwZS5tKToKKyAgICAgICAgKHByb3Rv
dHlwZS5tZXRob2QpOgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW5hbWVzLWF2YWlsYWJsZS1v
bi1kaXJlY3QtZXZhbC5qczogQWRkZWQuCisgICAgICAgIChsZXQuYXNzZXJ0LnNhbWVWYWx1ZSk6
CisgICAgICAgIChDLnByb3RvdHlwZS5tKToKKyAgICAgICAgKEMucHJvdG90eXBlLmNhbGxNZXRo
b2RGcm9tRXZhbCk6CisgICAgICAgIChDKToKKyAgICAgICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1s
OgorCiAyMDIwLTAzLTEyICBDYWl0bGluIFBvdHRlciAgPGNhaXRwQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0pTQ10gQWRkIHN1cHBvcnQgZm9yIHByaXZhdGUgY2xhc3MgZmllbGRzCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLWJyYW5kLWluc3RhbGxlZC1hZnRlci1zdXBlci1j
YWxsLWZyb20tYXJyb3ctZnVuY3Rpb24uanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLWJyYW5k
LWluc3RhbGxlZC1hZnRlci1zdXBlci1jYWxsLWZyb20tYXJyb3ctZnVuY3Rpb24uanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjg0Nzc0YWZjZjBhCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1icmFuZC1pbnN0YWxsZWQtYWZ0ZXItc3Vw
ZXItY2FsbC1mcm9tLWFycm93LWZ1bmN0aW9uLmpzCkBAIC0wLDAgKzEsMjcgQEAKKy8vQCByZXF1
aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFz
c2VydChhLCBlKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigi
RXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7Cit9CisKK2NsYXNzIEEge30KKwor
Y2xhc3MgQyBleHRlbmRzIEEgeworICAgICNtZXRob2QoKSB7CisgICAgICAgIHJldHVybiAiYmFz
ZSI7CisgICAgfQorCisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIGxldCBpbml0ID0gKCkg
PT4gc3VwZXIoKTsKKyAgICAgICAgaW5pdCgpOworICAgIH0KKworICAgIGJhc2VBY2Nlc3MoKSB7
CisgICAgICAgIHJldHVybiB0aGlzLiNtZXRob2QoKTsKKyAgICB9Cit9CisKK2xldCBjID0gbmV3
IEMoKTsKK2Fzc2VydChjLmJhc2VBY2Nlc3MoKSwgImJhc2UiKTsKKwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvcHJpdmF0ZS1icmFuZC1pbnN0YWxsZWQtYWZ0ZXItc3VwZXItY2FsbC1mcm9t
LWV2YWwuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLWJyYW5kLWluc3RhbGxlZC1hZnRlci1z
dXBlci1jYWxsLWZyb20tZXZhbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMC4uOTlkMDRjYzlhZTIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2
YXRlLWJyYW5kLWluc3RhbGxlZC1hZnRlci1zdXBlci1jYWxsLWZyb20tZXZhbC5qcwpAQCAtMCww
ICsxLDI2IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRy
dWUiKQorCitmdW5jdGlvbiBhc3NlcnQoYSwgZSkgeworICAgIGlmIChhICE9PSBlKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOwor
fQorCitjbGFzcyBBIHt9CisKK2NsYXNzIEMgZXh0ZW5kcyBBIHsKKyAgICAjbWV0aG9kKCkgewor
ICAgICAgICByZXR1cm4gImJhc2UiOworICAgIH0KKworICAgIGNvbnN0cnVjdG9yKCkgeworICAg
ICAgICBldmFsKCJzdXBlcigpIik7CisgICAgfQorCisgICAgYmFzZUFjY2VzcygpIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuI21ldGhvZCgpOworICAgIH0KK30KKworbGV0IGMgPSBuZXcgQygpOwor
YXNzZXJ0KGMuYmFzZUFjY2VzcygpLCAiYmFzZSIpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9wcml2YXRlLW1ldGhvZC1icmFuZC1jaGVjay5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZh
dGUtbWV0aG9kLWJyYW5kLWNoZWNrLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwLi42OTFlNzNiY2RhYwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3By
aXZhdGUtbWV0aG9kLWJyYW5kLWNoZWNrLmpzCkBAIC0wLDAgKzEsMzMgQEAKKy8vQCByZXF1aXJl
T3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2Vy
dChhLCBlKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhw
ZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7Cit9CisKK2NsYXNzIEMgeworICAgICNt
KCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZjsKKyAgICB9CisKKyAgICBtZXRob2QoKSB7Cisg
ICAgICAgIHJldHVybiB0aGlzLiNtKCk7CisgICAgfQorCisgICAgI2YgPSA0OworfQorCitsZXQg
YyA9IG5ldyBDKCk7Cithc3NlcnQoYy5tZXRob2QoKSwgNCk7CisKK3RyeSB7CisgICAgY2xhc3Mg
QyB7CisgICAgICAgICNtKCkgeyByZXR1cm4gMzsgfQorICAgIH0KKworICAgIGxldCBvID0gbmV3
IEMoKTsKKyAgICBjLm1ldGhvZC5jYWxsKG8pOworfSBjYXRjaCAoZSkgeworICAgIGFzc2VydChl
IGluc3RhbmNlb2YgVHlwZUVycm9yLCB0cnVlKTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvcHJpdmF0ZS1tZXRob2QtY29tcGFyaXNvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZh
dGUtbWV0aG9kLWNvbXBhcmlzb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAuLjhjMTc1YjFlZWVmCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJp
dmF0ZS1tZXRob2QtY29tcGFyaXNvbi5qcwpAQCAtMCwwICsxLDMxIEBACisvL0AgcmVxdWlyZU9w
dGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0gewor
ICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7CisgICAgICAgIGlmIChsaHMgIT09
IHJocykKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBsaHMgKyAi
IGJ1ZyBnb3Q6ICIgKyByaHMpOworICAgIH0sCisKKyAgICB0aHJvd3M6IGZ1bmN0aW9uIChleHBl
Y3RlZEVycm9yLCBvcCkgeworICAgICAgICB0cnkgeworICAgICAgICAgIG9wKCk7CisgICAgICAg
IH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVkRXJy
b3IpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6
ICIgKyBleHBlY3RlZEVycm9yICsgIiBidXQgdGhyZXc6ICIgKyBlKTsKKyAgICAgICAgfQorICAg
IH0KK307CisKK2NsYXNzIEMgeworICAgICNtKCkgeyByZXR1cm4gJ3Rlc3QyNjInOyB9CisKKyAg
ICBnZXRQcml2YXRlTWV0aG9kKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jbTsKKyAgICB9Cit9
CisKK2xldCBjMSA9IG5ldyBDKCk7CitsZXQgYzIgPSBuZXcgQygpOworCithc3NlcnQuc2FtZVZh
bHVlKGMxLmdldFByaXZhdGVNZXRob2QoKSwgYzIuZ2V0UHJpdmF0ZU1ldGhvZCgpKTsKKwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtZXh0ZW5kcy1icmFuZC1jaGVj
ay5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWV4dGVuZHMtYnJhbmQtY2hlY2su
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjYwMjM3NDhiMGIyCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtZXh0ZW5kcy1i
cmFuZC1jaGVjay5qcwpAQCAtMCwwICsxLDQxIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNl
UHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitmdW5jdGlvbiBhc3NlcnQoYSwgZSkgeworICAg
IGlmIChhICE9PSBlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSAr
ICIgYnV0IGdvdDogIiArIGEpOworfQorCitjbGFzcyBCYXNlIHsKKyAgICAjbUJhc2UoKSB7Cisg
ICAgICAgIHJldHVybiA0OworICAgIH0KKworICAgIG1ldGhvZEJhc2UoKSB7CisgICAgICAgIHJl
dHVybiB0aGlzLiNtQmFzZSgpOworICAgIH0KK30KKworY2xhc3MgQyBleHRlbmRzIEJhc2Ugewor
ICAgICNtKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZjsKKyAgICB9CisKKyAgICBtZXRob2Qo
KSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtKCk7CisgICAgfQorCisgICAgI2YgPSAxNTsKK30K
KworbGV0IGMgPSBuZXcgQygpOworYXNzZXJ0KGMubWV0aG9kKCksIDE1KTsKK2Fzc2VydChjLm1l
dGhvZEJhc2UoKSwgNCk7CisKK2xldCBiYXNlID0gbmV3IEJhc2UgKCk7Cithc3NlcnQoYmFzZS5t
ZXRob2RCYXNlKCksIDQpOwordHJ5IHsKKyAgICBjLm1ldGhvZC5jYWxsKGJhc2UpOworfSBjYXRj
aCAoZSkgeworICAgIGFzc2VydChlIGluc3RhbmNlb2YgVHlwZUVycm9yLCB0cnVlKTsKK30KKwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtZ2V0LWFuZC1jYWxsLmpz
IGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtZ2V0LWFuZC1jYWxsLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yMjQ2ZTljMmI4NQotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWdldC1hbmQtY2FsbC5qcwpAQCAt
MCwwICsxLDMzIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRz
PXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGxocywg
cmhzKSB7CisgICAgICAgIGlmIChsaHMgIT09IHJocykKKyAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcigiRXhwZWN0ZWQ6ICIgKyBsaHMgKyAiIGJ1ZyBnb3Q6ICIgKyByaHMpOworICAgIH0sCisK
KyAgICB0aHJvd3M6IGZ1bmN0aW9uIChleHBlY3RlZEVycm9yLCBvcCkgeworICAgICAgICB0cnkg
eworICAgICAgICAgIG9wKCk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYg
KCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVkRXJyb3IpKQorICAgICAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleHBlY3RlZEVycm9yICsgIiBidXQgdGhy
ZXc6ICIgKyBlKTsKKyAgICAgICAgfQorICAgIH0KK307CisKK2NsYXNzIEMgeworICAgICNtKCkg
eyByZXR1cm4gdGhpcy5fdjsgfQorCisgICAgZ2V0UHJpdmF0ZU1ldGhvZCgpIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuI207CisgICAgfQorfQorCitsZXQgYyA9IG5ldyBDKCk7CisKK2xldCBvMSA9
IHtfdjogJ3Rlc3QyNjInfTsKK2xldCBvMiA9IHtfdjogJ2Zvbyd9OyAKK2Fzc2VydC5zYW1lVmFs
dWUoYy5nZXRQcml2YXRlTWV0aG9kKCkuY2FsbChvMSksICd0ZXN0MjYyJyk7Cithc3NlcnQuc2Ft
ZVZhbHVlKGMuZ2V0UHJpdmF0ZU1ldGhvZCgpLmNhbGwobzIpLCAnZm9vJyk7CisKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLW5lc3RlZC1jbGFzcy5qcyBiL0pTVGVz
dHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLW5lc3RlZC1jbGFzcy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYWE0ZTU3MjQ0OWQKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1uZXN0ZWQtY2xhc3MuanMKQEAgLTAsMCArMSw2
OCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikK
KworZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKK30KKwor
KCgpID0+IHsKKyAgICBjbGFzcyBCYXNlIHsKKyAgICAgICAgQyA9IGNsYXNzIHsKKyAgICAgICAg
ICAgIG1ldGhvZCgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4jbUJhc2UoKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgICNtQmFzZSgpIHsKKyAgICAgICAgICAg
IHJldHVybiA0OworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGJhc2UgPSBuZXcgQmFzZSgp
OworICAgIGxldCBjID0gbmV3IGJhc2UuQygpOworICAgIGFzc2VydChjLm1ldGhvZC5jYWxsKGJh
c2UpLCA0KTsKKworICAgIHRyeSB7CisgICAgICAgIGMubWV0aG9kKCk7CisgICAgfSBjYXRjaCAo
ZSkgeworICAgICAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIFR5cGVFcnJvciwgdHJ1ZSk7CisgICAg
fQorfSkoKTsKKworLy8gVGVzdCBzaGFkb3cgbWV0aG9kcworCisoKCkgPT4geworICAgIGNsYXNz
IEJhc2UgeworICAgICAgICBtZXRob2QoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy4jbSgp
OworICAgICAgICB9CisKKyAgICAgICAgQyA9IGNsYXNzIHsKKyAgICAgICAgICAgIG1ldGhvZChv
KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG8uI20oKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgI20oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZm9vOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBmb28gPSA0OworICAgICAgICB9OworCisgICAgICAgICNt
KCkgeworICAgICAgICAgICAgcmV0dXJuICJmb28iOworICAgICAgICB9CisgICAgfQorCisgICAg
bGV0IGJhc2UgPSBuZXcgQmFzZSgpOworICAgIGxldCBjID0gbmV3IGJhc2UuQygpOworICAgIGFz
c2VydChjLm1ldGhvZChjKSwgNCk7CisgICAgYXNzZXJ0KGJhc2UubWV0aG9kKCksICJmb28iKTsK
KworICAgIHRyeSB7CisgICAgICAgIGMubWV0aG9kKGJhc2UpOworICAgIH0gY2F0Y2ggKGUpIHsK
KyAgICAgICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBUeXBlRXJyb3IsIHRydWUpOworICAgIH0KK30p
KCk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1vbi1wcm94
eS5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1vbi1wcm94eS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzBiODAwODk5YWMKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZHMtb24tcHJveHkuanMKQEAgLTAs
MCArMSw0MiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10
cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGEsIGUsIG0pIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKG0pOworfQorCitmdW5jdGlvbiBhc3NlcnRBcnJheUNvbnRl
bnQoYSwgZSkgeworICAgIGFzc2VydChhLmxlbmd0aCwgZS5sZW5ndGgsICJTaXplIG9mIGFycmF5
cyBkb2Vzbid0IG1hdGNoIik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsr
KQorICAgICAgICBhc3NlcnQoYVtpXSwgZVtpXSwgImFbIiArIGkgKyAiXSA9ICIgKyBhW2ldICsg
IiBidXQgZVsiICsgaSArICJdID0gIiArIGVbaV0pOworfQorCitsZXQgYXJyID0gW107CisKK2Ns
YXNzIFByb3h5QmFzZSB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIHJldHVybiBuZXcg
UHJveHkodGhpcywgeworICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAob2JqLCBwcm9wKSB7Cisg
ICAgICAgICAgICAgICAgYXJyLnB1c2gocHJvcCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG9i
altwcm9wXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorfQorCitjbGFzcyBU
ZXN0IGV4dGVuZHMgUHJveHlCYXNlIHsKKyAgICAjbSgpIHsKKyAgICAgICAgcmV0dXJuIDM7Cisg
ICAgfQorCisgICAgbWV0aG9kKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jbSgpOworICAgIH0K
K30KKworbGV0IHQgPSBuZXcgVGVzdCgpOworbGV0IHIgPSB0Lm1ldGhvZCgpOworYXNzZXJ0KHIs
IDMsICJFeHBlY3RlZDogMyBidXQgZ290OiAiICsgcik7CisKK2Fzc2VydEFycmF5Q29udGVudChh
cnIsIFsnbWV0aG9kJ10pOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5h
bWVzLWF2YWlsYWJsZS1vbi1kaXJlY3QtZXZhbC5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUt
bmFtZXMtYXZhaWxhYmxlLW9uLWRpcmVjdC1ldmFsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwLi4yNTFkNDBkNjNkNwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWRpcmVjdC1ldmFsLmpzCkBAIC0wLDAg
KzEsMjMgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1
ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAobGhzLCByaHMp
IHsKKyAgICAgICAgaWYgKGxocyAhPT0gcmhzKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJFeHBlY3RlZDogIiArIHJocyArICIgYnVnIGdvdDogIiArIGxocyk7CisgICAgfQorfTsKKwor
KGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgI20oKSB7IHJldHVybiAndGVz
dCc7IH0KKworICAgICAgICBjYWxsTWV0aG9kRnJvbUV2YWwoKSB7CisgICAgICAgICAgICBsZXQg
c2VsZiA9IHRoaXM7CisgICAgICAgICAgICByZXR1cm4gZXZhbCgnc2VsZi4jbSgpJyk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1
ZShjLmNhbGxNZXRob2RGcm9tRXZhbCgpLCAndGVzdCcpOworfSkoKTsKKwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1s
CmluZGV4IDk0ZmYxYzEyZTY4Li41NmUwYmVlMWM4NyAxMDA2NDQKLS0tIGEvSlNUZXN0cy90ZXN0
MjYyL2NvbmZpZy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbApAQCAtNSw2
ICs1LDcgQEAgZmxhZ3M6CiAgIFdlYWtSZWY6IHVzZVdlYWtSZWZzCiAgIGNsYXNzLWZpZWxkcy1w
dWJsaWM6IHVzZVB1YmxpY0NsYXNzRmllbGRzCiAgIGNsYXNzLWZpZWxkcy1wcml2YXRlOiB1c2VQ
cml2YXRlQ2xhc3NGaWVsZHMKKyAgY2xhc3MtbWV0aG9kcy1wcml2YXRlOiB1c2VQcml2YXRlQ2xh
c3NGaWVsZHMKIHNraXA6CiAgIGZlYXR1cmVzOgogICAgIC0gU2hhcmVkQXJyYXlCdWZmZXIKQEAg
LTEyLDcgKzEzLDYgQEAgc2tpcDoKICAgICAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzQ5MzEKICAgICAtIHJlZ2V4cC1sb29rYmVoaW5kCiAKLSAgICAtIGNsYXNz
LW1ldGhvZHMtcHJpdmF0ZQogICAgIC0gY2xhc3Mtc3RhdGljLWZpZWxkcy1wdWJsaWMKICAgICAt
IGNsYXNzLXN0YXRpYy1maWVsZHMtcHJpdmF0ZQogICAgIC0gY2xhc3Mtc3RhdGljLW1ldGhvZHMt
cHJpdmF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggOTg1NWMyNjAxMTEuLmE4ZTU2Yzhh
ZDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyODMgQEAKKzIwMTktMDYt
MjcgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgorCisgICAgICAgIFtFU05leHRd
IEltcGxlbWVudCBwcml2YXRlIG1ldGhvZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5NDQzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYWRkaW5nIHN1cHBvcnQgdG8gcHJpdmF0
ZSBtZXRob2RzIGZvbGxvd2luZyB0aGUKKyAgICAgICAgc3BlY2lmaWNhdGlvbiBvbiBodHRwczov
L3RjMzkuZXMvcHJvcG9zYWwtcHJpdmF0ZS1tZXRob2RzLy4KKyAgICAgICAgVGhpcyBpcyBpbnRy
b2R1Y2luZyBhIG5ldyB3YXkgdG8gZGVjbGFyZSBwcml2YXRlIG1ldGhvZHMgb24KKyAgICAgICAg
Y2xhc3Mgc3ludGF4LiBQcml2YXRlIG1ldGhvZHMgYXJlIG9ubHkgYWNjZXNzaWJsZSB3aXRoaW4K
KyAgICAgICAgY2xhc3NlcyB0aGV5IHdlcmUgZGVjbGFyZWQsIGFuZCBvbmx5IGNhbiBiZSBjYWxs
ZWQgZnJvbQorICAgICAgICBvYmplY3RzIHRoYXQgYXJlIGluc3RhbmNlIG9mIHRoZXNlIGNsYXNz
ZXMuCisgICAgICAgIFRvIGd1YXJhbnRlZSBzdWNoIHJ1bGVzLCB0aGUgcHJvcG9zYWwgcHJlc2Vu
dHMgdGhlIGNvbmNlcHQgb2YKKyAgICAgICAgQnJhbmQgQ2hlY2suIER1cmluZyBjbGFzcyBldmFs
dWF0aW9uLCBpZiBhIHByaXZhdGUgbWV0aG9kIGlzIHByZXNlbnQsCisgICAgICAgIGEgYGJyYW5k
YCBpcyBpbnN0YWxsZWQgaW4gdGhpcyBjbGFzcy4gRXZlcnkgaW5zdGFuY2Ugb2Ygc3VjaCBjbGFz
cworICAgICAgICB0aGVuIGdldHMgdGhpcyBicmFuZCBpbnN0YWxsZWQgZHVyaW5nIGBbW0NvbnN0
cnVjdF1dYCBvcGVyYXRpb24uIEl0CisgICAgICAgIG1lYW5zIHRoYXQgYW4gb2JqZWN0IGNhbiBo
YXZlIG11bHRpcGxlIGJyYW5kcyAoZS5nIHdoZW4gdGhlcmUgaXMgYWxzbworICAgICAgICBwcml2
YXRlIG1ldGhvZHMgZGVjbGFyZWQgb24gc3VwZXIgY2xhc3MpLiBCZWZvcmUgYWNjZXNzaW5nIGEg
cHJpdmF0ZQorICAgICAgICBtZXRob2QsIHRoZXJlIGlzIGEgY2hlY2sgdG8gdmFsaWRhdGUgaWYg
dGhlIHRhcmdldCBvZiB0aGUgY2FsbCBoYXMgdGhlCisgICAgICAgIGJyYW5kIG9mIGNhbGxlZSBt
ZXRob2QuCisgICAgICAgIFRoZSBicmFuZCBjaGVjayBtZWNoYW5pc20gaXMgaW1wbGVtZW50ZWQg
dXNpbmcgYSBgQHByaXZhdGVCcmFuZGAKKyAgICAgICAgc3RvcmVkIG9uIGNsYXNzIHNjb3BlLiBI
ZXJlIGlzIGEgcmVwcmVzZW50YXRpb24gb2YgaG93IHRoaXMgbWVjaGFuaXNtCisgICAgICAgIHdv
cmtzOgorCisgICAgICAgIGBgYAorICAgICAgICBjbGFzcyBDIHsKKyAgICAgICAgICAgICNtKCkg
eyByZXR1cm4gMzsgfQorICAgICAgICAgICAgbWV0aG9kKCkgeyByZXR1cm4gdGhpcy4jbSgpOyB9
CisgICAgICAgIH0KKworICAgICAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgICAgIGNvbnNvbGUu
bG9nKGMubWV0aG9kKCkpOyAvLyBwcmludHMgMworICAgICAgICBgYGAKKworICAgICAgICBHZW5l
cmF0ZWQgYnl0ZWNvZGUgZm9yIHRoZSBmb2xsb3dpbmcgcmVwcmVzZW50YXRpb246CisgICAgICAg
IGBgYAorICAgICAgICB7IC8vIGNsYXNzIGxleGljYWwgc2NvcGUKKyAgICAgICAgICAgIGNvbnN0
IEBwcml2YXRlQnJhbmQwID0gQGNyZWF0ZVByaXZhdGVTeW1ib2woKTsKKyAgICAgICAgICAgIGNv
bnN0ICNtID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gMzsgfQorICAgICAgICAgICAgQy5wcm90b3R5
cGUubWV0aG9kID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgQGdldERpcmVjdEJ5VmFs
KHRoaXMsIEBwcml2YXRlQnJhbmQwKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gI20uY2FsbCh0
aGlzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEMgPSBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgICAgICBAcHV0RGlyZWN0QnlWYWwodGhpcywgQHByaXZhdGVCcmFuZDAsIEBwcml2YXRl
QnJhbmQwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGxldCBjID0gbmV3
IEMoKTsKKyAgICAgICAgY29uc29sZS5sb2coYy5tZXRob2QoKSk7IC8vIHByaW50cyAzCisgICAg
ICAgIGBgYAorCisgICAgICAgIFRoZSBicmFuZCBjaGVjayBpcyBwZXJmb3JtZWQgYnkgYGdldF9i
eV92YWxfZGlyZWN0YCwgd2hlcmUgd2UgcmUtdXNlCisgICAgICAgIHRoZSBtZWNoYW5pc20gaW50
cm9kdWNlZCBieSBwcml2YXRlIGNsYXNzIGZpZWxkcy4gV2UgY2FuIHNlZSB0aGUKKyAgICAgICAg
cHJpdmF0ZSBicmFuZCBhcyBhIHNwZWNpYWwgcHJpdmF0ZSBmaWVsZCBpbnN0YWxsZWQgZHVyaW5n
CisgICAgICAgIGBbW0NvbnN0cnVjdF1dYCBvcGVyYXRpb24uIFNpbmNlIHRoZSBwcml2YXRlIGJy
YW5kIGlzIGEgcHJpdmF0ZSBmaWVsZCwKKyAgICAgICAgd2UgdGhyb3cgYFR5cGVFcnJvcmAgd2hl
biB0aGUgbG9va3VwIGZhaWwuCisKKyAgICAgICAgVG8gcHJvcGVybHkgc3RvcmUgdGhlIHByaXZh
dGUgYnJhbmQgb2YgYSBjbGFzcyBvbiBhbGwgT2JqZWN0cywKKyAgICAgICAgaW5jbHVkaW5nIFBy
b3hpZXMsIHdlIHVzZSAiQHB1dERpcmVjdEJ5VmFsIi4gVGhpcyBpbnRydWN0aW9uIHB1dHMKKyAg
ICAgICAgdmFsdWUgb24gT2JqZWN0J3MgcHJvcGVydGllcyB3aXRob3V0IGV4ZWN1dGluZyBbW1B1
dF1dIHNlbWFudGljcy4KKyAgICAgICAgV2l0aCB0aGlzIGRlc2lnbiwgd2UgYXZvaWQgYWxsb2Nh
dGluZyBhIGZpZWxkIGZvciBldmVyeSBpbnN0YW5jZQorICAgICAgICBvZiBhIGNsYXNzLCBzaW5j
ZSBwcml2YXRlIG1ldGhvZHMgYXJlIHN0b3JlZCBvbiBjbGFzcworICAgICAgICBsZXhpY2FsIHNj
b3BlLiBFdmVyeSBvYmplY3Qgd2lsbCBoYXZlIHRvIGFsbG9jYXRlIGl0cyBwcml2YXRlCisgICAg
ICAgIGJyYW5kIGxpc3QuIFRoaXMgZGVzaWduIGluc2VydHMgbm8gb3ZlcmhlYWQgb24gb2JqZWN0
cyBhbmQgY2xhc3NlcworICAgICAgICB3aXRob3V0IHByaXZhdGUgbWV0aG9kcy9hY2Nlc3Nvci4K
KworICAgICAgICBSZXNvbHZpbmcgY29ycmVjdCBicmFuZCBjaGVjazoKKworICAgICAgICBJbiB0
aGUgY2FzZSBvZiBzaGFkb3dpbmcgb3IgbmVzdGVkIHNjb3BlLCB3ZSBuZWVkIHRvIGVtaXQgYnJh
bmQKKyAgICAgICAgY2hlY2tzIHRvIHRoZSByaWdodCBwcml2YXRlIGJyYW5kLiBTZWUgY29kZSBi
ZWxvdzoKKworICAgICAgICBgYGAKKyAgICAgICAgY2xhc3MgQyB7CisgICAgICAgICAgICAjbSgp
IHsgcmV0dXJuIDM7IH0KKyAgICAgICAgICAgIG1ldGhvZCgpIHsgcmV0dXJuIHRoaXMuI20oKTt9
CisKKyAgICAgICAgICAgIEEgPSBjbGFzcyB7CisgICAgICAgICAgICAgICAgI20yKCkgeyByZXR1
cm4gMzsgfQorICAgICAgICAgICAgICAgIGZvbyhvKSB7IHJldHVybiB0aGlzLiNtKCk7IH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBgYGAKKworICAgICAgICBUaGUgY2FsbCBv
ZiAiI20iIGluIGBmb29gIHJlZmVycyB0byAiQzo6I20iLiBJbiBzdWNoIGNhc2UsIHdlIG5lZWQg
dG8KKyAgICAgICAgY2hlY2sgQydzIHByaXZhdGUgYnJhbmQsIGluc3RlYWQgb2YgQSdzIHByaXZh
dGUgYnJhbmQuCisgICAgICAgIFRvIHBlcmZvcm0gdGhlIHByb3BlciBjaGVjaywgd2UgZmlyc3Qg
cmVzb2x2ZSBzY29wZSBvZiAiI20iIGFuZCB0aGVuCisgICAgICAgIGNoZWNrIHRoZSBwcml2YXRl
IGJyYW5kIG9mIHRoaXMgc2NvcGUgKHRoZSBzY29wZSB3aGVyZSB0aGUgcHJpdmF0ZQorICAgICAg
ICBtZXRob2QgYW5kIGJyYW5kIGFyZSBzdG9yZWQgaXMgdGhlIHNhbWUpLgorICAgICAgICBTbyB0
aGUgYnl0ZWNvZGUgdG8gbG9va3VwIHRoZSByaWdodCBicmFuZCBpczoKKworICAgICAgICBgYGAK
KyAgICAgICAgcmVzb2x2ZV9zY29wZSBsb2MxMCwgIiNtIgorICAgICAgICBnZXRfZnJvbV9zY29w
ZSBsb2MxMSwgbG9jMTAsICJAcHJpdmF0ZUJyYW5kIgorICAgICAgICBnZXRfYnlfdmFsX2RpcmVj
dCBsb2MxMiwgdGhpcywgbG9jMTEKKyAgICAgICAgZ2V0X2Zyb21fc2NvcGUgbG9jMTEsIGxvYzEw
LCAiI20iCisgICAgICAgIC8vIHNldHVwIGNhbGwgZnJhbWUKKyAgICAgICAgY2FsbCBsb2MxMSwg
Li4uCisgICAgICAgIC8vIC4uLgorICAgICAgICBgYGAKKworICAgICAgICAqIGJ1aWx0aW5zL0J1
aWx0aW5FeGVjdXRhYmxlcy5jcHA6CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVjdXRhYmxlczo6
Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFi
bGVzOjpjcmVhdGVFeGVjdXRhYmxlKToKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluRXhlY3V0
YWJsZXMuaDoKKworICAgICAgICBXZSBhcmUgYWRkaW5nIGEgbmV3IHBhcmFtZXRlciBgUHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnRgIHRvIHByb3BhZ2F0ZQorICAgICAgICB3aGVuIGEgZGVmYXVsdCBj
b25zdHJ1Y3RvciBuZWVkcyB0byBlbWl0IGNvZGUgdG8gc2V0dXAgcHJpdmF0ZSBicmFuZAorICAg
ICAgICBvbiBpbnN0YW5jZXMuCisKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluTmFtZXMuaDoK
KworICAgICAgICBBZGRpbmcgYEBjcmVhdGVQcml2YXRlU3ltYm9sYCBhbmQgYEBwcml2YXRlQnJh
bmRgLgorICAgICAgICBgQGNyZWF0ZVByaXZhdGVTeW1ib2xgIGlzIHVzZWQgYXMgYSBmdW5jdGlv
biB0byBlbmFibGUgdXMgYWxsb2NhdGUKKyAgICAgICAgUHJpdmF0ZVN5bWJvbHMgYXQgZXhlY3V0
aW9uIHRpbWUuIGBAcHJpdmF0ZUJyYW5kYCBpcyB0aGUgbmFtZSB3ZSB1c2UKKyAgICAgICAgdG8g
c3RvcmUgcHJpdmF0ZSBicmFuZCBvbiBjbGFzcydzIHNjb3BlLgorCisgICAgICAgICogYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6
CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAo
SlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9F
eGVjdXRhYmxlSW5mby5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6RXhlY3V0YWJs
ZUluZm8pOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6cHJpdmF0ZUJyYW5kUmVxdWly
ZW1lbnQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAg
ICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxp
bmtlZENvZGVCbG9jazo6cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgY29uc3QpOgorICAgICAgICAq
IGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6
Z2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAg
ICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oOgorICAgICAgICAqIGJ5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisKKyAgICAgICAgV2UgY2hhbmdlZCBCeXRl
Y29kZUdlbmVyYXRvciBmb3IgRnVuY3Rpb25Ob2RlIGFuZCBFdmFsTm9kZSB0bworICAgICAgICBw
cm9wYWdhdGUgcGFyZW50U2NvcGUgVmFyaWFibGVFbnZpcm9ubWVudC4gVGhlc2UgZW52aXJvbm1l
bnRzIHN0b3JlcworICAgICAgICBwcml2YXRlIG5hbWUgZW50cmllcyB0aGF0IGFyZSB2aXNpYmxl
IGludG8gdGhlIHNjb3BlIG9mIHRoZQorICAgICAgICBmdW5jdGlvbi9ldmFsIGluIGFkZGl0aW9u
IHRvIFREWiB2YXJpYWJsZXMuCisgICAgICAgIFRoaXMgaXMgcmVxdWlyZWQgdG8gaWRlbnRpZnkg
dGhlIGtpbmQgb2YgYWNjZXNzIGEgcHJpdmF0ZSBuYW1lIGlzCisgICAgICAgIHJlZmVycmluZyB0
bywgc2luY2UgaXQgY2FuIGJlIGEgcHJpdmF0ZSBmaWVsZCBvciBhIHByaXZhdGUgbWV0aG9kLgor
ICAgICAgICBHaXZlbiB0aGlzIGNoYW5nZSwgd2UgY2hhbmdlZCB0aGUgbmFtZSBvZiBWYXJpYWJs
ZUVudmlyb25tZW50CisgICAgICAgIGZyb20gYHBhcmVudFNjb3BlVERaVmFyaWFibGVzYCB0byBg
cGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50YC4KKworICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6aW5zdGFudGlhdGVMZXhpY2FsVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDaGVja1ByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlUHJpdmF0ZUJyYW5kKToKKworICAgICAgICBU
aGUgcHJvY2VzcyB0byBjcmVhdGUgYSBwcml2YXRlIGJyYW5kIGlzIGFzIGZvbGxvd3M6CisgICAg
ICAgICAgICAxLiBDcmVhdGUgYSBQcml2YXRlU3ltYm9sIHVzaW5nIGBAY3JlYXRlUHJpdmF0ZVN5
bWJvbGAuCisgICAgICAgICAgICAyLiBTdG9yZSB0aGlzIHN5bWJvbCBpbnRvIGEgZ2l2ZW4gc2Nv
cGUgKGkuZSBjbGFzcyBsZXhpY2FsIHNjb3BlKQorICAgICAgICAgICAgICAgb24gYEBwcml2YXRl
QnJhbmRgIHZhcmlhYmxlLgorCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
SW5zdGFsbFByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0R2V0UHJpdmF0ZUJyYW5kKToKKworICAgICAgICBUaGlzIG9wZXJhdGlvbiBsb29rdXAgZm9y
IGBAcHJpdmF0ZUJyYW5kYCBmcm9tIGEgZ2l2ZW4gc2NvcGUuCisKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmlzUHJpdmF0ZU1ldGhvZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjpwdXNoUHJpdmF0ZUFjY2Vzc05hbWVzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OnBvcFByaXZhdGVBY2Nlc3NOYW1lcyk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjpnZXRBdmFpbGFibGVQcml2YXRlQWNjZXNzTmFtZXMpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2V0VmFyaWFibGVzVW5kZXJURFopOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3Rvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3SW5zdGFuY2VGaWVsZEluaXRpYWxp
emVyRnVuY3Rpb24pOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
OgorCisgICAgICAgIFdlIGFkZGVkIGBtX3ByaXZhdGVOYW1lc1N0YWNrYCB0byBCeXRlY29kZUdl
bmVyYXRvciB0byByZXByZXNlbnQgdGhlCisgICAgICAgIHNjb3BlIGNoYWluIG9mIGF2YWlsYWJs
ZSBwcml2YXRlIG5hbWVzIHdoaWxlIGdlbmVyYXRpbmcgYnl0ZWNvZGUuCisKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnByaXZhdGVCcmFuZFJlcXVpcmVtZW50IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Om1ha2VGdW5jdGlvbik6CisKKyAgICAgICAg
VGhpcyBjaGFuZ2UgaXMgcmVxdWlyZWQgdG8gcHJvcGVybHkgcHJvcGFnYXRlIFByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50CisgICAgICAgIHRvIGFycm93IGZ1bmN0aW9ucyB0aGF0IGNhbiBwb3RlbnRp
YWxseSBjYWxsIHN1cGVyKCkuCisKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJv
cGVydHkpOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6ZW1pdEdldFByb3BlcnR5VmFsdWUp
OgorCisgICAgICAgIEFkZGluZyBzdXBwb3J0IHRvIHByb3Blcmx5IGFjY2VzcyBwcml2YXRlIG1l
dGhvZC4gU2luY2Ugd2Ugc3RvcmUKKyAgICAgICAgcHJpdmF0ZSBtZXRob2RzIG9uIGNsYXNzIGxl
eGljYWwgc2NvcGUsIHdlIG5lZWQgYSBkaWZmZXJlbnQgc2V0IG9mCisgICAgICAgIGluc3RydWN0
aW9ucyB0byBhY2Nlc3MgYSBwcml2YXRlIG1ldGhvZC4KKworICAgICAgICAoSlNDOjpCYXNlRG90
Tm9kZTo6ZW1pdFB1dFByb3BlcnR5KToKKworICAgICAgICBJbiB0aGUgY2FzZSBvZiB3ZSB0cnlp
bmcgdG8gd3JpdGUgaW4gYSBwcml2YXRlIG1ldGhvZCwgd2UgbmVlZCB0bworICAgICAgICB0aHJv
dyBhIFR5cGVFcnJvciBhY2NvcmRpbmcgdG8gc3BlY2lmaWNhdGlvbgorICAgICAgICAoaHR0cHM6
Ly90YzM5LmVzL3Byb3Bvc2FsLXByaXZhdGUtbWV0aG9kcy8jc2VjLXByaXZhdGVmaWVsZHNldCku
CisKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsVmFsdWVOb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRl
YnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXJDYWxs
RnJhbWU6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKiBkZmcvREZHQ2Fw
YWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgorICAg
ICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6ZXZhbCk6
CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBp
bGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMp
OgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jaGVja19wcml2YXRlX2JyYW5kKToKKyAgICAgICAg
KiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNlci9MZXhl
ci5jcHA6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFyPjo6cGFyc2VJZGVudGlmaWVyKToKKyAg
ICAgICAgKiBwYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0
eU5vZGU6OlByb3BlcnR5Tm9kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25NZXRhZGF0YU5vZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKToKKyAg
ICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAg
ICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MpOgorICAgICAgICAqIHBh
cnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OmRlY2xhcmVQcml2YXRlTWV0aG9k
KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyTW9kZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvVmFy
aWFibGVFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6
Om1hcmtQcml2YXRlTmFtZUFzRGVjbGFyZWQpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmly
b25tZW50OjpkZWNsYXJlUHJpdmF0ZU1ldGhvZCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52
aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkNvbXBhY3RWYXJp
YWJsZUVudmlyb25tZW50OjpDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudCk6CisgICAgICAgIChK
U0M6OkNvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6Q29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQ6OnRvVmFyaWFibGVFbnZpcm9ubWVu
dCBjb25zdCk6CisKKyAgICAgICAgV2UgYWRkZWQgc3VwcG9ydCB0byBDb21wYWN0VmFyaWFibGVF
bnZpcm9ubWVudCBhbHNvIHN0b3JlIHByaXZhdGUKKyAgICAgICAgbmFtZXMuCisKKyAgICAgICAg
KiBwYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFt
ZUVudHJ5Ojppc01ldGhvZCBjb25zdCk6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6
OmlzUHJpdmF0ZUFjY2VzcyBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1l
bnQ6OmFkZFByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6
ZGVjbGFyZVByaXZhdGVNZXRob2QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50
OjpoYXNQcml2YXRlQWNjZXNzIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0NhY2hlZFR5cGVz
LmNwcDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkUHJpdmF0ZU5hbWVFbnRyeTo6ZW5jb2RlKToKKyAg
ICAgICAgKEpTQzo6Q2FjaGVkUHJpdmF0ZU5hbWVFbnRyeTo6ZGVjb2RlIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6Q2FjaGVkU3ltYm9sVGFibGU6OmRlY29kZSBjb25zdCk6CisgICAgICAgIChKU0M6
OkNhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZVJhcmVEYXRhOjplbmNvZGUpOgorICAgICAgICAoSlND
OjpDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGVSYXJlRGF0YTo6ZGVjb2RlIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6Q2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlOjpwcml2YXRlQnJhbmRSZXF1aXJlbWVu
dCBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZENvZGVCbG9jazo6cHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5r
ZWRDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmVu
Y29kZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkNhY2hlZENvZGVCbG9jazxDb2Rl
QmxvY2tUeXBlPjo6ZW5jb2RlKToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6Cisg
ICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0VW5saW5rZWRHbG9iYWxGdW5jdGlvbkV4ZWN1dGFi
bGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmg6CisgICAgICAgIChKU0M6OnByaXZh
dGVCcmFuZFJlcXVpcmVtZW50KToKKyAgICAgICAgKEpTQzo6cHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQ8RGlyZWN0RXZhbEV4ZWN1dGFibGU+KToKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtl
ZENvZGVCbG9ja0ltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoK
KyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHA6
CisgICAgICAgIChKU0M6OkRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAo
SlNDOjpEaXJlY3RFdmFsRXhlY3V0YWJsZTo6RGlyZWN0RXZhbEV4ZWN1dGFibGUpOgorICAgICAg
ICAqIHJ1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0V2
YWxFeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpleGVjdXRhYmxl
SW5mbyBjb25zdCk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpwcml2YXRlQnJhbmRS
ZXF1aXJlbWVudCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6
CisgICAgICAgIChKU0M6OmNyZWF0ZVByaXZhdGVTeW1ib2wpOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU1Njb3BlLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNTY29wZTo6Y29sbGVjdENsb3N1cmVWYXJpYWJsZXNVbmRlclREWik6CisgICAg
ICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTU3lt
Ym9sVGFibGVPYmplY3Q6OnNldFN5bWJvbFRhYmxlKToKKyAgICAgICAgKiBydW50aW1lL01vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6CisgICAg
ICAgICogcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3lt
Ym9sLmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sOjpjcmVhdGVQcml2YXRlKToKKyAgICAgICAg
KiBydW50aW1lL1N5bWJvbC5oOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuY3BwOgor
ICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZTo6Y2xvbmVTY29wZVBhcnQpOgorICAgICAgICAqIHJ1
bnRpbWUvU3ltYm9sVGFibGUuaDoKKwogMjAyMC0wMy0xMiAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0
cEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtKU0NdIEFkZCBzdXBwb3J0IGZvciBwcml2YXRlIGNs
YXNzIGZpZWxkcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1
aWx0aW5FeGVjdXRhYmxlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVp
bHRpbkV4ZWN1dGFibGVzLmNwcAppbmRleCAwYTNiNmNlZjMxZC4uYmJjZmUyYTI1ZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJs
ZXMuY3BwCkBAIC01OSw3ICs1OSw3IEBAIFNvdXJjZUNvZGUgQnVpbHRpbkV4ZWN1dGFibGVzOjpk
ZWZhdWx0Q29uc3RydWN0b3JTb3VyY2VDb2RlKENvbnN0cnVjdG9yS2luZCBjb25zCiAgICAgcmV0
dXJuIFNvdXJjZUNvZGUoKTsKIH0KIAotVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0
aW5FeGVjdXRhYmxlczo6Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yKENvbnN0cnVjdG9yS2luZCBj
b25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKQorVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yKENv
bnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2
YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCkKIHsKICAgICBzd2l0
Y2ggKGNvbnN0cnVjdG9yS2luZCkgewogICAgIGNhc2UgQ29uc3RydWN0b3JLaW5kOjpOb25lOgpA
QCAtNjcsNyArNjcsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1
dGFibGVzOjpjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoQ29uc3RydQogICAgICAgICBicmVhazsK
ICAgICBjYXNlIENvbnN0cnVjdG9yS2luZDo6QmFzZToKICAgICBjYXNlIENvbnN0cnVjdG9yS2lu
ZDo6RXh0ZW5kczoKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUV4ZWN1dGFibGUobV92bSwgZGVmYXVs
dENvbnN0cnVjdG9yU291cmNlQ29kZShjb25zdHJ1Y3RvcktpbmQpLCBuYW1lLCBjb25zdHJ1Y3Rv
cktpbmQsIENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdCwgbmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIpOworICAgICAgICByZXR1cm4gY3JlYXRlRXhlY3V0YWJsZShtX3ZtLCBkZWZhdWx0
Q29uc3RydWN0b3JTb3VyY2VDb2RlKGNvbnN0cnVjdG9yS2luZCksIG5hbWUsIGNvbnN0cnVjdG9y
S2luZCwgQ29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0LCBuZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplciwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOwogICAgIH0KICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTc4LDcgKzc4LDcgQEAgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlQnVpbHRpbkV4
ZWN1dGFibGUoY29uc3QgU28KICAgICByZXR1cm4gY3JlYXRlRXhlY3V0YWJsZShtX3ZtLCBjb2Rl
LCBuYW1lLCBjb25zdHJ1Y3RvcktpbmQsIGNvbnN0cnVjdEFiaWxpdHksIE5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyOjpObyk7CiB9CiAKLVVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWls
dGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1
Y3RvcktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgTmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpCitVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKFZNJiB2
bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBDb25z
dHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFi
aWxpdHksIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCkKIHsK
ICAgICAvLyBGSVhNRTogQ2FuIHdlIGp1c3QgbWFrZSBNZXRhRGF0YSBjb21wdXRhdGlvbiBiZSBj
b25zdGV4cHIgYW5kIGhhdmUgdGhlIGNvbXBpbGVyIGRvIHRoaXMgZm9yIHVzPwogICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTMyNzIKQEAgLTI1MSw3ICsy
NTEsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpj
cmVhdGVFeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgUwogICAgICAgICB9CiAgICAgfQogCi0gICAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUodm0sIHNvdXJjZSwgJm1ldGFkYXRhLCBraW5kLCBj
b25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIFdURjo6bnVsbG9w
dCwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwg
aXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IpOworICAgIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6Y3JlYXRlKHZtLCBzb3VyY2UsICZtZXRhZGF0YSwga2luZCwgY29uc3RydWN0QWJpbGl0eSwg
SlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBXVEY6Om51bGxvcHQsIERlcml2ZWRDb250ZXh0
VHlwZTo6Tm9uZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFuZFJlcXVp
cmVtZW50LCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3Rvcik7CiAgICAgcmV0dXJuIGZ1
bmN0aW9uRXhlY3V0YWJsZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCmluZGV4IDQ1MTYzOGU4NzNmLi40M2UzODI3NWIx
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZXMuaApAQCAtNTgsOSArNTgsOSBAQCBTb3VyY2VDb2RlIG5hbWUjI1NvdXJjZSgpOwog
I3VuZGVmIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTCiAKICAgICBzdGF0aWMgU291cmNlQ29k
ZSBkZWZhdWx0Q29uc3RydWN0b3JTb3VyY2VDb2RlKENvbnN0cnVjdG9yS2luZCk7Ci0gICAgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZURlZmF1bHRDb25zdHJ1Y3RvcihDb25zdHJ1
Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlRGVmYXVsdENvbnN0
cnVjdG9yKENvbnN0cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50KTsKIAotICAgIHN0YXRp
YyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlRXhlY3V0YWJsZShWTSYsIGNvbnN0
IFNvdXJjZUNvZGUmLCBjb25zdCBJZGVudGlmaWVyJiwgQ29uc3RydWN0b3JLaW5kLCBDb25zdHJ1
Y3RBYmlsaXR5LCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcik7CisgICAgc3RhdGljIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVFeGVjdXRhYmxlKFZNJiwgY29uc3QgU291cmNl
Q29kZSYsIGNvbnN0IElkZW50aWZpZXImLCBDb25zdHJ1Y3RvcktpbmQsIENvbnN0cnVjdEFiaWxp
dHksIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9
IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lKTsKIAogICAgIHZvaWQgZmluYWxpemVVbmNv
bmRpdGlvbmFsbHkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0J1aWx0aW5OYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5OYW1lcy5oCmluZGV4IDZiZDgwMGRmMGUyLi5mNGQ1YjZiYjA1MCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaApAQCAtMTY4LDYgKzE2OCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKHdlYkFzc2VtYmx5Q29tcGlsZVN0cmVhbWluZ0lu
dGVybmFsKSBcCiAgICAgbWFjcm8od2ViQXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVhbWluZ0ludGVy
bmFsKSBcCiAgICAgbWFjcm8oaW5zdGFuY2VGaWVsZEluaXRpYWxpemVyKSBcCisgICAgbWFjcm8o
cHJpdmF0ZUJyYW5kKSBcCiAgICAgbWFjcm8oY3JlYXRlUHJpdmF0ZVN5bWJvbCkKIAogbmFtZXNw
YWNlIFN5bWJvbHMgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0V4ZWN1dGFibGVJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0
YWJsZUluZm8uaAppbmRleCA3N2YxOTI5MDY5MC4uY2JlM2FiOTc2NGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0zNiwxMCArMzYs
MTEgQEAgZW51bSBjbGFzcyBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA6IHVpbnQ4X3QgeyBO
bywgWWVzIH07CiAvLyBGSVhNRTogVGhlc2UgZmxhZ3MsIFBhcnNlck1vZGVzIGFuZCBwcm9wYWdh
dGlvbiB0byBYWFhDb2RlQmxvY2tzIHNob3VsZCBiZSByZW9yZ2FuaXplZC4KIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDcKIHN0cnVjdCBFeGVjdXRhYmxl
SW5mbyB7Ci0gICAgRXhlY3V0YWJsZUluZm8oYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1v
ZGUsIGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbiwgQ29uc3RydWN0
b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIFN1
cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIERlcml2
ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQsIGJvb2wgaXNDbGFzc0NvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUp
CisgICAgRXhlY3V0YWJsZUluZm8oYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1vZGUsIGJv
b2wgaXNDb25zdHJ1Y3RvciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24sIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1
Y3RvcktpbmQsIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBTdXBlckJpbmRpbmcgc3Vw
ZXJCaW5kaW5nLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBEZXJpdmVkQ29udGV4dFR5cGUg
ZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzQ2xh
c3NDb250ZXh0LCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKQogICAgICAgICA6IG1f
dXNlc0V2YWwodXNlc0V2YWwpCiAgICAgICAgICwgbV9pc1N0cmljdE1vZGUoaXNTdHJpY3RNb2Rl
KQogICAgICAgICAsIG1faXNDb25zdHJ1Y3Rvcihpc0NvbnN0cnVjdG9yKQorICAgICAgICAsIG1f
cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50KSkKICAgICAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGlzQnVpbHRpbkZ1
bmN0aW9uKQogICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVk
Pihjb25zdHJ1Y3RvcktpbmQpKQogICAgICAgICAsIG1fc3VwZXJCaW5kaW5nKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihzdXBlckJpbmRpbmcpKQpAQCAtNTksNiArNjAsNyBAQCBzdHJ1Y3QgRXhlY3V0
YWJsZUluZm8gewogICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3VzZXNFdmFs
OyB9CiAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzU3RyaWN0TW9k
ZTsgfQogICAgIGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNDb25zdHJ1
Y3RvcjsgfQorICAgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVt
ZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ+
KG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOyB9CiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KICAgICBDb25zdHJ1Y3Rv
cktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3Ry
dWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KICAgICBTdXBlckJpbmRpbmcgc3VwZXJC
aW5kaW5nKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1cGVy
QmluZGluZyk7IH0KQEAgLTc0LDYgKzc2LDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX3Vz
ZXNFdmFsIDogMTsKICAgICB1bnNpZ25lZCBtX2lzU3RyaWN0TW9kZSA6IDE7CiAgICAgdW5zaWdu
ZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKKyAgICB1bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVp
cmVtZW50IDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKICAgICB1
bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CiAgICAgdW5zaWduZWQgbV9zdXBlckJpbmRp
bmcgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5jcHAKaW5kZXggNTg5MWYyYTVjMjUuLjRiNWM3MGE3YjIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAK
QEAgLTg0LDYgKzg0LDEwIEBAIFVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayhW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDb2RlVHlwZSBjb2RlCiAgICAgICAgIGNyZWF0
ZVJhcmVEYXRhSWZOZWNlc3NhcnkoaG9sZExvY2soY2VsbExvY2soKSkpOwogICAgICAgICBtX3Jh
cmVEYXRhLT5tX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpZZXMpOwogICAgIH0KKyAgICBpZiAoaW5m
by5wcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpID09IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpO
ZWVkZWQpIHsKKyAgICAgICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeShob2xkTG9jayhjZWxs
TG9jaygpKSk7CisgICAgICAgIG1fcmFyZURhdGEtPm1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5lZWRlZCk7
CisgICAgfQogfQogCiB2b2lkIFVubGlua2VkQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKEpTQ2Vs
bCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IGRkMjE3YjdmZDRmLi5iMzJk
ZTRiZTU5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmgKQEAgLTI2Nyw2ICsyNjcsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vOwogICAgIH0KIAorICAgIFByaXZhdGVC
cmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIGlmIChtX3JhcmVEYXRhKQorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFBy
aXZhdGVCcmFuZFJlcXVpcmVtZW50PihtX3JhcmVEYXRhLT5tX3ByaXZhdGVCcmFuZFJlcXVpcmVt
ZW50KTsKKyAgICAgICAgcmV0dXJuIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lOworICAg
IH0KKwogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogCiAgICAgQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzJiBsaXZlbmVzc0FuYWx5c2lzKENvZGVCbG9jayogY29kZUJsb2NrKQpA
QCAtNDA5LDYgKzQxNiw3IEBAIHB1YmxpYzoKICAgICAgICAgUmVmQ291bnRlZEFycmF5PENvbnN0
YW50SWRlbnRpZmllclNldEVudHJ5PiBtX2NvbnN0YW50SWRlbnRpZmllclNldHM7CiAKICAgICAg
ICAgdW5zaWduZWQgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA6IDE7CisgICAgICAgIHVu
c2lnbmVkIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgOiAxOwogICAgIH07CiAKICAgICBpbnQg
b3V0T2ZMaW5lSnVtcE9mZnNldChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVy
YXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
R2VuZXJhdG9yLmgKaW5kZXggMjEzYTNhODMyZDcuLmY2NzM0YWIwMjliIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tH
ZW5lcmF0b3IuaApAQCAtNTAsNiArNTAsNyBAQCBwdWJsaWM6CiAgICAgU3VwZXJCaW5kaW5nIHN1
cGVyQmluZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5zdXBlckJpbmRpbmcoKTsg
fQogICAgIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9j
b2RlQmxvY2stPnNjcmlwdE1vZGUoKTsgfQogICAgIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
IG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2st
Pm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCk7IH0KKyAgICBQcml2YXRlQnJhbmRSZXF1aXJl
bWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2Nr
LT5wcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpOyB9CiAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBj
b25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7IH0KICAgICBib29sIHVz
ZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnVzZXNFdmFsKCk7IH0KICAgICBT
b3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnBh
cnNlTW9kZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCBlM2ZhZGRjYmE5Ni4u
ZDYxMmQzYTI3YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtNzEsMTAgKzcxLDEw
IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2soCiAKICAgICBib29sIGlzQ2xhc3NDb250ZXh0ID0gZXhlY3V0YWJsZS0+
c3VwZXJCaW5kaW5nKCkgPT0gU3VwZXJCaW5kaW5nOjpOZWVkZWQ7CiAKLSAgICBVbmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVh
dGUodm0sIEZ1bmN0aW9uQ29kZSwgRXhlY3V0YWJsZUluZm8oZnVuY3Rpb24tPnVzZXNFdmFsKCks
IGZ1bmN0aW9uLT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2RlRm9yQ29uc3RydWN0LCBmdW5j
dGlvbktpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24sIGV4ZWN1dGFibGUtPmNvbnN0cnVj
dG9yS2luZCgpLCBzY3JpcHRNb2RlLCBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSwgcGFyc2VN
b2RlLCBleGVjdXRhYmxlLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgZXhlY3V0YWJsZS0+bmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgZmFsc2UsIGlzQ2xhc3NDb250ZXh0LCBFdmFsQ29udGV4
dFR5cGU6OkZ1bmN0aW9uRXZhbENvbnRleHQpLCBjb2RlR2VuZXJhdGlvbk1vZGUpOworICAgIFVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2s6OmNyZWF0ZSh2bSwgRnVuY3Rpb25Db2RlLCBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+dXNl
c0V2YWwoKSwgZnVuY3Rpb24tPmlzU3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1
Y3QsIGV4ZWN1dGFibGUtPnByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCksIGZ1bmN0aW9uS2luZCA9
PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwgZXhlY3V0YWJsZS0+Y29uc3RydWN0b3JLaW5kKCks
IHNjcmlwdE1vZGUsIGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpLCBwYXJzZU1vZGUsIGV4ZWN1
dGFibGUtPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBleGVjdXRhYmxlLT5uZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplcigpLCBmYWxzZSwgaXNDbGFzc0NvbnRleHQsIEV2YWxDb250ZXh0VHlwZTo6RnVu
Y3Rpb25FdmFsQ29udGV4dCksIGNvZGVHZW5lcmF0aW9uTW9kZSk7CiAKLSAgICBWYXJpYWJsZUVu
dmlyb25tZW50IHBhcmVudFNjb3BlVERaVmFyaWFibGVzID0gZXhlY3V0YWJsZS0+cGFyZW50U2Nv
cGVURFpWYXJpYWJsZXMoKTsKLSAgICBlcnJvciA9IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0
ZSh2bSwgZnVuY3Rpb24uZ2V0KCksIHNvdXJjZSwgcmVzdWx0LCBjb2RlR2VuZXJhdGlvbk1vZGUs
ICZwYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CisgICAgVmFyaWFibGVFbnZpcm9ubWVudCBwYXJl
bnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQgPSBleGVjdXRhYmxlLT5wYXJlbnRTY29wZVZhcmlh
YmxlRW52aXJvbm1lbnQoKTsKKyAgICBlcnJvciA9IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0
ZSh2bSwgZnVuY3Rpb24uZ2V0KCksIHNvdXJjZSwgcmVzdWx0LCBjb2RlR2VuZXJhdGlvbk1vZGUs
ICZwYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQpOwogCiAgICAgaWYgKGVycm9yLmlzVmFs
aWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC04Miw3ICs4Miw3IEBAIHN0YXRpYyBV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2soCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6
OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IGNvbnN0IFNvdXJjZUNvZGUmIHBhcmVudFNvdXJjZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5v
ZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGtpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0
QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIE9wdGlvbmFsPENvbXBhY3RW
YXJpYWJsZU1hcDo6SGFuZGxlPiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRGVyaXZlZENvbnRl
eHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3Ry
dWN0b3IpCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU291cmNlQ29kZSYgcGFy
ZW50U291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktp
bmQga2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlw
dE1vZGUgc2NyaXB0TW9kZSwgT3B0aW9uYWw8Q29tcGFjdFZhcmlhYmxlTWFwOjpIYW5kbGU+IHBh
cmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRD
b250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50
LCBib29sIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKQogICAgIDogQmFzZSh2bSwg
c3RydWN0dXJlKQogICAgICwgbV9maXJzdExpbmVPZmZzZXQobm9kZS0+Zmlyc3RMaW5lKCkgLSBw
YXJlbnRTb3VyY2UuZmlyc3RMaW5lKCkub25lQmFzZWRJbnQoKSkKICAgICAsIG1faXNJblN0cmlj
dENvbnRleHQobm9kZS0+aXNJblN0cmljdENvbnRleHQoKSkKQEAgLTEwMyw2ICsxMDMsNyBAQCBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdAogICAgICwgbV90eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQo
bm9kZS0+ZnVuY3Rpb25LZXl3b3JkU3RhcnQoKSkKICAgICAsIG1fdHlwZVByb2ZpbGluZ0VuZE9m
ZnNldChub2RlLT5zdGFydFN0YXJ0T2Zmc2V0KCkgKyBub2RlLT5zb3VyY2UoKS5sZW5ndGgoKSAt
IDEpCiAgICAgLCBtX3BhcmFtZXRlckNvdW50KG5vZGUtPnBhcmFtZXRlckNvdW50KCkpCisgICAg
LCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50KHN0YXRpY19jYXN0PHVuc2lnbmVkPihwcml2YXRl
QnJhbmRSZXF1aXJlbWVudCkpCiAgICAgLCBtX2ZlYXR1cmVzKDApCiAgICAgLCBtX3NvdXJjZVBh
cnNlTW9kZShub2RlLT5wYXJzZU1vZGUoKSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihub2RlLT5jb25zdHJ1Y3RvcktpbmQoKSkpCkBAIC0xMjIsMTIgKzEy
MywxMyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdAogICAgIEFTU0VSVChtX3NjcmlwdE1vZGUg
PT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNjcmlwdE1vZGUpKTsKICAgICBBU1NFUlQobV9zdXBl
ckJpbmRpbmcgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPnN1cGVyQmluZGluZygpKSk7
CiAgICAgQVNTRVJUKG1fZGVyaXZlZENvbnRleHRUeXBlID09IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihkZXJpdmVkQ29udGV4dFR5cGUpKTsKKyAgICBBU1NFUlQobV9wcml2YXRlQnJhbmRSZXF1aXJl
bWVudCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpKTsK
ICAgICBBU1NFUlQoIShtX2lzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yICYmIGNvbnN0
cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSkpOwogICAgIEFTU0VSVCghbV9u
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciB8fCAoaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24o
KSB8fCBkZXJpdmVkQ29udGV4dFR5cGUgPT0gRGVyaXZlZENvbnRleHRUeXBlOjpEZXJpdmVkQ29u
c3RydWN0b3JDb250ZXh0KSk7CiAgICAgaWYgKCFub2RlLT5jbGFzc1NvdXJjZSgpLmlzTnVsbCgp
KQogICAgICAgICBzZXRDbGFzc1NvdXJjZShub2RlLT5jbGFzc1NvdXJjZSgpKTsKLSAgICBpZiAo
cGFyZW50U2NvcGVURFpWYXJpYWJsZXMpCi0gICAgICAgIGVuc3VyZVJhcmVEYXRhKCkubV9wYXJl
bnRTY29wZVREWlZhcmlhYmxlcyA9IFdURk1vdmUoKnBhcmVudFNjb3BlVERaVmFyaWFibGVzKTsK
KyAgICBpZiAocGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50KQorICAgICAgICBlbnN1cmVS
YXJlRGF0YSgpLm1fcGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50ID0gV1RGTW92ZSgqcGFy
ZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50KTsKIH0KIAogVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGU6On5VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5o
CmluZGV4IDk4NzM4MzI0ZDc3Li40NjM5MGMwYjYyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgK
QEAgLTcwLDEwICs3MCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAmdm0udW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5zcGFjZTsKICAgICB9CiAKLSAgICBzdGF0aWMgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIHVu
bGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEpT
UGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBPcHRpb25hbDxDb21wYWN0VmFyaWFibGVNYXA6
OkhhbmRsZT4gcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJp
dmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyLCBib29sIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yID0gZmFs
c2UpCisgICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0mIHZt
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBV
bmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0
eSBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgT3B0aW9u
YWw8Q29tcGFjdFZhcmlhYmxlTWFwOjpIYW5kbGU+IHBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9u
bWVudCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJl
cXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29sIGlzQnVpbHRpbkRlZmF1bHRD
bGFzc0NvbnN0cnVjdG9yID0gZmFsc2UpCiAgICAgewogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0uaGVhcCkpCi0gICAgICAgICAgICBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSh2bSwgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUu
Z2V0KCksIHNvdXJjZSwgbm9kZSwgdW5saW5rZWRGdW5jdGlvbktpbmQsIGNvbnN0cnVjdEFiaWxp
dHksIHNjcmlwdE1vZGUsIFdURk1vdmUocGFyZW50U2NvcGVURFpWYXJpYWJsZXMpLCBkZXJpdmVk
Q29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBpc0J1aWx0aW5EZWZhdWx0
Q2xhc3NDb25zdHJ1Y3Rvcik7CisgICAgICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSh2bSwgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJj
ZSwgbm9kZSwgdW5saW5rZWRGdW5jdGlvbktpbmQsIGNvbnN0cnVjdEFiaWxpdHksIHNjcmlwdE1v
ZGUsIFdURk1vdmUocGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50KSwgZGVyaXZlZENvbnRl
eHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQsIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKTsKICAgICAgICAgaW5zdGFuY2Ut
PmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KQEAg
LTE0Myw2ICsxNDMsOCBAQCBwdWJsaWM6CiAgICAgQ29kZUZlYXR1cmVzIGZlYXR1cmVzKCkgY29u
c3QgeyByZXR1cm4gbV9mZWF0dXJlczsgfQogICAgIGJvb2wgaGFzQ2FwdHVyZWRWYXJpYWJsZXMo
KSBjb25zdCB7IHJldHVybiBtX2hhc0NhcHR1cmVkVmFyaWFibGVzOyB9CiAKKyAgICBQcml2YXRl
QnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PFByaXZhdGVCcmFuZFJlcXVpcmVtZW50PihtX3ByaXZhdGVCcmFuZFJlcXVp
cmVtZW50KTsgfQorCiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24g
PSB0cnVlOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKQEAgLTE2OCwxMSAr
MTcwLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICFtX3JhcmVEYXRhLT5tX2NsYXNzU291
cmNlLmlzTnVsbCgpOwogICAgIH0KIAotICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgcGFyZW50U2Nv
cGVURFpWYXJpYWJsZXMoKSBjb25zdAorICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgcGFyZW50U2Nv
cGVWYXJpYWJsZUVudmlyb25tZW50KCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmICghbV9yYXJl
RGF0YSB8fCAhbV9yYXJlRGF0YS0+bV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcykKKyAgICAgICAg
aWYgKCFtX3JhcmVEYXRhIHx8ICFtX3JhcmVEYXRhLT5tX3BhcmVudFNjb3BlVmFyaWFibGVFbnZp
cm9ubWVudCkKICAgICAgICAgICAgIHJldHVybiBWYXJpYWJsZUVudmlyb25tZW50KCk7Ci0gICAg
ICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX3BhcmVudFNjb3BlVERaVmFyaWFibGVzLmVudmlyb25t
ZW50KCkudG9WYXJpYWJsZUVudmlyb25tZW50KCk7CisgICAgICAgIHJldHVybiBtX3JhcmVEYXRh
LT5tX3BhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudC5lbnZpcm9ubWVudCgpLnRvVmFyaWFi
bGVFbnZpcm9ubWVudCgpOwogICAgIH0KICAgICAKICAgICBib29sIGlzQXJyb3dGdW5jdGlvbigp
IGNvbnN0IHsgcmV0dXJuIGlzQXJyb3dGdW5jdGlvblBhcnNlTW9kZShwYXJzZU1vZGUoKSk7IH0K
QEAgLTIwOCw3ICsyMTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIFNvdXJjZUNvZGUgbV9jbGFzc1Nv
dXJjZTsKICAgICAgICAgU3RyaW5nIG1fc291cmNlVVJMRGlyZWN0aXZlOwogICAgICAgICBTdHJp
bmcgbV9zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlOwotICAgICAgICBDb21wYWN0VmFyaWFibGVN
YXA6OkhhbmRsZSBtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzOworICAgICAgICBDb21wYWN0VmFy
aWFibGVNYXA6OkhhbmRsZSBtX3BhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudDsKICAgICAg
ICAgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiBtX2luc3RhbmNlRmllbGRMb2NhdGlvbnM7CiAgICAg
fTsKIApAQCAtMjI5LDcgKzIzMSw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0mLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VD
b2RlJiwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3Ry
dWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlLCBPcHRpb25hbDxDb21wYWN0VmFyaWFibGVN
YXA6OkhhbmRsZT4sICBKU0M6OkRlcml2ZWRDb250ZXh0VHlwZSwgSlNDOjpOZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplciwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3Rvcik7Cisg
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0mLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29u
c3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlLCBPcHRpb25hbDxDb21wYWN0VmFyaWFi
bGVNYXA6OkhhbmRsZT4sICBKU0M6OkRlcml2ZWRDb250ZXh0VHlwZSwgSlNDOjpOZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGJvb2wgaXNCdWlsdGlu
RGVmYXVsdENsYXNzQ29uc3RydWN0b3IpOwogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KERlY29kZXImLCBjb25zdCBDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGUmKTsKIAogICAgIHZvaWQg
ZGVjb2RlQ2FjaGVkQ29kZUJsb2NrcyhWTSYpOwpAQCAtMjU5LDcgKzI2MSw4IEBAIHByaXZhdGU6
CiAgICAgdW5zaWduZWQgbV9pc0NhY2hlZCA6IDE7CiAgICAgdW5zaWduZWQgbV90eXBlUHJvZmls
aW5nU3RhcnRPZmZzZXQ7CiAgICAgdW5zaWduZWQgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0Owot
ICAgIHVuc2lnbmVkIG1fcGFyYW1ldGVyQ291bnQ7CisgICAgdW5zaWduZWQgbV9wYXJhbWV0ZXJD
b3VudDozMTsKKyAgICB1bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsKICAg
ICBDb2RlRmVhdHVyZXMgbV9mZWF0dXJlczsKICAgICBTb3VyY2VQYXJzZU1vZGUgbV9zb3VyY2VQ
YXJzZU1vZGU7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAppbmRleCA2OTBmOTg2ODg1ZS4uYTU1NzVjNWZhNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBA
IC0yOTcsNyArMjk3LDcgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRl
KCkKICAgICByZXR1cm4gUGFyc2VyRXJyb3IoUGFyc2VyRXJyb3I6OkVycm9yTm9uZSk7CiB9CiAK
LUJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2Rl
KiBwcm9ncmFtTm9kZSwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlv
blNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgVmFyaWFi
bGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpCitCeXRlY29kZUdlbmVyYXRv
cjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBQcm9ncmFtTm9kZSogcHJvZ3JhbU5vZGUsIFVu
bGlua2VkUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRp
b25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBh
cmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCkKICAgICA6IEJ5dGVjb2RlR2VuZXJhdG9yQmFz
ZShtYWtlVW5pcXVlPFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yPih2bSwgY29kZUJsb2NrKSwg
Q29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJz
KCkpCiAgICAgLCBtX2NvZGVHZW5lcmF0aW9uTW9kZShjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAg
LCBtX3Njb3BlTm9kZShwcm9ncmFtTm9kZSkKQEAgLTMwNiw3ICszMDYsNyBAQCBCeXRlY29kZUdl
bmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBQcm9ncmFtTm9kZSogcHJvZ3JhbU5v
ZGUsIFVubGlua2VkUAogICAgICwgbV92bSh2bSkKICAgICAsIG1fbmVlZHNUb1VwZGF0ZUFycm93
RnVuY3Rpb25Db250ZXh0KHByb2dyYW1Ob2RlLT51c2VzQXJyb3dGdW5jdGlvbigpIHx8IHByb2dy
YW1Ob2RlLT51c2VzRXZhbCgpKQogewotICAgIEFTU0VSVF9VTlVTRUQocGFyZW50U2NvcGVURFpW
YXJpYWJsZXMsICFwYXJlbnRTY29wZVREWlZhcmlhYmxlcy0+c2l6ZSgpKTsKKyAgICBBU1NFUlRf
VU5VU0VEKHBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCwgIXBhcmVudFNjb3BlVmFyaWFi
bGVFbnZpcm9ubWVudC0+c2l6ZSgpKTsKIAogICAgIG1fY29kZUJsb2NrLT5zZXROdW1QYXJhbWV0
ZXJzKDEpOyAvLyBBbGxvY2F0ZSBzcGFjZSBmb3IgInRoaXMiCiAKQEAgLTMzOCw3ICszMzgsNyBA
QCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBQcm9ncmFtTm9k
ZSogcHJvZ3JhbU5vZGUsIFVubGlua2VkUAogICAgIH0KIH0KIAotQnl0ZWNvZGVHZW5lcmF0b3I6
OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0
aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBw
YXJlbnRTY29wZVREWlZhcmlhYmxlcykKK0J5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVy
YXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVH
ZW5lcmF0aW9uTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVWYXJp
YWJsZUVudmlyb25tZW50KQogICAgIDogQnl0ZWNvZGVHZW5lcmF0b3JCYXNlKG1ha2VVbmlxdWU8
VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I+KHZtLCBjb2RlQmxvY2spLCBDb2RlQmxvY2s6Omxs
aW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSkKICAgICAsIG1f
Y29kZUdlbmVyYXRpb25Nb2RlKGNvZGVHZW5lcmF0aW9uTW9kZSkKICAgICAsIG1fc2NvcGVOb2Rl
KGZ1bmN0aW9uTm9kZSkKQEAgLTM1Nyw2ICszNTcsOCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0
ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5r
ZQogICAgICwgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQoZnVuY3Rpb25Ob2Rl
LT51c2VzQXJyb3dGdW5jdGlvbigpIHx8IGZ1bmN0aW9uTm9kZS0+dXNlc0V2YWwoKSkKICAgICAs
IG1fZGVyaXZlZENvbnRleHRUeXBlKGNvZGVCbG9jay0+ZGVyaXZlZENvbnRleHRUeXBlKCkpCiB7
CisgICAgcHVzaFByaXZhdGVBY2Nlc3NOYW1lcygqcGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25t
ZW50KTsKKwogICAgIFN5bWJvbFRhYmxlKiBmdW5jdGlvblN5bWJvbFRhYmxlID0gU3ltYm9sVGFi
bGU6OmNyZWF0ZShtX3ZtKTsKICAgICBmdW5jdGlvblN5bWJvbFRhYmxlLT5zZXRVc2VzTm9uU3Ry
aWN0RXZhbChtX3VzZXNOb25TdHJpY3RFdmFsKTsKICAgICBpbnQgc3ltYm9sVGFibGVDb25zdGFu
dEluZGV4ID0gMDsKQEAgLTY5OSw4ICs3MDEsMTUgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVj
b2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UK
ICAgICAgICAgICAgICAgICBjYXNlIENvbnN0cnVjdG9yS2luZDo6Tm9uZToKICAgICAgICAgICAg
ICAgICBjYXNlIENvbnN0cnVjdG9yS2luZDo6QmFzZToKICAgICAgICAgICAgICAgICAgICAgZW1p
dENyZWF0ZVRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKE9w
dGlvbnM6OnVzZVB1YmxpY0NsYXNzRmllbGRzKCkpCisgICAgICAgICAgICAgICAgICAgIGlmIChP
cHRpb25zOjogdXNlUHJpdmF0ZUNsYXNzRmllbGRzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgc2hvdWxkRW1pdFByaXZhdGVCcmFuZCA9IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50
KCkgPT0gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5lZWRlZDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChzaG91bGRFbWl0UHJpdmF0ZUJyYW5kKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVtaXRJbnN0YWxsUHJpdmF0ZUJyYW5kKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBpZiAoT3B0aW9uczo6IHVzZVB1
YmxpY0NsYXNzRmllbGRzKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0SW5zdGFuY2VG
aWVsZEluaXRpYWxpemF0aW9uSWZOZWVkZWQoJm1fdGhpc1JlZ2lzdGVyLCAmbV9jYWxsZWVSZWdp
c3RlciwgbV9zY29wZU5vZGUtPnBvc2l0aW9uKCksIG1fc2NvcGVOb2RlLT5wb3NpdGlvbigpLCBt
X3Njb3BlTm9kZS0+cG9zaXRpb24oKSk7CisKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgY2FzZSBDb25zdHJ1Y3RvcktpbmQ6OkV4dGVuZHM6CiAgICAgICAgICAg
ICAgICAgICAgIG1vdmVFbXB0eVZhbHVlKCZtX3RoaXNSZWdpc3Rlcik7CkBAIC03NjUsNyArNzc0
LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rp
b25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKIAogICAgIC8vIEFsbCAiYWRkVmFyKCkicyBu
ZWVkcyB0byBoYXBwZW4gYmVmb3JlICJpbml0aWFsaXplRGVmYXVsdFBhcmFtZXRlclZhbHVlc0Fu
ZFNldHVwRnVuY3Rpb25TY29wZVN0YWNrKCkiIGlzIGNhbGxlZAogICAgIC8vIGJlY2F1c2UgYSBm
dW5jdGlvbidzIGRlZmF1bHQgcGFyYW1ldGVyIEV4cHJlc3Npb25Ob2RlcyB3aWxsIHVzZSB0ZW1w
b3JhcnkgcmVnaXN0ZXJzLgotICAgIHB1c2hURFpWYXJpYWJsZXMoKnBhcmVudFNjb3BlVERaVmFy
aWFibGVzLCBURFpDaGVja09wdGltaXphdGlvbjo6RG9Ob3RPcHRpbWl6ZSwgVERaUmVxdWlyZW1l
bnQ6OlVuZGVyVERaKTsKKyAgICBwdXNoVERaVmFyaWFibGVzKCpwYXJlbnRTY29wZVZhcmlhYmxl
RW52aXJvbm1lbnQsIFREWkNoZWNrT3B0aW1pemF0aW9uOjpEb05vdE9wdGltaXplLCBURFpSZXF1
aXJlbWVudDo6VW5kZXJURFopOwogCiAgICAgUmVmPExhYmVsPiBjYXRjaExhYmVsID0gbmV3TGFi
ZWwoKTsKICAgICBUcnlEYXRhKiB0cnlGb3JtYWxQYXJhbWV0ZXJzRGF0YSA9IG51bGxwdHI7CkBA
IC04MzMsNyArODQyLDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZN
JiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICBwdXNoTGV4aWNh
bFNjb3BlKG1fc2NvcGVOb2RlLCBURFpDaGVja09wdGltaXphdGlvbjo6T3B0aW1pemUsIE5lc3Rl
ZFNjb3BlVHlwZTo6SXNOb3ROZXN0ZWQsIG51bGxwdHIsIHNob3VsZEluaXRpYWxpemVCbG9ja1Nj
b3BlZEZ1bmN0aW9ucyk7CiB9CiAKLUJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRv
cihWTSYgdm0sIEV2YWxOb2RlKiBldmFsTm9kZSwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwg
Y29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpCitCeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5v
ZGUsIFVubGlua2VkRXZhbENvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVy
YXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQq
IHBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCkKICAgICA6IEJ5dGVjb2RlR2VuZXJhdG9y
QmFzZShtYWtlVW5pcXVlPFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yPih2bSwgY29kZUJsb2Nr
KSwgQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0
ZXJzKCkpCiAgICAgLCBtX2NvZGVHZW5lcmF0aW9uTW9kZShjb2RlR2VuZXJhdGlvbk1vZGUpCiAg
ICAgLCBtX3Njb3BlTm9kZShldmFsTm9kZSkKQEAgLTg0Niw3ICs4NTUsOCBAQCBCeXRlY29kZUdl
bmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVu
bGlua2VkRXZhbENvZAogewogICAgIG1fY29kZUJsb2NrLT5zZXROdW1QYXJhbWV0ZXJzKDEpOwog
Ci0gICAgcHVzaFREWlZhcmlhYmxlcygqcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIFREWkNoZWNr
T3B0aW1pemF0aW9uOjpEb05vdE9wdGltaXplLCBURFpSZXF1aXJlbWVudDo6VW5kZXJURFopOwor
ICAgIHB1c2hQcml2YXRlQWNjZXNzTmFtZXMoKnBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVu
dCk7CisgICAgcHVzaFREWlZhcmlhYmxlcygqcGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50
LCBURFpDaGVja09wdGltaXphdGlvbjo6RG9Ob3RPcHRpbWl6ZSwgVERaUmVxdWlyZW1lbnQ6OlVu
ZGVyVERaKTsKIAogICAgIGVtaXRFbnRlcigpOwogCkBAIC04OTEsNyArOTAxLDcgQEAgQnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2YWxOb2Rl
LCBVbmxpbmtlZEV2YWxDb2QKICAgICBwdXNoTGV4aWNhbFNjb3BlKG1fc2NvcGVOb2RlLCBURFpD
aGVja09wdGltaXphdGlvbjo6T3B0aW1pemUsIE5lc3RlZFNjb3BlVHlwZTo6SXNOb3ROZXN0ZWQs
IG51bGxwdHIsIHNob3VsZEluaXRpYWxpemVCbG9ja1Njb3BlZEZ1bmN0aW9ucyk7CiB9CiAKLUJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIE1vZHVsZVByb2dyYW1O
b2RlKiBtb2R1bGVQcm9ncmFtTm9kZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9k
ZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpCitC
eXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBNb2R1bGVQcm9ncmFt
Tm9kZSogbW9kdWxlUHJvZ3JhbU5vZGUsIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayog
Y29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1v
ZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9u
bWVudCkKICAgICA6IEJ5dGVjb2RlR2VuZXJhdG9yQmFzZShtYWtlVW5pcXVlPFVubGlua2VkQ29k
ZUJsb2NrR2VuZXJhdG9yPih2bSwgY29kZUJsb2NrKSwgQ29kZUJsb2NrOjpsbGludEJhc2VsaW5l
Q2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkpCiAgICAgLCBtX2NvZGVHZW5lcmF0
aW9uTW9kZShjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAgLCBtX3Njb3BlTm9kZShtb2R1bGVQcm9n
cmFtTm9kZSkKQEAgLTkwMSw3ICs5MTEsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVH
ZW5lcmF0b3IoVk0mIHZtLCBNb2R1bGVQcm9ncmFtTm9kZSogbW9kdWxlUHJvZ3JhbU5vZAogICAg
ICwgbV91c2VzTm9uU3RyaWN0RXZhbChmYWxzZSkKICAgICAsIG1fbmVlZHNUb1VwZGF0ZUFycm93
RnVuY3Rpb25Db250ZXh0KG1vZHVsZVByb2dyYW1Ob2RlLT51c2VzQXJyb3dGdW5jdGlvbigpIHx8
IG1vZHVsZVByb2dyYW1Ob2RlLT51c2VzRXZhbCgpKQogewotICAgIEFTU0VSVF9VTlVTRUQocGFy
ZW50U2NvcGVURFpWYXJpYWJsZXMsICFwYXJlbnRTY29wZVREWlZhcmlhYmxlcy0+c2l6ZSgpKTsK
KyAgICBBU1NFUlRfVU5VU0VEKHBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCwgIXBhcmVu
dFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudC0+c2l6ZSgpKTsKIAogICAgIFN5bWJvbFRhYmxlKiBt
b2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlID0gU3ltYm9sVGFibGU6OmNyZWF0ZShtX3ZtKTsK
ICAgICBtb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlLT5zZXRVc2VzTm9uU3RyaWN0RXZhbCht
X3VzZXNOb25TdHJpY3RFdmFsKTsKQEAgLTE4NjAsOCArMTg3MCwxMCBAQCBib29sIEJ5dGVjb2Rl
R2VuZXJhdG9yOjppbnN0YW50aWF0ZUxleGljYWxWYXJpYWJsZXMoY29uc3QgVmFyaWFibGVFbnZp
cm9ubWVudCYgbAogCiAgICAgICAgICAgICAvLyBGSVhNRTogb25seSBkbyB0aGlzIGlmIHRoZXJl
IGlzIGFuIGV2YWwoKSB3aXRoaW4gYSBuZXN0ZWQgc2NvcGUgLS0tIG90aGVyd2lzZSBpdCBpc24n
dCBuZWVkZWQuCiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA2NjYzCi0gICAgICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNQcml2YXRlTmFt
ZSgpKQotICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5hZGRQcml2YXRlTmFtZShlbnRyeS5r
ZXkuZ2V0KCkpOworICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVlLmlzUHJpdmF0ZUZpZWxkKCkp
CisgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUtPmFkZFByaXZhdGVOYW1lKGVudHJ5LmtleS5n
ZXQoKSwgUHJpdmF0ZU5hbWVFbnRyeShQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzRGVjbGFy
ZWQpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGVudHJ5LnZhbHVlLmlzUHJpdmF0ZU1ldGhvZCgp
KQorICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5hZGRQcml2YXRlTmFtZShlbnRyeS5rZXku
Z2V0KCksIFByaXZhdGVOYW1lRW50cnkoUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc0RlY2xh
cmVkIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc01ldGhvZCkpOwogICAgICAgICB9CiAg
ICAgfQogICAgIHJldHVybiBoYXNDYXB0dXJlZFZhcmlhYmxlczsKQEAgLTI2ODUsMTIgKzI2OTcs
NDUgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcml2YXRlRmllbGRBZGQo
UmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCoKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKK3Zv
aWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDcmVhdGVQcml2YXRlQnJhbmQoUmVnaXN0ZXJJRCog
c2NvcGUsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKK3sKKyAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gY3JlYXRlUHJpdmF0ZVN5bWJvbCA9IG1vdmVMaW5rVGltZUNvbnN0YW50
KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OmNyZWF0ZVByaXZhdGVTeW1ib2wpOworCisgICAg
Q2FsbEFyZ3VtZW50cyBhcmd1bWVudHMoKnRoaXMsIG51bGxwdHIsIDApOworICAgIGVtaXRMb2Fk
KGFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CisgICAgUmVnaXN0ZXJJ
RCogbmV3U3ltYm9sID0gZW1pdENhbGwoZmluYWxEZXN0aW5hdGlvbihudWxscHRyLCBjcmVhdGVQ
cml2YXRlU3ltYm9sLmdldCgpKSwgY3JlYXRlUHJpdmF0ZVN5bWJvbC5nZXQoKSwgTm9FeHBlY3Rl
ZEZ1bmN0aW9uLCBhcmd1bWVudHMsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCwgRGVidWdn
YWJsZUNhbGw6Ok5vKTsKKworICAgIFZhcmlhYmxlIHByaXZhdGVCcmFuZFZhciA9IHZhcmlhYmxl
KHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5wcml2YXRlQnJhbmRQcml2YXRlTmFtZSgp
KTsKKworICAgIGVtaXRQdXRUb1Njb3BlKHNjb3BlLCBwcml2YXRlQnJhbmRWYXIsIG5ld1N5bWJv
bCwgRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6SW5pdGlhbGl6YXRp
b24pOworfQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SW5zdGFsbFByaXZhdGVCcmFu
ZChSZWdpc3RlcklEKiB0YXJnZXQpCit7CisgICAgVmFyaWFibGUgcHJpdmF0ZUJyYW5kVmFyID0g
dmFyaWFibGUocHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLnByaXZhdGVCcmFuZFByaXZh
dGVOYW1lKCkpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlQnJhbmRWYXJTY29wZSA9
IGVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgcHJpdmF0ZUJyYW5kVmFyKTsKKyAgICBSZWdpc3Rl
cklEKiBwcml2YXRlQnJhbmRTeW1ib2wgPSBlbWl0R2V0UHJpdmF0ZUJyYW5kKG5ld1RlbXBvcmFy
eSgpLCBwcml2YXRlQnJhbmRWYXJTY29wZS5nZXQoKSk7CisgICAgZW1pdFByaXZhdGVGaWVsZEFk
ZCh0YXJnZXQsIHByaXZhdGVCcmFuZFN5bWJvbCwgcHJpdmF0ZUJyYW5kU3ltYm9sKTsKK30KKwor
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRQcml2YXRlQnJhbmQoUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzY29wZSkKK3sKKyAgICBWYXJpYWJsZSBwcml2YXRlQnJh
bmRWYXIgPSB2YXJpYWJsZShwcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkucHJpdmF0ZUJy
YW5kUHJpdmF0ZU5hbWUoKSk7CisgICAgcmV0dXJuIGVtaXRHZXRGcm9tU2NvcGUoZHN0LCBzY29w
ZSwgcHJpdmF0ZUJyYW5kVmFyLCBUaHJvd0lmTm90Rm91bmQpOworfQorCiBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFByaXZhdGVGaWVsZFB1dChSZWdpc3RlcklEKiBiYXNlLCBS
ZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7CiAgICAgT3BQdXRCeVZh
bERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIFB1dEJ5VmFsUHJpdmF0
ZUZpZWxkUHV0KTsKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRDaGVja1ByaXZhdGVCcmFuZChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBi
cmFuZFN5bWJvbCkKK3sKKyAgICAvLyBUaGlzIGlzIGdvaW5nIHRvIHRyaG93IFR5cGVFcnJvciBp
ZiBicmFuZCBpcyBub3QgcHJlc2VudAorICAgIGVtaXREaXJlY3RHZXRCeVZhbChuZXdUZW1wb3Jh
cnkoKSwgYmFzZSwgYnJhbmRTeW1ib2wpOworfQorCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0U3VwZXJTYW1wbGVyQmVnaW4oKQogewogICAgIE9wU3VwZXJTYW1wbGVyQmVnaW46OmVtaXQo
dGhpcyk7CkBAIC0yODE5LDYgKzI4NjQsMzggQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6bGlm
dFREWkNoZWNrSWZQb3NzaWJsZShjb25zdCBWYXJpYWJsZSYgdmFyaWFibGUpCiAgICAgfQogfQog
Citib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjppc1ByaXZhdGVNZXRob2QoY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gbV9wcml2YXRlTmFtZXNTdGFjay5z
aXplKCk7IGktLTsgKSB7CisgICAgICAgIGF1dG8mIG1hcCA9IG1fcHJpdmF0ZU5hbWVzU3RhY2tb
aV07CisgICAgICAgIGF1dG8gaXQgPSBtYXAuZmluZChpZGVudC5pbXBsKCkpOworICAgICAgICBp
ZiAoaXQgIT0gbWFwLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGl0LT52YWx1ZS5pc01ldGhv
ZCgpOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6cHVzaFByaXZhdGVBY2Nlc3NOYW1lcyhjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBl
bnZpcm9ubWVudCkKK3sKKyAgICBpZiAoIWVudmlyb25tZW50LnByaXZhdGVOYW1lc1NpemUoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgVmFyaWFibGVFbnZpcm9ubWVudDo6UHJpdmF0ZU5hbWVz
IHByaXZhdGVOYW1lc01hcDsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGVudHJ5IDogZW52aXJvbm1l
bnQucHJpdmF0ZU5hbWVzKCkpCisgICAgICAgIHByaXZhdGVOYW1lc01hcC5hZGQoZW50cnkua2V5
LCBlbnRyeS52YWx1ZSk7CisKKyAgICBtX3ByaXZhdGVOYW1lc1N0YWNrLmFwcGVuZChXVEZNb3Zl
KHByaXZhdGVOYW1lc01hcCkpOworfQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwb3BQcml2
YXRlQWNjZXNzTmFtZXMoKQoreworICAgIGlmICghbV9wcml2YXRlTmFtZXNTdGFjay5zaXplKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fcHJpdmF0ZU5hbWVzU3RhY2sucmVtb3ZlTGFzdCgp
OworfQorCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoVERaVmFyaWFibGVzKGNvbnN0IFZh
cmlhYmxlRW52aXJvbm1lbnQmIGVudmlyb25tZW50LCBURFpDaGVja09wdGltaXphdGlvbiBvcHRp
bWl6YXRpb24sIFREWlJlcXVpcmVtZW50IHJlcXVpcmVtZW50KQogewogICAgIGlmICghZW52aXJv
bm1lbnQuc2l6ZSgpKQpAQCAtMjg0MSw2ICsyOTE4LDI0IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OnB1c2hURFpWYXJpYWJsZXMoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgZW52aXJvbm1l
bnQsCiAgICAgbV9jYWNoZWRWYXJpYWJsZXNVbmRlclREWiA9IHsgfTsKIH0KIAordm9pZCBCeXRl
Y29kZUdlbmVyYXRvcjo6Z2V0QXZhaWxhYmxlUHJpdmF0ZUFjY2Vzc05hbWVzKFZhcmlhYmxlRW52
aXJvbm1lbnQmIHJlc3VsdCkKK3sKKyAgICBTbWFsbFB0clNldDxVbmlxdWVkU3RyaW5nSW1wbCos
IDE2PiBleGNsdWRlZE5hbWVzOworICAgIGZvciAodW5zaWduZWQgaSA9IG1fcHJpdmF0ZU5hbWVz
U3RhY2suc2l6ZSgpOyBpLS07ICkgeworICAgICAgICBhdXRvJiBtYXAgPSBtX3ByaXZhdGVOYW1l
c1N0YWNrW2ldOworICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbWFwKSAgeworICAgICAgICAg
ICAgaWYgKGVudHJ5LnZhbHVlLmlzUHJpdmF0ZUFjY2VzcygpKSB7CisgICAgICAgICAgICAgICAg
aWYgKCFleGNsdWRlZE5hbWVzLmNvbnRhaW5zKGVudHJ5LmtleS5nZXQoKSkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSByZXN1bHQuYWRkUHJpdmF0ZU5hbWUoZW50cnku
a2V5KTsKKyAgICAgICAgICAgICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IGVu
dHJ5LnZhbHVlOworICAgICAgICAgICAgICAgICAgICBleGNsdWRlZE5hbWVzLmFkZChlbnRyeS5r
ZXkuZ2V0KCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgICAgIGV4Y2x1ZGVkTmFtZXMuYWRkKGVudHJ5LmtleS5nZXQoKSk7CisgICAgICAgIH0K
KyAgICB9Cit9CisKIE9wdGlvbmFsPENvbXBhY3RWYXJpYWJsZU1hcDo6SGFuZGxlPiBCeXRlY29k
ZUdlbmVyYXRvcjo6Z2V0VmFyaWFibGVzVW5kZXJURFooKQogewogICAgIGlmIChtX2NhY2hlZFZh
cmlhYmxlc1VuZGVyVERaKSB7CkBAIC0yODc0LDYgKzI5NjksOCBAQCBPcHRpb25hbDxDb21wYWN0
VmFyaWFibGVNYXA6OkhhbmRsZT4gQnl0ZWNvZGVHZW5lcmF0b3I6OmdldFZhcmlhYmxlc1VuZGVy
VERaKCkKICAgICAgICAgfQogICAgIH0KIAorICAgIGdldEF2YWlsYWJsZVByaXZhdGVBY2Nlc3NO
YW1lcyhlbnZpcm9ubWVudCk7CisKICAgICBtX2NhY2hlZFZhcmlhYmxlc1VuZGVyVERaID0gbV92
bS5tX2NvbXBhY3RWYXJpYWJsZU1hcC0+Z2V0KGVudmlyb25tZW50KTsKICAgICBtX2hhc0NhY2hl
ZFZhcmlhYmxlc1VuZGVyVERaID0gIWVudmlyb25tZW50LmlzRW1wdHkoKTsKICAgICBpZiAoIW1f
aGFzQ2FjaGVkVmFyaWFibGVzVW5kZXJURFopCkBAIC0zMDUyLDkgKzMxNDksOSBAQCBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld01ldGhvZERlZmluaXRpb24oUmVnaXN0ZXJJ
RCogZHN0LCBNZXRob2REZQogfQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dE5ld0RlZmF1bHRDb25zdHJ1Y3RvcihSZWdpc3RlcklEKiBkc3QsIENvbnN0cnVjdG9yS2luZCBj
b25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsCi0gICAgY29uc3QgSWRlbnRp
ZmllciYgZWNtYU5hbWUsIGNvbnN0IFNvdXJjZUNvZGUmIGNsYXNzU291cmNlLCBOZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcikKKyAgICBjb25zdCBJ
ZGVudGlmaWVyJiBlY21hTmFtZSwgY29uc3QgU291cmNlQ29kZSYgY2xhc3NTb3VyY2UsIE5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRl
QnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCkKIHsKLSAgICBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG1fdm0uYnVpbHRpbkV4ZWN1dGFibGVz
KCktPmNyZWF0ZURlZmF1bHRDb25zdHJ1Y3Rvcihjb25zdHJ1Y3RvcktpbmQsIG5hbWUsIG5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSA9IG1fdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNyZWF0ZURlZmF1bHRDb25z
dHJ1Y3Rvcihjb25zdHJ1Y3RvcktpbmQsIG5hbWUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
LCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7CiAgICAgZXhlY3V0YWJsZS0+c2V0SW52YWxpZFR5
cGVQcm9maWxpbmdPZmZzZXRzKCk7CiAgICAgZXhlY3V0YWJsZS0+c2V0RWNtYU5hbWUoZWNtYU5h
bWUpOwogICAgIGV4ZWN1dGFibGUtPnNldENsYXNzU291cmNlKGNsYXNzU291cmNlKTsKQEAgLTMw
ODQsNyArMzE4MSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3SW5z
dGFuY2VGaWVsZEluaXRpYWxpemVyRnVuY3Rpb24oUmVnaXN0ZXJJCiAgICAgY29uc3QgYm9vbCBh
bHdheXNTdHJpY3RJbkNsYXNzID0gdHJ1ZTsKICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSBtZXRh
ZGF0YShwYXJzZXJBcmVuYSgpLCBKU1Rva2VuTG9jYXRpb24oKSwgSlNUb2tlbkxvY2F0aW9uKCks
IDAsIDAsIDAsIDAsIDAsIGFsd2F5c1N0cmljdEluQ2xhc3MsIENvbnN0cnVjdG9yS2luZDo6Tm9u
ZSwgc3VwZXJCaW5kaW5nLCAwLCBwYXJzZU1vZGUsIGZhbHNlKTsKICAgICBtZXRhZGF0YS5maW5p
c2hQYXJzaW5nKG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgSWRlbnRpZmllcigpLCBGdW5jdGlvbk1v
ZGU6Ok1ldGhvZERlZmluaXRpb24pOwotICAgIGF1dG8gaW5pdGlhbGl6ZXIgPSBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgJm1l
dGFkYXRhLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBV
bmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCBzY3JpcHRNb2RlKCksIFdU
Rk1vdmUodmFyaWFibGVzVW5kZXJURFopLCBuZXdEZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyOjpObyk7CisgICAgYXV0byBpbml0aWFsaXplciA9IFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgpLCAm
bWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6
IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIHNjcmlwdE1vZGUoKSwg
V1RGTW92ZSh2YXJpYWJsZXNVbmRlclREWiksIG5ld0Rlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZSk7
CiAgICAgaW5pdGlhbGl6ZXItPnNldEluc3RhbmNlRmllbGRMb2NhdGlvbnMoV1RGTW92ZShpbnN0
YW5jZUZpZWxkTG9jYXRpb25zKSk7CiAKICAgICB1bnNpZ25lZCBpbmRleCA9IG1fY29kZUJsb2Nr
LT5hZGRGdW5jdGlvbkV4cHIoaW5pdGlhbGl6ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDk2NDNhODRi
Y2NiLi41MjdkMTI2ZDkzZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNDAwLDYgKzQwMCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBib29sIG5lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4
dCgpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0OyB9
CiAgICAgICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlTm9kZS0+dXNl
c0V2YWwoKTsgfQogICAgICAgICBib29sIHVzZXNUaGlzKCkgY29uc3QgeyByZXR1cm4gbV9zY29w
ZU5vZGUtPnVzZXNUaGlzKCk7IH0KKyAgICAgICAgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+cHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQoKTsgfQogICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0
b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmNvbnN0cnVjdG9yS2luZCgpOyB9
CiAgICAgICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX2Nv
ZGVCbG9jay0+c3VwZXJCaW5kaW5nKCk7IH0KICAgICAgICAgSlNQYXJzZXJTY3JpcHRNb2RlIHNj
cmlwdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+c2NyaXB0TW9kZSgpOyB9CkBA
IC03NDcsNyArNzQ4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdE5ld0Z1bmN0aW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqKTsK
ICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklE
KiBkc3QsIEZ1bmNFeHByTm9kZSopOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3RGVmYXVs
dENvbnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVu
dGlmaWVyJiBuYW1lLCBjb25zdCBJZGVudGlmaWVyJiBlY21hTmFtZSwgY29uc3QgU291cmNlQ29k
ZSYgY2xhc3NTb3VyY2UsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsKKyAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3RvcihSZWdpc3RlcklEKiBkc3QsIENvbnN0
cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3QgSWRlbnRpZmllciYgZWNt
YU5hbWUsIGNvbnN0IFNvdXJjZUNvZGUmIGNsYXNzU291cmNlLCBOZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOwogICAgICAgICBSZWdpc3RlcklEKiBl
bWl0TmV3SW5zdGFuY2VGaWVsZEluaXRpYWxpemVyRnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBW
ZWN0b3I8SlNUZXh0UG9zaXRpb24+JiYgaW5zdGFuY2VGaWVsZExvY2F0aW9ucywgYm9vbCBpc0Rl
cml2ZWQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Np
b24oUmVnaXN0ZXJJRCosIEFycm93RnVuY0V4cHJOb2RlKik7CiAgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXROZXdNZXRob2REZWZpbml0aW9uKFJlZ2lzdGVySUQqIGRzdCwgTWV0aG9kRGVmaW5pdGlv
bk5vZGUqKTsKQEAgLTc5NSw2ICs3OTYsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRQcml2YXRlRmllbGRBZGQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJ
RCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dFByaXZhdGVGaWVsZFB1dChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwg
UmVnaXN0ZXJJRCogdmFsdWUpOwogCisgICAgICAgIHZvaWQgZW1pdENyZWF0ZVByaXZhdGVCcmFu
ZChSZWdpc3RlcklEKiBkc3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7
CisgICAgICAgIHZvaWQgZW1pdEluc3RhbGxQcml2YXRlQnJhbmQoUmVnaXN0ZXJJRCogdGFyZ2V0
KTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldFByaXZhdGVCcmFuZChSZWdpc3RlcklEKiBk
c3QsIFJlZ2lzdGVySUQqIHNjb3BlKTsKKyAgICAgICAgdm9pZCBlbWl0Q2hlY2tQcml2YXRlQnJh
bmQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogYnJhbmQpOworCiAgICAgICAgIHZvaWQg
ZW1pdFN1cGVyU2FtcGxlckJlZ2luKCk7CiAgICAgICAgIHZvaWQgZW1pdFN1cGVyU2FtcGxlckVu
ZCgpOwogCkBAIC0xMTMyLDEwICsxMTM4LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAg
ICAgRGVyaXZlZENvbnRleHRUeXBlIG5ld0Rlcml2ZWRDb250ZXh0VHlwZSA9IERlcml2ZWRDb250
ZXh0VHlwZTo6Tm9uZTsKIAogICAgICAgICAgICAgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIg
bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSBtZXRhZGF0YS0+aXNDb25zdHJ1Y3RvckFuZE5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkgPyBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6
WWVzIDogTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vOworICAgICAgICAgICAgUHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBtZXRhZGF0YS0+cHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQoKTsKICAgICAgICAgICAgIGlmIChTb3VyY2VQYXJzZU1vZGVT
ZXQoU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSwgU291cmNlUGFyc2VNb2RlOjpB
c3luY0Fycm93RnVuY3Rpb25Nb2RlLCBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlv
bkJvZHlNb2RlKS5jb250YWlucyhtZXRhZGF0YS0+cGFyc2VNb2RlKCkpKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RXh0ZW5kcyB8
fCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSkgewogICAgICAgICAgICAgICAgICAgICBu
ZXdEZXJpdmVkQ29udGV4dFR5cGUgPSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRDb25zdHJ1
Y3RvckNvbnRleHQ7CiAgICAgICAgICAgICAgICAgICAgIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyID0gbV9jb2RlQmxvY2stPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCk7CisgICAgICAg
ICAgICAgICAgICAgIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID0gbV9jb2RlQmxvY2stPnByaXZh
dGVCcmFuZFJlcXVpcmVtZW50KCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IGVsc2UgaWYgKG1fY29kZUJsb2NrLT5pc0NsYXNzQ29udGV4dCgpIHx8IGlzRGVyaXZlZENsYXNz
Q29udGV4dCgpKQogICAgICAgICAgICAgICAgICAgICBuZXdEZXJpdmVkQ29udGV4dFR5cGUgPSBE
ZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRNZXRob2RDb250ZXh0OwpAQCAtMTE1MCwxMCArMTE1
OCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291
cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlICYmIG1ldGFkYXRhLT5jb25zdHJ1Y3RvcktpbmQoKSAh
PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpCiAgICAgICAgICAgICAgICAgY29uc3RydWN0QWJpbGl0
eSA9IENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdDsKIAotICAgICAgICAgICAgcmV0dXJu
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29wZU5vZGUtPnNv
dXJjZSgpLCBtZXRhZGF0YSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1
bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwgc2NyaXB0
TW9kZSgpLCBXVEZNb3ZlKG9wdGlvbmFsVmFyaWFibGVzVW5kZXJURFopLCBuZXdEZXJpdmVkQ29u
dGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsKKyAgICAgICAgICAgIHJldHVy
biBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5z
b3VyY2UoKSwgbWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5G
dW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIHNjcmlw
dE1vZGUoKSwgV1RGTW92ZShvcHRpb25hbFZhcmlhYmxlc1VuZGVyVERaKSwgbmV3RGVyaXZlZENv
bnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgcHJpdmF0ZUJyYW5kUmVxdWly
ZW1lbnQpOwogICAgICAgICB9CiAKICAgICAgICAgT3B0aW9uYWw8Q29tcGFjdFZhcmlhYmxlTWFw
OjpIYW5kbGU+IGdldFZhcmlhYmxlc1VuZGVyVERaKCk7CisgICAgICAgIHZvaWQgZ2V0QXZhaWxh
YmxlUHJpdmF0ZUFjY2Vzc05hbWVzKFZhcmlhYmxlRW52aXJvbm1lbnQmKTsKIAogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0Q29uc3RydWN0VmFyYXJncyhSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVy
SUQqIGZ1bmMsIFJlZ2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVnaXN0ZXJJRCogYXJndW1lbnRz
LCBSZWdpc3RlcklEKiBmaXJzdEZyZWVSZWdpc3RlciwgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNl
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBEZWJ1Z2dhYmxlQ2FsbCk7
CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxPcD4KQEAgLTEyMDcsNiArMTIxNiwxMSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIG1fbGFzdEluc3RydWN0aW9uID0gcHJldkxh
c3RJbnN0cnVjdGlvbjsKICAgICAgICAgfQogCisgICAgICAgIGJvb2wgaXNQcml2YXRlTWV0aG9k
KGNvbnN0IElkZW50aWZpZXImKTsKKworICAgICAgICB2b2lkIHB1c2hQcml2YXRlQWNjZXNzTmFt
ZXMoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYpOworICAgICAgICB2b2lkIHBvcFByaXZhdGVB
Y2Nlc3NOYW1lcygpOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgT3B0aW9uU2V0PENvZGVHZW5l
cmF0aW9uTW9kZT4gbV9jb2RlR2VuZXJhdGlvbk1vZGU7CiAKQEAgLTEyMTksNiArMTIzMyw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBWZWN0b3I8TGV4aWNhbFNjb3BlU3RhY2tFbnRyeT4g
bV9sZXhpY2FsU2NvcGVTdGFjazsKIAogICAgICAgICBWZWN0b3I8VERaTWFwPiBtX1REWlN0YWNr
OworICAgICAgICBWZWN0b3I8VmFyaWFibGVFbnZpcm9ubWVudDo6UHJpdmF0ZU5hbWVzPiBtX3By
aXZhdGVOYW1lc1N0YWNrOwogICAgICAgICBPcHRpb25hbDxzaXplX3Q+IG1fdmFyU2NvcGVMZXhp
Y2FsU2NvcGVTdGFja0luZGV4OwogICAgICAgICB2b2lkIHB1c2hURFpWYXJpYWJsZXMoY29uc3Qg
VmFyaWFibGVFbnZpcm9ubWVudCYsIFREWkNoZWNrT3B0aW1pemF0aW9uLCBURFpSZXF1aXJlbWVu
dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcAppbmRleCBlNjVhNWQzOThkYy4uZTc1ZDQyZDdhNDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTU1
Myw3ICs1NTMsNyBAQCBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZQogICAgIFByb3BlcnR5TGlzdE5v
ZGUqIHAgPSB0aGlzOwogICAgIFJlZ2lzdGVySUQqIGRzdCA9IG51bGxwdHI7CiAgICAgZm9yICg7
IHA7IHAgPSBwLT5tX25leHQpIHsKLSAgICAgICAgaWYgKCEocC0+bV9ub2RlLT5tX3R5cGUgJiBQ
cm9wZXJ0eU5vZGU6OlByaXZhdGUpKQorICAgICAgICBpZiAoIShwLT5tX25vZGUtPm1fdHlwZSAm
IFByb3BlcnR5Tm9kZTo6UHJpdmF0ZUZpZWxkKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAg
ICAgICAgIGRzdCA9IHAtPm1fbm9kZS0+aXNJbnN0YW5jZUNsYXNzUHJvcGVydHkoKSA/IHByb3Rv
dHlwZSA6IGRzdE9yQ29uc3RydWN0b3I7CkBAIC01NjgsNyArNTY4LDcgQEAgUmVnaXN0ZXJJRCog
UHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGUKICAgICAgICAgaWYgKHAtPmlzQ29tcHV0ZWRDbGFzc0ZpZWxkKCkpCiAgICAg
ICAgICAgICBlbWl0U2F2ZUNvbXB1dGVkRmllbGROYW1lKGdlbmVyYXRvciwgKnAtPm1fbm9kZSk7
CiAKLSAgICAgICAgaWYgKHAtPmlzSW5zdGFuY2VDbGFzc0ZpZWxkKCkpIHsKKyAgICAgICAgaWYg
KHAtPmlzSW5zdGFuY2VDbGFzc0ZpZWxkKCkgJiYgIShwLT5tX25vZGUtPnR5cGUoKSAmIFByb3Bl
cnR5Tm9kZTo6UHJpdmF0ZU1ldGhvZCkpIHsKICAgICAgICAgICAgIEFTU0VSVChpbnN0YW5jZUZp
ZWxkTG9jYXRpb25zKTsKICAgICAgICAgICAgIGluc3RhbmNlRmllbGRMb2NhdGlvbnMtPmFwcGVu
ZChwLT5wb3NpdGlvbigpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNzIzLDcgKzcyMyw3
IEBAIFJlZ2lzdGVySUQqIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlCiAKIHZvaWQgUHJvcGVydHlMaXN0Tm9kZTo6ZW1p
dFB1dENvbnN0YW50UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCogbmV3T2JqLCBQcm9wZXJ0eU5vZGUmIG5vZGUpCiB7Ci0gICAgaWYgKG5vZGUudHlwZSgp
ICYgUHJvcGVydHlOb2RlOjpQcml2YXRlKSB7CisgICAgaWYgKG5vZGUudHlwZSgpICYgUHJvcGVy
dHlOb2RlOjpQcml2YXRlRmllbGQpIHsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNyZWF0
ZVByaXZhdGVTeW1ib2wgPSBnZW5lcmF0b3IubW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwg
TGlua1RpbWVDb25zdGFudDo6Y3JlYXRlUHJpdmF0ZVN5bWJvbCk7CiAKICAgICAgICAgQ2FsbEFy
Z3VtZW50cyBhcmd1bWVudHMoZ2VuZXJhdG9yLCBudWxscHRyLCAwKTsKQEAgLTc1Miw2ICs3NTIs
MTQgQEAgdm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWcKIAogICAgIGlmIChub2RlLmlzQ2xhc3NQcm9w
ZXJ0eSgpKSB7CiAgICAgICAgIEFTU0VSVChub2RlLm5lZWRzU3VwZXJCaW5kaW5nKCkpOworCisg
ICAgICAgIGlmIChub2RlLnR5cGUoKSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0ZU1ldGhvZCkgewor
ICAgICAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKCpub2RlLm5hbWUo
KSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoZ2VuZXJhdG9yLnNjb3Bl
UmVnaXN0ZXIoKSwgdmFyLCB2YWx1ZS5nZXQoKSwgRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRp
YWxpemF0aW9uTW9kZTo6Q29uc3RJbml0aWFsaXphdGlvbik7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcGVydHlOYW1lUmVn
aXN0ZXI7CiAgICAgICAgIGlmIChub2RlLm5hbWUoKSkKICAgICAgICAgICAgIHByb3BlcnR5TmFt
ZSA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCAqbm9kZS5uYW1lKCkpOwogCkBAIC04NzQs
NiArODgyLDE2IEBAIFJlZ2lzdGVySUQqIERvdEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVyCiBSZWdpc3RlcklEKiBCYXNlRG90
Tm9kZTo6ZW1pdEdldFByb3BlcnR5VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWZQdHI8UmVnaXN0ZXJJRD4mIHRo
aXNWYWx1ZSkKIHsKICAgICBpZiAoaXNQcml2YXRlTmFtZSgpKSB7CisgICAgICAgIGlmIChnZW5l
cmF0b3IuaXNQcml2YXRlTWV0aG9kKGlkZW50aWZpZXIoKSkpIHsKKyAgICAgICAgICAgIFZhcmlh
YmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudGlmaWVyKCkpOworICAgICAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVs
bHB0ciwgdmFyKTsKKworICAgICAgICAgICAgUmVnaXN0ZXJJRCogcHJpdmF0ZUJyYW5kU3ltYm9s
ID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
LCBzY29wZS5nZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENoZWNrUHJpdmF0ZUJy
YW5kKGJhc2UsIHByaXZhdGVCcmFuZFN5bWJvbCk7CisKKyAgICAgICAgICAgIHJldHVybiBnZW5l
cmF0b3IuZW1pdEdldEZyb21TY29wZShkc3QsIHNjb3BlLmdldCgpLCB2YXIsIFRocm93SWZOb3RG
b3VuZCk7CisgICAgICAgIH0KKwogICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFy
aWFibGUobV9pZGVudCk7CiAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXZhci5sb2NhbCgp
LCAiUHJpdmF0ZSBGaWVsZCBuYW1lcyBtdXN0IGJlIHN0b3JlZCBpbiBjYXB0dXJlZCB2YXJpYWJs
ZXMiKTsKIApAQCAtOTAxLDYgKzkxOSwxNyBAQCBSZWdpc3RlcklEKiBCYXNlRG90Tm9kZTo6ZW1p
dEdldFByb3BlcnR5VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaQogUmVn
aXN0ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRQdXRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVmUHRyPFJl
Z2lzdGVySUQ+JiB0aGlzVmFsdWUpCiB7CiAgICAgaWYgKGlzUHJpdmF0ZU5hbWUoKSkgeworICAg
ICAgICBhdXRvIGlkZW50aWZpZXJOYW1lID0gaWRlbnRpZmllcigpOworICAgICAgICBpZiAoZ2Vu
ZXJhdG9yLmlzUHJpdmF0ZU1ldGhvZChpZGVudGlmaWVyTmFtZSkpIHsKKyAgICAgICAgICAgIFZh
cmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudGlmaWVyTmFtZSk7CisgICAgICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29w
ZShudWxscHRyLCB2YXIpOworCisgICAgICAgICAgICBSZWdpc3RlcklEKiBwcml2YXRlQnJhbmRT
eW1ib2wgPSBnZW5lcmF0b3IuZW1pdEdldFByaXZhdGVCcmFuZChnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCksIHNjb3BlLmdldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2hlY2tQcml2
YXRlQnJhbmQoYmFzZSwgcHJpdmF0ZUJyYW5kU3ltYm9sKTsKKworICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRUaHJvd1R5cGVFcnJvcigiVHJ5aW5nIHRvIGFjY2VzcyBhIG5vdCBkZWZpbmVkIHBy
aXZhdGUgc2V0dGVyIik7CisgICAgICAgIH0KKwogICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5l
cmF0b3IudmFyaWFibGUobV9pZGVudCk7CiAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXZh
ci5sb2NhbCgpLCAiUHJpdmF0ZSBGaWVsZCBuYW1lcyBtdXN0IGJlIHN0b3JlZCBpbiBjYXB0dXJl
ZCB2YXJpYWJsZXMiKTsKIApAQCAtMTA1NCwxMiArMTA4MywxNCBAQCBSZWdpc3RlcklEKiBGdW5j
dGlvbkNhbGxWYWx1ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZQogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUaGlzVG9BcnJvd0Z1bmN0aW9u
Q29udGV4dFNjb3BlKCk7CiAKICAgICAgICAgLy8gSW5pdGlhbGl6ZSBpbnN0YW5jZSBmaWVsZHMg
YWZ0ZXIgc3VwZXItY2FsbC4KKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVByaXZhdGVDbGFzc0Zp
ZWxkcygpICYmIGdlbmVyYXRvci5wcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpID09IFByaXZhdGVC
cmFuZFJlcXVpcmVtZW50OjpOZWVkZWQpCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEluc3Rh
bGxQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpKTsKKwogICAgICAgICBpZiAo
T3B0aW9uczo6dXNlUHVibGljQ2xhc3NGaWVsZHMoKSAmJiBnZW5lcmF0b3IubmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIoKSA9PSBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6WWVzKSB7CiAg
ICAgICAgICAgICBBU1NFUlQoZ2VuZXJhdG9yLmlzQ29uc3RydWN0b3IoKSB8fCBnZW5lcmF0b3Iu
aXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkpOwogICAgICAgICAgICAgZnVuYyA9IGdlbmVy
YXRvci5lbWl0TG9hZERlcml2ZWRDb25zdHJ1Y3RvcigpOwogICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRJbnN0YW5jZUZpZWxkSW5pdGlhbGl6YXRpb25JZk5lZWRlZChnZW5lcmF0b3IudGhpc1Jl
Z2lzdGVyKCksIGZ1bmMuZ2V0KCksIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7
CiAgICAgICAgIH0KLQogICAgICAgICByZXR1cm4gcmV0OwogICAgIH0KIApAQCAtNDQ4Niw2ICs0
NTE3LDEzIEBAIFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAgICAgaWYgKG1fbmVlZHNMZXhpY2Fs
U2NvcGUpCiAgICAgICAgIGdlbmVyYXRvci5wdXNoTGV4aWNhbFNjb3BlKHRoaXMsIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpURFpDaGVja09wdGltaXphdGlvbjo6T3B0aW1pemUsIEJ5dGVjb2RlR2VuZXJh
dG9yOjpOZXN0ZWRTY29wZVR5cGU6OklzTmVzdGVkKTsKIAorICAgIGJvb2wgaGFzUHJpdmF0ZU5h
bWVzID0gISFtX2xleGljYWxWYXJpYWJsZXMucHJpdmF0ZU5hbWVzU2l6ZSgpOworICAgIGJvb2wg
c2hvdWxkRW1pdFByaXZhdGVCcmFuZCA9IG1fbGV4aWNhbFZhcmlhYmxlcy5oYXNQcml2YXRlQWNj
ZXNzKCk7CisgICAgaWYgKGhhc1ByaXZhdGVOYW1lcykKKyAgICAgICAgZ2VuZXJhdG9yLnB1c2hQ
cml2YXRlQWNjZXNzTmFtZXMobV9sZXhpY2FsVmFyaWFibGVzKTsKKyAgICBpZiAoc2hvdWxkRW1p
dFByaXZhdGVCcmFuZCkKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRDcmVhdGVQcml2YXRlQnJhbmQo
Z2VuZXJhdG9yLnNjb3BlUmVnaXN0ZXIoKSwgbV9wb3NpdGlvbiwgbV9wb3NpdGlvbiwgbV9wb3Np
dGlvbik7CisKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3VwZXJjbGFzczsKICAgICBpZiAobV9j
bGFzc0hlcml0YWdlKSB7CiAgICAgICAgIHN1cGVyY2xhc3MgPSBnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCk7CkBAIC00NDk2LDE3ICs0NTM0LDE4IEBAIFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAg
ICAgYm9vbCBuZWVkc0hvbWVPYmplY3QgPSBmYWxzZTsKIAogICAgIGF1dG8gbmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIgPSB0aGlzLT5oYXNJbnN0YW5jZUZpZWxkcygpID8gTmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXI6OlllcyA6IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObzsKLQor
ICAgIGF1dG8gcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBzaG91bGRFbWl0UHJpdmF0ZUJyYW5k
ID8gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5lZWRlZCA6IFByaXZhdGVCcmFuZFJlcXVpcmVt
ZW50OjpOb25lOwogICAgIGlmIChtX2NvbnN0cnVjdG9yRXhwcmVzc2lvbikgewogICAgICAgICBB
U1NFUlQobV9jb25zdHJ1Y3RvckV4cHJlc3Npb24tPmlzRnVuY0V4cHJOb2RlKCkpOwogICAgICAg
ICBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbWV0YWRhdGEgPSBzdGF0aWNfY2FzdDxGdW5jRXhwck5v
ZGUqPihtX2NvbnN0cnVjdG9yRXhwcmVzc2lvbiktPm1ldGFkYXRhKCk7CiAgICAgICAgIG1ldGFk
YXRhLT5zZXRFY21hTmFtZShlY21hTmFtZSgpKTsKICAgICAgICAgbWV0YWRhdGEtPnNldENsYXNz
U291cmNlKG1fY2xhc3NTb3VyY2UpOwogICAgICAgICBtZXRhZGF0YS0+c2V0TmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIobmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPT0gTmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXI6Olllcyk7CisgICAgICAgIG1ldGFkYXRhLT5zZXRQcml2YXRlQnJhbmRS
ZXF1aXJlbWVudChwcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7CiAgICAgICAgIGNvbnN0cnVjdG9y
ID0gZ2VuZXJhdG9yLmVtaXROb2RlKGNvbnN0cnVjdG9yLmdldCgpLCBtX2NvbnN0cnVjdG9yRXhw
cmVzc2lvbik7CiAgICAgICAgIG5lZWRzSG9tZU9iamVjdCA9IG1fY2xhc3NIZXJpdGFnZSB8fCBt
ZXRhZGF0YS0+c3VwZXJCaW5kaW5nKCkgPT0gU3VwZXJCaW5kaW5nOjpOZWVkZWQ7CiAgICAgfSBl
bHNlCi0gICAgICAgIGNvbnN0cnVjdG9yID0gZ2VuZXJhdG9yLmVtaXROZXdEZWZhdWx0Q29uc3Ry
dWN0b3IoY29uc3RydWN0b3IuZ2V0KCksIG1fY2xhc3NIZXJpdGFnZSA/IENvbnN0cnVjdG9yS2lu
ZDo6RXh0ZW5kcyA6IENvbnN0cnVjdG9yS2luZDo6QmFzZSwgbV9uYW1lLCBlY21hTmFtZSgpLCBt
X2NsYXNzU291cmNlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcik7CisgICAgICAgIGNvbnN0
cnVjdG9yID0gZ2VuZXJhdG9yLmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoY29uc3RydWN0b3Iu
Z2V0KCksIG1fY2xhc3NIZXJpdGFnZSA/IENvbnN0cnVjdG9yS2luZDo6RXh0ZW5kcyA6IENvbnN0
cnVjdG9yS2luZDo6QmFzZSwgbV9uYW1lLCBlY21hTmFtZSgpLCBtX2NsYXNzU291cmNlLCBuZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplciwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOwogCiAgICAg
Y29uc3QgYXV0byYgcHJvcGVydHlOYW1lcyA9IGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCk7CiAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3RvdHlwZSA9IGdlbmVyYXRvci5lbWl0TmV3T2JqZWN0
KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSk7CkBAIC00NTc2LDYgKzQ2MTUsOSBAQCBSZWdpc3Rl
cklEKiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRAogICAgICAgICBnZW5lcmF0b3IucG9wTGV4aWNhbFNjb3BlKHRoaXMp
OwogICAgIH0KIAorICAgIGlmIChoYXNQcml2YXRlTmFtZXMpCisgICAgICAgIGdlbmVyYXRvci5w
b3BQcml2YXRlQWNjZXNzTmFtZXMoKTsKKwogICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShnZW5l
cmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIGNvbnN0cnVjdG9yLmdldCgpKSwgY29uc3RydWN0
b3IuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2Vy
L0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAppbmRleCBjM2Q0YzNmOTQ2My4uZTE3ZWU5YmM3MTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFt
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZy
YW1lLmNwcApAQCAtMjUzLDcgKzI1Myw3IEBAIEpTVmFsdWUgRGVidWdnZXJDYWxsRnJhbWU6OmV2
YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBKU09iCiAgICAg
VmFyaWFibGVFbnZpcm9ubWVudCB2YXJpYWJsZXNVbmRlclREWjsKICAgICBKU1Njb3BlOjpjb2xs
ZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKHNjb3BlKCktPmpzU2NvcGUoKSwgdmFyaWFibGVz
VW5kZXJURFopOwogCi0gICAgYXV0byogZXZhbCA9IERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVh
dGUoZ2xvYmFsT2JqZWN0LCBtYWtlU291cmNlKHNjcmlwdCwgY2FsbEZyYW1lLT5jYWxsZXJTb3Vy
Y2VPcmlnaW4odm0pKSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgY29kZUJsb2NrLT51bmxp
bmtlZENvZGVCbG9jaygpLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgY29kZUJsb2NrLT51bmxpbmtl
ZENvZGVCbG9jaygpLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBjb2RlQmxvY2stPnVu
bGlua2VkQ29kZUJsb2NrKCktPmlzQXJyb3dGdW5jdGlvbigpLCBldmFsQ29udGV4dFR5cGUsICZ2
YXJpYWJsZXNVbmRlclREWik7CisgICAgYXV0byogZXZhbCA9IERpcmVjdEV2YWxFeGVjdXRhYmxl
OjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtYWtlU291cmNlKHNjcmlwdCwgY2FsbEZyYW1lLT5jYWxs
ZXJTb3VyY2VPcmlnaW4odm0pKSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgY29kZUJsb2Nr
LT51bmxpbmtlZENvZGVCbG9jaygpLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgY29kZUJsb2NrLT51
bmxpbmtlZENvZGVCbG9jaygpLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBjb2RlQmxv
Y2stPnVubGlua2VkQ29kZUJsb2NrKCktPnByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCksIGNvZGVC
bG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+aXNBcnJvd0Z1bmN0aW9uKCksIGV2YWxDb250ZXh0
VHlwZSwgJnZhcmlhYmxlc1VuZGVyVERaKTsKICAgICBpZiAoVU5MSUtFTFkoY2F0Y2hTY29wZS5l
eGNlcHRpb24oKSkpIHsKICAgICAgICAgZXhjZXB0aW9uID0gY2F0Y2hTY29wZS5leGNlcHRpb24o
KTsKICAgICAgICAgY2F0Y2hTY29wZS5jbGVhckV4Y2VwdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggYmYyOTg0YTEy
ODkuLjJhMWJiN2Y2MDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCBKU1ZhbHVlIGV2YWwoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgICAg
IAogICAgICAgICBWYXJpYWJsZUVudmlyb25tZW50IHZhcmlhYmxlc1VuZGVyVERaOwogICAgICAg
ICBKU1Njb3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKGNhbGxlclNjb3BlQ2hh
aW4sIHZhcmlhYmxlc1VuZGVyVERaKTsKLSAgICAgICAgZXZhbCA9IERpcmVjdEV2YWxFeGVjdXRh
YmxlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtYWtlU291cmNlKHByb2dyYW1Tb3VyY2UsIGNhbGxl
ckNvZGVCbG9jay0+c291cmNlKCkucHJvdmlkZXIoKS0+c291cmNlT3JpZ2luKCkpLCBjYWxsZXJD
b2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpLCBkZXJpdmVkQ29udGV4dFR5cGUsIGNhbGxlclVubGlu
a2VkQ29kZUJsb2NrLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBpc0Fycm93RnVuY3Rp
b25Db250ZXh0LCBldmFsQ29udGV4dFR5cGUsICZ2YXJpYWJsZXNVbmRlclREWik7CisgICAgICAg
IGV2YWwgPSBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgbWFrZVNv
dXJjZShwcm9ncmFtU291cmNlLCBjYWxsZXJDb2RlQmxvY2stPnNvdXJjZSgpLnByb3ZpZGVyKCkt
PnNvdXJjZU9yaWdpbigpKSwgY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgZGVyaXZl
ZENvbnRleHRUeXBlLCBjYWxsZXJVbmxpbmtlZENvZGVCbG9jay0+bmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIoKSwgY2FsbGVyVW5saW5rZWRDb2RlQmxvY2stPnByaXZhdGVCcmFuZFJlcXVpcmVt
ZW50KCksIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGV2YWxDb250ZXh0VHlwZSwgJnZhcmlhYmxl
c1VuZGVyVERaKTsKICAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigp
ID09ICFldmFsKTsKICAgICAgICAgaWYgKCFldmFsKQogICAgICAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4IDUzMjc1
M2E5MmRmLi5mMGIxYzQxODYwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9MZXhlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5j
cHAKQEAgLTEwODksMjAgKzEwODksMjEgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRl
bnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxVQ2hhcj46OnAKICAgICB9
IGVsc2UKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IG51bGxwdHI7CiAgICAgCisgICAgYXV0
byBpZGVudFR5cGUgPSBpc1ByaXZhdGVOYW1lID8gUFJJVkFURU5BTUUgOiBJREVOVDsKICAgICBp
ZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhbGV4ZXJGbGFncy5j
b250YWlucyhMZXhlckZsYWdzOjpJZ25vcmVSZXNlcnZlZFdvcmRzKSkgJiYgIWlzQnVpbHRpbk5h
bWUpIHsKICAgICAgICAgQVNTRVJUKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpOwogICAgICAgICBp
ZiAocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpIHsKICAgICAgICAgICAgIGNvbnN0IEhhc2hU
YWJsZVZhbHVlKiBlbnRyeSA9IEpTQzo6bWFpblRhYmxlLmVudHJ5KCppZGVudCk7CiAgICAgICAg
ICAgICBBU1NFUlQoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSB8fCAhZW50cnkpOwogICAg
ICAgICAgICAgaWYgKCFlbnRyeSkKLSAgICAgICAgICAgICAgICByZXR1cm4gSURFTlQ7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGlkZW50VHlwZTsKICAgICAgICAgICAgIEpTVG9rZW5UeXBlIHRv
a2VuID0gc3RhdGljX2Nhc3Q8SlNUb2tlblR5cGU+KGVudHJ5LT5sZXhlclZhbHVlKCkpOwotICAg
ICAgICAgICAgcmV0dXJuICh0b2tlbiAhPSBSRVNFUlZFRF9JRl9TVFJJQ1QpIHx8IHN0cmljdE1v
ZGUgPyB0b2tlbiA6IElERU5UOworICAgICAgICAgICAgcmV0dXJuICh0b2tlbiAhPSBSRVNFUlZF
RF9JRl9TVFJJQ1QpIHx8IHN0cmljdE1vZGUgPyB0b2tlbiA6IGlkZW50VHlwZTsKICAgICAgICAg
fQotICAgICAgICByZXR1cm4gSURFTlQ7CisgICAgICAgIHJldHVybiBpZGVudFR5cGU7CiAgICAg
fQogCi0gICAgcmV0dXJuIElERU5UOworICAgIHJldHVybiBpZGVudFR5cGU7CiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHRlbXBsYXRlPGJvb2wgc2hvdWxkQ3JlYXRlSWRl
bnRpZmllcj4gSlNUb2tlblR5cGUgTGV4ZXI8Q2hhcmFjdGVyVHlwZT46OnBhcnNlSWRlbnRpZmll
clNsb3dDYXNlKEpTVG9rZW5EYXRhKiB0b2tlbkRhdGEsIE9wdGlvblNldDxMZXhlckZsYWdzPiBs
ZXhlckZsYWdzLCBib29sIHN0cmljdE1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZXMuY3BwCmluZGV4IDExYmY0YTY4NGExLi5hMjU5M2Y1YTZlMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2Rlcy5jcHAKQEAgLTIwMiw2ICsyMDIsNyBAQCBGdW5jdGlvbk1ldGFkYXRh
Tm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUoCiAgICAgICAgICwgbV9jb25zdHJ1Y3RvcktpbmQo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCiAgICAgICAgICwgbV9uZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXI6Ok5vKSkKICAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbkJvZHlFeHBy
ZXNzaW9uKGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQorICAgICAgICAsIG1fcHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByaXZhdGVCcmFuZFJlcXVp
cmVtZW50OjpOb25lKSkKICAgICAgICAgLCBtX3BhcnNlTW9kZShtb2RlKQogICAgICAgICAsIG1f
c3RhcnRDb2x1bW4oc3RhcnRDb2x1bW4pCiAgICAgICAgICwgbV9lbmRDb2x1bW4oZW5kQ29sdW1u
KQpAQCAtMjI2LDYgKzIyNyw3IEBAIEZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpGdW5jdGlvbk1ldGFk
YXRhTm9kZSgKICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oY29uc3RydWN0b3JLaW5kKSkKICAgICAgICAgLCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8p
KQogICAgICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24oaXNBcnJvd0Z1bmN0
aW9uQm9keUV4cHJlc3Npb24pCisgICAgICAgICwgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmUpKQogICAg
ICAgICAsIG1fcGFyc2VNb2RlKG1vZGUpCiAgICAgICAgICwgbV9zdGFydENvbHVtbihzdGFydENv
bHVtbikKICAgICAgICAgLCBtX2VuZENvbHVtbihlbmRDb2x1bW4pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVzLmgKaW5kZXggMjYzZjY1ZmQyZTYuLjhiOTQ2YmRhYmMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC03MTMsNyArNzEzLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgZW51bSBjbGFzcyBDbGFzc0VsZW1lbnRUYWcgOiB1aW50OF90IHsgTm8sIEluc3Rh
bmNlLCBTdGF0aWMsIExhc3RUYWcgfTsKICAgICBjbGFzcyBQcm9wZXJ0eU5vZGUgZmluYWwgOiBw
dWJsaWMgUGFyc2VyQXJlbmFGcmVlYWJsZSB7CiAgICAgcHVibGljOgotICAgICAgICBlbnVtIFR5
cGUgOiB1aW50OF90IHsgQ29uc3RhbnQgPSAxLCBHZXR0ZXIgPSAyLCBTZXR0ZXIgPSA0LCBDb21w
dXRlZCA9IDgsIFNob3J0aGFuZCA9IDE2LCBTcHJlYWQgPSAzMiwgUHJpdmF0ZSA9IDY0IH07Cisg
ICAgICAgIGVudW0gVHlwZSA6IHVpbnQ4X3QgeyBDb25zdGFudCA9IDEsIEdldHRlciA9IDIsIFNl
dHRlciA9IDQsIENvbXB1dGVkID0gOCwgU2hvcnRoYW5kID0gMTYsIFNwcmVhZCA9IDMyLCBQcml2
YXRlRmllbGQgPSA2NCwgUHJpdmF0ZU1ldGhvZCA9IDEyOCB9OwogICAgICAgICBlbnVtIFB1dFR5
cGUgOiB1aW50OF90IHsgVW5rbm93biwgS25vd25EaXJlY3QgfTsKIAogICAgICAgICBQcm9wZXJ0
eU5vZGUoY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiwgVHlwZSwgUHV0VHlwZSwg
U3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcpOwpAQCAtNzMyLDcgKzczMiw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBib29sIGlzQ2xhc3NGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGlz
Q2xhc3NQcm9wZXJ0eSgpICYmICFuZWVkc1N1cGVyQmluZGluZygpOyB9CiAgICAgICAgIGJvb2wg
aXNJbnN0YW5jZUNsYXNzRmllbGQoKSBjb25zdCB7IHJldHVybiBpc0luc3RhbmNlQ2xhc3NQcm9w
ZXJ0eSgpICYmICFuZWVkc1N1cGVyQmluZGluZygpOyB9CiAgICAgICAgIGJvb2wgaXNPdmVycmlk
ZGVuQnlEdXBsaWNhdGUoKSBjb25zdCB7IHJldHVybiBtX2lzT3ZlcnJpZGRlbkJ5RHVwbGljYXRl
OyB9Ci0gICAgICAgIGJvb2wgaXNQcml2YXRlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlICYgUHJp
dmF0ZTsgfQorICAgICAgICBib29sIGlzUHJpdmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSAm
IChQcml2YXRlRmllbGQgfCBQcml2YXRlTWV0aG9kKTsgfQogICAgICAgICBib29sIGhhc0NvbXB1
dGVkTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXhwcmVzc2lvbjsgfQogICAgICAgICBib29sIGlz
Q29tcHV0ZWRDbGFzc0ZpZWxkKCkgY29uc3QgeyByZXR1cm4gaXNDbGFzc0ZpZWxkKCkgJiYgaGFz
Q29tcHV0ZWROYW1lKCk7IH0KICAgICAgICAgdm9pZCBzZXRJc092ZXJyaWRkZW5CeUR1cGxpY2F0
ZSgpIHsgbV9pc092ZXJyaWRkZW5CeUR1cGxpY2F0ZSA9IHRydWU7IH0KQEAgLTc0Myw3ICs3NDMs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogbV9uYW1lOwog
ICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9leHByZXNzaW9uOwogICAgICAgICBFeHByZXNzaW9u
Tm9kZSogbV9hc3NpZ247Ci0gICAgICAgIHVuc2lnbmVkIG1fdHlwZSA6IDc7CisgICAgICAgIHVu
c2lnbmVkIG1fdHlwZTsKICAgICAgICAgdW5zaWduZWQgbV9uZWVkc1N1cGVyQmluZGluZyA6IDE7
CiAgICAgICAgIHVuc2lnbmVkIG1fcHV0VHlwZSA6IDE7CiAgICAgICAgIHN0YXRpY19hc3NlcnQo
MSA8PCAyID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENsYXNzRWxlbWVudFRhZzo6TGFzdFRhZyks
ICJDbGFzc0VsZW1lbnRUYWcgc2hvdWxkbid0IHVzZSBtb3JlIHRoYW4gdHdvIGJpdHMiKTsKQEAg
LTIwODYsNiArMjA4Niw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHNldEVjbWFO
YW1lKGNvbnN0IElkZW50aWZpZXImIGVjbWFOYW1lKSB7IG1fZWNtYU5hbWUgPSBlY21hTmFtZTsg
fQogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBlY21hTmFtZSgpIHsgcmV0dXJuIG1faWRlbnQu
aXNFbXB0eSgpID8gbV9lY21hTmFtZSA6IG1faWRlbnQ7IH0KIAorICAgICAgICB2b2lkIHNldFBy
aXZhdGVCcmFuZFJlcXVpcmVtZW50KFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50KSB7IG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4ocHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOyB9CisgICAgICAgIFByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ+KG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOyB9
CisKICAgICAgICAgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSgpIHsgcmV0dXJuIG1fZnVuY3Rp
b25Nb2RlOyB9CiAKICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0KCkgY29uc3QgeyByZXR1
cm4gbV9mdW5jdGlvbk5hbWVTdGFydDsgfQpAQCAtMjEzNCw2ICsyMTM3LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKICAgICAgICAg
dW5zaWduZWQgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA6IDE7CiAgICAgICAgIHVuc2ln
bmVkIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gOiAxOworICAgICAgICB1bnNpZ25l
ZCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsKICAgICAgICAgU291cmNlUGFyc2VNb2Rl
IG1fcGFyc2VNb2RlOwogICAgICAgICBGdW5jdGlvbk1vZGUgbV9mdW5jdGlvbk1vZGU7CiAgICAg
ICAgIElkZW50aWZpZXIgbV9pZGVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmNwcAppbmRleCBjMDYxMTg3N2I4NS4uMjVhODU5ZTRhMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI5NDYsMTUgKzI5NDYsMjAgQEAgcGFyc2VNZXRob2Q6
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQUklWQVRFTkFNRTogewogICAgICAg
ICAgICAgQVNTRVJUKE9wdGlvbnM6OnVzZVByaXZhdGVDbGFzc0ZpZWxkcygpKTsKLSAgICAgICAg
ICAgIEpTVG9rZW4gdG9rZW4gPSBtX3Rva2VuOwogICAgICAgICAgICAgaWRlbnQgPSBtX3Rva2Vu
Lm1fZGF0YS5pZGVudDsKICAgICAgICAgICAgIGZhaWxJZlRydWUodGFnID09IENsYXNzRWxlbWVu
dFRhZzo6U3RhdGljLCAiU3RhdGljIGNsYXNzIGVsZW1lbnQgY2Fubm90IGJlIHByaXZhdGUiKTsK
ICAgICAgICAgICAgIGZhaWxJZlRydWUoaXNHZXR0ZXIgfHwgaXNTZXR0ZXIsICJDYW5ub3QgcGFy
c2UgY2xhc3MgbWV0aG9kIHdpdGggcHJpdmF0ZSBuYW1lIik7CiAgICAgICAgICAgICBBU1NFUlQo
aWRlbnQpOwogICAgICAgICAgICAgbmV4dCgpOwotICAgICAgICAgICAgZmFpbElmVHJ1ZShtYXRj
aEFuZFVwZGF0ZShPUEVOUEFSRU4sIHRva2VuKSwgIkNhbm5vdCBwYXJzZSBjbGFzcyBtZXRob2Qg
d2l0aCBwcml2YXRlIG5hbWUiKTsKLSAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShjbGFz
c1Njb3BlLT5kZWNsYXJlUHJpdmF0ZU5hbWUoKmlkZW50KSAmIERlY2xhcmF0aW9uUmVzdWx0OjpJ
bnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb24sICJDYW5ub3QgZGVjbGFyZSBwcml2YXRlIGZpZWxk
IHR3aWNlIik7Ci0gICAgICAgICAgICB0eXBlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpU
eXBlPih0eXBlIHwgUHJvcGVydHlOb2RlOjpQcml2YXRlKTsKKyAgICAgICAgICAgIGlmIChPcHRp
b25zOjp1c2VQcml2YXRlQ2xhc3NGaWVsZHMoKSAmJiBtYXRjaChPUEVOUEFSRU4pKSB7CisgICAg
ICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGNsYXNzU2NvcGUtPmRlY2xhcmVQcml2YXRl
TWV0aG9kKCppZGVudCkgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xh
cmF0aW9uLCAiQ2Fubm90IGRlY2xhcmUgcHJpdmF0ZSBtZXRob2QgdHdpY2UiKTsKKyAgICAgICAg
ICAgICAgICB0eXBlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlIHwgUHJv
cGVydHlOb2RlOjpQcml2YXRlTWV0aG9kKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaChPUEVOUEFSRU4pLCAiQ2Fu
bm90IHBhcnNlIGNsYXNzIG1ldGhvZCB3aXRoIHByaXZhdGUgbmFtZSIpOworICAgICAgICAgICAg
c2VtYW50aWNGYWlsSWZUcnVlKGNsYXNzU2NvcGUtPmRlY2xhcmVQcml2YXRlRmllbGQoKmlkZW50
KSAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb24sICJDYW5u
b3QgZGVjbGFyZSBwcml2YXRlIGZpZWxkIHR3aWNlIik7CisgICAgICAgICAgICB0eXBlID0gc3Rh
dGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlIHwgUHJvcGVydHlOb2RlOjpQcml2YXRl
RmllbGQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDViYzQ2MzA3YTI1Li41OGY3
MmY2ZGM2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC01MDcsMTEg
KzUwNywyOCBAQCBwdWJsaWM6CiAgICAgICAgIG1fbGV4aWNhbFZhcmlhYmxlcy51c2VQcml2YXRl
TmFtZShpZGVudCk7CiAgICAgfQogCi0gICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmVQ
cml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICBEZWNsYXJhdGlvblJlc3Vs
dE1hc2sgZGVjbGFyZVByaXZhdGVNZXRob2QoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiAgICAg
ewogICAgICAgICBBU1NFUlQobV9hbGxvd3NMZXhpY2FsRGVjbGFyYXRpb25zKTsKICAgICAgICAg
RGVjbGFyYXRpb25SZXN1bHRNYXNrIHJlc3VsdCA9IERlY2xhcmF0aW9uUmVzdWx0OjpWYWxpZDsK
LSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2xleGljYWxWYXJpYWJsZXMuZGVjbGFyZVByaXZh
dGVOYW1lKGlkZW50KTsKKyAgICAgICAgYm9vbCBhZGRSZXN1bHQgPSBtX2xleGljYWxWYXJpYWJs
ZXMuZGVjbGFyZVByaXZhdGVNZXRob2QoaWRlbnQpOworCisgICAgICAgIGlmICghYWRkUmVzdWx0
KSB7CisgICAgICAgICAgICByZXN1bHQgfD0gRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBs
aWNhdGVEZWNsYXJhdGlvbjsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0K
KworICAgICAgICB1c2VWYXJpYWJsZSgmaWRlbnQsIGZhbHNlKTsKKyAgICAgICAgYWRkQ2xvc2Vk
VmFyaWFibGVDYW5kaWRhdGVVbmNvbmRpdGlvbmFsbHkoaWRlbnQuaW1wbCgpKTsKKworICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNs
YXJlUHJpdmF0ZUZpZWxkKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorICAgIHsKKyAgICAgICAg
QVNTRVJUKG1fYWxsb3dzTGV4aWNhbERlY2xhcmF0aW9ucyk7CisgICAgICAgIERlY2xhcmF0aW9u
UmVzdWx0TWFzayByZXN1bHQgPSBEZWNsYXJhdGlvblJlc3VsdDo6VmFsaWQ7CisgICAgICAgIGF1
dG8gYWRkUmVzdWx0ID0gbV9sZXhpY2FsVmFyaWFibGVzLmRlY2xhcmVQcml2YXRlRmllbGQoaWRl
bnQpOwogICAgICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAgcmVz
dWx0IHw9IERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb247CiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlck1vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ck1vZGVzLmgKaW5kZXggNjQxMzEyY2NjOWIuLmNlODYwNDcxM2ViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCkBAIC0zNyw2ICszNyw4IEBAIGVudW0gY2xh
c3MgSlNQYXJzZXJTY3JpcHRNb2RlIHsgQ2xhc3NpYywgTW9kdWxlIH07CiAKIGVudW0gY2xhc3Mg
U3VwZXJCaW5kaW5nIHsgTmVlZGVkLCBOb3ROZWVkZWQgfTsKIAorZW51bSBjbGFzcyBQcml2YXRl
QnJhbmRSZXF1aXJlbWVudCB7IE5vbmUsIE5lZWRlZCB9OworCiBlbnVtIGNsYXNzIENvZGVHZW5l
cmF0aW9uTW9kZSA6IHVpbnQ4X3QgewogICAgIERlYnVnZ2VyID0gMSA8PCAwLAogICAgIFR5cGVQ
cm9maWxlciA9IDEgPDwgMSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwCmluZGV4IDFmNTcwODhhMzRjLi40Y2I5MGM3MWJlOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25t
ZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJv
bm1lbnQuY3BwCkBAIC0xMDcsNiArMTA3LDQxIEBAIHZvaWQgVmFyaWFibGVFbnZpcm9ubWVudDo6
bWFya1ZhcmlhYmxlQXNFeHBvcnRlZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+CiAg
ICAgZmluZFJlc3VsdC0+dmFsdWUuc2V0SXNFeHBvcnRlZCgpOwogfQogCitib29sIFZhcmlhYmxl
RW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlTWV0aG9kKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3Ry
aW5nSW1wbD4mIGlkZW50aWZpZXIpCit7CisgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICBt
X3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0
YT4oKTsKKworICAgIGF1dG8gZmluZFJlc3VsdCA9IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVz
LmZpbmQoaWRlbnRpZmllcik7CisKKyAgICBpZiAoZmluZFJlc3VsdCA9PSBtX3JhcmVEYXRhLT5t
X3ByaXZhdGVOYW1lcy5lbmQoKSkgeworICAgICAgICBQcml2YXRlTmFtZUVudHJ5IG1ldGEoUHJp
dmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc0RlY2xhcmVkIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJh
aXRzOjpJc01ldGhvZCk7CisKKyAgICAgICAgYXV0byBlbnRyeSA9IFZhcmlhYmxlRW52aXJvbm1l
bnRFbnRyeSgpOworICAgICAgICBlbnRyeS5zZXRJc1ByaXZhdGVNZXRob2QoKTsKKyAgICAgICAg
ZW50cnkuc2V0SXNDb25zdCgpOworICAgICAgICBlbnRyeS5zZXRJc0NhcHR1cmVkKCk7CisgICAg
ICAgIG1fbWFwLmFkZChpZGVudGlmaWVyLCBlbnRyeSk7CisKKyAgICAgICAgYXV0byBhZGRSZXN1
bHQgPSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoaWRlbnRpZmllciwgbWV0YSk7Cisg
ICAgICAgIHJldHVybiBhZGRSZXN1bHQuaXNOZXdFbnRyeTsKKyAgICB9CisKKyAgICBpZiAoZmlu
ZFJlc3VsdC0+dmFsdWUuaXNEZWNsYXJlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7IC8vIEVy
cm9yOiBkZWNsYXJpbmcgYSBkdXBsaWNhdGUgcHJpdmF0ZSBuYW1lLgorCisgICAgYXV0byBlbnRy
eSA9IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpOworICAgIGVudHJ5LnNldElzUHJpdmF0ZU1l
dGhvZCgpOworICAgIGVudHJ5LnNldElzQ29uc3QoKTsKKyAgICBlbnRyeS5zZXRJc0NhcHR1cmVk
KCk7CisgICAgbV9tYXAuYWRkKGlkZW50aWZpZXIsIGVudHJ5KTsKKworICAgIC8vIGl0IHdhcyBw
cmV2aW91c2x5IHVzZWQsIG1hcmsgaXQgYXMgZGVjbGFyZWQuCisgICAgUHJpdmF0ZU5hbWVFbnRy
eSBtZXRhKFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNEZWNsYXJlZCB8IFByaXZhdGVOYW1l
RW50cnk6OlRyYWl0czo6SXNVc2VkIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc01ldGhv
ZCk7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5zZXQo
aWRlbnRpZmllciwgbWV0YSk7CisgICAgcmV0dXJuICFhZGRSZXN1bHQuaXNOZXdFbnRyeTsKK30K
KwogQ29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQ6OkNvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50
KGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGVudikKICAgICA6IG1faXNFdmVyeXRoaW5nQ2Fw
dHVyZWQoZW52LmlzRXZlcnl0aGluZ0NhcHR1cmVkKCkpCiB7CkBAIC0xMjAsNiArMTU1LDI1IEBA
IENvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50OjpDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudChj
b25zdCBWYXJpYWJsZUVudmlyb25tZW50CiAgICAgfSk7CiAKICAgICBtX2hhc2ggPSAwOworICAg
IGlmIChlbnYucHJpdmF0ZU5hbWVzU2l6ZSgpKSB7CisgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8
VW5pcXVlZFN0cmluZ0ltcGwqLCBQcml2YXRlTmFtZUVudHJ5PiwgMTY+IHNvcnRlZFByaXZhdGVF
bnRyaWVzOworICAgICAgICBzb3J0ZWRQcml2YXRlRW50cmllcy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KGVudi5wcml2YXRlTmFtZXNTaXplKCkpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVu
dHJpZXMgOiBlbnYucHJpdmF0ZU5hbWVzKCkpCisgICAgICAgICAgICBzb3J0ZWRQcml2YXRlRW50
cmllcy5hcHBlbmQoe2VudHJpZXMua2V5LmdldCgpLCBlbnRyaWVzLnZhbHVlfSk7CisKKyAgICAg
ICAgc3RkOjpzb3J0KHNvcnRlZFByaXZhdGVFbnRyaWVzLmJlZ2luKCksIHNvcnRlZFByaXZhdGVF
bnRyaWVzLmVuZCgpLCBbXSAoY29uc3QgYXV0byYgYSwgY29uc3QgYXV0byYgYikgeworICAgICAg
ICAgICAgcmV0dXJuIGEuZmlyc3QgPCBiLmZpcnN0OworICAgICAgICB9KTsKKworICAgICAgICBt
X3ByaXZhdGVBY2Nlc3NOYW1lcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGVudi5wcml2YXRlTmFt
ZXNTaXplKCkpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBzb3J0ZWRQcml2YXRl
RW50cmllcykgeworICAgICAgICAgICAgbV9wcml2YXRlQWNjZXNzTmFtZXMuYXBwZW5kKHBhaXIu
Zmlyc3QpOworICAgICAgICAgICAgbV9wcml2YXRlTmFtZU1ldGFkYXRhLmFwcGVuZChwYWlyLnNl
Y29uZCk7CisgICAgICAgICAgICBtX2hhc2ggXj0gcGFpci5maXJzdC0+aGFzaCgpOworICAgICAg
ICAgICAgbV9oYXNoICs9IHBhaXIuc2Vjb25kLmJpdHMoKTsKKyAgICAgICAgfQorICAgIH0KKwog
ICAgIG1fdmFyaWFibGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc29ydGVkRW50cmllcy5zaXpl
KCkpOwogICAgIG1fdmFyaWFibGVNZXRhZGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNvcnRl
ZEVudHJpZXMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBzb3J0ZWRFbnRy
aWVzKSB7CkBAIC0xNDMsNiArMTk3LDEwIEBAIGJvb2wgQ29tcGFjdFZhcmlhYmxlRW52aXJvbm1l
bnQ6Om9wZXJhdG9yPT0oY29uc3QgQ29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQmIG90CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAobV92YXJpYWJsZU1ldGFkYXRhICE9IG90aGVyLm1f
dmFyaWFibGVNZXRhZGF0YSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX3ByaXZh
dGVBY2Nlc3NOYW1lcyAhPSBvdGhlci5tX3ByaXZhdGVBY2Nlc3NOYW1lcykKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmIChtX3ByaXZhdGVOYW1lTWV0YWRhdGEgIT0gb3RoZXIubV9wcml2
YXRlTmFtZU1ldGFkYXRhKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTE1Niw2ICsyMTQsMTIgQEAgVmFyaWFibGVFbnZpcm9ubWVudCBDb21wYWN0VmFy
aWFibGVFbnZpcm9ubWVudDo6dG9WYXJpYWJsZUVudmlyb25tZW50KCkgY29uc3QKICAgICAgICAg
YWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1fdmFyaWFibGVNZXRhZGF0YVtpXTsKICAgICB9
CiAKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcHJpdmF0ZUFjY2Vzc05hbWVzLnNpemUo
KTsgaSsrKSB7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gcmVzdWx0LmFkZFByaXZhdGVOYW1l
KG1fcHJpdmF0ZUFjY2Vzc05hbWVzW2ldKTsKKyAgICAgICAgQVNTRVJUKGFkZFJlc3VsdC5pc05l
d0VudHJ5KTsKKyAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1fcHJpdmF0ZU5h
bWVNZXRhZGF0YVtpXTsKKyAgICB9CisKICAgICBpZiAobV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZCkK
ICAgICAgICAgcmVzdWx0Lm1hcmtBbGxWYXJpYWJsZXNBc0NhcHR1cmVkKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKaW5kZXgg
MGMxZDBhYzNlYmEuLmVhNjgwODY0NTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaApAQCAtNDQsNyArNDQsOCBAQCBwdWJsaWM6
CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Jp
dHMgJiBJc0Z1bmN0aW9uOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzUGFyYW1ldGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNQYXJhbWV0ZXI7IH0KICAgICBBTFdBWVNfSU5MSU5F
IGJvb2wgaXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGUoKSBjb25zdCB7IHJldHVybiBtX2Jp
dHMgJiBJc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZTsgfQotICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBpc1ByaXZhdGVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNQcml2YXRlTmFt
ZTsgfQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1ByaXZhdGVGaWVsZCgpIGNvbnN0IHsgcmV0
dXJuIG1fYml0cyAmIElzUHJpdmF0ZUZpZWxkOyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlz
UHJpdmF0ZU1ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzUHJpdmF0ZU1ldGhvZDsg
fQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzQ2FwdHVyZWQoKSB7IG1fYml0cyB8PSBJ
c0NhcHR1cmVkOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzQ29uc3QoKSB7IG1fYml0
cyB8PSBJc0NvbnN0OyB9CkBAIC01Niw3ICs1Nyw4IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0SXNGdW5jdGlvbigpIHsgbV9iaXRzIHw9IElzRnVuY3Rpb247IH0KICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNQYXJhbWV0ZXIoKSB7IG1fYml0cyB8PSBJc1BhcmFtZXRl
cjsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRp
ZGF0ZSgpIHsgbV9iaXRzIHw9IElzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlOyB9Ci0gICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldElzUHJpdmF0ZU5hbWUoKSB7IG1fYml0cyB8PSBJc1ByaXZh
dGVOYW1lOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzUHJpdmF0ZUZpZWxkKCkgeyBt
X2JpdHMgfD0gSXNQcml2YXRlRmllbGQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNQ
cml2YXRlTWV0aG9kKCkgeyBtX2JpdHMgfD0gSXNQcml2YXRlTWV0aG9kOyB9CiAKICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgY2xlYXJJc1ZhcigpIHsgbV9iaXRzICY9IH5Jc1ZhcjsgfQogCkBAIC03
OSw3ICs4MSw4IEBAIHByaXZhdGU6CiAgICAgICAgIElzRnVuY3Rpb24gPSAxIDw8IDcsCiAgICAg
ICAgIElzUGFyYW1ldGVyID0gMSA8PCA4LAogICAgICAgICBJc1Nsb3BweU1vZGVIb2lzdGluZ0Nh
bmRpZGF0ZSA9IDEgPDwgOSwKLSAgICAgICAgSXNQcml2YXRlTmFtZSA9IDEgPDwgMTAsCisgICAg
ICAgIElzUHJpdmF0ZUZpZWxkID0gMSA8PCAxMCwKKyAgICAgICAgSXNQcml2YXRlTWV0aG9kID0g
MSA8PCAxMSwKICAgICB9OwogICAgIHVpbnQxNl90IG1fYml0cyB7IDAgfTsKIH07CkBAIC04OSwx
MSArOTIsMTYgQEAgc3RydWN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeUhhc2hUcmFpdHMgOiBI
YXNoVHJhaXRzPFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeT4KIH07CiAKIHN0cnVjdCBQcml2YXRl
TmFtZUVudHJ5IHsKKyAgICBmcmllbmQgY2xhc3MgQ2FjaGVkUHJpdmF0ZU5hbWVFbnRyeTsKKwog
cHVibGljOgogICAgIFByaXZhdGVOYW1lRW50cnkodWludDE2X3QgdHJhaXRzID0gMCkgeyBtX2Jp
dHMgPSB0cmFpdHM7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1VzZWQoKSBjb25zdCB7
IHJldHVybiBtX2JpdHMgJiBJc1VzZWQ7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNEZWNs
YXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzRGVjbGFyZWQ7IH0KKyAgICBBTFdBWVNf
SU5MSU5FIGJvb2wgaXNNZXRob2QoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc01ldGhvZDsg
fQorCisgICAgYm9vbCBpc1ByaXZhdGVBY2Nlc3MoKSBjb25zdCB7IHJldHVybiBpc01ldGhvZCgp
OyB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNVc2VkKCkgeyBtX2JpdHMgfD0gSXNV
c2VkOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzRGVjbGFyZWQoKSB7IG1fYml0cyB8
PSBJc0RlY2xhcmVkOyB9CkBAIC0xMDYsOCArMTE0LDEwIEBAIHB1YmxpYzoKICAgICB9CiAKICAg
ICBlbnVtIFRyYWl0cyA6IHVpbnQxNl90IHsKKyAgICAgICAgTm9uZSA9IDAsCiAgICAgICAgIElz
VXNlZCA9IDEgPDwgMCwKICAgICAgICAgSXNEZWNsYXJlZCA9IDEgPDwgMSwKKyAgICAgICAgSXNN
ZXRob2QgPSAxIDw8IDIsCiAgICAgfTsKIAogcHJpdmF0ZToKQEAgLTExNSwxNCArMTI1LDE2IEBA
IHByaXZhdGU6CiB9OwogCiBzdHJ1Y3QgUHJpdmF0ZU5hbWVFbnRyeUhhc2hUcmFpdHMgOiBIYXNo
VHJhaXRzPFByaXZhdGVOYW1lRW50cnk+IHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rl
c3RydWN0aW9uID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1
Y3Rpb24gPSBmYWxzZTsKIH07CiAKIGNsYXNzIFZhcmlhYmxlRW52aXJvbm1lbnQgewogcHJpdmF0
ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8UGFja2VkUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwg
VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxS
ZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5SGFzaFRy
YWl0cz4gTWFwOwotICAgIHR5cGVkZWYgSGFzaE1hcDxQYWNrZWRSZWZQdHI8VW5pcXVlZFN0cmlu
Z0ltcGw+LCBQcml2YXRlTmFtZUVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxS
ZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiwgUHJpdmF0ZU5hbWVFbnRyeUhhc2hUcmFpdHM+IFBy
aXZhdGVOYW1lczsKKwogcHVibGljOgorICAgIHR5cGVkZWYgSGFzaE1hcDxQYWNrZWRSZWZQdHI8
VW5pcXVlZFN0cmluZ0ltcGw+LCBQcml2YXRlTmFtZUVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwg
SGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiwgUHJpdmF0ZU5hbWVFbnRyeUhh
c2hUcmFpdHM+IFByaXZhdGVOYW1lczsKKwogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQoKSB7IH0K
ICAgICBWYXJpYWJsZUVudmlyb25tZW50KFZhcmlhYmxlRW52aXJvbm1lbnQmJiBvdGhlcikKICAg
ICAgICAgOiBtX21hcChXVEZNb3ZlKG90aGVyLm1fbWFwKSkKQEAgLTE0NCw2ICsxNTYsMTYgQEAg
cHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgTWFwOjpjb25zdF9pdGVyYXRvciBlbmQoKSBjb25z
dCB7IHJldHVybiBtX21hcC5lbmQoKTsgfQogICAgIEFMV0FZU19JTkxJTkUgTWFwOjpBZGRSZXN1
bHQgYWRkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpIHsgcmV0
dXJuIG1fbWFwLmFkZChpZGVudGlmaWVyLCBWYXJpYWJsZUVudmlyb25tZW50RW50cnkoKSk7IH0K
ICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6QWRkUmVzdWx0IGFkZChjb25zdCBJZGVudGlmaWVyJiBp
ZGVudGlmaWVyKSB7IHJldHVybiBhZGQoaWRlbnRpZmllci5pbXBsKCkpOyB9CisKKyAgICBBTFdB
WVNfSU5MSU5FIFByaXZhdGVOYW1lczo6QWRkUmVzdWx0IGFkZFByaXZhdGVOYW1lKGNvbnN0IElk
ZW50aWZpZXImIGlkZW50aWZpZXIpIHsgcmV0dXJuIGFkZFByaXZhdGVOYW1lKGlkZW50aWZpZXIu
aW1wbCgpKTsgfQorICAgIEFMV0FZU19JTkxJTkUgUHJpdmF0ZU5hbWVzOjpBZGRSZXN1bHQgYWRk
UHJpdmF0ZU5hbWUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikK
KyAgICB7CisgICAgICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgICAgIG1fcmFyZURhdGEg
PSBzdGQ6Om1ha2VfdW5pcXVlPFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhPigpOworCisg
ICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoaWRlbnRpZmllciwg
UHJpdmF0ZU5hbWVFbnRyeSgpKTsKKyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVk
IHNpemUoKSBjb25zdCB7IHJldHVybiBtX21hcC5zaXplKCkgKyBwcml2YXRlTmFtZXNTaXplKCk7
IH0KICAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIG1hcFNpemUoKSBjb25zdCB7IHJldHVybiBt
X21hcC5zaXplKCk7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgY29udGFpbnMoY29uc3QgUmVm
UHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikgY29uc3QgeyByZXR1cm4gbV9tYXAu
Y29udGFpbnMoaWRlbnRpZmllcik7IH0KQEAgLTE2NCwxNSArMTg2LDE4IEBAIHB1YmxpYzoKIAog
ICAgIHVzaW5nIFByaXZhdGVOYW1lc1JhbmdlID0gV1RGOjpJdGVyYXRvclJhbmdlPFByaXZhdGVO
YW1lczo6aXRlcmF0b3I+OwogCi0gICAgQUxXQVlTX0lOTElORSBNYXA6OkFkZFJlc3VsdCBkZWNs
YXJlUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyByZXR1cm4gZGVj
bGFyZVByaXZhdGVOYW1lKGlkZW50aWZpZXIuaW1wbCgpKTsgfQorICAgIEFMV0FZU19JTkxJTkUg
TWFwOjpBZGRSZXN1bHQgZGVjbGFyZVByaXZhdGVGaWVsZChjb25zdCBJZGVudGlmaWVyJiBpZGVu
dGlmaWVyKSB7IHJldHVybiBkZWNsYXJlUHJpdmF0ZUZpZWxkKGlkZW50aWZpZXIuaW1wbCgpKTsg
fQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1c2VQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVy
JiBpZGVudGlmaWVyKSB7IHVzZVByaXZhdGVOYW1lKGlkZW50aWZpZXIuaW1wbCgpKTsgfQogCi0g
ICAgTWFwOjpBZGRSZXN1bHQgZGVjbGFyZVByaXZhdGVOYW1lKGNvbnN0IFJlZlB0cjxVbmlxdWVk
U3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCisgICAgYm9vbCBkZWNsYXJlUHJpdmF0ZU1ldGhvZChj
b25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBkZWNsYXJlUHJpdmF0ZU1ldGhv
ZChpZGVudGlmaWVyLmltcGwoKSk7IH0KKyAgICBib29sIGRlY2xhcmVQcml2YXRlTWV0aG9kKGNv
bnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpOworCisgICAgTWFwOjpB
ZGRSZXN1bHQgZGVjbGFyZVByaXZhdGVGaWVsZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0lt
cGw+JiBpZGVudGlmaWVyKQogICAgIHsKICAgICAgICAgYXV0byYgbWV0YSA9IGdldE9yQWRkUHJp
dmF0ZU5hbWUoaWRlbnRpZmllci5nZXQoKSk7CiAgICAgICAgIG1ldGEuc2V0SXNEZWNsYXJlZCgp
OwogICAgICAgICBhdXRvIGVudHJ5ID0gVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCk7Ci0gICAg
ICAgIGVudHJ5LnNldElzUHJpdmF0ZU5hbWUoKTsKKyAgICAgICAgZW50cnkuc2V0SXNQcml2YXRl
RmllbGQoKTsKICAgICAgICAgZW50cnkuc2V0SXNDb25zdCgpOwogICAgICAgICBlbnRyeS5zZXRJ
c0NhcHR1cmVkKCk7CiAgICAgICAgIHJldHVybiBtX21hcC5hZGQoaWRlbnRpZmllciwgZW50cnkp
OwpAQCAtMTk5LDYgKzIyNCwxOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3JhcmVEYXRh
LT5tX3ByaXZhdGVOYW1lcy5zaXplKCk7CiAgICAgfQogCisgICAgQUxXQVlTX0lOTElORSBib29s
IGhhc1ByaXZhdGVBY2Nlc3MoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRh
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGZvciAoYXV0byBlbnRyeSA6
IHByaXZhdGVOYW1lcygpKSB7CisgICAgICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNQcml2YXRl
QWNjZXNzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgQUxXQVlTX0lOTElORSBib29sIGhhc1By
aXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiAgICAgewogICAgICAgICBp
ZiAoIW1fcmFyZURhdGEpCkBAIC0yODAsNiArMzE4LDkgQEAgcHJpdmF0ZToKIAogICAgIFZlY3Rv
cjxQYWNrZWRSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiBtX3ZhcmlhYmxlczsKICAgICBWZWN0
b3I8VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5PiBtX3ZhcmlhYmxlTWV0YWRhdGE7CisgICAgVmVj
dG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+IG1fcHJpdmF0ZUFjY2Vzc05hbWVzOworICAg
IFZlY3RvcjxQcml2YXRlTmFtZUVudHJ5PiBtX3ByaXZhdGVOYW1lTWV0YWRhdGE7CisKICAgICB1
bnNpZ25lZCBtX2hhc2g7CiAgICAgYm9vbCBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAppbmRleCBmZTZk
Y2JhMjdkOS4uNGJlNTE3OTRkYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTk4MSw2ICs5ODEsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1f
Yml0VmVjdG9ycy5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9iaXRWZWN0b3JzKTsKICAgICAg
ICAgbV9jb25zdGFudElkZW50aWZpZXJTZXRzLmVuY29kZShlbmNvZGVyLCByYXJlRGF0YS5tX2Nv
bnN0YW50SWRlbnRpZmllclNldHMpOwogICAgICAgICBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyID0gcmFyZURhdGEubV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjsKKyAgICAgICAgbV9w
cml2YXRlQnJhbmRSZXF1aXJlbWVudCA9IHJhcmVEYXRhLm1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQ7CiAgICAgfQogCiAgICAgVW5saW5rZWRDb2RlQmxvY2s6OlJhcmVEYXRhKiBkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikgY29uc3QKQEAgLTk5NSw2ICs5OTYsNyBAQCBwdWJsaWM6CiAgICAgICAg
IG1fYml0VmVjdG9ycy5kZWNvZGUoZGVjb2RlciwgcmFyZURhdGEtPm1fYml0VmVjdG9ycyk7CiAg
ICAgICAgIG1fY29uc3RhbnRJZGVudGlmaWVyU2V0cy5kZWNvZGUoZGVjb2RlciwgcmFyZURhdGEt
Pm1fY29uc3RhbnRJZGVudGlmaWVyU2V0cyk7CiAgICAgICAgIHJhcmVEYXRhLT5tX25lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyID0gbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjsKKyAgICAg
ICAgcmFyZURhdGEtPm1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBtX3ByaXZhdGVCcmFuZFJl
cXVpcmVtZW50OwogICAgICAgICByZXR1cm4gcmFyZURhdGE7CiAgICAgfQogCkBAIC0xMDA4LDYg
KzEwMTAsNyBAQCBwcml2YXRlOgogICAgIENhY2hlZFZlY3RvcjxDYWNoZWRCaXRWZWN0b3I+IG1f
Yml0VmVjdG9yczsKICAgICBDYWNoZWRWZWN0b3I8Q2FjaGVkQ29uc3RhbnRJZGVudGlmaWVyU2V0
RW50cnk+IG1fY29uc3RhbnRJZGVudGlmaWVyU2V0czsKICAgICB1bnNpZ25lZCBtX25lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyIDogMTsKKyAgICB1bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVp
cmVtZW50IDogMTsKIH07CiAKIGNsYXNzIENhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnRSYXJlRGF0
YSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+IHsK
QEAgLTExODgsNyArMTE5MSw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgQ2Fj
aGVkSGFzaFNldDxDYWNoZWRSZWZQdHI8Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGw+LCBJZGVudGlm
aWVyUmVwSGFzaD4gbV9wcml2YXRlTmFtZXM7CisgICAgQ2FjaGVkSGFzaE1hcDxDYWNoZWRSZWZQ
dHI8Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGwsIFVuaXF1ZWRTdHJpbmdJbXBsLCBXVEY6OlBhY2tl
ZFB0clRyYWl0czxVbmlxdWVkU3RyaW5nSW1wbD4+LCBQcml2YXRlTmFtZUVudHJ5LCBJZGVudGlm
aWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiwgUHJpdmF0
ZU5hbWVFbnRyeUhhc2hUcmFpdHM+IG1fcHJpdmF0ZU5hbWVzOwogfTsKIAogY2xhc3MgQ2FjaGVk
U3ltYm9sVGFibGUgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFN5bWJvbFRhYmxlPiB7CkBAIC0xNzQz
LDIxICsxNzQ2LDIxIEBAIHB1YmxpYzoKICAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6UmFyZURhdGEmIHJhcmVEYXRhKQog
ICAgIHsKICAgICAgICAgbV9jbGFzc1NvdXJjZS5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9j
bGFzc1NvdXJjZSk7Ci0gICAgICAgIG1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXMuZW5jb2RlKGVu
Y29kZXIsIHJhcmVEYXRhLm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOworICAgICAgICBtX3Bh
cmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudC5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9w
YXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQpOwogICAgIH0KIAogICAgIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlOjpSYXJlRGF0YSogZGVjb2RlKERlY29kZXImIGRlY29kZXIpIGNvbnN0
CiAgICAgewogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6UmFyZURhdGEqIHJh
cmVEYXRhID0gbmV3IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpSYXJlRGF0YSB7IH07CiAg
ICAgICAgIG1fY2xhc3NTb3VyY2UuZGVjb2RlKGRlY29kZXIsIHJhcmVEYXRhLT5tX2NsYXNzU291
cmNlKTsKLSAgICAgICAgYXV0byBwYXJlbnRTY29wZVREWlZhcmlhYmxlcyA9IG1fcGFyZW50U2Nv
cGVURFpWYXJpYWJsZXMuZGVjb2RlKGRlY29kZXIpOwotICAgICAgICByYXJlRGF0YS0+bV9wYXJl
bnRTY29wZVREWlZhcmlhYmxlcyA9IFdURk1vdmUocGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOwor
ICAgICAgICBhdXRvIHBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCA9IG1fcGFyZW50U2Nv
cGVWYXJpYWJsZUVudmlyb25tZW50LmRlY29kZShkZWNvZGVyKTsKKyAgICAgICAgcmFyZURhdGEt
Pm1fcGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50ID0gV1RGTW92ZShwYXJlbnRTY29wZVZh
cmlhYmxlRW52aXJvbm1lbnQpOwogICAgICAgICByZXR1cm4gcmFyZURhdGE7CiAgICAgfQogCiBw
cml2YXRlOgogICAgIENhY2hlZFNvdXJjZUNvZGVXaXRob3V0UHJvdmlkZXIgbV9jbGFzc1NvdXJj
ZTsKLSAgICBDYWNoZWRDb21wYWN0VmFyaWFibGVNYXBIYW5kbGUgbV9wYXJlbnRTY29wZVREWlZh
cmlhYmxlczsKKyAgICBDYWNoZWRDb21wYWN0VmFyaWFibGVNYXBIYW5kbGUgbV9wYXJlbnRTY29w
ZVZhcmlhYmxlRW52aXJvbm1lbnQ7CiB9OwogCiBjbGFzcyBDYWNoZWRGdW5jdGlvbkV4ZWN1dGFi
bGUgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPiB7CkBA
IC0xNzkzLDYgKzE3OTYsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgc3VwZXJCaW5kaW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9zdXBlckJpbmRpbmc7IH0KICAgICB1bnNpZ25lZCBkZXJpdmVkQ29u
dGV4dFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2Rlcml2ZWRDb250ZXh0VHlwZTsgfQogICAgIHVu
c2lnbmVkIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkgY29uc3QgeyByZXR1cm4gbV9uZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplcjsgfQorICAgIHVuc2lnbmVkIHByaXZhdGVCcmFuZFJlcXVp
cmVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudDsgfQogCiAg
ICAgSWRlbnRpZmllciBuYW1lKERlY29kZXImIGRlY29kZXIpIGNvbnN0IHsgcmV0dXJuIG1fbmFt
ZS5kZWNvZGUoZGVjb2Rlcik7IH0KICAgICBJZGVudGlmaWVyIGVjbWFOYW1lKERlY29kZXImIGRl
Y29kZXIpIGNvbnN0IHsgcmV0dXJuIG1fZWNtYU5hbWUuZGVjb2RlKGRlY29kZXIpOyB9CkBAIC0x
ODIxLDcgKzE4MjUsOCBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fcGFyYW1ldGVyc1N0YXJ0
T2Zmc2V0IDogMzE7CiAgICAgdW5zaWduZWQgbV90eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQ7CiAg
ICAgdW5zaWduZWQgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0OwotICAgIHVuc2lnbmVkIG1fcGFy
YW1ldGVyQ291bnQ7CisgICAgdW5zaWduZWQgbV9wYXJhbWV0ZXJDb3VudDozMTsKKyAgICB1bnNp
Z25lZCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsKICAgICBTb3VyY2VQYXJzZU1vZGUg
bV9zb3VyY2VQYXJzZU1vZGU7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwog
ICAgIHVuc2lnbmVkIG1fZnVuY3Rpb25Nb2RlIDogMjsgLy8gRnVuY3Rpb25Nb2RlCkBAIC0xODc5
LDcgKzE4ODQsNiBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgaXNDbGFzc0NvbnRleHQoKSBjb25z
dCB7IHJldHVybiBtX2lzQ2xhc3NDb250ZXh0OyB9CiAgICAgdW5zaWduZWQgY29uc3RydWN0b3JL
aW5kKCkgY29uc3QgeyByZXR1cm4gbV9jb25zdHJ1Y3RvcktpbmQ7IH0KICAgICB1bnNpZ25lZCBk
ZXJpdmVkQ29udGV4dFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2Rlcml2ZWRDb250ZXh0VHlwZTsg
fQotICAgIHVuc2lnbmVkIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkgY29uc3QgeyByZXR1
cm4gbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjsgfQogICAgIHVuc2lnbmVkIGV2YWxDb250
ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXZhbENvbnRleHRUeXBlOyB9CiAgICAgdW5zaWdu
ZWQgaGFzVGFpbENhbGxzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNUYWlsQ2FsbHM7IH0KICAgICB1
bnNpZ25lZCBoYXNDaGVja3BvaW50cygpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ2hlY2twb2ludHM7
IH0KQEAgLTE5MTIsNyArMTkxNiw2IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9pc0NsYXNz
Q29udGV4dCA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwogICAgIHVu
c2lnbmVkIG1fZGVyaXZlZENvbnRleHRUeXBlIDogMjsKLSAgICB1bnNpZ25lZCBtX25lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyIDogMTsKICAgICB1bnNpZ25lZCBtX2V2YWxDb250ZXh0VHlwZSA6
IDI7CiAgICAgdW5zaWduZWQgbV9oYXNUYWlsQ2FsbHMgOiAxOwogICAgIHVuc2lnbmVkIG1fY29k
ZVR5cGUgOiAyOwpAQCAtMjE5NCw2ICsyMTk3LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIENhY2hl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFVubGkK
ICAgICBtX3N1cGVyQmluZGluZyA9IGV4ZWN1dGFibGUubV9zdXBlckJpbmRpbmc7CiAgICAgbV9k
ZXJpdmVkQ29udGV4dFR5cGUgPSBleGVjdXRhYmxlLm1fZGVyaXZlZENvbnRleHRUeXBlOwogICAg
IG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSBleGVjdXRhYmxlLm1fbmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXI7CisgICAgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9IGV4ZWN1dGFi
bGUubV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudDsKIAogICAgIG1fcmFyZURhdGEuZW5jb2RlKGVu
Y29kZXIsIGV4ZWN1dGFibGUubV9yYXJlRGF0YS5nZXQoKSk7CiAKQEAgLTIyMzUsNiArMjIzOSw3
IEBAIEFMV0FZU19JTkxJTkUgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKERlY29kZXImIGRlCiAgICAgLCBtX3R5cGVQcm9maWxpbmdTdGFydE9m
ZnNldChjYWNoZWRFeGVjdXRhYmxlLnR5cGVQcm9maWxpbmdTdGFydE9mZnNldCgpKQogICAgICwg
bV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KGNhY2hlZEV4ZWN1dGFibGUudHlwZVByb2ZpbGluZ0Vu
ZE9mZnNldCgpKQogICAgICwgbV9wYXJhbWV0ZXJDb3VudChjYWNoZWRFeGVjdXRhYmxlLnBhcmFt
ZXRlckNvdW50KCkpCisgICAgLCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50KGNhY2hlZEV4ZWN1
dGFibGUucHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSkKICAgICAsIG1fZmVhdHVyZXMoY2FjaGVk
RXhlY3V0YWJsZS5mZWF0dXJlcygpKQogICAgICwgbV9zb3VyY2VQYXJzZU1vZGUoY2FjaGVkRXhl
Y3V0YWJsZS5zb3VyY2VQYXJzZU1vZGUoKSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKGNhY2hl
ZEV4ZWN1dGFibGUuY29uc3RydWN0b3JLaW5kKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRleCAwNTFlYTdhYTY2OC4uMjk2MGViOWZlYmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApAQCAtOTIsOSArOTIs
MTIgQEAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrSW1w
bChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHMKICAgICBib29sIHVzZXNFdmFsID0gcm9vdE5v
ZGUtPmZlYXR1cmVzKCkgJiBFdmFsRmVhdHVyZTsKICAgICBib29sIGlzU3RyaWN0TW9kZSA9IHJv
b3ROb2RlLT5mZWF0dXJlcygpICYgU3RyaWN0TW9kZUZlYXR1cmU7CiAgICAgTmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSBOZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplcjo6Tm87Ci0gICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWVfdjxFeGVj
dXRhYmxlVHlwZSwgRGlyZWN0RXZhbEV4ZWN1dGFibGU+KQorICAgIFByaXZhdGVCcmFuZFJlcXVp
cmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID0gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6
Ok5vbmU7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWVfdjxFeGVjdXRhYmxlVHlwZSwg
RGlyZWN0RXZhbEV4ZWN1dGFibGU+KSB7CiAgICAgICAgIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyID0gZXhlY3V0YWJsZS0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKTsKLSAgICBFeGVj
dXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbyh1c2VzRXZhbCwgaXNTdHJpY3RNb2RlLCBmYWxzZSwg
ZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgc2NyaXB0TW9kZSwgU3VwZXJCaW5kaW5nOjpO
b3ROZWVkZWQsIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBk
ZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBpc0Fycm93RnVu
Y3Rpb25Db250ZXh0LCBmYWxzZSwgZXZhbENvbnRleHRUeXBlKTsKKyAgICAgICAgcHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQgPSBleGVjdXRhYmxlLT5wcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpOwor
ICAgIH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbyh1c2VzRXZhbCwgaXNTdHJp
Y3RNb2RlLCBmYWxzZSwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGZhbHNlLCBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUsIHNjcmlwdE1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBDYWNoZVR5
cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwgZGVyaXZlZENvbnRleHRUeXBl
LCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgZmFs
c2UsIGV2YWxDb250ZXh0VHlwZSk7CiAKICAgICBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIHVubGlu
a2VkQ29kZUJsb2NrID0gVW5saW5rZWRDb2RlQmxvY2tUeXBlOjpjcmVhdGUodm0sIGV4ZWN1dGFi
bGVJbmZvLCBjb2RlR2VuZXJhdGlvbk1vZGUpOwogICAgIHVubGlua2VkQ29kZUJsb2NrLT5yZWNv
cmRQYXJzZShyb290Tm9kZS0+ZmVhdHVyZXMoKSwgcm9vdE5vZGUtPmhhc0NhcHR1cmVkVmFyaWFi
bGVzKCksIGxpbmVDb3VudCwgdW5saW5rZWRFbmRDb2x1bW4pOwpAQCAtMjQ0LDcgKzI0Nyw3IEBA
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBDb2RlQ2FjaGU6OmdldFVubGlua2VkR2xvYmFs
RnVuY3Rpb25FeGVjdXRhYmxlKFZNJiB2CiAgICAgLy8gVGhlIEZ1bmN0aW9uIGNvbnN0cnVjdG9y
IG9ubHkgaGFzIGFjY2VzcyB0byBnbG9iYWwgdmFyaWFibGVzLCBzbyBubyB2YXJpYWJsZXMgd2ls
bCBiZSB1bmRlciBURFogdW5sZXNzIHRoZXkncmUKICAgICAvLyBpbiB0aGUgZ2xvYmFsIGxleGlj
YWwgZW52aXJvbm1lbnQsIHdoaWNoIHdlIGFsd2F5cyBURFogY2hlY2sgYWNjZXNzZXMgZnJvbS4K
ICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkgPSBjb25zdHJ1Y3RBYmlsaXR5
Rm9yUGFyc2VNb2RlKG1ldGFkYXRhLT5wYXJzZU1vZGUoKSk7Ci0gICAgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlOjpjcmVhdGUodm0sIHNvdXJjZSwgbWV0YWRhdGEsIFVubGlua2VkTm9ybWFsRnVuY3Rpb24s
IGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgV1RGOjpudWxs
b3B0LCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
OjpObyk7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJs
ZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUodm0sIHNvdXJjZSwgbWV0YWRh
dGEsIFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2Ny
aXB0TW9kZTo6Q2xhc3NpYywgV1RGOjpudWxsb3B0LCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUs
IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObywgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6
Ok5vbmUpOwogCiAgICAgaWYgKCFzb3VyY2UucHJvdmlkZXIoKS0+c291cmNlVVJMRGlyZWN0aXZl
KCkuaXNOdWxsKCkpCiAgICAgICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+c2V0U291cmNlVVJMRGly
ZWN0aXZlKHNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2VVUkxEaXJlY3RpdmUoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5j
cHAKaW5kZXggZWFiMzg3MjJmNWEuLjFkODIzYmJlMTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCkBAIC0zNSw3
ICszNSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1EaXJlY3RFdmFsRXhlY3V0YWJsZSogRGly
ZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIERlcml2ZWRD
b250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
IG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQs
IEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1l
bnQqIHZhcmlhYmxlc1VuZGVyVERaKQorRGlyZWN0RXZhbEV4ZWN1dGFibGUqIERpcmVjdEV2YWxF
eGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291
cmNlQ29kZSYgc291cmNlLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5
cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBl
IGV2YWxDb250ZXh0VHlwZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogdmFyaWFibGVzVW5k
ZXJURFopCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTQ1LDcgKzQ1LDcgQEAgRGlyZWN0RXZh
bEV4ZWN1dGFibGUqIERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgYXV0byogZXhl
Y3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERpcmVjdEV2YWxFeGVjdXRhYmxl
Pih2bS5oZWFwKSkgRGlyZWN0RXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGlz
SW5TdHJpY3RDb250ZXh0LCBkZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBldmFsQ29udGV4dFR5cGUpOworICAgIGF1
dG8qIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxEaXJlY3RFdmFsRXhl
Y3V0YWJsZT4odm0uaGVhcCkpIERpcmVjdEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291
cmNlLCBpc0luU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplciwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGlzQXJyb3dGdW5jdGlvbkNv
bnRleHQsIGV2YWxDb250ZXh0VHlwZSk7CiAgICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24o
dm0pOwogCiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7CkBAIC02OCwxMCArNjgsMTAgQEAgRGlyZWN0
RXZhbEV4ZWN1dGFibGUqIERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwKICAgICByZXR1cm4gZXhlY3V0YWJsZTsKIH0KIAotRGlyZWN0RXZh
bEV4ZWN1dGFibGU6OkRpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpblN0cmljdENvbnRleHQsIERl
cml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNv
bnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUpCi0gICAgOiBFdmFsRXhlY3V0
YWJsZShnbG9iYWxPYmplY3QsIHNvdXJjZSwgaW5TdHJpY3RDb250ZXh0LCBkZXJpdmVkQ29udGV4
dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGV2YWxDb250ZXh0VHlwZSwgbmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIpCitEaXJlY3RFdmFsRXhlY3V0YWJsZTo6RGlyZWN0RXZhbEV4ZWN1
dGFibGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250
ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBi
b29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5
cGUpCisgICAgOiBFdmFsRXhlY3V0YWJsZShnbG9iYWxPYmplY3QsIHNvdXJjZSwgaW5TdHJpY3RD
b250ZXh0LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGV2YWxD
b250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFuZFJlcXVp
cmVtZW50KQogewotICAgIEFTU0VSVChuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9PSBOZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8gfHwgZGVyaXZlZENvbnRleHRUeXBlID09IERlcml2
ZWRDb250ZXh0VHlwZTo6RGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCk7CisgICAgQVNTRVJUKChu
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9PSBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6
Tm8gJiYgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPT0gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6
Ok5vbmUpIHx8IGRlcml2ZWRDb250ZXh0VHlwZSA9PSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2
ZWRDb25zdHJ1Y3RvckNvbnRleHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oCmlu
ZGV4IGY3YWJkNWYxZWQ5Li5lNzI2ZDU5OGJlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oCkBAIC0zMSw5ICszMSw5IEBA
IG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBEaXJlY3RFdmFsRXhlY3V0YWJsZSBmaW5hbCA6IHB1
YmxpYyBFdmFsRXhlY3V0YWJsZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIERpcmVjdEV2YWxFeGVj
dXRhYmxlKiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBp
c0luU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUsIGNv
bnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKKyAgICBzdGF0aWMgRGlyZWN0RXZhbEV4ZWN1dGFi
bGUqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGlzSW5T
dHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0
LCBFdmFsQ29udGV4dFR5cGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKIHByaXZhdGU6
Ci0gICAgRGlyZWN0RXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VD
b2RlJiwgYm9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRl
eHRUeXBlKTsKKyAgICBEaXJlY3RFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCosIGNvbnN0
IFNvdXJjZUNvZGUmLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBO
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBlKTsKIH07CiAKIHN0YXRpY19h
c3NlcnQoc2l6ZW9mKERpcmVjdEV2YWxFeGVjdXRhYmxlKSA9PSBzaXplb2YoRXZhbEV4ZWN1dGFi
bGUpLCAiIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFs
RXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0
YWJsZS5jcHAKaW5kZXggNWUxMzgwOTdkNGUuLjc1YzFjOWRiNmNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuY3BwCkBAIC0zMyw5ICszMywx
MCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIEV2YWxFeGVjdXRhYmxlOjpz
X2luZm8gPSB7ICJFdmFsRXhlY3V0YWJsZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxw
dHIsIENSRUFURV9NRVRIT0RfVEFCTEUoRXZhbEV4ZWN1dGFibGUpIH07CiAKLUV2YWxFeGVjdXRh
YmxlOjpFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5
cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxD
b250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKQorRXZhbEV4ZWN1dGFibGU6OkV2YWxFeGVjdXRhYmxl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwg
Ym9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5
cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250
ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KQog
ICAgIDogQmFzZShnbG9iYWxPYmplY3QtPnZtKCkuZXZhbEV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0
KCksIGdsb2JhbE9iamVjdC0+dm0oKSwgc291cmNlLCBpblN0cmljdENvbnRleHQsIGRlcml2ZWRD
b250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgZXZhbENvbnRleHRUeXBlLCBOb0lu
dHJpbnNpYykKICAgICAsIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKSkKKyAgICAsIG1fcHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHByaXZhdGVCcmFuZFJlcXVpcmVt
ZW50KSkKIHsKICAgICBBU1NFUlQoc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZVR5cGUoKSA9PSBT
b3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmgKaW5kZXggNzkyNjFkOTQxYTIuLjZkYzZm
YmM1MjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhl
Y3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRh
YmxlLmgKQEAgLTYyLDEzICs2MiwxNCBAQCBwdWJsaWM6CiAKICAgICBERUNMQVJFX0lORk87CiAK
LSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1
dGFibGVJbmZvKHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0
cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBTdXBlckJpbmRp
bmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZGVyaXZlZENvbnRl
eHRUeXBlKCksIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGlzQXJyb3dGdW5jdGlvbkNv
bnRleHQoKSwgZmFsc2UsIGV2YWxDb250ZXh0VHlwZSgpKTsgfQorICAgIEV4ZWN1dGFibGVJbmZv
IGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8odXNlc0V2YWwo
KSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZSwg
ZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2lj
LCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwg
ZGVyaXZlZENvbnRleHRUeXBlKCksIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGlzQXJy
b3dGdW5jdGlvbkNvbnRleHQoKSwgZmFsc2UsIGV2YWxDb250ZXh0VHlwZSgpKTsgfQogCiAgICAg
dW5zaWduZWQgbnVtVmFyaWFibGVzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2st
Pm51bVZhcmlhYmxlcygpOyB9CiAgICAgdW5zaWduZWQgbnVtRnVuY3Rpb25Ib2lzdGluZ0NhbmRp
ZGF0ZXMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtRnVuY3Rpb25Ib2lz
dGluZ0NhbmRpZGF0ZXMoKTsgfQogICAgIHVuc2lnbmVkIG51bVRvcExldmVsRnVuY3Rpb25EZWNs
cygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVj
bHMoKTsgfQogICAgIGJvb2wgYWxsb3dEaXJlY3RFdmFsQ2FjaGUoKSBjb25zdCB7IHJldHVybiBt
X3VubGlua2VkRXZhbENvZGVCbG9jay0+YWxsb3dEaXJlY3RFdmFsQ2FjaGUoKTsgfQogICAgIE5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI+KG1fbmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpOyB9CisgICAgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQg
cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxQcml2
YXRlQnJhbmRSZXF1aXJlbWVudD4obV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7IH0KICAgICBU
ZW1wbGF0ZU9iamVjdE1hcCYgZW5zdXJlVGVtcGxhdGVPYmplY3RNYXAoVk0mKTsKIAogcHJvdGVj
dGVkOgpAQCAtNzYsMTEgKzc3LDEyIEBAIHByb3RlY3RlZDoKICAgICBmcmllbmQgY2xhc3MgU2Ny
aXB0RXhlY3V0YWJsZTsKIAogICAgIHVzaW5nIEJhc2U6OmZpbmlzaENyZWF0aW9uOwotICAgIEV2
YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wgaW5T
dHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29u
dGV4dCwgRXZhbENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcik7CisgICAg
RXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBp
blN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25D
b250ZXh0LCBFdmFsQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2
YXRlQnJhbmRSZXF1aXJlbWVudCk7CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpT
Q2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICB1bnNpZ25lZCBtX25lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyIDogMTsKKyAgICB1bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDog
MTsKIAogICAgIFdyaXRlQmFycmllcjxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPiBtX2V2YWxD
b2RlQmxvY2s7CiAgICAgV3JpdGVCYXJyaWVyPFVubGlua2VkRXZhbENvZGVCbG9jaz4gbV91bmxp
bmtlZEV2YWxDb2RlQmxvY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4Y2VwdGlvbkhlbHBlcnMuY3BwCmluZGV4IGQ4MWU1ODY2NDFiLi4xZjY3YThmMGUxMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5j
cHAKQEAgLTMzMSw3ICszMzEsNyBAQCBKU09iamVjdCogY3JlYXRlVERaRXJyb3IoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKIAogSlNPYmplY3QqIGNyZWF0ZUludmFsaWRQcml2YXRlTmFt
ZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGNyZWF0
ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoIkNhbm5vdCBhY2Nlc3MgaW52YWxp
ZCBwcml2YXRlIGZpZWxkIiksIGRlZmF1bHRTb3VyY2VBcHBlbmRlciwgVHlwZU5vdGhpbmcpOwor
ICAgIHJldHVybiBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKCJJbnZh
bGlkIHByaXZhdGUgbWVtYmVyIGFjY2VzcyIpLCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIFR5cGVO
b3RoaW5nKTsKIH0KIAogSlNPYmplY3QqIGNyZWF0ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3Io
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKaW5kZXggNDg3ZDhi
OGMxY2QuLjdjZDJmNjFmZWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcApAQCAtNjksNyArNjksNyBAQCBJ
bmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iagogfQogCiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpJbmRp
cmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlw
ZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENv
bnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSkKLSAgICA6IEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9i
amVjdCwgc291cmNlLCBpblN0cmljdENvbnRleHQsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJv
d0Z1bmN0aW9uQ29udGV4dCwgZXZhbENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplcjo6Tm8pCisgICAgOiBFdmFsRXhlY3V0YWJsZShnbG9iYWxPYmplY3QsIHNvdXJjZSwgaW5T
dHJpY3RDb250ZXh0LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQs
IGV2YWxDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vLCBQcml2YXRl
QnJhbmRSZXF1aXJlbWVudDo6Tm9uZSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Njb3BlLmNwcAppbmRleCA5NmM4ZGJkNDMwNi4uOWYxMDUzZmY1MWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCkBAIC0zNDAsOCArMzQwLDE0IEBA
IHZvaWQgSlNTY29wZTo6Y29sbGVjdENsb3N1cmVWYXJpYWJsZXNVbmRlclREWihKU1Njb3BlKiBz
Y29wZSwgVmFyaWFibGVFbnZpcm9ubWVuCiAgICAgICAgIGZvciAoYXV0byBlbmQgPSBzeW1ib2xU
YWJsZS0+ZW5kKGxvY2tlciksIGl0ZXIgPSBzeW1ib2xUYWJsZS0+YmVnaW4obG9ja2VyKTsgaXRl
ciAhPSBlbmQ7ICsraXRlcikKICAgICAgICAgICAgIHJlc3VsdC5hZGQoaXRlci0+a2V5KTsKICAg
ICAgICAgaWYgKHN5bWJvbFRhYmxlLT5oYXNQcml2YXRlTmFtZXMoKSkgewotICAgICAgICAgICAg
Zm9yIChhdXRvIG5hbWUgOiBzeW1ib2xUYWJsZS0+cHJpdmF0ZU5hbWVzKCkpCi0gICAgICAgICAg
ICAgICAgcmVzdWx0LnVzZVByaXZhdGVOYW1lKG5hbWUpOyAgICAKKyAgICAgICAgICAgIGF1dG8g
cHJpdmF0ZU5hbWVzID0gc3ltYm9sVGFibGUtPnByaXZhdGVOYW1lcygpOworICAgICAgICAgICAg
Zm9yIChhdXRvIGVuZCA9IHByaXZhdGVOYW1lcy5lbmQoKSwgaXRlciA9IHByaXZhdGVOYW1lcy5i
ZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CisgICAgICAgICAgICAgICAgaWYgKGl0ZXIt
PnZhbHVlLmlzUHJpdmF0ZUFjY2VzcygpKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gYWRk
UmVzdWx0ID0gcmVzdWx0LmFkZFByaXZhdGVOYW1lKGl0ZXItPmtleSk7CisgICAgICAgICAgICAg
ICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBpdGVyLT52YWx1ZTsKKyAgICAgICAg
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnVzZVByaXZhdGVOYW1l
KGl0ZXItPmtleSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGUuaAppbmRleCA0NjU0NjIwMDRmMy4uMzcyZjEwZDQ5NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaApAQCAt
NjMsNyArNjMsNyBAQCBwdWJsaWM6CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVjdXRh
YmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVz
ZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6
Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVk
LCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUV2YWx1YXRlTW9kZSwgZGVyaXZlZENvbnRleHRUeXBl
KCksIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObywgaXNBcnJvd0Z1bmN0aW9uQ29udGV4
dCgpLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsgfQorICAgIEV4ZWN1dGFibGVJbmZv
IGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8odXNlc0V2YWwo
KSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZSwg
ZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUs
IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUV2YWx1YXRl
TW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpO
bywgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25l
KTsgfQogCiAgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2soKSB7IHJldHVybiBtX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jay5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9ncmFtRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
Z3JhbUV4ZWN1dGFibGUuaAppbmRleCAyOWNhMDEzMjA1Ni4uYTFhZGZlYzYxNzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaApAQCAt
NzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAg
IEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJs
ZUluZm8odXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0
b3JLaW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIFN1cGVyQmluZGluZzo6
Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBkZXJpdmVkQ29udGV4dFR5
cGUoKSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vLCBpc0Fycm93RnVuY3Rpb25Db250
ZXh0KCksIGZhbHNlLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUpOyB9CisgICAgRXhlY3V0YWJsZUlu
Zm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1c2VzRXZh
bCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25l
LCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNz
aWMsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2Rl
LCBkZXJpdmVkQ29udGV4dFR5cGUoKSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vLCBp
c0Fycm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUpOyB9
CiAKICAgICBUZW1wbGF0ZU9iamVjdE1hcCYgZW5zdXJlVGVtcGxhdGVPYmplY3RNYXAoVk0mKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCmluZGV4
IDc3OTBjZjU3M2QyLi45ZjdjNGJkYmYzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N5bWJvbFRhYmxlLmNwcApAQCAtMTg2LDcgKzE4Niw3IEBAIFN5bWJvbFRhYmxlKiBT
eW1ib2xUYWJsZTo6Y2xvbmVTY29wZVBhcnQoVk0mIHZtKQogCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGZvciAoYXV0byBuYW1lIDogbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMpCi0gICAgICAg
ICAgICAgICAgcmVzdWx0LT5tX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQobmFtZSk7Cisg
ICAgICAgICAgICAgICAgcmVzdWx0LT5tX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQobmFt
ZS5rZXksIG5hbWUudmFsdWUpOwogICAgICAgICB9CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKaW5kZXggYjBkZDc0ZjdlNGMuLmNhYjFj
Mzc4M2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xU
YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgK
QEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJTY29wZWRBcmd1bWVudHNUYWJsZS5oIgogI2lu
Y2x1ZGUgIlR5cGVMb2NhdGlvbi5oIgogI2luY2x1ZGUgIlZhck9mZnNldC5oIgorI2luY2x1ZGUg
IlZhcmlhYmxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJXYXRjaHBvaW50LmgiCiAjaW5jbHVk
ZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CkBAIC00NTAsOCArNDUxLDcg
QEAgcHVibGljOgogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+
LCBSZWZQdHI8VHlwZVNldD4sIElkZW50aWZpZXJSZXBIYXNoPiBVbmlxdWVUeXBlU2V0TWFwOwog
ICAgIHR5cGVkZWYgSGFzaE1hcDxWYXJPZmZzZXQsIFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+
IE9mZnNldFRvVmFyaWFibGVNYXA7CiAgICAgdHlwZWRlZiBWZWN0b3I8U3ltYm9sVGFibGVFbnRy
eSo+IExvY2FsVG9FbnRyeVZlYzsKLSAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPFVuaXF1ZWRT
dHJpbmdJbXBsPiwgSWRlbnRpZmllclJlcEhhc2g+IFByaXZhdGVOYW1lU2V0OwotICAgIHR5cGVk
ZWYgV1RGOjpJdGVyYXRvclJhbmdlPHR5cGVuYW1lIFByaXZhdGVOYW1lU2V0OjppdGVyYXRvcj4g
UHJpdmF0ZU5hbWVJdGVyYXRvclJhbmdlOworICAgIHR5cGVkZWYgV1RGOjpJdGVyYXRvclJhbmdl
PHR5cGVuYW1lIFZhcmlhYmxlRW52aXJvbm1lbnQ6OlByaXZhdGVOYW1lczo6aXRlcmF0b3I+IFBy
aXZhdGVOYW1lSXRlcmF0b3JSYW5nZTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBl
LCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKQEAgLTYwNSwxNCArNjA1LDE0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1ha2VJ
dGVyYXRvclJhbmdlKG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmJlZ2luKCksIG1fcmFyZURh
dGEtPm1fcHJpdmF0ZU5hbWVzLmVuZCgpKTsKICAgICB9CiAKLSAgICB2b2lkIGFkZFByaXZhdGVO
YW1lKFVuaXF1ZWRTdHJpbmdJbXBsKiBrZXkpCisgICAgdm9pZCBhZGRQcml2YXRlTmFtZShjb25z
dCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBrZXksIFByaXZhdGVOYW1lRW50cnkgdmFsdWUp
CiAgICAgewogICAgICAgICBBU1NFUlQoa2V5ICYmICFrZXktPmlzU3ltYm9sKCkpOwogICAgICAg
ICBpZiAoIW1fcmFyZURhdGEpCiAgICAgICAgICAgICBtX3JhcmVEYXRhID0gV1RGOjptYWtlVW5p
cXVlPFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7CiAKLSAgICAgICAgQVNTRVJUKCFtX3JhcmVEYXRh
LT5tX3ByaXZhdGVOYW1lcy5jb250YWlucyhrZXkpKTsKLSAgICAgICAgbV9yYXJlRGF0YS0+bV9w
cml2YXRlTmFtZXMuYWRkKGtleSk7CisgICAgICAgIEFTU0VSVChtX3JhcmVEYXRhLT5tX3ByaXZh
dGVOYW1lcy5maW5kKGtleSkgPT0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZW5kKCkpOwor
ICAgICAgICBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoa2V5LCB2YWx1ZSk7CiAgICAg
fQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW50cnk+CkBAIC03NDgsNyArNzQ4LDcgQEAgcHVi
bGljOgogICAgICAgICBPZmZzZXRUb1ZhcmlhYmxlTWFwIG1fb2Zmc2V0VG9WYXJpYWJsZU1hcDsK
ICAgICAgICAgVW5pcXVlVHlwZVNldE1hcCBtX3VuaXF1ZVR5cGVTZXRNYXA7CiAgICAgICAgIFdy
aXRlQmFycmllcjxDb2RlQmxvY2s+IG1fY29kZUJsb2NrOwotICAgICAgICBQcml2YXRlTmFtZVNl
dCBtX3ByaXZhdGVOYW1lczsKKyAgICAgICAgVmFyaWFibGVFbnZpcm9ubWVudDo6UHJpdmF0ZU5h
bWVzIG1fcHJpdmF0ZU5hbWVzOwogICAgIH07CiAKIHByaXZhdGU6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408191</attachid>
            <date>2020-09-07 12:11:50 -0700</date>
            <delta_ts>2020-10-20 12:06:11 -0700</delta_ts>
            <desc>WIP - Patch</desc>
            <filename>bug-194434-20200907161144.patch</filename>
            <type>text/plain</type>
            <size>123374</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2Njk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
YjBmNDZkNmVlMDA1YmI2ZTc4NzI5NDg4NjU5ZjI3ZjhkMDliYzU0Li4zNmIxMDNmMzBkYWVjMjEz
MDY2NTA3Yzc4ODNiYTM0ZTE1MTA2NDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyODMgQEAKKzIwMTktMDYtMjcgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtFU05leHRdIEltcGxlbWVudCBwcml2YXRlIG1ldGhvZHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDQzNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYWRk
aW5nIHN1cHBvcnQgdG8gcHJpdmF0ZSBtZXRob2RzIGZvbGxvd2luZyB0aGUKKyAgICAgICAgc3Bl
Y2lmaWNhdGlvbiBvbiBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtcHJpdmF0ZS1tZXRob2RzLy4K
KyAgICAgICAgVGhpcyBpcyBpbnRyb2R1Y2luZyBhIG5ldyB3YXkgdG8gZGVjbGFyZSBwcml2YXRl
IG1ldGhvZHMgb24KKyAgICAgICAgY2xhc3Mgc3ludGF4LiBQcml2YXRlIG1ldGhvZHMgYXJlIG9u
bHkgYWNjZXNzaWJsZSB3aXRoaW4KKyAgICAgICAgY2xhc3NlcyB0aGV5IHdlcmUgZGVjbGFyZWQs
IGFuZCBvbmx5IGNhbiBiZSBjYWxsZWQgZnJvbQorICAgICAgICBvYmplY3RzIHRoYXQgYXJlIGlu
c3RhbmNlIG9mIHRoZXNlIGNsYXNzZXMuCisgICAgICAgIFRvIGd1YXJhbnRlZSBzdWNoIHJ1bGVz
LCB0aGUgcHJvcG9zYWwgcHJlc2VudHMgdGhlIGNvbmNlcHQgb2YKKyAgICAgICAgQnJhbmQgQ2hl
Y2suIER1cmluZyBjbGFzcyBldmFsdWF0aW9uLCBpZiBhIHByaXZhdGUgbWV0aG9kIGlzIHByZXNl
bnQsCisgICAgICAgIGEgYGJyYW5kYCBpcyBpbnN0YWxsZWQgaW4gdGhpcyBjbGFzcy4gRXZlcnkg
aW5zdGFuY2Ugb2Ygc3VjaCBjbGFzcworICAgICAgICB0aGVuIGdldHMgdGhpcyBicmFuZCBpbnN0
YWxsZWQgZHVyaW5nIGBbW0NvbnN0cnVjdF1dYCBvcGVyYXRpb24uIEl0CisgICAgICAgIG1lYW5z
IHRoYXQgYW4gb2JqZWN0IGNhbiBoYXZlIG11bHRpcGxlIGJyYW5kcyAoZS5nIHdoZW4gdGhlcmUg
aXMgYWxzbworICAgICAgICBwcml2YXRlIG1ldGhvZHMgZGVjbGFyZWQgb24gc3VwZXIgY2xhc3Mp
LiBCZWZvcmUgYWNjZXNzaW5nIGEgcHJpdmF0ZQorICAgICAgICBtZXRob2QsIHRoZXJlIGlzIGEg
Y2hlY2sgdG8gdmFsaWRhdGUgaWYgdGhlIHRhcmdldCBvZiB0aGUgY2FsbCBoYXMgdGhlCisgICAg
ICAgIGJyYW5kIG9mIGNhbGxlZSBtZXRob2QuCisgICAgICAgIFRoZSBicmFuZCBjaGVjayBtZWNo
YW5pc20gaXMgaW1wbGVtZW50ZWQgdXNpbmcgYSBgQHByaXZhdGVCcmFuZGAKKyAgICAgICAgc3Rv
cmVkIG9uIGNsYXNzIHNjb3BlLiBIZXJlIGlzIGEgcmVwcmVzZW50YXRpb24gb2YgaG93IHRoaXMg
bWVjaGFuaXNtCisgICAgICAgIHdvcmtzOgorCisgICAgICAgIGBgYAorICAgICAgICBjbGFzcyBD
IHsKKyAgICAgICAgICAgICNtKCkgeyByZXR1cm4gMzsgfQorICAgICAgICAgICAgbWV0aG9kKCkg
eyByZXR1cm4gdGhpcy4jbSgpOyB9CisgICAgICAgIH0KKworICAgICAgICBsZXQgYyA9IG5ldyBD
KCk7CisgICAgICAgIGNvbnNvbGUubG9nKGMubWV0aG9kKCkpOyAvLyBwcmludHMgMworICAgICAg
ICBgYGAKKworICAgICAgICBHZW5lcmF0ZWQgYnl0ZWNvZGUgZm9yIHRoZSBmb2xsb3dpbmcgcmVw
cmVzZW50YXRpb246CisgICAgICAgIGBgYAorICAgICAgICB7IC8vIGNsYXNzIGxleGljYWwgc2Nv
cGUKKyAgICAgICAgICAgIGNvbnN0IEBwcml2YXRlQnJhbmQwID0gQGNyZWF0ZVByaXZhdGVTeW1i
b2woKTsKKyAgICAgICAgICAgIGNvbnN0ICNtID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gMzsgfQor
ICAgICAgICAgICAgQy5wcm90b3R5cGUubWV0aG9kID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgQGdldERpcmVjdEJ5VmFsKHRoaXMsIEBwcml2YXRlQnJhbmQwKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gI20uY2FsbCh0aGlzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEMg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBAcHV0RGlyZWN0QnlWYWwodGhpcywgQHBy
aXZhdGVCcmFuZDAsIEBwcml2YXRlQnJhbmQwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICAgICAgY29uc29sZS5sb2coYy5tZXRob2Qo
KSk7IC8vIHByaW50cyAzCisgICAgICAgIGBgYAorCisgICAgICAgIFRoZSBicmFuZCBjaGVjayBp
cyBwZXJmb3JtZWQgYnkgYGdldF9ieV92YWxfZGlyZWN0YCwgd2hlcmUgd2UgcmUtdXNlCisgICAg
ICAgIHRoZSBtZWNoYW5pc20gaW50cm9kdWNlZCBieSBwcml2YXRlIGNsYXNzIGZpZWxkcy4gV2Ug
Y2FuIHNlZSB0aGUKKyAgICAgICAgcHJpdmF0ZSBicmFuZCBhcyBhIHNwZWNpYWwgcHJpdmF0ZSBm
aWVsZCBpbnN0YWxsZWQgZHVyaW5nCisgICAgICAgIGBbW0NvbnN0cnVjdF1dYCBvcGVyYXRpb24u
IFNpbmNlIHRoZSBwcml2YXRlIGJyYW5kIGlzIGEgcHJpdmF0ZSBmaWVsZCwKKyAgICAgICAgd2Ug
dGhyb3cgYFR5cGVFcnJvcmAgd2hlbiB0aGUgbG9va3VwIGZhaWwuCisKKyAgICAgICAgVG8gcHJv
cGVybHkgc3RvcmUgdGhlIHByaXZhdGUgYnJhbmQgb2YgYSBjbGFzcyBvbiBhbGwgT2JqZWN0cywK
KyAgICAgICAgaW5jbHVkaW5nIFByb3hpZXMsIHdlIHVzZSAiQHB1dERpcmVjdEJ5VmFsIi4gVGhp
cyBpbnRydWN0aW9uIHB1dHMKKyAgICAgICAgdmFsdWUgb24gT2JqZWN0J3MgcHJvcGVydGllcyB3
aXRob3V0IGV4ZWN1dGluZyBbW1B1dF1dIHNlbWFudGljcy4KKyAgICAgICAgV2l0aCB0aGlzIGRl
c2lnbiwgd2UgYXZvaWQgYWxsb2NhdGluZyBhIGZpZWxkIGZvciBldmVyeSBpbnN0YW5jZQorICAg
ICAgICBvZiBhIGNsYXNzLCBzaW5jZSBwcml2YXRlIG1ldGhvZHMgYXJlIHN0b3JlZCBvbiBjbGFz
cworICAgICAgICBsZXhpY2FsIHNjb3BlLiBFdmVyeSBvYmplY3Qgd2lsbCBoYXZlIHRvIGFsbG9j
YXRlIGl0cyBwcml2YXRlCisgICAgICAgIGJyYW5kIGxpc3QuIFRoaXMgZGVzaWduIGluc2VydHMg
bm8gb3ZlcmhlYWQgb24gb2JqZWN0cyBhbmQgY2xhc3NlcworICAgICAgICB3aXRob3V0IHByaXZh
dGUgbWV0aG9kcy9hY2Nlc3Nvci4KKworICAgICAgICBSZXNvbHZpbmcgY29ycmVjdCBicmFuZCBj
aGVjazoKKworICAgICAgICBJbiB0aGUgY2FzZSBvZiBzaGFkb3dpbmcgb3IgbmVzdGVkIHNjb3Bl
LCB3ZSBuZWVkIHRvIGVtaXQgYnJhbmQKKyAgICAgICAgY2hlY2tzIHRvIHRoZSByaWdodCBwcml2
YXRlIGJyYW5kLiBTZWUgY29kZSBiZWxvdzoKKworICAgICAgICBgYGAKKyAgICAgICAgY2xhc3Mg
QyB7CisgICAgICAgICAgICAjbSgpIHsgcmV0dXJuIDM7IH0KKyAgICAgICAgICAgIG1ldGhvZCgp
IHsgcmV0dXJuIHRoaXMuI20oKTt9CisKKyAgICAgICAgICAgIEEgPSBjbGFzcyB7CisgICAgICAg
ICAgICAgICAgI20yKCkgeyByZXR1cm4gMzsgfQorICAgICAgICAgICAgICAgIGZvbyhvKSB7IHJl
dHVybiB0aGlzLiNtKCk7IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBgYGAK
KworICAgICAgICBUaGUgY2FsbCBvZiAiI20iIGluIGBmb29gIHJlZmVycyB0byAiQzo6I20iLiBJ
biBzdWNoIGNhc2UsIHdlIG5lZWQgdG8KKyAgICAgICAgY2hlY2sgQydzIHByaXZhdGUgYnJhbmQs
IGluc3RlYWQgb2YgQSdzIHByaXZhdGUgYnJhbmQuCisgICAgICAgIFRvIHBlcmZvcm0gdGhlIHBy
b3BlciBjaGVjaywgd2UgZmlyc3QgcmVzb2x2ZSBzY29wZSBvZiAiI20iIGFuZCB0aGVuCisgICAg
ICAgIGNoZWNrIHRoZSBwcml2YXRlIGJyYW5kIG9mIHRoaXMgc2NvcGUgKHRoZSBzY29wZSB3aGVy
ZSB0aGUgcHJpdmF0ZQorICAgICAgICBtZXRob2QgYW5kIGJyYW5kIGFyZSBzdG9yZWQgaXMgdGhl
IHNhbWUpLgorICAgICAgICBTbyB0aGUgYnl0ZWNvZGUgdG8gbG9va3VwIHRoZSByaWdodCBicmFu
ZCBpczoKKworICAgICAgICBgYGAKKyAgICAgICAgcmVzb2x2ZV9zY29wZSBsb2MxMCwgIiNtIgor
ICAgICAgICBnZXRfZnJvbV9zY29wZSBsb2MxMSwgbG9jMTAsICJAcHJpdmF0ZUJyYW5kIgorICAg
ICAgICBnZXRfYnlfdmFsX2RpcmVjdCBsb2MxMiwgdGhpcywgbG9jMTEKKyAgICAgICAgZ2V0X2Zy
b21fc2NvcGUgbG9jMTEsIGxvYzEwLCAiI20iCisgICAgICAgIC8vIHNldHVwIGNhbGwgZnJhbWUK
KyAgICAgICAgY2FsbCBsb2MxMSwgLi4uCisgICAgICAgIC8vIC4uLgorICAgICAgICBgYGAKKwor
ICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6CisgICAgICAgIChKU0M6
OkJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yKToKKyAgICAgICAg
KEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKToKKyAgICAgICAgKiBi
dWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaDoKKworICAgICAgICBXZSBhcmUgYWRkaW5nIGEg
bmV3IHBhcmFtZXRlciBgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnRgIHRvIHByb3BhZ2F0ZQorICAg
ICAgICB3aGVuIGEgZGVmYXVsdCBjb25zdHJ1Y3RvciBuZWVkcyB0byBlbWl0IGNvZGUgdG8gc2V0
dXAgcHJpdmF0ZSBicmFuZAorICAgICAgICBvbiBpbnN0YW5jZXMuCisKKyAgICAgICAgKiBidWls
dGlucy9CdWlsdGluTmFtZXMuaDoKKworICAgICAgICBBZGRpbmcgYEBjcmVhdGVQcml2YXRlU3lt
Ym9sYCBhbmQgYEBwcml2YXRlQnJhbmRgLgorICAgICAgICBgQGNyZWF0ZVByaXZhdGVTeW1ib2xg
IGlzIHVzZWQgYXMgYSBmdW5jdGlvbiB0byBlbmFibGUgdXMgYWxsb2NhdGUKKyAgICAgICAgUHJp
dmF0ZVN5bWJvbHMgYXQgZXhlY3V0aW9uIHRpbWUuIGBAcHJpdmF0ZUJyYW5kYCBpcyB0aGUgbmFt
ZSB3ZSB1c2UKKyAgICAgICAgdG8gc3RvcmUgcHJpdmF0ZSBicmFuZCBvbiBjbGFzcydzIHNjb3Bl
LgorCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVj
b2RlL0J5dGVjb2RlVXNlRGVmLmg6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNv
ZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToK
KyAgICAgICAgKiBieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oOgorICAgICAgICAoSlNDOjpFeGVj
dXRhYmxlSW5mbzo6RXhlY3V0YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5m
bzo6cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVu
bGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5o
OgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6cHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
LmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKToK
KyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisKKyAg
ICAgICAgV2UgY2hhbmdlZCBCeXRlY29kZUdlbmVyYXRvciBmb3IgRnVuY3Rpb25Ob2RlIGFuZCBF
dmFsTm9kZSB0bworICAgICAgICBwcm9wYWdhdGUgcGFyZW50U2NvcGUgVmFyaWFibGVFbnZpcm9u
bWVudC4gVGhlc2UgZW52aXJvbm1lbnRzIHN0b3JlcworICAgICAgICBwcml2YXRlIG5hbWUgZW50
cmllcyB0aGF0IGFyZSB2aXNpYmxlIGludG8gdGhlIHNjb3BlIG9mIHRoZQorICAgICAgICBmdW5j
dGlvbi9ldmFsIGluIGFkZGl0aW9uIHRvIFREWiB2YXJpYWJsZXMuCisgICAgICAgIFRoaXMgaXMg
cmVxdWlyZWQgdG8gaWRlbnRpZnkgdGhlIGtpbmQgb2YgYWNjZXNzIGEgcHJpdmF0ZSBuYW1lIGlz
CisgICAgICAgIHJlZmVycmluZyB0bywgc2luY2UgaXQgY2FuIGJlIGEgcHJpdmF0ZSBmaWVsZCBv
ciBhIHByaXZhdGUgbWV0aG9kLgorICAgICAgICBHaXZlbiB0aGlzIGNoYW5nZSwgd2UgY2hhbmdl
ZCB0aGUgbmFtZSBvZiBWYXJpYWJsZUVudmlyb25tZW50CisgICAgICAgIGZyb20gYHBhcmVudFNj
b3BlVERaVmFyaWFibGVzYCB0byBgcGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50YC4KKwor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aW5zdGFudGlhdGVMZXhpY2FsVmFyaWFi
bGVzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDaGVja1ByaXZhdGVC
cmFuZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlUHJpdmF0
ZUJyYW5kKToKKworICAgICAgICBUaGUgcHJvY2VzcyB0byBjcmVhdGUgYSBwcml2YXRlIGJyYW5k
IGlzIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAxLiBDcmVhdGUgYSBQcml2YXRlU3ltYm9sIHVz
aW5nIGBAY3JlYXRlUHJpdmF0ZVN5bWJvbGAuCisgICAgICAgICAgICAyLiBTdG9yZSB0aGlzIHN5
bWJvbCBpbnRvIGEgZ2l2ZW4gc2NvcGUgKGkuZSBjbGFzcyBsZXhpY2FsIHNjb3BlKQorICAgICAg
ICAgICAgICAgb24gYEBwcml2YXRlQnJhbmRgIHZhcmlhYmxlLgorCisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0SW5zdGFsbFByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0UHJpdmF0ZUJyYW5kKToKKworICAgICAgICBUaGlz
IG9wZXJhdGlvbiBsb29rdXAgZm9yIGBAcHJpdmF0ZUJyYW5kYCBmcm9tIGEgZ2l2ZW4gc2NvcGUu
CisKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmlzUHJpdmF0ZU1ldGhvZCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoUHJpdmF0ZUFjY2Vzc05hbWVzKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnBvcFByaXZhdGVBY2Nlc3NOYW1lcyk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZXRBdmFpbGFibGVQcml2YXRlQWNj
ZXNzTmFtZXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2V0VmFyaWFibGVz
VW5kZXJURFopOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0RlZmF1
bHRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3
SW5zdGFuY2VGaWVsZEluaXRpYWxpemVyRnVuY3Rpb24pOgorICAgICAgICAqIGJ5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oOgorCisgICAgICAgIFdlIGFkZGVkIGBtX3ByaXZhdGVOYW1l
c1N0YWNrYCB0byBCeXRlY29kZUdlbmVyYXRvciB0byByZXByZXNlbnQgdGhlCisgICAgICAgIHNj
b3BlIGNoYWluIG9mIGF2YWlsYWJsZSBwcml2YXRlIG5hbWVzIHdoaWxlIGdlbmVyYXRpbmcgYnl0
ZWNvZGUuCisKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnByaXZhdGVCcmFuZFJl
cXVpcmVtZW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Om1ha2VG
dW5jdGlvbik6CisKKyAgICAgICAgVGhpcyBjaGFuZ2UgaXMgcmVxdWlyZWQgdG8gcHJvcGVybHkg
cHJvcGFnYXRlIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50CisgICAgICAgIHRvIGFycm93IGZ1bmN0
aW9ucyB0aGF0IGNhbiBwb3RlbnRpYWxseSBjYWxsIHN1cGVyKCkuCisKKyAgICAgICAgKiBieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlMaXN0Tm9k
ZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6
ZW1pdEdldFByb3BlcnR5VmFsdWUpOgorCisgICAgICAgIEFkZGluZyBzdXBwb3J0IHRvIHByb3Bl
cmx5IGFjY2VzcyBwcml2YXRlIG1ldGhvZC4gU2luY2Ugd2Ugc3RvcmUKKyAgICAgICAgcHJpdmF0
ZSBtZXRob2RzIG9uIGNsYXNzIGxleGljYWwgc2NvcGUsIHdlIG5lZWQgYSBkaWZmZXJlbnQgc2V0
IG9mCisgICAgICAgIGluc3RydWN0aW9ucyB0byBhY2Nlc3MgYSBwcml2YXRlIG1ldGhvZC4KKwor
ICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6ZW1pdFB1dFByb3BlcnR5KToKKworICAgICAgICBJ
biB0aGUgY2FzZSBvZiB3ZSB0cnlpbmcgdG8gd3JpdGUgaW4gYSBwcml2YXRlIG1ldGhvZCwgd2Ug
bmVlZCB0bworICAgICAgICB0aHJvdyBhIFR5cGVFcnJvciBhY2NvcmRpbmcgdG8gc3BlY2lmaWNh
dGlvbgorICAgICAgICAoaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXByaXZhdGUtbWV0aG9kcy8j
c2VjLXByaXZhdGVmaWVsZHNldCkuCisKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsVmFsdWVO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDbGFzc0V4cHJOb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcDoKKyAgICAg
ICAgKEpTQzo6RGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKToK
KyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpj
YXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoK
KyAgICAgICAgKEpTQzo6ZXZhbCk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChK
U0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBq
aXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jaGVja19wcml2
YXRlX2JyYW5kKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgor
ICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFyPjo6
cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oOgor
ICAgICAgICAoSlNDOjpQcm9wZXJ0eU5vZGU6OlByb3BlcnR5Tm9kZSk6CisgICAgICAgICogcGFy
c2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25NZXRhZGF0YU5vZGU6OkZ1bmN0
aW9uTWV0YWRhdGFOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKiBw
YXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNl
Q2xhc3MpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6
OmRlY2xhcmVQcml2YXRlTWV0aG9kKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyTW9kZXMuaDoK
KyAgICAgICAgKiBwYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6
OlZhcmlhYmxlRW52aXJvbm1lbnQ6Om1hcmtQcml2YXRlTmFtZUFzRGVjbGFyZWQpOgorICAgICAg
ICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZU1ldGhvZCk6CisgICAg
ICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlTmFtZSk6CisgICAg
ICAgIChKU0M6OkNvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50OjpDb21wYWN0VmFyaWFibGVFbnZp
cm9ubWVudCk6CisgICAgICAgIChKU0M6OkNvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50OjpvcGVy
YXRvcj09IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQ6
OnRvVmFyaWFibGVFbnZpcm9ubWVudCBjb25zdCk6CisKKyAgICAgICAgV2UgYWRkZWQgc3VwcG9y
dCB0byBDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudCBhbHNvIHN0b3JlIHByaXZhdGUKKyAgICAg
ICAgbmFtZXMuCisKKyAgICAgICAgKiBwYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oOgorICAg
ICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5Ojppc01ldGhvZCBjb25zdCk6CisgICAgICAgIChK
U0M6OlByaXZhdGVOYW1lRW50cnk6OmlzUHJpdmF0ZUFjY2VzcyBjb25zdCk6CisgICAgICAgIChK
U0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmFkZFByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6
VmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVByaXZhdGVNZXRob2QpOgorICAgICAgICAoSlND
OjpWYXJpYWJsZUVudmlyb25tZW50OjpoYXNQcml2YXRlQWNjZXNzIGNvbnN0KToKKyAgICAgICAg
KiBydW50aW1lL0NhY2hlZFR5cGVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkUHJpdmF0ZU5h
bWVFbnRyeTo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6Q2FjaGVkUHJpdmF0ZU5hbWVFbnRyeTo6
ZGVjb2RlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkU3ltYm9sVGFibGU6OmRlY29kZSBj
b25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZVJhcmVEYXRhOjpl
bmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGVSYXJlRGF0YTo6
ZGVjb2RlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlOjpw
cml2YXRlQnJhbmRSZXF1aXJlbWVudCBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZENvZGVC
bG9jazo6cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmxp
bmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDYWNoZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OmVuY29kZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6
OkNhY2hlZENvZGVCbG9jazxDb2RlQmxvY2tUeXBlPjo6ZW5jb2RlKToKKyAgICAgICAgKiBydW50
aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0VW5saW5rZWRH
bG9iYWxGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmg6
CisgICAgICAgIChKU0M6OnByaXZhdGVCcmFuZFJlcXVpcmVtZW50KToKKyAgICAgICAgKEpTQzo6
cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ8RGlyZWN0RXZhbEV4ZWN1dGFibGU+KToKKyAgICAgICAg
KEpTQzo6Z2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ltcGwpOgorICAgICAgICAqIHJ1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9EaXJl
Y3RFdmFsRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OkRpcmVjdEV2YWxFeGVjdXRhYmxl
OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpEaXJlY3RFdmFsRXhlY3V0YWJsZTo6RGlyZWN0RXZh
bEV4ZWN1dGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuaDoK
KyAgICAgICAgKiBydW50aW1lL0V2YWxFeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV2YWxF
eGVjdXRhYmxlOjpleGVjdXRhYmxlSW5mbyBjb25zdCk6CisgICAgICAgIChKU0M6OkV2YWxFeGVj
dXRhYmxlOjpwcml2YXRlQnJhbmRSZXF1aXJlbWVudCBjb25zdCk6CisgICAgICAgICogcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0ZVByaXZhdGVTeW1ib2wp
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGlt
ZS9KU1Njb3BlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNTY29wZTo6Y29sbGVjdENsb3N1cmVWYXJp
YWJsZXNVbmRlclREWik6CisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0Lmg6
CisgICAgICAgIChKU0M6OkpTU3ltYm9sVGFibGVPYmplY3Q6OnNldFN5bWJvbFRhYmxlKToKKyAg
ICAgICAgKiBydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVu
dGltZS9PcHRpb25zLmg6CisgICAgICAgICogcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sLmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sOjpjcmVh
dGVQcml2YXRlKToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbC5oOgorICAgICAgICAqIHJ1bnRp
bWUvU3ltYm9sVGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZTo6Y2xvbmVTY29w
ZVBhcnQpOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuaDoKKwogMjAyMC0wOS0wNyAg
Sm9vbmdodW4gUGFyayAgPGpoNzE4LnBhcmtAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZC4gUmVtb3ZlIHRoZSBidWlsZCB3YXJuaW5nIGJlbG93IHNpbmNlIHIyNjY1NjcuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMu
Y3BwCmluZGV4IDgzMDQ5NDRiYWM0MzhiYzk3OTM0YTRhMDJkMDIxNTk1NWI0Y2FjZmIuLmE2NDRk
MzIyMWI2ODM2NTQxOWU0YTMzZWIxZjZhYjhmYjZlMTU0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCkBAIC01OSw3
ICs1OSw3IEBAIFNvdXJjZUNvZGUgQnVpbHRpbkV4ZWN1dGFibGVzOjpkZWZhdWx0Q29uc3RydWN0
b3JTb3VyY2VDb2RlKENvbnN0cnVjdG9yS2luZCBjb25zCiAgICAgcmV0dXJuIFNvdXJjZUNvZGUo
KTsKIH0KIAotVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6
Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yKENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQs
IGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyKQorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0
aW5FeGVjdXRhYmxlczo6Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yKENvbnN0cnVjdG9yS2luZCBj
b25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJl
bWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCkKIHsKICAgICBzd2l0Y2ggKGNvbnN0cnVjdG9y
S2luZCkgewogICAgIGNhc2UgQ29uc3RydWN0b3JLaW5kOjpOb25lOgpAQCAtNjcsNyArNjcsNyBA
QCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVE
ZWZhdWx0Q29uc3RydWN0b3IoQ29uc3RydQogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnN0
cnVjdG9yS2luZDo6QmFzZToKICAgICBjYXNlIENvbnN0cnVjdG9yS2luZDo6RXh0ZW5kczoKLSAg
ICAgICAgcmV0dXJuIGNyZWF0ZUV4ZWN1dGFibGUobV92bSwgZGVmYXVsdENvbnN0cnVjdG9yU291
cmNlQ29kZShjb25zdHJ1Y3RvcktpbmQpLCBuYW1lLCBjb25zdHJ1Y3RvcktpbmQsIENvbnN0cnVj
dEFiaWxpdHk6OkNhbkNvbnN0cnVjdCwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpOworICAg
ICAgICByZXR1cm4gY3JlYXRlRXhlY3V0YWJsZShtX3ZtLCBkZWZhdWx0Q29uc3RydWN0b3JTb3Vy
Y2VDb2RlKGNvbnN0cnVjdG9yS2luZCksIG5hbWUsIGNvbnN0cnVjdG9yS2luZCwgQ29uc3RydWN0
QWJpbGl0eTo6Q2FuQ29uc3RydWN0LCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgcHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTc4LDcgKzc4LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUoY29uc3Qg
U28KICAgICByZXR1cm4gY3JlYXRlRXhlY3V0YWJsZShtX3ZtLCBjb2RlLCBuYW1lLCBjb25zdHJ1
Y3RvcktpbmQsIGNvbnN0cnVjdEFiaWxpdHksIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpO
byk7CiB9CiAKLVVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6
OmNyZWF0ZUV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGNvbnN0
IElkZW50aWZpZXImIG5hbWUsIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIENvbnN0
cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIg
bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgU291cmNl
Q29kZSYgc291cmNlLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIE5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJh
bmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCkKIHsKICAgICAvLyBGSVhNRTog
Q2FuIHdlIGp1c3QgbWFrZSBNZXRhRGF0YSBjb21wdXRhdGlvbiBiZSBjb25zdGV4cHIgYW5kIGhh
dmUgdGhlIGNvbXBpbGVyIGRvIHRoaXMgZm9yIHVzPwogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTMyNzIKQEAgLTI1MSw3ICsyNTEsNyBAQCBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxl
KFZNJiB2bSwgY29uc3QgUwogICAgICAgICB9CiAgICAgfQogCi0gICAgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlOjpjcmVhdGUodm0sIHNvdXJjZSwgJm1ldGFkYXRhLCBraW5kLCBjb25zdHJ1Y3RBYmlsaXR5
LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIFdURjo6bnVsbG9wdCwgRGVyaXZlZENvbnRl
eHRUeXBlOjpOb25lLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgaXNCdWlsdGluRGVmYXVs
dENsYXNzQ29uc3RydWN0b3IpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5j
dGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBz
b3VyY2UsICZtZXRhZGF0YSwga2luZCwgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRN
b2RlOjpDbGFzc2ljLCBXVEY6Om51bGxvcHQsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgbmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBpc0J1aWx0
aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3Rvcik7CiAgICAgcmV0dXJuIGZ1bmN0aW9uRXhlY3V0YWJs
ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5FeGVjdXRhYmxlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5F
eGVjdXRhYmxlcy5oCmluZGV4IDQ1MTYzOGU4NzNmNzk2YzhjNGQyNjI5YzdiNWFhZmJmYWViMjRi
OTguLjQzZTM4Mjc1YjFiOWFhMzYxNjdhMmFlOTFkMzU4Nzg2MDM4MDc4M2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgKQEAg
LTU4LDkgKzU4LDkgQEAgU291cmNlQ29kZSBuYW1lIyNTb3VyY2UoKTsKICN1bmRlZiBFWFBPU0Vf
QlVJTFRJTl9FWEVDVVRBQkxFUwogCiAgICAgc3RhdGljIFNvdXJjZUNvZGUgZGVmYXVsdENvbnN0
cnVjdG9yU291cmNlQ29kZShDb25zdHJ1Y3RvcktpbmQpOwotICAgIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiBjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoQ29uc3RydWN0b3JLaW5kLCBjb25z
dCBJZGVudGlmaWVyJiBuYW1lLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcik7CisgICAgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZURlZmF1bHRDb25zdHJ1Y3RvcihDb25zdHJ1
Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7CiAKLSAgICBzdGF0aWMgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUV4ZWN1dGFibGUoVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwg
Y29uc3QgSWRlbnRpZmllciYsIENvbnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJpbGl0eSwgTmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpOworICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogY3JlYXRlRXhlY3V0YWJsZShWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBJ
ZGVudGlmaWVyJiwgQ29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBOZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBQcml2YXRlQnJhbmRS
ZXF1aXJlbWVudDo6Tm9uZSk7CiAKICAgICB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbGx5KCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFt
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRl
eCAyYjVmOTAyODIwZWJlYjgxZDYyN2ZjMTZmYWVkN2Q5NDE3MWY1ZTQwLi41NjM3ZWI4ZmQzMDI1
YjI1MWU0MTJhNjRiY2FkZWY0MGE1MTBiNjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCkBAIC0xNjksNiArMTY5LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgbWFjcm8od2ViQXNzZW1ibHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWwpIFwKICAg
ICBtYWNybyh3ZWJBc3NlbWJseUluc3RhbnRpYXRlU3RyZWFtaW5nSW50ZXJuYWwpIFwKICAgICBt
YWNybyhpbnN0YW5jZUZpZWxkSW5pdGlhbGl6ZXIpIFwKKyAgICBtYWNybyhwcml2YXRlQnJhbmQp
IFwKICAgICBtYWNybyhoYXNPd25Qcm9wZXJ0eUZ1bmN0aW9uKSBcCiAgICAgbWFjcm8oY3JlYXRl
UHJpdmF0ZVN5bWJvbCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0V4ZWN1dGFibGVJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhl
Y3V0YWJsZUluZm8uaAppbmRleCA0OWVkZDUyODVkNWMyYzI4YjFjOWE0YmNlZWY0NTE3MTk5MGJl
OTFjLi5jZDU5ZmI0YTczM2U5MjRlNGViMTNhOWMwMDY5MzA0MmQzOWQ5ZGU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaApAQCAtMzYsOSAr
MzYsMTAgQEAgZW51bSBjbGFzcyBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA6IHVpbnQ4X3Qg
eyBObywgWWVzIH07CiAvLyBGSVhNRTogVGhlc2UgZmxhZ3MsIFBhcnNlck1vZGVzIGFuZCBwcm9w
YWdhdGlvbiB0byBYWFhDb2RlQmxvY2tzIHNob3VsZCBiZSByZW9yZ2FuaXplZC4KIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDcKIHN0cnVjdCBFeGVjdXRh
YmxlSW5mbyB7Ci0gICAgRXhlY3V0YWJsZUluZm8oYm9vbCB1c2VzRXZhbCwgYm9vbCBpc0NvbnN0
cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0
b3JLaW5kLCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgU3VwZXJCaW5kaW5nIHN1cGVy
QmluZGluZywgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwgRGVyaXZlZENvbnRleHRUeXBlIGRl
cml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0NsYXNz
Q29udGV4dCwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSkKKyAgICBFeGVjdXRhYmxl
SW5mbyhib29sIHVzZXNFdmFsLCBib29sIGlzQ29uc3RydWN0b3IsIFByaXZhdGVCcmFuZFJlcXVp
cmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBD
b25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0
TW9kZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9k
ZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0
aW9uQ29udGV4dCwgYm9vbCBpc0NsYXNzQ29udGV4dCwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250
ZXh0VHlwZSkKICAgICAgICAgOiBtX3VzZXNFdmFsKHVzZXNFdmFsKQogICAgICAgICAsIG1faXND
b25zdHJ1Y3Rvcihpc0NvbnN0cnVjdG9yKQorICAgICAgICAsIG1fcHJpdmF0ZUJyYW5kUmVxdWly
ZW1lbnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KSkKICAg
ICAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGlzQnVpbHRpbkZ1bmN0aW9uKQogICAgICAgICAs
IG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQp
KQogICAgICAgICAsIG1fc3VwZXJCaW5kaW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdXBlckJp
bmRpbmcpKQpAQCAtNTcsNiArNTgsNyBAQCBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewogCiAgICAg
Ym9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KICAgICBib29sIGlz
Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KKyAgICBQcml2
YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PFByaXZhdGVCcmFuZFJlcXVpcmVtZW50PihtX3ByaXZhdGVCcmFuZFJl
cXVpcmVtZW50KTsgfQogICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9y
S2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25z
dHJ1Y3RvcktpbmQpOyB9CiAgICAgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZygpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PFN1cGVyQmluZGluZz4obV9zdXBlckJpbmRpbmcpOyB9CkBAIC03
MSw2ICs3Myw3IEBAIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiBwcml2YXRlOgogICAgIHVuc2ln
bmVkIG1fdXNlc0V2YWwgOiAxOwogICAgIHVuc2lnbmVkIG1faXNDb25zdHJ1Y3RvciA6IDE7Cisg
ICAgdW5zaWduZWQgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA6IDE7CiAgICAgdW5zaWduZWQg
bV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQg
OiAyOwogICAgIHVuc2lnbmVkIG1fc3VwZXJCaW5kaW5nIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IGIzYWRj
MGI3N2ViN2M3MjQxODZhOTgxYzYzNTNjMzE5YTU5OWIwZTAuLjkzZGZmNzc0MmQzNzRlZWMzZWZh
MmRlMDc0ZTI4NDgxZjk2OTYxNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtNjksNiArNjksMTAgQEAgVW5saW5r
ZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIENvZGVUeXBlIGNvZGUKICAgICAgICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeShob2xk
TG9jayhjZWxsTG9jaygpKSk7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fbmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXI6Olllcyk7CiAgICAgfQorICAgIGlmIChpbmZvLnByaXZhdGVCcmFuZFJlcXVpcmVtZW50
KCkgPT0gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5lZWRlZCkgeworICAgICAgICBjcmVhdGVS
YXJlRGF0YUlmTmVjZXNzYXJ5KGhvbGRMb2NrKGNlbGxMb2NrKCkpKTsKKyAgICAgICAgbV9yYXJl
RGF0YS0+bV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQ
cml2YXRlQnJhbmRSZXF1aXJlbWVudDo6TmVlZGVkKTsKKyAgICB9CiB9CiAKIHZvaWQgVW5saW5r
ZWRDb2RlQmxvY2s6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmgKaW5kZXggMDBkYzYxNjMzNWZkMzFiMDQzMjUxZTM0NDAwZTU3ZGVmNTMxNWQ1Zi4u
MWY1MWVjZTVkNmY4NmQ3MDk1MTFiNGE0YzE4MmM2NGNiZmExODNiZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTI2Niw2
ICsyNjYsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gTmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXI6Ok5vOwogICAgIH0KIAorICAgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVC
cmFuZFJlcXVpcmVtZW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX3JhcmVEYXRhKQor
ICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFByaXZhdGVCcmFuZFJlcXVpcmVtZW50Piht
X3JhcmVEYXRhLT5tX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50KTsKKyAgICAgICAgcmV0dXJuIFBy
aXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lOworICAgIH0KKwogICAgIHZvaWQgZHVtcChQcmlu
dFN0cmVhbSYpIGNvbnN0OwogCiAgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBsaXZlbmVz
c0FuYWx5c2lzKENvZGVCbG9jayogY29kZUJsb2NrKQpAQCAtNDA3LDYgKzQxNCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgUmVmQ291bnRlZEFycmF5PENvbnN0YW50SWRlbnRpZmllclNldEVudHJ5PiBt
X2NvbnN0YW50SWRlbnRpZmllclNldHM7CiAKICAgICAgICAgdW5zaWduZWQgbV9uZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplciA6IDE7CisgICAgICAgIHVuc2lnbmVkIG1fcHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQgOiAxOwogICAgIH07CiAKICAgICBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNldChJbnN0
cnVjdGlvblN0cmVhbTo6T2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmgKaW5kZXggMmViOTg0
YzFiMDVhNDVlMGFhNTIwZTFmZDM3OGFkOWUyZmM5MzIyMi4uOTRjNjg3MGU5OTRjMmJmNWM5ODJj
ZTk1MmU0YzUzNGJkYzk2YjQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmgKQEAgLTUwLDYgKzUw
LDcgQEAgcHVibGljOgogICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJl
dHVybiBtX2NvZGVCbG9jay0+c3VwZXJCaW5kaW5nKCk7IH0KICAgICBKU1BhcnNlclNjcmlwdE1v
ZGUgc2NyaXB0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5zY3JpcHRNb2RlKCk7
IH0KICAgICBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplcigpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5uZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplcigpOyB9CisgICAgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWly
ZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+cHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQoKTsgfQogICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+
dXNlc0V2YWwoKTsgfQogICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJl
dHVybiBtX2NvZGVCbG9jay0+cGFyc2VNb2RlKCk7IH0KICAgICBib29sIGlzQXJyb3dGdW5jdGlv
bigpIHsgcmV0dXJuIG1fY29kZUJsb2NrLT5pc0Fycm93RnVuY3Rpb24oKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZS5jcHAKaW5kZXggNDYxZDlmYWRkNDhiMzViYzk0ZWRkNjEwYjczODdjZWE5MDJj
MTRmNi4uZTU4NTUxZjAwZDI1MGJkYmM0ZjZkYzRiODM3ZGM4YTg5NDI3ZDRmOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuY3BwCkBAIC03MCwxMSArNzAsMTEgQEAgc3RhdGljIFVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKIAogICAg
IGJvb2wgaXNDbGFzc0NvbnRleHQgPSBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSA9PSBTdXBl
ckJpbmRpbmc6Ok5lZWRlZDsKIAotICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3Vs
dCA9IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSh2bSwgRnVuY3Rpb25Db2RlLCBF
eGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+dXNlc0V2YWwoKSwga2luZCA9PSBDb2RlRm9yQ29uc3Ry
dWN0LCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24sIGV4ZWN1dGFibGUt
PmNvbnN0cnVjdG9yS2luZCgpLCBzY3JpcHRNb2RlLCBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmco
KSwgcGFyc2VNb2RlLCBleGVjdXRhYmxlLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgZXhlY3V0YWJs
ZS0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgZmFsc2UsIGlzQ2xhc3NDb250ZXh0LCBF
dmFsQ29udGV4dFR5cGU6OkZ1bmN0aW9uRXZhbENvbnRleHQpLCBjb2RlR2VuZXJhdGlvbk1vZGUp
OworICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IFVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2s6OmNyZWF0ZSh2bSwgRnVuY3Rpb25Db2RlLCBFeGVjdXRhYmxlSW5mbyhmdW5j
dGlvbi0+dXNlc0V2YWwoKSwga2luZCA9PSBDb2RlRm9yQ29uc3RydWN0LCBleGVjdXRhYmxlLT5w
cml2YXRlQnJhbmRSZXF1aXJlbWVudCgpLCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWlsdGlu
RnVuY3Rpb24sIGV4ZWN1dGFibGUtPmNvbnN0cnVjdG9yS2luZCgpLCBzY3JpcHRNb2RlLCBleGVj
dXRhYmxlLT5zdXBlckJpbmRpbmcoKSwgcGFyc2VNb2RlLCBleGVjdXRhYmxlLT5kZXJpdmVkQ29u
dGV4dFR5cGUoKSwgZXhlY3V0YWJsZS0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgZmFs
c2UsIGlzQ2xhc3NDb250ZXh0LCBFdmFsQ29udGV4dFR5cGU6OkZ1bmN0aW9uRXZhbENvbnRleHQp
LCBjb2RlR2VuZXJhdGlvbk1vZGUpOwogCi0gICAgVmFyaWFibGVFbnZpcm9ubWVudCBwYXJlbnRT
Y29wZVREWlZhcmlhYmxlcyA9IGV4ZWN1dGFibGUtPnBhcmVudFNjb3BlVERaVmFyaWFibGVzKCk7
CisgICAgVmFyaWFibGVFbnZpcm9ubWVudCBwYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQg
PSBleGVjdXRhYmxlLT5wYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQoKTsKICAgICBFQ01B
TW9kZSBlY21hTW9kZSA9IGV4ZWN1dGFibGUtPmlzSW5TdHJpY3RDb250ZXh0KCkgPyBFQ01BTW9k
ZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCk7Ci0gICAgZXJyb3IgPSBCeXRlY29kZUdl
bmVyYXRvcjo6Z2VuZXJhdGUodm0sIGZ1bmN0aW9uLmdldCgpLCBzb3VyY2UsIHJlc3VsdCwgY29k
ZUdlbmVyYXRpb25Nb2RlLCAmcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIGVjbWFNb2RlKTsKKyAg
ICBlcnJvciA9IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSh2bSwgZnVuY3Rpb24uZ2V0KCks
IHNvdXJjZSwgcmVzdWx0LCBjb2RlR2VuZXJhdGlvbk1vZGUsICYgcGFyZW50U2NvcGVWYXJpYWJs
ZUVudmlyb25tZW50LCBlY21hTW9kZSk7CiAKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTgyLDcgKzgyLDcgQEAgc3RhdGljIFVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU291
cmNlQ29kZSYgcGFyZW50U291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5r
ZWRGdW5jdGlvbktpbmQga2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBK
U1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgT3B0aW9uYWw8Q29tcGFjdFZhcmlhYmxlTWFw
OjpIYW5kbGU+IHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVy
aXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplciwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvcikKK1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBwYXJlbnRTb3VyY2Us
IEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBraW5kLCBD
b25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3Jp
cHRNb2RlLCBPcHRpb25hbDxDb21wYWN0VmFyaWFibGVNYXA6OkhhbmRsZT4gcGFyZW50U2NvcGVW
YXJpYWJsZUVudmlyb25tZW50LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBl
LCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwg
UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGJvb2wgaXNC
dWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IpCiAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUp
CiAgICAgLCBtX2ZpcnN0TGluZU9mZnNldChub2RlLT5maXJzdExpbmUoKSAtIHBhcmVudFNvdXJj
ZS5maXJzdExpbmUoKS5vbmVCYXNlZEludCgpKQogICAgICwgbV9pc0luU3RyaWN0Q29udGV4dChu
b2RlLT5pc0luU3RyaWN0Q29udGV4dCgpKQpAQCAtMTAzLDYgKzEwMyw3IEBAIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0CiAgICAgLCBtX3R5cGVQcm9maWxpbmdTdGFydE9mZnNldChub2RlLT5mdW5j
dGlvbktleXdvcmRTdGFydCgpKQogICAgICwgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KG5vZGUt
PnN0YXJ0U3RhcnRPZmZzZXQoKSArIG5vZGUtPnNvdXJjZSgpLmxlbmd0aCgpIC0gMSkKICAgICAs
IG1fcGFyYW1ldGVyQ291bnQobm9kZS0+cGFyYW1ldGVyQ291bnQoKSkKKyAgICAsIG1fcHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHByaXZhdGVCcmFuZFJlcXVp
cmVtZW50KSkKICAgICAsIG1fZmVhdHVyZXMoMCkKICAgICAsIG1fc291cmNlUGFyc2VNb2RlKG5v
ZGUtPnBhcnNlTW9kZSgpKQogICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSkKQEAgLTEyMiwxMiArMTIzLDEzIEBAIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0CiAgICAgQVNTRVJUKG1fc2NyaXB0TW9kZSA9PSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oc2NyaXB0TW9kZSkpOwogICAgIEFTU0VSVChtX3N1cGVyQmluZGluZyA9
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+c3VwZXJCaW5kaW5nKCkpKTsKICAgICBBU1NF
UlQobV9kZXJpdmVkQ29udGV4dFR5cGUgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlcml2ZWRD
b250ZXh0VHlwZSkpOworICAgIEFTU0VSVChtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID09IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihwcml2YXRlQnJhbmRSZXF1aXJlbWVudCkpOwogICAgIEFTU0VS
VCghKG1faXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IgJiYgY29uc3RydWN0b3JLaW5k
KCkgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lKSk7CiAgICAgQVNTRVJUKCFtX25lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyIHx8IChpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIHx8IGRlcml2
ZWRDb250ZXh0VHlwZSA9PSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRDb25zdHJ1Y3RvckNv
bnRleHQpKTsKICAgICBpZiAoIW5vZGUtPmNsYXNzU291cmNlKCkuaXNOdWxsKCkpCiAgICAgICAg
IHNldENsYXNzU291cmNlKG5vZGUtPmNsYXNzU291cmNlKCkpOwotICAgIGlmIChwYXJlbnRTY29w
ZVREWlZhcmlhYmxlcykKLSAgICAgICAgZW5zdXJlUmFyZURhdGEoKS5tX3BhcmVudFNjb3BlVERa
VmFyaWFibGVzID0gV1RGTW92ZSgqcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOworICAgIGlmIChw
YXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQpCisgICAgICAgIGVuc3VyZVJhcmVEYXRhKCku
bV9wYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQgPSBXVEZNb3ZlKCpwYXJlbnRTY29wZVZh
cmlhYmxlRW52aXJvbm1lbnQpOwogfQogCiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6flVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKaW5kZXggOGZm
ZTMwMGQ4NDQyNzFkNGY2ZGRmOTE1ZDJkYmUyYTUyZmMwMmE3Zi4uMzQ1Mzc0MzdkYTkwOWNmNDhl
MDFjNTU3NDEzNjc5NThlZDg0ZGZkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKQEAgLTcwLDEw
ICs3MCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAmdm0udW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGVTcGFjZS5zcGFjZTsKICAgICB9CiAKLSAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqIGNyZWF0ZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVu
Y3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIHVubGlua2VkRnVu
Y3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2Ny
aXB0TW9kZSBzY3JpcHRNb2RlLCBPcHRpb25hbDxDb21wYWN0VmFyaWFibGVNYXA6OkhhbmRsZT4g
cGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4
dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyLCBib29sIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yID0gZmFsc2UpCisgICAg
c3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0mIHZtLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1
bmN0aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1
Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgT3B0aW9uYWw8Q29tcGFj
dFZhcmlhYmxlTWFwOjpIYW5kbGU+IHBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCwgRGVy
aXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50
IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29sIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0
cnVjdG9yID0gZmFsc2UpCiAgICAgewogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZT4odm0uaGVhcCkpCi0gICAgICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSh2bSwgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNv
dXJjZSwgbm9kZSwgdW5saW5rZWRGdW5jdGlvbktpbmQsIGNvbnN0cnVjdEFiaWxpdHksIHNjcmlw
dE1vZGUsIFdURk1vdmUocGFyZW50U2NvcGVURFpWYXJpYWJsZXMpLCBkZXJpdmVkQ29udGV4dFR5
cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25z
dHJ1Y3Rvcik7CisgICAgICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0u
dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgbm9kZSwg
dW5saW5rZWRGdW5jdGlvbktpbmQsIGNvbnN0cnVjdEFiaWxpdHksIHNjcmlwdE1vZGUsIFdURk1v
dmUocGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50KSwgZGVyaXZlZENvbnRleHRUeXBlLCBu
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGlzQnVp
bHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENy
ZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KQEAgLTE0Myw2ICsx
NDMsOCBAQCBwdWJsaWM6CiAgICAgQ29kZUZlYXR1cmVzIGZlYXR1cmVzKCkgY29uc3QgeyByZXR1
cm4gbV9mZWF0dXJlczsgfQogICAgIGJvb2wgaGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSBjb25zdCB7
IHJldHVybiBtX2hhc0NhcHR1cmVkVmFyaWFibGVzOyB9CiAKKyAgICBQcml2YXRlQnJhbmRSZXF1
aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PFByaXZhdGVCcmFuZFJlcXVpcmVtZW50PihtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50KTsg
fQorCiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwog
ICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKQEAgLTE2OCwxMSArMTcwLDExIEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuICFtX3JhcmVEYXRhLT5tX2NsYXNzU291cmNlLmlzTnVs
bCgpOwogICAgIH0KIAotICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgcGFyZW50U2NvcGVURFpWYXJp
YWJsZXMoKSBjb25zdAorICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgcGFyZW50U2NvcGVWYXJpYWJs
ZUVudmlyb25tZW50KCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmICghbV9yYXJlRGF0YSB8fCAh
bV9yYXJlRGF0YS0+bV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcykKKyAgICAgICAgaWYgKCFtX3Jh
cmVEYXRhIHx8ICFtX3JhcmVEYXRhLT5tX3BhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCkK
ICAgICAgICAgICAgIHJldHVybiBWYXJpYWJsZUVudmlyb25tZW50KCk7Ci0gICAgICAgIHJldHVy
biBtX3JhcmVEYXRhLT5tX3BhcmVudFNjb3BlVERaVmFyaWFibGVzLmVudmlyb25tZW50KCkudG9W
YXJpYWJsZUVudmlyb25tZW50KCk7CisgICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX3BhcmVu
dFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudC5lbnZpcm9ubWVudCgpLnRvVmFyaWFibGVFbnZpcm9u
bWVudCgpOwogICAgIH0KICAgICAKICAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsg
cmV0dXJuIGlzQXJyb3dGdW5jdGlvblBhcnNlTW9kZShwYXJzZU1vZGUoKSk7IH0KQEAgLTIwOCw3
ICsyMTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIFNvdXJjZUNvZGUgbV9jbGFzc1NvdXJjZTsKICAg
ICAgICAgU3RyaW5nIG1fc291cmNlVVJMRGlyZWN0aXZlOwogICAgICAgICBTdHJpbmcgbV9zb3Vy
Y2VNYXBwaW5nVVJMRGlyZWN0aXZlOwotICAgICAgICBDb21wYWN0VmFyaWFibGVNYXA6OkhhbmRs
ZSBtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzOworICAgICAgICBDb21wYWN0VmFyaWFibGVNYXA6
OkhhbmRsZSBtX3BhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudDsKICAgICAgICAgVmVjdG9y
PEpTVGV4dFBvc2l0aW9uPiBtX2luc3RhbmNlRmllbGRMb2NhdGlvbnM7CiAgICAgfTsKIApAQCAt
MjI5LDcgKzIzMSw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUoVk0mLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgRnVu
Y3Rpb25NZXRhZGF0YU5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0
eSwgSlNQYXJzZXJTY3JpcHRNb2RlLCBPcHRpb25hbDxDb21wYWN0VmFyaWFibGVNYXA6OkhhbmRs
ZT4sICBKU0M6OkRlcml2ZWRDb250ZXh0VHlwZSwgSlNDOjpOZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplciwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3Rvcik7CisgICAgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0mLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwg
RnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJp
bGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlLCBPcHRpb25hbDxDb21wYWN0VmFyaWFibGVNYXA6Okhh
bmRsZT4sICBKU0M6OkRlcml2ZWRDb250ZXh0VHlwZSwgSlNDOjpOZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGJvb2wgaXNCdWlsdGluRGVmYXVsdENs
YXNzQ29uc3RydWN0b3IpOwogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKERlY29kZXIm
LCBjb25zdCBDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGUmKTsKIAogICAgIHN0YXRpYyB2b2lkIHZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKQEAgLTI2MSw3ICsyNjMsOCBAQCBw
cml2YXRlOgogICAgIHVuc2lnbmVkIG1faXNDYWNoZWQgOiAxOwogICAgIHVuc2lnbmVkIG1fdHlw
ZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0OwogICAgIHVuc2lnbmVkIG1fdHlwZVByb2ZpbGluZ0VuZE9m
ZnNldDsKLSAgICB1bnNpZ25lZCBtX3BhcmFtZXRlckNvdW50OworICAgIHVuc2lnbmVkIG1fcGFy
YW1ldGVyQ291bnQ6MzE7CisgICAgdW5zaWduZWQgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA6
IDE7CiAgICAgQ29kZUZlYXR1cmVzIG1fZmVhdHVyZXM7CiAgICAgU291cmNlUGFyc2VNb2RlIG1f
c291cmNlUGFyc2VNb2RlOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAKaW5kZXggYjFhNTQ4YTFmZmIwMzNmOTExMzE3MzFhZGMwYjVhOGViZThlYTFh
Ni4uMzJmOTAwZTc0YjJiMmQwNzRlZWNiYTkwYzNlYmQxZWUxNTdiMjI2YiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKQEAgLTI4Nyw3ICsyODcsNyBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6
Z2VuZXJhdGUoKQogICAgIHJldHVybiBQYXJzZXJFcnJvcihQYXJzZXJFcnJvcjo6RXJyb3JOb25l
KTsKIH0KIAotQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJv
Z3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9j
aywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25z
dCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRUNNQU1vZGUg
ZWNtYU1vZGUpCitCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBQ
cm9ncmFtTm9kZSogcHJvZ3JhbU5vZGUsIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogY29kZUJs
b2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNv
bnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCwg
RUNNQU1vZGUgZWNtYU1vZGUpCiAgICAgOiBCeXRlY29kZUdlbmVyYXRvckJhc2UobWFrZVVuaXF1
ZTxVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcj4odm0sIGNvZGVCbG9jayksIENvZGVCbG9jazo6
bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKQogICAgICwg
bV9jb2RlR2VuZXJhdGlvbk1vZGUoY29kZUdlbmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5v
ZGUocHJvZ3JhbU5vZGUpCkBAIC0zMDMsNyArMzAzLDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5
dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxpbmtl
ZFAKICAgICAsIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KHByb2dyYW1Ob2Rl
LT51c2VzQXJyb3dGdW5jdGlvbigpIHx8IHByb2dyYW1Ob2RlLT51c2VzRXZhbCgpKQogICAgICwg
bV9lY21hTW9kZShlY21hTW9kZSkKIHsKLSAgICBBU1NFUlRfVU5VU0VEKHBhcmVudFNjb3BlVERa
VmFyaWFibGVzLCAhcGFyZW50U2NvcGVURFpWYXJpYWJsZXMtPnNpemUoKSk7CisgICAgQVNTRVJU
X1VOVVNFRChwYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQsICFwYXJlbnRTY29wZVZhcmlh
YmxlRW52aXJvbm1lbnQtPnNpemUoKSk7CiAKICAgICBtX2NvZGVCbG9jay0+c2V0TnVtUGFyYW1l
dGVycygxKTsgLy8gQWxsb2NhdGUgc3BhY2UgZm9yICJ0aGlzIgogCkBAIC0zMzUsNyArMzM1LDcg
QEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5v
ZGUqIHByb2dyYW1Ob2RlLCBVbmxpbmtlZFAKICAgICB9CiB9CiAKLUJ5dGVjb2RlR2VuZXJhdG9y
OjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJh
dGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCog
cGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIEVDTUFNb2RlIGVjbWFNb2RlKQorQnl0ZWNvZGVHZW5l
cmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5v
ZGUsIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVH
ZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25t
ZW50KiBwYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQsIEVDTUFNb2RlIGVjbWFNb2RlKQog
ICAgIDogQnl0ZWNvZGVHZW5lcmF0b3JCYXNlKG1ha2VVbmlxdWU8VW5saW5rZWRDb2RlQmxvY2tH
ZW5lcmF0b3I+KHZtLCBjb2RlQmxvY2spLCBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVT
YXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSkKICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2Rl
KGNvZGVHZW5lcmF0aW9uTW9kZSkKICAgICAsIG1fc2NvcGVOb2RlKGZ1bmN0aW9uTm9kZSkKQEAg
LTM1OSw2ICszNTksOCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0m
IHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICwgbV9lY21hTW9k
ZShlY21hTW9kZSkKICAgICAsIG1fZGVyaXZlZENvbnRleHRUeXBlKGNvZGVCbG9jay0+ZGVyaXZl
ZENvbnRleHRUeXBlKCkpCiB7CisgICAgcHVzaFByaXZhdGVBY2Nlc3NOYW1lcygqcGFyZW50U2Nv
cGVWYXJpYWJsZUVudmlyb25tZW50KTsKKwogICAgIFN5bWJvbFRhYmxlKiBmdW5jdGlvblN5bWJv
bFRhYmxlID0gU3ltYm9sVGFibGU6OmNyZWF0ZShtX3ZtKTsKICAgICBmdW5jdGlvblN5bWJvbFRh
YmxlLT5zZXRVc2VzTm9uU3RyaWN0RXZhbChtX3VzZXNOb25TdHJpY3RFdmFsKTsKICAgICBpbnQg
c3ltYm9sVGFibGVDb25zdGFudEluZGV4ID0gMDsKQEAgLTcwNSw4ICs3MDcsMTIgQEAgQnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5j
dGlvbk5vZGUsIFVubGlua2UKICAgICAgICAgICAgICAgICBjYXNlIENvbnN0cnVjdG9yS2luZDo6
Tm9uZToKICAgICAgICAgICAgICAgICBjYXNlIENvbnN0cnVjdG9yS2luZDo6QmFzZToKICAgICAg
ICAgICAgICAgICAgICAgZW1pdENyZWF0ZVRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVB1YmxpY0NsYXNzRmllbGRzKCkpCisgICAgICAg
ICAgICAgICAgICAgIGlmIChPcHRpb25zOjp1c2VQcml2YXRlTWV0aG9kcygpICYmIHByaXZhdGVC
cmFuZFJlcXVpcmVtZW50KCkgPT0gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5lZWRlZCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGVtaXRJbnN0YWxsUHJpdmF0ZUJyYW5kKCZtX3RoaXNSZWdp
c3Rlcik7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKE9wdGlvbnM6OiB1c2VQdWJsaWNDbGFz
c0ZpZWxkcygpKQogICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEluc3RhbmNlRmllbGRJbml0
aWFsaXphdGlvbklmTmVlZGVkKCZtX3RoaXNSZWdpc3RlciwgJm1fY2FsbGVlUmVnaXN0ZXIsIG1f
c2NvcGVOb2RlLT5wb3NpdGlvbigpLCBtX3Njb3BlTm9kZS0+cG9zaXRpb24oKSwgbV9zY29wZU5v
ZGUtPnBvc2l0aW9uKCkpOworCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgIGNhc2UgQ29uc3RydWN0b3JLaW5kOjpFeHRlbmRzOgogICAgICAgICAgICAgICAgICAg
ICBtb3ZlRW1wdHlWYWx1ZSgmbV90aGlzUmVnaXN0ZXIpOwpAQCAtNzcxLDcgKzc3Nyw3IEBAIEJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSog
ZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAKICAgICAvLyBBbGwgImFkZFZhcigpInMgbmVlZHMgdG8g
aGFwcGVuIGJlZm9yZSAiaW5pdGlhbGl6ZURlZmF1bHRQYXJhbWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1
bmN0aW9uU2NvcGVTdGFjaygpIiBpcyBjYWxsZWQKICAgICAvLyBiZWNhdXNlIGEgZnVuY3Rpb24n
cyBkZWZhdWx0IHBhcmFtZXRlciBFeHByZXNzaW9uTm9kZXMgd2lsbCB1c2UgdGVtcG9yYXJ5IHJl
Z2lzdGVycy4KLSAgICBwdXNoVERaVmFyaWFibGVzKCpwYXJlbnRTY29wZVREWlZhcmlhYmxlcywg
VERaQ2hlY2tPcHRpbWl6YXRpb246OkRvTm90T3B0aW1pemUsIFREWlJlcXVpcmVtZW50OjpVbmRl
clREWik7CisgICAgcHVzaFREWlZhcmlhYmxlcygqcGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25t
ZW50LCBURFpDaGVja09wdGltaXphdGlvbjo6RG9Ob3RPcHRpbWl6ZSwgVERaUmVxdWlyZW1lbnQ6
OlVuZGVyVERaKTsKIAogICAgIFJlZjxMYWJlbD4gY2F0Y2hMYWJlbCA9IG5ld0xhYmVsKCk7CiAg
ICAgVHJ5RGF0YSogdHJ5Rm9ybWFsUGFyYW1ldGVyc0RhdGEgPSBudWxscHRyOwpAQCAtODM5LDcg
Kzg0NSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1
bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgcHVzaExleGljYWxTY29wZSht
X3Njb3BlTm9kZSwgVERaQ2hlY2tPcHRpbWl6YXRpb246Ok9wdGltaXplLCBOZXN0ZWRTY29wZVR5
cGU6OklzTm90TmVzdGVkLCBudWxscHRyLCBzaG91bGRJbml0aWFsaXplQmxvY2tTY29wZWRGdW5j
dGlvbnMpOwogfQogCi1CeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZt
LCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2VkRXZhbENvZGVCbG9jayogY29kZUJsb2NrLCBP
cHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFZh
cmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBFQ01BTW9kZSBlY21h
TW9kZSkKK0J5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEV2YWxO
b2RlKiBldmFsTm9kZSwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNl
dDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgVmFyaWFibGVF
bnZpcm9ubWVudCogcGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50LCBFQ01BTW9kZSBlY21h
TW9kZSkKICAgICA6IEJ5dGVjb2RlR2VuZXJhdG9yQmFzZShtYWtlVW5pcXVlPFVubGlua2VkQ29k
ZUJsb2NrR2VuZXJhdG9yPih2bSwgY29kZUJsb2NrKSwgQ29kZUJsb2NrOjpsbGludEJhc2VsaW5l
Q2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkpCiAgICAgLCBtX2NvZGVHZW5lcmF0
aW9uTW9kZShjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAgLCBtX3Njb3BlTm9kZShldmFsTm9kZSkK
QEAgLTg1OCw3ICs4NjQsOCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3Io
Vk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2VkRXZhbENvZAogewogICAgIG1fY29k
ZUJsb2NrLT5zZXROdW1QYXJhbWV0ZXJzKDEpOwogCi0gICAgcHVzaFREWlZhcmlhYmxlcygqcGFy
ZW50U2NvcGVURFpWYXJpYWJsZXMsIFREWkNoZWNrT3B0aW1pemF0aW9uOjpEb05vdE9wdGltaXpl
LCBURFpSZXF1aXJlbWVudDo6VW5kZXJURFopOworICAgIHB1c2hQcml2YXRlQWNjZXNzTmFtZXMo
KnBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCk7CisgICAgcHVzaFREWlZhcmlhYmxlcygq
cGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50LCBURFpDaGVja09wdGltaXphdGlvbjo6RG9O
b3RPcHRpbWl6ZSwgVERaUmVxdWlyZW1lbnQ6OlVuZGVyVERaKTsKIAogICAgIGVtaXRFbnRlcigp
OwogCkBAIC05MDMsNyArOTEwLDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJh
dG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2QKICAgICBwdXNo
TGV4aWNhbFNjb3BlKG1fc2NvcGVOb2RlLCBURFpDaGVja09wdGltaXphdGlvbjo6T3B0aW1pemUs
IE5lc3RlZFNjb3BlVHlwZTo6SXNOb3ROZXN0ZWQsIG51bGxwdHIsIHNob3VsZEluaXRpYWxpemVC
bG9ja1Njb3BlZEZ1bmN0aW9ucyk7CiB9CiAKLUJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdl
bmVyYXRvcihWTSYgdm0sIE1vZHVsZVByb2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9kZSwgVW5s
aW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2Vu
ZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVu
dCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIEVDTUFNb2RlIGVjbWFNb2RlKQorQnl0ZWNvZGVH
ZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgTW9kdWxlUHJvZ3JhbU5vZGUqIG1v
ZHVsZVByb2dyYW1Ob2RlLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9j
aywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25z
dCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQsIEVD
TUFNb2RlIGVjbWFNb2RlKQogICAgIDogQnl0ZWNvZGVHZW5lcmF0b3JCYXNlKG1ha2VVbmlxdWU8
VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I+KHZtLCBjb2RlQmxvY2spLCBDb2RlQmxvY2s6Omxs
aW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSkKICAgICAsIG1f
Y29kZUdlbmVyYXRpb25Nb2RlKGNvZGVHZW5lcmF0aW9uTW9kZSkKICAgICAsIG1fc2NvcGVOb2Rl
KG1vZHVsZVByb2dyYW1Ob2RlKQpAQCAtOTE5LDcgKzkyNiw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9y
OjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIE1vZHVsZVByb2dyYW1Ob2RlKiBtb2R1bGVQcm9n
cmFtTm9kCiAgICAgLCBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dChtb2R1bGVQ
cm9ncmFtTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSB8fCBtb2R1bGVQcm9ncmFtTm9kZS0+dXNl
c0V2YWwoKSkKICAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCiB7Ci0gICAgQVNTRVJUX1VOVVNF
RChwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgIXBhcmVudFNjb3BlVERaVmFyaWFibGVzLT5zaXpl
KCkpOworICAgIEFTU0VSVF9VTlVTRUQocGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50LCAh
cGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50LT5zaXplKCkpOwogCiAgICAgU3ltYm9sVGFi
bGUqIG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUgPSBTeW1ib2xUYWJsZTo6Y3JlYXRlKG1f
dm0pOwogICAgIG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUtPnNldFVzZXNOb25TdHJpY3RF
dmFsKG1fdXNlc05vblN0cmljdEV2YWwpOwpAQCAtMTg5NSw4ICsxOTAyLDEwIEBAIGJvb2wgQnl0
ZWNvZGVHZW5lcmF0b3I6Omluc3RhbnRpYXRlTGV4aWNhbFZhcmlhYmxlcyhjb25zdCBWYXJpYWJs
ZUVudmlyb25tZW50JiBsCiAKICAgICAgICAgICAgIC8vIEZJWE1FOiBvbmx5IGRvIHRoaXMgaWYg
dGhlcmUgaXMgYW4gZXZhbCgpIHdpdGhpbiBhIG5lc3RlZCBzY29wZSAtLS0gb3RoZXJ3aXNlIGl0
IGlzbid0IG5lZWRlZC4KICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDY2NjMKLSAgICAgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc1ByaXZh
dGVOYW1lKCkpCi0gICAgICAgICAgICAgICAgc3ltYm9sVGFibGUtPmFkZFByaXZhdGVOYW1lKGVu
dHJ5LmtleS5nZXQoKSk7CisgICAgICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNQcml2YXRlRmll
bGQoKSkKKyAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+YWRkUHJpdmF0ZU5hbWUoZW50cnku
a2V5LmdldCgpLCBQcml2YXRlTmFtZUVudHJ5KFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNE
ZWNsYXJlZCkpOworICAgICAgICAgICAgZWxzZSBpZiAoZW50cnkudmFsdWUuaXNQcml2YXRlTWV0
aG9kKCkpCisgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUtPmFkZFByaXZhdGVOYW1lKGVudHJ5
LmtleS5nZXQoKSwgUHJpdmF0ZU5hbWVFbnRyeShQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6Oklz
RGVjbGFyZWQgfCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzTWV0aG9kKSk7CiAgICAgICAg
IH0KICAgICB9CiAgICAgcmV0dXJuIGhhc0NhcHR1cmVkVmFyaWFibGVzOwpAQCAtMjc1MywxMiAr
Mjc2Miw0NSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlZmluZVByaXZh
dGVGaWVsZChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcgogICAgIHJldHVybiB2YWx1ZTsKIH0K
IAordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZVByaXZhdGVCcmFuZChSZWdpc3Rl
cklEKiBzY29wZSwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQoreworICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBjcmVhdGVQcml2YXRlU3ltYm9sID0gbW92ZUxpbmtUaW1lQ29u
c3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6Y3JlYXRlUHJpdmF0ZVN5bWJvbCk7CisK
KyAgICBDYWxsQXJndW1lbnRzIGFyZ3VtZW50cygqdGhpcywgbnVsbHB0ciwgMCk7CisgICAgZW1p
dExvYWQoYXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICBSZWdp
c3RlcklEKiBuZXdTeW1ib2wgPSBlbWl0Q2FsbChmaW5hbERlc3RpbmF0aW9uKG51bGxwdHIsIGNy
ZWF0ZVByaXZhdGVTeW1ib2wuZ2V0KCkpLCBjcmVhdGVQcml2YXRlU3ltYm9sLmdldCgpLCBOb0V4
cGVjdGVkRnVuY3Rpb24sIGFyZ3VtZW50cywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kLCBE
ZWJ1Z2dhYmxlQ2FsbDo6Tm8pOworCisgICAgVmFyaWFibGUgcHJpdmF0ZUJyYW5kVmFyID0gdmFy
aWFibGUocHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLnByaXZhdGVCcmFuZFByaXZhdGVO
YW1lKCkpOworCisgICAgZW1pdFB1dFRvU2NvcGUoc2NvcGUsIHByaXZhdGVCcmFuZFZhciwgbmV3
U3ltYm9sLCBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpJbml0aWFs
aXphdGlvbik7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJbnN0YWxsUHJpdmF0
ZUJyYW5kKFJlZ2lzdGVySUQqIHRhcmdldCkKK3sKKyAgICBWYXJpYWJsZSBwcml2YXRlQnJhbmRW
YXIgPSB2YXJpYWJsZShwcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkucHJpdmF0ZUJyYW5k
UHJpdmF0ZU5hbWUoKSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVCcmFuZFZhclNj
b3BlID0gZW1pdFJlc29sdmVTY29wZShudWxscHRyLCBwcml2YXRlQnJhbmRWYXIpOworICAgIFJl
Z2lzdGVySUQqIHByaXZhdGVCcmFuZFN5bWJvbCA9IGVtaXRHZXRQcml2YXRlQnJhbmQobmV3VGVt
cG9yYXJ5KCksIHByaXZhdGVCcmFuZFZhclNjb3BlLmdldCgpKTsKKyAgICBlbWl0RGVmaW5lUHJp
dmF0ZUZpZWxkKHRhcmdldCwgcHJpdmF0ZUJyYW5kU3ltYm9sLCBwcml2YXRlQnJhbmRTeW1ib2wp
OworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFByaXZhdGVCcmFu
ZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNjb3BlKQoreworICAgIFZhcmlhYmxlIHBy
aXZhdGVCcmFuZFZhciA9IHZhcmlhYmxlKHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5w
cml2YXRlQnJhbmRQcml2YXRlTmFtZSgpKTsKKyAgICByZXR1cm4gZW1pdEdldEZyb21TY29wZShk
c3QsIHNjb3BlLCBwcml2YXRlQnJhbmRWYXIsIFRocm93SWZOb3RGb3VuZCk7Cit9CisKIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHJpdmF0ZUZpZWxkUHV0KFJlZ2lzdGVySUQq
IGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKICAgICBP
cFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlW
YWxGbGFnczo6Y3JlYXRlUHV0UHJpdmF0ZUZpZWxkKGVjbWFNb2RlKCkpKTsKICAgICByZXR1cm4g
dmFsdWU7CiB9CiAKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDaGVja1ByaXZhdGVCcmFu
ZChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBicmFuZFN5bWJvbCkKK3sKKyAgICAvLyBU
aGlzIGlzIGdvaW5nIHRvIHRyaG93IFR5cGVFcnJvciBpZiBicmFuZCBpcyBub3QgcHJlc2VudAor
ICAgIGVtaXREaXJlY3RHZXRCeVZhbChuZXdUZW1wb3JhcnkoKSwgYmFzZSwgYnJhbmRTeW1ib2wp
OworfQorCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0U3VwZXJTYW1wbGVyQmVnaW4oKQog
ewogICAgIE9wU3VwZXJTYW1wbGVyQmVnaW46OmVtaXQodGhpcyk7CkBAIC0yODg3LDYgKzI5Mjks
MzggQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6bGlmdFREWkNoZWNrSWZQb3NzaWJsZShjb25z
dCBWYXJpYWJsZSYgdmFyaWFibGUpCiAgICAgfQogfQogCitib29sIEJ5dGVjb2RlR2VuZXJhdG9y
Ojppc1ByaXZhdGVNZXRob2QoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCit7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gbV9wcml2YXRlTmFtZXNTdGFjay5zaXplKCk7IGktLTsgKSB7CisgICAgICAg
IGF1dG8mIG1hcCA9IG1fcHJpdmF0ZU5hbWVzU3RhY2tbaV07CisgICAgICAgIGF1dG8gaXQgPSBt
YXAuZmluZChpZGVudC5pbXBsKCkpOworICAgICAgICBpZiAoaXQgIT0gbWFwLmVuZCgpKQorICAg
ICAgICAgICAgcmV0dXJuIGl0LT52YWx1ZS5pc01ldGhvZCgpOworICAgIH0KKworICAgIHJldHVy
biBmYWxzZTsKK30KKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cHVzaFByaXZhdGVBY2Nlc3NO
YW1lcyhjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBlbnZpcm9ubWVudCkKK3sKKyAgICBpZiAo
IWVudmlyb25tZW50LnByaXZhdGVOYW1lc1NpemUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
VmFyaWFibGVFbnZpcm9ubWVudDo6UHJpdmF0ZU5hbWVzIHByaXZhdGVOYW1lc01hcDsKKyAgICBm
b3IgKGNvbnN0IGF1dG8mIGVudHJ5IDogZW52aXJvbm1lbnQucHJpdmF0ZU5hbWVzKCkpCisgICAg
ICAgIHByaXZhdGVOYW1lc01hcC5hZGQoZW50cnkua2V5LCBlbnRyeS52YWx1ZSk7CisKKyAgICBt
X3ByaXZhdGVOYW1lc1N0YWNrLmFwcGVuZChXVEZNb3ZlKHByaXZhdGVOYW1lc01hcCkpOworfQor
Cit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwb3BQcml2YXRlQWNjZXNzTmFtZXMoKQoreworICAg
IGlmICghbV9wcml2YXRlTmFtZXNTdGFjay5zaXplKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fcHJpdmF0ZU5hbWVzU3RhY2sucmVtb3ZlTGFzdCgpOworfQorCiB2b2lkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpwdXNoVERaVmFyaWFibGVzKGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGVudmly
b25tZW50LCBURFpDaGVja09wdGltaXphdGlvbiBvcHRpbWl6YXRpb24sIFREWlJlcXVpcmVtZW50
IHJlcXVpcmVtZW50KQogewogICAgIGlmICghZW52aXJvbm1lbnQuc2l6ZSgpKQpAQCAtMjkwOSw2
ICsyOTgzLDI0IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnB1c2hURFpWYXJpYWJsZXMoY29u
c3QgVmFyaWFibGVFbnZpcm9ubWVudCYgZW52aXJvbm1lbnQsCiAgICAgbV9jYWNoZWRWYXJpYWJs
ZXNVbmRlclREWiA9IHsgfTsKIH0KIAordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6Z2V0QXZhaWxh
YmxlUHJpdmF0ZUFjY2Vzc05hbWVzKFZhcmlhYmxlRW52aXJvbm1lbnQmIHJlc3VsdCkKK3sKKyAg
ICBTbWFsbFB0clNldDxVbmlxdWVkU3RyaW5nSW1wbCosIDE2PiBleGNsdWRlZE5hbWVzOworICAg
IGZvciAodW5zaWduZWQgaSA9IG1fcHJpdmF0ZU5hbWVzU3RhY2suc2l6ZSgpOyBpLS07ICkgewor
ICAgICAgICBhdXRvJiBtYXAgPSBtX3ByaXZhdGVOYW1lc1N0YWNrW2ldOworICAgICAgICBmb3Ig
KGF1dG8mIGVudHJ5IDogbWFwKSAgeworICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVlLmlzUHJp
dmF0ZUFjY2VzcygpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFleGNsdWRlZE5hbWVzLmNvbnRh
aW5zKGVudHJ5LmtleS5nZXQoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBhZGRSZXN1
bHQgPSByZXN1bHQuYWRkUHJpdmF0ZU5hbWUoZW50cnkua2V5KTsKKyAgICAgICAgICAgICAgICAg
ICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IGVudHJ5LnZhbHVlOworICAgICAgICAgICAg
ICAgICAgICBleGNsdWRlZE5hbWVzLmFkZChlbnRyeS5rZXkuZ2V0KCkpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGV4Y2x1ZGVkTmFtZXMu
YWRkKGVudHJ5LmtleS5nZXQoKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIE9wdGlvbmFsPENv
bXBhY3RWYXJpYWJsZU1hcDo6SGFuZGxlPiBCeXRlY29kZUdlbmVyYXRvcjo6Z2V0VmFyaWFibGVz
VW5kZXJURFooKQogewogICAgIGlmIChtX2NhY2hlZFZhcmlhYmxlc1VuZGVyVERaKSB7CkBAIC0y
OTQyLDYgKzMwMzQsOCBAQCBPcHRpb25hbDxDb21wYWN0VmFyaWFibGVNYXA6OkhhbmRsZT4gQnl0
ZWNvZGVHZW5lcmF0b3I6OmdldFZhcmlhYmxlc1VuZGVyVERaKCkKICAgICAgICAgfQogICAgIH0K
IAorICAgIGdldEF2YWlsYWJsZVByaXZhdGVBY2Nlc3NOYW1lcyhlbnZpcm9ubWVudCk7CisKICAg
ICBtX2NhY2hlZFZhcmlhYmxlc1VuZGVyVERaID0gbV92bS5tX2NvbXBhY3RWYXJpYWJsZU1hcC0+
Z2V0KGVudmlyb25tZW50KTsKICAgICBtX2hhc0NhY2hlZFZhcmlhYmxlc1VuZGVyVERaID0gIWVu
dmlyb25tZW50LmlzRW1wdHkoKTsKICAgICBpZiAoIW1faGFzQ2FjaGVkVmFyaWFibGVzVW5kZXJU
RFopCkBAIC0zMTIwLDkgKzMyMTQsOSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdE5ld01ldGhvZERlZmluaXRpb24oUmVnaXN0ZXJJRCogZHN0LCBNZXRob2REZQogfQogCiBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3RvcihS
ZWdpc3RlcklEKiBkc3QsIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElk
ZW50aWZpZXImIG5hbWUsCi0gICAgY29uc3QgSWRlbnRpZmllciYgZWNtYU5hbWUsIGNvbnN0IFNv
dXJjZUNvZGUmIGNsYXNzU291cmNlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplcikKKyAgICBjb25zdCBJZGVudGlmaWVyJiBlY21hTmFtZSwgY29u
c3QgU291cmNlQ29kZSYgY2xhc3NTb3VyY2UsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRl
QnJhbmRSZXF1aXJlbWVudCkKIHsKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSA9IG1fdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNyZWF0ZURlZmF1bHRDb25zdHJ1
Y3Rvcihjb25zdHJ1Y3RvcktpbmQsIG5hbWUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsK
KyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG1fdm0uYnVpbHRp
bkV4ZWN1dGFibGVzKCktPmNyZWF0ZURlZmF1bHRDb25zdHJ1Y3Rvcihjb25zdHJ1Y3RvcktpbmQs
IG5hbWUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBwcml2YXRlQnJhbmRSZXF1aXJlbWVu
dCk7CiAgICAgZXhlY3V0YWJsZS0+c2V0SW52YWxpZFR5cGVQcm9maWxpbmdPZmZzZXRzKCk7CiAg
ICAgZXhlY3V0YWJsZS0+c2V0RWNtYU5hbWUoZWNtYU5hbWUpOwogICAgIGV4ZWN1dGFibGUtPnNl
dENsYXNzU291cmNlKGNsYXNzU291cmNlKTsKQEAgLTMxNTIsNyArMzI0Niw3IEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3SW5zdGFuY2VGaWVsZEluaXRpYWxpemVyRnVu
Y3Rpb24oUmVnaXN0ZXJJCiAgICAgY29uc3QgYm9vbCBhbHdheXNTdHJpY3RJbkNsYXNzID0gdHJ1
ZTsKICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSBtZXRhZGF0YShwYXJzZXJBcmVuYSgpLCBKU1Rv
a2VuTG9jYXRpb24oKSwgSlNUb2tlbkxvY2F0aW9uKCksIDAsIDAsIDAsIDAsIDAsIGFsd2F5c1N0
cmljdEluQ2xhc3MsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgc3VwZXJCaW5kaW5nLCAwLCBwYXJz
ZU1vZGUsIGZhbHNlKTsKICAgICBtZXRhZGF0YS5maW5pc2hQYXJzaW5nKG1fc2NvcGVOb2RlLT5z
b3VyY2UoKSwgSWRlbnRpZmllcigpLCBGdW5jdGlvbk1vZGU6Ok1ldGhvZERlZmluaXRpb24pOwot
ICAgIGF1dG8gaW5pdGlhbGl6ZXIgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRl
KG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgJm1ldGFkYXRhLCBpc0J1aWx0aW5GdW5jdGlv
bigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBj
b25zdHJ1Y3RBYmlsaXR5LCBzY3JpcHRNb2RlKCksIFdURk1vdmUodmFyaWFibGVzVW5kZXJURFop
LCBuZXdEZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObyk7
CisgICAgYXV0byBpbml0aWFsaXplciA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVh
dGUobV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgpLCAmbWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0
aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24s
IGNvbnN0cnVjdEFiaWxpdHksIHNjcmlwdE1vZGUoKSwgV1RGTW92ZSh2YXJpYWJsZXNVbmRlclRE
WiksIG5ld0Rlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5v
LCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZSk7CiAgICAgaW5pdGlhbGl6ZXItPnNldElu
c3RhbmNlRmllbGRMb2NhdGlvbnMoV1RGTW92ZShpbnN0YW5jZUZpZWxkTG9jYXRpb25zKSk7CiAK
ICAgICB1bnNpZ25lZCBpbmRleCA9IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIoaW5pdGlh
bGl6ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oCmluZGV4IGQyODI1MzRhOTZhODQxNTljMTI5YzVjMTRlM2E3OGM3
NDAwNGI5ZmYuLjBiNjUwMGJhMzM5NzI5YzUzMmFiYTZkODliYjc0YjA1ODU3MDU5ZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmgKQEAgLTQyNSw2ICs0MjUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9v
bCBuZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX25l
ZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dDsgfQogICAgICAgICBib29sIHVzZXNFdmFs
KCkgY29uc3QgeyByZXR1cm4gbV9zY29wZU5vZGUtPnVzZXNFdmFsKCk7IH0KICAgICAgICAgYm9v
bCB1c2VzVGhpcygpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVOb2RlLT51c2VzVGhpcygpOyB9Cisg
ICAgICAgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCk7IH0K
ICAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJu
IG1fY29kZUJsb2NrLT5jb25zdHJ1Y3RvcktpbmQoKTsgfQogICAgICAgICBTdXBlckJpbmRpbmcg
c3VwZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnN1cGVyQmluZGluZygp
OyB9CiAgICAgICAgIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9jb2RlQmxvY2stPnNjcmlwdE1vZGUoKTsgfQpAQCAtNzc0LDcgKzc3NSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5jdGlvbihSZWdpc3Rl
cklEKiBkc3QsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXROZXdGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqKTsK
LSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3RvcihSZWdpc3RlcklE
KiBkc3QsIENvbnN0cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3QgSWRl
bnRpZmllciYgZWNtYU5hbWUsIGNvbnN0IFNvdXJjZUNvZGUmIGNsYXNzU291cmNlLCBOZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplcik7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdEZWZhdWx0
Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCogZHN0LCBDb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50
aWZpZXImIG5hbWUsIGNvbnN0IElkZW50aWZpZXImIGVjbWFOYW1lLCBjb25zdCBTb3VyY2VDb2Rl
JiBjbGFzc1NvdXJjZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJl
cXVpcmVtZW50KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0luc3RhbmNlRmllbGRJbml0
aWFsaXplckZ1bmN0aW9uKFJlZ2lzdGVySUQqIGRzdCwgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiYm
IGluc3RhbmNlRmllbGRMb2NhdGlvbnMsIGJvb2wgaXNEZXJpdmVkKTsKICAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdE5ld0Fycm93RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqLCBBcnJvd0Z1
bmNFeHByTm9kZSopOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3TWV0aG9kRGVmaW5pdGlv
bihSZWdpc3RlcklEKiBkc3QsIE1ldGhvZERlZmluaXRpb25Ob2RlKik7CkBAIC04MjQsNiArODI1
LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGVmaW5lUHJp
dmF0ZUZpZWxkKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3Rl
cklEKiB2YWx1ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQcml2YXRlRmllbGRQdXQoUmVn
aXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsK
IAorICAgICAgICB2b2lkIGVtaXRDcmVhdGVQcml2YXRlQnJhbmQoUmVnaXN0ZXJJRCogZHN0LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0
YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOworICAgICAgICB2b2lkIGVtaXRJ
bnN0YWxsUHJpdmF0ZUJyYW5kKFJlZ2lzdGVySUQqIHRhcmdldCk7CisgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRHZXRQcml2YXRlQnJhbmQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzY29w
ZSk7CisgICAgICAgIHZvaWQgZW1pdENoZWNrUHJpdmF0ZUJyYW5kKFJlZ2lzdGVySUQqIGJhc2Us
IFJlZ2lzdGVySUQqIGJyYW5kKTsKKwogICAgICAgICB2b2lkIGVtaXRTdXBlclNhbXBsZXJCZWdp
bigpOwogICAgICAgICB2b2lkIGVtaXRTdXBlclNhbXBsZXJFbmQoKTsKIApAQCAtMTE3NiwxMCAr
MTE4MiwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIERlcml2ZWRDb250ZXh0VHlw
ZSBuZXdEZXJpdmVkQ29udGV4dFR5cGUgPSBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmU7CiAKICAg
ICAgICAgICAgIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyID0gbWV0YWRhdGEtPmlzQ29uc3RydWN0b3JBbmROZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplcigpID8gTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6OlllcyA6IE5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyOjpObzsKKyAgICAgICAgICAgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHBy
aXZhdGVCcmFuZFJlcXVpcmVtZW50ID0gbWV0YWRhdGEtPnByaXZhdGVCcmFuZFJlcXVpcmVtZW50
KCk7CiAgICAgICAgICAgICBpZiAoU291cmNlUGFyc2VNb2RlU2V0KFNvdXJjZVBhcnNlTW9kZTo6
QXJyb3dGdW5jdGlvbk1vZGUsIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9k
ZSwgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Cb2R5TW9kZSkuY29udGFpbnMo
bWV0YWRhdGEtPnBhcnNlTW9kZSgpKSkgewogICAgICAgICAgICAgICAgIGlmIChjb25zdHJ1Y3Rv
cktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkV4dGVuZHMgfHwgaXNEZXJpdmVkQ29uc3RydWN0
b3JDb250ZXh0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgbmV3RGVyaXZlZENvbnRleHRUeXBl
ID0gRGVyaXZlZENvbnRleHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0OwogICAgICAg
ICAgICAgICAgICAgICBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9IG1fY29kZUJsb2NrLT5u
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpOworICAgICAgICAgICAgICAgICAgICBwcml2YXRl
QnJhbmRSZXF1aXJlbWVudCA9IG1fY29kZUJsb2NrLT5wcml2YXRlQnJhbmRSZXF1aXJlbWVudCgp
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlIGlmIChtX2NvZGVCbG9j
ay0+aXNDbGFzc0NvbnRleHQoKSB8fCBpc0Rlcml2ZWRDbGFzc0NvbnRleHQoKSkKICAgICAgICAg
ICAgICAgICAgICAgbmV3RGVyaXZlZENvbnRleHRUeXBlID0gRGVyaXZlZENvbnRleHRUeXBlOjpE
ZXJpdmVkTWV0aG9kQ29udGV4dDsKQEAgLTExOTQsMTAgKzEyMDIsMTEgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9k
TW9kZSAmJiBtZXRhZGF0YS0+Y29uc3RydWN0b3JLaW5kKCkgIT0gQ29uc3RydWN0b3JLaW5kOjpO
b25lKQogICAgICAgICAgICAgICAgIGNvbnN0cnVjdEFiaWxpdHkgPSBDb25zdHJ1Y3RBYmlsaXR5
OjpDYW5Db25zdHJ1Y3Q7CiAKLSAgICAgICAgICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgbWV0YWRhdGEsIGlz
QnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9y
bWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIHNjcmlwdE1vZGUoKSwgV1RGTW92ZShvcHRp
b25hbFZhcmlhYmxlc1VuZGVyVERaKSwgbmV3RGVyaXZlZENvbnRleHRUeXBlLCBuZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplcik7CisgICAgICAgICAgICByZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksIG1ldGFkYXRhLCBp
c0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5v
cm1hbEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCBzY3JpcHRNb2RlKCksIFdURk1vdmUob3B0
aW9uYWxWYXJpYWJsZXNVbmRlclREWiksIG5ld0Rlcml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KTsKICAgICAgICAgfQog
CiAgICAgICAgIE9wdGlvbmFsPENvbXBhY3RWYXJpYWJsZU1hcDo6SGFuZGxlPiBnZXRWYXJpYWJs
ZXNVbmRlclREWigpOworICAgICAgICB2b2lkIGdldEF2YWlsYWJsZVByaXZhdGVBY2Nlc3NOYW1l
cyhWYXJpYWJsZUVudmlyb25tZW50Jik7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENvbnN0
cnVjdFZhcmFyZ3MoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBSZWdpc3RlcklE
KiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGFyZ3VtZW50cywgUmVnaXN0ZXJJRCogZmlyc3RG
cmVlUmVnaXN0ZXIsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdEVuZCwgRGVidWdnYWJsZUNhbGwpOwogICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDYWxsT3A+CkBAIC0xMjUxLDYgKzEyNjAsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICBtX2xhc3RJbnN0cnVjdGlvbiA9IHByZXZMYXN0SW5zdHJ1Y3Rpb247CiAgICAg
ICAgIH0KIAorICAgICAgICBib29sIGlzUHJpdmF0ZU1ldGhvZChjb25zdCBJZGVudGlmaWVyJik7
CisKKyAgICAgICAgdm9pZCBwdXNoUHJpdmF0ZUFjY2Vzc05hbWVzKGNvbnN0IFZhcmlhYmxlRW52
aXJvbm1lbnQmKTsKKyAgICAgICAgdm9pZCBwb3BQcml2YXRlQWNjZXNzTmFtZXMoKTsKKwogICAg
IHByaXZhdGU6CiAgICAgICAgIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IG1fY29kZUdl
bmVyYXRpb25Nb2RlOwogCkBAIC0xMjYzLDYgKzEyNzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgVmVjdG9yPExleGljYWxTY29wZVN0YWNrRW50cnk+IG1fbGV4aWNhbFNjb3BlU3RhY2s7
CiAKICAgICAgICAgVmVjdG9yPFREWk1hcD4gbV9URFpTdGFjazsKKyAgICAgICAgVmVjdG9yPFZh
cmlhYmxlRW52aXJvbm1lbnQ6OlByaXZhdGVOYW1lcz4gbV9wcml2YXRlTmFtZXNTdGFjazsKICAg
ICAgICAgT3B0aW9uYWw8c2l6ZV90PiBtX3ZhclNjb3BlTGV4aWNhbFNjb3BlU3RhY2tJbmRleDsK
ICAgICAgICAgdm9pZCBwdXNoVERaVmFyaWFibGVzKGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQm
LCBURFpDaGVja09wdGltaXphdGlvbiwgVERaUmVxdWlyZW1lbnQpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggOTNm
NjJjZGU2YzcwZDNmNmI5OTRjZjlkYjRkZDMxZDRlNzI0ZWU4Mi4uNzdiYmJhOThiNDI4ZDUwOWEz
Yzk5YzBhZTA5YmYzZjg5NjZhNTVjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtNTYzLDcgKzU2Myw3IEBAIHZvaWQg
UHJvcGVydHlMaXN0Tm9kZTo6ZW1pdERlY2xhcmVQcml2YXRlRmllbGROYW1lcyhCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNyZWF0ZVByaXZhdGVT
eW1ib2w7CiAgICAgZm9yIChQcm9wZXJ0eUxpc3ROb2RlKiBwID0gdGhpczsgcDsgcCA9IHAtPm1f
bmV4dCkgewogICAgICAgICBjb25zdCBQcm9wZXJ0eU5vZGUmIG5vZGUgPSAqcC0+bV9ub2RlOwot
ICAgICAgICBpZiAobm9kZS50eXBlKCkgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGUpIHsKKyAgICAg
ICAgaWYgKG5vZGUudHlwZSgpICYgUHJvcGVydHlOb2RlOjpQcml2YXRlRmllbGQpIHsKICAgICAg
ICAgICAgIGlmICghY3JlYXRlUHJpdmF0ZVN5bWJvbCkKICAgICAgICAgICAgICAgICBjcmVhdGVQ
cml2YXRlU3ltYm9sID0gZ2VuZXJhdG9yLm1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIsIExp
bmtUaW1lQ29uc3RhbnQ6OmNyZWF0ZVByaXZhdGVTeW1ib2wpOwogCkBAIC01ODksNyArNTg5LDcg
QEAgUmVnaXN0ZXJJRCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGUKICAgICAgICAgaWYgKHAtPmlzQ29tcHV0ZWRDbGFz
c0ZpZWxkKCkpCiAgICAgICAgICAgICBlbWl0U2F2ZUNvbXB1dGVkRmllbGROYW1lKGdlbmVyYXRv
ciwgKnAtPm1fbm9kZSk7CiAKLSAgICAgICAgaWYgKHAtPmlzSW5zdGFuY2VDbGFzc0ZpZWxkKCkp
IHsKKyAgICAgICAgaWYgKHAtPmlzSW5zdGFuY2VDbGFzc0ZpZWxkKCkgJiYgIShwLT5tX25vZGUt
PnR5cGUoKSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0ZU1ldGhvZCkpIHsKICAgICAgICAgICAgIEFT
U0VSVChpbnN0YW5jZUZpZWxkTG9jYXRpb25zKTsKICAgICAgICAgICAgIGluc3RhbmNlRmllbGRM
b2NhdGlvbnMtPmFwcGVuZChwLT5wb3NpdGlvbigpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwpA
QCAtNzQ1LDcgKzc0NSw3IEBAIFJlZ2lzdGVySUQqIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlCiB2b2lkIFByb3BlcnR5
TGlzdE5vZGU6OmVtaXRQdXRDb25zdGFudFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIG5ld09iaiwgUHJvcGVydHlOb2RlJiBub2RlKQogewogICAgIC8v
IFByaXZhdGUgZmllbGRzIGFyZSBoYW5kbGVkIGluIHRoZSBzeW50aGV0aWMgaW5zdGFuY2VGaWVs
ZEluaXRpYWxpemVyIGZ1bmN0aW9uLCBub3QgaGVyZS4KLSAgICBBU1NFUlQoIShub2RlLnR5cGUo
KSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0ZSkpOworICAgIEFTU0VSVCghKG5vZGUudHlwZSgpICYg
UHJvcGVydHlOb2RlOjpQcml2YXRlRmllbGQpKTsKIAogICAgIGlmIChQcm9wZXJ0eU5vZGU6Omlz
VW5kZXJzY29yZVByb3RvU2V0dGVyKGdlbmVyYXRvci52bSgpLCBub2RlKSkgewogICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gcHJvdG90eXBlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUubV9h
c3NpZ24pOwpAQCAtNzcwLDYgKzc3MCwxNCBAQCB2b2lkIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRQ
dXRDb25zdGFudFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZwogCiAg
ICAgaWYgKG5vZGUuaXNDbGFzc1Byb3BlcnR5KCkpIHsKICAgICAgICAgQVNTRVJUKG5vZGUubmVl
ZHNTdXBlckJpbmRpbmcoKSk7CisKKyAgICAgICAgaWYgKG5vZGUudHlwZSgpICYgUHJvcGVydHlO
b2RlOjpQcml2YXRlTWV0aG9kKSB7CisgICAgICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0
b3IudmFyaWFibGUoKm5vZGUubmFtZSgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0
VG9TY29wZShnZW5lcmF0b3Iuc2NvcGVSZWdpc3RlcigpLCB2YXIsIHZhbHVlLmdldCgpLCBEb05v
dFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpDb25zdEluaXRpYWxpemF0aW9u
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBwcm9wZXJ0eU5hbWVSZWdpc3RlcjsKICAgICAgICAgaWYgKG5vZGUubmFtZSgpKQog
ICAgICAgICAgICAgcHJvcGVydHlOYW1lID0gZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsICpu
b2RlLm5hbWUoKSk7CiAKQEAgLTg5Miw2ICs5MDAsMTYgQEAgUmVnaXN0ZXJJRCogRG90QWNjZXNz
b3JOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXIKIFJlZ2lzdGVySUQqIEJhc2VEb3ROb2RlOjplbWl0R2V0UHJvcGVydHlWYWx1ZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2Us
IFJlZlB0cjxSZWdpc3RlcklEPiYgdGhpc1ZhbHVlKQogewogICAgIGlmIChpc1ByaXZhdGVGaWVs
ZCgpKSB7CisgICAgICAgIGlmIChnZW5lcmF0b3IuaXNQcml2YXRlTWV0aG9kKGlkZW50aWZpZXIo
KSkpIHsKKyAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVu
dGlmaWVyKCkpOworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJh
dG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKKworICAgICAgICAgICAgUmVnaXN0
ZXJJRCogcHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQo
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSk7CisgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdENoZWNrUHJpdmF0ZUJyYW5kKGJhc2UsIHByaXZhdGVCcmFuZFN5bWJvbCk7CisK
KyAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShkc3QsIHNjb3Bl
LmdldCgpLCB2YXIsIFRocm93SWZOb3RGb3VuZCk7CisgICAgICAgIH0KKwogICAgICAgICBWYXJp
YWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUobV9pZGVudCk7CiAgICAgICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UoIXZhci5sb2NhbCgpLCAiUHJpdmF0ZSBGaWVsZCBuYW1lcyBtdXN0IGJlIHN0
b3JlZCBpbiBjYXB0dXJlZCB2YXJpYWJsZXMiKTsKIApAQCAtOTE5LDYgKzkzNywxNyBAQCBSZWdp
c3RlcklEKiBCYXNlRG90Tm9kZTo6ZW1pdEdldFByb3BlcnR5VmFsdWUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaQogUmVnaXN0ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRQdXRQcm9w
ZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBiYXNlLCBSZWdp
c3RlcklEKiB2YWx1ZSwgUmVmUHRyPFJlZ2lzdGVySUQ+JiB0aGlzVmFsdWUpCiB7CiAgICAgaWYg
KGlzUHJpdmF0ZUZpZWxkKCkpIHsKKyAgICAgICAgYXV0byBpZGVudGlmaWVyTmFtZSA9IGlkZW50
aWZpZXIoKTsKKyAgICAgICAgaWYgKGdlbmVyYXRvci5pc1ByaXZhdGVNZXRob2QoaWRlbnRpZmll
ck5hbWUpKSB7CisgICAgICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUo
aWRlbnRpZmllck5hbWUpOworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0g
Z2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKKworICAgICAgICAgICAg
UmVnaXN0ZXJJRCogcHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRl
QnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSk7CisgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdENoZWNrUHJpdmF0ZUJyYW5kKGJhc2UsIHByaXZhdGVCcmFuZFN5bWJv
bCk7CisKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0VGhyb3dUeXBlRXJyb3IoIlRyeWluZyB0
byBhY2Nlc3MgYSBub3QgZGVmaW5lZCBwcml2YXRlIHNldHRlciIpOworICAgICAgICB9CisKICAg
ICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKG1faWRlbnQpOwogICAgICAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKCF2YXIubG9jYWwoKSwgIlByaXZhdGUgRmllbGQgbmFtZXMg
bXVzdCBiZSBzdG9yZWQgaW4gY2FwdHVyZWQgdmFyaWFibGVzIik7CiAKQEAgLTEwNzIsMTIgKzEx
MDEsMTQgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsVmFsdWVOb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmUKICAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0UHV0VGhpc1RvQXJyb3dGdW5jdGlvbkNvbnRleHRTY29wZSgpOwogCiAgICAgICAgIC8vIElu
aXRpYWxpemUgaW5zdGFuY2UgZmllbGRzIGFmdGVyIHN1cGVyLWNhbGwuCisgICAgICAgIGlmIChP
cHRpb25zOjp1c2VQcml2YXRlTWV0aG9kcygpICYmIGdlbmVyYXRvci5wcml2YXRlQnJhbmRSZXF1
aXJlbWVudCgpID09IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOZWVkZWQpCisgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdEluc3RhbGxQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLnRoaXNSZWdpc3Rl
cigpKTsKKwogICAgICAgICBpZiAoT3B0aW9uczo6dXNlUHVibGljQ2xhc3NGaWVsZHMoKSAmJiBn
ZW5lcmF0b3IubmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSA9PSBOZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplcjo6WWVzKSB7CiAgICAgICAgICAgICBBU1NFUlQoZ2VuZXJhdG9yLmlzQ29uc3Ry
dWN0b3IoKSB8fCBnZW5lcmF0b3IuaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkpOwogICAg
ICAgICAgICAgZnVuYyA9IGdlbmVyYXRvci5lbWl0TG9hZERlcml2ZWRDb25zdHJ1Y3RvcigpOwog
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRJbnN0YW5jZUZpZWxkSW5pdGlhbGl6YXRpb25JZk5l
ZWRlZChnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCksIGZ1bmMuZ2V0KCksIGRpdm90KCksIGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIH0KLQogICAgICAgICByZXR1cm4gcmV0Owog
ICAgIH0KIApAQCAtNDg2OCw2ICs0ODk5LDEzIEBAIFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAg
ICAgaWYgKG1fbmVlZHNMZXhpY2FsU2NvcGUpCiAgICAgICAgIGdlbmVyYXRvci5wdXNoTGV4aWNh
bFNjb3BlKHRoaXMsIEJ5dGVjb2RlR2VuZXJhdG9yOjpURFpDaGVja09wdGltaXphdGlvbjo6T3B0
aW1pemUsIEJ5dGVjb2RlR2VuZXJhdG9yOjpOZXN0ZWRTY29wZVR5cGU6OklzTmVzdGVkKTsKIAor
ICAgIGJvb2wgaGFzUHJpdmF0ZU5hbWVzID0gISFtX2xleGljYWxWYXJpYWJsZXMucHJpdmF0ZU5h
bWVzU2l6ZSgpOworICAgIGJvb2wgc2hvdWxkRW1pdFByaXZhdGVCcmFuZCA9IG1fbGV4aWNhbFZh
cmlhYmxlcy5oYXNQcml2YXRlQWNjZXNzKCk7CisgICAgaWYgKGhhc1ByaXZhdGVOYW1lcykKKyAg
ICAgICAgZ2VuZXJhdG9yLnB1c2hQcml2YXRlQWNjZXNzTmFtZXMobV9sZXhpY2FsVmFyaWFibGVz
KTsKKyAgICBpZiAoc2hvdWxkRW1pdFByaXZhdGVCcmFuZCkKKyAgICAgICAgZ2VuZXJhdG9yLmVt
aXRDcmVhdGVQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLnNjb3BlUmVnaXN0ZXIoKSwgbV9wb3NpdGlv
biwgbV9wb3NpdGlvbiwgbV9wb3NpdGlvbik7CisKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3Vw
ZXJjbGFzczsKICAgICBpZiAobV9jbGFzc0hlcml0YWdlKSB7CiAgICAgICAgIHN1cGVyY2xhc3Mg
PSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CkBAIC00ODc4LDE3ICs0OTE2LDE4IEBAIFJlZ2lz
dGVySUQqIENsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklECiAgICAgYm9vbCBuZWVkc0hvbWVPYmplY3QgPSBmYWxzZTsKIAog
ICAgIGF1dG8gbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSB0aGlzLT5oYXNJbnN0YW5jZUZp
ZWxkcygpID8gTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6OlllcyA6IE5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyOjpObzsKLQorICAgIGF1dG8gcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBz
aG91bGRFbWl0UHJpdmF0ZUJyYW5kID8gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5lZWRlZCA6
IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lOwogICAgIGlmIChtX2NvbnN0cnVjdG9yRXhw
cmVzc2lvbikgewogICAgICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvckV4cHJlc3Npb24tPmlzRnVu
Y0V4cHJOb2RlKCkpOwogICAgICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbWV0YWRhdGEgPSBz
dGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPihtX2NvbnN0cnVjdG9yRXhwcmVzc2lvbiktPm1ldGFk
YXRhKCk7CiAgICAgICAgIG1ldGFkYXRhLT5zZXRFY21hTmFtZShlY21hTmFtZSgpKTsKICAgICAg
ICAgbWV0YWRhdGEtPnNldENsYXNzU291cmNlKG1fY2xhc3NTb3VyY2UpOwogICAgICAgICBtZXRh
ZGF0YS0+c2V0TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIobmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIgPT0gTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Olllcyk7CisgICAgICAgIG1ldGFk
YXRhLT5zZXRQcml2YXRlQnJhbmRSZXF1aXJlbWVudChwcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7
CiAgICAgICAgIGNvbnN0cnVjdG9yID0gZ2VuZXJhdG9yLmVtaXROb2RlKGNvbnN0cnVjdG9yLmdl
dCgpLCBtX2NvbnN0cnVjdG9yRXhwcmVzc2lvbik7CiAgICAgICAgIG5lZWRzSG9tZU9iamVjdCA9
IG1fY2xhc3NIZXJpdGFnZSB8fCBtZXRhZGF0YS0+c3VwZXJCaW5kaW5nKCkgPT0gU3VwZXJCaW5k
aW5nOjpOZWVkZWQ7CiAgICAgfSBlbHNlCi0gICAgICAgIGNvbnN0cnVjdG9yID0gZ2VuZXJhdG9y
LmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoY29uc3RydWN0b3IuZ2V0KCksIG1fY2xhc3NIZXJp
dGFnZSA/IENvbnN0cnVjdG9yS2luZDo6RXh0ZW5kcyA6IENvbnN0cnVjdG9yS2luZDo6QmFzZSwg
bV9uYW1lLCBlY21hTmFtZSgpLCBtX2NsYXNzU291cmNlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplcik7CisgICAgICAgIGNvbnN0cnVjdG9yID0gZ2VuZXJhdG9yLmVtaXROZXdEZWZhdWx0Q29u
c3RydWN0b3IoY29uc3RydWN0b3IuZ2V0KCksIG1fY2xhc3NIZXJpdGFnZSA/IENvbnN0cnVjdG9y
S2luZDo6RXh0ZW5kcyA6IENvbnN0cnVjdG9yS2luZDo6QmFzZSwgbV9uYW1lLCBlY21hTmFtZSgp
LCBtX2NsYXNzU291cmNlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgcHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQpOwogCiAgICAgY29uc3QgYXV0byYgcHJvcGVydHlOYW1lcyA9IGdlbmVyYXRv
ci5wcm9wZXJ0eU5hbWVzKCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3RvdHlwZSA9IGdl
bmVyYXRvci5lbWl0TmV3T2JqZWN0KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSk7CkBAIC00OTU1
LDYgKzQ5OTQsOSBAQCBSZWdpc3RlcklEKiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogICAgICAgICBnZW5lcmF0b3Iu
cG9wTGV4aWNhbFNjb3BlKHRoaXMpOwogICAgIH0KIAorICAgIGlmIChoYXNQcml2YXRlTmFtZXMp
CisgICAgICAgIGdlbmVyYXRvci5wb3BQcml2YXRlQWNjZXNzTmFtZXMoKTsKKwogICAgIHJldHVy
biBnZW5lcmF0b3IubW92ZShnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIGNvbnN0cnVj
dG9yLmdldCgpKSwgY29uc3RydWN0b3IuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAppbmRleCA1ZjI5YWQ3
NjM1MTYzN2RhMWE0Yzg4ZmVhY2RlNzk0YjE5ODc4NWFmLi5jZDUzMjU3NjQ3NWQ4Mzc2OGEwNWIx
YzI5ZmFmMGM3YjkxM2RkYTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKQEAgLTI2Miw3ICsyNjIsNyBAQCBKU1ZhbHVl
IERlYnVnZ2VyQ2FsbEZyYW1lOjpldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihjb25zdCBTdHJp
bmcmIHNjcmlwdCwgSlNPYgogICAgIEpTU2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5k
ZXJURFooc2NvcGUoKS0+anNTY29wZSgpLCB2YXJpYWJsZXNVbmRlclREWik7CiAKICAgICBFQ01B
TW9kZSBlY21hTW9kZSA9IGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5TdHJpY3RD
b250ZXh0KCkgPyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCk7Ci0gICAg
YXV0byogZXZhbCA9IERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBt
YWtlU291cmNlKHNjcmlwdCwgY2FsbEZyYW1lLT5jYWxsZXJTb3VyY2VPcmlnaW4odm0pKSwgY29k
ZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgY29kZUJs
b2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBj
b2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmlzQXJyb3dGdW5jdGlvbigpLCBjb2RlQmxv
Y2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24oKSwgZXZhbENv
bnRleHRUeXBlLCAmdmFyaWFibGVzVW5kZXJURFosIGVjbWFNb2RlKTsKKyAgICBhdXRvKiBldmFs
ID0gRGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShnbG9iYWxPYmplY3QsIG1ha2VTb3VyY2Uo
c2NyaXB0LCBjYWxsRnJhbWUtPmNhbGxlclNvdXJjZU9yaWdpbih2bSkpLCBjb2RlQmxvY2stPnVu
bGlua2VkQ29kZUJsb2NrKCktPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBjb2RlQmxvY2stPnVubGlu
a2VkQ29kZUJsb2NrKCktPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGNvZGVCbG9jay0+
dW5saW5rZWRDb2RlQmxvY2soKS0+cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSwgY29kZUJsb2Nr
LT51bmxpbmtlZENvZGVCbG9jaygpLT5pc0Fycm93RnVuY3Rpb24oKSwgY29kZUJsb2NrLT5vd25l
ckV4ZWN1dGFibGUoKS0+aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKCksIGV2YWxDb250ZXh0VHlw
ZSwgJnZhcmlhYmxlc1VuZGVyVERaLCBlY21hTW9kZSk7CiAgICAgaWYgKFVOTElLRUxZKGNhdGNo
U2NvcGUuZXhjZXB0aW9uKCkpKSB7CiAgICAgICAgIGV4Y2VwdGlvbiA9IGNhdGNoU2NvcGUuZXhj
ZXB0aW9uKCk7CiAgICAgICAgIGNhdGNoU2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDRl
N2NkYzFmN2MzMjc1NTEwZGU0OWZlNzlhZWEwYmIzYmNkMThhN2MuLjIwZjljZDdhZjc2NDk4ZWY1
ODBkZGUzYjc1MTQ3MThmZmU5MzU5NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIEpTVmFsdWUg
ZXZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
RUNNQU1vZGUgZWNtYU1vCiAgICAgICAgIAogICAgICAgICBWYXJpYWJsZUVudmlyb25tZW50IHZh
cmlhYmxlc1VuZGVyVERaOwogICAgICAgICBKU1Njb3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxl
c1VuZGVyVERaKGNhbGxlclNjb3BlQ2hhaW4sIHZhcmlhYmxlc1VuZGVyVERaKTsKLSAgICAgICAg
ZXZhbCA9IERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtYWtlU291
cmNlKHByb2dyYW1Tb3VyY2UsIGNhbGxlckNvZGVCbG9jay0+c291cmNlKCkucHJvdmlkZXIoKS0+
c291cmNlT3JpZ2luKCkpLCBkZXJpdmVkQ29udGV4dFR5cGUsIGNhbGxlclVubGlua2VkQ29kZUJs
b2NrLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0
LCBjYWxsZXJDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0luc2lkZU9yZGluYXJ5RnVu
Y3Rpb24oKSwgZXZhbENvbnRleHRUeXBlLCAmdmFyaWFibGVzVW5kZXJURFosIGVjbWFNb2RlKTsK
KyAgICAgICAgZXZhbCA9IERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0
LCBtYWtlU291cmNlKHByb2dyYW1Tb3VyY2UsIGNhbGxlckNvZGVCbG9jay0+c291cmNlKCkucHJv
dmlkZXIoKS0+c291cmNlT3JpZ2luKCkpLCBkZXJpdmVkQ29udGV4dFR5cGUsIGNhbGxlclVubGlu
a2VkQ29kZUJsb2NrLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBjYWxsZXJVbmxpbmtl
ZENvZGVCbG9jay0+cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSwgaXNBcnJvd0Z1bmN0aW9uQ29u
dGV4dCwgY2FsbGVyQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJbnNpZGVPcmRpbmFy
eUZ1bmN0aW9uKCksIGV2YWxDb250ZXh0VHlwZSwgJnZhcmlhYmxlc1VuZGVyVERaLCBlY21hTW9k
ZSk7CiAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhZXZh
bCk7CiAgICAgICAgIGlmICghZXZhbCkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAppbmRleCA2NGE2NmY3NjVjOGY0
ZDI4NDk2ZGE5Y2U2YzQ0YWJiMDhhYTg4MWI5Li4wMmI3ODc1Y2NhZjZhZmY2NjNhYzFlZWY1YWRk
YjhkYmQzNDA5Mzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApAQCAt
MjAyLDYgKzIwMiw3IEBAIEZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpGdW5jdGlvbk1ldGFkYXRhTm9k
ZSgKICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29u
c3RydWN0b3JLaW5kKSkKICAgICAgICAgLCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8pKQogICAg
ICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24oaXNBcnJvd0Z1bmN0aW9uQm9k
eUV4cHJlc3Npb24pCisgICAgICAgICwgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmUpKQogICAgICAgICAs
IG1fcGFyc2VNb2RlKG1vZGUpCiAgICAgICAgICwgbV9zdGFydENvbHVtbihzdGFydENvbHVtbikK
ICAgICAgICAgLCBtX2VuZENvbHVtbihlbmRDb2x1bW4pCkBAIC0yMjYsNiArMjI3LDcgQEAgRnVu
Y3Rpb25NZXRhZGF0YU5vZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKAogICAgICAgICAsIG1fY29u
c3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKQogICAg
ICAgICAsIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObykpCiAgICAgICAgICwgbV9pc0Fycm93RnVu
Y3Rpb25Cb2R5RXhwcmVzc2lvbihpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKKyAgICAg
ICAgLCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50KHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcml2
YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZSkpCiAgICAgICAgICwgbV9wYXJzZU1vZGUobW9kZSkK
ICAgICAgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQogICAgICAgICAsIG1fZW5kQ29s
dW1uKGVuZENvbHVtbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCA4MDNm
MDk5M2U5ZmZkNTUxNzc2ODA1MmY1YzkzMmVjNDY1NmJiZjEzLi45ZDMyOTVlMTgxYTljNGZhNWRh
MTlhODU4OWZjOGM4ODE0ZTdhN2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5o
CkBAIC03MjEsNyArNzIxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgZW51bSBjbGFzcyBDbGFz
c0VsZW1lbnRUYWcgOiB1aW50OF90IHsgTm8sIEluc3RhbmNlLCBTdGF0aWMsIExhc3RUYWcgfTsK
ICAgICBjbGFzcyBQcm9wZXJ0eU5vZGUgZmluYWwgOiBwdWJsaWMgUGFyc2VyQXJlbmFGcmVlYWJs
ZSB7CiAgICAgcHVibGljOgotICAgICAgICBlbnVtIFR5cGUgOiB1aW50OF90IHsgQ29uc3RhbnQg
PSAxLCBHZXR0ZXIgPSAyLCBTZXR0ZXIgPSA0LCBDb21wdXRlZCA9IDgsIFNob3J0aGFuZCA9IDE2
LCBTcHJlYWQgPSAzMiwgUHJpdmF0ZSA9IDY0IH07CisgICAgICAgIGVudW0gVHlwZSA6IHVpbnQ4
X3QgeyBDb25zdGFudCA9IDEsIEdldHRlciA9IDIsIFNldHRlciA9IDQsIENvbXB1dGVkID0gOCwg
U2hvcnRoYW5kID0gMTYsIFNwcmVhZCA9IDMyLCBQcml2YXRlRmllbGQgPSA2NCwgUHJpdmF0ZU1l
dGhvZCA9IDEyOCB9OwogCiAgICAgICAgIFByb3BlcnR5Tm9kZShjb25zdCBJZGVudGlmaWVyJiwg
RXhwcmVzc2lvbk5vZGUqLCBUeXBlLCBTdXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZyk7CiAg
ICAgICAgIFByb3BlcnR5Tm9kZShFeHByZXNzaW9uTm9kZSosIFR5cGUsIFN1cGVyQmluZGluZywg
Q2xhc3NFbGVtZW50VGFnKTsKQEAgLTczOSw3ICs3MzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgYm9vbCBpc0NsYXNzRmllbGQoKSBjb25zdCB7IHJldHVybiBpc0NsYXNzUHJvcGVydHko
KSAmJiAhbmVlZHNTdXBlckJpbmRpbmcoKTsgfQogICAgICAgICBib29sIGlzSW5zdGFuY2VDbGFz
c0ZpZWxkKCkgY29uc3QgeyByZXR1cm4gaXNJbnN0YW5jZUNsYXNzUHJvcGVydHkoKSAmJiAhbmVl
ZHNTdXBlckJpbmRpbmcoKTsgfQogICAgICAgICBib29sIGlzT3ZlcnJpZGRlbkJ5RHVwbGljYXRl
KCkgY29uc3QgeyByZXR1cm4gbV9pc092ZXJyaWRkZW5CeUR1cGxpY2F0ZTsgfQotICAgICAgICBi
b29sIGlzUHJpdmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSAmIFByaXZhdGU7IH0KKyAgICAg
ICAgYm9vbCBpc1ByaXZhdGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgJiAoUHJpdmF0ZUZpZWxk
IHwgUHJpdmF0ZU1ldGhvZCk7IH0KICAgICAgICAgYm9vbCBoYXNDb21wdXRlZE5hbWUoKSBjb25z
dCB7IHJldHVybiBtX2V4cHJlc3Npb247IH0KICAgICAgICAgYm9vbCBpc0NvbXB1dGVkQ2xhc3NG
aWVsZCgpIGNvbnN0IHsgcmV0dXJuIGlzQ2xhc3NGaWVsZCgpICYmIGhhc0NvbXB1dGVkTmFtZSgp
OyB9CiAgICAgICAgIHZvaWQgc2V0SXNPdmVycmlkZGVuQnlEdXBsaWNhdGUoKSB7IG1faXNPdmVy
cmlkZGVuQnlEdXBsaWNhdGUgPSB0cnVlOyB9CkBAIC03NTksNyArNzU5LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIG1fbmFtZTsKICAgICAgICAgRXhwcmVz
c2lvbk5vZGUqIG1fZXhwcmVzc2lvbjsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYXNzaWdu
OwotICAgICAgICB1bnNpZ25lZCBtX3R5cGUgOiA3OworICAgICAgICB1bnNpZ25lZCBtX3R5cGU7
CiAgICAgICAgIHVuc2lnbmVkIG1fbmVlZHNTdXBlckJpbmRpbmcgOiAxOwogICAgICAgICBzdGF0
aWNfYXNzZXJ0KDEgPDwgMiA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDbGFzc0VsZW1lbnRUYWc6
Okxhc3RUYWcpLCAiQ2xhc3NFbGVtZW50VGFnIHNob3VsZG4ndCB1c2UgbW9yZSB0aGFuIHR3byBi
aXRzIik7CiAgICAgICAgIHVuc2lnbmVkIG1fY2xhc3NFbGVtZW50VGFnIDogMjsKQEAgLTIxNTIs
NiArMjE1Miw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHNldEVjbWFOYW1lKGNv
bnN0IElkZW50aWZpZXImIGVjbWFOYW1lKSB7IG1fZWNtYU5hbWUgPSBlY21hTmFtZTsgfQogICAg
ICAgICBjb25zdCBJZGVudGlmaWVyJiBlY21hTmFtZSgpIHsgcmV0dXJuIG1faWRlbnQuaXNFbXB0
eSgpID8gbV9lY21hTmFtZSA6IG1faWRlbnQ7IH0KIAorICAgICAgICB2b2lkIHNldFByaXZhdGVC
cmFuZFJlcXVpcmVtZW50KFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVp
cmVtZW50KSB7IG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4ocHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOyB9CisgICAgICAgIFByaXZhdGVCcmFuZFJlcXVp
cmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQ+KG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOyB9CisKICAg
ICAgICAgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSgpIHsgcmV0dXJuIG1fZnVuY3Rpb25Nb2Rl
OyB9CiAKICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9m
dW5jdGlvbk5hbWVTdGFydDsgfQpAQCAtMjIwMCw2ICsyMjAzLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKICAgICAgICAgdW5zaWdu
ZWQgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1f
aXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gOiAxOworICAgICAgICB1bnNpZ25lZCBtX3By
aXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsKICAgICAgICAgU291cmNlUGFyc2VNb2RlIG1fcGFy
c2VNb2RlOwogICAgICAgICBGdW5jdGlvbk1vZGUgbV9mdW5jdGlvbk1vZGU7CiAgICAgICAgIElk
ZW50aWZpZXIgbV9pZGVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApp
bmRleCBjN2Y5YmU4MTRjNTVkMjk2M2U1N2JmZTg3NDIyZGRiZjc1MTY2MWM0Li44Y2E2MjY3OTY5
Y2RjNGRjNTk4NjJjMjFjNjNkZTZlNmQyM2ExNmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuY3BwCkBAIC0yOTY3LDE1ICsyOTY3LDIwIEBAIHBhcnNlTWV0aG9kOgogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUFJJVkFURU5BTUU6IHsKICAgICAgICAgICAg
IEFTU0VSVChPcHRpb25zOjp1c2VQcml2YXRlQ2xhc3NGaWVsZHMoKSk7Ci0gICAgICAgICAgICBK
U1Rva2VuIHRva2VuID0gbV90b2tlbjsKICAgICAgICAgICAgIGlkZW50ID0gbV90b2tlbi5tX2Rh
dGEuaWRlbnQ7CiAgICAgICAgICAgICBmYWlsSWZUcnVlKHRhZyA9PSBDbGFzc0VsZW1lbnRUYWc6
OlN0YXRpYywgIlN0YXRpYyBjbGFzcyBlbGVtZW50IGNhbm5vdCBiZSBwcml2YXRlIik7CiAgICAg
ICAgICAgICBmYWlsSWZUcnVlKGlzR2V0dGVyIHx8IGlzU2V0dGVyLCAiQ2Fubm90IHBhcnNlIGNs
YXNzIG1ldGhvZCB3aXRoIHByaXZhdGUgbmFtZSIpOwogICAgICAgICAgICAgQVNTRVJUKGlkZW50
KTsKICAgICAgICAgICAgIG5leHQoKTsKLSAgICAgICAgICAgIGZhaWxJZlRydWUobWF0Y2hBbmRV
cGRhdGUoT1BFTlBBUkVOLCB0b2tlbiksICJDYW5ub3QgcGFyc2UgY2xhc3MgbWV0aG9kIHdpdGgg
cHJpdmF0ZSBuYW1lIik7Ci0gICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoY2xhc3NTY29w
ZS0+ZGVjbGFyZVByaXZhdGVOYW1lKCppZGVudCkgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxp
ZER1cGxpY2F0ZURlY2xhcmF0aW9uLCAiQ2Fubm90IGRlY2xhcmUgcHJpdmF0ZSBmaWVsZCB0d2lj
ZSIpOwotICAgICAgICAgICAgdHlwZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4o
dHlwZSB8IFByb3BlcnR5Tm9kZTo6UHJpdmF0ZSk7CisgICAgICAgICAgICBpZiAoT3B0aW9uczo6
dXNlUHJpdmF0ZU1ldGhvZHMoKSAmJiBtYXRjaChPUEVOUEFSRU4pKSB7CisgICAgICAgICAgICAg
ICAgc2VtYW50aWNGYWlsSWZUcnVlKGNsYXNzU2NvcGUtPmRlY2xhcmVQcml2YXRlTWV0aG9kKCpp
ZGVudCkgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uLCAi
Q2Fubm90IGRlY2xhcmUgcHJpdmF0ZSBtZXRob2QgdHdpY2UiKTsKKyAgICAgICAgICAgICAgICB0
eXBlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlIHwgUHJvcGVydHlOb2Rl
OjpQcml2YXRlTWV0aG9kKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaChPUEVOUEFSRU4pLCAiQ2Fubm90IHBhcnNl
IGNsYXNzIG1ldGhvZCB3aXRoIHByaXZhdGUgbmFtZSIpOworICAgICAgICAgICAgc2VtYW50aWNG
YWlsSWZUcnVlKGNsYXNzU2NvcGUtPmRlY2xhcmVQcml2YXRlRmllbGQoKmlkZW50KSAmIERlY2xh
cmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb24sICJDYW5ub3QgZGVjbGFy
ZSBwcml2YXRlIGZpZWxkIHR3aWNlIik7CisgICAgICAgICAgICB0eXBlID0gc3RhdGljX2Nhc3Q8
UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlIHwgUHJvcGVydHlOb2RlOjpQcml2YXRlRmllbGQpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IGU3YzMzOWFkOWJhZjFmY2RmMTcyMTJjNjg4
MDQ3Mjg1YzJjZDYyNTIuLmFiYzJlNWQ3ZGUwZWUxZjlkZWFkNTUwYzFmYTg3NmFkZWU5N2U1MTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtNTExLDExICs1MTEsMjgg
QEAgcHVibGljOgogICAgICAgICBtX2xleGljYWxWYXJpYWJsZXMudXNlUHJpdmF0ZU5hbWUoaWRl
bnQpOwogICAgIH0KIAotICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJlUHJpdmF0ZU5h
bWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRl
Y2xhcmVQcml2YXRlTWV0aG9kKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogICAgIHsKICAgICAg
ICAgQVNTRVJUKG1fYWxsb3dzTGV4aWNhbERlY2xhcmF0aW9ucyk7CiAgICAgICAgIERlY2xhcmF0
aW9uUmVzdWx0TWFzayByZXN1bHQgPSBEZWNsYXJhdGlvblJlc3VsdDo6VmFsaWQ7Ci0gICAgICAg
IGF1dG8gYWRkUmVzdWx0ID0gbV9sZXhpY2FsVmFyaWFibGVzLmRlY2xhcmVQcml2YXRlTmFtZShp
ZGVudCk7CisgICAgICAgIGJvb2wgYWRkUmVzdWx0ID0gbV9sZXhpY2FsVmFyaWFibGVzLmRlY2xh
cmVQcml2YXRlTWV0aG9kKGlkZW50KTsKKworICAgICAgICBpZiAoIWFkZFJlc3VsdCkgeworICAg
ICAgICAgICAgcmVzdWx0IHw9IERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVj
bGFyYXRpb247CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAgICAg
ICAgdXNlVmFyaWFibGUoJmlkZW50LCBmYWxzZSk7CisgICAgICAgIGFkZENsb3NlZFZhcmlhYmxl
Q2FuZGlkYXRlVW5jb25kaXRpb25hbGx5KGlkZW50LmltcGwoKSk7CisKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICB9CisKKyAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyZVByaXZh
dGVGaWVsZChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICB7CisgICAgICAgIEFTU0VSVCht
X2FsbG93c0xleGljYWxEZWNsYXJhdGlvbnMpOworICAgICAgICBEZWNsYXJhdGlvblJlc3VsdE1h
c2sgcmVzdWx0ID0gRGVjbGFyYXRpb25SZXN1bHQ6OlZhbGlkOworICAgICAgICBhdXRvIGFkZFJl
c3VsdCA9IG1fbGV4aWNhbFZhcmlhYmxlcy5kZWNsYXJlUHJpdmF0ZUZpZWxkKGlkZW50KTsKICAg
ICAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgIHJlc3VsdCB8PSBE
ZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uOwogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXJNb2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5o
CmluZGV4IDY0MTMxMmNjYzliY2YwZDcxZTZhMDI0NWI4OWI4NjM3MjA2NDgzZTAuLmNlODYwNDcx
M2ViYzAxOGU3YjZlNmNhMGQyMGI1YmUwNWJhMzNhMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKQEAgLTM3LDYgKzM3LDggQEAgZW51bSBjbGFzcyBKU1Bh
cnNlclNjcmlwdE1vZGUgeyBDbGFzc2ljLCBNb2R1bGUgfTsKIAogZW51bSBjbGFzcyBTdXBlckJp
bmRpbmcgeyBOZWVkZWQsIE5vdE5lZWRlZCB9OwogCitlbnVtIGNsYXNzIFByaXZhdGVCcmFuZFJl
cXVpcmVtZW50IHsgTm9uZSwgTmVlZGVkIH07CisKIGVudW0gY2xhc3MgQ29kZUdlbmVyYXRpb25N
b2RlIDogdWludDhfdCB7CiAgICAgRGVidWdnZXIgPSAxIDw8IDAsCiAgICAgVHlwZVByb2ZpbGVy
ID0gMSA8PCAxLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJp
YWJsZUVudmlyb25tZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFi
bGVFbnZpcm9ubWVudC5jcHAKaW5kZXggZDVhOWVkOTk5NWUzODcyM2I3ZmJmYWExNWNiZDY5NDJh
ZDRkNTlkMi4uN2QzYjFiOGI3MDYwNWJkZTM5NWE1YzdkYmZlMDg1MDA5ZWE5NGU5MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQu
Y3BwCkBAIC0xMDQsNiArMTA0LDQxIEBAIHZvaWQgVmFyaWFibGVFbnZpcm9ubWVudDo6bWFya1Zh
cmlhYmxlQXNFeHBvcnRlZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+CiAgICAgZmlu
ZFJlc3VsdC0+dmFsdWUuc2V0SXNFeHBvcnRlZCgpOwogfQogCitib29sIFZhcmlhYmxlRW52aXJv
bm1lbnQ6OmRlY2xhcmVQcml2YXRlTWV0aG9kKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1w
bD4mIGlkZW50aWZpZXIpCit7CisgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICBtX3JhcmVE
YXRhID0gbWFrZVVuaXF1ZTxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4oKTsKKworICAg
IGF1dG8gZmluZFJlc3VsdCA9IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmZpbmQoaWRlbnRp
Zmllcik7CisKKyAgICBpZiAoZmluZFJlc3VsdCA9PSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1l
cy5lbmQoKSkgeworICAgICAgICBQcml2YXRlTmFtZUVudHJ5IG1ldGEoUHJpdmF0ZU5hbWVFbnRy
eTo6VHJhaXRzOjpJc0RlY2xhcmVkIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc01ldGhv
ZCk7CisKKyAgICAgICAgYXV0byBlbnRyeSA9IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpOwor
ICAgICAgICBlbnRyeS5zZXRJc1ByaXZhdGVNZXRob2QoKTsKKyAgICAgICAgZW50cnkuc2V0SXND
b25zdCgpOworICAgICAgICBlbnRyeS5zZXRJc0NhcHR1cmVkKCk7CisgICAgICAgIG1fbWFwLmFk
ZChpZGVudGlmaWVyLCBlbnRyeSk7CisKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3JhcmVE
YXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoaWRlbnRpZmllciwgbWV0YSk7CisgICAgICAgIHJldHVy
biBhZGRSZXN1bHQuaXNOZXdFbnRyeTsKKyAgICB9CisKKyAgICBpZiAoZmluZFJlc3VsdC0+dmFs
dWUuaXNEZWNsYXJlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7IC8vIEVycm9yOiBkZWNsYXJp
bmcgYSBkdXBsaWNhdGUgcHJpdmF0ZSBuYW1lLgorCisgICAgYXV0byBlbnRyeSA9IFZhcmlhYmxl
RW52aXJvbm1lbnRFbnRyeSgpOworICAgIGVudHJ5LnNldElzUHJpdmF0ZU1ldGhvZCgpOworICAg
IGVudHJ5LnNldElzQ29uc3QoKTsKKyAgICBlbnRyeS5zZXRJc0NhcHR1cmVkKCk7CisgICAgbV9t
YXAuYWRkKGlkZW50aWZpZXIsIGVudHJ5KTsKKworICAgIC8vIGl0IHdhcyBwcmV2aW91c2x5IHVz
ZWQsIG1hcmsgaXQgYXMgZGVjbGFyZWQuCisgICAgUHJpdmF0ZU5hbWVFbnRyeSBtZXRhKFByaXZh
dGVOYW1lRW50cnk6OlRyYWl0czo6SXNEZWNsYXJlZCB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0
czo6SXNVc2VkIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc01ldGhvZCk7CisgICAgYXV0
byBhZGRSZXN1bHQgPSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5zZXQoaWRlbnRpZmllciwg
bWV0YSk7CisgICAgcmV0dXJuICFhZGRSZXN1bHQuaXNOZXdFbnRyeTsKK30KKwogQ29tcGFjdFZh
cmlhYmxlRW52aXJvbm1lbnQ6OkNvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50KGNvbnN0IFZhcmlh
YmxlRW52aXJvbm1lbnQmIGVudikKICAgICA6IG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQoZW52Lmlz
RXZlcnl0aGluZ0NhcHR1cmVkKCkpCiB7CkBAIC0xMTcsNiArMTUyLDI1IEBAIENvbXBhY3RWYXJp
YWJsZUVudmlyb25tZW50OjpDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudChjb25zdCBWYXJpYWJs
ZUVudmlyb25tZW50CiAgICAgfSk7CiAKICAgICBtX2hhc2ggPSAwOworICAgIGlmIChlbnYucHJp
dmF0ZU5hbWVzU2l6ZSgpKSB7CisgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8VW5pcXVlZFN0cmlu
Z0ltcGwqLCBQcml2YXRlTmFtZUVudHJ5PiwgMTY+IHNvcnRlZFByaXZhdGVFbnRyaWVzOworICAg
ICAgICBzb3J0ZWRQcml2YXRlRW50cmllcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGVudi5wcml2
YXRlTmFtZXNTaXplKCkpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVudHJpZXMgOiBlbnYu
cHJpdmF0ZU5hbWVzKCkpCisgICAgICAgICAgICBzb3J0ZWRQcml2YXRlRW50cmllcy5hcHBlbmQo
e2VudHJpZXMua2V5LmdldCgpLCBlbnRyaWVzLnZhbHVlfSk7CisKKyAgICAgICAgc3RkOjpzb3J0
KHNvcnRlZFByaXZhdGVFbnRyaWVzLmJlZ2luKCksIHNvcnRlZFByaXZhdGVFbnRyaWVzLmVuZCgp
LCBbXSAoY29uc3QgYXV0byYgYSwgY29uc3QgYXV0byYgYikgeworICAgICAgICAgICAgcmV0dXJu
IGEuZmlyc3QgPCBiLmZpcnN0OworICAgICAgICB9KTsKKworICAgICAgICBtX3ByaXZhdGVBY2Nl
c3NOYW1lcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGVudi5wcml2YXRlTmFtZXNTaXplKCkpOwor
ICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBzb3J0ZWRQcml2YXRlRW50cmllcykgewor
ICAgICAgICAgICAgbV9wcml2YXRlQWNjZXNzTmFtZXMuYXBwZW5kKHBhaXIuZmlyc3QpOworICAg
ICAgICAgICAgbV9wcml2YXRlTmFtZU1ldGFkYXRhLmFwcGVuZChwYWlyLnNlY29uZCk7CisgICAg
ICAgICAgICBtX2hhc2ggXj0gcGFpci5maXJzdC0+aGFzaCgpOworICAgICAgICAgICAgbV9oYXNo
ICs9IHBhaXIuc2Vjb25kLmJpdHMoKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIG1fdmFyaWFi
bGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc29ydGVkRW50cmllcy5zaXplKCkpOwogICAgIG1f
dmFyaWFibGVNZXRhZGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNvcnRlZEVudHJpZXMuc2l6
ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBzb3J0ZWRFbnRyaWVzKSB7CkBAIC0x
NDAsNiArMTk0LDEwIEBAIGJvb2wgQ29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQ6Om9wZXJhdG9y
PT0oY29uc3QgQ29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQmIG90CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBpZiAobV92YXJpYWJsZU1ldGFkYXRhICE9IG90aGVyLm1fdmFyaWFibGVNZXRh
ZGF0YSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX3ByaXZhdGVBY2Nlc3NOYW1l
cyAhPSBvdGhlci5tX3ByaXZhdGVBY2Nlc3NOYW1lcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmIChtX3ByaXZhdGVOYW1lTWV0YWRhdGEgIT0gb3RoZXIubV9wcml2YXRlTmFtZU1ldGFk
YXRhKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE1
Myw2ICsyMTEsMTIgQEAgVmFyaWFibGVFbnZpcm9ubWVudCBDb21wYWN0VmFyaWFibGVFbnZpcm9u
bWVudDo6dG9WYXJpYWJsZUVudmlyb25tZW50KCkgY29uc3QKICAgICAgICAgYWRkUmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IG1fdmFyaWFibGVNZXRhZGF0YVtpXTsKICAgICB9CiAKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fcHJpdmF0ZUFjY2Vzc05hbWVzLnNpemUoKTsgaSsrKSB7Cisg
ICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gcmVzdWx0LmFkZFByaXZhdGVOYW1lKG1fcHJpdmF0ZUFj
Y2Vzc05hbWVzW2ldKTsKKyAgICAgICAgQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAg
ICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1fcHJpdmF0ZU5hbWVNZXRhZGF0YVtp
XTsKKyAgICB9CisKICAgICBpZiAobV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZCkKICAgICAgICAgcmVz
dWx0Lm1hcmtBbGxWYXJpYWJsZXNBc0NhcHR1cmVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKaW5kZXggYzEyMTM1MTlmMTcx
ZDBmYzdlMmVmYzdkMmRlZThhMWFiNDQ5OTA5MC4uNWIwMjEyZTM3ZjJlYjIxM2JmYjllZGQyM2Fh
MTVhYTI5YWVmNGZjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9W
YXJpYWJsZUVudmlyb25tZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9W
YXJpYWJsZUVudmlyb25tZW50LmgKQEAgLTQ0LDcgKzQ0LDggQEAgcHVibGljOgogICAgIEFMV0FZ
U19JTkxJTkUgYm9vbCBpc0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNGdW5j
dGlvbjsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1BhcmFtZXRlcigpIGNvbnN0IHsgcmV0
dXJuIG1fYml0cyAmIElzUGFyYW1ldGVyOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzU2xv
cHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNTbG9w
cHlNb2RlSG9pc3RpbmdDYW5kaWRhdGU7IH0KLSAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQcml2
YXRlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzUHJpdmF0ZU5hbWU7IH0KKyAgICBB
TFdBWVNfSU5MSU5FIGJvb2wgaXNQcml2YXRlRmllbGQoKSBjb25zdCB7IHJldHVybiBtX2JpdHMg
JiBJc1ByaXZhdGVGaWVsZDsgfQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1ByaXZhdGVNZXRo
b2QoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1ByaXZhdGVNZXRob2Q7IH0KIAogICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXRJc0NhcHR1cmVkKCkgeyBtX2JpdHMgfD0gSXNDYXB0dXJlZDsg
fQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0NvbnN0KCkgeyBtX2JpdHMgfD0gSXNDb25z
dDsgfQpAQCAtNTYsNyArNTcsOCBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dElzRnVuY3Rpb24oKSB7IG1fYml0cyB8PSBJc0Z1bmN0aW9uOyB9CiAgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldElzUGFyYW1ldGVyKCkgeyBtX2JpdHMgfD0gSXNQYXJhbWV0ZXI7IH0KICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGUoKSB7IG1f
Yml0cyB8PSBJc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZTsgfQotICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXRJc1ByaXZhdGVOYW1lKCkgeyBtX2JpdHMgfD0gSXNQcml2YXRlTmFtZTsgfQor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1ByaXZhdGVGaWVsZCgpIHsgbV9iaXRzIHw9IElz
UHJpdmF0ZUZpZWxkOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzUHJpdmF0ZU1ldGhv
ZCgpIHsgbV9iaXRzIHw9IElzUHJpdmF0ZU1ldGhvZDsgfQogCiAgICAgQUxXQVlTX0lOTElORSB2
b2lkIGNsZWFySXNWYXIoKSB7IG1fYml0cyAmPSB+SXNWYXI7IH0KIApAQCAtNzksNyArODEsOCBA
QCBwcml2YXRlOgogICAgICAgICBJc0Z1bmN0aW9uID0gMSA8PCA3LAogICAgICAgICBJc1BhcmFt
ZXRlciA9IDEgPDwgOCwKICAgICAgICAgSXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGUgPSAx
IDw8IDksCi0gICAgICAgIElzUHJpdmF0ZU5hbWUgPSAxIDw8IDEwLAorICAgICAgICBJc1ByaXZh
dGVGaWVsZCA9IDEgPDwgMTAsCisgICAgICAgIElzUHJpdmF0ZU1ldGhvZCA9IDEgPDwgMTEsCiAg
ICAgfTsKICAgICB1aW50MTZfdCBtX2JpdHMgeyAwIH07CiB9OwpAQCAtODksMTEgKzkyLDE2IEBA
IHN0cnVjdCBWYXJpYWJsZUVudmlyb25tZW50RW50cnlIYXNoVHJhaXRzIDogSGFzaFRyYWl0czxW
YXJpYWJsZUVudmlyb25tZW50RW50cnk+CiB9OwogCiBzdHJ1Y3QgUHJpdmF0ZU5hbWVFbnRyeSB7
CisgICAgZnJpZW5kIGNsYXNzIENhY2hlZFByaXZhdGVOYW1lRW50cnk7CisKIHB1YmxpYzoKICAg
ICBQcml2YXRlTmFtZUVudHJ5KHVpbnQxNl90IHRyYWl0cyA9IDApIHsgbV9iaXRzID0gdHJhaXRz
OyB9CiAKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNVc2VkKCkgY29uc3QgeyByZXR1cm4gbV9i
aXRzICYgSXNVc2VkOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzRGVjbGFyZWQoKSBjb25z
dCB7IHJldHVybiBtX2JpdHMgJiBJc0RlY2xhcmVkOyB9CisgICAgQUxXQVlTX0lOTElORSBib29s
IGlzTWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNNZXRob2Q7IH0KKworICAgIGJv
b2wgaXNQcml2YXRlQWNjZXNzKCkgY29uc3QgeyByZXR1cm4gaXNNZXRob2QoKTsgfQogCiAgICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldElzVXNlZCgpIHsgbV9iaXRzIHw9IElzVXNlZDsgfQogICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0RlY2xhcmVkKCkgeyBtX2JpdHMgfD0gSXNEZWNsYXJl
ZDsgfQpAQCAtMTA2LDggKzExNCwxMCBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgZW51bSBUcmFp
dHMgOiB1aW50MTZfdCB7CisgICAgICAgIE5vbmUgPSAwLAogICAgICAgICBJc1VzZWQgPSAxIDw8
IDAsCiAgICAgICAgIElzRGVjbGFyZWQgPSAxIDw8IDEsCisgICAgICAgIElzTWV0aG9kID0gMSA8
PCAyLAogICAgIH07CiAKIHByaXZhdGU6CkBAIC0xMTUsMTQgKzEyNSwxNiBAQCBwcml2YXRlOgog
fTsKIAogc3RydWN0IFByaXZhdGVOYW1lRW50cnlIYXNoVHJhaXRzIDogSGFzaFRyYWl0czxQcml2
YXRlTmFtZUVudHJ5PiB7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9
IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFs
c2U7CiB9OwogCiBjbGFzcyBWYXJpYWJsZUVudmlyb25tZW50IHsKIHByaXZhdGU6CiAgICAgdHlw
ZWRlZiBIYXNoTWFwPFBhY2tlZFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIFZhcmlhYmxlRW52
aXJvbm1lbnRFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1
ZWRTdHJpbmdJbXBsPj4sIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeUhhc2hUcmFpdHM+IE1hcDsK
LSAgICB0eXBlZGVmIEhhc2hNYXA8UGFja2VkUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgUHJp
dmF0ZU5hbWVFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1
ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnlIYXNoVHJhaXRzPiBQcml2YXRlTmFtZXM7
CisKIHB1YmxpYzoKKyAgICB0eXBlZGVmIEhhc2hNYXA8UGFja2VkUmVmUHRyPFVuaXF1ZWRTdHJp
bmdJbXBsPiwgUHJpdmF0ZU5hbWVFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8
UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnlIYXNoVHJhaXRzPiBQ
cml2YXRlTmFtZXM7CisKICAgICBWYXJpYWJsZUVudmlyb25tZW50KCkgeyB9CiAgICAgVmFyaWFi
bGVFbnZpcm9ubWVudChWYXJpYWJsZUVudmlyb25tZW50JiYgb3RoZXIpCiAgICAgICAgIDogbV9t
YXAoV1RGTW92ZShvdGhlci5tX21hcCkpCkBAIC0xNDQsNiArMTU2LDE2IEBAIHB1YmxpYzoKICAg
ICBBTFdBWVNfSU5MSU5FIE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4g
bV9tYXAuZW5kKCk7IH0KICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6QWRkUmVzdWx0IGFkZChjb25z
dCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKSB7IHJldHVybiBtX21hcC5h
ZGQoaWRlbnRpZmllciwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCkpOyB9CiAgICAgQUxXQVlT
X0lOTElORSBNYXA6OkFkZFJlc3VsdCBhZGQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikg
eyByZXR1cm4gYWRkKGlkZW50aWZpZXIuaW1wbCgpKTsgfQorCisgICAgQUxXQVlTX0lOTElORSBQ
cml2YXRlTmFtZXM6OkFkZFJlc3VsdCBhZGRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBp
ZGVudGlmaWVyKSB7IHJldHVybiBhZGRQcml2YXRlTmFtZShpZGVudGlmaWVyLmltcGwoKSk7IH0K
KyAgICBBTFdBWVNfSU5MSU5FIFByaXZhdGVOYW1lczo6QWRkUmVzdWx0IGFkZFByaXZhdGVOYW1l
KGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCisgICAgeworICAg
ICAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgICAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1
ZTxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4oKTsKKworICAgICAgICByZXR1cm4gbV9y
YXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKGlkZW50aWZpZXIsIFByaXZhdGVOYW1lRW50cnko
KSk7CisgICAgfQorCiAgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9tYXAuc2l6ZSgpICsgcHJpdmF0ZU5hbWVzU2l6ZSgpOyB9CiAgICAgQUxXQVlTX0lO
TElORSB1bnNpZ25lZCBtYXBTaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuc2l6ZSgpOyB9CiAg
ICAgQUxXQVlTX0lOTElORSBib29sIGNvbnRhaW5zKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4mIGlkZW50aWZpZXIpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmNvbnRhaW5zKGlkZW50aWZp
ZXIpOyB9CkBAIC0xNjQsMTUgKzE4NiwxOCBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBQcml2YXRl
TmFtZXNSYW5nZSA9IFdURjo6SXRlcmF0b3JSYW5nZTxQcml2YXRlTmFtZXM6Oml0ZXJhdG9yPjsK
IAotICAgIEFMV0FZU19JTkxJTkUgTWFwOjpBZGRSZXN1bHQgZGVjbGFyZVByaXZhdGVOYW1lKGNv
bnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsgcmV0dXJuIGRlY2xhcmVQcml2YXRlTmFtZShp
ZGVudGlmaWVyLmltcGwoKSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIE1hcDo6QWRkUmVzdWx0IGRl
Y2xhcmVQcml2YXRlRmllbGQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyByZXR1cm4g
ZGVjbGFyZVByaXZhdGVGaWVsZChpZGVudGlmaWVyLmltcGwoKSk7IH0KICAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgdXNlUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyB1
c2VQcml2YXRlTmFtZShpZGVudGlmaWVyLmltcGwoKSk7IH0KIAotICAgIE1hcDo6QWRkUmVzdWx0
IGRlY2xhcmVQcml2YXRlTmFtZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVu
dGlmaWVyKQorICAgIGJvb2wgZGVjbGFyZVByaXZhdGVNZXRob2QoY29uc3QgSWRlbnRpZmllciYg
aWRlbnRpZmllcikgeyByZXR1cm4gZGVjbGFyZVByaXZhdGVNZXRob2QoaWRlbnRpZmllci5pbXBs
KCkpOyB9CisgICAgYm9vbCBkZWNsYXJlUHJpdmF0ZU1ldGhvZChjb25zdCBSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKTsKKworICAgIE1hcDo6QWRkUmVzdWx0IGRlY2xhcmVQ
cml2YXRlRmllbGQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikK
ICAgICB7CiAgICAgICAgIGF1dG8mIG1ldGEgPSBnZXRPckFkZFByaXZhdGVOYW1lKGlkZW50aWZp
ZXIuZ2V0KCkpOwogICAgICAgICBtZXRhLnNldElzRGVjbGFyZWQoKTsKICAgICAgICAgYXV0byBl
bnRyeSA9IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpOwotICAgICAgICBlbnRyeS5zZXRJc1By
aXZhdGVOYW1lKCk7CisgICAgICAgIGVudHJ5LnNldElzUHJpdmF0ZUZpZWxkKCk7CiAgICAgICAg
IGVudHJ5LnNldElzQ29uc3QoKTsKICAgICAgICAgZW50cnkuc2V0SXNDYXB0dXJlZCgpOwogICAg
ICAgICByZXR1cm4gbV9tYXAuYWRkKGlkZW50aWZpZXIsIGVudHJ5KTsKQEAgLTE5OSw2ICsyMjQs
MTkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMu
c2l6ZSgpOwogICAgIH0KIAorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBoYXNQcml2YXRlQWNjZXNz
KCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiBwcml2YXRlTmFtZXMoKSkg
eworICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVlLmlzUHJpdmF0ZUFjY2VzcygpKQorICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBoYXNQcml2YXRlTmFtZShjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudGlmaWVyKQogICAgIHsKICAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQpA
QCAtMjgwLDYgKzMxOCw5IEBAIHByaXZhdGU6CiAKICAgICBWZWN0b3I8UGFja2VkUmVmUHRyPFVu
aXF1ZWRTdHJpbmdJbXBsPj4gbV92YXJpYWJsZXM7CiAgICAgVmVjdG9yPFZhcmlhYmxlRW52aXJv
bm1lbnRFbnRyeT4gbV92YXJpYWJsZU1ldGFkYXRhOworICAgIFZlY3RvcjxSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+PiBtX3ByaXZhdGVBY2Nlc3NOYW1lczsKKyAgICBWZWN0b3I8UHJpdmF0ZU5h
bWVFbnRyeT4gbV9wcml2YXRlTmFtZU1ldGFkYXRhOworCiAgICAgdW5zaWduZWQgbV9oYXNoOwog
ICAgIGJvb2wgbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKaW5kZXggNTQ3NTc2NDZkNzAyMGQ1MGViZTdl
NDVmMWMzMjg5OTljNjQwZjY0Yy4uNTY4Y2E4YTVhYjQ0OTEwYjRiZjMyNzQ2ODliY2U1MTA2OWVm
MmI3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlw
ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNw
cApAQCAtOTgwLDYgKzk4MCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9iaXRWZWN0b3JzLmVuY29k
ZShlbmNvZGVyLCByYXJlRGF0YS5tX2JpdFZlY3RvcnMpOwogICAgICAgICBtX2NvbnN0YW50SWRl
bnRpZmllclNldHMuZW5jb2RlKGVuY29kZXIsIHJhcmVEYXRhLm1fY29uc3RhbnRJZGVudGlmaWVy
U2V0cyk7CiAgICAgICAgIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSByYXJlRGF0YS5t
X25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOworICAgICAgICBtX3ByaXZhdGVCcmFuZFJlcXVp
cmVtZW50ID0gcmFyZURhdGEubV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudDsKICAgICB9CiAKICAg
ICBVbmxpbmtlZENvZGVCbG9jazo6UmFyZURhdGEqIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKSBj
b25zdApAQCAtOTk0LDYgKzk5NSw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9iaXRWZWN0b3JzLmRl
Y29kZShkZWNvZGVyLCByYXJlRGF0YS0+bV9iaXRWZWN0b3JzKTsKICAgICAgICAgbV9jb25zdGFu
dElkZW50aWZpZXJTZXRzLmRlY29kZShkZWNvZGVyLCByYXJlRGF0YS0+bV9jb25zdGFudElkZW50
aWZpZXJTZXRzKTsKICAgICAgICAgcmFyZURhdGEtPm1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIgPSBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOworICAgICAgICByYXJlRGF0YS0+bV9w
cml2YXRlQnJhbmRSZXF1aXJlbWVudCA9IG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ7CiAgICAg
ICAgIHJldHVybiByYXJlRGF0YTsKICAgICB9CiAKQEAgLTEwMDcsNiArMTAwOSw3IEBAIHByaXZh
dGU6CiAgICAgQ2FjaGVkVmVjdG9yPENhY2hlZEJpdFZlY3Rvcj4gbV9iaXRWZWN0b3JzOwogICAg
IENhY2hlZFZlY3RvcjxDYWNoZWRDb25zdGFudElkZW50aWZpZXJTZXRFbnRyeT4gbV9jb25zdGFu
dElkZW50aWZpZXJTZXRzOwogICAgIHVuc2lnbmVkIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIgOiAxOworICAgIHVuc2lnbmVkIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgOiAxOwogfTsK
IAogY2xhc3MgQ2FjaGVkVmFyaWFibGVFbnZpcm9ubWVudFJhcmVEYXRhIDogcHVibGljIENhY2hl
ZE9iamVjdDxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4gewpAQCAtMTE4OCw3ICsxMTkx
LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBDYWNoZWRIYXNoU2V0PENhY2hl
ZFJlZlB0cjxDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPiBtX3By
aXZhdGVOYW1lczsKKyAgICBDYWNoZWRIYXNoTWFwPENhY2hlZFJlZlB0cjxDYWNoZWRVbmlxdWVk
U3RyaW5nSW1wbCwgVW5pcXVlZFN0cmluZ0ltcGwsIFdURjo6UGFja2VkUHRyVHJhaXRzPFVuaXF1
ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNo
VHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+LCBQcml2YXRlTmFtZUVudHJ5SGFzaFRy
YWl0cz4gbV9wcml2YXRlTmFtZXM7CiB9OwogCiBjbGFzcyBDYWNoZWRTeW1ib2xUYWJsZSA6IHB1
YmxpYyBDYWNoZWRPYmplY3Q8U3ltYm9sVGFibGU+IHsKQEAgLTE3NDQsMjEgKzE3NDcsMjEgQEAg
cHVibGljOgogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpSYXJlRGF0YSYgcmFyZURhdGEpCiAgICAgewogICAgICAgICBt
X2NsYXNzU291cmNlLmVuY29kZShlbmNvZGVyLCByYXJlRGF0YS5tX2NsYXNzU291cmNlKTsKLSAg
ICAgICAgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEu
bV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CisgICAgICAgIG1fcGFyZW50U2NvcGVWYXJpYWJs
ZUVudmlyb25tZW50LmVuY29kZShlbmNvZGVyLCByYXJlRGF0YS5tX3BhcmVudFNjb3BlVmFyaWFi
bGVFbnZpcm9ubWVudCk7CiAgICAgfQogCiAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6
OlJhcmVEYXRhKiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikgY29uc3QKICAgICB7CiAgICAgICAg
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpSYXJlRGF0YSogcmFyZURhdGEgPSBuZXcgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlJhcmVEYXRhIHsgfTsKICAgICAgICAgbV9jbGFzc1Nv
dXJjZS5kZWNvZGUoZGVjb2RlciwgcmFyZURhdGEtPm1fY2xhc3NTb3VyY2UpOwotICAgICAgICBh
dXRvIHBhcmVudFNjb3BlVERaVmFyaWFibGVzID0gbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5k
ZWNvZGUoZGVjb2Rlcik7Ci0gICAgICAgIHJhcmVEYXRhLT5tX3BhcmVudFNjb3BlVERaVmFyaWFi
bGVzID0gV1RGTW92ZShwYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CisgICAgICAgIGF1dG8gcGFy
ZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50ID0gbV9wYXJlbnRTY29wZVZhcmlhYmxlRW52aXJv
bm1lbnQuZGVjb2RlKGRlY29kZXIpOworICAgICAgICByYXJlRGF0YS0+bV9wYXJlbnRTY29wZVZh
cmlhYmxlRW52aXJvbm1lbnQgPSBXVEZNb3ZlKHBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVu
dCk7CiAgICAgICAgIHJldHVybiByYXJlRGF0YTsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgQ2Fj
aGVkU291cmNlQ29kZVdpdGhvdXRQcm92aWRlciBtX2NsYXNzU291cmNlOwotICAgIENhY2hlZENv
bXBhY3RWYXJpYWJsZU1hcEhhbmRsZSBtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzOworICAgIENh
Y2hlZENvbXBhY3RWYXJpYWJsZU1hcEhhbmRsZSBtX3BhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9u
bWVudDsKIH07CiAKIGNsYXNzIENhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZSA6IHB1YmxpYyBDYWNo
ZWRPYmplY3Q8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+IHsKQEAgLTE3OTQsNiArMTc5Nyw3
IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBt
X3N1cGVyQmluZGluZzsgfQogICAgIHVuc2lnbmVkIGRlcml2ZWRDb250ZXh0VHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGVyaXZlZENvbnRleHRUeXBlOyB9CiAgICAgdW5zaWduZWQgbmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIoKSBjb25zdCB7IHJldHVybiBtX25lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyOyB9CisgICAgdW5zaWduZWQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSBjb25zdCB7
IHJldHVybiBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50OyB9CiAKICAgICBJZGVudGlmaWVyIG5h
bWUoRGVjb2RlciYgZGVjb2RlcikgY29uc3QgeyByZXR1cm4gbV9uYW1lLmRlY29kZShkZWNvZGVy
KTsgfQogICAgIElkZW50aWZpZXIgZWNtYU5hbWUoRGVjb2RlciYgZGVjb2RlcikgY29uc3QgeyBy
ZXR1cm4gbV9lY21hTmFtZS5kZWNvZGUoZGVjb2Rlcik7IH0KQEAgLTE4MjIsNyArMTgyNiw4IEBA
IHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9wYXJhbWV0ZXJzU3RhcnRPZmZzZXQgOiAzMTsKICAg
ICB1bnNpZ25lZCBtX3R5cGVQcm9maWxpbmdTdGFydE9mZnNldDsKICAgICB1bnNpZ25lZCBtX3R5
cGVQcm9maWxpbmdFbmRPZmZzZXQ7Ci0gICAgdW5zaWduZWQgbV9wYXJhbWV0ZXJDb3VudDsKKyAg
ICB1bnNpZ25lZCBtX3BhcmFtZXRlckNvdW50OjMxOworICAgIHVuc2lnbmVkIG1fcHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQgOiAxOwogICAgIFNvdXJjZVBhcnNlTW9kZSBtX3NvdXJjZVBhcnNlTW9k
ZTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CiAgICAgdW5zaWduZWQgbV9m
dW5jdGlvbk1vZGUgOiAyOyAvLyBGdW5jdGlvbk1vZGUKQEAgLTE4NzksNyArMTg4NCw2IEBAIHB1
YmxpYzoKICAgICB1bnNpZ25lZCBpc0NsYXNzQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXND
bGFzc0NvbnRleHQ7IH0KICAgICB1bnNpZ25lZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJl
dHVybiBtX2NvbnN0cnVjdG9yS2luZDsgfQogICAgIHVuc2lnbmVkIGRlcml2ZWRDb250ZXh0VHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVyaXZlZENvbnRleHRUeXBlOyB9Ci0gICAgdW5zaWduZWQg
bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSBjb25zdCB7IHJldHVybiBtX25lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyOyB9CiAgICAgdW5zaWduZWQgZXZhbENvbnRleHRUeXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9ldmFsQ29udGV4dFR5cGU7IH0KICAgICB1bnNpZ25lZCBoYXNUYWlsQ2FsbHMo
KSBjb25zdCB7IHJldHVybiBtX2hhc1RhaWxDYWxsczsgfQogICAgIHVuc2lnbmVkIGhhc0NoZWNr
cG9pbnRzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNDaGVja3BvaW50czsgfQpAQCAtMTkxMSw3ICsx
OTE1LDYgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2lzQ2xhc3NDb250ZXh0IDogMTsKICAg
ICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CiAgICAgdW5zaWduZWQgbV9kZXJpdmVk
Q29udGV4dFR5cGUgOiAyOwotICAgIHVuc2lnbmVkIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIgOiAxOwogICAgIHVuc2lnbmVkIG1fZXZhbENvbnRleHRUeXBlIDogMjsKICAgICB1bnNpZ25l
ZCBtX2hhc1RhaWxDYWxscyA6IDE7CiAgICAgdW5zaWduZWQgbV9jb2RlVHlwZSA6IDI7CkBAIC0y
MTkyLDYgKzIxOTUsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgQ2FjaGVkRnVuY3Rpb25FeGVjdXRh
YmxlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVW5saQogICAgIG1fc3VwZXJCaW5k
aW5nID0gZXhlY3V0YWJsZS5tX3N1cGVyQmluZGluZzsKICAgICBtX2Rlcml2ZWRDb250ZXh0VHlw
ZSA9IGV4ZWN1dGFibGUubV9kZXJpdmVkQ29udGV4dFR5cGU7CiAgICAgbV9uZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplciA9IGV4ZWN1dGFibGUubV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjsK
KyAgICBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID0gZXhlY3V0YWJsZS5tX3ByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50OwogCiAgICAgbV9yYXJlRGF0YS5lbmNvZGUoZW5jb2RlciwgZXhlY3V0YWJs
ZS5tX3JhcmVEYXRhLmdldCgpKTsKIApAQCAtMjIzMyw2ICsyMjM3LDcgQEAgQUxXQVlTX0lOTElO
RSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUo
RGVjb2RlciYgZGUKICAgICAsIG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KGNhY2hlZEV4ZWN1
dGFibGUudHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KCkpCiAgICAgLCBtX3R5cGVQcm9maWxpbmdF
bmRPZmZzZXQoY2FjaGVkRXhlY3V0YWJsZS50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkpCiAgICAg
LCBtX3BhcmFtZXRlckNvdW50KGNhY2hlZEV4ZWN1dGFibGUucGFyYW1ldGVyQ291bnQoKSkKKyAg
ICAsIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoY2FjaGVkRXhlY3V0YWJsZS5wcml2YXRlQnJh
bmRSZXF1aXJlbWVudCgpKQogICAgICwgbV9mZWF0dXJlcyhjYWNoZWRFeGVjdXRhYmxlLmZlYXR1
cmVzKCkpCiAgICAgLCBtX3NvdXJjZVBhcnNlTW9kZShjYWNoZWRFeGVjdXRhYmxlLnNvdXJjZVBh
cnNlTW9kZSgpKQogICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoY2FjaGVkRXhlY3V0YWJsZS5jb25z
dHJ1Y3RvcktpbmQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUu
Y3BwCmluZGV4IGFmZGNjOTAyOTEzNzNmNTBkMDU3MGUzOGM4ZDkzNWEwYWJmYzljOWIuLjVlNzVl
YmVkYTdiZGZlNDYyZTIxZjQ2MDRjYmQwNjc2YTU5MjBmZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApAQCAtOTIsOSArOTIsMTIgQEAgVW5saW5rZWRD
b2RlQmxvY2tUeXBlKiBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrSW1wbChWTSYgdm0sIGNvbnN0
IFNvdXJjZUNvZGUmIHMKICAgICBib29sIHVzZXNFdmFsID0gcm9vdE5vZGUtPmZlYXR1cmVzKCkg
JiBFdmFsRmVhdHVyZTsKICAgICBFQ01BTW9kZSBlY21hTW9kZSA9IHJvb3ROb2RlLT5mZWF0dXJl
cygpICYgU3RyaWN0TW9kZUZlYXR1cmUgPyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6
c2xvcHB5KCk7CiAgICAgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIgPSBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm87Ci0gICAgaWYgY29u
c3RleHByIChzdGQ6OmlzX3NhbWVfdjxFeGVjdXRhYmxlVHlwZSwgRGlyZWN0RXZhbEV4ZWN1dGFi
bGU+KQorICAgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50
ID0gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmU7CisgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX3NhbWVfdjxFeGVjdXRhYmxlVHlwZSwgRGlyZWN0RXZhbEV4ZWN1dGFibGU+KSB7CiAgICAg
ICAgIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyID0gZXhlY3V0YWJsZS0+bmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIoKTsKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbyh1c2Vz
RXZhbCwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIHNjcmlwdE1vZGUsIFN1
cGVyQmluZGluZzo6Tm90TmVlZGVkLCBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46
OnBhcnNlTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
ciwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgZmFsc2UsIGV2YWxDb250ZXh0VHlwZSk7CisgICAg
ICAgIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID0gZXhlY3V0YWJsZS0+cHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQoKTsKKyAgICB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8odXNl
c0V2YWwsIGZhbHNlLCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCwgZmFsc2UsIENvbnN0cnVjdG9y
S2luZDo6Tm9uZSwgc2NyaXB0TW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIENhY2hlVHlw
ZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUs
IG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBmYWxz
ZSwgZXZhbENvbnRleHRUeXBlKTsKIAogICAgIFVubGlua2VkQ29kZUJsb2NrVHlwZSogdW5saW5r
ZWRDb2RlQmxvY2sgPSBVbmxpbmtlZENvZGVCbG9ja1R5cGU6OmNyZWF0ZSh2bSwgZXhlY3V0YWJs
ZUluZm8sIGNvZGVHZW5lcmF0aW9uTW9kZSk7CiAgICAgdW5saW5rZWRDb2RlQmxvY2stPnJlY29y
ZFBhcnNlKHJvb3ROb2RlLT5mZWF0dXJlcygpLCByb290Tm9kZS0+aGFzQ2FwdHVyZWRWYXJpYWJs
ZXMoKSwgbGluZUNvdW50LCB1bmxpbmtlZEVuZENvbHVtbik7CkBAIC0yNDQsNyArMjQ3LDcgQEAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIENvZGVDYWNoZTo6Z2V0VW5saW5rZWRHbG9iYWxG
dW5jdGlvbkV4ZWN1dGFibGUoVk0mIHYKICAgICAvLyBUaGUgRnVuY3Rpb24gY29uc3RydWN0b3Ig
b25seSBoYXMgYWNjZXNzIHRvIGdsb2JhbCB2YXJpYWJsZXMsIHNvIG5vIHZhcmlhYmxlcyB3aWxs
IGJlIHVuZGVyIFREWiB1bmxlc3MgdGhleSdyZQogICAgIC8vIGluIHRoZSBnbG9iYWwgbGV4aWNh
bCBlbnZpcm9ubWVudCwgd2hpY2ggd2UgYWx3YXlzIFREWiBjaGVjayBhY2Nlc3NlcyBmcm9tLgog
ICAgIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSA9IGNvbnN0cnVjdEFiaWxpdHlG
b3JQYXJzZU1vZGUobWV0YWRhdGEtPnBhcnNlTW9kZSgpKTsKLSAgICBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU6OmNyZWF0ZSh2bSwgc291cmNlLCBtZXRhZGF0YSwgVW5saW5rZWROb3JtYWxGdW5jdGlvbiwg
Y29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBXVEY6Om51bGxv
cHQsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6
Ok5vKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxl
ID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSh2bSwgc291cmNlLCBtZXRhZGF0
YSwgVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3Jp
cHRNb2RlOjpDbGFzc2ljLCBXVEY6Om51bGxvcHQsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwg
TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6
Tm9uZSk7CiAKICAgICBpZiAoIXNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2VVUkxEaXJlY3RpdmUo
KS5pc051bGwoKSkKICAgICAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5zZXRTb3VyY2VVUkxEaXJl
Y3RpdmUoc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZVVSTERpcmVjdGl2ZSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNw
cAppbmRleCBmYzc2MDFkYTIwNGIxN2I3ZjZlOTQxYzY0ODRkMzYwZTVkNGZmNDY5Li40MTY0MjYy
MjA4YjlkMzVjMzU2ZWM1ZjMxNzY1MjRiN2U1M2VhOGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCkBAIC0zNCw3
ICszNCw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1EaXJlY3RFdmFsRXhlY3V0YWJsZSogRGly
ZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4
dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1
bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlLCBjb25zdCBWYXJpYWJsZUVu
dmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclREWiwgRUNNQU1vZGUgZWNtYU1vZGUpCitEaXJlY3RF
dmFsRXhlY3V0YWJsZSogRGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIERlcml2ZWRDb250ZXh0
VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJh
bmRSZXF1aXJlbWVudCwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRl
T3JkaW5hcnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgY29uc3Qg
VmFyaWFibGVFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFosIEVDTUFNb2RlIGVjbWFNb2Rl
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC00NCw3ICs0NCw3IEBAIERpcmVjdEV2YWxFeGVj
dXRhYmxlKiBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8qIGV4
ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxEaXJlY3RFdmFsRXhlY3V0YWJs
ZT4odm0uaGVhcCkpIERpcmVjdEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNlLCBl
Y21hTW9kZS5pc1N0cmljdCgpLCBkZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rp
b24sIGV2YWxDb250ZXh0VHlwZSk7CisgICAgYXV0byogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPERpcmVjdEV2YWxFeGVjdXRhYmxlPih2bS5oZWFwKSkgRGlyZWN0RXZh
bEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGVjbWFNb2RlLmlzU3RyaWN0KCksIGRl
cml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50LCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBpc0luc2lkZU9yZGluYXJ5RnVu
Y3Rpb24sIGV2YWxDb250ZXh0VHlwZSk7CiAgICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24o
dm0pOwogCiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7CkBAIC02NywxMCArNjcsMTAgQEAgRGlyZWN0
RXZhbEV4ZWN1dGFibGUqIERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwKICAgICByZXR1cm4gZXhlY3V0YWJsZTsKIH0KIAotRGlyZWN0RXZh
bEV4ZWN1dGFibGU6OkRpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpblN0cmljdENvbnRleHQsIERl
cml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNv
bnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUgZXZh
bENvbnRleHRUeXBlKQotICAgIDogRXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2Us
IGluU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250
ZXh0LCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250ZXh0VHlwZSwgbmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIpCitEaXJlY3RFdmFsRXhlY3V0YWJsZTo6RGlyZWN0RXZhbEV4ZWN1
dGFibGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250
ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBi
b29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9u
LCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKQorICAgIDogRXZhbEV4ZWN1dGFibGUo
Z2xvYmFsT2JqZWN0LCBzb3VyY2UsIGluU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBl
LCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxD
b250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFuZFJlcXVp
cmVtZW50KQogewotICAgIEFTU0VSVChuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9PSBOZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8gfHwgZGVyaXZlZENvbnRleHRUeXBlID09IERlcml2
ZWRDb250ZXh0VHlwZTo6RGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCk7CisgICAgQVNTRVJUKChu
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9PSBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6
Tm8gJiYgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPT0gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6
Ok5vbmUpIHx8IGRlcml2ZWRDb250ZXh0VHlwZSA9PSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2
ZWRDb25zdHJ1Y3RvckNvbnRleHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oCmlu
ZGV4IDI0MDc1YTdmNWEzNmM3M2ZlYmE0MDdlNzEwOWE2ZmMzM2YyNzBkNGIuLmE0ZmE2NzYzY2Fi
MTViNWRkYTY0NWFhMDJjOTYyM2I3OTIyYmQxODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuaApAQCAtMzEsOSArMzEsOSBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgRGlyZWN0RXZhbEV4ZWN1dGFibGUgZmluYWwgOiBw
dWJsaWMgRXZhbEV4ZWN1dGFibGUgewogcHVibGljOgotICAgIHN0YXRpYyBEaXJlY3RFdmFsRXhl
Y3V0YWJsZSogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIERlcml2
ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uQ29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0
VHlwZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCosIEVDTUFNb2RlKTsKKyAgICBzdGF0aWMg
RGlyZWN0RXZhbEV4ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJj
ZUNvZGUmLCBEZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQ
cml2YXRlQnJhbmRSZXF1aXJlbWVudCwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29s
IGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBlLCBjb25zdCBWYXJpYWJs
ZUVudmlyb25tZW50KiwgRUNNQU1vZGUpOwogcHJpdmF0ZToKLSAgICBEaXJlY3RFdmFsRXhlY3V0
YWJsZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGluU3RyaWN0Q29u
dGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9v
bCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwg
RXZhbENvbnRleHRUeXBlKTsKKyAgICBEaXJlY3RFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVj
dCosIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRl
eHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVu
Y3Rpb24sIEV2YWxDb250ZXh0VHlwZSk7CiB9OwogCiBzdGF0aWNfYXNzZXJ0KHNpemVvZihEaXJl
Y3RFdmFsRXhlY3V0YWJsZSkgPT0gc2l6ZW9mKEV2YWxFeGVjdXRhYmxlKSwgIiIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuY3BwCmluZGV4IDJl
YzEzN2E3MzYyMjQyMWI1ZjlkMTIyYzI3MzUxOGQ1ZTYzODY0OWMuLjBiM2Q0MTY0YWE2NWFiZDAw
NGZlZTk4YjhjZWNlODc5NmRmYmMyYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FdmFsRXhlY3V0YWJsZS5jcHAKQEAgLTMyLDkgKzMyLDEwIEBAIG5hbWVzcGFjZSBK
U0MgewogCiBjb25zdCBDbGFzc0luZm8gRXZhbEV4ZWN1dGFibGU6OnNfaW5mbyA9IHsgIkV2YWxF
eGVjdXRhYmxlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShFdmFsRXhlY3V0YWJsZSkgfTsKIAotRXZhbEV4ZWN1dGFibGU6OkV2YWxFeGVjdXRh
YmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSwgYm9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4
dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5
RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKQorRXZhbEV4ZWN1dGFibGU6
OkV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgYm9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSBk
ZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0lu
c2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIE5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2
YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCkKICAgICA6IEJhc2Uo
Z2xvYmFsT2JqZWN0LT52bSgpLmV2YWxFeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBnbG9iYWxP
YmplY3QtPnZtKCksIHNvdXJjZSwgaW5TdHJpY3RDb250ZXh0LCBkZXJpdmVkQ29udGV4dFR5cGUs
IGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgZXZhbENv
bnRleHRUeXBlLCBOb0ludHJpbnNpYykKICAgICAsIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKSkKKyAg
ICAsIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHByaXZh
dGVCcmFuZFJlcXVpcmVtZW50KSkKIHsKICAgICBBU1NFUlQoc291cmNlLnByb3ZpZGVyKCktPnNv
dXJjZVR5cGUoKSA9PSBTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0pOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmgKaW5kZXggNjdl
NjljODYyOWJhM2ZiMzgxMTQ4MTEzNmI4ZTdlOTk0ODBlZDc3MS4uNTI2MDI1MWFjZWUyMjVlOWI1
NzlmOGU4MmY2ZWRjODEwYzdhZGVkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FdmFsRXhlY3V0YWJsZS5oCkBAIC02MiwxMyArNjIsMTQgQEAgcHVibGljOgogCiAgICAg
REVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25z
dCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1c2VzRXZhbCgpLCBmYWxzZSwgZmFsc2UsIENvbnN0
cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBTdXBlckJpbmRp
bmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZGVyaXZlZENvbnRl
eHRUeXBlKCksIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGlzQXJyb3dGdW5jdGlvbkNv
bnRleHQoKSwgZmFsc2UsIGV2YWxDb250ZXh0VHlwZSgpKTsgfQorICAgIEV4ZWN1dGFibGVJbmZv
IGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8odXNlc0V2YWwo
KSwgZmFsc2UsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lLCBmYWxzZSwgQ29uc3RydWN0
b3JLaW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIFN1cGVyQmluZGluZzo6
Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBkZXJpdmVkQ29udGV4dFR5
cGUoKSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4
dCgpLCBmYWxzZSwgZXZhbENvbnRleHRUeXBlKCkpOyB9CiAKICAgICB1bnNpZ25lZCBudW1WYXJp
YWJsZXMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtVmFyaWFibGVzKCk7
IH0KICAgICB1bnNpZ25lZCBudW1GdW5jdGlvbkhvaXN0aW5nQ2FuZGlkYXRlcygpIHsgcmV0dXJu
IG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1GdW5jdGlvbkhvaXN0aW5nQ2FuZGlkYXRlcygp
OyB9CiAgICAgdW5zaWduZWQgbnVtVG9wTGV2ZWxGdW5jdGlvbkRlY2xzKCkgeyByZXR1cm4gbV91
bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpOyB9CiAgICAgYm9v
bCBhbGxvd0RpcmVjdEV2YWxDYWNoZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29k
ZUJsb2NrLT5hbGxvd0RpcmVjdEV2YWxDYWNoZSgpOyB9CiAgICAgTmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcj4obV9uZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplcik7IH0KKyAgICBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1
aXJlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFByaXZhdGVCcmFuZFJlcXVpcmVt
ZW50PihtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50KTsgfQogICAgIFRlbXBsYXRlT2JqZWN0TWFw
JiBlbnN1cmVUZW1wbGF0ZU9iamVjdE1hcChWTSYpOwogCiBwcm90ZWN0ZWQ6CkBAIC03NiwxMSAr
NzcsMTIgQEAgcHJvdGVjdGVkOgogICAgIGZyaWVuZCBjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOwog
CiAgICAgdXNpbmcgQmFzZTo6ZmluaXNoQ3JlYXRpb247Ci0gICAgRXZhbEV4ZWN1dGFibGUoSlNH
bG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBpblN0cmljdENvbnRleHQsIERl
cml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5z
aWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplcik7CisgICAgRXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgYm9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBp
c0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZh
bENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQpOwogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90
VmlzaXRvciYpOwogCiAgICAgdW5zaWduZWQgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA6
IDE7CisgICAgdW5zaWduZWQgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA6IDE7CiAKICAgICBX
cml0ZUJhcnJpZXI8RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZT4gbV9ldmFsQ29kZUJsb2NrOwog
ICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZEV2YWxDb2RlQmxvY2s+IG1fdW5saW5rZWRFdmFsQ29k
ZUJsb2NrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0
aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25I
ZWxwZXJzLmNwcAppbmRleCA0MTRlN2JkZjc3YWI0ZmM3NjRiNTY1ZGY2ZjFiZDRhMGQ2NGIzMGNi
Li43YTI5MTBlODg3ZjJhMTRlMmY1ODkyNzVhMGNiMjE4YzdiNWVkODI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcApAQCAtMzI2
LDcgKzMyNiw3IEBAIEpTT2JqZWN0KiBjcmVhdGVURFpFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogCiBKU09iamVjdCogY3JlYXRlSW52YWxpZFByaXZhdGVOYW1lRXJyb3IoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gY3JlYXRlVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygiQ2Fubm90IGFjY2VzcyBpbnZhbGlkIHByaXZhdGUg
ZmllbGQiKSwgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBUeXBlTm90aGluZyk7CisgICAgcmV0dXJu
IGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoIkludmFsaWQgcHJpdmF0
ZSBtZW1iZXIgYWNjZXNzIiksIGRlZmF1bHRTb3VyY2VBcHBlbmRlciwgVHlwZU5vdGhpbmcpOwog
fQogCiBKU09iamVjdCogY3JlYXRlUmVkZWZpbmVkUHJpdmF0ZU5hbWVFcnJvcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcAppbmRleCA5OGQ3ZTJiODNhMjc5MTJm
YTU0YzJjMjVlZTE4M2JmYjRlMDQ2YzczLi43NDk4MjA1MDE4Y2RlZjhmM2Y4MzY3YjRiYmUyZWY3
OWRiZDE3YzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRp
cmVjdEV2YWxFeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcApAQCAtNjksNyArNjksNyBAQCBJbmRpcmVjdEV2
YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iagogY29uc3RleHByIGJvb2wgaW5TdHJpY3RDb250ZXh0ID0gZmFsc2U7CiBj
b25zdGV4cHIgYm9vbCBpbnNpZGVPcmRpbmFyeUZ1bmN0aW9uID0gZmFsc2U7CiBJbmRpcmVjdEV2
YWxFeGVjdXRhYmxlOjpJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRGVyaXZlZENvbnRleHRUeXBlIGRl
cml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4
dFR5cGUgZXZhbENvbnRleHRUeXBlKQotICAgIDogRXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0
LCBzb3VyY2UsIGluU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVu
Y3Rpb25Db250ZXh0LCBpbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBldmFsQ29udGV4dFR5cGUsIE5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObykKKyAgICA6IEV2YWxFeGVjdXRhYmxlKGdsb2Jh
bE9iamVjdCwgc291cmNlLCBpblN0cmljdENvbnRleHQsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNB
cnJvd0Z1bmN0aW9uQ29udGV4dCwgaW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgZXZhbENvbnRleHRU
eXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8sIFByaXZhdGVCcmFuZFJlcXVpcmVt
ZW50OjpOb25lKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Njb3BlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUu
Y3BwCmluZGV4IGEzMDY5YTAyY2RjM2FhOTgxZTMyMDU0NWFkMWE5NDU4M2QxMzRhYjAuLjVjNzM5
MTU0MzdiZTZmZDMwMWE3YzViYzYzZjZjZjRlMTk4ZDQyMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCkBAIC0zMzksOCArMzM5LDE0IEBAIHZvaWQgSlNTY29w
ZTo6Y29sbGVjdENsb3N1cmVWYXJpYWJsZXNVbmRlclREWihKU1Njb3BlKiBzY29wZSwgVmFyaWFi
bGVFbnZpcm9ubWVuCiAgICAgICAgIGZvciAoYXV0byBlbmQgPSBzeW1ib2xUYWJsZS0+ZW5kKGxv
Y2tlciksIGl0ZXIgPSBzeW1ib2xUYWJsZS0+YmVnaW4obG9ja2VyKTsgaXRlciAhPSBlbmQ7ICsr
aXRlcikKICAgICAgICAgICAgIHJlc3VsdC5hZGQoaXRlci0+a2V5KTsKICAgICAgICAgaWYgKHN5
bWJvbFRhYmxlLT5oYXNQcml2YXRlTmFtZXMoKSkgewotICAgICAgICAgICAgZm9yIChhdXRvIG5h
bWUgOiBzeW1ib2xUYWJsZS0+cHJpdmF0ZU5hbWVzKCkpCi0gICAgICAgICAgICAgICAgcmVzdWx0
LnVzZVByaXZhdGVOYW1lKG5hbWUpOyAgICAKKyAgICAgICAgICAgIGF1dG8gcHJpdmF0ZU5hbWVz
ID0gc3ltYm9sVGFibGUtPnByaXZhdGVOYW1lcygpOworICAgICAgICAgICAgZm9yIChhdXRvIGVu
ZCA9IHByaXZhdGVOYW1lcy5lbmQoKSwgaXRlciA9IHByaXZhdGVOYW1lcy5iZWdpbigpOyBpdGVy
ICE9IGVuZDsgKytpdGVyKSB7CisgICAgICAgICAgICAgICAgaWYgKGl0ZXItPnZhbHVlLmlzUHJp
dmF0ZUFjY2VzcygpKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gcmVz
dWx0LmFkZFByaXZhdGVOYW1lKGl0ZXItPmtleSk7CisgICAgICAgICAgICAgICAgICAgIGFkZFJl
c3VsdC5pdGVyYXRvci0+dmFsdWUgPSBpdGVyLT52YWx1ZTsKKyAgICAgICAgICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnVzZVByaXZhdGVOYW1lKGl0ZXItPmtleSk7
CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaAppbmRleCAw
OTlkODk5YWQ1ZTYzYTc0MzM1OGUyYWJiMjBhYjM0ZjU5Yjk2MGVjLi5iODU5MTRmZjhlYTBkZDAz
YzYyNDc3NTM1OTZmZjQyZDU2MTY2YjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgKQEAgLTYzLDcgKzYzLDcg
QEAgcHVibGljOgogCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhl
Y3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1c2VzRXZhbCgpLCBm
YWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpN
b2R1bGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUV2
YWx1YXRlTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyOjpObywgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgRXZhbENvbnRleHRUeXBl
OjpOb25lKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyBy
ZXR1cm4gRXhlY3V0YWJsZUluZm8odXNlc0V2YWwoKSwgZmFsc2UsIFByaXZhdGVCcmFuZFJlcXVp
cmVtZW50OjpOb25lLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBKU1BhcnNlclNjcmlw
dE1vZGU6Ok1vZHVsZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6
TW9kdWxlRXZhbHVhdGVNb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUoKSwgTmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXI6Ok5vLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlLCBFdmFsQ29u
dGV4dFR5cGU6Ok5vbmUpOyB9CiAKICAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sq
IHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygpIHsgcmV0dXJuIG1fdW5saW5rZWRNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9ucy5jcHAKaW5kZXggNGE3MjcyYzQ5ODZmZjY3MTNkODhjNGRmYjk2NzQyZDBkZTky
Y2E4Mi4uOGJlNDQzYTBlMjRkYmRiODg5NWY4NmY1ZWIxN2ZhYjFlOGUwMGQwMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKQEAgLTUzNSw2ICs1MzUsOSBAQCB2
b2lkIE9wdGlvbnM6OnJlY29tcHV0ZURlcGVuZGVudE9wdGlvbnMoKQogICAgICAgICBPcHRpb25z
OjpyYW5kb21JbnRlZ3JpdHlBdWRpdFJhdGUoKSA9IDA7CiAgICAgZWxzZSBpZiAoT3B0aW9uczo6
cmFuZG9tSW50ZWdyaXR5QXVkaXRSYXRlKCkgPiAxLjApCiAgICAgICAgIE9wdGlvbnM6OnJhbmRv
bUludGVncml0eUF1ZGl0UmF0ZSgpID0gMS4wOworICAgIAorICAgIGlmIChPcHRpb25zOjp1c2VQ
cml2YXRlTWV0aG9kcygpKQorICAgICAgICBPcHRpb25zOjp1c2VQcml2YXRlQ2xhc3NGaWVsZHMo
KSA9IHRydWU7CiAKICAgICBpZiAoIU9wdGlvbnM6OmFsbG93VW5zdXBwb3J0ZWRUaWVycygpKSB7
CiAjZGVmaW5lIERJU0FCTEVfVElFUlMob3B0aW9uLCBmbGFncywgLi4uKSBkbyB7IFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCmluZGV4IDNmNTFjYjE5YWZl
YzBhMmZmMWQ1YjdkZWI3NTAwYjcyMjA5NTliOGQuLjQzMTFlMmIwYTdhODdiODlmOWFhOGZhYWI2
YjFjYjU3YTJlODY4YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnNMaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
c0xpc3QuaApAQCAtNTEzLDYgKzUxMyw3IEBAIGNvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2Vt
Ymx5U3RyZWFtaW5nQXBpID0gZmFsc2U7CiAgICAgdihCb29sLCBleHBvc2VQcm9maWxlcnNPbkds
b2JhbE9iamVjdCwgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgZXhwb3NlIGZ1bmN0
aW9ucyB0byBlbmFibGUvZGlzYWJsZSBib3RoIHRoZSBzYW1wbGluZyBwcm9maWxlciBhbmQgdGhl
IHN1cGVyIHNhbXBsZXIiKSBcCiAgICAgdihCb29sLCBhbGxvd1Vuc3VwcG9ydGVkVGllcnMsIGZh
bHNlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIG5vdCBkaXNhYmxlIERGRyBvciBGVEwgd2hl
biBhbiBleHBlcmltZW50YWwgZmVhdHVyZSBpcyBlbmFibGVkLiIpIFwKICAgICB2KEJvb2wsIHVz
ZVByaXZhdGVDbGFzc0ZpZWxkcywgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIHRoZSBwYXJzZXIg
d2lsbCB1bmRlcnN0YW5kIHByaXZhdGUgZGF0YSBmaWVsZHMgaW5zaWRlIGNsYXNzZXMuIikgXAor
ICAgIHYoQm9vbCwgdXNlUHJpdmF0ZU1ldGhvZHMsIGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCB0
aGUgcGFyc2VyIHdpbGwgdW5kZXJzdGFuZCBwcml2YXRlIG1ldGhvZHMgaW5zaWRlIGNsYXNzZXMu
IikgXAogICAgIHYoQm9vbCwgcmV0dXJuRWFybHlGcm9tSW5maW5pdGVMb29wc0ZvckZ1enppbmcs
IGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KFNpemUsIGVhcmx5UmV0dXJuRnJvbUlu
ZmluaXRlTG9vcHNMaW1pdCwgMTMwMDAwMDAwMCwgTm9ybWFsLCAiV2hlbiByZXR1cm5FYXJseUZy
b21JbmZpbml0ZUxvb3BzRm9yRnV6emluZyBpcyB0cnVlLCB0aGlzIGRldGVybWluZXMgdGhlIG51
bWJlciBvZiBleGVjdXRpb25zIGEgbG9vcCBjYW4gcnVuIGZvciBiZWZvcmUganVzdCByZXR1cm5p
bmcuIFRoaXMgaXMgaGVscGZ1bCBmb3IgdGhlIGZ1enplciBzbyBpdCBkb2Vzbid0IGdldCBzdHVj
ayBpbiBpbmZpbml0ZSBsb29wcy4iKSBcCiAgICAgdihCb29sLCB1c2VMSUNNRnV6emluZywgZmFs
c2UsIE5vcm1hbCwgbnVsbHB0cikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgKaW5kZXggYjg3MTVhYTcyYmJjYjczMzlkNmUzNDEzYWM1
OWM3NDQxMTdiODJhOC4uOTQ5NzYzMTIwNWNhMGU0ZDBhMjk0ZTA0NWNlNzZiNzFhZDExNDRhYiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFi
bGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJs
ZS5oCkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgREVDTEFSRV9JTkZP
OwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBF
eGVjdXRhYmxlSW5mbyh1c2VzRXZhbCgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6
Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRl
ZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIE5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObywgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBm
YWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1
dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8odXNlc0V2YWwoKSwgZmFs
c2UsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5k
OjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIFN1cGVyQmluZGluZzo6Tm90TmVl
ZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUoKSwg
TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCks
IGZhbHNlLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUpOyB9CiAKICAgICBUZW1wbGF0ZU9iamVjdE1h
cCYgZW5zdXJlVGVtcGxhdGVPYmplY3RNYXAoVk0mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCmluZGV4IDE2NGNhNmQ0MzEwZTZiYjM4ZTY0N2Uy
ZjZiZTJmOWY3ZDlmMzI2NWMuLmZiNDYwMDFiYWVkMmY5YzFjODdlNTcyMmUyNjE1YjQxNDVkMTg3
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAK
QEAgLTE4NCw3ICsxODQsNyBAQCBTeW1ib2xUYWJsZSogU3ltYm9sVGFibGU6OmNsb25lU2NvcGVQ
YXJ0KFZNJiB2bSkKIAogICAgICAgICB7CiAgICAgICAgICAgICBmb3IgKGF1dG8gbmFtZSA6IG1f
cmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzKQotICAgICAgICAgICAgICAgIHJlc3VsdC0+bV9yYXJl
RGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKG5hbWUpOworICAgICAgICAgICAgICAgIHJlc3VsdC0+
bV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKG5hbWUua2V5LCBuYW1lLnZhbHVlKTsKICAg
ICAgICAgfQogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N5bWJvbFRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1i
b2xUYWJsZS5oCmluZGV4IDU5YTcyMzA1ZDNhNzA0MjBhYmIxYWY0ZWZiZTY3ZmQ2Y2NkZmRlYTAu
LmMzNjFmOTg2Y2JkYzFiZTAxY2FlYjNiODgyNTI2ZjkwYzEwY2I4ZTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaApAQCAtMzUsNiArMzUsNyBAQAogI2lu
Y2x1ZGUgIlNjb3BlZEFyZ3VtZW50c1RhYmxlLmgiCiAjaW5jbHVkZSAiVHlwZUxvY2F0aW9uLmgi
CiAjaW5jbHVkZSAiVmFyT2Zmc2V0LmgiCisjaW5jbHVkZSAiVmFyaWFibGVFbnZpcm9ubWVudC5o
IgogI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8
d3RmL0hhc2hUcmFpdHMuaD4KQEAgLTQ1MCw4ICs0NTEsNyBAQCBwdWJsaWM6CiAgICAgdHlwZWRl
ZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIFJlZlB0cjxUeXBlU2V0PiwgSWRl
bnRpZmllclJlcEhhc2g+IFVuaXF1ZVR5cGVTZXRNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFZh
ck9mZnNldCwgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4gT2Zmc2V0VG9WYXJpYWJsZU1hcDsK
ICAgICB0eXBlZGVmIFZlY3RvcjxTeW1ib2xUYWJsZUVudHJ5Kj4gTG9jYWxUb0VudHJ5VmVjOwot
ICAgIHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBJZGVudGlmaWVy
UmVwSGFzaD4gUHJpdmF0ZU5hbWVTZXQ7Ci0gICAgdHlwZWRlZiBXVEY6Okl0ZXJhdG9yUmFuZ2U8
dHlwZW5hbWUgUHJpdmF0ZU5hbWVTZXQ6Oml0ZXJhdG9yPiBQcml2YXRlTmFtZUl0ZXJhdG9yUmFu
Z2U7CisgICAgdHlwZWRlZiBXVEY6Okl0ZXJhdG9yUmFuZ2U8dHlwZW5hbWUgVmFyaWFibGVFbnZp
cm9ubWVudDo6UHJpdmF0ZU5hbWVzOjppdGVyYXRvcj4gUHJpdmF0ZU5hbWVJdGVyYXRvclJhbmdl
OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQpAQCAtNjA1LDE0ICs2MDUs
MTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbWFrZUl0ZXJhdG9yUmFuZ2UobV9yYXJlRGF0
YS0+bV9wcml2YXRlTmFtZXMuYmVnaW4oKSwgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZW5k
KCkpOwogICAgIH0KIAotICAgIHZvaWQgYWRkUHJpdmF0ZU5hbWUoVW5pcXVlZFN0cmluZ0ltcGwq
IGtleSkKKyAgICB2b2lkIGFkZFByaXZhdGVOYW1lKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4mIGtleSwgUHJpdmF0ZU5hbWVFbnRyeSB2YWx1ZSkKICAgICB7CiAgICAgICAgIEFTU0VS
VChrZXkgJiYgIWtleS0+aXNTeW1ib2woKSk7CiAgICAgICAgIGlmICghbV9yYXJlRGF0YSkKICAg
ICAgICAgICAgIG1fcmFyZURhdGEgPSBXVEY6Om1ha2VVbmlxdWU8U3ltYm9sVGFibGVSYXJlRGF0
YT4oKTsKIAotICAgICAgICBBU1NFUlQoIW1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmNvbnRh
aW5zKGtleSkpOwotICAgICAgICBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoa2V5KTsK
KyAgICAgICAgQVNTRVJUKG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmZpbmQoa2V5KSA9PSBt
X3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5lbmQoKSk7CisgICAgICAgIG1fcmFyZURhdGEtPm1f
cHJpdmF0ZU5hbWVzLmFkZChrZXksIHZhbHVlKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBFbnRyeT4KQEAgLTc1Niw3ICs3NTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIE9mZnNldFRv
VmFyaWFibGVNYXAgbV9vZmZzZXRUb1ZhcmlhYmxlTWFwOwogICAgICAgICBVbmlxdWVUeXBlU2V0
TWFwIG1fdW5pcXVlVHlwZVNldE1hcDsKICAgICAgICAgV3JpdGVCYXJyaWVyPENvZGVCbG9jaz4g
bV9jb2RlQmxvY2s7Ci0gICAgICAgIFByaXZhdGVOYW1lU2V0IG1fcHJpdmF0ZU5hbWVzOworICAg
ICAgICBWYXJpYWJsZUVudmlyb25tZW50OjpQcml2YXRlTmFtZXMgbV9wcml2YXRlTmFtZXM7CiAg
ICAgfTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggM2ViMDU1Y2U2NTkyZmU1YjBmZDU5ZTkzYWZiMTVmNGI3MDU4NmYw
ZC4uM2JlZGFkNzliM2Y3ZDczMjUyYjExNGQ2YjY1OWQ2NjdhYTRjMGI4YSAxMDA2NDQKLS0tIGEv
SlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NSBA
QAorMjAxOS0wNi0yNyAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CisKKyAgICAg
ICAgW0VTTmV4dF0gSW1wbGVtZW50IHByaXZhdGUgbWV0aG9kcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NDM0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1icmFuZC1pbnN0
YWxsZWQtYWZ0ZXItc3VwZXItY2FsbC1mcm9tLWV2YWwuanM6IEFkZGVkLgorICAgICAgICAoYXNz
ZXJ0KToKKyAgICAgICAgKEEpOgorICAgICAgICAoQy5wcm90b3R5cGUubWV0aG9kKToKKyAgICAg
ICAgKEMpOgorICAgICAgICAoQy5wcm90b3R5cGUuYmFzZUFjY2Vzcyk6CisgICAgICAgICogc3Ry
ZXNzL3ByaXZhdGUtbWV0aG9kLWJyYW5kLWNoZWNrLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2Vy
dCk6CisgICAgICAgIChDLnByb3RvdHlwZS5tKToKKyAgICAgICAgKEMucHJvdG90eXBlLm1ldGhv
ZCk6CisgICAgICAgIChDKToKKyAgICAgICAgKHRyeS5DLnByb3RvdHlwZS5tKToKKyAgICAgICAg
KHRyeS5DKToKKyAgICAgICAgKGNhdGNoKToKKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRo
b2QtY29tcGFyaXNvbi5qczogQWRkZWQuCisgICAgICAgIChsZXQuYXNzZXJ0LnNhbWVWYWx1ZSk6
CisgICAgICAgIChsZXQuYXNzZXJ0LnRocm93cyk6CisgICAgICAgIChDLnByb3RvdHlwZS5tKToK
KyAgICAgICAgKEMucHJvdG90eXBlLmdldFByaXZhdGVNZXRob2QpOgorICAgICAgICAoQyk6Cisg
ICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWV4dGVuZHMtYnJhbmQtY2hlY2suanM6IEFk
ZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKEJhc2UucHJvdG90eXBlLm1CYXNlKToK
KyAgICAgICAgKEJhc2UucHJvdG90eXBlLm1ldGhvZEJhc2UpOgorICAgICAgICAoQmFzZSk6Cisg
ICAgICAgIChDLnByb3RvdHlwZS5tKToKKyAgICAgICAgKEMucHJvdG90eXBlLm1ldGhvZCk6Cisg
ICAgICAgIChDKToKKyAgICAgICAgKGNhdGNoKToKKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1t
ZXRob2QtZ2V0LWFuZC1jYWxsLmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5hc3NlcnQuc2FtZVZh
bHVlKToKKyAgICAgICAgKGxldC5hc3NlcnQudGhyb3dzKToKKyAgICAgICAgKEMucHJvdG90eXBl
Lm0pOgorICAgICAgICAoQy5wcm90b3R5cGUuZ2V0UHJpdmF0ZU1ldGhvZCk6CisgICAgICAgIChD
KToKKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2QtbmVzdGVkLWNsYXNzLmpzOiBBZGRl
ZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChDKToKKyAgICAgICAgKHByb3RvdHlwZS5t
QmFzZSk6CisgICAgICAgIChjYXRjaCk6CisgICAgICAgIChwcm90b3R5cGUubWV0aG9kKToKKyAg
ICAgICAgKEMucHJvdG90eXBlLm0pOgorICAgICAgICAocHJvdG90eXBlLm0pOgorICAgICAgICAq
IHN0cmVzcy9wcml2YXRlLW1ldGhvZHMtb24tcHJveHkuanM6IEFkZGVkLgorICAgICAgICAoYXNz
ZXJ0KToKKyAgICAgICAgKGFzc2VydEFycmF5Q29udGVudCk6CisgICAgICAgIChwcm90b3R5cGUu
bSk6CisgICAgICAgIChwcm90b3R5cGUubWV0aG9kKToKKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0
ZS1uYW1lcy1hdmFpbGFibGUtb24tZGlyZWN0LWV2YWwuanM6IEFkZGVkLgorICAgICAgICAobGV0
LmFzc2VydC5zYW1lVmFsdWUpOgorICAgICAgICAoQy5wcm90b3R5cGUubSk6CisgICAgICAgIChD
LnByb3RvdHlwZS5jYWxsTWV0aG9kRnJvbUV2YWwpOgorICAgICAgICAoQyk6CisgICAgICAgICog
dGVzdDI2Mi9jb25maWcueWFtbDoKKwogMjAyMC0wOS0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1
a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEFsaWduIGxlZ2FjeSBJbnRsIGNvbnN0cnVj
dG9yIGJlaGF2aW9yIHRvIHNwZWMKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUt
YnJhbmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVyLWNhbGwtZnJvbS1hcnJvdy1mdW5jdGlvbi5qcyBi
L0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVyLWNhbGwt
ZnJvbS1hcnJvdy1mdW5jdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZTI5YzdiYzExYzM2MzQzOTE1YmQy
MDJlODAyMjM3YTg4MDQxZTRmCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJp
dmF0ZS1icmFuZC1pbnN0YWxsZWQtYWZ0ZXItc3VwZXItY2FsbC1mcm9tLWFycm93LWZ1bmN0aW9u
LmpzCkBAIC0wLDAgKzEsMjcgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0
aG9kcz10cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsKKyAgICBpZiAoYSAhPT0gZSkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIg
KyBhKTsKK30KKworY2xhc3MgQSB7fQorCitjbGFzcyBDIGV4dGVuZHMgQSB7CisgICAgI21ldGhv
ZCgpIHsKKyAgICAgICAgcmV0dXJuICJiYXNlIjsKKyAgICB9CisKKyAgICBjb25zdHJ1Y3Rvcigp
IHsKKyAgICAgICAgbGV0IGluaXQgPSAoKSA9PiBzdXBlcigpOworICAgICAgICBpbml0KCk7Cisg
ICAgfQorCisgICAgYmFzZUFjY2VzcygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI21ldGhvZCgp
OworICAgIH0KK30KKworbGV0IGMgPSBuZXcgQygpOworYXNzZXJ0KGMuYmFzZUFjY2VzcygpLCAi
YmFzZSIpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLWJyYW5kLWluc3Rh
bGxlZC1hZnRlci1zdXBlci1jYWxsLWZyb20tZXZhbC5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZh
dGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVyLWNhbGwtZnJvbS1ldmFsLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjllMTZlZTM4ZTM0MWNjYzE2MTA1NGRiMTcyYjVlMjIxZmI2ODZjODIKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLWJyYW5kLWluc3RhbGxlZC1hZnRlci1zdXBl
ci1jYWxsLWZyb20tZXZhbC5qcwpAQCAtMCwwICsxLDI2IEBACisvL0AgcmVxdWlyZU9wdGlvbnMo
Ii0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBlKSB7Cisg
ICAgaWYgKGEgIT09IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBl
ICsgIiBidXQgZ290OiAiICsgYSk7Cit9CisKK2NsYXNzIEEge30KKworY2xhc3MgQyBleHRlbmRz
IEEgeworICAgICNtZXRob2QoKSB7CisgICAgICAgIHJldHVybiAiYmFzZSI7CisgICAgfQorCisg
ICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIGV2YWwoInN1cGVyKCkiKTsKKyAgICB9CisKKyAg
ICBiYXNlQWNjZXNzKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jbWV0aG9kKCk7CisgICAgfQor
fQorCitsZXQgYyA9IG5ldyBDKCk7Cithc3NlcnQoYy5iYXNlQWNjZXNzKCksICJiYXNlIik7CisK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWJyYW5kLWNoZWNrLmpz
IGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtYnJhbmQtY2hlY2suanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmE1MTc1YTNmNWJjYWY5YjI0MGIxOTYwMGE3YjdiZGQxZWIwNWU0OQotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWJyYW5kLWNoZWNrLmpzCkBAIC0w
LDAgKzEsMzMgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVl
IikKKworZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKK30K
KworY2xhc3MgQyB7CisgICAgI20oKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmOworICAgIH0K
KworICAgIG1ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI20oKTsKKyAgICB9CisKKyAg
ICAjZiA9IDQ7Cit9CisKK2xldCBjID0gbmV3IEMoKTsKK2Fzc2VydChjLm1ldGhvZCgpLCA0KTsK
KwordHJ5IHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgI20oKSB7IHJldHVybiAzOyB9CisgICAg
fQorCisgICAgbGV0IG8gPSBuZXcgQygpOworICAgIGMubWV0aG9kLmNhbGwobyk7Cit9IGNhdGNo
IChlKSB7CisgICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBUeXBlRXJyb3IsIHRydWUpOworfQorCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1jb21wYXJpc29uLmpzIGIv
SlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtY29tcGFyaXNvbi5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
NmRhNzg2N2JhNDhlYjc3YTFiNDAxNGNmNGVmNjQxNmQxMjRhN2Q2Ci0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtY29tcGFyaXNvbi5qcwpAQCAtMCwwICsx
LDMxIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisK
K2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAobGhzLCByaHMpIHsKKyAg
ICAgICAgaWYgKGxocyAhPT0gcmhzKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBl
Y3RlZDogIiArIGxocyArICIgYnVnIGdvdDogIiArIHJocyk7CisgICAgfSwKKworICAgIHRocm93
czogZnVuY3Rpb24gKGV4cGVjdGVkRXJyb3IsIG9wKSB7CisgICAgICAgIHRyeSB7CisgICAgICAg
ICAgb3AoKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBpZiAoIShlIGluc3Rh
bmNlb2YgZXhwZWN0ZWRFcnJvcikpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJF
eHBlY3RlZCB0byB0aHJvdzogIiArIGV4cGVjdGVkRXJyb3IgKyAiIGJ1dCB0aHJldzogIiArIGUp
OworICAgICAgICB9CisgICAgfQorfTsKKworY2xhc3MgQyB7CisgICAgI20oKSB7IHJldHVybiAn
dGVzdDI2Mic7IH0KKworICAgIGdldFByaXZhdGVNZXRob2QoKSB7CisgICAgICAgIHJldHVybiB0
aGlzLiNtOworICAgIH0KK30KKworbGV0IGMxID0gbmV3IEMoKTsKK2xldCBjMiA9IG5ldyBDKCk7
CisKK2Fzc2VydC5zYW1lVmFsdWUoYzEuZ2V0UHJpdmF0ZU1ldGhvZCgpLCBjMi5nZXRQcml2YXRl
TWV0aG9kKCkpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1l
eHRlbmRzLWJyYW5kLWNoZWNrLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtZXh0
ZW5kcy1icmFuZC1jaGVjay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMjY2NGIyZmNjY2Y2ODk1YzIxNDUxZjc2
OTc4YzdhMjg0YzdhM2QxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0
ZS1tZXRob2QtZXh0ZW5kcy1icmFuZC1jaGVjay5qcwpAQCAtMCwwICsxLDQxIEBACisvL0AgcmVx
dWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2Vy
dChhLCBlKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhw
ZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7Cit9CisKK2NsYXNzIEJhc2UgeworICAg
ICNtQmFzZSgpIHsKKyAgICAgICAgcmV0dXJuIDQ7CisgICAgfQorCisgICAgbWV0aG9kQmFzZSgp
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI21CYXNlKCk7CisgICAgfQorfQorCitjbGFzcyBDIGV4
dGVuZHMgQmFzZSB7CisgICAgI20oKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmOworICAgIH0K
KworICAgIG1ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI20oKTsKKyAgICB9CisKKyAg
ICAjZiA9IDE1OworfQorCitsZXQgYyA9IG5ldyBDKCk7Cithc3NlcnQoYy5tZXRob2QoKSwgMTUp
OworYXNzZXJ0KGMubWV0aG9kQmFzZSgpLCA0KTsKKworbGV0IGJhc2UgPSBuZXcgQmFzZSAoKTsK
K2Fzc2VydChiYXNlLm1ldGhvZEJhc2UoKSwgNCk7Cit0cnkgeworICAgIGMubWV0aG9kLmNhbGwo
YmFzZSk7Cit9IGNhdGNoIChlKSB7CisgICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBUeXBlRXJyb3Is
IHRydWUpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1n
ZXQtYW5kLWNhbGwuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1nZXQtYW5kLWNh
bGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTMxN2UxZTc3ZTQzMzZkNGVkYjhiODMwN2Y2MzViZDgwYTZhMmY4
OAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWdldC1h
bmQtY2FsbC5qcwpAQCAtMCwwICsxLDI0IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJp
dmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5j
dGlvbiAobGhzLCByaHMpIHsKKyAgICAgICAgaWYgKGxocyAhPT0gcmhzKQorICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGxocyArICIgYnVnIGdvdDogIiArIHJocyk7
CisgICAgfQorfTsKKworY2xhc3MgQyB7CisgICAgI20oKSB7IHJldHVybiB0aGlzLl92OyB9CisK
KyAgICBnZXRQcml2YXRlTWV0aG9kKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jbTsKKyAgICB9
Cit9CisKK2xldCBjID0gbmV3IEMoKTsKKworbGV0IG8xID0ge192OiAndGVzdDI2Mid9OworbGV0
IG8yID0ge192OiAnZm9vJ307Cithc3NlcnQuc2FtZVZhbHVlKGMuZ2V0UHJpdmF0ZU1ldGhvZCgp
LmNhbGwobzEpLCAndGVzdDI2MicpOworYXNzZXJ0LnNhbWVWYWx1ZShjLmdldFByaXZhdGVNZXRo
b2QoKS5jYWxsKG8yKSwgJ2ZvbycpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2
YXRlLW1ldGhvZC1uZXN0ZWQtY2xhc3MuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhv
ZC1uZXN0ZWQtY2xhc3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGNkZjQ4OTlhNDNlNjllZDBkYWIzNGMyMjYz
ZWZkMzg4M2Q5YTIyZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUt
bWV0aG9kLW5lc3RlZC1jbGFzcy5qcwpAQCAtMCwwICsxLDY4IEBACisvL0AgcmVxdWlyZU9wdGlv
bnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBlKSB7
CisgICAgaWYgKGEgIT09IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIg
KyBlICsgIiBidXQgZ290OiAiICsgYSk7Cit9CisKKygoKSA9PiB7CisgICAgY2xhc3MgQmFzZSB7
CisgICAgICAgIEMgPSBjbGFzcyB7CisgICAgICAgICAgICBtZXRob2QoKSB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuI21CYXNlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICAjbUJhc2UoKSB7CisgICAgICAgICAgICByZXR1cm4gNDsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGxldCBiYXNlID0gbmV3IEJhc2UoKTsKKyAgICBsZXQgYyA9IG5ldyBiYXNlLkMo
KTsKKyAgICBhc3NlcnQoYy5tZXRob2QuY2FsbChiYXNlKSwgNCk7CisKKyAgICB0cnkgeworICAg
ICAgICBjLm1ldGhvZCgpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgYXNzZXJ0KGUgaW5z
dGFuY2VvZiBUeXBlRXJyb3IsIHRydWUpOworICAgIH0KK30pKCk7CisKKy8vIFRlc3Qgc2hhZG93
IG1ldGhvZHMKKworKCgpID0+IHsKKyAgICBjbGFzcyBCYXNlIHsKKyAgICAgICAgbWV0aG9kKCkg
eworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI20oKTsKKyAgICAgICAgfQorCisgICAgICAgIEMg
PSBjbGFzcyB7CisgICAgICAgICAgICBtZXRob2QobykgeworICAgICAgICAgICAgICAgIHJldHVy
biBvLiNtKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICNtKCkgeworICAgICAgICAg
ICAgICAgIHJldHVybiB0aGlzLmZvbzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9v
ID0gNDsKKyAgICAgICAgfTsKKworICAgICAgICAjbSgpIHsKKyAgICAgICAgICAgIHJldHVybiAi
Zm9vIjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBiYXNlID0gbmV3IEJhc2UoKTsKKyAg
ICBsZXQgYyA9IG5ldyBiYXNlLkMoKTsKKyAgICBhc3NlcnQoYy5tZXRob2QoYyksIDQpOworICAg
IGFzc2VydChiYXNlLm1ldGhvZCgpLCAiZm9vIik7CisKKyAgICB0cnkgeworICAgICAgICBjLm1l
dGhvZChiYXNlKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGFzc2VydChlIGluc3RhbmNl
b2YgVHlwZUVycm9yLCB0cnVlKTsKKyAgICB9Cit9KSgpOworCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9wcml2YXRlLW1ldGhvZHMtb24tcHJveHkuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2
YXRlLW1ldGhvZHMtb24tcHJveHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmI1ZmRmY2I2MjM0ZDU0MGFhMGZh
MTJlOGU3Nzc2ZDA2M2FhNWE5ZgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3By
aXZhdGUtbWV0aG9kcy1vbi1wcm94eS5qcwpAQCAtMCwwICsxLDQyIEBACisvL0AgcmVxdWlyZU9w
dGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBl
LCBtKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihtKTsKK30K
KworZnVuY3Rpb24gYXNzZXJ0QXJyYXlDb250ZW50KGEsIGUpIHsKKyAgICBhc3NlcnQoYS5sZW5n
dGgsIGUubGVuZ3RoLCAiU2l6ZSBvZiBhcnJheXMgZG9lc24ndCBtYXRjaCIpOworICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykKKyAgICAgICAgYXNzZXJ0KGFbaV0sIGVbaV0s
ICJhWyIgKyBpICsgIl0gPSAiICsgYVtpXSArICIgYnV0IGVbIiArIGkgKyAiXSA9ICIgKyBlW2ld
KTsKK30KKworbGV0IGFyciA9IFtdOworCitjbGFzcyBQcm94eUJhc2UgeworICAgIGNvbnN0cnVj
dG9yKCkgeworICAgICAgICByZXR1cm4gbmV3IFByb3h5KHRoaXMsIHsKKyAgICAgICAgICAgIGdl
dDogZnVuY3Rpb24gKG9iaiwgcHJvcCkgeworICAgICAgICAgICAgICAgIGFyci5wdXNoKHByb3Ap
OworICAgICAgICAgICAgICAgIHJldHVybiBvYmpbcHJvcF07CisgICAgICAgICAgICB9CisgICAg
ICAgIH0pOworICAgIH0KK30KKworY2xhc3MgVGVzdCBleHRlbmRzIFByb3h5QmFzZSB7CisgICAg
I20oKSB7CisgICAgICAgIHJldHVybiAzOworICAgIH0KKworICAgIG1ldGhvZCgpIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuI20oKTsKKyAgICB9Cit9CisKK2xldCB0ID0gbmV3IFRlc3QoKTsKK2xl
dCByID0gdC5tZXRob2QoKTsKK2Fzc2VydChyLCAzLCAiRXhwZWN0ZWQ6IDMgYnV0IGdvdDogIiAr
IHIpOworCithc3NlcnRBcnJheUNvbnRlbnQoYXJyLCBbJ21ldGhvZCddKTsKKwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1lcy1hdmFpbGFibGUtb24tZGlyZWN0LWV2YWwu
anMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5hbWVzLWF2YWlsYWJsZS1vbi1kaXJlY3QtZXZh
bC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42NGNlMGUwYWY4MDU3OGU4OTcxNmExNjcyZWRjMTc3MzA1YjA2NGYz
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1lcy1hdmFpbGFi
bGUtb24tZGlyZWN0LWV2YWwuanMKQEAgLTAsMCArMSwyMyBAQAorLy9AIHJlcXVpcmVPcHRpb25z
KCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVW
YWx1ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7CisgICAgICAgIGlmIChsaHMgIT09IHJocykKKyAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyByaHMgKyAiIGJ1ZyBnb3Q6
ICIgKyBsaHMpOworICAgIH0KK307CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7Cisg
ICAgICAgICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisKKyAgICAgICAgY2FsbE1ldGhvZEZyb21F
dmFsKCkgeworICAgICAgICAgICAgbGV0IHNlbGYgPSB0aGlzOworICAgICAgICAgICAgcmV0dXJu
IGV2YWwoJ3NlbGYuI20oKScpOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcg
QygpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5jYWxsTWV0aG9kRnJvbUV2YWwoKSwgJ3Rlc3Qn
KTsKK30pKCk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbCBiL0pT
VGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAppbmRleCBmY2RiY2Q4N2RkMWY2OGFhMDFiMDJlM2Rj
MmQyZmZiOGM4NGJhYTlkLi44MDcxMzBlOGNjY2Q4ZDU4YjY5YWU5OGQ2YzU5YzVhMTY1Y2Y2NTg1
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKKysrIGIvSlNUZXN0cy90
ZXN0MjYyL2NvbmZpZy55YW1sCkBAIC02LDYgKzYsNyBAQCBmbGFnczoKICAgRmluYWxpemF0aW9u
UmVnaXN0cnk6IHVzZVdlYWtSZWZzCiAgIGNsYXNzLWZpZWxkcy1wdWJsaWM6IHVzZVB1YmxpY0Ns
YXNzRmllbGRzCiAgIGNsYXNzLWZpZWxkcy1wcml2YXRlOiB1c2VQcml2YXRlQ2xhc3NGaWVsZHMK
KyAgY2xhc3MtbWV0aG9kcy1wcml2YXRlOiB1c2VQcml2YXRlTWV0aG9kcwogICBJbnRsLkRhdGVU
aW1lRm9ybWF0LWRheVBlcmlvZDogdXNlSW50bERhdGVUaW1lRm9ybWF0RGF5UGVyaW9kCiBza2lw
OgogICBmZWF0dXJlczoKQEAgLTE1LDcgKzE2LDYgQEAgc2tpcDoKICAgICAjIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ5MzEKICAgICAtIHJlZ2V4cC1sb29rYmVo
aW5kCiAKLSAgICAtIGNsYXNzLW1ldGhvZHMtcHJpdmF0ZQogICAgIC0gY2xhc3Mtc3RhdGljLWZp
ZWxkcy1wdWJsaWMKICAgICAtIGNsYXNzLXN0YXRpYy1maWVsZHMtcHJpdmF0ZQogICAgIC0gY2xh
c3Mtc3RhdGljLW1ldGhvZHMtcHJpdmF0ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411896</attachid>
            <date>2020-10-20 12:06:17 -0700</date>
            <delta_ts>2020-10-21 06:15:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194434-20201020160614.patch</filename>
            <type>text/plain</type>
            <size>127051</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZTlkZjMyNzcwZDUyOTkxM2VjZmU1YzlhNjE5OTc2MDM1ZDBlNTdhLi44NTM2ZGFkYjZjNTk0ZTI2
ZDFlNDAwNzNmNTkxZTI1MjlmOTE5ZDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNjUgQEAKKzIwMjAtMTAtMjAgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtFU05leHRdIEltcGxlbWVudCBwcml2YXRlIG1ldGhvZHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDQzNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYWRk
aW5nIHN1cHBvcnQgdG8gcHJpdmF0ZSBtZXRob2RzIGZvbGxvd2luZyB0aGUKKyAgICAgICAgc3Bl
Y2lmaWNhdGlvbiBvbiBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtcHJpdmF0ZS1tZXRob2RzLy4K
KyAgICAgICAgVGhpcyBpcyBpbnRyb2R1Y2luZyBhIG5ldyB3YXkgdG8gZGVjbGFyZSBwcml2YXRl
IG1ldGhvZHMgb24KKyAgICAgICAgY2xhc3Mgc3ludGF4LiBQcml2YXRlIG1ldGhvZHMgYXJlIG9u
bHkgYWNjZXNzaWJsZSB3aXRoaW4KKyAgICAgICAgY2xhc3NlcyB0aGV5IHdlcmUgZGVjbGFyZWQs
IGFuZCBvbmx5IGNhbiBiZSBjYWxsZWQgZnJvbQorICAgICAgICBvYmplY3RzIHRoYXQgYXJlIGlu
c3RhbmNlIG9mIHRoZXNlIGNsYXNzZXMuCisgICAgICAgIFRvIGd1YXJhbnRlZSBzdWNoIHJ1bGVz
LCB0aGUgcHJvcG9zYWwgcHJlc2VudHMgdGhlIGNvbmNlcHQgb2YKKyAgICAgICAgQnJhbmQgQ2hl
Y2suIER1cmluZyBjbGFzcyBldmFsdWF0aW9uLCBpZiBhIHByaXZhdGUgbWV0aG9kIGlzIHByZXNl
bnQsCisgICAgICAgIGEgYGJyYW5kYCBpcyBpbnN0YWxsZWQgaW4gdGhpcyBjbGFzcy4gRXZlcnkg
aW5zdGFuY2Ugb2Ygc3VjaCBjbGFzcworICAgICAgICB0aGVuIGdldHMgdGhpcyBicmFuZCBpbnN0
YWxsZWQgZHVyaW5nIGBbW0NvbnN0cnVjdF1dYCBvcGVyYXRpb24uIEl0CisgICAgICAgIG1lYW5z
IHRoYXQgYW4gb2JqZWN0IGNhbiBoYXZlIG11bHRpcGxlIGJyYW5kcyAoZS5nIHdoZW4gdGhlcmUg
aXMgYWxzbworICAgICAgICBwcml2YXRlIG1ldGhvZHMgZGVjbGFyZWQgb24gc3VwZXIgY2xhc3Mp
LiBCZWZvcmUgYWNjZXNzaW5nIGEgcHJpdmF0ZQorICAgICAgICBtZXRob2QsIHRoZXJlIGlzIGEg
Y2hlY2sgdG8gdmFsaWRhdGUgaWYgdGhlIHRhcmdldCBvZiB0aGUgY2FsbCBoYXMgdGhlCisgICAg
ICAgIGJyYW5kIG9mIGNhbGxlZSBtZXRob2QuCisgICAgICAgIFRoZSBicmFuZCBjaGVjayBtZWNo
YW5pc20gaXMgaW1wbGVtZW50ZWQgdXNpbmcgYSBgQHByaXZhdGVCcmFuZGAKKyAgICAgICAgc3Rv
cmVkIG9uIGNsYXNzIHNjb3BlLiBIZXJlIGlzIGEgcmVwcmVzZW50YXRpb24gb2YgaG93IHRoaXMg
bWVjaGFuaXNtCisgICAgICAgIHdvcmtzOgorCisgICAgICAgIGBgYAorICAgICAgICBjbGFzcyBD
IHsKKyAgICAgICAgICAgICNtKCkgeyByZXR1cm4gMzsgfQorICAgICAgICAgICAgbWV0aG9kKCkg
eyByZXR1cm4gdGhpcy4jbSgpOyB9CisgICAgICAgIH0KKworICAgICAgICBsZXQgYyA9IG5ldyBD
KCk7CisgICAgICAgIGNvbnNvbGUubG9nKGMubWV0aG9kKCkpOyAvLyBwcmludHMgMworICAgICAg
ICBgYGAKKworICAgICAgICBHZW5lcmF0ZWQgYnl0ZWNvZGUgZm9yIHRoZSBmb2xsb3dpbmcgcmVw
cmVzZW50YXRpb246CisgICAgICAgIGBgYAorICAgICAgICB7IC8vIGNsYXNzIGxleGljYWwgc2Nv
cGUKKyAgICAgICAgICAgIGNvbnN0IEBwcml2YXRlQnJhbmQwID0gQGNyZWF0ZVByaXZhdGVTeW1i
b2woKTsKKyAgICAgICAgICAgIGNvbnN0ICNtID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gMzsgfQor
ICAgICAgICAgICAgQy5wcm90b3R5cGUubWV0aG9kID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgQGdldF9wcml2YXRlX25hbWUodGhpcywgQHByaXZhdGVCcmFuZDApOworICAgICAgICAg
ICAgICAgIHJldHVybiAjbS5jYWxsKHRoaXMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
QyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIEBwdXRfcHJpdmF0ZV9uYW1lKHRoaXMs
IEBwcml2YXRlQnJhbmQwLCBAcHJpdmF0ZUJyYW5kMCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgICAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgICAgIGNvbnNvbGUubG9nKGMubWV0
aG9kKCkpOyAvLyBwcmludHMgMworICAgICAgICBgYGAKKworICAgICAgICBUaGUgYnJhbmQgY2hl
Y2sgaXMgcGVyZm9ybWVkIGJ5IGBnZXRfcHJpdmF0ZV9uYW1lYCwgd2hlcmUgd2UgcmUtdXNlCisg
ICAgICAgIHRoZSBtZWNoYW5pc20gaW50cm9kdWNlZCBieSBwcml2YXRlIGNsYXNzIGZpZWxkcy4g
V2UgY2FuIHNlZSB0aGUKKyAgICAgICAgcHJpdmF0ZSBicmFuZCBhcyBhIHNwZWNpYWwgcHJpdmF0
ZSBmaWVsZCBpbnN0YWxsZWQgZHVyaW5nCisgICAgICAgIGBbW0NvbnN0cnVjdF1dYCBvcGVyYXRp
b24uIFNpbmNlIHRoZSBwcml2YXRlIGJyYW5kIGlzIGEgcHJpdmF0ZSBmaWVsZCwKKyAgICAgICAg
d2UgdGhyb3cgYFR5cGVFcnJvcmAgd2hlbiB0aGUgbG9va3VwIGZhaWwuCisKKyAgICAgICAgVG8g
cHJvcGVybHkgc3RvcmUgdGhlIHByaXZhdGUgYnJhbmQgb2YgYSBjbGFzcyBvbiBhbGwgT2JqZWN0
cywKKyAgICAgICAgaW5jbHVkaW5nIFByb3hpZXMsIHdlIHVzZSBgcHV0X3ByaXZhdGVfbmFtZWAu
IFRoaXMgaW50cnVjdGlvbiBwdXRzCisgICAgICAgIHZhbHVlIG9uIE9iamVjdCdzIHByb3BlcnRp
ZXMgd2l0aG91dCBleGVjdXRpbmcgW1tQdXRdXSBzZW1hbnRpY3MuCisgICAgICAgIFdpdGggdGhp
cyBkZXNpZ24sIHdlIGF2b2lkIGFsbG9jYXRpbmcgYSBmaWVsZCBmb3IgZXZlcnkgaW5zdGFuY2UK
KyAgICAgICAgb2YgYSBjbGFzcywgc2luY2UgcHJpdmF0ZSBtZXRob2RzIGFyZSBzdG9yZWQgb24g
Y2xhc3MKKyAgICAgICAgbGV4aWNhbCBzY29wZS4gRXZlcnkgb2JqZWN0IHdpbGwgaGF2ZSB0byBh
bGxvY2F0ZSBpdHMgcHJpdmF0ZQorICAgICAgICBicmFuZCBsaXN0LiBUaGlzIGRlc2lnbiBpbnNl
cnRzIG5vIG92ZXJoZWFkIG9uIG9iamVjdHMgYW5kIGNsYXNzZXMKKyAgICAgICAgd2l0aG91dCBw
cml2YXRlIG1ldGhvZHMvYWNjZXNzb3IuCisKKyAgICAgICAgUmVzb2x2aW5nIGNvcnJlY3QgYnJh
bmQgY2hlY2s6CisKKyAgICAgICAgSW4gdGhlIGNhc2Ugb2Ygc2hhZG93aW5nIG9yIG5lc3RlZCBz
Y29wZSwgd2UgbmVlZCB0byBlbWl0IGJyYW5kCisgICAgICAgIGNoZWNrcyB0byB0aGUgcmlnaHQg
cHJpdmF0ZSBicmFuZC4gU2VlIGNvZGUgYmVsb3c6CisKKyAgICAgICAgYGBgCisgICAgICAgIGNs
YXNzIEMgeworICAgICAgICAgICAgI20oKSB7IHJldHVybiAzOyB9CisgICAgICAgICAgICBtZXRo
b2QoKSB7IHJldHVybiB0aGlzLiNtKCk7fQorCisgICAgICAgICAgICBBID0gY2xhc3MgeworICAg
ICAgICAgICAgICAgICNtMigpIHsgcmV0dXJuIDM7IH0KKyAgICAgICAgICAgICAgICBmb28obykg
eyByZXR1cm4gdGhpcy4jbSgpOyB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
YGBgCisKKyAgICAgICAgVGhlIGNhbGwgb2YgIiNtIiBpbiBgZm9vYCByZWZlcnMgdG8gIkM6OiNt
Ii4gSW4gc3VjaCBjYXNlLCB3ZSBuZWVkIHRvCisgICAgICAgIGNoZWNrIEMncyBwcml2YXRlIGJy
YW5kLCBpbnN0ZWFkIG9mIEEncyBwcml2YXRlIGJyYW5kLgorICAgICAgICBUbyBwZXJmb3JtIHRo
ZSBwcm9wZXIgY2hlY2ssIHdlIGZpcnN0IHJlc29sdmUgc2NvcGUgb2YgIiNtIiBhbmQgdGhlbgor
ICAgICAgICBjaGVjayB0aGUgcHJpdmF0ZSBicmFuZCBvZiB0aGlzIHNjb3BlICh0aGUgc2NvcGUg
d2hlcmUgdGhlIHByaXZhdGUKKyAgICAgICAgbWV0aG9kIGFuZCBicmFuZCBhcmUgc3RvcmVkIGlz
IHRoZSBzYW1lKS4KKyAgICAgICAgU28gdGhlIGJ5dGVjb2RlIHRvIGxvb2t1cCB0aGUgcmlnaHQg
YnJhbmQgaXM6CisKKyAgICAgICAgYGBgCisgICAgICAgIHJlc29sdmVfc2NvcGUgbG9jMTAsICIj
bSIKKyAgICAgICAgZ2V0X2Zyb21fc2NvcGUgbG9jMTEsIGxvYzEwLCAiQHByaXZhdGVCcmFuZCIK
KyAgICAgICAgZ2V0X3ByaXZhdGVfbmFtZSBsb2MxMiwgdGhpcywgbG9jMTEKKyAgICAgICAgZ2V0
X2Zyb21fc2NvcGUgbG9jMTEsIGxvYzEwLCAiI20iCisgICAgICAgIC8vIHNldHVwIGNhbGwgZnJh
bWUKKyAgICAgICAgY2FsbCBsb2MxMSwgLi4uCisgICAgICAgIC8vIC4uLgorICAgICAgICBgYGAK
KworICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6CisgICAgICAgIChK
U0M6OkJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yKToKKyAgICAg
ICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKToKKyAgICAgICAg
KiBidWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaDoKKworICAgICAgICBXZSBhcmUgYWRkaW5n
IGEgbmV3IHBhcmFtZXRlciBgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnRgIHRvIHByb3BhZ2F0ZQor
ICAgICAgICB3aGVuIGEgZGVmYXVsdCBjb25zdHJ1Y3RvciBuZWVkcyB0byBlbWl0IGNvZGUgdG8g
c2V0dXAgcHJpdmF0ZSBicmFuZAorICAgICAgICBvbiBpbnN0YW5jZXMuCisKKyAgICAgICAgKiBi
dWlsdGlucy9CdWlsdGluTmFtZXMuaDoKKworICAgICAgICBBZGRpbmcgYEBwcml2YXRlQnJhbmRg
LiBJdCBgQHByaXZhdGVCcmFuZGAgaXMgdGhlIG5hbWUgd2UgdXNlCisgICAgICAgIHRvIHN0b3Jl
IHByaXZhdGUgYnJhbmQgb24gY2xhc3MncyBzY29wZS4KKworICAgICAgICAqIGJ5dGVjb2RlL0V4
ZWN1dGFibGVJbmZvLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxl
SW5mbyk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpwcml2YXRlQnJhbmRSZXF1aXJl
bWVudCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2spOgorICAg
ICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlu
a2VkQ29kZUJsb2NrOjpwcml2YXRlQnJhbmRSZXF1aXJlbWVudCBjb25zdCk6CisgICAgICAgICog
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6VW5s
aW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6OnByaXZhdGVCcmFuZFJlcXVpcmVtZW50IGNvbnN0KToK
KyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAg
ICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgIChK
U0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaDoKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorCisgICAgICAgIFdlIGNo
YW5nZWQgQnl0ZWNvZGVHZW5lcmF0b3IgZm9yIEZ1bmN0aW9uTm9kZSBhbmQgRXZhbE5vZGUgdG8K
KyAgICAgICAgcHJvcGFnYXRlIHBhcmVudFNjb3BlIFZhcmlhYmxlRW52aXJvbm1lbnQuIFRoZXNl
IGVudmlyb25tZW50cyBzdG9yZXMKKyAgICAgICAgcHJpdmF0ZSBuYW1lIGVudHJpZXMgdGhhdCBh
cmUgdmlzaWJsZSBpbnRvIHRoZSBzY29wZSBvZiB0aGUKKyAgICAgICAgZnVuY3Rpb24vZXZhbCBp
biBhZGRpdGlvbiB0byBURFogdmFyaWFibGVzLgorICAgICAgICBUaGlzIGlzIHJlcXVpcmVkIHRv
IGlkZW50aWZ5IHRoZSBraW5kIG9mIGFjY2VzcyBhIHByaXZhdGUgbmFtZSBpcworICAgICAgICBy
ZWZlcnJpbmcgdG8sIHNpbmNlIGl0IGNhbiBiZSBhIHByaXZhdGUgZmllbGQgb3IgYSBwcml2YXRl
IG1ldGhvZC4KKyAgICAgICAgR2l2ZW4gdGhpcyBjaGFuZ2UsIHdlIGNoYW5nZWQgdGhlIG5hbWUg
b2YgVmFyaWFibGVFbnZpcm9ubWVudAorICAgICAgICBmcm9tIGBwYXJlbnRTY29wZVREWlZhcmlh
Ymxlc2AgdG8gYHBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudGAuCisKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Omluc3RhbnRpYXRlTGV4aWNhbFZhcmlhYmxlcyk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0UHJpdmF0ZU5hbWUpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZVByaXZhdGVCcmFuZCk6CisKKyAg
ICAgICAgVGhlIHByb2Nlc3MgdG8gY3JlYXRlIGEgcHJpdmF0ZSBicmFuZCBpcyBhcyBmb2xsb3dz
OgorICAgICAgICAgICAgMS4gQ3JlYXRlIGEgUHJpdmF0ZVN5bWJvbCB1c2luZyBgQGNyZWF0ZVBy
aXZhdGVTeW1ib2xgLgorICAgICAgICAgICAgMi4gU3RvcmUgdGhpcyBzeW1ib2wgaW50byBhIGdp
dmVuIHNjb3BlIChpLmUgY2xhc3MgbGV4aWNhbCBzY29wZSkKKyAgICAgICAgICAgICAgIG9uIGBA
cHJpdmF0ZUJyYW5kYCB2YXJpYWJsZS4KKworICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdEluc3RhbGxQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdEdldFByaXZhdGVCcmFuZCk6CisKKyAgICAgICAgV2UgYWRkZWQgYG1fcHJpdmF0
ZU5hbWVzU3RhY2tgIHRvIEJ5dGVjb2RlR2VuZXJhdG9yIHRvIHJlcHJlc2VudCB0aGUKKyAgICAg
ICAgc2NvcGUgY2hhaW4gb2YgYXZhaWxhYmxlIHByaXZhdGUgbmFtZXMgd2hpbGUgZ2VuZXJhdGlu
ZyBieXRlY29kZS4KKworICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENoZWNr
UHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmlzUHJpdmF0
ZU1ldGhvZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoUHJpdmF0ZUFj
Y2Vzc05hbWVzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnBvcFByaXZhdGVB
Y2Nlc3NOYW1lcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZXRBdmFpbGFi
bGVQcml2YXRlQWNjZXNzTmFtZXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Z2V0VmFyaWFibGVzVW5kZXJURFopOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0TmV3SW5zdGFuY2VGaWVsZEluaXRpYWxpemVyRnVuY3Rpb24pOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdEdldEJ5VmFsKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OnByaXZhdGVCcmFuZFJlcXVpcmVtZW50IGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Om1ha2VGdW5jdGlvbik6CisKKyAgICAgICAgVGhp
cyBjaGFuZ2UgaXMgcmVxdWlyZWQgdG8gcHJvcGVybHkgcHJvcGFnYXRlIFByaXZhdGVCcmFuZFJl
cXVpcmVtZW50CisgICAgICAgIHRvIGFycm93IGZ1bmN0aW9ucyB0aGF0IGNhbiBwb3RlbnRpYWxs
eSBjYWxsIHN1cGVyKCkuCisKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6ZW1pdERlY2xhcmVQcml2YXRlRmll
bGROYW1lcyk6CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlzdE5vZGU6OmVtaXRQdXRDb25zdGFudFByb3BlcnR5
KToKKyAgICAgICAgKEpTQzo6QmFzZURvdE5vZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKToKKwor
ICAgICAgICBBZGRpbmcgc3VwcG9ydCB0byBwcm9wZXJseSBhY2Nlc3MgcHJpdmF0ZSBtZXRob2Qu
IFNpbmNlIHdlIHN0b3JlCisgICAgICAgIHByaXZhdGUgbWV0aG9kcyBvbiBjbGFzcyBsZXhpY2Fs
IHNjb3BlLCB3ZSBuZWVkIGEgZGlmZmVyZW50IHNldCBvZgorICAgICAgICBpbnN0cnVjdGlvbnMg
dG8gYWNjZXNzIGEgcHJpdmF0ZSBtZXRob2QuCisKKyAgICAgICAgKEpTQzo6QmFzZURvdE5vZGU6
OmVtaXRQdXRQcm9wZXJ0eSk6CisKKyAgICAgICAgSW4gdGhlIGNhc2Ugb2Ygd2UgdHJ5aW5nIHRv
IHdyaXRlIGluIGEgcHJpdmF0ZSBtZXRob2QsIHdlIG5lZWQgdG8KKyAgICAgICAgdGhyb3cgYSBU
eXBlRXJyb3IgYWNjb3JkaW5nIHRvIHNwZWNpZmljYXRpb24KKyAgICAgICAgKGh0dHBzOi8vdGMz
OS5lcy9wcm9wb3NhbC1wcml2YXRlLW1ldGhvZHMvI3NlYy1wcml2YXRlZmllbGRzZXQpLgorCisg
ICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKEpTQzo6UG9zdGZpeE5vZGU6OmVtaXREb3QpOgorICAgICAgICAoSlNDOjpQcmVmaXhOb2Rl
OjplbWl0RG90KToKKyAgICAgICAgKEpTQzo6Q2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHA6CisgICAgICAgIChKU0M6
OkRlYnVnZ2VyQ2FsbEZyYW1lOjpldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbik6CisgICAgICAg
ICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpldmFsKToKKyAg
ICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvbk1ldGFkYXRh
Tm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgor
ICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VDbGFzcyk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAo
SlNDOjpTY29wZTo6ZGVjbGFyZVByaXZhdGVNZXRob2QpOgorICAgICAgICAoSlNDOjpTY29wZTo6
ZGVjbGFyZVByaXZhdGVGaWVsZCk6CisgICAgICAgIChKU0M6OlNjb3BlOjpkZWNsYXJlUHJpdmF0
ZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9QYXJzZXJNb2Rlcy5oOgorICAgICAg
ICAqIHBhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcDoKKyAgICAgICAgKEpTQzo6VmFyaWFi
bGVFbnZpcm9ubWVudDo6ZGVjbGFyZVByaXZhdGVNZXRob2QpOgorICAgICAgICAoSlNDOjpDb21w
YWN0VmFyaWFibGVFbnZpcm9ubWVudDo6Q29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQpOgorICAg
ICAgICAoSlNDOjpDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudDo6b3BlcmF0b3I9PSBjb25zdCk6
CisgICAgICAgIChKU0M6OkNvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50Ojp0b1ZhcmlhYmxlRW52
aXJvbm1lbnQgY29uc3QpOgorICAgICAgICAqIHBhcnNlci9WYXJpYWJsZUVudmlyb25tZW50Lmg6
CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeTo6aXNQcml2YXRlRmllbGQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OmlzUHJpdmF0
ZU1ldGhvZCBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeTo6
c2V0SXNQcml2YXRlRmllbGQpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50
cnk6OnNldElzUHJpdmF0ZU1ldGhvZCk6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6
OmlzTWV0aG9kIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6aXNQcml2
YXRlQWNjZXNzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6YWRk
UHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJl
UHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFy
ZVByaXZhdGVNZXRob2QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpoYXNQ
cml2YXRlQWNjZXNzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudEVu
dHJ5Ojppc1ByaXZhdGVOYW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6VmFyaWFi
bGVFbnZpcm9ubWVudEVudHJ5OjpzZXRJc1ByaXZhdGVOYW1lKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVByaXZhdGVOYW1lKTogRGVsZXRlZC4K
KyAgICAgICAgKiBydW50aW1lL0NhY2hlZFR5cGVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FjaGVk
Q29kZUJsb2NrUmFyZURhdGE6OmVuY29kZSk6CisgICAgICAgIChKU0M6OkNhY2hlZENvZGVCbG9j
a1JhcmVEYXRhOjpkZWNvZGUgY29uc3QpOgorICAgICAgICAoSlNDOjpDYWNoZWRGdW5jdGlvbkV4
ZWN1dGFibGVSYXJlRGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6Q2FjaGVkRnVuY3Rpb25F
eGVjdXRhYmxlUmFyZURhdGE6OmRlY29kZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgY29uc3QpOgorICAgICAg
ICAoSlNDOjpDYWNoZWRDb2RlQmxvY2s6OmRlcml2ZWRDb250ZXh0VHlwZSBjb25zdCk6CisgICAg
ICAgIChKU0M6OkNhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZW5jb2RlKToKKyAgICAgICAgKEpT
Qzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ29kZUJsb2NrOjpuZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9Db2RlQ2FjaGUuY3BwOgor
ICAgICAgICAoSlNDOjpnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrSW1wbCk6CisgICAgICAgIChK
U0M6OkNvZGVDYWNoZTo6Z2V0VW5saW5rZWRHbG9iYWxGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpE
aXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6RGlyZWN0RXZhbEV4
ZWN1dGFibGU6OkRpcmVjdEV2YWxFeGVjdXRhYmxlKToKKyAgICAgICAgKiBydW50aW1lL0RpcmVj
dEV2YWxFeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9FdmFsRXhlY3V0YWJsZS5jcHA6
CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpFdmFsRXhlY3V0YWJsZSk6CisgICAgICAg
ICogcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJs
ZTo6ZXhlY3V0YWJsZUluZm8gY29uc3QpOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6
cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0
aW9uSGVscGVycy5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVy
cm9yKToKKyAgICAgICAgKiBydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwOgorICAg
ICAgICAoSlNDOjpJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpJbmRpcmVjdEV2YWxFeGVjdXRhYmxl
KToKKyAgICAgICAgKiBydW50aW1lL0pTU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpKU1Njb3Bl
Ojpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKToKKyAgICAgICAgKiBydW50aW1lL01v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmNwcDoK
KyAgICAgICAgKEpTQzo6T3B0aW9uczo6cmVjb21wdXRlRGVwZW5kZW50T3B0aW9ucyk6CisgICAg
ICAgICogcnVudGltZS9PcHRpb25zTGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJvZ3JhbUV4
ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFRhYmxlLmNwcDoKKyAgICAgICAg
KEpTQzo6U3ltYm9sVGFibGU6OmNsb25lU2NvcGVQYXJ0KToKKyAgICAgICAgKiBydW50aW1lL1N5
bWJvbFRhYmxlLmg6CisKIDIwMjAtMTAtMjAgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBp
Z2FsaWEuY29tPiBhbmQgUGF2ZWwgRmVsZG1hbiA8cGF2ZWwuZmVsZG1hbkBnbWFpbC5jb20+CiAK
ICAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIHNldFNjcmVlblNpemVPdmVycmlkZSBBUEkgdG8g
dGhlIFBhZ2UgYWdlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKaW5kZXggODMwNDk0NGJhYzQzOGJjOTc5MzRhNGEwMmQw
MjE1OTU1YjRjYWNmYi4uYTY0NGQzMjIxYjY4MzY1NDE5ZTRhMzNlYjFmNmFiOGZiNmUxNTRmMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRh
Ymxlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlcy5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgU291cmNlQ29kZSBCdWlsdGluRXhlY3V0YWJs
ZXM6OmRlZmF1bHRDb25zdHJ1Y3RvclNvdXJjZUNvZGUoQ29uc3RydWN0b3JLaW5kIGNvbnMKICAg
ICByZXR1cm4gU291cmNlQ29kZSgpOwogfQogCi1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoQ29uc3RydWN0b3JL
aW5kIGNvbnN0cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpCitVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVEZWZhdWx0Q29uc3RydWN0
b3IoQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFt
ZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIs
IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KQogewogICAg
IHN3aXRjaCAoY29uc3RydWN0b3JLaW5kKSB7CiAgICAgY2FzZSBDb25zdHJ1Y3RvcktpbmQ6Ok5v
bmU6CkBAIC02Nyw3ICs2Nyw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGlu
RXhlY3V0YWJsZXM6OmNyZWF0ZURlZmF1bHRDb25zdHJ1Y3RvcihDb25zdHJ1CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQ29uc3RydWN0b3JLaW5kOjpCYXNlOgogICAgIGNhc2UgQ29uc3RydWN0
b3JLaW5kOjpFeHRlbmRzOgotICAgICAgICByZXR1cm4gY3JlYXRlRXhlY3V0YWJsZShtX3ZtLCBk
ZWZhdWx0Q29uc3RydWN0b3JTb3VyY2VDb2RlKGNvbnN0cnVjdG9yS2luZCksIG5hbWUsIGNvbnN0
cnVjdG9yS2luZCwgQ29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0LCBuZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplcik7CisgICAgICAgIHJldHVybiBjcmVhdGVFeGVjdXRhYmxlKG1fdm0sIGRl
ZmF1bHRDb25zdHJ1Y3RvclNvdXJjZUNvZGUoY29uc3RydWN0b3JLaW5kKSwgbmFtZSwgY29uc3Ry
dWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3QsIG5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyLCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7CiAgICAgfQogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwpAQCAtNzgsNyArNzgsNyBAQCBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWls
dGluRXhlY3V0YWJsZShjb25zdCBTbwogICAgIHJldHVybiBjcmVhdGVFeGVjdXRhYmxlKG1fdm0s
IGNvZGUsIG5hbWUsIGNvbnN0cnVjdG9yS2luZCwgY29uc3RydWN0QWJpbGl0eSwgTmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vKTsKIH0KIAotVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgQ29uc3RydWN0b3JLaW5kIGNv
bnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBOZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcikKK1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUo
Vk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGNvbnN0IElkZW50aWZpZXImIG5hbWUs
IENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3Ry
dWN0QWJpbGl0eSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50
KQogewogICAgIC8vIEZJWE1FOiBDYW4gd2UganVzdCBtYWtlIE1ldGFEYXRhIGNvbXB1dGF0aW9u
IGJlIGNvbnN0ZXhwciBhbmQgaGF2ZSB0aGUgY29tcGlsZXIgZG8gdGhpcyBmb3IgdXM/CiAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzI3MgpAQCAtMjUx
LDcgKzI1MSw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJs
ZXM6OmNyZWF0ZUV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTCiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSh2bSwgc291cmNlLCAmbWV0YWRhdGEsIGtp
bmQsIGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgV1RGOjpu
dWxsb3B0LCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyLCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3Rvcik7CisgICAgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlOjpjcmVhdGUodm0sIHNvdXJjZSwgJm1ldGFkYXRhLCBraW5kLCBjb25zdHJ1Y3RBYmls
aXR5LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIFdURjo6bnVsbG9wdCwgRGVyaXZlZENv
bnRleHRUeXBlOjpOb25lLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgcHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQsIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKTsKICAgICByZXR1
cm4gZnVuY3Rpb25FeGVjdXRhYmxlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgKaW5kZXggNDUxNjM4ZTg3M2Y3OTZjOGM0
ZDI2MjljN2I1YWFmYmZhZWIyNGI5OC4uNDNlMzgyNzViMWI5YWEzNjE2N2EyYWU5MWQzNTg3ODYw
MzgwNzgzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5FeGVjdXRhYmxlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWls
dGluRXhlY3V0YWJsZXMuaApAQCAtNTgsOSArNTgsOSBAQCBTb3VyY2VDb2RlIG5hbWUjI1NvdXJj
ZSgpOwogI3VuZGVmIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTCiAKICAgICBzdGF0aWMgU291
cmNlQ29kZSBkZWZhdWx0Q29uc3RydWN0b3JTb3VyY2VDb2RlKENvbnN0cnVjdG9yS2luZCk7Ci0g
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZURlZmF1bHRDb25zdHJ1Y3RvcihD
b25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlRGVmYXVs
dENvbnN0cnVjdG9yKENvbnN0cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50KTsKIAotICAg
IHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlRXhlY3V0YWJsZShWTSYs
IGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBJZGVudGlmaWVyJiwgQ29uc3RydWN0b3JLaW5kLCBD
b25zdHJ1Y3RBYmlsaXR5LCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcik7CisgICAgc3RhdGlj
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVFeGVjdXRhYmxlKFZNJiwgY29uc3Qg
U291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXImLCBDb25zdHJ1Y3RvcktpbmQsIENvbnN0cnVj
dEFiaWxpdHksIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJl
bWVudCA9IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lKTsKIAogICAgIHZvaWQgZmluYWxp
emVVbmNvbmRpdGlvbmFsbHkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0J1aWx0aW5OYW1lcy5oCmluZGV4IGMxZDVkOTA0NmFhYmZkNmZlNWNiMzkzZDk1Y2UwN2E3MTEx
NzY2OGUuLjBkODI0NTc3NDkwYmFiYmM3MmY0ODUzOGUxOTdjNDIzNjM4YTU5YmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAgLTE3MSw2ICsx
NzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyh3ZWJBc3NlbWJseUNvbXBpbGVTdHJl
YW1pbmdJbnRlcm5hbCkgXAogICAgIG1hY3JvKHdlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1p
bmdJbnRlcm5hbCkgXAogICAgIG1hY3JvKGluc3RhbmNlRmllbGRJbml0aWFsaXplcikgXAorICAg
IG1hY3JvKHByaXZhdGVCcmFuZCkgXAogICAgIG1hY3JvKGhhc093blByb3BlcnR5RnVuY3Rpb24p
IFwKICAgICBtYWNybyhjcmVhdGVQcml2YXRlU3ltYm9sKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4IDQ5ZWRkNTI4NWQ1YzJjMjhi
MWM5YTRiY2VlZjQ1MTcxOTkwYmU5MWMuLmNkNTlmYjRhNzMzZTkyNGU0ZWIxM2E5YzAwNjkzMDQy
ZDM5ZDlkZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVj
dXRhYmxlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRh
YmxlSW5mby5oCkBAIC0zNiw5ICszNiwxMCBAQCBlbnVtIGNsYXNzIE5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyIDogdWludDhfdCB7IE5vLCBZZXMgfTsKIC8vIEZJWE1FOiBUaGVzZSBmbGFncywg
UGFyc2VyTW9kZXMgYW5kIHByb3BhZ2F0aW9uIHRvIFhYWENvZGVCbG9ja3Mgc2hvdWxkIGJlIHJl
b3JnYW5pemVkLgogLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MTU0Nwogc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKLSAgICBFeGVjdXRhYmxlSW5mbyhib29sIHVz
ZXNFdmFsLCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24sIENvbnN0
cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2Rl
LCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBE
ZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25D
b250ZXh0LCBib29sIGlzQ2xhc3NDb250ZXh0LCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRU
eXBlKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNDb25zdHJ1Y3Rv
ciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGJvb2wg
aXNCdWlsdGluRnVuY3Rpb24sIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIEpTUGFy
c2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBTb3Vy
Y2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRU
eXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
ciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzQ2xhc3NDb250ZXh0LCBFdmFs
Q29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKQogICAgICAgICA6IG1fdXNlc0V2YWwodXNlc0V2
YWwpCiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3RydWN0b3IpCisgICAgICAgICwg
bV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudChzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQpKQogICAgICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oaXNCdWlsdGlu
RnVuY3Rpb24pCiAgICAgICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGNvbnN0cnVjdG9yS2luZCkpCiAgICAgICAgICwgbV9zdXBlckJpbmRpbmcoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykpCkBAIC01Nyw2ICs1OCw3IEBAIHN0cnVjdCBFeGVj
dXRhYmxlSW5mbyB7CiAKICAgICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV91c2Vz
RXZhbDsgfQogICAgIGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNDb25z
dHJ1Y3RvcjsgfQorICAgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVp
cmVtZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQ+KG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOyB9CiAgICAgYm9vbCBpc0J1aWx0aW5GdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KICAgICBDb25zdHJ1
Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29u
c3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KICAgICBTdXBlckJpbmRpbmcgc3Vw
ZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1
cGVyQmluZGluZyk7IH0KQEAgLTcxLDYgKzczLDcgQEAgc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsK
IHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV91c2VzRXZhbCA6IDE7CiAgICAgdW5zaWduZWQgbV9p
c0NvbnN0cnVjdG9yIDogMTsKKyAgICB1bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50
IDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKICAgICB1bnNpZ25l
ZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CiAgICAgdW5zaWduZWQgbV9zdXBlckJpbmRpbmcgOiAx
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAKaW5kZXggYjNhZGMwYjc3ZWI3YzcyNDE4NmE5ODFjNjM1M2MzMTlhNTk5YjBlMC4u
OTNkZmY3NzQyZDM3NGVlYzNlZmEyZGUwNzRlMjg0ODFmOTY5NjE1NSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC02
OSw2ICs2OSwxMCBAQCBVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29kZVR5cGUgY29kZQogICAgICAgICBjcmVhdGVSYXJl
RGF0YUlmTmVjZXNzYXJ5KGhvbGRMb2NrKGNlbGxMb2NrKCkpKTsKICAgICAgICAgbV9yYXJlRGF0
YS0+bV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihO
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6WWVzKTsKICAgICB9CisgICAgaWYgKGluZm8ucHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSA9PSBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6TmVlZGVk
KSB7CisgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoaG9sZExvY2soY2VsbExvY2so
KSkpOworICAgICAgICBtX3JhcmVEYXRhLT5tX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOZWVkZWQpOworICAg
IH0KIH0KIAogdm9pZCBVbmxpbmtlZENvZGVCbG9jazo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCAwMGRjNjE2MzM1ZmQzMWIwNDMyNTFl
MzQ0MDBlNTdkZWY1MzE1ZDVmLi4xZjUxZWNlNWQ2Zjg2ZDcwOTUxMWI0YTRjMTgyYzY0Y2JmYTE4
M2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suaApAQCAtMjY2LDYgKzI2NiwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBO
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm87CiAgICAgfQogCisgICAgUHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgaWYgKG1fcmFyZURhdGEpCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQ+KG1fcmFyZURhdGEtPm1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQp
OworICAgICAgICByZXR1cm4gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmU7CisgICAgfQor
CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAKICAgICBCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXMmIGxpdmVuZXNzQW5hbHlzaXMoQ29kZUJsb2NrKiBjb2RlQmxvY2spCkBAIC00
MDcsNiArNDE0LDcgQEAgcHVibGljOgogICAgICAgICBSZWZDb3VudGVkQXJyYXk8Q29uc3RhbnRJ
ZGVudGlmaWVyU2V0RW50cnk+IG1fY29uc3RhbnRJZGVudGlmaWVyU2V0czsKIAogICAgICAgICB1
bnNpZ25lZCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIDogMTsKKyAgICAgICAgdW5zaWdu
ZWQgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA6IDE7CiAgICAgfTsKIAogICAgIGludCBvdXRP
ZkxpbmVKdW1wT2Zmc2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9y
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5l
cmF0b3IuaAppbmRleCAyZWI5ODRjMWIwNWE0NWUwYWE1MjBlMWZkMzc4YWQ5ZTJmYzkzMjIyLi45
NGM2ODcwZTk5NGMyYmY1Yzk4MmNlOTUyZTRjNTM0YmRjOTZiNDg4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5l
cmF0b3IuaApAQCAtNTAsNiArNTAsNyBAQCBwdWJsaWM6CiAgICAgU3VwZXJCaW5kaW5nIHN1cGVy
QmluZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5zdXBlckJpbmRpbmcoKTsgfQog
ICAgIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2Rl
QmxvY2stPnNjcmlwdE1vZGUoKTsgfQogICAgIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPm5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCk7IH0KKyAgICBQcml2YXRlQnJhbmRSZXF1aXJlbWVu
dCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5w
cml2YXRlQnJhbmRSZXF1aXJlbWVudCgpOyB9CiAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsg
cmV0dXJuIG1fY29kZUJsb2NrLT51c2VzRXZhbCgpOyB9CiAgICAgU291cmNlUGFyc2VNb2RlIHBh
cnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5wYXJzZU1vZGUoKTsgfQogICAg
IGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgeyByZXR1cm4gbV9jb2RlQmxvY2stPmlzQXJyb3dGdW5j
dGlvbigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCA0NjFkOWZhZGQ0OGIzNWJj
OTRlZGQ2MTBiNzM4N2NlYTkwMmMxNGY2Li5mMmYxMDBmODlhYTU3NWI2Nzg1ZGU2ODJmNzBjODMy
ZjRhNzViOTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTcwLDExICs3MCwxMSBA
QCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKAogCiAgICAgYm9vbCBpc0NsYXNzQ29udGV4dCA9IGV4ZWN1dGFibGUtPnN1
cGVyQmluZGluZygpID09IFN1cGVyQmluZGluZzo6TmVlZGVkOwogCi0gICAgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRl
KHZtLCBGdW5jdGlvbkNvZGUsIEV4ZWN1dGFibGVJbmZvKGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBr
aW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0aW9uS2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5G
dW5jdGlvbiwgZXhlY3V0YWJsZS0+Y29uc3RydWN0b3JLaW5kKCksIHNjcmlwdE1vZGUsIGV4ZWN1
dGFibGUtPnN1cGVyQmluZGluZygpLCBwYXJzZU1vZGUsIGV4ZWN1dGFibGUtPmRlcml2ZWRDb250
ZXh0VHlwZSgpLCBleGVjdXRhYmxlLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBmYWxz
ZSwgaXNDbGFzc0NvbnRleHQsIEV2YWxDb250ZXh0VHlwZTo6RnVuY3Rpb25FdmFsQ29udGV4dCks
IGNvZGVHZW5lcmF0aW9uTW9kZSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVz
dWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKHZtLCBGdW5jdGlvbkNvZGUs
IEV4ZWN1dGFibGVJbmZvKGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBraW5kID09IENvZGVGb3JDb25z
dHJ1Y3QsIGV4ZWN1dGFibGUtPnByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCksIGZ1bmN0aW9uS2lu
ZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwgZXhlY3V0YWJsZS0+Y29uc3RydWN0b3JLaW5k
KCksIHNjcmlwdE1vZGUsIGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpLCBwYXJzZU1vZGUsIGV4
ZWN1dGFibGUtPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBleGVjdXRhYmxlLT5uZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplcigpLCBmYWxzZSwgaXNDbGFzc0NvbnRleHQsIEV2YWxDb250ZXh0VHlwZTo6
RnVuY3Rpb25FdmFsQ29udGV4dCksIGNvZGVHZW5lcmF0aW9uTW9kZSk7CiAKLSAgICBWYXJpYWJs
ZUVudmlyb25tZW50IHBhcmVudFNjb3BlVERaVmFyaWFibGVzID0gZXhlY3V0YWJsZS0+cGFyZW50
U2NvcGVURFpWYXJpYWJsZXMoKTsKKyAgICBWYXJpYWJsZUVudmlyb25tZW50IHBhcmVudFNjb3Bl
VmFyaWFibGVFbnZpcm9ubWVudCA9IGV4ZWN1dGFibGUtPnBhcmVudFNjb3BlVmFyaWFibGVFbnZp
cm9ubWVudCgpOwogICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0cmlj
dENvbnRleHQoKSA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpzbG9wcHkoKTsKLSAg
ICBlcnJvciA9IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSh2bSwgZnVuY3Rpb24uZ2V0KCks
IHNvdXJjZSwgcmVzdWx0LCBjb2RlR2VuZXJhdGlvbk1vZGUsICZwYXJlbnRTY29wZVREWlZhcmlh
YmxlcywgZWNtYU1vZGUpOworICAgIGVycm9yID0gQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRl
KHZtLCBmdW5jdGlvbi5nZXQoKSwgc291cmNlLCByZXN1bHQsIGNvZGVHZW5lcmF0aW9uTW9kZSwg
JnBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCwgZWNtYU1vZGUpOwogCiAgICAgaWYgKGVy
cm9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC04Miw3ICs4Miw3IEBA
IHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2soCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHBhcmVudFNvdXJjZSwgRnVuY3Rpb25NZXRhZGF0
YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGtpbmQsIENvbnN0cnVjdEFiaWxpdHkg
Y29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIE9wdGlvbmFs
PENvbXBhY3RWYXJpYWJsZU1hcDo6SGFuZGxlPiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRGVy
aXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNCdWlsdGluRGVmYXVsdENs
YXNzQ29uc3RydWN0b3IpCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU291cmNl
Q29kZSYgcGFyZW50U291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRG
dW5jdGlvbktpbmQga2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBKU1Bh
cnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgT3B0aW9uYWw8Q29tcGFjdFZhcmlhYmxlTWFwOjpI
YW5kbGU+IHBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCwgRGVyaXZlZENvbnRleHRUeXBl
IGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJl
cXVpcmVtZW50LCBib29sIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKQogICAgIDog
QmFzZSh2bSwgc3RydWN0dXJlKQogICAgICwgbV9maXJzdExpbmVPZmZzZXQobm9kZS0+Zmlyc3RM
aW5lKCkgLSBwYXJlbnRTb3VyY2UuZmlyc3RMaW5lKCkub25lQmFzZWRJbnQoKSkKICAgICAsIG1f
aXNJblN0cmljdENvbnRleHQobm9kZS0+aXNJblN0cmljdENvbnRleHQoKSkKQEAgLTEwMyw2ICsx
MDMsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdAogICAgICwgbV90eXBlUHJvZmlsaW5nU3Rh
cnRPZmZzZXQobm9kZS0+ZnVuY3Rpb25LZXl3b3JkU3RhcnQoKSkKICAgICAsIG1fdHlwZVByb2Zp
bGluZ0VuZE9mZnNldChub2RlLT5zdGFydFN0YXJ0T2Zmc2V0KCkgKyBub2RlLT5zb3VyY2UoKS5s
ZW5ndGgoKSAtIDEpCiAgICAgLCBtX3BhcmFtZXRlckNvdW50KG5vZGUtPnBhcmFtZXRlckNvdW50
KCkpCisgICAgLCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50KHN0YXRpY19jYXN0PHVuc2lnbmVk
Pihwcml2YXRlQnJhbmRSZXF1aXJlbWVudCkpCiAgICAgLCBtX2ZlYXR1cmVzKDApCiAgICAgLCBt
X3NvdXJjZVBhcnNlTW9kZShub2RlLT5wYXJzZU1vZGUoKSkKICAgICAsIG1fY29uc3RydWN0b3JL
aW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihub2RlLT5jb25zdHJ1Y3RvcktpbmQoKSkpCkBAIC0x
MjIsMTIgKzEyMywxMyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdAogICAgIEFTU0VSVChtX3Nj
cmlwdE1vZGUgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNjcmlwdE1vZGUpKTsKICAgICBBU1NF
UlQobV9zdXBlckJpbmRpbmcgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPnN1cGVyQmlu
ZGluZygpKSk7CiAgICAgQVNTRVJUKG1fZGVyaXZlZENvbnRleHRUeXBlID09IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihkZXJpdmVkQ29udGV4dFR5cGUpKTsKKyAgICBBU1NFUlQobV9wcml2YXRlQnJh
bmRSZXF1aXJlbWVudCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocHJpdmF0ZUJyYW5kUmVxdWly
ZW1lbnQpKTsKICAgICBBU1NFUlQoIShtX2lzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9y
ICYmIGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSkpOwogICAgIEFT
U0VSVCghbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciB8fCAoaXNDbGFzc0NvbnN0cnVjdG9y
RnVuY3Rpb24oKSB8fCBkZXJpdmVkQ29udGV4dFR5cGUgPT0gRGVyaXZlZENvbnRleHRUeXBlOjpE
ZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KSk7CiAgICAgaWYgKCFub2RlLT5jbGFzc1NvdXJjZSgp
LmlzTnVsbCgpKQogICAgICAgICBzZXRDbGFzc1NvdXJjZShub2RlLT5jbGFzc1NvdXJjZSgpKTsK
LSAgICBpZiAocGFyZW50U2NvcGVURFpWYXJpYWJsZXMpCi0gICAgICAgIGVuc3VyZVJhcmVEYXRh
KCkubV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcyA9IFdURk1vdmUoKnBhcmVudFNjb3BlVERaVmFy
aWFibGVzKTsKKyAgICBpZiAocGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50KQorICAgICAg
ICBlbnN1cmVSYXJlRGF0YSgpLm1fcGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50ID0gV1RG
TW92ZSgqcGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50KTsKIH0KIAogVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6On5VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5oCmluZGV4IDhmZmUzMDBkODQ0MjcxZDRmNmRkZjkxNWQyZGJlMmE1MmZjMDJhN2Yu
LjU2MzY3ZWIwNWVlMGY1MThhM2U3OTdlOGI0MmJlNDIyYmNjNzQ2OWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5oCkBAIC03MCwxMCArNzAsMTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gJnZt
LnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc3BhY2U7CiAgICAgfQogCi0gICAgc3Rh
dGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0mIHZtLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0
aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RB
YmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgT3B0aW9uYWw8Q29tcGFjdFZh
cmlhYmxlTWFwOjpIYW5kbGU+IHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBEZXJpdmVkQ29udGV4
dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1
Y3RvciA9IGZhbHNlKQorICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3Jl
YXRlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9k
ZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQgdW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0
cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1v
ZGUsIE9wdGlvbmFsPENvbXBhY3RWYXJpYWJsZU1hcDo6SGFuZGxlPiBwYXJlbnRTY29wZVZhcmlh
YmxlRW52aXJvbm1lbnQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2
YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCwgYm9vbCBpc0J1aWx0
aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvciA9IGZhbHNlKQogICAgIHsKICAgICAgICAgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLmhlYXApKQotICAgICAgICAgICAgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
U3RydWN0dXJlLmdldCgpLCBzb3VyY2UsIG5vZGUsIHVubGlua2VkRnVuY3Rpb25LaW5kLCBjb25z
dHJ1Y3RBYmlsaXR5LCBzY3JpcHRNb2RlLCBXVEZNb3ZlKHBhcmVudFNjb3BlVERaVmFyaWFibGVz
KSwgZGVyaXZlZENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgaXNCdWls
dGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IpOworICAgICAgICAgICAgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUodm0sIHZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdl
dCgpLCBzb3VyY2UsIG5vZGUsIHVubGlua2VkRnVuY3Rpb25LaW5kLCBjb25zdHJ1Y3RBYmlsaXR5
LCBzY3JpcHRNb2RlLCBXVEZNb3ZlKHBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCksIGRl
cml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50LCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3Rvcik7CiAgICAgICAg
IGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsK
ICAgICB9CkBAIC0xNDMsNiArMTQzLDggQEAgcHVibGljOgogICAgIENvZGVGZWF0dXJlcyBmZWF0
dXJlcygpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXM7IH0KICAgICBib29sIGhhc0NhcHR1cmVk
VmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNDYXB0dXJlZFZhcmlhYmxlczsgfQogCisg
ICAgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxQcml2YXRlQnJhbmRSZXF1aXJlbWVudD4obV9wcml2YXRl
QnJhbmRSZXF1aXJlbWVudCk7IH0KKwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rl
c3RydWN0aW9uID0gdHJ1ZTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCkBA
IC0xNjgsMTEgKzE3MCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhbV9yYXJlRGF0YS0+
bV9jbGFzc1NvdXJjZS5pc051bGwoKTsKICAgICB9CiAKLSAgICBWYXJpYWJsZUVudmlyb25tZW50
IHBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkgY29uc3QKKyAgICBWYXJpYWJsZUVudmlyb25tZW50
IHBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCgpIGNvbnN0CiAgICAgewotICAgICAgICBp
ZiAoIW1fcmFyZURhdGEgfHwgIW1fcmFyZURhdGEtPm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXMp
CisgICAgICAgIGlmICghbV9yYXJlRGF0YSB8fCAhbV9yYXJlRGF0YS0+bV9wYXJlbnRTY29wZVZh
cmlhYmxlRW52aXJvbm1lbnQpCiAgICAgICAgICAgICByZXR1cm4gVmFyaWFibGVFbnZpcm9ubWVu
dCgpOwotICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9wYXJlbnRTY29wZVREWlZhcmlhYmxl
cy5lbnZpcm9ubWVudCgpLnRvVmFyaWFibGVFbnZpcm9ubWVudCgpOworICAgICAgICByZXR1cm4g
bV9yYXJlRGF0YS0+bV9wYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQuZW52aXJvbm1lbnQo
KS50b1ZhcmlhYmxlRW52aXJvbm1lbnQoKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBpc0Fycm93
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBpc0Fycm93RnVuY3Rpb25QYXJzZU1vZGUocGFyc2VN
b2RlKCkpOyB9CkBAIC0yMDgsNyArMjEwLDcgQEAgcHVibGljOgogICAgICAgICBTb3VyY2VDb2Rl
IG1fY2xhc3NTb3VyY2U7CiAgICAgICAgIFN0cmluZyBtX3NvdXJjZVVSTERpcmVjdGl2ZTsKICAg
ICAgICAgU3RyaW5nIG1fc291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZTsKLSAgICAgICAgQ29tcGFj
dFZhcmlhYmxlTWFwOjpIYW5kbGUgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlczsKKyAgICAgICAg
Q29tcGFjdFZhcmlhYmxlTWFwOjpIYW5kbGUgbV9wYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1l
bnQ7CiAgICAgICAgIFZlY3RvcjxKU1RleHRQb3NpdGlvbj4gbV9pbnN0YW5jZUZpZWxkTG9jYXRp
b25zOwogICAgIH07CiAKQEAgLTIyOSw3ICsyMzEsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2
YXRlOgotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNJiwgU3RydWN0dXJlKiwgY29u
c3QgU291cmNlQ29kZSYsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgVW5saW5rZWRGdW5jdGlvbktp
bmQsIENvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZSwgT3B0aW9uYWw8Q29tcGFj
dFZhcmlhYmxlTWFwOjpIYW5kbGU+LCAgSlNDOjpEZXJpdmVkQ29udGV4dFR5cGUsIEpTQzo6TmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3Ry
dWN0b3IpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNJiwgU3RydWN0dXJlKiwg
Y29uc3QgU291cmNlQ29kZSYsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgVW5saW5rZWRGdW5jdGlv
bktpbmQsIENvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZSwgT3B0aW9uYWw8Q29t
cGFjdFZhcmlhYmxlTWFwOjpIYW5kbGU+LCAgSlNDOjpEZXJpdmVkQ29udGV4dFR5cGUsIEpTQzo6
TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29s
IGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKTsKICAgICBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZShEZWNvZGVyJiwgY29uc3QgQ2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlJik7CiAK
ICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CkBA
IC0yNjEsNyArMjYzLDggQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2lzQ2FjaGVkIDogMTsK
ICAgICB1bnNpZ25lZCBtX3R5cGVQcm9maWxpbmdTdGFydE9mZnNldDsKICAgICB1bnNpZ25lZCBt
X3R5cGVQcm9maWxpbmdFbmRPZmZzZXQ7Ci0gICAgdW5zaWduZWQgbV9wYXJhbWV0ZXJDb3VudDsK
KyAgICB1bnNpZ25lZCBtX3BhcmFtZXRlckNvdW50IDogMzE7CisgICAgdW5zaWduZWQgbV9wcml2
YXRlQnJhbmRSZXF1aXJlbWVudCA6IDE7CiAgICAgQ29kZUZlYXR1cmVzIG1fZmVhdHVyZXM7CiAg
ICAgU291cmNlUGFyc2VNb2RlIG1fc291cmNlUGFyc2VNb2RlOwogICAgIHVuc2lnbmVkIG1fY29u
c3RydWN0b3JLaW5kIDogMjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNDY3NDBkYThlNTU1N2FmOTU5
YTJhZDE4MTM4MTkzNmFhYmQxYmM4MC4uYTgyNWU3YTBjN2E5ZWNmMWVjNTBkNDRiOWQxODZkNTIz
ZTk1MmE0OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTI4OCw3ICsyODgsNyBAQCBQYXJzZXJFcnJv
ciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgIHJldHVybiBQYXJzZXJFcnJvcihQ
YXJzZXJFcnJvcjo6RXJyb3JOb25lKTsKIH0KIAotQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2Rl
R2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxpbmtlZFByb2dy
YW1Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29k
ZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVRE
WlZhcmlhYmxlcywgRUNNQU1vZGUgZWNtYU1vZGUpCitCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IoVk0mIHZtLCBQcm9ncmFtTm9kZSogcHJvZ3JhbU5vZGUsIFVubGlua2VkUHJv
Z3JhbUNvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBj
b2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3Bl
VmFyaWFibGVFbnZpcm9ubWVudCwgRUNNQU1vZGUgZWNtYU1vZGUpCiAgICAgOiBCeXRlY29kZUdl
bmVyYXRvckJhc2UobWFrZVVuaXF1ZTxVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcj4odm0sIGNv
ZGVCbG9jayksIENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVh
bFJlZ2lzdGVycygpKQogICAgICwgbV9jb2RlR2VuZXJhdGlvbk1vZGUoY29kZUdlbmVyYXRpb25N
b2RlKQogICAgICwgbV9zY29wZU5vZGUocHJvZ3JhbU5vZGUpCkBAIC0zMDQsNyArMzA0LDcgQEAg
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUq
IHByb2dyYW1Ob2RlLCBVbmxpbmtlZFAKICAgICAsIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rp
b25Db250ZXh0KHByb2dyYW1Ob2RlLT51c2VzQXJyb3dGdW5jdGlvbigpIHx8IHByb2dyYW1Ob2Rl
LT51c2VzRXZhbCgpKQogICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKIHsKLSAgICBBU1NFUlRf
VU5VU0VEKHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCAhcGFyZW50U2NvcGVURFpWYXJpYWJsZXMt
PnNpemUoKSk7CisgICAgQVNTRVJUX1VOVVNFRChwYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1l
bnQsICFwYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQtPnNpemUoKSk7CiAKICAgICBtX2Nv
ZGVCbG9jay0+c2V0TnVtUGFyYW1ldGVycygxKTsgLy8gQWxsb2NhdGUgc3BhY2UgZm9yICJ0aGlz
IgogCkBAIC0zMzYsNyArMzM2LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJh
dG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxpbmtlZFAKICAgICB9CiB9
CiAKLUJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9u
Tm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3Qg
VmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIEVDTUFNb2RlIGVj
bWFNb2RlKQorQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVu
Y3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVC
bG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBj
b25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQs
IEVDTUFNb2RlIGVjbWFNb2RlKQogICAgIDogQnl0ZWNvZGVHZW5lcmF0b3JCYXNlKG1ha2VVbmlx
dWU8VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I+KHZtLCBjb2RlQmxvY2spLCBDb2RlQmxvY2s6
OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSkKICAgICAs
IG1fY29kZUdlbmVyYXRpb25Nb2RlKGNvZGVHZW5lcmF0aW9uTW9kZSkKICAgICAsIG1fc2NvcGVO
b2RlKGZ1bmN0aW9uTm9kZSkKQEAgLTM2MCw2ICszNjAsOCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5s
aW5rZQogICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKICAgICAsIG1fZGVyaXZlZENvbnRleHRU
eXBlKGNvZGVCbG9jay0+ZGVyaXZlZENvbnRleHRUeXBlKCkpCiB7CisgICAgcHVzaFByaXZhdGVB
Y2Nlc3NOYW1lcygqcGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50KTsKKwogICAgIFN5bWJv
bFRhYmxlKiBmdW5jdGlvblN5bWJvbFRhYmxlID0gU3ltYm9sVGFibGU6OmNyZWF0ZShtX3ZtKTsK
ICAgICBmdW5jdGlvblN5bWJvbFRhYmxlLT5zZXRVc2VzTm9uU3RyaWN0RXZhbChtX3VzZXNOb25T
dHJpY3RFdmFsKTsKICAgICBpbnQgc3ltYm9sVGFibGVDb25zdGFudEluZGV4ID0gMDsKQEAgLTcw
Niw4ICs3MDgsMTIgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2
bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAgICAgICAgICAgICBj
YXNlIENvbnN0cnVjdG9yS2luZDo6Tm9uZToKICAgICAgICAgICAgICAgICBjYXNlIENvbnN0cnVj
dG9yS2luZDo6QmFzZToKICAgICAgICAgICAgICAgICAgICAgZW1pdENyZWF0ZVRoaXMoJm1fdGhp
c1JlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVByaXZhdGVN
ZXRob2RzKCkgJiYgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSA9PSBQcml2YXRlQnJhbmRSZXF1
aXJlbWVudDo6TmVlZGVkKQorICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEluc3RhbGxQcml2
YXRlQnJhbmQoJm1fdGhpc1JlZ2lzdGVyKTsKKwogICAgICAgICAgICAgICAgICAgICBpZiAoT3B0
aW9uczo6dXNlUHVibGljQ2xhc3NGaWVsZHMoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGVt
aXRJbnN0YW5jZUZpZWxkSW5pdGlhbGl6YXRpb25JZk5lZWRlZCgmbV90aGlzUmVnaXN0ZXIsICZt
X2NhbGxlZVJlZ2lzdGVyLCBtX3Njb3BlTm9kZS0+cG9zaXRpb24oKSwgbV9zY29wZU5vZGUtPnBv
c2l0aW9uKCksIG1fc2NvcGVOb2RlLT5wb3NpdGlvbigpKTsKKwogICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIENvbnN0cnVjdG9yS2luZDo6RXh0ZW5kczoK
ICAgICAgICAgICAgICAgICAgICAgbW92ZUVtcHR5VmFsdWUoJm1fdGhpc1JlZ2lzdGVyKTsKQEAg
LTc3Miw3ICs3NzgsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0m
IHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogCiAgICAgLy8gQWxsICJh
ZGRWYXIoKSJzIG5lZWRzIHRvIGhhcHBlbiBiZWZvcmUgImluaXRpYWxpemVEZWZhdWx0UGFyYW1l
dGVyVmFsdWVzQW5kU2V0dXBGdW5jdGlvblNjb3BlU3RhY2soKSIgaXMgY2FsbGVkCiAgICAgLy8g
YmVjYXVzZSBhIGZ1bmN0aW9uJ3MgZGVmYXVsdCBwYXJhbWV0ZXIgRXhwcmVzc2lvbk5vZGVzIHdp
bGwgdXNlIHRlbXBvcmFyeSByZWdpc3RlcnMuCi0gICAgcHVzaFREWlZhcmlhYmxlcygqcGFyZW50
U2NvcGVURFpWYXJpYWJsZXMsIFREWkNoZWNrT3B0aW1pemF0aW9uOjpEb05vdE9wdGltaXplLCBU
RFpSZXF1aXJlbWVudDo6VW5kZXJURFopOworICAgIHB1c2hURFpWYXJpYWJsZXMoKnBhcmVudFNj
b3BlVmFyaWFibGVFbnZpcm9ubWVudCwgVERaQ2hlY2tPcHRpbWl6YXRpb246OkRvTm90T3B0aW1p
emUsIFREWlJlcXVpcmVtZW50OjpVbmRlclREWik7CiAKICAgICBSZWY8TGFiZWw+IGNhdGNoTGFi
ZWwgPSBuZXdMYWJlbCgpOwogICAgIFRyeURhdGEqIHRyeUZvcm1hbFBhcmFtZXRlcnNEYXRhID0g
bnVsbHB0cjsKQEAgLTg0MCw3ICs4NDYsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVH
ZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAg
IHB1c2hMZXhpY2FsU2NvcGUobV9zY29wZU5vZGUsIFREWkNoZWNrT3B0aW1pemF0aW9uOjpPcHRp
bWl6ZSwgTmVzdGVkU2NvcGVUeXBlOjpJc05vdE5lc3RlZCwgbnVsbHB0ciwgc2hvdWxkSW5pdGlh
bGl6ZUJsb2NrU2NvcGVkRnVuY3Rpb25zKTsKIH0KIAotQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVj
b2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVy
YXRpb25Nb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlh
YmxlcywgRUNNQU1vZGUgZWNtYU1vZGUpCitCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5l
cmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2VkRXZhbENvZGVCbG9jayog
Y29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1v
ZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9u
bWVudCwgRUNNQU1vZGUgZWNtYU1vZGUpCiAgICAgOiBCeXRlY29kZUdlbmVyYXRvckJhc2UobWFr
ZVVuaXF1ZTxVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcj4odm0sIGNvZGVCbG9jayksIENvZGVC
bG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKQog
ICAgICwgbV9jb2RlR2VuZXJhdGlvbk1vZGUoY29kZUdlbmVyYXRpb25Nb2RlKQogICAgICwgbV9z
Y29wZU5vZGUoZXZhbE5vZGUpCkBAIC04NTksNyArODY1LDggQEAgQnl0ZWNvZGVHZW5lcmF0b3I6
OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2YWxOb2RlLCBVbmxpbmtlZEV2
YWxDb2QKIHsKICAgICBtX2NvZGVCbG9jay0+c2V0TnVtUGFyYW1ldGVycygxKTsKIAotICAgIHB1
c2hURFpWYXJpYWJsZXMoKnBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBURFpDaGVja09wdGltaXph
dGlvbjo6RG9Ob3RPcHRpbWl6ZSwgVERaUmVxdWlyZW1lbnQ6OlVuZGVyVERaKTsKKyAgICBwdXNo
UHJpdmF0ZUFjY2Vzc05hbWVzKCpwYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQpOworICAg
IHB1c2hURFpWYXJpYWJsZXMoKnBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCwgVERaQ2hl
Y2tPcHRpbWl6YXRpb246OkRvTm90T3B0aW1pemUsIFREWlJlcXVpcmVtZW50OjpVbmRlclREWik7
CiAKICAgICBlbWl0RW50ZXIoKTsKIApAQCAtOTA0LDcgKzkxMSw3IEBAIEJ5dGVjb2RlR2VuZXJh
dG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEV2YWxOb2RlKiBldmFsTm9kZSwgVW5saW5r
ZWRFdmFsQ29kCiAgICAgcHVzaExleGljYWxTY29wZShtX3Njb3BlTm9kZSwgVERaQ2hlY2tPcHRp
bWl6YXRpb246Ok9wdGltaXplLCBOZXN0ZWRTY29wZVR5cGU6OklzTm90TmVzdGVkLCBudWxscHRy
LCBzaG91bGRJbml0aWFsaXplQmxvY2tTY29wZWRGdW5jdGlvbnMpOwogfQogCi1CeXRlY29kZUdl
bmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBNb2R1bGVQcm9ncmFtTm9kZSogbW9k
dWxlUHJvZ3JhbU5vZGUsIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2Nr
LCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBFQ01BTW9kZSBl
Y21hTW9kZSkKK0J5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIE1v
ZHVsZVByb2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9kZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVH
ZW5lcmF0aW9uTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVWYXJp
YWJsZUVudmlyb25tZW50LCBFQ01BTW9kZSBlY21hTW9kZSkKICAgICA6IEJ5dGVjb2RlR2VuZXJh
dG9yQmFzZShtYWtlVW5pcXVlPFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yPih2bSwgY29kZUJs
b2NrKSwgQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVn
aXN0ZXJzKCkpCiAgICAgLCBtX2NvZGVHZW5lcmF0aW9uTW9kZShjb2RlR2VuZXJhdGlvbk1vZGUp
CiAgICAgLCBtX3Njb3BlTm9kZShtb2R1bGVQcm9ncmFtTm9kZSkKQEAgLTkyMCw3ICs5MjcsNyBA
QCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBNb2R1bGVQcm9n
cmFtTm9kZSogbW9kdWxlUHJvZ3JhbU5vZAogICAgICwgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5j
dGlvbkNvbnRleHQobW9kdWxlUHJvZ3JhbU5vZGUtPnVzZXNBcnJvd0Z1bmN0aW9uKCkgfHwgbW9k
dWxlUHJvZ3JhbU5vZGUtPnVzZXNFdmFsKCkpCiAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQog
ewotICAgIEFTU0VSVF9VTlVTRUQocGFyZW50U2NvcGVURFpWYXJpYWJsZXMsICFwYXJlbnRTY29w
ZVREWlZhcmlhYmxlcy0+c2l6ZSgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHBhcmVudFNjb3BlVmFy
aWFibGVFbnZpcm9ubWVudCwgIXBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudC0+c2l6ZSgp
KTsKIAogICAgIFN5bWJvbFRhYmxlKiBtb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlID0gU3lt
Ym9sVGFibGU6OmNyZWF0ZShtX3ZtKTsKICAgICBtb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxl
LT5zZXRVc2VzTm9uU3RyaWN0RXZhbChtX3VzZXNOb25TdHJpY3RFdmFsKTsKQEAgLTE4OTcsOCAr
MTkwNCwxMCBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjppbnN0YW50aWF0ZUxleGljYWxWYXJp
YWJsZXMoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbAogCiAgICAgICAgICAgICAvLyBGSVhN
RTogb25seSBkbyB0aGlzIGlmIHRoZXJlIGlzIGFuIGV2YWwoKSB3aXRoaW4gYSBuZXN0ZWQgc2Nv
cGUgLS0tIG90aGVyd2lzZSBpdCBpc24ndCBuZWVkZWQuCiAgICAgICAgICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NjYzCi0gICAgICAgICAgICBpZiAo
ZW50cnkudmFsdWUuaXNQcml2YXRlTmFtZSgpKQotICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxl
LT5hZGRQcml2YXRlTmFtZShlbnRyeS5rZXkuZ2V0KCkpOworICAgICAgICAgICAgaWYgKGVudHJ5
LnZhbHVlLmlzUHJpdmF0ZUZpZWxkKCkpCisgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUtPmFk
ZFByaXZhdGVOYW1lKGVudHJ5LmtleS5nZXQoKSwgUHJpdmF0ZU5hbWVFbnRyeShQcml2YXRlTmFt
ZUVudHJ5OjpUcmFpdHM6OklzRGVjbGFyZWQpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGVudHJ5
LnZhbHVlLmlzUHJpdmF0ZU1ldGhvZCgpKQorICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5h
ZGRQcml2YXRlTmFtZShlbnRyeS5rZXkuZ2V0KCksIFByaXZhdGVOYW1lRW50cnkoUHJpdmF0ZU5h
bWVFbnRyeTo6VHJhaXRzOjpJc0RlY2xhcmVkIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJ
c01ldGhvZCkpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBoYXNDYXB0dXJlZFZhcmlh
YmxlczsKQEAgLTI3MTksNyArMjcyOCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdGhpc1ZhCiAgICAg
cmV0dXJuIHZhbHVlOwogfQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERp
cmVjdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJ
RCogcHJvcGVydHkpCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFByaXZh
dGVOYW1lKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJv
cGVydHkpCiB7CiAgICAgT3BHZXRQcml2YXRlTmFtZTo6ZW1pdCh0aGlzLCBkc3QsIGJhc2UsIHBy
b3BlcnR5KTsKICAgICByZXR1cm4gZHN0OwpAQCAtMjc1NSwxMiArMjc2NCw0NSBAQCBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlZmluZVByaXZhdGVGaWVsZChSZWdpc3RlcklE
KiBiYXNlLCBSZWdpc3RlcgogICAgIHJldHVybiB2YWx1ZTsKIH0KIAordm9pZCBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdENyZWF0ZVByaXZhdGVCcmFuZChSZWdpc3RlcklEKiBzY29wZSwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQoreworICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBjcmVhdGVQcml2YXRlU3ltYm9sID0gbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlu
a1RpbWVDb25zdGFudDo6Y3JlYXRlUHJpdmF0ZVN5bWJvbCk7CisKKyAgICBDYWxsQXJndW1lbnRz
IGFyZ3VtZW50cygqdGhpcywgbnVsbHB0ciwgMCk7CisgICAgZW1pdExvYWQoYXJndW1lbnRzLnRo
aXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICBSZWdpc3RlcklEKiBuZXdTeW1ib2wg
PSBlbWl0Q2FsbChmaW5hbERlc3RpbmF0aW9uKG51bGxwdHIsIGNyZWF0ZVByaXZhdGVTeW1ib2wu
Z2V0KCkpLCBjcmVhdGVQcml2YXRlU3ltYm9sLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGFy
Z3VtZW50cywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kLCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8p
OworCisgICAgVmFyaWFibGUgcHJpdmF0ZUJyYW5kVmFyID0gdmFyaWFibGUocHJvcGVydHlOYW1l
cygpLmJ1aWx0aW5OYW1lcygpLnByaXZhdGVCcmFuZFByaXZhdGVOYW1lKCkpOworCisgICAgZW1p
dFB1dFRvU2NvcGUoc2NvcGUsIHByaXZhdGVCcmFuZFZhciwgbmV3U3ltYm9sLCBEb05vdFRocm93
SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpJbml0aWFsaXphdGlvbik7Cit9CisKK3Zv
aWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJbnN0YWxsUHJpdmF0ZUJyYW5kKFJlZ2lzdGVySUQq
IHRhcmdldCkKK3sKKyAgICBWYXJpYWJsZSBwcml2YXRlQnJhbmRWYXIgPSB2YXJpYWJsZShwcm9w
ZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkucHJpdmF0ZUJyYW5kUHJpdmF0ZU5hbWUoKSk7Cisg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVCcmFuZFZhclNjb3BlID0gZW1pdFJlc29sdmVT
Y29wZShudWxscHRyLCBwcml2YXRlQnJhbmRWYXIpOworICAgIFJlZ2lzdGVySUQqIHByaXZhdGVC
cmFuZFN5bWJvbCA9IGVtaXRHZXRQcml2YXRlQnJhbmQobmV3VGVtcG9yYXJ5KCksIHByaXZhdGVC
cmFuZFZhclNjb3BlLmdldCgpKTsKKyAgICBlbWl0RGVmaW5lUHJpdmF0ZUZpZWxkKHRhcmdldCwg
cHJpdmF0ZUJyYW5kU3ltYm9sLCBwcml2YXRlQnJhbmRTeW1ib2wpOworfQorCitSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFByaXZhdGVCcmFuZChSZWdpc3RlcklEKiBkc3Qs
IFJlZ2lzdGVySUQqIHNjb3BlKQoreworICAgIFZhcmlhYmxlIHByaXZhdGVCcmFuZFZhciA9IHZh
cmlhYmxlKHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5wcml2YXRlQnJhbmRQcml2YXRl
TmFtZSgpKTsKKyAgICByZXR1cm4gZW1pdEdldEZyb21TY29wZShkc3QsIHNjb3BlLCBwcml2YXRl
QnJhbmRWYXIsIFRocm93SWZOb3RGb3VuZCk7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0UHJpdmF0ZUZpZWxkUHV0KFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQq
IHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKICAgICBPcFB1dFByaXZhdGVOYW1lOjpl
bWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHJpdmF0ZUZpZWxkUHV0S2luZDo6c2V0
KCkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIAordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dENoZWNrUHJpdmF0ZUJyYW5kKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIGJyYW5kU3lt
Ym9sKQoreworICAgIC8vIFRoaXMgaXMgZ29pbmcgdG8gdHJob3cgVHlwZUVycm9yIGlmIGJyYW5k
IGlzIG5vdCBwcmVzZW50CisgICAgZW1pdEdldFByaXZhdGVOYW1lKG5ld1RlbXBvcmFyeSgpLCBi
YXNlLCBicmFuZFN5bWJvbCk7Cit9CisKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTdXBl
clNhbXBsZXJCZWdpbigpCiB7CiAgICAgT3BTdXBlclNhbXBsZXJCZWdpbjo6ZW1pdCh0aGlzKTsK
QEAgLTI4ODksNiArMjkzMSwzOCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpsaWZ0VERaQ2hl
Y2tJZlBvc3NpYmxlKGNvbnN0IFZhcmlhYmxlJiB2YXJpYWJsZSkKICAgICB9CiB9CiAKK2Jvb2wg
Qnl0ZWNvZGVHZW5lcmF0b3I6OmlzUHJpdmF0ZU1ldGhvZChjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3ByaXZhdGVOYW1lc1N0YWNrLnNpemUoKTsg
aS0tOyApIHsKKyAgICAgICAgYXV0byYgbWFwID0gbV9wcml2YXRlTmFtZXNTdGFja1tpXTsKKyAg
ICAgICAgYXV0byBpdCA9IG1hcC5maW5kKGlkZW50LmltcGwoKSk7CisgICAgICAgIGlmIChpdCAh
PSBtYXAuZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gaXQtPnZhbHVlLmlzTWV0aG9kKCk7Cisg
ICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpw
dXNoUHJpdmF0ZUFjY2Vzc05hbWVzKGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGVudmlyb25t
ZW50KQoreworICAgIGlmICghZW52aXJvbm1lbnQucHJpdmF0ZU5hbWVzU2l6ZSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBWYXJpYWJsZUVudmlyb25tZW50OjpQcml2YXRlTmFtZXMgcHJpdmF0
ZU5hbWVzTWFwOworICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiBlbnZpcm9ubWVudC5wcml2
YXRlTmFtZXMoKSkKKyAgICAgICAgcHJpdmF0ZU5hbWVzTWFwLmFkZChlbnRyeS5rZXksIGVudHJ5
LnZhbHVlKTsKKworICAgIG1fcHJpdmF0ZU5hbWVzU3RhY2suYXBwZW5kKFdURk1vdmUocHJpdmF0
ZU5hbWVzTWFwKSk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnBvcFByaXZhdGVBY2Nl
c3NOYW1lcygpCit7CisgICAgaWYgKCFtX3ByaXZhdGVOYW1lc1N0YWNrLnNpemUoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9wcml2YXRlTmFtZXNTdGFjay5yZW1vdmVMYXN0KCk7Cit9CisK
IHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnB1c2hURFpWYXJpYWJsZXMoY29uc3QgVmFyaWFibGVF
bnZpcm9ubWVudCYgZW52aXJvbm1lbnQsIFREWkNoZWNrT3B0aW1pemF0aW9uIG9wdGltaXphdGlv
biwgVERaUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQpCiB7CiAgICAgaWYgKCFlbnZpcm9ubWVudC5z
aXplKCkpCkBAIC0yOTExLDYgKzI5ODUsMjQgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cHVz
aFREWlZhcmlhYmxlcyhjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBlbnZpcm9ubWVudCwKICAg
ICBtX2NhY2hlZFZhcmlhYmxlc1VuZGVyVERaID0geyB9OwogfQogCit2b2lkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpnZXRBdmFpbGFibGVQcml2YXRlQWNjZXNzTmFtZXMoVmFyaWFibGVFbnZpcm9ubWVu
dCYgcmVzdWx0KQoreworICAgIFNtYWxsUHRyU2V0PFVuaXF1ZWRTdHJpbmdJbXBsKiwgMTY+IGV4
Y2x1ZGVkTmFtZXM7CisgICAgZm9yICh1bnNpZ25lZCBpID0gbV9wcml2YXRlTmFtZXNTdGFjay5z
aXplKCk7IGktLTsgKSB7CisgICAgICAgIGF1dG8mIG1hcCA9IG1fcHJpdmF0ZU5hbWVzU3RhY2tb
aV07CisgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBtYXApICB7CisgICAgICAgICAgICBpZiAo
ZW50cnkudmFsdWUuaXNQcml2YXRlQWNjZXNzKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWV4
Y2x1ZGVkTmFtZXMuY29udGFpbnMoZW50cnkua2V5LmdldCgpKSkgeworICAgICAgICAgICAgICAg
ICAgICBhdXRvIGFkZFJlc3VsdCA9IHJlc3VsdC5hZGRQcml2YXRlTmFtZShlbnRyeS5rZXkpOwor
ICAgICAgICAgICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gZW50cnkudmFs
dWU7CisgICAgICAgICAgICAgICAgICAgIGV4Y2x1ZGVkTmFtZXMuYWRkKGVudHJ5LmtleS5nZXQo
KSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAg
ICAgZXhjbHVkZWROYW1lcy5hZGQoZW50cnkua2V5LmdldCgpKTsKKyAgICAgICAgfQorICAgIH0K
K30KKwogT3B0aW9uYWw8Q29tcGFjdFZhcmlhYmxlTWFwOjpIYW5kbGU+IEJ5dGVjb2RlR2VuZXJh
dG9yOjpnZXRWYXJpYWJsZXNVbmRlclREWigpCiB7CiAgICAgaWYgKG1fY2FjaGVkVmFyaWFibGVz
VW5kZXJURFopIHsKQEAgLTI5NDQsNiArMzAzNiw4IEBAIE9wdGlvbmFsPENvbXBhY3RWYXJpYWJs
ZU1hcDo6SGFuZGxlPiBCeXRlY29kZUdlbmVyYXRvcjo6Z2V0VmFyaWFibGVzVW5kZXJURFooKQog
ICAgICAgICB9CiAgICAgfQogCisgICAgZ2V0QXZhaWxhYmxlUHJpdmF0ZUFjY2Vzc05hbWVzKGVu
dmlyb25tZW50KTsKKwogICAgIG1fY2FjaGVkVmFyaWFibGVzVW5kZXJURFogPSBtX3ZtLm1fY29t
cGFjdFZhcmlhYmxlTWFwLT5nZXQoZW52aXJvbm1lbnQpOwogICAgIG1faGFzQ2FjaGVkVmFyaWFi
bGVzVW5kZXJURFogPSAhZW52aXJvbm1lbnQuaXNFbXB0eSgpOwogICAgIGlmICghbV9oYXNDYWNo
ZWRWYXJpYWJsZXNVbmRlclREWikKQEAgLTMxMjIsOSArMzIxNiw5IEBAIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3TWV0aG9kRGVmaW5pdGlvbihSZWdpc3RlcklEKiBkc3Qs
IE1ldGhvZERlCiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RGVm
YXVsdENvbnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVj
dG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwKLSAgICBjb25zdCBJZGVudGlmaWVyJiBl
Y21hTmFtZSwgY29uc3QgU291cmNlQ29kZSYgY2xhc3NTb3VyY2UsIE5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKQorICAgIGNvbnN0IElkZW50aWZp
ZXImIGVjbWFOYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBjbGFzc1NvdXJjZSwgTmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJl
cXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KQogewotICAgIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbV92bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y3Jl
YXRlRGVmYXVsdENvbnN0cnVjdG9yKGNvbnN0cnVjdG9yS2luZCwgbmFtZSwgbmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRh
YmxlID0gbV92bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9y
KGNvbnN0cnVjdG9yS2luZCwgbmFtZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZh
dGVCcmFuZFJlcXVpcmVtZW50KTsKICAgICBleGVjdXRhYmxlLT5zZXRJbnZhbGlkVHlwZVByb2Zp
bGluZ09mZnNldHMoKTsKICAgICBleGVjdXRhYmxlLT5zZXRFY21hTmFtZShlY21hTmFtZSk7CiAg
ICAgZXhlY3V0YWJsZS0+c2V0Q2xhc3NTb3VyY2UoY2xhc3NTb3VyY2UpOwpAQCAtMzE1NCw3ICsz
MjQ4LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdJbnN0YW5jZUZp
ZWxkSW5pdGlhbGl6ZXJGdW5jdGlvbihSZWdpc3RlckkKICAgICBjb25zdCBib29sIGFsd2F5c1N0
cmljdEluQ2xhc3MgPSB0cnVlOwogICAgIEZ1bmN0aW9uTWV0YWRhdGFOb2RlIG1ldGFkYXRhKHBh
cnNlckFyZW5hKCksIEpTVG9rZW5Mb2NhdGlvbigpLCBKU1Rva2VuTG9jYXRpb24oKSwgMCwgMCwg
MCwgMCwgMCwgYWx3YXlzU3RyaWN0SW5DbGFzcywgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBzdXBl
ckJpbmRpbmcsIDAsIHBhcnNlTW9kZSwgZmFsc2UpOwogICAgIG1ldGFkYXRhLmZpbmlzaFBhcnNp
bmcobV9zY29wZU5vZGUtPnNvdXJjZSgpLCBJZGVudGlmaWVyKCksIEZ1bmN0aW9uTW9kZTo6TWV0
aG9kRGVmaW5pdGlvbik7Ci0gICAgYXV0byBpbml0aWFsaXplciA9IFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgpLCAmbWV0YWRhdGEs
IGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2Vk
Tm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIHNjcmlwdE1vZGUoKSwgV1RGTW92ZSh2
YXJpYWJsZXNVbmRlclREWiksIG5ld0Rlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXI6Ok5vKTsKKyAgICBhdXRvIGluaXRpYWxpemVyID0gVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksICZtZXRhZGF0
YSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5r
ZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwgc2NyaXB0TW9kZSgpLCBXVEZNb3Zl
KHZhcmlhYmxlc1VuZGVyVERaKSwgbmV3RGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplcjo6Tm8sIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lKTsKICAgICBp
bml0aWFsaXplci0+c2V0SW5zdGFuY2VGaWVsZExvY2F0aW9ucyhXVEZNb3ZlKGluc3RhbmNlRmll
bGRMb2NhdGlvbnMpKTsKIAogICAgIHVuc2lnbmVkIGluZGV4ID0gbV9jb2RlQmxvY2stPmFkZEZ1
bmN0aW9uRXhwcihpbml0aWFsaXplcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggZDI4MjUzNGE5NmE4NDE1
OWMxMjljNWMxNGUzYTc4Yzc0MDA0YjlmZi4uODY0ZDIzMTI0ZjkwYjQxMmQ4OGJhMjFmN2RhMmEz
YTJlMmVmY2NmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNDI1LDYgKzQyNSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBib29sIG5lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dCgpIGNv
bnN0IHsgcmV0dXJuIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0OyB9CiAgICAg
ICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlTm9kZS0+dXNlc0V2YWwo
KTsgfQogICAgICAgICBib29sIHVzZXNUaGlzKCkgY29uc3QgeyByZXR1cm4gbV9zY29wZU5vZGUt
PnVzZXNUaGlzKCk7IH0KKyAgICAgICAgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+cHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQoKTsgfQogICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5k
KCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmNvbnN0cnVjdG9yS2luZCgpOyB9CiAgICAg
ICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9j
ay0+c3VwZXJCaW5kaW5nKCk7IH0KICAgICAgICAgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1v
ZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+c2NyaXB0TW9kZSgpOyB9CkBAIC03NzQs
NyArNzc1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5l
d0Z1bmN0aW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqKTsKICAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiBkc3Qs
IEZ1bmNFeHByTm9kZSopOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3RGVmYXVsdENvbnN0
cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVy
JiBuYW1lLCBjb25zdCBJZGVudGlmaWVyJiBlY21hTmFtZSwgY29uc3QgU291cmNlQ29kZSYgY2xh
c3NTb3VyY2UsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsKKyAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3RvcihSZWdpc3RlcklEKiBkc3QsIENvbnN0cnVjdG9y
S2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3QgSWRlbnRpZmllciYgZWNtYU5hbWUs
IGNvbnN0IFNvdXJjZUNvZGUmIGNsYXNzU291cmNlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
ciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3
SW5zdGFuY2VGaWVsZEluaXRpYWxpemVyRnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBWZWN0b3I8
SlNUZXh0UG9zaXRpb24+JiYgaW5zdGFuY2VGaWVsZExvY2F0aW9ucywgYm9vbCBpc0Rlcml2ZWQp
OwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oUmVn
aXN0ZXJJRCosIEFycm93RnVuY0V4cHJOb2RlKik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRO
ZXdNZXRob2REZWZpbml0aW9uKFJlZ2lzdGVySUQqIGRzdCwgTWV0aG9kRGVmaW5pdGlvbk5vZGUq
KTsKQEAgLTgxNSw3ICs4MTYsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdERpcmVjdFNldFByb3RvdHlwZU9mKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQq
IHByb3RvdHlwZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRCeVZhbChSZWdpc3RlcklE
KiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCog
dGhpc1ZhbHVlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwotICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0RGlyZWN0R2V0QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSk7CiAgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXREaXJlY3RQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0
eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGVsZXRlQnlW
YWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0
eSk7CiAKQEAgLTgyMyw2ICs4MjMsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRQdXRJbnRlcm5hbEZpZWxkKFJlZ2lzdGVySUQqIGJhc2UsIHVuc2lnbmVkIGlu
ZGV4LCBSZWdpc3RlcklEKiB2YWx1ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREZWZpbmVQ
cml2YXRlRmllbGQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lz
dGVySUQqIHZhbHVlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFByaXZhdGVGaWVsZFB1dChS
ZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUp
OworICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0UHJpdmF0ZU5hbWUoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSk7CisKKyAgICAgICAgdm9p
ZCBlbWl0Q3JlYXRlUHJpdmF0ZUJyYW5kKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKKyAgICAgICAgdm9pZCBlbWl0SW5zdGFsbFByaXZhdGVC
cmFuZChSZWdpc3RlcklEKiB0YXJnZXQpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0UHJp
dmF0ZUJyYW5kKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc2NvcGUpOworICAgICAgICB2
b2lkIGVtaXRDaGVja1ByaXZhdGVCcmFuZChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBi
cmFuZCk7CiAKICAgICAgICAgdm9pZCBlbWl0U3VwZXJTYW1wbGVyQmVnaW4oKTsKICAgICAgICAg
dm9pZCBlbWl0U3VwZXJTYW1wbGVyRW5kKCk7CkBAIC0xMTc2LDEwICsxMTgyLDEyIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAgICAgRGVyaXZlZENvbnRleHRUeXBlIG5ld0Rlcml2ZWRDb250
ZXh0VHlwZSA9IERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZTsKIAogICAgICAgICAgICAgTmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSBtZXRhZGF0
YS0+aXNDb25zdHJ1Y3RvckFuZE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkgPyBOZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplcjo6WWVzIDogTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5v
OworICAgICAgICAgICAgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWly
ZW1lbnQgPSBtZXRhZGF0YS0+cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKTsKICAgICAgICAgICAg
IGlmIChTb3VyY2VQYXJzZU1vZGVTZXQoU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9k
ZSwgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlLCBTb3VyY2VQYXJzZU1v
ZGU6OkFzeW5jQXJyb3dGdW5jdGlvbkJvZHlNb2RlKS5jb250YWlucyhtZXRhZGF0YS0+cGFyc2VN
b2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0
cnVjdG9yS2luZDo6RXh0ZW5kcyB8fCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSkgewog
ICAgICAgICAgICAgICAgICAgICBuZXdEZXJpdmVkQ29udGV4dFR5cGUgPSBEZXJpdmVkQ29udGV4
dFR5cGU6OkRlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQ7CiAgICAgICAgICAgICAgICAgICAgIG5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyID0gbV9jb2RlQmxvY2stPm5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyKCk7CisgICAgICAgICAgICAgICAgICAgIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50
ID0gbV9jb2RlQmxvY2stPnByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCk7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1fY29kZUJsb2NrLT5pc0NsYXNzQ29udGV4
dCgpIHx8IGlzRGVyaXZlZENsYXNzQ29udGV4dCgpKQogICAgICAgICAgICAgICAgICAgICBuZXdE
ZXJpdmVkQ29udGV4dFR5cGUgPSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRNZXRob2RDb250
ZXh0OwpAQCAtMTE5NCwxMCArMTIwMiwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlICYmIG1ldGFkYXRh
LT5jb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpCiAgICAgICAgICAg
ICAgICAgY29uc3RydWN0QWJpbGl0eSA9IENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdDsK
IAotICAgICAgICAgICAgcmV0dXJuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUo
bV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgpLCBtZXRhZGF0YSwgaXNCdWlsdGluRnVuY3Rpb24o
KSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29u
c3RydWN0QWJpbGl0eSwgc2NyaXB0TW9kZSgpLCBXVEZNb3ZlKG9wdGlvbmFsVmFyaWFibGVzVW5k
ZXJURFopLCBuZXdEZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
KTsKKyAgICAgICAgICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRl
KG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgbWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0aW9u
KCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNv
bnN0cnVjdEFiaWxpdHksIHNjcmlwdE1vZGUoKSwgV1RGTW92ZShvcHRpb25hbFZhcmlhYmxlc1Vu
ZGVyVERaKSwgbmV3RGVyaXZlZENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
ciwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOwogICAgICAgICB9CiAKICAgICAgICAgT3B0aW9u
YWw8Q29tcGFjdFZhcmlhYmxlTWFwOjpIYW5kbGU+IGdldFZhcmlhYmxlc1VuZGVyVERaKCk7Cisg
ICAgICAgIHZvaWQgZ2V0QXZhaWxhYmxlUHJpdmF0ZUFjY2Vzc05hbWVzKFZhcmlhYmxlRW52aXJv
bm1lbnQmKTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q29uc3RydWN0VmFyYXJncyhSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIFJlZ2lzdGVySUQqIHRoaXNSZWdpc3Rlciwg
UmVnaXN0ZXJJRCogYXJndW1lbnRzLCBSZWdpc3RlcklEKiBmaXJzdEZyZWVSZWdpc3RlciwgaW50
MzJfdCBmaXJzdFZhckFyZ09mZnNldCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
RW5kLCBEZWJ1Z2dhYmxlQ2FsbCk7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxPcD4K
QEAgLTEyNTEsNiArMTI2MCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIG1fbGFz
dEluc3RydWN0aW9uID0gcHJldkxhc3RJbnN0cnVjdGlvbjsKICAgICAgICAgfQogCisgICAgICAg
IGJvb2wgaXNQcml2YXRlTWV0aG9kKGNvbnN0IElkZW50aWZpZXImKTsKKworICAgICAgICB2b2lk
IHB1c2hQcml2YXRlQWNjZXNzTmFtZXMoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYpOworICAg
ICAgICB2b2lkIHBvcFByaXZhdGVBY2Nlc3NOYW1lcygpOworCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gbV9jb2RlR2VuZXJhdGlvbk1vZGU7CiAK
QEAgLTEyNjMsNiArMTI3Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBWZWN0b3I8TGV4
aWNhbFNjb3BlU3RhY2tFbnRyeT4gbV9sZXhpY2FsU2NvcGVTdGFjazsKIAogICAgICAgICBWZWN0
b3I8VERaTWFwPiBtX1REWlN0YWNrOworICAgICAgICBWZWN0b3I8VmFyaWFibGVFbnZpcm9ubWVu
dDo6UHJpdmF0ZU5hbWVzPiBtX3ByaXZhdGVOYW1lc1N0YWNrOwogICAgICAgICBPcHRpb25hbDxz
aXplX3Q+IG1fdmFyU2NvcGVMZXhpY2FsU2NvcGVTdGFja0luZGV4OwogICAgICAgICB2b2lkIHB1
c2hURFpWYXJpYWJsZXMoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYsIFREWkNoZWNrT3B0aW1p
emF0aW9uLCBURFpSZXF1aXJlbWVudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA1YWQ4NDk4MDg2NGJiZjI2OWNj
OWRhMzRkYmIxNzk3MTAxNzZmZTJmLi5iNGRlNTJkNTZkNzBjZDBhNjFiY2NhOWRhMTFhZDU3M2Q1
MTBkYWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwCkBAIC01NjMsNyArNTYzLDcgQEAgdm9pZCBQcm9wZXJ0eUxpc3ROb2Rl
OjplbWl0RGVjbGFyZVByaXZhdGVGaWVsZE5hbWVzKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY3JlYXRlUHJpdmF0ZVN5bWJvbDsKICAgICBmb3Ig
KFByb3BlcnR5TGlzdE5vZGUqIHAgPSB0aGlzOyBwOyBwID0gcC0+bV9uZXh0KSB7CiAgICAgICAg
IGNvbnN0IFByb3BlcnR5Tm9kZSYgbm9kZSA9ICpwLT5tX25vZGU7Ci0gICAgICAgIGlmIChub2Rl
LnR5cGUoKSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0ZSkgeworICAgICAgICBpZiAobm9kZS50eXBl
KCkgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGVGaWVsZCkgewogICAgICAgICAgICAgaWYgKCFjcmVh
dGVQcml2YXRlU3ltYm9sKQogICAgICAgICAgICAgICAgIGNyZWF0ZVByaXZhdGVTeW1ib2wgPSBn
ZW5lcmF0b3IubW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6
Y3JlYXRlUHJpdmF0ZVN5bWJvbCk7CiAKQEAgLTU4OSw3ICs1ODksNyBAQCBSZWdpc3RlcklEKiBQ
cm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZQogICAgICAgICBpZiAocC0+aXNDb21wdXRlZENsYXNzRmllbGQoKSkKICAgICAg
ICAgICAgIGVtaXRTYXZlQ29tcHV0ZWRGaWVsZE5hbWUoZ2VuZXJhdG9yLCAqcC0+bV9ub2RlKTsK
IAotICAgICAgICBpZiAocC0+aXNJbnN0YW5jZUNsYXNzRmllbGQoKSkgeworICAgICAgICBpZiAo
cC0+aXNJbnN0YW5jZUNsYXNzRmllbGQoKSAmJiAhKHAtPm1fbm9kZS0+dHlwZSgpICYgUHJvcGVy
dHlOb2RlOjpQcml2YXRlTWV0aG9kKSkgewogICAgICAgICAgICAgQVNTRVJUKGluc3RhbmNlRmll
bGRMb2NhdGlvbnMpOwogICAgICAgICAgICAgaW5zdGFuY2VGaWVsZExvY2F0aW9ucy0+YXBwZW5k
KHAtPnBvc2l0aW9uKCkpOwogICAgICAgICAgICAgY29udGludWU7CkBAIC03NDUsNyArNzQ1LDcg
QEAgUmVnaXN0ZXJJRCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGUKIHZvaWQgUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1
dENvbnN0YW50UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogbmV3T2JqLCBQcm9wZXJ0eU5vZGUmIG5vZGUpCiB7CiAgICAgLy8gUHJpdmF0ZSBmaWVsZHMg
YXJlIGhhbmRsZWQgaW4gdGhlIHN5bnRoZXRpYyBpbnN0YW5jZUZpZWxkSW5pdGlhbGl6ZXIgZnVu
Y3Rpb24sIG5vdCBoZXJlLgotICAgIEFTU0VSVCghKG5vZGUudHlwZSgpICYgUHJvcGVydHlOb2Rl
OjpQcml2YXRlKSk7CisgICAgQVNTRVJUKCEobm9kZS50eXBlKCkgJiBQcm9wZXJ0eU5vZGU6OlBy
aXZhdGVGaWVsZCkpOwogCiAgICAgaWYgKFByb3BlcnR5Tm9kZTo6aXNVbmRlcnNjb3JlUHJvdG9T
ZXR0ZXIoZ2VuZXJhdG9yLnZtKCksIG5vZGUpKSB7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBwcm90b3R5cGUgPSBnZW5lcmF0b3IuZW1pdE5vZGUobm9kZS5tX2Fzc2lnbik7CkBAIC03NzAs
NiArNzcwLDE0IEBAIHZvaWQgUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVy
dHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnCiAKICAgICBpZiAobm9kZS5pc0Ns
YXNzUHJvcGVydHkoKSkgewogICAgICAgICBBU1NFUlQobm9kZS5uZWVkc1N1cGVyQmluZGluZygp
KTsKKworICAgICAgICBpZiAobm9kZS50eXBlKCkgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGVNZXRo
b2QpIHsKKyAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZSgqbm9k
ZS5uYW1lKCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKGdlbmVyYXRv
ci5zY29wZVJlZ2lzdGVyKCksIHZhciwgdmFsdWUuZ2V0KCksIERvTm90VGhyb3dJZk5vdEZvdW5k
LCBJbml0aWFsaXphdGlvbk1vZGU6OkNvbnN0SW5pdGlhbGl6YXRpb24pOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BlcnR5
TmFtZVJlZ2lzdGVyOwogICAgICAgICBpZiAobm9kZS5uYW1lKCkpCiAgICAgICAgICAgICBwcm9w
ZXJ0eU5hbWUgPSBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwgKm5vZGUubmFtZSgpKTsKIApA
QCAtODkyLDEzICs5MDAsMjMgQEAgUmVnaXN0ZXJJRCogRG90QWNjZXNzb3JOb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXIKIFJlZ2lzdGVySUQq
IEJhc2VEb3ROb2RlOjplbWl0R2V0UHJvcGVydHlWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZlB0cjxSZWdpc3Rl
cklEPiYgdGhpc1ZhbHVlKQogewogICAgIGlmIChpc1ByaXZhdGVGaWVsZCgpKSB7CisgICAgICAg
IGlmIChnZW5lcmF0b3IuaXNQcml2YXRlTWV0aG9kKGlkZW50aWZpZXIoKSkpIHsKKyAgICAgICAg
ICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudGlmaWVyKCkpOworICAg
ICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZl
U2NvcGUobnVsbHB0ciwgdmFyKTsKKworICAgICAgICAgICAgUmVnaXN0ZXJJRCogcHJpdmF0ZUJy
YW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpLCBzY29wZS5nZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENoZWNr
UHJpdmF0ZUJyYW5kKGJhc2UsIHByaXZhdGVCcmFuZFN5bWJvbCk7CisKKyAgICAgICAgICAgIHJl
dHVybiBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShkc3QsIHNjb3BlLmdldCgpLCB2YXIsIFRo
cm93SWZOb3RGb3VuZCk7CisgICAgICAgIH0KKwogICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5l
cmF0b3IudmFyaWFibGUobV9pZGVudCk7CiAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXZh
ci5sb2NhbCgpLCAiUHJpdmF0ZSBGaWVsZCBuYW1lcyBtdXN0IGJlIHN0b3JlZCBpbiBjYXB0dXJl
ZCB2YXJpYWJsZXMiKTsKIAogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5l
cmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwogICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgICAg
IGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHByaXZhdGVOYW1lLmdldCgpLCBzY29wZS5nZXQo
KSwgdmFyLCBEb05vdFRocm93SWZOb3RGb3VuZCk7Ci0gICAgICAgIHJldHVybiBnZW5lcmF0b3Iu
ZW1pdERpcmVjdEdldEJ5VmFsKGRzdCwgYmFzZSwgcHJpdmF0ZU5hbWUuZ2V0KCkpOworICAgICAg
ICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlTmFtZShkc3QsIGJhc2UsIHByaXZhdGVO
YW1lLmdldCgpKTsKICAgICB9CiAKICAgICBpZiAobV9iYXNlLT5pc1N1cGVyTm9kZSgpKSB7CkBA
IC05MTksNiArOTM3LDE3IEBAIFJlZ2lzdGVySUQqIEJhc2VEb3ROb2RlOjplbWl0R2V0UHJvcGVy
dHlWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpCiBSZWdpc3RlcklEKiBC
YXNlRG90Tm9kZTo6ZW1pdFB1dFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZWZQdHI8UmVnaXN0ZXJJRD4m
IHRoaXNWYWx1ZSkKIHsKICAgICBpZiAoaXNQcml2YXRlRmllbGQoKSkgeworICAgICAgICBhdXRv
IGlkZW50aWZpZXJOYW1lID0gaWRlbnRpZmllcigpOworICAgICAgICBpZiAoZ2VuZXJhdG9yLmlz
UHJpdmF0ZU1ldGhvZChpZGVudGlmaWVyTmFtZSkpIHsKKyAgICAgICAgICAgIFZhcmlhYmxlIHZh
ciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudGlmaWVyTmFtZSk7CisgICAgICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRy
LCB2YXIpOworCisgICAgICAgICAgICBSZWdpc3RlcklEKiBwcml2YXRlQnJhbmRTeW1ib2wgPSBn
ZW5lcmF0b3IuZW1pdEdldFByaXZhdGVCcmFuZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNj
b3BlLmdldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2hlY2tQcml2YXRlQnJhbmQo
YmFzZSwgcHJpdmF0ZUJyYW5kU3ltYm9sKTsKKworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRU
aHJvd1R5cGVFcnJvcigiVHJ5aW5nIHRvIGFjY2VzcyBhIG5vdCBkZWZpbmVkIHByaXZhdGUgc2V0
dGVyIik7CisgICAgICAgIH0KKwogICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFy
aWFibGUobV9pZGVudCk7CiAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXZhci5sb2NhbCgp
LCAiUHJpdmF0ZSBGaWVsZCBuYW1lcyBtdXN0IGJlIHN0b3JlZCBpbiBjYXB0dXJlZCB2YXJpYWJs
ZXMiKTsKIApAQCAtMTA3MiwxMiArMTEwMSwxNCBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxW
YWx1ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZQog
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUaGlzVG9BcnJvd0Z1bmN0aW9uQ29udGV4dFNj
b3BlKCk7CiAKICAgICAgICAgLy8gSW5pdGlhbGl6ZSBpbnN0YW5jZSBmaWVsZHMgYWZ0ZXIgc3Vw
ZXItY2FsbC4KKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVByaXZhdGVNZXRob2RzKCkgJiYgZ2Vu
ZXJhdG9yLnByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkgPT0gUHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQ6Ok5lZWRlZCkKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SW5zdGFsbFByaXZhdGVCcmFu
ZChnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkpOworCiAgICAgICAgIGlmIChPcHRpb25zOjp1c2VQ
dWJsaWNDbGFzc0ZpZWxkcygpICYmIGdlbmVyYXRvci5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
cigpID09IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpZZXMpIHsKICAgICAgICAgICAgIEFT
U0VSVChnZW5lcmF0b3IuaXNDb25zdHJ1Y3RvcigpIHx8IGdlbmVyYXRvci5pc0Rlcml2ZWRDb25z
dHJ1Y3RvckNvbnRleHQoKSk7CiAgICAgICAgICAgICBmdW5jID0gZ2VuZXJhdG9yLmVtaXRMb2Fk
RGVyaXZlZENvbnN0cnVjdG9yKCk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEluc3RhbmNl
RmllbGRJbml0aWFsaXphdGlvbklmTmVlZGVkKGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSwgZnVu
Yy5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgfQot
CiAgICAgICAgIHJldHVybiByZXQ7CiAgICAgfQogCkBAIC0yMjQ5LDcgKzIyODAsNyBAQCBSZWdp
c3RlcklEKiBQb3N0Zml4Tm9kZTo6ZW1pdERvdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QpCiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFt
ZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRG
cm9tU2NvcGUocHJpdmF0ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJ
Zk5vdEZvdW5kKTsKIAotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0
b3IuZW1pdERpcmVjdEdldEJ5VmFsKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgYmFzZS5nZXQo
KSwgcHJpdmF0ZU5hbWUuZ2V0KCkpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUg
PSBnZW5lcmF0b3IuZW1pdEdldFByaXZhdGVOYW1lKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwg
YmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCkpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gb2xkVmFsdWUgPSBlbWl0UG9zdEluY09yRGVjKGdlbmVyYXRvciwgZ2VuZXJhdG9yLnRlbXBE
ZXN0aW5hdGlvbihkc3QpLCB2YWx1ZS5nZXQoKSwgbV9vcGVyYXRvcik7CiAgICAgICAgIGdlbmVy
YXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgp
KTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcml2YXRlRmllbGRQdXQoYmFzZS5nZXQoKSwgcHJp
dmF0ZU5hbWUuZ2V0KCksIHZhbHVlLmdldCgpKTsKQEAgLTI0ODgsNyArMjUxOSw3IEBAIFJlZ2lz
dGVySUQqIFByZWZpeE5vZGU6OmVtaXREb3QoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0KQogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZU5hbWUg
PSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJv
bVNjb3BlKHByaXZhdGVOYW1lLmdldCgpLCBzY29wZS5nZXQoKSwgdmFyLCBEb05vdFRocm93SWZO
b3RGb3VuZCk7CiAKLSAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuZW1pdERpcmVjdEdldEJ5VmFs
KHByb3BEc3QuZ2V0KCksIGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpKTsKKyAgICAgICAg
dmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldFByaXZhdGVOYW1lKHByb3BEc3QuZ2V0KCksIGJhc2Uu
Z2V0KCksIHByaXZhdGVOYW1lLmdldCgpKTsKICAgICAgICAgZW1pdEluY09yRGVjKGdlbmVyYXRv
ciwgdmFsdWUsIG1fb3BlcmF0b3IpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25J
bmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIGdlbmVyYXRv
ci5lbWl0UHJpdmF0ZUZpZWxkUHV0KGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpLCB2YWx1
ZSk7CkBAIC00ODgxLDYgKzQ5MTIsMTMgQEAgUmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKICAgICBp
ZiAobV9uZWVkc0xleGljYWxTY29wZSkKICAgICAgICAgZ2VuZXJhdG9yLnB1c2hMZXhpY2FsU2Nv
cGUodGhpcywgQnl0ZWNvZGVHZW5lcmF0b3I6OlREWkNoZWNrT3B0aW1pemF0aW9uOjpPcHRpbWl6
ZSwgQnl0ZWNvZGVHZW5lcmF0b3I6Ok5lc3RlZFNjb3BlVHlwZTo6SXNOZXN0ZWQpOwogCisgICAg
Ym9vbCBoYXNQcml2YXRlTmFtZXMgPSAhIW1fbGV4aWNhbFZhcmlhYmxlcy5wcml2YXRlTmFtZXNT
aXplKCk7CisgICAgYm9vbCBzaG91bGRFbWl0UHJpdmF0ZUJyYW5kID0gbV9sZXhpY2FsVmFyaWFi
bGVzLmhhc1ByaXZhdGVBY2Nlc3MoKTsKKyAgICBpZiAoaGFzUHJpdmF0ZU5hbWVzKQorICAgICAg
ICBnZW5lcmF0b3IucHVzaFByaXZhdGVBY2Nlc3NOYW1lcyhtX2xleGljYWxWYXJpYWJsZXMpOwor
ICAgIGlmIChzaG91bGRFbWl0UHJpdmF0ZUJyYW5kKQorICAgICAgICBnZW5lcmF0b3IuZW1pdENy
ZWF0ZVByaXZhdGVCcmFuZChnZW5lcmF0b3Iuc2NvcGVSZWdpc3RlcigpLCBtX3Bvc2l0aW9uLCBt
X3Bvc2l0aW9uLCBtX3Bvc2l0aW9uKTsKKwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzdXBlcmNs
YXNzOwogICAgIGlmIChtX2NsYXNzSGVyaXRhZ2UpIHsKICAgICAgICAgc3VwZXJjbGFzcyA9IGdl
bmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKQEAgLTQ4OTEsMTcgKzQ5MjksMTggQEAgUmVnaXN0ZXJJ
RCogQ2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQKICAgICBib29sIG5lZWRzSG9tZU9iamVjdCA9IGZhbHNlOwogCiAgICAg
YXV0byBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9IHRoaXMtPmhhc0luc3RhbmNlRmllbGRz
KCkgPyBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6WWVzIDogTmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXI6Ok5vOwotCisgICAgYXV0byBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9IHNob3Vs
ZEVtaXRQcml2YXRlQnJhbmQgPyBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6TmVlZGVkIDogUHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmU7CiAgICAgaWYgKG1fY29uc3RydWN0b3JFeHByZXNz
aW9uKSB7CiAgICAgICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yRXhwcmVzc2lvbi0+aXNGdW5jRXhw
ck5vZGUoKSk7CiAgICAgICAgIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBtZXRhZGF0YSA9IHN0YXRp
Y19jYXN0PEZ1bmNFeHByTm9kZSo+KG1fY29uc3RydWN0b3JFeHByZXNzaW9uKS0+bWV0YWRhdGEo
KTsKICAgICAgICAgbWV0YWRhdGEtPnNldEVjbWFOYW1lKGVjbWFOYW1lKCkpOwogICAgICAgICBt
ZXRhZGF0YS0+c2V0Q2xhc3NTb3VyY2UobV9jbGFzc1NvdXJjZSk7CiAgICAgICAgIG1ldGFkYXRh
LT5zZXROZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcihuZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
ciA9PSBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6WWVzKTsKKyAgICAgICAgbWV0YWRhdGEt
PnNldFByaXZhdGVCcmFuZFJlcXVpcmVtZW50KHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KTsKICAg
ICAgICAgY29uc3RydWN0b3IgPSBnZW5lcmF0b3IuZW1pdE5vZGUoY29uc3RydWN0b3IuZ2V0KCks
IG1fY29uc3RydWN0b3JFeHByZXNzaW9uKTsKICAgICAgICAgbmVlZHNIb21lT2JqZWN0ID0gbV9j
bGFzc0hlcml0YWdlIHx8IG1ldGFkYXRhLT5zdXBlckJpbmRpbmcoKSA9PSBTdXBlckJpbmRpbmc6
Ok5lZWRlZDsKICAgICB9IGVsc2UKLSAgICAgICAgY29uc3RydWN0b3IgPSBnZW5lcmF0b3IuZW1p
dE5ld0RlZmF1bHRDb25zdHJ1Y3Rvcihjb25zdHJ1Y3Rvci5nZXQoKSwgbV9jbGFzc0hlcml0YWdl
ID8gQ29uc3RydWN0b3JLaW5kOjpFeHRlbmRzIDogQ29uc3RydWN0b3JLaW5kOjpCYXNlLCBtX25h
bWUsIGVjbWFOYW1lKCksIG1fY2xhc3NTb3VyY2UsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
KTsKKyAgICAgICAgY29uc3RydWN0b3IgPSBnZW5lcmF0b3IuZW1pdE5ld0RlZmF1bHRDb25zdHJ1
Y3Rvcihjb25zdHJ1Y3Rvci5nZXQoKSwgbV9jbGFzc0hlcml0YWdlID8gQ29uc3RydWN0b3JLaW5k
OjpFeHRlbmRzIDogQ29uc3RydWN0b3JLaW5kOjpCYXNlLCBtX25hbWUsIGVjbWFOYW1lKCksIG1f
Y2xhc3NTb3VyY2UsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBwcml2YXRlQnJhbmRSZXF1
aXJlbWVudCk7CiAKICAgICBjb25zdCBhdXRvJiBwcm9wZXJ0eU5hbWVzID0gZ2VuZXJhdG9yLnBy
b3BlcnR5TmFtZXMoKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvdG90eXBlID0gZ2VuZXJh
dG9yLmVtaXROZXdPYmplY3QoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpKTsKQEAgLTQ5NjgsNiAr
NTAwNyw5IEBAIFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAgICAgICAgIGdlbmVyYXRvci5wb3BM
ZXhpY2FsU2NvcGUodGhpcyk7CiAgICAgfQogCisgICAgaWYgKGhhc1ByaXZhdGVOYW1lcykKKyAg
ICAgICAgZ2VuZXJhdG9yLnBvcFByaXZhdGVBY2Nlc3NOYW1lcygpOworCiAgICAgcmV0dXJuIGdl
bmVyYXRvci5tb3ZlKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgY29uc3RydWN0b3Iu
Z2V0KCkpLCBjb25zdHJ1Y3Rvci5nZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCmluZGV4IDVmMjlhZDc2MzUx
NjM3ZGExYTRjODhmZWFjZGU3OTRiMTk4Nzg1YWYuLmNkNTMyNTc2NDc1ZDgzNzY4YTA1YjFjMjlm
YWYwYzdiOTEzZGRhMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcApAQCAtMjYyLDcgKzI2Miw3IEBAIEpTVmFsdWUgRGVi
dWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYg
c2NyaXB0LCBKU09iCiAgICAgSlNTY29wZTo6Y29sbGVjdENsb3N1cmVWYXJpYWJsZXNVbmRlclRE
WihzY29wZSgpLT5qc1Njb3BlKCksIHZhcmlhYmxlc1VuZGVyVERaKTsKIAogICAgIEVDTUFNb2Rl
IGVjbWFNb2RlID0gY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJblN0cmljdENvbnRl
eHQoKSA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpzbG9wcHkoKTsKLSAgICBhdXRv
KiBldmFsID0gRGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShnbG9iYWxPYmplY3QsIG1ha2VT
b3VyY2Uoc2NyaXB0LCBjYWxsRnJhbWUtPmNhbGxlclNvdXJjZU9yaWdpbih2bSkpLCBjb2RlQmxv
Y2stPnVubGlua2VkQ29kZUJsb2NrKCktPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBjb2RlQmxvY2st
PnVubGlua2VkQ29kZUJsb2NrKCktPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGNvZGVC
bG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+aXNBcnJvd0Z1bmN0aW9uKCksIGNvZGVCbG9jay0+
b3duZXJFeGVjdXRhYmxlKCktPmlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbigpLCBldmFsQ29udGV4
dFR5cGUsICZ2YXJpYWJsZXNVbmRlclREWiwgZWNtYU1vZGUpOworICAgIGF1dG8qIGV2YWwgPSBE
aXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgbWFrZVNvdXJjZShzY3Jp
cHQsIGNhbGxGcmFtZS0+Y2FsbGVyU291cmNlT3JpZ2luKHZtKSksIGNvZGVCbG9jay0+dW5saW5r
ZWRDb2RlQmxvY2soKS0+ZGVyaXZlZENvbnRleHRUeXBlKCksIGNvZGVCbG9jay0+dW5saW5rZWRD
b2RlQmxvY2soKS0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgY29kZUJsb2NrLT51bmxp
bmtlZENvZGVCbG9jaygpLT5wcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpLCBjb2RlQmxvY2stPnVu
bGlua2VkQ29kZUJsb2NrKCktPmlzQXJyb3dGdW5jdGlvbigpLCBjb2RlQmxvY2stPm93bmVyRXhl
Y3V0YWJsZSgpLT5pc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24oKSwgZXZhbENvbnRleHRUeXBlLCAm
dmFyaWFibGVzVW5kZXJURFosIGVjbWFNb2RlKTsKICAgICBpZiAoVU5MSUtFTFkoY2F0Y2hTY29w
ZS5leGNlcHRpb24oKSkpIHsKICAgICAgICAgZXhjZXB0aW9uID0gY2F0Y2hTY29wZS5leGNlcHRp
b24oKTsKICAgICAgICAgY2F0Y2hTY29wZS5jbGVhckV4Y2VwdGlvbigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggZDE0OWY3
NzYzM2RmOWRjYmJkMDc1YjgzMDMzZWUxZGVlODhhMmY3NC4uOTNiMDQ3MjE2MTY5ZTFjOGJmMGRj
ZmZiYzcxMGY4ODFlNGUwY2JhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgSlNWYWx1ZSBldmFs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBFQ01B
TW9kZSBlY21hTW8KICAgICAgICAgCiAgICAgICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgdmFyaWFi
bGVzVW5kZXJURFo7CiAgICAgICAgIEpTU2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5k
ZXJURFooY2FsbGVyU2NvcGVDaGFpbiwgdmFyaWFibGVzVW5kZXJURFopOwotICAgICAgICBldmFs
ID0gRGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShnbG9iYWxPYmplY3QsIG1ha2VTb3VyY2Uo
cHJvZ3JhbVNvdXJjZSwgY2FsbGVyQ29kZUJsb2NrLT5zb3VyY2UoKS5wcm92aWRlcigpLT5zb3Vy
Y2VPcmlnaW4oKSksIGRlcml2ZWRDb250ZXh0VHlwZSwgY2FsbGVyVW5saW5rZWRDb2RlQmxvY2st
Pm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGNh
bGxlckNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5zaWRlT3JkaW5hcnlGdW5jdGlv
bigpLCBldmFsQ29udGV4dFR5cGUsICZ2YXJpYWJsZXNVbmRlclREWiwgZWNtYU1vZGUpOworICAg
ICAgICBldmFsID0gRGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShnbG9iYWxPYmplY3QsIG1h
a2VTb3VyY2UocHJvZ3JhbVNvdXJjZSwgY2FsbGVyQ29kZUJsb2NrLT5zb3VyY2UoKS5wcm92aWRl
cigpLT5zb3VyY2VPcmlnaW4oKSksIGRlcml2ZWRDb250ZXh0VHlwZSwgY2FsbGVyVW5saW5rZWRD
b2RlQmxvY2stPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGNhbGxlclVubGlua2VkQ29k
ZUJsb2NrLT5wcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0
LCBjYWxsZXJDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0luc2lkZU9yZGluYXJ5RnVu
Y3Rpb24oKSwgZXZhbENvbnRleHRUeXBlLCAmdmFyaWFibGVzVW5kZXJURFosIGVjbWFNb2RlKTsK
ICAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICFldmFsKTsK
ICAgICAgICAgaWYgKCFldmFsKQogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IDY0YTY2Zjc2NWM4ZjRkMjg0
OTZkYTljZTZjNDRhYmIwOGFhODgxYjkuLjAyYjc4NzVjY2FmNmFmZjY2M2FjMWVlZjVhZGRiOGRi
ZDM0MDkzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC0yMDIs
NiArMjAyLDcgQEAgRnVuY3Rpb25NZXRhZGF0YU5vZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKAog
ICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1
Y3RvcktpbmQpKQogICAgICAgICAsIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObykpCiAgICAgICAg
ICwgbV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbihpc0Fycm93RnVuY3Rpb25Cb2R5RXhw
cmVzc2lvbikKKyAgICAgICAgLCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50KHN0YXRpY19jYXN0
PHVuc2lnbmVkPihQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZSkpCiAgICAgICAgICwgbV9w
YXJzZU1vZGUobW9kZSkKICAgICAgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQogICAg
ICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikKQEAgLTIyNiw2ICsyMjcsNyBAQCBGdW5jdGlv
bk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUoCiAgICAgICAgICwgbV9jb25zdHJ1
Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCiAgICAgICAg
ICwgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vKSkKICAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlv
bkJvZHlFeHByZXNzaW9uKGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQorICAgICAgICAs
IG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByaXZhdGVC
cmFuZFJlcXVpcmVtZW50OjpOb25lKSkKICAgICAgICAgLCBtX3BhcnNlTW9kZShtb2RlKQogICAg
ICAgICAsIG1fc3RhcnRDb2x1bW4oc3RhcnRDb2x1bW4pCiAgICAgICAgICwgbV9lbmRDb2x1bW4o
ZW5kQ29sdW1uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IDczNThiYjMy
NTI3ZTBmMDQzNTE0NzUwZjRiYjBlYjQxNDRiMDg3ZjAuLjgzY2Y0MzQxODc2YTNiYWE3MzM3ZjJl
MjI5Zjk3MDhkZTg3MmIxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAg
LTcyMSw3ICs3MjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBlbnVtIGNsYXNzIENsYXNzRWxl
bWVudFRhZyA6IHVpbnQ4X3QgeyBObywgSW5zdGFuY2UsIFN0YXRpYywgTGFzdFRhZyB9OwogICAg
IGNsYXNzIFByb3BlcnR5Tm9kZSBmaW5hbCA6IHB1YmxpYyBQYXJzZXJBcmVuYUZyZWVhYmxlIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIGVudW0gVHlwZSA6IHVpbnQ4X3QgeyBDb25zdGFudCA9IDEs
IEdldHRlciA9IDIsIFNldHRlciA9IDQsIENvbXB1dGVkID0gOCwgU2hvcnRoYW5kID0gMTYsIFNw
cmVhZCA9IDMyLCBQcml2YXRlID0gNjQgfTsKKyAgICAgICAgZW51bSBUeXBlIDogdWludDhfdCB7
IENvbnN0YW50ID0gMSwgR2V0dGVyID0gMiwgU2V0dGVyID0gNCwgQ29tcHV0ZWQgPSA4LCBTaG9y
dGhhbmQgPSAxNiwgU3ByZWFkID0gMzIsIFByaXZhdGVGaWVsZCA9IDY0LCBQcml2YXRlTWV0aG9k
ID0gMTI4IH07CiAKICAgICAgICAgUHJvcGVydHlOb2RlKGNvbnN0IElkZW50aWZpZXImLCBFeHBy
ZXNzaW9uTm9kZSosIFR5cGUsIFN1cGVyQmluZGluZywgQ2xhc3NFbGVtZW50VGFnKTsKICAgICAg
ICAgUHJvcGVydHlOb2RlKEV4cHJlc3Npb25Ob2RlKiwgVHlwZSwgU3VwZXJCaW5kaW5nLCBDbGFz
c0VsZW1lbnRUYWcpOwpAQCAtNzM5LDcgKzczOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBib29sIGlzQ2xhc3NGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGlzQ2xhc3NQcm9wZXJ0eSgpICYm
ICFuZWVkc1N1cGVyQmluZGluZygpOyB9CiAgICAgICAgIGJvb2wgaXNJbnN0YW5jZUNsYXNzRmll
bGQoKSBjb25zdCB7IHJldHVybiBpc0luc3RhbmNlQ2xhc3NQcm9wZXJ0eSgpICYmICFuZWVkc1N1
cGVyQmluZGluZygpOyB9CiAgICAgICAgIGJvb2wgaXNPdmVycmlkZGVuQnlEdXBsaWNhdGUoKSBj
b25zdCB7IHJldHVybiBtX2lzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlOyB9Ci0gICAgICAgIGJvb2wg
aXNQcml2YXRlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlICYgUHJpdmF0ZTsgfQorICAgICAgICBi
b29sIGlzUHJpdmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSAmIChQcml2YXRlRmllbGQgfCBQ
cml2YXRlTWV0aG9kKTsgfQogICAgICAgICBib29sIGhhc0NvbXB1dGVkTmFtZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZXhwcmVzc2lvbjsgfQogICAgICAgICBib29sIGlzQ29tcHV0ZWRDbGFzc0ZpZWxk
KCkgY29uc3QgeyByZXR1cm4gaXNDbGFzc0ZpZWxkKCkgJiYgaGFzQ29tcHV0ZWROYW1lKCk7IH0K
ICAgICAgICAgdm9pZCBzZXRJc092ZXJyaWRkZW5CeUR1cGxpY2F0ZSgpIHsgbV9pc092ZXJyaWRk
ZW5CeUR1cGxpY2F0ZSA9IHRydWU7IH0KQEAgLTc1OSw3ICs3NTksNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogbV9uYW1lOwogICAgICAgICBFeHByZXNzaW9u
Tm9kZSogbV9leHByZXNzaW9uOwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9hc3NpZ247Ci0g
ICAgICAgIHVuc2lnbmVkIG1fdHlwZSA6IDc7CisgICAgICAgIHVuc2lnbmVkIG1fdHlwZTsKICAg
ICAgICAgdW5zaWduZWQgbV9uZWVkc1N1cGVyQmluZGluZyA6IDE7CiAgICAgICAgIHN0YXRpY19h
c3NlcnQoMSA8PCAyID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENsYXNzRWxlbWVudFRhZzo6TGFz
dFRhZyksICJDbGFzc0VsZW1lbnRUYWcgc2hvdWxkbid0IHVzZSBtb3JlIHRoYW4gdHdvIGJpdHMi
KTsKICAgICAgICAgdW5zaWduZWQgbV9jbGFzc0VsZW1lbnRUYWcgOiAyOwpAQCAtMjE1MSw2ICsy
MTUxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgc2V0RWNtYU5hbWUoY29uc3Qg
SWRlbnRpZmllciYgZWNtYU5hbWUpIHsgbV9lY21hTmFtZSA9IGVjbWFOYW1lOyB9CiAgICAgICAg
IGNvbnN0IElkZW50aWZpZXImIGVjbWFOYW1lKCkgeyByZXR1cm4gbV9pZGVudC5pc0VtcHR5KCkg
PyBtX2VjbWFOYW1lIDogbV9pZGVudDsgfQogCisgICAgICAgIHZvaWQgc2V0UHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQoUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQpIHsgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihw
cml2YXRlQnJhbmRSZXF1aXJlbWVudCk7IH0KKyAgICAgICAgUHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxQcml2YXRl
QnJhbmRSZXF1aXJlbWVudD4obV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7IH0KKwogICAgICAg
ICBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2RlKCkgeyByZXR1cm4gbV9mdW5jdGlvbk1vZGU7IH0K
IAogICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0
aW9uTmFtZVN0YXJ0OyB9CkBAIC0yMTk5LDYgKzIyMDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwogICAgICAgICB1bnNpZ25lZCBt
X25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIDogMTsKICAgICAgICAgdW5zaWduZWQgbV9pc0Fy
cm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA6IDE7CisgICAgICAgIHVuc2lnbmVkIG1fcHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQgOiAxOwogICAgICAgICBTb3VyY2VQYXJzZU1vZGUgbV9wYXJzZU1v
ZGU7CiAgICAgICAgIEZ1bmN0aW9uTW9kZSBtX2Z1bmN0aW9uTW9kZTsKICAgICAgICAgSWRlbnRp
ZmllciBtX2lkZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4
IGUxOTBlNjkzNjk5NTdhNGQwMGNiYzZiNzNjN2NmMDEwOWM1OWUxYTMuLjY5ZmY4OWZlMmExOTRi
ZDFjNGY0MzVkNjJiYTM1ZWM2ZTMxOGZmMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5jcHAKQEAgLTI4NTEsNiArMjg1MSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZUNsYXNzRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyhU
CiAgICAgY2xhc3NTY29wZS0+c2V0SXNMZXhpY2FsU2NvcGUoKTsKICAgICBjbGFzc1Njb3BlLT5w
cmV2ZW50VmFyRGVjbGFyYXRpb25zKCk7CiAgICAgY2xhc3NTY29wZS0+c2V0U3RyaWN0TW9kZSgp
OworICAgIGJvb2wgZGVjbGFyZXNQcml2YXRlTWV0aG9kID0gZmFsc2U7CiAKICAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKHJlcXVpcmVtZW50cyAhPSBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHM6OlVu
bmFtZWQsICJDdXJyZW50bHksIHRoZXJlIGlzIG5vIGNhbGxlciB0aGF0IHVzZXMgRnVuY3Rpb25O
YW1lUmVxdWlyZW1lbnRzOjpVbm5hbWVkIGZvciBjbGFzcyBzeW50YXguIik7CiAgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRSghKHJlcXVpcmVtZW50cyA9PSBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHM6
Ok5vbmUgJiYgIWluZm8uY2xhc3NOYW1lKSwgIldoZW4gc3BlY2lmeWluZyBGdW5jdGlvbk5hbWVS
ZXF1aXJlbWVudHM6Ok5vbmUsIHdlIG5lZWQgdG8gaW5pdGlhbGl6ZSBpbmZvLmNsYXNzTmFtZSB3
aXRoIHRoZSBkZWZhdWx0IHZhbHVlIGluIHRoZSBjYWxsZXIgc2lkZS4iKTsKQEAgLTI5NjUsMTUg
KzI5NjYsMjEgQEAgcGFyc2VNZXRob2Q6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBQUklWQVRFTkFNRTogewogICAgICAgICAgICAgQVNTRVJUKE9wdGlvbnM6OnVzZVByaXZhdGVD
bGFzc0ZpZWxkcygpKTsKLSAgICAgICAgICAgIEpTVG9rZW4gdG9rZW4gPSBtX3Rva2VuOwogICAg
ICAgICAgICAgaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKICAgICAgICAgICAgIGZhaWxJ
ZlRydWUodGFnID09IENsYXNzRWxlbWVudFRhZzo6U3RhdGljLCAiU3RhdGljIGNsYXNzIGVsZW1l
bnQgY2Fubm90IGJlIHByaXZhdGUiKTsKICAgICAgICAgICAgIGZhaWxJZlRydWUoaXNHZXR0ZXIg
fHwgaXNTZXR0ZXIsICJDYW5ub3QgcGFyc2UgY2xhc3MgbWV0aG9kIHdpdGggcHJpdmF0ZSBuYW1l
Iik7CiAgICAgICAgICAgICBBU1NFUlQoaWRlbnQpOwogICAgICAgICAgICAgbmV4dCgpOwotICAg
ICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaEFuZFVwZGF0ZShPUEVOUEFSRU4sIHRva2VuKSwgIkNh
bm5vdCBwYXJzZSBjbGFzcyBtZXRob2Qgd2l0aCBwcml2YXRlIG5hbWUiKTsKLSAgICAgICAgICAg
IHNlbWFudGljRmFpbElmVHJ1ZShjbGFzc1Njb3BlLT5kZWNsYXJlUHJpdmF0ZU5hbWUoKmlkZW50
KSAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb24sICJDYW5u
b3QgZGVjbGFyZSBwcml2YXRlIGZpZWxkIHR3aWNlIik7Ci0gICAgICAgICAgICB0eXBlID0gc3Rh
dGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlIHwgUHJvcGVydHlOb2RlOjpQcml2YXRl
KTsKKyAgICAgICAgICAgIGlmIChPcHRpb25zOjp1c2VQcml2YXRlTWV0aG9kcygpICYmIG1hdGNo
KE9QRU5QQVJFTikpIHsKKyAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoY2xhc3NT
Y29wZS0+ZGVjbGFyZVByaXZhdGVNZXRob2QoKmlkZW50KSAmIERlY2xhcmF0aW9uUmVzdWx0OjpJ
bnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb24sICJDYW5ub3QgZGVjbGFyZSBwcml2YXRlIG1ldGhv
ZCB0d2ljZSIpOworICAgICAgICAgICAgICAgIGRlY2xhcmVzUHJpdmF0ZU1ldGhvZCA9IHRydWU7
CisgICAgICAgICAgICAgICAgdHlwZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4o
dHlwZSB8IFByb3BlcnR5Tm9kZTo6UHJpdmF0ZU1ldGhvZCk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZhaWxJZlRydWUobWF0Y2goT1BFTlBB
UkVOKSwgIkNhbm5vdCBwYXJzZSBjbGFzcyBtZXRob2Qgd2l0aCBwcml2YXRlIG5hbWUiKTsKKyAg
ICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShjbGFzc1Njb3BlLT5kZWNsYXJlUHJpdmF0ZUZp
ZWxkKCppZGVudCkgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0
aW9uLCAiQ2Fubm90IGRlY2xhcmUgcHJpdmF0ZSBmaWVsZCB0d2ljZSIpOworICAgICAgICAgICAg
dHlwZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4odHlwZSB8IFByb3BlcnR5Tm9k
ZTo6UHJpdmF0ZUZpZWxkKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGRlZmF1bHQ6CkBAIC0zMDUzLDEwICszMDYwLDE5IEBAIHBhcnNlTWV0aG9kOgogICAgIGluZm8u
ZW5kT2Zmc2V0ID0gdG9rZW5Mb2NhdGlvbigpLmVuZE9mZnNldCAtIDE7CiAgICAgY29uc3VtZU9y
RmFpbChDTE9TRUJSQUNFLCAiRXhwZWN0ZWQgYSBjbG9zaW5nICd9JyBhZnRlciBhIGNsYXNzIGJv
ZHkiKTsKIAorICAgIGlmIChkZWNsYXJlc1ByaXZhdGVNZXRob2QpIHsKKyAgICAgICAgSWRlbnRp
ZmllciBwcml2YXRlQnJhbmRJZGVudGlmaWVyID0gbV92bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5wcml2YXRlQnJhbmRQcml2YXRlTmFtZSgpOworICAgICAgICBEZWNsYXJhdGlvblJl
c3VsdE1hc2sgZGVjbGFyYXRpb25SZXN1bHQgPSBjbGFzc1Njb3BlLT5kZWNsYXJlTGV4aWNhbFZh
cmlhYmxlKCZwcml2YXRlQnJhbmRJZGVudGlmaWVyLCB0cnVlKTsKKyAgICAgICAgQVNTRVJUX1VO
VVNFRChkZWNsYXJhdGlvblJlc3VsdCwgZGVjbGFyYXRpb25SZXN1bHQgPT0gRGVjbGFyYXRpb25S
ZXN1bHQ6OlZhbGlkKTsKKyAgICAgICAgY2xhc3NTY29wZS0+dXNlVmFyaWFibGUoJnByaXZhdGVC
cmFuZElkZW50aWZpZXIsIGZhbHNlKTsKKyAgICAgICAgY2xhc3NTY29wZS0+YWRkQ2xvc2VkVmFy
aWFibGVDYW5kaWRhdGVVbmNvbmRpdGlvbmFsbHkocHJpdmF0ZUJyYW5kSWRlbnRpZmllci5pbXBs
KCkpOworICAgIH0KKwogICAgIGlmIChPcHRpb25zOjp1c2VQcml2YXRlQ2xhc3NGaWVsZHMoKSkg
ewogICAgICAgICAvLyBGYWlsIGlmIHRoZXJlIGFyZSBubyBwYXJlbnQgcHJpdmF0ZSBuYW1lIHNj
b3BlcyBhbmQgYW55IHVzZWQtYnV0LXVuZGVjbGFyZWQgcHJpdmF0ZSBuYW1lcy4KICAgICAgICAg
c2VtYW50aWNGYWlsSWZGYWxzZShjb3B5VW5kZWNsYXJlZFByaXZhdGVOYW1lc1RvT3V0ZXJTY29w
ZSgpLCAiQ2Fubm90IHJlZmVyZW5jZSB1bmRlY2xhcmVkIHByaXZhdGUgbmFtZXMiKTsKICAgICB9
CisKICAgICBhdXRvIGNsYXNzRXhwcmVzc2lvbiA9IGNvbnRleHQuY3JlYXRlQ2xhc3NFeHByKGxv
Y2F0aW9uLCBpbmZvLCBjbGFzc1Njb3BlLT5maW5hbGl6ZUxleGljYWxFbnZpcm9ubWVudCgpLCBj
b25zdHJ1Y3RvciwgcGFyZW50Q2xhc3MsIGNsYXNzRWxlbWVudHMpOwogICAgIHBvcFNjb3BlKGNs
YXNzU2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pOwogICAgIHJldHVy
biBjbGFzc0V4cHJlc3Npb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRl
eCBkYjhlYjczY2I5YTk4YmNhYjA2NGEwZmNjMGU1NDVjNmVlNGFiNGY3Li5hOGRlNTU4MmE1NmE0
NGI3NWRkNTczMTI1ZmM0N2E4YzdjOTUyNWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmgKQEAgLTUxMSwxMSArNTExLDI4IEBAIHB1YmxpYzoKICAgICAgICAgbV9sZXhpY2Fs
VmFyaWFibGVzLnVzZVByaXZhdGVOYW1lKGlkZW50KTsKICAgICB9CiAKLSAgICBEZWNsYXJhdGlv
blJlc3VsdE1hc2sgZGVjbGFyZVByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQor
ICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJlUHJpdmF0ZU1ldGhvZChjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2FsbG93c0xleGljYWxEZWNs
YXJhdGlvbnMpOwogICAgICAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgcmVzdWx0ID0gRGVjbGFy
YXRpb25SZXN1bHQ6OlZhbGlkOwotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbGV4aWNhbFZh
cmlhYmxlcy5kZWNsYXJlUHJpdmF0ZU5hbWUoaWRlbnQpOworICAgICAgICBib29sIGFkZFJlc3Vs
dCA9IG1fbGV4aWNhbFZhcmlhYmxlcy5kZWNsYXJlUHJpdmF0ZU1ldGhvZChpZGVudCk7CisKKyAg
ICAgICAgaWYgKCFhZGRSZXN1bHQpIHsKKyAgICAgICAgICAgIHJlc3VsdCB8PSBEZWNsYXJhdGlv
blJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uOworICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIHVzZVZhcmlhYmxlKCZpZGVudCwgZmFsc2Up
OworICAgICAgICBhZGRDbG9zZWRWYXJpYWJsZUNhbmRpZGF0ZVVuY29uZGl0aW9uYWxseShpZGVu
dC5pbXBsKCkpOworCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgRGVjbGFy
YXRpb25SZXN1bHRNYXNrIGRlY2xhcmVQcml2YXRlRmllbGQoY29uc3QgSWRlbnRpZmllciYgaWRl
bnQpCisgICAgeworICAgICAgICBBU1NFUlQobV9hbGxvd3NMZXhpY2FsRGVjbGFyYXRpb25zKTsK
KyAgICAgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIHJlc3VsdCA9IERlY2xhcmF0aW9uUmVzdWx0
OjpWYWxpZDsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2xleGljYWxWYXJpYWJsZXMuZGVj
bGFyZVByaXZhdGVGaWVsZChpZGVudCk7CiAgICAgICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50
cnkpCiAgICAgICAgICAgICByZXN1bHQgfD0gRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBs
aWNhdGVEZWNsYXJhdGlvbjsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAppbmRleCBlYWZmZGUyMWMxNTk1ZGIzMDJmNjI5
OTJiYWExOTJlZjZhYWQ2MTU4Li45ZDlhMTg5Yjc2YmU5NGNlZDFlZTE0OGViYTUyNDFmOWRlNzZk
M2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCkBAIC0z
Nyw2ICszNyw4IEBAIGVudW0gY2xhc3MgSlNQYXJzZXJTY3JpcHRNb2RlIHsgQ2xhc3NpYywgTW9k
dWxlIH07CiAKIGVudW0gY2xhc3MgU3VwZXJCaW5kaW5nIHsgTmVlZGVkLCBOb3ROZWVkZWQgfTsK
IAorZW51bSBjbGFzcyBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCB7IE5vbmUsIE5lZWRlZCB9Owor
CiBlbnVtIGNsYXNzIENvZGVHZW5lcmF0aW9uTW9kZSA6IHVpbnQ4X3QgewogICAgIERlYnVnZ2Vy
ID0gMSA8PCAwLAogICAgIFR5cGVQcm9maWxlciA9IDEgPDwgMSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwCmluZGV4IGQ1YTll
ZDk5OTVlMzg3MjNiN2ZiZmFhMTVjYmQ2OTQyYWQ0ZDU5ZDIuLjdkM2IxYjhiNzA2MDViZGUzOTVh
NWM3ZGJmZTA4NTAwOWVhOTRlOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcApAQCAtMTA0LDYgKzEwNCw0MSBAQCB2b2lk
IFZhcmlhYmxlRW52aXJvbm1lbnQ6Om1hcmtWYXJpYWJsZUFzRXhwb3J0ZWQoY29uc3QgUmVmUHRy
PFVuaXF1ZWRTdHJpbmdJbXBsPgogICAgIGZpbmRSZXN1bHQtPnZhbHVlLnNldElzRXhwb3J0ZWQo
KTsKIH0KIAorYm9vbCBWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZU1ldGhvZChj
b25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQoreworICAgIGlmICgh
bV9yYXJlRGF0YSkKKyAgICAgICAgbV9yYXJlRGF0YSA9IG1ha2VVbmlxdWU8VmFyaWFibGVFbnZp
cm9ubWVudDo6UmFyZURhdGE+KCk7CisKKyAgICBhdXRvIGZpbmRSZXN1bHQgPSBtX3JhcmVEYXRh
LT5tX3ByaXZhdGVOYW1lcy5maW5kKGlkZW50aWZpZXIpOworCisgICAgaWYgKGZpbmRSZXN1bHQg
PT0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZW5kKCkpIHsKKyAgICAgICAgUHJpdmF0ZU5h
bWVFbnRyeSBtZXRhKFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNEZWNsYXJlZCB8IFByaXZh
dGVOYW1lRW50cnk6OlRyYWl0czo6SXNNZXRob2QpOworCisgICAgICAgIGF1dG8gZW50cnkgPSBW
YXJpYWJsZUVudmlyb25tZW50RW50cnkoKTsKKyAgICAgICAgZW50cnkuc2V0SXNQcml2YXRlTWV0
aG9kKCk7CisgICAgICAgIGVudHJ5LnNldElzQ29uc3QoKTsKKyAgICAgICAgZW50cnkuc2V0SXND
YXB0dXJlZCgpOworICAgICAgICBtX21hcC5hZGQoaWRlbnRpZmllciwgZW50cnkpOworCisgICAg
ICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKGlkZW50
aWZpZXIsIG1ldGEpOworICAgICAgICByZXR1cm4gYWRkUmVzdWx0LmlzTmV3RW50cnk7CisgICAg
fQorCisgICAgaWYgKGZpbmRSZXN1bHQtPnZhbHVlLmlzRGVjbGFyZWQoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOyAvLyBFcnJvcjogZGVjbGFyaW5nIGEgZHVwbGljYXRlIHByaXZhdGUgbmFtZS4K
KworICAgIGF1dG8gZW50cnkgPSBWYXJpYWJsZUVudmlyb25tZW50RW50cnkoKTsKKyAgICBlbnRy
eS5zZXRJc1ByaXZhdGVNZXRob2QoKTsKKyAgICBlbnRyeS5zZXRJc0NvbnN0KCk7CisgICAgZW50
cnkuc2V0SXNDYXB0dXJlZCgpOworICAgIG1fbWFwLmFkZChpZGVudGlmaWVyLCBlbnRyeSk7CisK
KyAgICAvLyBpdCB3YXMgcHJldmlvdXNseSB1c2VkLCBtYXJrIGl0IGFzIGRlY2xhcmVkLgorICAg
IFByaXZhdGVOYW1lRW50cnkgbWV0YShQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzRGVjbGFy
ZWQgfCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzVXNlZCB8IFByaXZhdGVOYW1lRW50cnk6
OlRyYWl0czo6SXNNZXRob2QpOworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yYXJlRGF0YS0+bV9w
cml2YXRlTmFtZXMuc2V0KGlkZW50aWZpZXIsIG1ldGEpOworICAgIHJldHVybiAhYWRkUmVzdWx0
LmlzTmV3RW50cnk7Cit9CisKIENvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50OjpDb21wYWN0VmFy
aWFibGVFbnZpcm9ubWVudChjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBlbnYpCiAgICAgOiBt
X2lzRXZlcnl0aGluZ0NhcHR1cmVkKGVudi5pc0V2ZXJ5dGhpbmdDYXB0dXJlZCgpKQogewpAQCAt
MTE3LDYgKzE1MiwyNSBAQCBDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudDo6Q29tcGFjdFZhcmlh
YmxlRW52aXJvbm1lbnQoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudAogICAgIH0pOwogCiAgICAg
bV9oYXNoID0gMDsKKyAgICBpZiAoZW52LnByaXZhdGVOYW1lc1NpemUoKSkgeworICAgICAgICBW
ZWN0b3I8c3RkOjpwYWlyPFVuaXF1ZWRTdHJpbmdJbXBsKiwgUHJpdmF0ZU5hbWVFbnRyeT4sIDE2
PiBzb3J0ZWRQcml2YXRlRW50cmllczsKKyAgICAgICAgc29ydGVkUHJpdmF0ZUVudHJpZXMucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShlbnYucHJpdmF0ZU5hbWVzU2l6ZSgpKTsKKyAgICAgICAgZm9y
IChjb25zdCBhdXRvJiBlbnRyaWVzIDogZW52LnByaXZhdGVOYW1lcygpKQorICAgICAgICAgICAg
c29ydGVkUHJpdmF0ZUVudHJpZXMuYXBwZW5kKHtlbnRyaWVzLmtleS5nZXQoKSwgZW50cmllcy52
YWx1ZX0pOworCisgICAgICAgIHN0ZDo6c29ydChzb3J0ZWRQcml2YXRlRW50cmllcy5iZWdpbigp
LCBzb3J0ZWRQcml2YXRlRW50cmllcy5lbmQoKSwgW10gKGNvbnN0IGF1dG8mIGEsIGNvbnN0IGF1
dG8mIGIpIHsKKyAgICAgICAgICAgIHJldHVybiBhLmZpcnN0IDwgYi5maXJzdDsKKyAgICAgICAg
fSk7CisKKyAgICAgICAgbV9wcml2YXRlQWNjZXNzTmFtZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShlbnYucHJpdmF0ZU5hbWVzU2l6ZSgpKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYWly
IDogc29ydGVkUHJpdmF0ZUVudHJpZXMpIHsKKyAgICAgICAgICAgIG1fcHJpdmF0ZUFjY2Vzc05h
bWVzLmFwcGVuZChwYWlyLmZpcnN0KTsKKyAgICAgICAgICAgIG1fcHJpdmF0ZU5hbWVNZXRhZGF0
YS5hcHBlbmQocGFpci5zZWNvbmQpOworICAgICAgICAgICAgbV9oYXNoIF49IHBhaXIuZmlyc3Qt
Pmhhc2goKTsKKyAgICAgICAgICAgIG1faGFzaCArPSBwYWlyLnNlY29uZC5iaXRzKCk7CisgICAg
ICAgIH0KKyAgICB9CisKICAgICBtX3ZhcmlhYmxlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNv
cnRlZEVudHJpZXMuc2l6ZSgpKTsKICAgICBtX3ZhcmlhYmxlTWV0YWRhdGEucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShzb3J0ZWRFbnRyaWVzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBw
YWlyIDogc29ydGVkRW50cmllcykgewpAQCAtMTQwLDYgKzE5NCwxMCBAQCBib29sIENvbXBhY3RW
YXJpYWJsZUVudmlyb25tZW50OjpvcGVyYXRvcj09KGNvbnN0IENvbXBhY3RWYXJpYWJsZUVudmly
b25tZW50JiBvdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKG1fdmFyaWFibGVNZXRh
ZGF0YSAhPSBvdGhlci5tX3ZhcmlhYmxlTWV0YWRhdGEpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAobV9wcml2YXRlQWNjZXNzTmFtZXMgIT0gb3RoZXIubV9wcml2YXRlQWNjZXNzTmFt
ZXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9wcml2YXRlTmFtZU1ldGFkYXRh
ICE9IG90aGVyLm1fcHJpdmF0ZU5hbWVNZXRhZGF0YSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xNTMsNiArMjExLDEyIEBAIFZhcmlhYmxlRW52aXJv
bm1lbnQgQ29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQ6OnRvVmFyaWFibGVFbnZpcm9ubWVudCgp
IGNvbnN0CiAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtX3ZhcmlhYmxlTWV0
YWRhdGFbaV07CiAgICAgfQogCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3ByaXZhdGVB
Y2Nlc3NOYW1lcy5zaXplKCk7IGkrKykgeworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IHJlc3Vs
dC5hZGRQcml2YXRlTmFtZShtX3ByaXZhdGVBY2Nlc3NOYW1lc1tpXSk7CisgICAgICAgIEFTU0VS
VChhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWUgPSBtX3ByaXZhdGVOYW1lTWV0YWRhdGFbaV07CisgICAgfQorCiAgICAgaWYgKG1faXNFdmVy
eXRoaW5nQ2FwdHVyZWQpCiAgICAgICAgIHJlc3VsdC5tYXJrQWxsVmFyaWFibGVzQXNDYXB0dXJl
ZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxl
RW52aXJvbm1lbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZp
cm9ubWVudC5oCmluZGV4IGMxMjEzNTE5ZjE3MWQwZmM3ZTJlZmM3ZDJkZWU4YTFhYjQ0OTkwOTAu
LjViMDIxMmUzN2YyZWIyMTNiZmI5ZWRkMjNhYTE1YWEyOWFlZjRmYzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oCkBAIC00NCw3
ICs0NCw4IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNGdW5jdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fYml0cyAmIElzRnVuY3Rpb247IH0KICAgICBBTFdBWVNfSU5MSU5FIGJv
b2wgaXNQYXJhbWV0ZXIoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1BhcmFtZXRlcjsgfQog
ICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYml0cyAmIElzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlOyB9Ci0g
ICAgQUxXQVlTX0lOTElORSBib29sIGlzUHJpdmF0ZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2Jp
dHMgJiBJc1ByaXZhdGVOYW1lOyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzUHJpdmF0ZUZp
ZWxkKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNQcml2YXRlRmllbGQ7IH0KKyAgICBBTFdB
WVNfSU5MSU5FIGJvb2wgaXNQcml2YXRlTWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYg
SXNQcml2YXRlTWV0aG9kOyB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNDYXB0dXJl
ZCgpIHsgbV9iaXRzIHw9IElzQ2FwdHVyZWQ7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
SXNDb25zdCgpIHsgbV9iaXRzIHw9IElzQ29uc3Q7IH0KQEAgLTU2LDcgKzU3LDggQEAgcHVibGlj
OgogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0Z1bmN0aW9uKCkgeyBtX2JpdHMgfD0gSXNG
dW5jdGlvbjsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1BhcmFtZXRlcigpIHsgbV9i
aXRzIHw9IElzUGFyYW1ldGVyOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzU2xvcHB5
TW9kZUhvaXN0aW5nQ2FuZGlkYXRlKCkgeyBtX2JpdHMgfD0gSXNTbG9wcHlNb2RlSG9pc3RpbmdD
YW5kaWRhdGU7IH0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNQcml2YXRlTmFtZSgpIHsg
bV9iaXRzIHw9IElzUHJpdmF0ZU5hbWU7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNQ
cml2YXRlRmllbGQoKSB7IG1fYml0cyB8PSBJc1ByaXZhdGVGaWVsZDsgfQorICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzZXRJc1ByaXZhdGVNZXRob2QoKSB7IG1fYml0cyB8PSBJc1ByaXZhdGVNZXRo
b2Q7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjbGVhcklzVmFyKCkgeyBtX2JpdHMgJj0g
fklzVmFyOyB9CiAKQEAgLTc5LDcgKzgxLDggQEAgcHJpdmF0ZToKICAgICAgICAgSXNGdW5jdGlv
biA9IDEgPDwgNywKICAgICAgICAgSXNQYXJhbWV0ZXIgPSAxIDw8IDgsCiAgICAgICAgIElzU2xv
cHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlID0gMSA8PCA5LAotICAgICAgICBJc1ByaXZhdGVOYW1l
ID0gMSA8PCAxMCwKKyAgICAgICAgSXNQcml2YXRlRmllbGQgPSAxIDw8IDEwLAorICAgICAgICBJ
c1ByaXZhdGVNZXRob2QgPSAxIDw8IDExLAogICAgIH07CiAgICAgdWludDE2X3QgbV9iaXRzIHsg
MCB9OwogfTsKQEAgLTg5LDExICs5MiwxNiBAQCBzdHJ1Y3QgVmFyaWFibGVFbnZpcm9ubWVudEVu
dHJ5SGFzaFRyYWl0cyA6IEhhc2hUcmFpdHM8VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5PgogfTsK
IAogc3RydWN0IFByaXZhdGVOYW1lRW50cnkgeworICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRQcml2
YXRlTmFtZUVudHJ5OworCiBwdWJsaWM6CiAgICAgUHJpdmF0ZU5hbWVFbnRyeSh1aW50MTZfdCB0
cmFpdHMgPSAwKSB7IG1fYml0cyA9IHRyYWl0czsgfQogCiAgICAgQUxXQVlTX0lOTElORSBib29s
IGlzVXNlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzVXNlZDsgfQogICAgIEFMV0FZU19J
TkxJTkUgYm9vbCBpc0RlY2xhcmVkKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNEZWNsYXJl
ZDsgfQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc01ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1f
Yml0cyAmIElzTWV0aG9kOyB9CisKKyAgICBib29sIGlzUHJpdmF0ZUFjY2VzcygpIGNvbnN0IHsg
cmV0dXJuIGlzTWV0aG9kKCk7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1VzZWQo
KSB7IG1fYml0cyB8PSBJc1VzZWQ7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNEZWNs
YXJlZCgpIHsgbV9iaXRzIHw9IElzRGVjbGFyZWQ7IH0KQEAgLTEwNiw4ICsxMTQsMTAgQEAgcHVi
bGljOgogICAgIH0KIAogICAgIGVudW0gVHJhaXRzIDogdWludDE2X3QgeworICAgICAgICBOb25l
ID0gMCwKICAgICAgICAgSXNVc2VkID0gMSA8PCAwLAogICAgICAgICBJc0RlY2xhcmVkID0gMSA8
PCAxLAorICAgICAgICBJc01ldGhvZCA9IDEgPDwgMiwKICAgICB9OwogCiBwcml2YXRlOgpAQCAt
MTE1LDE0ICsxMjUsMTYgQEAgcHJpdmF0ZToKIH07CiAKIHN0cnVjdCBQcml2YXRlTmFtZUVudHJ5
SGFzaFRyYWl0cyA6IEhhc2hUcmFpdHM8UHJpdmF0ZU5hbWVFbnRyeT4gewotICAgIHN0YXRpYyBj
b25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IGZhbHNlOwogfTsKIAogY2xhc3MgVmFyaWFibGVFbnZp
cm9ubWVudCB7CiBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaE1hcDxQYWNrZWRSZWZQdHI8VW5p
cXVlZFN0cmluZ0ltcGw+LCBWYXJpYWJsZUVudmlyb25tZW50RW50cnksIElkZW50aWZpZXJSZXBI
YXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+LCBWYXJpYWJsZUVudmly
b25tZW50RW50cnlIYXNoVHJhaXRzPiBNYXA7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFBhY2tlZFJl
ZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIFByaXZhdGVOYW1lRW50cnksIElkZW50aWZpZXJSZXBI
YXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+LCBQcml2YXRlTmFtZUVu
dHJ5SGFzaFRyYWl0cz4gUHJpdmF0ZU5hbWVzOworCiBwdWJsaWM6CisgICAgdHlwZWRlZiBIYXNo
TWFwPFBhY2tlZFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIFByaXZhdGVOYW1lRW50cnksIElk
ZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+LCBQ
cml2YXRlTmFtZUVudHJ5SGFzaFRyYWl0cz4gUHJpdmF0ZU5hbWVzOworCiAgICAgVmFyaWFibGVF
bnZpcm9ubWVudCgpIHsgfQogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQoVmFyaWFibGVFbnZpcm9u
bWVudCYmIG90aGVyKQogICAgICAgICA6IG1fbWFwKFdURk1vdmUob3RoZXIubV9tYXApKQpAQCAt
MTQ0LDYgKzE1NiwxNiBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSBNYXA6OmNvbnN0X2l0
ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmVuZCgpOyB9CiAgICAgQUxXQVlTX0lO
TElORSBNYXA6OkFkZFJlc3VsdCBhZGQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYg
aWRlbnRpZmllcikgeyByZXR1cm4gbV9tYXAuYWRkKGlkZW50aWZpZXIsIFZhcmlhYmxlRW52aXJv
bm1lbnRFbnRyeSgpKTsgfQogICAgIEFMV0FZU19JTkxJTkUgTWFwOjpBZGRSZXN1bHQgYWRkKGNv
bnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsgcmV0dXJuIGFkZChpZGVudGlmaWVyLmltcGwo
KSk7IH0KKworICAgIEFMV0FZU19JTkxJTkUgUHJpdmF0ZU5hbWVzOjpBZGRSZXN1bHQgYWRkUHJp
dmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyByZXR1cm4gYWRkUHJpdmF0
ZU5hbWUoaWRlbnRpZmllci5pbXBsKCkpOyB9CisgICAgQUxXQVlTX0lOTElORSBQcml2YXRlTmFt
ZXM6OkFkZFJlc3VsdCBhZGRQcml2YXRlTmFtZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0lt
cGw+JiBpZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAg
ICAgICAgbV9yYXJlRGF0YSA9IG1ha2VVbmlxdWU8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURh
dGE+KCk7CisKKyAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChp
ZGVudGlmaWVyLCBQcml2YXRlTmFtZUVudHJ5KCkpOworICAgIH0KKwogICAgIEFMV0FZU19JTkxJ
TkUgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKSArIHByaXZhdGVO
YW1lc1NpemUoKTsgfQogICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgbWFwU2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbWFwLnNpemUoKTsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBjb250YWlu
cyhjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKSBjb25zdCB7IHJl
dHVybiBtX21hcC5jb250YWlucyhpZGVudGlmaWVyKTsgfQpAQCAtMTY0LDE1ICsxODYsMTggQEAg
cHVibGljOgogCiAgICAgdXNpbmcgUHJpdmF0ZU5hbWVzUmFuZ2UgPSBXVEY6Okl0ZXJhdG9yUmFu
Z2U8UHJpdmF0ZU5hbWVzOjppdGVyYXRvcj47CiAKLSAgICBBTFdBWVNfSU5MSU5FIE1hcDo6QWRk
UmVzdWx0IGRlY2xhcmVQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7
IHJldHVybiBkZWNsYXJlUHJpdmF0ZU5hbWUoaWRlbnRpZmllci5pbXBsKCkpOyB9CisgICAgQUxX
QVlTX0lOTElORSBNYXA6OkFkZFJlc3VsdCBkZWNsYXJlUHJpdmF0ZUZpZWxkKGNvbnN0IElkZW50
aWZpZXImIGlkZW50aWZpZXIpIHsgcmV0dXJuIGRlY2xhcmVQcml2YXRlRmllbGQoaWRlbnRpZmll
ci5pbXBsKCkpOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHVzZVByaXZhdGVOYW1lKGNvbnN0
IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsgdXNlUHJpdmF0ZU5hbWUoaWRlbnRpZmllci5pbXBs
KCkpOyB9CiAKLSAgICBNYXA6OkFkZFJlc3VsdCBkZWNsYXJlUHJpdmF0ZU5hbWUoY29uc3QgUmVm
UHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikKKyAgICBib29sIGRlY2xhcmVQcml2
YXRlTWV0aG9kKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsgcmV0dXJuIGRlY2xhcmVQ
cml2YXRlTWV0aG9kKGlkZW50aWZpZXIuaW1wbCgpKTsgfQorICAgIGJvb2wgZGVjbGFyZVByaXZh
dGVNZXRob2QoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcik7CisK
KyAgICBNYXA6OkFkZFJlc3VsdCBkZWNsYXJlUHJpdmF0ZUZpZWxkKGNvbnN0IFJlZlB0cjxVbmlx
dWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCiAgICAgewogICAgICAgICBhdXRvJiBtZXRhID0g
Z2V0T3JBZGRQcml2YXRlTmFtZShpZGVudGlmaWVyLmdldCgpKTsKICAgICAgICAgbWV0YS5zZXRJ
c0RlY2xhcmVkKCk7CiAgICAgICAgIGF1dG8gZW50cnkgPSBWYXJpYWJsZUVudmlyb25tZW50RW50
cnkoKTsKLSAgICAgICAgZW50cnkuc2V0SXNQcml2YXRlTmFtZSgpOworICAgICAgICBlbnRyeS5z
ZXRJc1ByaXZhdGVGaWVsZCgpOwogICAgICAgICBlbnRyeS5zZXRJc0NvbnN0KCk7CiAgICAgICAg
IGVudHJ5LnNldElzQ2FwdHVyZWQoKTsKICAgICAgICAgcmV0dXJuIG1fbWFwLmFkZChpZGVudGlm
aWVyLCBlbnRyeSk7CkBAIC0xOTksNiArMjI0LDE5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLnNpemUoKTsKICAgICB9CiAKKyAgICBBTFdBWVNf
SU5MSU5FIGJvb2wgaGFzUHJpdmF0ZUFjY2VzcygpIGNvbnN0CisgICAgeworICAgICAgICBpZiAo
IW1fcmFyZURhdGEpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgZm9yIChh
dXRvIGVudHJ5IDogcHJpdmF0ZU5hbWVzKCkpIHsKKyAgICAgICAgICAgIGlmIChlbnRyeS52YWx1
ZS5pc1ByaXZhdGVBY2Nlc3MoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5F
IGJvb2wgaGFzUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKICAgICB7
CiAgICAgICAgIGlmICghbV9yYXJlRGF0YSkKQEAgLTI4MCw2ICszMTgsOSBAQCBwcml2YXRlOgog
CiAgICAgVmVjdG9yPFBhY2tlZFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+IG1fdmFyaWFibGVz
OwogICAgIFZlY3RvcjxWYXJpYWJsZUVudmlyb25tZW50RW50cnk+IG1fdmFyaWFibGVNZXRhZGF0
YTsKKyAgICBWZWN0b3I8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4gbV9wcml2YXRlQWNjZXNz
TmFtZXM7CisgICAgVmVjdG9yPFByaXZhdGVOYW1lRW50cnk+IG1fcHJpdmF0ZU5hbWVNZXRhZGF0
YTsKKwogICAgIHVuc2lnbmVkIG1faGFzaDsKICAgICBib29sIG1faXNFdmVyeXRoaW5nQ2FwdHVy
ZWQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVk
VHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3Bw
CmluZGV4IGU0NGMxYTM5Nzk0YjI0YmNkODdhZWYzOThhN2MyODI1N2VmMGM1MmQuLjE5YWFmODE2
YTQxNzYyN2IwMGI1MmI3NjUyMWVhZWU4MzFjOTQyYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTk4MCw2ICs5ODAsNyBAQCBwdWJsaWM6
CiAgICAgICAgIG1fYml0VmVjdG9ycy5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9iaXRWZWN0
b3JzKTsKICAgICAgICAgbV9jb25zdGFudElkZW50aWZpZXJTZXRzLmVuY29kZShlbmNvZGVyLCBy
YXJlRGF0YS5tX2NvbnN0YW50SWRlbnRpZmllclNldHMpOwogICAgICAgICBtX25lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyID0gcmFyZURhdGEubV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjsK
KyAgICAgICAgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9IHJhcmVEYXRhLm1fcHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQ7CiAgICAgfQogCiAgICAgVW5saW5rZWRDb2RlQmxvY2s6OlJhcmVEYXRh
KiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikgY29uc3QKQEAgLTk5NCw2ICs5OTUsNyBAQCBwdWJs
aWM6CiAgICAgICAgIG1fYml0VmVjdG9ycy5kZWNvZGUoZGVjb2RlciwgcmFyZURhdGEtPm1fYml0
VmVjdG9ycyk7CiAgICAgICAgIG1fY29uc3RhbnRJZGVudGlmaWVyU2V0cy5kZWNvZGUoZGVjb2Rl
ciwgcmFyZURhdGEtPm1fY29uc3RhbnRJZGVudGlmaWVyU2V0cyk7CiAgICAgICAgIHJhcmVEYXRh
LT5tX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyID0gbV9uZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplcjsKKyAgICAgICAgcmFyZURhdGEtPm1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBtX3By
aXZhdGVCcmFuZFJlcXVpcmVtZW50OwogICAgICAgICByZXR1cm4gcmFyZURhdGE7CiAgICAgfQog
CkBAIC0xMDA3LDYgKzEwMDksNyBAQCBwcml2YXRlOgogICAgIENhY2hlZFZlY3RvcjxDYWNoZWRC
aXRWZWN0b3I+IG1fYml0VmVjdG9yczsKICAgICBDYWNoZWRWZWN0b3I8Q2FjaGVkQ29uc3RhbnRJ
ZGVudGlmaWVyU2V0RW50cnk+IG1fY29uc3RhbnRJZGVudGlmaWVyU2V0czsKICAgICB1bnNpZ25l
ZCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIDogMTsKKyAgICB1bnNpZ25lZCBtX3ByaXZh
dGVCcmFuZFJlcXVpcmVtZW50IDogMTsKIH07CiAKIGNsYXNzIENhY2hlZFZhcmlhYmxlRW52aXJv
bm1lbnRSYXJlRGF0YSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8VmFyaWFibGVFbnZpcm9ubWVudDo6
UmFyZURhdGE+IHsKQEAgLTExODgsNyArMTE5MSw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZh
dGU6Ci0gICAgQ2FjaGVkSGFzaFNldDxDYWNoZWRSZWZQdHI8Q2FjaGVkVW5pcXVlZFN0cmluZ0lt
cGw+LCBJZGVudGlmaWVyUmVwSGFzaD4gbV9wcml2YXRlTmFtZXM7CisgICAgQ2FjaGVkSGFzaE1h
cDxDYWNoZWRSZWZQdHI8Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGwsIFVuaXF1ZWRTdHJpbmdJbXBs
LCBXVEY6OlBhY2tlZFB0clRyYWl0czxVbmlxdWVkU3RyaW5nSW1wbD4+LCBQcml2YXRlTmFtZUVu
dHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0lt
cGw+PiwgUHJpdmF0ZU5hbWVFbnRyeUhhc2hUcmFpdHM+IG1fcHJpdmF0ZU5hbWVzOwogfTsKIAog
Y2xhc3MgQ2FjaGVkU3ltYm9sVGFibGUgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFN5bWJvbFRhYmxl
PiB7CkBAIC0xNzQ0LDIxICsxNzQ3LDIxIEBAIHB1YmxpYzoKICAgICB2b2lkIGVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6UmFyZURhdGEm
IHJhcmVEYXRhKQogICAgIHsKICAgICAgICAgbV9jbGFzc1NvdXJjZS5lbmNvZGUoZW5jb2Rlciwg
cmFyZURhdGEubV9jbGFzc1NvdXJjZSk7Ci0gICAgICAgIG1fcGFyZW50U2NvcGVURFpWYXJpYWJs
ZXMuZW5jb2RlKGVuY29kZXIsIHJhcmVEYXRhLm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOwor
ICAgICAgICBtX3BhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudC5lbmNvZGUoZW5jb2Rlciwg
cmFyZURhdGEubV9wYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQpOwogICAgIH0KIAogICAg
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpSYXJlRGF0YSogZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpIGNvbnN0CiAgICAgewogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
UmFyZURhdGEqIHJhcmVEYXRhID0gbmV3IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpSYXJl
RGF0YSB7IH07CiAgICAgICAgIG1fY2xhc3NTb3VyY2UuZGVjb2RlKGRlY29kZXIsIHJhcmVEYXRh
LT5tX2NsYXNzU291cmNlKTsKLSAgICAgICAgYXV0byBwYXJlbnRTY29wZVREWlZhcmlhYmxlcyA9
IG1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXMuZGVjb2RlKGRlY29kZXIpOwotICAgICAgICByYXJl
RGF0YS0+bV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcyA9IFdURk1vdmUocGFyZW50U2NvcGVURFpW
YXJpYWJsZXMpOworICAgICAgICBhdXRvIHBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCA9
IG1fcGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50LmRlY29kZShkZWNvZGVyKTsKKyAgICAg
ICAgcmFyZURhdGEtPm1fcGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50ID0gV1RGTW92ZShw
YXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQpOwogICAgICAgICByZXR1cm4gcmFyZURhdGE7
CiAgICAgfQogCiBwcml2YXRlOgogICAgIENhY2hlZFNvdXJjZUNvZGVXaXRob3V0UHJvdmlkZXIg
bV9jbGFzc1NvdXJjZTsKLSAgICBDYWNoZWRDb21wYWN0VmFyaWFibGVNYXBIYW5kbGUgbV9wYXJl
bnRTY29wZVREWlZhcmlhYmxlczsKKyAgICBDYWNoZWRDb21wYWN0VmFyaWFibGVNYXBIYW5kbGUg
bV9wYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQ7CiB9OwogCiBjbGFzcyBDYWNoZWRGdW5j
dGlvbkV4ZWN1dGFibGUgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlPiB7CkBAIC0xNzk0LDYgKzE3OTcsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgc3Vw
ZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdXBlckJpbmRpbmc7IH0KICAgICB1bnNpZ25l
ZCBkZXJpdmVkQ29udGV4dFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2Rlcml2ZWRDb250ZXh0VHlw
ZTsgfQogICAgIHVuc2lnbmVkIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjsgfQorICAgIHVuc2lnbmVkIHByaXZh
dGVCcmFuZFJlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlQnJhbmRSZXF1aXJl
bWVudDsgfQogCiAgICAgSWRlbnRpZmllciBuYW1lKERlY29kZXImIGRlY29kZXIpIGNvbnN0IHsg
cmV0dXJuIG1fbmFtZS5kZWNvZGUoZGVjb2Rlcik7IH0KICAgICBJZGVudGlmaWVyIGVjbWFOYW1l
KERlY29kZXImIGRlY29kZXIpIGNvbnN0IHsgcmV0dXJuIG1fZWNtYU5hbWUuZGVjb2RlKGRlY29k
ZXIpOyB9CkBAIC0xODIyLDcgKzE4MjYsOCBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fcGFy
YW1ldGVyc1N0YXJ0T2Zmc2V0IDogMzE7CiAgICAgdW5zaWduZWQgbV90eXBlUHJvZmlsaW5nU3Rh
cnRPZmZzZXQ7CiAgICAgdW5zaWduZWQgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0OwotICAgIHVu
c2lnbmVkIG1fcGFyYW1ldGVyQ291bnQ7CisgICAgdW5zaWduZWQgbV9wYXJhbWV0ZXJDb3VudDoz
MTsKKyAgICB1bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsKICAgICBTb3Vy
Y2VQYXJzZU1vZGUgbV9zb3VyY2VQYXJzZU1vZGU7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3Rv
cktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZnVuY3Rpb25Nb2RlIDogMjsgLy8gRnVuY3Rpb25N
b2RlCkBAIC0xODc5LDcgKzE4ODQsNiBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgaXNDbGFzc0Nv
bnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzQ2xhc3NDb250ZXh0OyB9CiAgICAgdW5zaWduZWQg
Y29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gbV9jb25zdHJ1Y3RvcktpbmQ7IH0KICAg
ICB1bnNpZ25lZCBkZXJpdmVkQ29udGV4dFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2Rlcml2ZWRD
b250ZXh0VHlwZTsgfQotICAgIHVuc2lnbmVkIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkg
Y29uc3QgeyByZXR1cm4gbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjsgfQogICAgIHVuc2ln
bmVkIGV2YWxDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXZhbENvbnRleHRUeXBlOyB9
CiAgICAgdW5zaWduZWQgaGFzVGFpbENhbGxzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNUYWlsQ2Fs
bHM7IH0KICAgICB1bnNpZ25lZCBoYXNDaGVja3BvaW50cygpIGNvbnN0IHsgcmV0dXJuIG1faGFz
Q2hlY2twb2ludHM7IH0KQEAgLTE5MTEsNyArMTkxNSw2IEBAIHByaXZhdGU6CiAgICAgdW5zaWdu
ZWQgbV9pc0NsYXNzQ29udGV4dCA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQg
OiAyOwogICAgIHVuc2lnbmVkIG1fZGVyaXZlZENvbnRleHRUeXBlIDogMjsKLSAgICB1bnNpZ25l
ZCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIDogMTsKICAgICB1bnNpZ25lZCBtX2V2YWxD
b250ZXh0VHlwZSA6IDI7CiAgICAgdW5zaWduZWQgbV9oYXNUYWlsQ2FsbHMgOiAxOwogICAgIHVu
c2lnbmVkIG1fY29kZVR5cGUgOiAyOwpAQCAtMjE5Miw2ICsyMTk1LDcgQEAgQUxXQVlTX0lOTElO
RSB2b2lkIENhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFVubGkKICAgICBtX3N1cGVyQmluZGluZyA9IGV4ZWN1dGFibGUubV9zdXBlckJpbmRp
bmc7CiAgICAgbV9kZXJpdmVkQ29udGV4dFR5cGUgPSBleGVjdXRhYmxlLm1fZGVyaXZlZENvbnRl
eHRUeXBlOwogICAgIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSBleGVjdXRhYmxlLm1f
bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI7CisgICAgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVu
dCA9IGV4ZWN1dGFibGUubV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudDsKIAogICAgIG1fcmFyZURh
dGEuZW5jb2RlKGVuY29kZXIsIGV4ZWN1dGFibGUubV9yYXJlRGF0YS5nZXQoKSk7CiAKQEAgLTIy
MzMsNiArMjIzNyw3IEBAIEFMV0FZU19JTkxJTkUgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6
OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKERlY29kZXImIGRlCiAgICAgLCBtX3R5cGVQcm9m
aWxpbmdTdGFydE9mZnNldChjYWNoZWRFeGVjdXRhYmxlLnR5cGVQcm9maWxpbmdTdGFydE9mZnNl
dCgpKQogICAgICwgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KGNhY2hlZEV4ZWN1dGFibGUudHlw
ZVByb2ZpbGluZ0VuZE9mZnNldCgpKQogICAgICwgbV9wYXJhbWV0ZXJDb3VudChjYWNoZWRFeGVj
dXRhYmxlLnBhcmFtZXRlckNvdW50KCkpCisgICAgLCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50
KGNhY2hlZEV4ZWN1dGFibGUucHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSkKICAgICAsIG1fZmVh
dHVyZXMoY2FjaGVkRXhlY3V0YWJsZS5mZWF0dXJlcygpKQogICAgICwgbV9zb3VyY2VQYXJzZU1v
ZGUoY2FjaGVkRXhlY3V0YWJsZS5zb3VyY2VQYXJzZU1vZGUoKSkKICAgICAsIG1fY29uc3RydWN0
b3JLaW5kKGNhY2hlZEV4ZWN1dGFibGUuY29uc3RydWN0b3JLaW5kKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRleCBhZmRjYzkwMjkxMzczZjUwZDA1
NzBlMzhjOGQ5MzVhMGFiZmM5YzliLi41ZTc1ZWJlZGE3YmRmZTQ2MmUyMWY0NjA0Y2JkMDY3NmE1
OTIwZmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2Fj
aGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAK
QEAgLTkyLDkgKzkyLDEyIEBAIFVubGlua2VkQ29kZUJsb2NrVHlwZSogZ2VuZXJhdGVVbmxpbmtl
ZENvZGVCbG9ja0ltcGwoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzCiAgICAgYm9vbCB1c2Vz
RXZhbCA9IHJvb3ROb2RlLT5mZWF0dXJlcygpICYgRXZhbEZlYXR1cmU7CiAgICAgRUNNQU1vZGUg
ZWNtYU1vZGUgPSByb290Tm9kZS0+ZmVhdHVyZXMoKSAmIFN0cmljdE1vZGVGZWF0dXJlID8gRUNN
QU1vZGU6OnN0cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgpOwogICAgIE5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyID0gTmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXI6Ok5vOwotICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19zYW1lX3Y8RXhlY3V0
YWJsZVR5cGUsIERpcmVjdEV2YWxFeGVjdXRhYmxlPikKKyAgICBQcml2YXRlQnJhbmRSZXF1aXJl
bWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpO
b25lOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19zYW1lX3Y8RXhlY3V0YWJsZVR5cGUsIERp
cmVjdEV2YWxFeGVjdXRhYmxlPikgewogICAgICAgICBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
ciA9IGV4ZWN1dGFibGUtPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCk7Ci0gICAgRXhlY3V0
YWJsZUluZm8gZXhlY3V0YWJsZUluZm8odXNlc0V2YWwsIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0
b3JLaW5kOjpOb25lLCBzY3JpcHRNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgQ2FjaGVU
eXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIGRlcml2ZWRDb250ZXh0VHlw
ZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGZh
bHNlLCBldmFsQ29udGV4dFR5cGUpOworICAgICAgICBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9
IGV4ZWN1dGFibGUtPnByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCk7CisgICAgfQorICAgIEV4ZWN1
dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsLCBmYWxzZSwgcHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIHNjcmlwdE1vZGUsIFN1cGVy
QmluZGluZzo6Tm90TmVlZGVkLCBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBh
cnNlTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwg
aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgZmFsc2UsIGV2YWxDb250ZXh0VHlwZSk7CiAKICAgICBV
bmxpbmtlZENvZGVCbG9ja1R5cGUqIHVubGlua2VkQ29kZUJsb2NrID0gVW5saW5rZWRDb2RlQmxv
Y2tUeXBlOjpjcmVhdGUodm0sIGV4ZWN1dGFibGVJbmZvLCBjb2RlR2VuZXJhdGlvbk1vZGUpOwog
ICAgIHVubGlua2VkQ29kZUJsb2NrLT5yZWNvcmRQYXJzZShyb290Tm9kZS0+ZmVhdHVyZXMoKSwg
cm9vdE5vZGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCksIGxpbmVDb3VudCwgdW5saW5rZWRFbmRD
b2x1bW4pOwpAQCAtMjQ0LDcgKzI0Nyw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBD
b2RlQ2FjaGU6OmdldFVubGlua2VkR2xvYmFsRnVuY3Rpb25FeGVjdXRhYmxlKFZNJiB2CiAgICAg
Ly8gVGhlIEZ1bmN0aW9uIGNvbnN0cnVjdG9yIG9ubHkgaGFzIGFjY2VzcyB0byBnbG9iYWwgdmFy
aWFibGVzLCBzbyBubyB2YXJpYWJsZXMgd2lsbCBiZSB1bmRlciBURFogdW5sZXNzIHRoZXkncmUK
ICAgICAvLyBpbiB0aGUgZ2xvYmFsIGxleGljYWwgZW52aXJvbm1lbnQsIHdoaWNoIHdlIGFsd2F5
cyBURFogY2hlY2sgYWNjZXNzZXMgZnJvbS4KICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVj
dEFiaWxpdHkgPSBjb25zdHJ1Y3RBYmlsaXR5Rm9yUGFyc2VNb2RlKG1ldGFkYXRhLT5wYXJzZU1v
ZGUoKSk7Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJs
ZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUodm0sIHNvdXJjZSwgbWV0YWRh
dGEsIFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2Ny
aXB0TW9kZTo6Q2xhc3NpYywgV1RGOjpudWxsb3B0LCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUs
IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObyk7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
OjpjcmVhdGUodm0sIHNvdXJjZSwgbWV0YWRhdGEsIFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNv
bnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgV1RGOjpudWxsb3B0
LCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpO
bywgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmUpOwogCiAgICAgaWYgKCFzb3VyY2UucHJv
dmlkZXIoKS0+c291cmNlVVJMRGlyZWN0aXZlKCkuaXNOdWxsKCkpCiAgICAgICAgIGZ1bmN0aW9u
RXhlY3V0YWJsZS0+c2V0U291cmNlVVJMRGlyZWN0aXZlKHNvdXJjZS5wcm92aWRlcigpLT5zb3Vy
Y2VVUkxEaXJlY3RpdmUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKaW5kZXggZmM3NjAxZGEyMDRiMTdiN2Y2ZTk0
MWM2NDg0ZDM2MGU1ZDRmZjQ2OS4uNDE2NDI2MjIwOGI5ZDM1YzM1NmVjNWYzMTc2NTI0YjdlNTNl
YThjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZh
bEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVj
dEV2YWxFeGVjdXRhYmxlLmNwcApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAotRGlyZWN0RXZhbEV4ZWN1dGFibGUqIERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBEZXJp
dmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250
ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBlIGV2YWxD
b250ZXh0VHlwZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFos
IEVDTUFNb2RlIGVjbWFNb2RlKQorRGlyZWN0RXZhbEV4ZWN1dGFibGUqIERpcmVjdEV2YWxFeGVj
dXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNl
Q29kZSYgc291cmNlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uQ29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0
VHlwZSBldmFsQ29udGV4dFR5cGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHZhcmlhYmxl
c1VuZGVyVERaLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAt
NDQsNyArNDQsNyBAQCBEaXJlY3RFdmFsRXhlY3V0YWJsZSogRGlyZWN0RXZhbEV4ZWN1dGFibGU6
OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKLSAgICBhdXRvKiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8RGlyZWN0RXZhbEV4ZWN1dGFibGU+KHZtLmhlYXApKSBEaXJlY3RFdmFsRXhlY3V0
YWJsZShnbG9iYWxPYmplY3QsIHNvdXJjZSwgZWNtYU1vZGUuaXNTdHJpY3QoKSwgZGVyaXZlZENv
bnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgaXNBcnJvd0Z1bmN0aW9uQ29u
dGV4dCwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBldmFsQ29udGV4dFR5cGUpOworICAgIGF1
dG8qIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxEaXJlY3RFdmFsRXhl
Y3V0YWJsZT4odm0uaGVhcCkpIERpcmVjdEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291
cmNlLCBlY21hTW9kZS5pc1N0cmljdCgpLCBkZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyLCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCwgaXNBcnJvd0Z1bmN0aW9u
Q29udGV4dCwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBldmFsQ29udGV4dFR5cGUpOwogICAg
IGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKIAogICAgIFBhcnNlckVycm9yIGVycm9y
OwpAQCAtNjcsMTAgKzY3LDEwIEBAIERpcmVjdEV2YWxFeGVjdXRhYmxlKiBEaXJlY3RFdmFsRXhl
Y3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgcmV0dXJu
IGV4ZWN1dGFibGU7CiB9CiAKLURpcmVjdEV2YWxFeGVjdXRhYmxlOjpEaXJlY3RFdmFsRXhlY3V0
YWJsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRl
eHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlG
dW5jdGlvbiwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSkKLSAgICA6IEV2YWxFeGVj
dXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNlLCBpblN0cmljdENvbnRleHQsIGRlcml2ZWRDb250
ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9u
LCBldmFsQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKQorRGlyZWN0RXZh
bEV4ZWN1dGFibGU6OkRpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpblN0cmljdENvbnRleHQsIERl
cml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVu
dCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBi
b29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0
VHlwZSkKKyAgICA6IEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNlLCBpblN0cmlj
dENvbnRleHQsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgaXNJ
bnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBldmFsQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyLCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCkKIHsKLSAgICBBU1NFUlQobmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPT0gTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vIHx8
IGRlcml2ZWRDb250ZXh0VHlwZSA9PSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRDb25zdHJ1
Y3RvckNvbnRleHQpOworICAgIEFTU0VSVCgobmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPT0g
TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vICYmIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50
ID09IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lKSB8fCBkZXJpdmVkQ29udGV4dFR5cGUg
PT0gRGVyaXZlZENvbnRleHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuaAppbmRleCAyNDA3NWE3ZjVhMzZjNzNmZWJhNDA3ZTcx
MDlhNmZjMzNmMjcwZDRiLi5hNGZhNjc2M2NhYjE1YjVkZGE2NDVhYTAyYzk2MjNiNzkyMmJkMTgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhl
Y3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxF
eGVjdXRhYmxlLmgKQEAgLTMxLDkgKzMxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIERp
cmVjdEV2YWxFeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEV2YWxFeGVjdXRhYmxlIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgRGlyZWN0RXZhbEV4ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2JhbE9iamVj
dCosIGNvbnN0IFNvdXJjZUNvZGUmLCBEZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVP
cmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1l
bnQqLCBFQ01BTW9kZSk7CisgICAgc3RhdGljIERpcmVjdEV2YWxFeGVjdXRhYmxlKiBjcmVhdGUo
SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgRGVyaXZlZENvbnRleHRUeXBlLCBO
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2
YWxDb250ZXh0VHlwZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCosIEVDTUFNb2RlKTsKIHBy
aXZhdGU6Ci0gICAgRGlyZWN0RXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBT
b3VyY2VDb2RlJiwgYm9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSwgTmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9v
bCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSk7CisgICAgRGlyZWN0
RXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBp
blN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUpOwogfTsK
IAogc3RhdGljX2Fzc2VydChzaXplb2YoRGlyZWN0RXZhbEV4ZWN1dGFibGUpID09IHNpemVvZihF
dmFsRXhlY3V0YWJsZSksICIiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V2YWxFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V2YWxFeGVjdXRhYmxlLmNwcAppbmRleCAyZWMxMzdhNzM2MjI0MjFiNWY5ZDEyMmMyNzM1MThk
NWU2Mzg2NDljLi4wYjNkNDE2NGFhNjVhYmQwMDRmZWU5OGI4Y2VjZTg3OTZkZmJjMmEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuY3BwCkBA
IC0zMiw5ICszMiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIEV2YWxF
eGVjdXRhYmxlOjpzX2luZm8gPSB7ICJFdmFsRXhlY3V0YWJsZSIsICZCYXNlOjpzX2luZm8sIG51
bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoRXZhbEV4ZWN1dGFibGUpIH07CiAK
LUV2YWxFeGVjdXRhYmxlOjpFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBEZXJp
dmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNv
bnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUgZXZh
bENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplcikKK0V2YWxFeGVjdXRhYmxlOjpFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaW5TdHJpY3RD
b250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJy
b3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29u
dGV4dFR5cGUgZXZhbENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQpCiAgICAgOiBCYXNlKGdsb2JhbE9iamVjdC0+dm0oKS5ldmFsRXhlY3V0
YWJsZVN0cnVjdHVyZS5nZXQoKSwgZ2xvYmFsT2JqZWN0LT52bSgpLCBzb3VyY2UsIGluU3RyaWN0
Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBpc0lu
c2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250ZXh0VHlwZSwgTm9JbnRyaW5zaWMpCiAgICAg
LCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihuZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplcikpCisgICAgLCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihwcml2YXRlQnJhbmRSZXF1aXJlbWVudCkpCiB7CiAgICAg
QVNTRVJUKHNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2VUeXBlKCkgPT0gU291cmNlUHJvdmlkZXJT
b3VyY2VUeXBlOjpQcm9ncmFtKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FdmFsRXhlY3V0YWJsZS5oCmluZGV4IDY3ZTY5Yzg2MjliYTNmYjM4MTE0ODExMzZiOGU3ZTk5
NDgwZWQ3NzEuLjUyNjAyNTFhY2VlMjI1ZTliNTc5ZjhlODJmNmVkYzgxMGM3YWRlZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaApAQCAtNjIs
MTMgKzYyLDE0IEBAIHB1YmxpYzoKIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIEV4ZWN1dGFi
bGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8odXNl
c0V2YWwoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2Ny
aXB0TW9kZTo6Q2xhc3NpYywgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9k
ZTo6UHJvZ3JhbU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBuZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplcigpLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlLCBldmFsQ29udGV4dFR5
cGUoKSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0
dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGZhbHNlLCBQcml2YXRlQnJhbmRSZXF1aXJl
bWVudDo6Tm9uZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRN
b2RlOjpDbGFzc2ljLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQ
cm9ncmFtTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyKCksIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgZmFsc2UsIGV2YWxDb250ZXh0VHlwZSgp
KTsgfQogCiAgICAgdW5zaWduZWQgbnVtVmFyaWFibGVzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2
YWxDb2RlQmxvY2stPm51bVZhcmlhYmxlcygpOyB9CiAgICAgdW5zaWduZWQgbnVtRnVuY3Rpb25I
b2lzdGluZ0NhbmRpZGF0ZXMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVt
RnVuY3Rpb25Ib2lzdGluZ0NhbmRpZGF0ZXMoKTsgfQogICAgIHVuc2lnbmVkIG51bVRvcExldmVs
RnVuY3Rpb25EZWNscygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1iZXJP
ZkZ1bmN0aW9uRGVjbHMoKTsgfQogICAgIGJvb2wgYWxsb3dEaXJlY3RFdmFsQ2FjaGUoKSBjb25z
dCB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+YWxsb3dEaXJlY3RFdmFsQ2FjaGUo
KTsgfQogICAgIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXI+KG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpOyB9CisgICAgUHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxQcml2YXRlQnJhbmRSZXF1aXJlbWVudD4obV9wcml2YXRlQnJhbmRSZXF1aXJlbWVu
dCk7IH0KICAgICBUZW1wbGF0ZU9iamVjdE1hcCYgZW5zdXJlVGVtcGxhdGVPYmplY3RNYXAoVk0m
KTsKIAogcHJvdGVjdGVkOgpAQCAtNzYsMTEgKzc3LDEyIEBAIHByb3RlY3RlZDoKICAgICBmcmll
bmQgY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKIAogICAgIHVzaW5nIEJhc2U6OmZpbmlzaENyZWF0
aW9uOwotICAgIEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29k
ZSYsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJv
d0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250
ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpOworICAgIEV2YWxFeGVjdXRhYmxl
KEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wgaW5TdHJpY3RDb250ZXh0
LCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBp
c0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50KTsKIAogICAgIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIHVuc2lnbmVkIG1f
bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgOiAxOworICAgIHVuc2lnbmVkIG1fcHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQgOiAxOwogCiAgICAgV3JpdGVCYXJyaWVyPEV4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2U+IG1fZXZhbENvZGVCbG9jazsKICAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRFdmFs
Q29kZUJsb2NrPiBtX3VubGlua2VkRXZhbENvZGVCbG9jazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKaW5kZXggNDE0ZTdiZGY3N2Fi
NGZjNzY0YjU2NWRmNmYxYmQ0YTBkNjRiMzBjYi4uN2EyOTEwZTg4N2YyYTE0ZTJmNTg5Mjc1YTBj
YjIxOGM3YjVlZDgyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhjZXB0aW9uSGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhjZXB0aW9uSGVscGVycy5jcHAKQEAgLTMyNiw3ICszMjYsNyBAQCBKU09iamVjdCogY3JlYXRl
VERaRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogSlNPYmplY3QqIGNyZWF0
ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7
Ci0gICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoIkNh
bm5vdCBhY2Nlc3MgaW52YWxpZCBwcml2YXRlIGZpZWxkIiksIGRlZmF1bHRTb3VyY2VBcHBlbmRl
ciwgVHlwZU5vdGhpbmcpOworICAgIHJldHVybiBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBtYWtlU3RyaW5nKCJJbnZhbGlkIHByaXZhdGUgbWVtYmVyIGFjY2VzcyIpLCBkZWZhdWx0U291
cmNlQXBwZW5kZXIsIFR5cGVOb3RoaW5nKTsKIH0KIAogSlNPYmplY3QqIGNyZWF0ZVJlZGVmaW5l
ZFByaXZhdGVOYW1lRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJs
ZS5jcHAKaW5kZXggOThkN2UyYjgzYTI3OTEyZmE1NGMyYzI1ZWUxODNiZmI0ZTA0NmM3My4uNzQ5
ODIwNTAxOGNkZWY4ZjNmODM2N2I0YmJlMmVmNzlkYmQxN2MxZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAK
QEAgLTY5LDcgKzY5LDcgQEAgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZSogSW5kaXJlY3RFdmFsRXhl
Y3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKIGNvbnN0ZXhwciBib29s
IGluU3RyaWN0Q29udGV4dCA9IGZhbHNlOwogY29uc3RleHByIGJvb2wgaW5zaWRlT3JkaW5hcnlG
dW5jdGlvbiA9IGZhbHNlOwogSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6SW5kaXJlY3RFdmFsRXhl
Y3V0YWJsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJv
d0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSkKLSAgICA6
IEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNlLCBpblN0cmljdENvbnRleHQsIGRl
cml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgaW5zaWRlT3JkaW5hcnlG
dW5jdGlvbiwgZXZhbENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8p
CisgICAgOiBFdmFsRXhlY3V0YWJsZShnbG9iYWxPYmplY3QsIHNvdXJjZSwgaW5TdHJpY3RDb250
ZXh0LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGluc2lkZU9y
ZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXI6Ok5vLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZSkKIHsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAppbmRleCBhMzA2OWEwMmNkYzNhYTk4MWUz
MjA1NDVhZDFhOTQ1ODNkMTM0YWIwLi41YzczOTE1NDM3YmU2ZmQzMDFhN2M1YmM2M2Y2Y2Y0ZTE5
OGQ0MjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3Bl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcApAQCAt
MzM5LDggKzMzOSwxNCBAQCB2b2lkIEpTU2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5k
ZXJURFooSlNTY29wZSogc2NvcGUsIFZhcmlhYmxlRW52aXJvbm1lbgogICAgICAgICBmb3IgKGF1
dG8gZW5kID0gc3ltYm9sVGFibGUtPmVuZChsb2NrZXIpLCBpdGVyID0gc3ltYm9sVGFibGUtPmJl
Z2luKGxvY2tlcik7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCiAgICAgICAgICAgICByZXN1bHQuYWRk
KGl0ZXItPmtleSk7CiAgICAgICAgIGlmIChzeW1ib2xUYWJsZS0+aGFzUHJpdmF0ZU5hbWVzKCkp
IHsKLSAgICAgICAgICAgIGZvciAoYXV0byBuYW1lIDogc3ltYm9sVGFibGUtPnByaXZhdGVOYW1l
cygpKQotICAgICAgICAgICAgICAgIHJlc3VsdC51c2VQcml2YXRlTmFtZShuYW1lKTsgICAgCisg
ICAgICAgICAgICBhdXRvIHByaXZhdGVOYW1lcyA9IHN5bWJvbFRhYmxlLT5wcml2YXRlTmFtZXMo
KTsKKyAgICAgICAgICAgIGZvciAoYXV0byBlbmQgPSBwcml2YXRlTmFtZXMuZW5kKCksIGl0ZXIg
PSBwcml2YXRlTmFtZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgeworICAgICAgICAg
ICAgICAgIGlmIChpdGVyLT52YWx1ZS5pc1ByaXZhdGVBY2Nlc3MoKSkgeworICAgICAgICAgICAg
ICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IHJlc3VsdC5hZGRQcml2YXRlTmFtZShpdGVyLT5rZXkp
OworICAgICAgICAgICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gaXRlci0+
dmFsdWU7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dC51c2VQcml2YXRlTmFtZShpdGVyLT5rZXkpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlLmgKaW5kZXggMDk5ZDg5OWFkNWU2M2E3NDMzNThlMmFiYjIwYWIz
NGY1OWI5NjBlYy4uYjg1OTE0ZmY4ZWEwZGQwM2M2MjQ3NzUzNTk2ZmY0MmQ1NjE2NmIzNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZS5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKIAogICAgIERFQ0xBUkVfSU5G
TzsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4g
RXhlY3V0YWJsZUluZm8odXNlc0V2YWwoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6TW9kdWxlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRl
ZCwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFsdWF0ZU1vZGUsIGRlcml2ZWRDb250ZXh0VHlw
ZSgpLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8sIGlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQoKSwgZmFsc2UsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5m
byBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFs
KCksIGZhbHNlLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZSwgZmFsc2UsIENvbnN0cnVj
dG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUsIFN1cGVyQmluZGluZzo6
Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUV2YWx1YXRlTW9kZSwgZGVyaXZlZENv
bnRleHRUeXBlKCksIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObywgaXNBcnJvd0Z1bmN0
aW9uQ29udGV4dCgpLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsgfQogCiAgICAgVW5s
aW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2soKSB7IHJldHVybiBtX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5nZXQoKTsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCmluZGV4IDBkMmY1YWNm
NzljZGY1NzQ5OGU2YTczYzA2NzJkNmRkNGJmODg0NzguLmY0ZDYwZTViNDA3NDc1MTMzMjJkNDM2
NDU4ZmQ4OGVmYTgzOTkyZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnMuY3BwCkBAIC01MzEsNiArNTMxLDkgQEAgdm9pZCBPcHRpb25zOjpyZWNvbXB1dGVEZXBlbmRl
bnRPcHRpb25zKCkKICAgICAgICAgT3B0aW9uczo6cmFuZG9tSW50ZWdyaXR5QXVkaXRSYXRlKCkg
PSAwOwogICAgIGVsc2UgaWYgKE9wdGlvbnM6OnJhbmRvbUludGVncml0eUF1ZGl0UmF0ZSgpID4g
MS4wKQogICAgICAgICBPcHRpb25zOjpyYW5kb21JbnRlZ3JpdHlBdWRpdFJhdGUoKSA9IDEuMDsK
KyAgICAKKyAgICBpZiAoT3B0aW9uczo6dXNlUHJpdmF0ZU1ldGhvZHMoKSkKKyAgICAgICAgT3B0
aW9uczo6dXNlUHJpdmF0ZUNsYXNzRmllbGRzKCkgPSB0cnVlOwogCiAgICAgaWYgKCFPcHRpb25z
OjphbGxvd1Vuc3VwcG9ydGVkVGllcnMoKSkgewogI2RlZmluZSBESVNBQkxFX1RJRVJTKG9wdGlv
biwgZmxhZ3MsIC4uLikgZG8geyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9uc0xpc3QuaAppbmRleCAyZTE5YjA4ZGY5NmY3ZTAyNzFlMmVjNzAzZDE0ZTM0NTAyMTAzNzI2
Li5hNTI4OGQyNjBlNmNlZmVjNGQ3N2Q4Y2Q5MTkyYTczNTdlZTkzNzE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAgLTUxMyw2ICs1MTMsNyBAQCBj
b25zdGV4cHIgYm9vbCBlbmFibGVXZWJBc3NlbWJseVN0cmVhbWluZ0FwaSA9IGZhbHNlOwogICAg
IHYoQm9vbCwgZXhwb3NlUHJvZmlsZXJzT25HbG9iYWxPYmplY3QsIGZhbHNlLCBOb3JtYWwsICJJ
ZiB0cnVlLCB3ZSB3aWxsIGV4cG9zZSBmdW5jdGlvbnMgdG8gZW5hYmxlL2Rpc2FibGUgYm90aCB0
aGUgc2FtcGxpbmcgcHJvZmlsZXIgYW5kIHRoZSBzdXBlciBzYW1wbGVyIikgXAogICAgIHYoQm9v
bCwgYWxsb3dVbnN1cHBvcnRlZFRpZXJzLCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2ls
bCBub3QgZGlzYWJsZSBERkcgb3IgRlRMIHdoZW4gYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUgaXMg
ZW5hYmxlZC4iKSBcCiAgICAgdihCb29sLCB1c2VQcml2YXRlQ2xhc3NGaWVsZHMsIGZhbHNlLCBO
b3JtYWwsICJJZiB0cnVlLCB0aGUgcGFyc2VyIHdpbGwgdW5kZXJzdGFuZCBwcml2YXRlIGRhdGEg
ZmllbGRzIGluc2lkZSBjbGFzc2VzLiIpIFwKKyAgICB2KEJvb2wsIHVzZVByaXZhdGVNZXRob2Rz
LCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgdGhlIHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHJp
dmF0ZSBtZXRob2RzIGluc2lkZSBjbGFzc2VzLiIpIFwKICAgICB2KEJvb2wsIHJldHVybkVhcmx5
RnJvbUluZmluaXRlTG9vcHNGb3JGdXp6aW5nLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAg
ICAgdihTaXplLCBlYXJseVJldHVybkZyb21JbmZpbml0ZUxvb3BzTGltaXQsIDEzMDAwMDAwMDAs
IE5vcm1hbCwgIldoZW4gcmV0dXJuRWFybHlGcm9tSW5maW5pdGVMb29wc0ZvckZ1enppbmcgaXMg
dHJ1ZSwgdGhpcyBkZXRlcm1pbmVzIHRoZSBudW1iZXIgb2YgZXhlY3V0aW9ucyBhIGxvb3AgY2Fu
IHJ1biBmb3IgYmVmb3JlIGp1c3QgcmV0dXJuaW5nLiBUaGlzIGlzIGhlbHBmdWwgZm9yIHRoZSBm
dXp6ZXIgc28gaXQgZG9lc24ndCBnZXQgc3R1Y2sgaW4gaW5maW5pdGUgbG9vcHMuIikgXAogICAg
IHYoQm9vbCwgdXNlTElDTUZ1enppbmcsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCmluZGV4
IGI4NzE1YWE3MmJiY2I3MzM5ZDZlMzQxM2FjNTljNzQ0MTE3YjgyYTguLjk0OTc2MzEyMDVjYTBl
NGQwYTI5NGUwNDVjZTc2YjcxYWQxMTQ0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaApAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6
CiAgICAgICAgIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1
dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8odXNlc0V2YWwoKSwgZmFs
c2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xh
c3NpYywgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1v
ZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8s
IGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgZmFsc2UsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSk7
IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4
ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGZhbHNlLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6
Tm9uZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpD
bGFzc2ljLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFt
TW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpO
bywgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25l
KTsgfQogCiAgICAgVGVtcGxhdGVPYmplY3RNYXAmIGVuc3VyZVRlbXBsYXRlT2JqZWN0TWFwKFZN
Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRh
YmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcApp
bmRleCAxNjRjYTZkNDMxMGU2YmIzOGU2NDdlMmY2YmUyZjlmN2Q5ZjMyNjVjLi5mYjQ2MDAxYmFl
ZDJmOWMxYzg3ZTU3MjJlMjYxNWI0MTQ1ZDE4NzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCkBAIC0xODQsNyArMTg0LDcgQEAgU3ltYm9sVGFi
bGUqIFN5bWJvbFRhYmxlOjpjbG9uZVNjb3BlUGFydChWTSYgdm0pCiAKICAgICAgICAgewogICAg
ICAgICAgICAgZm9yIChhdXRvIG5hbWUgOiBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcykKLSAg
ICAgICAgICAgICAgICByZXN1bHQtPm1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChuYW1l
KTsKKyAgICAgICAgICAgICAgICByZXN1bHQtPm1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFk
ZChuYW1lLmtleSwgbmFtZS52YWx1ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAppbmRleCA1OWE3MjMwNWQzYTcw
NDIwYWJiMWFmNGVmYmU2N2ZkNmNjZGZkZWEwLi5jMzYxZjk4NmNiZGMxYmUwMWNhZWIzYjg4MjUy
NmY5MGMxMGNiOGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
eW1ib2xUYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRh
YmxlLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJTY29wZWRBcmd1bWVudHNUYWJsZS5o
IgogI2luY2x1ZGUgIlR5cGVMb2NhdGlvbi5oIgogI2luY2x1ZGUgIlZhck9mZnNldC5oIgorI2lu
Y2x1ZGUgIlZhcmlhYmxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJXYXRjaHBvaW50LmgiCiAj
aW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CkBAIC00NTAsOCAr
NDUxLDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmlu
Z0ltcGw+LCBSZWZQdHI8VHlwZVNldD4sIElkZW50aWZpZXJSZXBIYXNoPiBVbmlxdWVUeXBlU2V0
TWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDxWYXJPZmZzZXQsIFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4+IE9mZnNldFRvVmFyaWFibGVNYXA7CiAgICAgdHlwZWRlZiBWZWN0b3I8U3ltYm9sVGFi
bGVFbnRyeSo+IExvY2FsVG9FbnRyeVZlYzsKLSAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPFVu
aXF1ZWRTdHJpbmdJbXBsPiwgSWRlbnRpZmllclJlcEhhc2g+IFByaXZhdGVOYW1lU2V0OwotICAg
IHR5cGVkZWYgV1RGOjpJdGVyYXRvclJhbmdlPHR5cGVuYW1lIFByaXZhdGVOYW1lU2V0OjppdGVy
YXRvcj4gUHJpdmF0ZU5hbWVJdGVyYXRvclJhbmdlOworICAgIHR5cGVkZWYgV1RGOjpJdGVyYXRv
clJhbmdlPHR5cGVuYW1lIFZhcmlhYmxlRW52aXJvbm1lbnQ6OlByaXZhdGVOYW1lczo6aXRlcmF0
b3I+IFByaXZhdGVOYW1lSXRlcmF0b3JSYW5nZTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENl
bGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKQEAgLTYwNSwxNCArNjA1LDE0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IG1ha2VJdGVyYXRvclJhbmdlKG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmJlZ2luKCksIG1f
cmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmVuZCgpKTsKICAgICB9CiAKLSAgICB2b2lkIGFkZFBy
aXZhdGVOYW1lKFVuaXF1ZWRTdHJpbmdJbXBsKiBrZXkpCisgICAgdm9pZCBhZGRQcml2YXRlTmFt
ZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBrZXksIFByaXZhdGVOYW1lRW50cnkg
dmFsdWUpCiAgICAgewogICAgICAgICBBU1NFUlQoa2V5ICYmICFrZXktPmlzU3ltYm9sKCkpOwog
ICAgICAgICBpZiAoIW1fcmFyZURhdGEpCiAgICAgICAgICAgICBtX3JhcmVEYXRhID0gV1RGOjpt
YWtlVW5pcXVlPFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7CiAKLSAgICAgICAgQVNTRVJUKCFtX3Jh
cmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5jb250YWlucyhrZXkpKTsKLSAgICAgICAgbV9yYXJlRGF0
YS0+bV9wcml2YXRlTmFtZXMuYWRkKGtleSk7CisgICAgICAgIEFTU0VSVChtX3JhcmVEYXRhLT5t
X3ByaXZhdGVOYW1lcy5maW5kKGtleSkgPT0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZW5k
KCkpOworICAgICAgICBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoa2V5LCB2YWx1ZSk7
CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW50cnk+CkBAIC03NTYsNyArNzU2LDcg
QEAgcHVibGljOgogICAgICAgICBPZmZzZXRUb1ZhcmlhYmxlTWFwIG1fb2Zmc2V0VG9WYXJpYWJs
ZU1hcDsKICAgICAgICAgVW5pcXVlVHlwZVNldE1hcCBtX3VuaXF1ZVR5cGVTZXRNYXA7CiAgICAg
ICAgIFdyaXRlQmFycmllcjxDb2RlQmxvY2s+IG1fY29kZUJsb2NrOwotICAgICAgICBQcml2YXRl
TmFtZVNldCBtX3ByaXZhdGVOYW1lczsKKyAgICAgICAgVmFyaWFibGVFbnZpcm9ubWVudDo6UHJp
dmF0ZU5hbWVzIG1fcHJpdmF0ZU5hbWVzOwogICAgIH07CiAKIHByaXZhdGU6CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGYyMDY1ZmE1YjY1
ZTlhMThmYjllMWY1MGJkMjkzYzI4ZmMyNTQ5NWMuLmNjMTI3NTBhOWFlOTU0MzZlOTY2NmYxN2I5
OWE2Y2JiMjMxYWZkZDggMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMTAtMjAgIENhaW8gTGltYSAgPHRp
Y2Fpb2xpbWFAZ21haWwuY29tPgorCisgICAgICAgIFtFU05leHRdIEltcGxlbWVudCBwcml2YXRl
IG1ldGhvZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5NDQzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogc3RyZXNzL3ByaXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVyLWNhbGwtZnJvbS1h
cnJvdy1mdW5jdGlvbi5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtYnJhbmQt
aW5zdGFsbGVkLWFmdGVyLXN1cGVyLWNhbGwtZnJvbS1ldmFsLmpzOiBBZGRlZC4KKyAgICAgICAg
KiBzdHJlc3MvcHJpdmF0ZS1tZXRob2QtYnJhbmQtY2hlY2suanM6IEFkZGVkLgorICAgICAgICAq
IHN0cmVzcy9wcml2YXRlLW1ldGhvZC1jb21wYXJpc29uLmpzOiBBZGRlZC4KKyAgICAgICAgKiBz
dHJlc3MvcHJpdmF0ZS1tZXRob2QtZXh0ZW5kcy1icmFuZC1jaGVjay5qczogQWRkZWQuCisgICAg
ICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWdldC1hbmQtY2FsbC5qczogQWRkZWQuCisgICAg
ICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9kLW5lc3RlZC1jbGFzcy5qczogQWRkZWQuCisgICAg
ICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1vbi1wcm94eS5qczogQWRkZWQuCisgICAgICAg
ICogc3RyZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWRpcmVjdC1ldmFsLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1sOgorCiAyMDIwLTEwLTE5ICBBbGV4ZXkg
U2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICBbV2ViSURMXSAlSW50
ZXJmYWNlJS5wcm90b3R5cGUuY29uc3RydWN0b3Igc2hvdWxkIGJlIGRlZmluZWQgb24gW1tTZXRd
XSByZWNlaXZlcgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1icmFuZC1pbnN0
YWxsZWQtYWZ0ZXItc3VwZXItY2FsbC1mcm9tLWFycm93LWZ1bmN0aW9uLmpzIGIvSlNUZXN0cy9z
dHJlc3MvcHJpdmF0ZS1icmFuZC1pbnN0YWxsZWQtYWZ0ZXItc3VwZXItY2FsbC1mcm9tLWFycm93
LWZ1bmN0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlMjljN2JjMTFjMzYzNDM5MTViZDIwMmU4MDIyMzdh
ODgwNDFlNGYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLWJyYW5k
LWluc3RhbGxlZC1hZnRlci1zdXBlci1jYWxsLWZyb20tYXJyb3ctZnVuY3Rpb24uanMKQEAgLTAs
MCArMSwyNyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUi
KQorCitmdW5jdGlvbiBhc3NlcnQoYSwgZSkgeworICAgIGlmIChhICE9PSBlKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworfQor
CitjbGFzcyBBIHt9CisKK2NsYXNzIEMgZXh0ZW5kcyBBIHsKKyAgICAjbWV0aG9kKCkgeworICAg
ICAgICByZXR1cm4gImJhc2UiOworICAgIH0KKworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAg
ICBsZXQgaW5pdCA9ICgpID0+IHN1cGVyKCk7CisgICAgICAgIGluaXQoKTsKKyAgICB9CisKKyAg
ICBiYXNlQWNjZXNzKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jbWV0aG9kKCk7CisgICAgfQor
fQorCitsZXQgYyA9IG5ldyBDKCk7Cithc3NlcnQoYy5iYXNlQWNjZXNzKCksICJiYXNlIik7CisK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVy
LXN1cGVyLWNhbGwtZnJvbS1ldmFsLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1icmFuZC1p
bnN0YWxsZWQtYWZ0ZXItc3VwZXItY2FsbC1mcm9tLWV2YWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWUxNmVl
MzhlMzQxY2NjMTYxMDU0ZGIxNzJiNWUyMjFmYjY4NmM4MgotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL3ByaXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVyLWNhbGwtZnJv
bS1ldmFsLmpzCkBAIC0wLDAgKzEsMjYgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2
YXRlTWV0aG9kcz10cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsKKyAgICBpZiAoYSAh
PT0gZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBn
b3Q6ICIgKyBhKTsKK30KKworY2xhc3MgQSB7fQorCitjbGFzcyBDIGV4dGVuZHMgQSB7CisgICAg
I21ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuICJiYXNlIjsKKyAgICB9CisKKyAgICBjb25zdHJ1
Y3RvcigpIHsKKyAgICAgICAgZXZhbCgic3VwZXIoKSIpOworICAgIH0KKworICAgIGJhc2VBY2Nl
c3MoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtZXRob2QoKTsKKyAgICB9Cit9CisKK2xldCBj
ID0gbmV3IEMoKTsKK2Fzc2VydChjLmJhc2VBY2Nlc3MoKSwgImJhc2UiKTsKKwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtYnJhbmQtY2hlY2suanMgYi9KU1Rlc3Rz
L3N0cmVzcy9wcml2YXRlLW1ldGhvZC1icmFuZC1jaGVjay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTUxNzVh
M2Y1YmNhZjliMjQwYjE5NjAwYTdiN2JkZDFlYjA1ZTQ5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtYnJhbmQtY2hlY2suanMKQEAgLTAsMCArMSwzMyBA
QAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitmdW5j
dGlvbiBhc3NlcnQoYSwgZSkgeworICAgIGlmIChhICE9PSBlKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworfQorCitjbGFzcyBD
IHsKKyAgICAjbSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI2Y7CisgICAgfQorCisgICAgbWV0
aG9kKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jbSgpOworICAgIH0KKworICAgICNmID0gNDsK
K30KKworbGV0IGMgPSBuZXcgQygpOworYXNzZXJ0KGMubWV0aG9kKCksIDQpOworCit0cnkgewor
ICAgIGNsYXNzIEMgeworICAgICAgICAjbSgpIHsgcmV0dXJuIDM7IH0KKyAgICB9CisKKyAgICBs
ZXQgbyA9IG5ldyBDKCk7CisgICAgYy5tZXRob2QuY2FsbChvKTsKK30gY2F0Y2ggKGUpIHsKKyAg
ICBhc3NlcnQoZSBpbnN0YW5jZW9mIFR5cGVFcnJvciwgdHJ1ZSk7Cit9CisKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWNvbXBhcmlzb24uanMgYi9KU1Rlc3RzL3N0
cmVzcy9wcml2YXRlLW1ldGhvZC1jb21wYXJpc29uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2ZGE3ODY3YmE0
OGViNzdhMWI0MDE0Y2Y0ZWY2NDE2ZDEyNGE3ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9wcml2YXRlLW1ldGhvZC1jb21wYXJpc29uLmpzCkBAIC0wLDAgKzEsMzEgQEAKKy8v
QCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2Vy
dCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChsaHMsIHJocykgeworICAgICAgICBpZiAo
bGhzICE9PSByaHMpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsg
bGhzICsgIiBidWcgZ290OiAiICsgcmhzKTsKKyAgICB9LAorCisgICAgdGhyb3dzOiBmdW5jdGlv
biAoZXhwZWN0ZWRFcnJvciwgb3ApIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICBvcCgpOwor
ICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBl
Y3RlZEVycm9yKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRv
IHRocm93OiAiICsgZXhwZWN0ZWRFcnJvciArICIgYnV0IHRocmV3OiAiICsgZSk7CisgICAgICAg
IH0KKyAgICB9Cit9OworCitjbGFzcyBDIHsKKyAgICAjbSgpIHsgcmV0dXJuICd0ZXN0MjYyJzsg
fQorCisgICAgZ2V0UHJpdmF0ZU1ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI207Cisg
ICAgfQorfQorCitsZXQgYzEgPSBuZXcgQygpOworbGV0IGMyID0gbmV3IEMoKTsKKworYXNzZXJ0
LnNhbWVWYWx1ZShjMS5nZXRQcml2YXRlTWV0aG9kKCksIGMyLmdldFByaXZhdGVNZXRob2QoKSk7
CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWV4dGVuZHMtYnJh
bmQtY2hlY2suanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1leHRlbmRzLWJyYW5k
LWNoZWNrLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMyNjY0YjJmY2NjZjY4OTVjMjE0NTFmNzY5NzhjN2EyODRj
N2EzZDEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1l
eHRlbmRzLWJyYW5kLWNoZWNrLmpzCkBAIC0wLDAgKzEsNDEgQEAKKy8vQCByZXF1aXJlT3B0aW9u
cygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsK
KyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiAr
IGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKK30KKworY2xhc3MgQmFzZSB7CisgICAgI21CYXNlKCkg
eworICAgICAgICByZXR1cm4gNDsKKyAgICB9CisKKyAgICBtZXRob2RCYXNlKCkgeworICAgICAg
ICByZXR1cm4gdGhpcy4jbUJhc2UoKTsKKyAgICB9Cit9CisKK2NsYXNzIEMgZXh0ZW5kcyBCYXNl
IHsKKyAgICAjbSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI2Y7CisgICAgfQorCisgICAgbWV0
aG9kKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jbSgpOworICAgIH0KKworICAgICNmID0gMTU7
Cit9CisKK2xldCBjID0gbmV3IEMoKTsKK2Fzc2VydChjLm1ldGhvZCgpLCAxNSk7Cithc3NlcnQo
Yy5tZXRob2RCYXNlKCksIDQpOworCitsZXQgYmFzZSA9IG5ldyBCYXNlICgpOworYXNzZXJ0KGJh
c2UubWV0aG9kQmFzZSgpLCA0KTsKK3RyeSB7CisgICAgYy5tZXRob2QuY2FsbChiYXNlKTsKK30g
Y2F0Y2ggKGUpIHsKKyAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIFR5cGVFcnJvciwgdHJ1ZSk7Cit9
CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWdldC1hbmQtY2Fs
bC5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWdldC1hbmQtY2FsbC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xMzE3ZTFlNzdlNDMzNmQ0ZWRiOGI4MzA3ZjYzNWJkODBhNmEyZjg4Ci0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtZ2V0LWFuZC1jYWxsLmpz
CkBAIC0wLDAgKzEsMjQgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9k
cz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChsaHMs
IHJocykgeworICAgICAgICBpZiAobGhzICE9PSByaHMpCisgICAgICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIkV4cGVjdGVkOiAiICsgbGhzICsgIiBidWcgZ290OiAiICsgcmhzKTsKKyAgICB9Cit9
OworCitjbGFzcyBDIHsKKyAgICAjbSgpIHsgcmV0dXJuIHRoaXMuX3Y7IH0KKworICAgIGdldFBy
aXZhdGVNZXRob2QoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtOworICAgIH0KK30KKworbGV0
IGMgPSBuZXcgQygpOworCitsZXQgbzEgPSB7X3Y6ICd0ZXN0MjYyJ307CitsZXQgbzIgPSB7X3Y6
ICdmb28nfTsKK2Fzc2VydC5zYW1lVmFsdWUoYy5nZXRQcml2YXRlTWV0aG9kKCkuY2FsbChvMSks
ICd0ZXN0MjYyJyk7Cithc3NlcnQuc2FtZVZhbHVlKGMuZ2V0UHJpdmF0ZU1ldGhvZCgpLmNhbGwo
bzIpLCAnZm9vJyk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9k
LW5lc3RlZC1jbGFzcy5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLW5lc3RlZC1j
bGFzcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44Y2RmNDg5OWE0M2U2OWVkMGRhYjM0YzIyNjNlZmQzODgzZDlh
MjJkCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtbmVz
dGVkLWNsYXNzLmpzCkBAIC0wLDAgKzEsNjggQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQ
cml2YXRlTWV0aG9kcz10cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsKKyAgICBpZiAo
YSAhPT0gZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1
dCBnb3Q6ICIgKyBhKTsKK30KKworKCgpID0+IHsKKyAgICBjbGFzcyBCYXNlIHsKKyAgICAgICAg
QyA9IGNsYXNzIHsKKyAgICAgICAgICAgIG1ldGhvZCgpIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gdGhpcy4jbUJhc2UoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgICNt
QmFzZSgpIHsKKyAgICAgICAgICAgIHJldHVybiA0OworICAgICAgICB9CisgICAgfQorCisgICAg
bGV0IGJhc2UgPSBuZXcgQmFzZSgpOworICAgIGxldCBjID0gbmV3IGJhc2UuQygpOworICAgIGFz
c2VydChjLm1ldGhvZC5jYWxsKGJhc2UpLCA0KTsKKworICAgIHRyeSB7CisgICAgICAgIGMubWV0
aG9kKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIFR5
cGVFcnJvciwgdHJ1ZSk7CisgICAgfQorfSkoKTsKKworLy8gVGVzdCBzaGFkb3cgbWV0aG9kcwor
CisoKCkgPT4geworICAgIGNsYXNzIEJhc2UgeworICAgICAgICBtZXRob2QoKSB7CisgICAgICAg
ICAgICByZXR1cm4gdGhpcy4jbSgpOworICAgICAgICB9CisKKyAgICAgICAgQyA9IGNsYXNzIHsK
KyAgICAgICAgICAgIG1ldGhvZChvKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG8uI20oKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgI20oKSB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHRoaXMuZm9vOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb28gPSA0OworICAg
ICAgICB9OworCisgICAgICAgICNtKCkgeworICAgICAgICAgICAgcmV0dXJuICJmb28iOworICAg
ICAgICB9CisgICAgfQorCisgICAgbGV0IGJhc2UgPSBuZXcgQmFzZSgpOworICAgIGxldCBjID0g
bmV3IGJhc2UuQygpOworICAgIGFzc2VydChjLm1ldGhvZChjKSwgNCk7CisgICAgYXNzZXJ0KGJh
c2UubWV0aG9kKCksICJmb28iKTsKKworICAgIHRyeSB7CisgICAgICAgIGMubWV0aG9kKGJhc2Up
OworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBUeXBlRXJy
b3IsIHRydWUpOworICAgIH0KK30pKCk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3By
aXZhdGUtbWV0aG9kcy1vbi1wcm94eS5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9k
cy1vbi1wcm94eS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYjVmZGZjYjYyMzRkNTQwYWEwZmExMmU4ZTc3NzZk
MDYzYWE1YTlmCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRo
b2RzLW9uLXByb3h5LmpzCkBAIC0wLDAgKzEsNDIgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11
c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGEsIGUsIG0pIHsKKyAg
ICBpZiAoYSAhPT0gZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKG0pOworfQorCitmdW5jdGlv
biBhc3NlcnRBcnJheUNvbnRlbnQoYSwgZSkgeworICAgIGFzc2VydChhLmxlbmd0aCwgZS5sZW5n
dGgsICJTaXplIG9mIGFycmF5cyBkb2Vzbid0IG1hdGNoIik7CisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBhLmxlbmd0aDsgaSsrKQorICAgICAgICBhc3NlcnQoYVtpXSwgZVtpXSwgImFbIiArIGkg
KyAiXSA9ICIgKyBhW2ldICsgIiBidXQgZVsiICsgaSArICJdID0gIiArIGVbaV0pOworfQorCits
ZXQgYXJyID0gW107CisKK2NsYXNzIFByb3h5QmFzZSB7CisgICAgY29uc3RydWN0b3IoKSB7Cisg
ICAgICAgIHJldHVybiBuZXcgUHJveHkodGhpcywgeworICAgICAgICAgICAgZ2V0OiBmdW5jdGlv
biAob2JqLCBwcm9wKSB7CisgICAgICAgICAgICAgICAgYXJyLnB1c2gocHJvcCk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIG9ialtwcm9wXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7Cisg
ICAgfQorfQorCitjbGFzcyBUZXN0IGV4dGVuZHMgUHJveHlCYXNlIHsKKyAgICAjbSgpIHsKKyAg
ICAgICAgcmV0dXJuIDM7CisgICAgfQorCisgICAgbWV0aG9kKCkgeworICAgICAgICByZXR1cm4g
dGhpcy4jbSgpOworICAgIH0KK30KKworbGV0IHQgPSBuZXcgVGVzdCgpOworbGV0IHIgPSB0Lm1l
dGhvZCgpOworYXNzZXJ0KHIsIDMsICJFeHBlY3RlZDogMyBidXQgZ290OiAiICsgcik7CisKK2Fz
c2VydEFycmF5Q29udGVudChhcnIsIFsnbWV0aG9kJ10pOworCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9wcml2YXRlLW5hbWVzLWF2YWlsYWJsZS1vbi1kaXJlY3QtZXZhbC5qcyBiL0pTVGVz
dHMvc3RyZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWRpcmVjdC1ldmFsLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjY0Y2UwZTBhZjgwNTc4ZTg5NzE2YTE2NzJlZGMxNzczMDViMDY0ZjMKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5hbWVzLWF2YWlsYWJsZS1vbi1kaXJl
Y3QtZXZhbC5qcwpAQCAtMCwwICsxLDIzIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJp
dmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5j
dGlvbiAobGhzLCByaHMpIHsKKyAgICAgICAgaWYgKGxocyAhPT0gcmhzKQorICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIHJocyArICIgYnVnIGdvdDogIiArIGxocyk7
CisgICAgfQorfTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgI20o
KSB7IHJldHVybiAndGVzdCc7IH0KKworICAgICAgICBjYWxsTWV0aG9kRnJvbUV2YWwoKSB7Cisg
ICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXM7CisgICAgICAgICAgICByZXR1cm4gZXZhbCgnc2Vs
Zi4jbSgpJyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAg
YXNzZXJ0LnNhbWVWYWx1ZShjLmNhbGxNZXRob2RGcm9tRXZhbCgpLCAndGVzdCcpOworfSkoKTsK
KwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sIGIvSlNUZXN0cy90ZXN0
MjYyL2NvbmZpZy55YW1sCmluZGV4IDMxZDg4ZWNkOTk4ZDEyMzAyYjAxNGJhYjNiNmY4NDgyMzYx
NTc2ZWIuLjQ3NDYwYjlkMzhlMTk1MTkxODRhODZlYmI1NDVkYjJiNWUyYTllYjggMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAorKysgYi9KU1Rlc3RzL3Rlc3QyNjIvY29u
ZmlnLnlhbWwKQEAgLTUsNiArNSw3IEBAIGZsYWdzOgogICBGaW5hbGl6YXRpb25SZWdpc3RyeTog
dXNlV2Vha1JlZnMKICAgY2xhc3MtZmllbGRzLXB1YmxpYzogdXNlUHVibGljQ2xhc3NGaWVsZHMK
ICAgY2xhc3MtZmllbGRzLXByaXZhdGU6IHVzZVByaXZhdGVDbGFzc0ZpZWxkcworICBjbGFzcy1t
ZXRob2RzLXByaXZhdGU6IHVzZVByaXZhdGVNZXRob2RzCiAgIEludGwuRGF0ZVRpbWVGb3JtYXQt
ZGF5UGVyaW9kOiB1c2VJbnRsRGF0ZVRpbWVGb3JtYXREYXlQZXJpb2QKIHNraXA6CiAgIGZlYXR1
cmVzOgpAQCAtMTYsNyArMTcsNiBAQCBza2lwOgogICAgIC0gbGVnYWN5LXJlZ2V4cAogCiAgICAg
LSBhcmJpdHJhcnktbW9kdWxlLW5hbWVzcGFjZS1uYW1lcwotICAgIC0gY2xhc3MtbWV0aG9kcy1w
cml2YXRlCiAgICAgLSBjbGFzcy1zdGF0aWMtZmllbGRzLXB1YmxpYwogICAgIC0gY2xhc3Mtc3Rh
dGljLWZpZWxkcy1wcml2YXRlCiAgICAgLSBjbGFzcy1zdGF0aWMtbWV0aG9kcy1wcml2YXRlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411978</attachid>
            <date>2020-10-21 06:15:16 -0700</date>
            <delta_ts>2020-10-22 13:30:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194434-20201021101513.patch</filename>
            <type>text/plain</type>
            <size>127024</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZTlkZjMyNzcwZDUyOTkxM2VjZmU1YzlhNjE5OTc2MDM1ZDBlNTdhLi5mYzYyZWNkNDM5NjVkNDg0
ZGM1MTk2ZWYxZDRiOGNhYzBlOTMwODFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNjUgQEAKKzIwMjAtMTAtMjAgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtFU05leHRdIEltcGxlbWVudCBwcml2YXRlIG1ldGhvZHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDQzNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYWRk
aW5nIHN1cHBvcnQgdG8gcHJpdmF0ZSBtZXRob2RzIGZvbGxvd2luZyB0aGUKKyAgICAgICAgc3Bl
Y2lmaWNhdGlvbiBvbiBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtcHJpdmF0ZS1tZXRob2RzLy4K
KyAgICAgICAgVGhpcyBpcyBpbnRyb2R1Y2luZyBhIG5ldyB3YXkgdG8gZGVjbGFyZSBwcml2YXRl
IG1ldGhvZHMgb24KKyAgICAgICAgY2xhc3Mgc3ludGF4LiBQcml2YXRlIG1ldGhvZHMgYXJlIG9u
bHkgYWNjZXNzaWJsZSB3aXRoaW4KKyAgICAgICAgY2xhc3NlcyB0aGV5IHdlcmUgZGVjbGFyZWQs
IGFuZCBvbmx5IGNhbiBiZSBjYWxsZWQgZnJvbQorICAgICAgICBvYmplY3RzIHRoYXQgYXJlIGlu
c3RhbmNlIG9mIHRoZXNlIGNsYXNzZXMuCisgICAgICAgIFRvIGd1YXJhbnRlZSBzdWNoIHJ1bGVz
LCB0aGUgcHJvcG9zYWwgcHJlc2VudHMgdGhlIGNvbmNlcHQgb2YKKyAgICAgICAgQnJhbmQgQ2hl
Y2suIER1cmluZyBjbGFzcyBldmFsdWF0aW9uLCBpZiBhIHByaXZhdGUgbWV0aG9kIGlzIHByZXNl
bnQsCisgICAgICAgIGEgYGJyYW5kYCBpcyBpbnN0YWxsZWQgaW4gdGhpcyBjbGFzcy4gRXZlcnkg
aW5zdGFuY2Ugb2Ygc3VjaCBjbGFzcworICAgICAgICB0aGVuIGdldHMgdGhpcyBicmFuZCBpbnN0
YWxsZWQgZHVyaW5nIGBbW0NvbnN0cnVjdF1dYCBvcGVyYXRpb24uIEl0CisgICAgICAgIG1lYW5z
IHRoYXQgYW4gb2JqZWN0IGNhbiBoYXZlIG11bHRpcGxlIGJyYW5kcyAoZS5nIHdoZW4gdGhlcmUg
aXMgYWxzbworICAgICAgICBwcml2YXRlIG1ldGhvZHMgZGVjbGFyZWQgb24gc3VwZXIgY2xhc3Mp
LiBCZWZvcmUgYWNjZXNzaW5nIGEgcHJpdmF0ZQorICAgICAgICBtZXRob2QsIHRoZXJlIGlzIGEg
Y2hlY2sgdG8gdmFsaWRhdGUgaWYgdGhlIHRhcmdldCBvZiB0aGUgY2FsbCBoYXMgdGhlCisgICAg
ICAgIGJyYW5kIG9mIGNhbGxlZSBtZXRob2QuCisgICAgICAgIFRoZSBicmFuZCBjaGVjayBtZWNo
YW5pc20gaXMgaW1wbGVtZW50ZWQgdXNpbmcgYSBgQHByaXZhdGVCcmFuZGAKKyAgICAgICAgc3Rv
cmVkIG9uIGNsYXNzIHNjb3BlLiBIZXJlIGlzIGEgcmVwcmVzZW50YXRpb24gb2YgaG93IHRoaXMg
bWVjaGFuaXNtCisgICAgICAgIHdvcmtzOgorCisgICAgICAgIGBgYAorICAgICAgICBjbGFzcyBD
IHsKKyAgICAgICAgICAgICNtKCkgeyByZXR1cm4gMzsgfQorICAgICAgICAgICAgbWV0aG9kKCkg
eyByZXR1cm4gdGhpcy4jbSgpOyB9CisgICAgICAgIH0KKworICAgICAgICBsZXQgYyA9IG5ldyBD
KCk7CisgICAgICAgIGNvbnNvbGUubG9nKGMubWV0aG9kKCkpOyAvLyBwcmludHMgMworICAgICAg
ICBgYGAKKworICAgICAgICBHZW5lcmF0ZWQgYnl0ZWNvZGUgZm9yIHRoZSBmb2xsb3dpbmcgcmVw
cmVzZW50YXRpb246CisgICAgICAgIGBgYAorICAgICAgICB7IC8vIGNsYXNzIGxleGljYWwgc2Nv
cGUKKyAgICAgICAgICAgIGNvbnN0IEBwcml2YXRlQnJhbmQgPSBAY3JlYXRlUHJpdmF0ZVN5bWJv
bCgpOworICAgICAgICAgICAgY29uc3QgI20gPSBmdW5jdGlvbiAoKSB7IHJldHVybiAzOyB9Cisg
ICAgICAgICAgICBDLnByb3RvdHlwZS5tZXRob2QgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICAgICBAZ2V0X3ByaXZhdGVfbmFtZSh0aGlzLCBAcHJpdmF0ZUJyYW5kKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gI20uY2FsbCh0aGlzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEMg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBAcHV0X3ByaXZhdGVfbmFtZSh0aGlzLCBA
cHJpdmF0ZUJyYW5kLCBAcHJpdmF0ZUJyYW5kKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICAgICAgY29uc29sZS5sb2coYy5tZXRob2Qo
KSk7IC8vIHByaW50cyAzCisgICAgICAgIGBgYAorCisgICAgICAgIFRoZSBicmFuZCBjaGVjayBp
cyBwZXJmb3JtZWQgYnkgYGdldF9wcml2YXRlX25hbWVgLCB3aGVyZSB3ZSByZS11c2UKKyAgICAg
ICAgdGhlIG1lY2hhbmlzbSBpbnRyb2R1Y2VkIGJ5IHByaXZhdGUgY2xhc3MgZmllbGRzLiBXZSBj
YW4gc2VlIHRoZQorICAgICAgICBwcml2YXRlIGJyYW5kIGFzIGEgc3BlY2lhbCBwcml2YXRlIGZp
ZWxkIGluc3RhbGxlZCBkdXJpbmcKKyAgICAgICAgYFtbQ29uc3RydWN0XV1gIG9wZXJhdGlvbi4g
U2luY2UgdGhlIHByaXZhdGUgYnJhbmQgaXMgYSBwcml2YXRlIGZpZWxkLAorICAgICAgICB3ZSB0
aHJvdyBgVHlwZUVycm9yYCB3aGVuIHRoZSBsb29rdXAgZmFpbC4KKworICAgICAgICBUbyBwcm9w
ZXJseSBzdG9yZSB0aGUgcHJpdmF0ZSBicmFuZCBvZiBhIGNsYXNzIG9uIGFsbCBvYmplY3RzLAor
ICAgICAgICBpbmNsdWRpbmcgUHJveGllcywgd2UgdXNlIGBwdXRfcHJpdmF0ZV9uYW1lYC4gVGhp
cyBpbnN0cnVjdGlvbiBwdXRzCisgICAgICAgIHZhbHVlIG9uIG9iamVjdCdzIHByb3BlcnRpZXMg
d2l0aG91dCBleGVjdXRpbmcgW1tQdXRdXSBzZW1hbnRpY3MuCisgICAgICAgIFdpdGggdGhpcyBk
ZXNpZ24sIHdlIGF2b2lkIGFsbG9jYXRpbmcgYSBmaWVsZCBmb3IgZXZlcnkgaW5zdGFuY2UKKyAg
ICAgICAgb2YgYSBjbGFzcywgc2luY2UgcHJpdmF0ZSBtZXRob2RzIGFyZSBzdG9yZWQgb24gY2xh
c3MKKyAgICAgICAgbGV4aWNhbCBzY29wZS4gRXZlcnkgb2JqZWN0IHdpbGwgaGF2ZSB0byBhbGxv
Y2F0ZSBpdHMgcHJpdmF0ZQorICAgICAgICBicmFuZCBsaXN0LiBUaGlzIGRlc2lnbiBpbnNlcnRz
IG5vIG92ZXJoZWFkIG9uIG9iamVjdHMgYW5kIGNsYXNzZXMKKyAgICAgICAgd2l0aG91dCBwcml2
YXRlIG1ldGhvZHMvYWNjZXNzb3IuCisKKyAgICAgICAgUmVzb2x2aW5nIGNvcnJlY3QgYnJhbmQg
Y2hlY2s6CisKKyAgICAgICAgSW4gdGhlIGNhc2Ugb2Ygc2hhZG93aW5nIG9yIG5lc3RlZCBzY29w
ZSwgd2UgbmVlZCB0byBlbWl0IGJyYW5kCisgICAgICAgIGNoZWNrcyB0byB0aGUgcmlnaHQgcHJp
dmF0ZSBicmFuZC4gU2VlIGNvZGUgYmVsb3c6CisKKyAgICAgICAgYGBgCisgICAgICAgIGNsYXNz
IEMgeworICAgICAgICAgICAgI20oKSB7IHJldHVybiAzOyB9CisgICAgICAgICAgICBtZXRob2Qo
KSB7IHJldHVybiB0aGlzLiNtKCk7fQorCisgICAgICAgICAgICBBID0gY2xhc3MgeworICAgICAg
ICAgICAgICAgICNtMigpIHsgcmV0dXJuIDM7IH0KKyAgICAgICAgICAgICAgICBmb28obykgeyBy
ZXR1cm4gdGhpcy4jbSgpOyB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYGBg
CisKKyAgICAgICAgVGhlIGNhbGwgb2YgIiNtIiBpbiBgZm9vYCByZWZlcnMgdG8gIkM6OiNtIi4g
SW4gc3VjaCBjYXNlLCB3ZSBuZWVkIHRvCisgICAgICAgIGNoZWNrIEMncyBwcml2YXRlIGJyYW5k
LCBpbnN0ZWFkIG9mIEEncyBwcml2YXRlIGJyYW5kLgorICAgICAgICBUbyBwZXJmb3JtIHRoZSBw
cm9wZXIgY2hlY2ssIHdlIGZpcnN0IHJlc29sdmUgc2NvcGUgb2YgIiNtIiBhbmQgdGhlbgorICAg
ICAgICBjaGVjayB0aGUgcHJpdmF0ZSBicmFuZCBvZiB0aGlzIHNjb3BlICh0aGUgc2NvcGUgd2hl
cmUgdGhlIHByaXZhdGUKKyAgICAgICAgbWV0aG9kIGFuZCBicmFuZCBhcmUgc3RvcmVkIGlzIHRo
ZSBzYW1lKS4KKyAgICAgICAgU28gdGhlIGJ5dGVjb2RlIHRvIGxvb2t1cCB0aGUgcmlnaHQgYnJh
bmQgaXM6CisKKyAgICAgICAgYGBgCisgICAgICAgIHJlc29sdmVfc2NvcGUgbG9jMTAsICIjbSIK
KyAgICAgICAgZ2V0X2Zyb21fc2NvcGUgbG9jMTEsIGxvYzEwLCAiQHByaXZhdGVCcmFuZCIKKyAg
ICAgICAgZ2V0X3ByaXZhdGVfbmFtZSBsb2MxMiwgdGhpcywgbG9jMTEKKyAgICAgICAgZ2V0X2Zy
b21fc2NvcGUgbG9jMTEsIGxvYzEwLCAiI20iCisgICAgICAgIC8vIHNldHVwIGNhbGwgZnJhbWUK
KyAgICAgICAgY2FsbCBsb2MxMSwgLi4uCisgICAgICAgIC8vIC4uLgorICAgICAgICBgYGAKKwor
ICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6CisgICAgICAgIChKU0M6
OkJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yKToKKyAgICAgICAg
KEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKToKKyAgICAgICAgKiBi
dWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaDoKKworICAgICAgICBXZSBhcmUgYWRkaW5nIGEg
bmV3IHBhcmFtZXRlciBgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnRgIHRvIHByb3BhZ2F0ZQorICAg
ICAgICB3aGVuIGEgZGVmYXVsdCBjb25zdHJ1Y3RvciBuZWVkcyB0byBlbWl0IGNvZGUgdG8gc2V0
dXAgcHJpdmF0ZSBicmFuZAorICAgICAgICBvbiBpbnN0YW5jZXMuCisKKyAgICAgICAgKiBidWls
dGlucy9CdWlsdGluTmFtZXMuaDoKKworICAgICAgICBBZGRpbmcgYEBwcml2YXRlQnJhbmRgIHRo
YXQgIHdlIHVzZSB0byBzdG9yZSBwcml2YXRlIGJyYW5kIG9uCisgICAgICAgIGNsYXNzJ3Mgc2Nv
cGUuCisKKyAgICAgICAgKiBieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oOgorICAgICAgICAoSlND
OjpFeGVjdXRhYmxlSW5mbzo6RXhlY3V0YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpFeGVjdXRh
YmxlSW5mbzo6cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgY29uc3QpOgorICAgICAgICAqIGJ5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxv
Y2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6cHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2Vu
ZXJhdG9yLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yOjpwcml2
YXRlQnJhbmRSZXF1aXJlbWVudCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZVVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2Rl
R2VuZXJhdG9yKToKKworICAgICAgICBXZSBjaGFuZ2VkIEJ5dGVjb2RlR2VuZXJhdG9yIGZvciBG
dW5jdGlvbk5vZGUgYW5kIEV2YWxOb2RlIHRvCisgICAgICAgIHByb3BhZ2F0ZSBwYXJlbnRTY29w
ZSBWYXJpYWJsZUVudmlyb25tZW50LiBUaGVzZSBlbnZpcm9ubWVudHMgc3RvcmVzCisgICAgICAg
IHByaXZhdGUgbmFtZSBlbnRyaWVzIHRoYXQgYXJlIHZpc2libGUgaW50byB0aGUgc2NvcGUgb2Yg
dGhlCisgICAgICAgIGZ1bmN0aW9uL2V2YWwgaW4gYWRkaXRpb24gdG8gVERaIHZhcmlhYmxlcy4K
KyAgICAgICAgVGhpcyBpcyByZXF1aXJlZCB0byBpZGVudGlmeSB0aGUga2luZCBvZiBhY2Nlc3Mg
YSBwcml2YXRlIG5hbWUgaXMKKyAgICAgICAgcmVmZXJyaW5nIHRvLCBzaW5jZSBpdCBjYW4gYmUg
YSBwcml2YXRlIGZpZWxkIG9yIGEgcHJpdmF0ZSBtZXRob2QuCisgICAgICAgIEdpdmVuIHRoaXMg
Y2hhbmdlLCB3ZSBjaGFuZ2VkIHRoZSBuYW1lIG9mIFZhcmlhYmxlRW52aXJvbm1lbnQKKyAgICAg
ICAgZnJvbSBgcGFyZW50U2NvcGVURFpWYXJpYWJsZXNgIHRvIGBwYXJlbnRTY29wZVZhcmlhYmxl
RW52aXJvbm1lbnRgLgorCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppbnN0YW50
aWF0ZUxleGljYWxWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEdldFByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRDcmVhdGVQcml2YXRlQnJhbmQpOgorCisgICAgICAgIFRoZSBwcm9jZXNzIHRvIGNyZWF0ZSBh
IHByaXZhdGUgYnJhbmQgaXMgYXMgZm9sbG93czoKKyAgICAgICAgICAgIDEuIENyZWF0ZSBhIFBy
aXZhdGVTeW1ib2wgdXNpbmcgYEBjcmVhdGVQcml2YXRlU3ltYm9sYC4KKyAgICAgICAgICAgIDIu
IFN0b3JlIHRoaXMgc3ltYm9sIGludG8gYSBnaXZlbiBzY29wZSAoaS5lIGNsYXNzIGxleGljYWwg
c2NvcGUpCisgICAgICAgICAgICAgICBvbiBgQHByaXZhdGVCcmFuZGAgdmFyaWFibGUuCisKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJbnN0YWxsUHJpdmF0ZUJyYW5kKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRQcml2YXRlQnJhbmQpOgor
CisgICAgICAgIFdlIGFkZGVkIGBtX3ByaXZhdGVOYW1lc1N0YWNrYCB0byBCeXRlY29kZUdlbmVy
YXRvciB0byByZXByZXNlbnQgdGhlCisgICAgICAgIHNjb3BlIGNoYWluIG9mIGF2YWlsYWJsZSBw
cml2YXRlIG5hbWVzIHdoaWxlIGdlbmVyYXRpbmcgYnl0ZWNvZGUuCisKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDaGVja1ByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjppc1ByaXZhdGVNZXRob2QpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6cHVzaFByaXZhdGVBY2Nlc3NOYW1lcyk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjpwb3BQcml2YXRlQWNjZXNzTmFtZXMpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6Z2V0QXZhaWxhYmxlUHJpdmF0ZUFjY2Vzc05hbWVzKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdldFZhcmlhYmxlc1VuZGVyVERaKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0luc3RhbmNlRmllbGRJbml0
aWFsaXplckZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRE
aXJlY3RHZXRCeVZhbCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpwcml2YXRlQnJh
bmRSZXF1aXJlbWVudCBjb25zdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpt
YWtlRnVuY3Rpb24pOgorCisgICAgICAgIFRoaXMgY2hhbmdlIGlzIHJlcXVpcmVkIHRvIHByb3Bl
cmx5IHByb3BhZ2F0ZSBQcml2YXRlQnJhbmRSZXF1aXJlbWVudAorICAgICAgICB0byBhcnJvdyBm
dW5jdGlvbnMgdGhhdCBjYW4gcG90ZW50aWFsbHkgY2FsbCBgc3VwZXIoKWAuCisKKyAgICAgICAg
KiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlM
aXN0Tm9kZTo6ZW1pdERlY2xhcmVQcml2YXRlRmllbGROYW1lcyk6CisgICAgICAgIChKU0M6OlBy
b3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlz
dE5vZGU6OmVtaXRQdXRDb25zdGFudFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6QmFzZURvdE5v
ZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKToKKworICAgICAgICBBZGRpbmcgc3VwcG9ydCB0byBw
cm9wZXJseSBhY2Nlc3MgcHJpdmF0ZSBtZXRob2QuIFNpbmNlIHdlIHN0b3JlCisgICAgICAgIHBy
aXZhdGUgbWV0aG9kcyBvbiBjbGFzcyBsZXhpY2FsIHNjb3BlLCB3ZSBuZWVkIGEgZGlmZmVyZW50
IHNldCBvZgorICAgICAgICBpbnN0cnVjdGlvbnMgdG8gYWNjZXNzIGEgcHJpdmF0ZSBtZXRob2Qu
CisKKyAgICAgICAgKEpTQzo6QmFzZURvdE5vZGU6OmVtaXRQdXRQcm9wZXJ0eSk6CisKKyAgICAg
ICAgSW4gdGhlIGNhc2Ugb2Ygd2UgdHJ5aW5nIHRvIHdyaXRlIGluIGEgcHJpdmF0ZSBtZXRob2Qs
IHdlIG5lZWQgdG8KKyAgICAgICAgdGhyb3cgYSBUeXBlRXJyb3IgYWNjb3JkaW5nIHRvIHNwZWNp
ZmljYXRpb24KKyAgICAgICAgKGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1wcml2YXRlLW1ldGhv
ZHMvI3NlYy1wcml2YXRlZmllbGRzZXQpLgorCisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbFZh
bHVlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UG9zdGZpeE5vZGU6OmVtaXRE
b3QpOgorICAgICAgICAoSlNDOjpQcmVmaXhOb2RlOjplbWl0RG90KToKKyAgICAgICAgKEpTQzo6
Q2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dl
ckNhbGxGcmFtZS5jcHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lOjpldmFsdWF0
ZVdpdGhTY29wZUV4dGVuc2lvbik6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwOgorICAgICAgICAoSlNDOjpldmFsKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgor
ICAgICAgICAoSlNDOjpGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUp
OgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3Bw
OgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6CisgICAgICAg
ICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpTY29wZTo6ZGVjbGFyZVByaXZhdGVN
ZXRob2QpOgorICAgICAgICAoSlNDOjpTY29wZTo6ZGVjbGFyZVByaXZhdGVGaWVsZCk6CisgICAg
ICAgIChKU0M6OlNjb3BlOjpkZWNsYXJlUHJpdmF0ZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAq
IHBhcnNlci9QYXJzZXJNb2Rlcy5oOgorICAgICAgICAqIHBhcnNlci9WYXJpYWJsZUVudmlyb25t
ZW50LmNwcDoKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVByaXZh
dGVNZXRob2QpOgorICAgICAgICAoSlNDOjpDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudDo6Q29t
cGFjdFZhcmlhYmxlRW52aXJvbm1lbnQpOgorICAgICAgICAoSlNDOjpDb21wYWN0VmFyaWFibGVF
bnZpcm9ubWVudDo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6OkNvbXBhY3RWYXJp
YWJsZUVudmlyb25tZW50Ojp0b1ZhcmlhYmxlRW52aXJvbm1lbnQgY29uc3QpOgorICAgICAgICAq
IHBhcnNlci9WYXJpYWJsZUVudmlyb25tZW50Lmg6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52
aXJvbm1lbnRFbnRyeTo6aXNQcml2YXRlRmllbGQgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJp
YWJsZUVudmlyb25tZW50RW50cnk6OmlzUHJpdmF0ZU1ldGhvZCBjb25zdCk6CisgICAgICAgIChK
U0M6OlZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeTo6c2V0SXNQcml2YXRlRmllbGQpOgorICAgICAg
ICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OnNldElzUHJpdmF0ZU1ldGhvZCk6Cisg
ICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6OmlzTWV0aG9kIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6aXNQcml2YXRlQWNjZXNzIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6YWRkUHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlND
OjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKEpT
Qzo6VmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVByaXZhdGVNZXRob2QpOgorICAgICAgICAo
SlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpoYXNQcml2YXRlQWNjZXNzIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5Ojppc1ByaXZhdGVOYW1lIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5OjpzZXRJc1By
aXZhdGVOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6
ZGVjbGFyZVByaXZhdGVOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0NhY2hlZFR5
cGVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ29kZUJsb2NrUmFyZURhdGE6OmVuY29kZSk6
CisgICAgICAgIChKU0M6OkNhY2hlZENvZGVCbG9ja1JhcmVEYXRhOjpkZWNvZGUgY29uc3QpOgor
ICAgICAgICAoSlNDOjpDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGVSYXJlRGF0YTo6ZW5jb2RlKToK
KyAgICAgICAgKEpTQzo6Q2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlUmFyZURhdGE6OmRlY29kZSBj
b25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6cHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpDYWNoZWRDb2RlQmxvY2s6OmRl
cml2ZWRDb250ZXh0VHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ29k
ZUJsb2NrOjpuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogcnVudGltZS9Db2RlQ2FjaGUuY3BwOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZVVubGlu
a2VkQ29kZUJsb2NrSW1wbCk6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0VW5saW5rZWRH
bG9iYWxGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvRGlyZWN0RXZhbEV4
ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRl
KToKKyAgICAgICAgKEpTQzo6RGlyZWN0RXZhbEV4ZWN1dGFibGU6OkRpcmVjdEV2YWxFeGVjdXRh
YmxlKToKKyAgICAgICAgKiBydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmg6CisgICAgICAg
ICogcnVudGltZS9FdmFsRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRh
YmxlOjpFdmFsRXhlY3V0YWJsZSk6CisgICAgICAgICogcnVudGltZS9FdmFsRXhlY3V0YWJsZS5o
OgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6ZXhlY3V0YWJsZUluZm8gY29uc3QpOgor
ICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgY29u
c3QpOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHA6CisgICAgICAgIChK
U0M6OmNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKToKKyAgICAgICAgKiBydW50aW1lL0lu
ZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpJbmRpcmVjdEV2YWxFeGVj
dXRhYmxlOjpJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKToKKyAgICAgICAgKiBydW50aW1lL0pTU2Nv
cGUuY3BwOgorICAgICAgICAoSlNDOjpKU1Njb3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1Vu
ZGVyVERaKToKKyAgICAgICAgKiBydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmg6Cisg
ICAgICAgICogcnVudGltZS9PcHRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6T3B0aW9uczo6cmVj
b21wdXRlRGVwZW5kZW50T3B0aW9ucyk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zTGlzdC5o
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50
aW1lL1N5bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OmNsb25lU2Nv
cGVQYXJ0KToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFRhYmxlLmg6CisKIDIwMjAtMTAtMjAg
IFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPiBhbmQgUGF2ZWwgRmVsZG1h
biA8cGF2ZWwuZmVsZG1hbkBnbWFpbC5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQWRk
IHNldFNjcmVlblNpemVPdmVycmlkZSBBUEkgdG8gdGhlIFBhZ2UgYWdlbnQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKaW5k
ZXggODMwNDk0NGJhYzQzOGJjOTc5MzRhNGEwMmQwMjE1OTU1YjRjYWNmYi4uYTY0NGQzMjIxYjY4
MzY1NDE5ZTRhMzNlYjFmNmFiOGZiNmUxNTRmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKQEAgLTU5LDcgKzU5LDcg
QEAgU291cmNlQ29kZSBCdWlsdGluRXhlY3V0YWJsZXM6OmRlZmF1bHRDb25zdHJ1Y3RvclNvdXJj
ZUNvZGUoQ29uc3RydWN0b3JLaW5kIGNvbnMKICAgICByZXR1cm4gU291cmNlQ29kZSgpOwogfQog
Ci1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVE
ZWZhdWx0Q29uc3RydWN0b3IoQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgY29uc3Qg
SWRlbnRpZmllciYgbmFtZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIpCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1
dGFibGVzOjpjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVj
dG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHBy
aXZhdGVCcmFuZFJlcXVpcmVtZW50KQogewogICAgIHN3aXRjaCAoY29uc3RydWN0b3JLaW5kKSB7
CiAgICAgY2FzZSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU6CkBAIC02Nyw3ICs2Nyw3IEBAIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZURlZmF1bHRD
b25zdHJ1Y3RvcihDb25zdHJ1CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29uc3RydWN0b3JL
aW5kOjpCYXNlOgogICAgIGNhc2UgQ29uc3RydWN0b3JLaW5kOjpFeHRlbmRzOgotICAgICAgICBy
ZXR1cm4gY3JlYXRlRXhlY3V0YWJsZShtX3ZtLCBkZWZhdWx0Q29uc3RydWN0b3JTb3VyY2VDb2Rl
KGNvbnN0cnVjdG9yS2luZCksIG5hbWUsIGNvbnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJpbGl0
eTo6Q2FuQ29uc3RydWN0LCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcik7CisgICAgICAgIHJl
dHVybiBjcmVhdGVFeGVjdXRhYmxlKG1fdm0sIGRlZmF1bHRDb25zdHJ1Y3RvclNvdXJjZUNvZGUo
Y29uc3RydWN0b3JLaW5kKSwgbmFtZSwgY29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5
OjpDYW5Db25zdHJ1Y3QsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBwcml2YXRlQnJhbmRS
ZXF1aXJlbWVudCk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVy
biBudWxscHRyOwpAQCAtNzgsNyArNzgsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShjb25zdCBTbwogICAg
IHJldHVybiBjcmVhdGVFeGVjdXRhYmxlKG1fdm0sIGNvZGUsIG5hbWUsIGNvbnN0cnVjdG9yS2lu
ZCwgY29uc3RydWN0QWJpbGl0eSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vKTsKIH0K
IAotVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRl
RXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgY29uc3QgSWRlbnRp
ZmllciYgbmFtZSwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJp
bGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplcikKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGlu
RXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rv
cktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgTmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVp
cmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KQogewogICAgIC8vIEZJWE1FOiBDYW4gd2Ug
anVzdCBtYWtlIE1ldGFEYXRhIGNvbXB1dGF0aW9uIGJlIGNvbnN0ZXhwciBhbmQgaGF2ZSB0aGUg
Y29tcGlsZXIgZG8gdGhpcyBmb3IgdXM/CiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MzI3MgpAQCAtMjUxLDcgKzI1MSw3IEBAIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUoVk0mIHZt
LCBjb25zdCBTCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNy
ZWF0ZSh2bSwgc291cmNlLCAmbWV0YWRhdGEsIGtpbmQsIGNvbnN0cnVjdEFiaWxpdHksIEpTUGFy
c2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgV1RGOjpudWxsb3B0LCBEZXJpdmVkQ29udGV4dFR5cGU6
Ok5vbmUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3ND
b25zdHJ1Y3Rvcik7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhl
Y3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUodm0sIHNvdXJjZSwg
Jm1ldGFkYXRhLCBraW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNs
YXNzaWMsIFdURjo6bnVsbG9wdCwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBuZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplciwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGlzQnVpbHRpbkRlZmF1
bHRDbGFzc0NvbnN0cnVjdG9yKTsKICAgICByZXR1cm4gZnVuY3Rpb25FeGVjdXRhYmxlOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1
dGFibGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFi
bGVzLmgKaW5kZXggNDUxNjM4ZTg3M2Y3OTZjOGM0ZDI2MjljN2I1YWFmYmZhZWIyNGI5OC4uNDNl
MzgyNzViMWI5YWEzNjE2N2EyYWU5MWQzNTg3ODYwMzgwNzgzYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaApAQCAtNTgsOSAr
NTgsOSBAQCBTb3VyY2VDb2RlIG5hbWUjI1NvdXJjZSgpOwogI3VuZGVmIEVYUE9TRV9CVUlMVElO
X0VYRUNVVEFCTEVTCiAKICAgICBzdGF0aWMgU291cmNlQ29kZSBkZWZhdWx0Q29uc3RydWN0b3JT
b3VyY2VDb2RlKENvbnN0cnVjdG9yS2luZCk7Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqIGNyZWF0ZURlZmF1bHRDb25zdHJ1Y3RvcihDb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50
aWZpZXImIG5hbWUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsKKyAgICBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yKENvbnN0cnVjdG9yS2lu
ZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFBy
aXZhdGVCcmFuZFJlcXVpcmVtZW50KTsKIAotICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogY3JlYXRlRXhlY3V0YWJsZShWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBJ
ZGVudGlmaWVyJiwgQ29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBOZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplcik7CisgICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiBjcmVhdGVFeGVjdXRhYmxlKFZNJiwgY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZp
ZXImLCBDb25zdHJ1Y3RvcktpbmQsIENvbnN0cnVjdEFiaWxpdHksIE5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9IFByaXZhdGVCcmFuZFJlcXVpcmVt
ZW50OjpOb25lKTsKIAogICAgIHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCmluZGV4IGMxZDVk
OTA0NmFhYmZkNmZlNWNiMzkzZDk1Y2UwN2E3MTExNzY2OGUuLjBkODI0NTc3NDkwYmFiYmM3MmY0
ODUzOGUxOTdjNDIzNjM4YTU5YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9CdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQnVpbHRpbk5hbWVzLmgKQEAgLTE3MSw2ICsxNzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBtYWNybyh3ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbCkgXAogICAgIG1hY3Jv
KHdlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbCkgXAogICAgIG1hY3JvKGlu
c3RhbmNlRmllbGRJbml0aWFsaXplcikgXAorICAgIG1hY3JvKHByaXZhdGVCcmFuZCkgXAogICAg
IG1hY3JvKGhhc093blByb3BlcnR5RnVuY3Rpb24pIFwKICAgICBtYWNybyhjcmVhdGVQcml2YXRl
U3ltYm9sKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhl
Y3V0YWJsZUluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxl
SW5mby5oCmluZGV4IDQ5ZWRkNTI4NWQ1YzJjMjhiMWM5YTRiY2VlZjQ1MTcxOTkwYmU5MWMuLmNk
NTlmYjRhNzMzZTkyNGU0ZWIxM2E5YzAwNjkzMDQyZDM5ZDlkZTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0zNiw5ICszNiwxMCBA
QCBlbnVtIGNsYXNzIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIDogdWludDhfdCB7IE5vLCBZ
ZXMgfTsKIC8vIEZJWE1FOiBUaGVzZSBmbGFncywgUGFyc2VyTW9kZXMgYW5kIHByb3BhZ2F0aW9u
IHRvIFhYWENvZGVCbG9ja3Mgc2hvdWxkIGJlIHJlb3JnYW5pemVkLgogLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0Nwogc3RydWN0IEV4ZWN1dGFibGVJbmZv
IHsKLSAgICBFeGVjdXRhYmxlSW5mbyhib29sIHVzZXNFdmFsLCBib29sIGlzQ29uc3RydWN0b3Is
IGJvb2wgaXNCdWlsdGluRnVuY3Rpb24sIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQs
IEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5n
LCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENv
bnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzQ2xhc3NDb250ZXh0
LCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKQorICAgIEV4ZWN1dGFibGVJbmZvKGJv
b2wgdXNlc0V2YWwsIGJvb2wgaXNDb25zdHJ1Y3RvciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQg
cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24sIENvbnN0cnVj
dG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBT
dXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBEZXJp
dmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250
ZXh0LCBib29sIGlzQ2xhc3NDb250ZXh0LCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBl
KQogICAgICAgICA6IG1fdXNlc0V2YWwodXNlc0V2YWwpCiAgICAgICAgICwgbV9pc0NvbnN0cnVj
dG9yKGlzQ29uc3RydWN0b3IpCisgICAgICAgICwgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4ocHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpKQogICAgICAgICAs
IG1faXNCdWlsdGluRnVuY3Rpb24oaXNCdWlsdGluRnVuY3Rpb24pCiAgICAgICAgICwgbV9jb25z
dHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCiAgICAg
ICAgICwgbV9zdXBlckJpbmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykp
CkBAIC01Nyw2ICs1OCw3IEBAIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiAKICAgICBib29sIHVz
ZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV91c2VzRXZhbDsgfQogICAgIGJvb2wgaXNDb25zdHJ1
Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNDb25zdHJ1Y3RvcjsgfQorICAgIFByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ+KG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQpOyB9CiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNC
dWlsdGluRnVuY3Rpb247IH0KICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9y
S2luZCk7IH0KICAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1cGVyQmluZGluZyk7IH0KQEAgLTcxLDYgKzcz
LDcgQEAgc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV91
c2VzRXZhbCA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKKyAgICB1bnNp
Z25lZCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVp
bHRpbkZ1bmN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CiAg
ICAgdW5zaWduZWQgbV9zdXBlckJpbmRpbmcgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggYjNhZGMwYjc3ZWI3
YzcyNDE4NmE5ODFjNjM1M2MzMTlhNTk5YjBlMC4uOTNkZmY3NzQyZDM3NGVlYzNlZmEyZGUwNzRl
Mjg0ODFmOTY5NjE1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC02OSw2ICs2OSwxMCBAQCBVbmxpbmtlZENvZGVC
bG9jazo6VW5saW5rZWRDb2RlQmxvY2soVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29k
ZVR5cGUgY29kZQogICAgICAgICBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KGhvbGRMb2NrKGNl
bGxMb2NrKCkpKTsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9uZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplciA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6
WWVzKTsKICAgICB9CisgICAgaWYgKGluZm8ucHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSA9PSBQ
cml2YXRlQnJhbmRSZXF1aXJlbWVudDo6TmVlZGVkKSB7CisgICAgICAgIGNyZWF0ZVJhcmVEYXRh
SWZOZWNlc3NhcnkoaG9sZExvY2soY2VsbExvY2soKSkpOworICAgICAgICBtX3JhcmVEYXRhLT5t
X3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByaXZhdGVC
cmFuZFJlcXVpcmVtZW50OjpOZWVkZWQpOworICAgIH0KIH0KIAogdm9pZCBVbmxpbmtlZENvZGVC
bG9jazo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
aAppbmRleCAwMGRjNjE2MzM1ZmQzMWIwNDMyNTFlMzQ0MDBlNTdkZWY1MzE1ZDVmLi4xZjUxZWNl
NWQ2Zjg2ZDcwOTUxMWI0YTRjMTgyYzY0Y2JmYTE4M2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMjY2LDYgKzI2Niwx
MyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6
Tm87CiAgICAgfQogCisgICAgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1fcmFyZURhdGEpCisgICAgICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ+KG1fcmFyZURh
dGEtPm1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOworICAgICAgICByZXR1cm4gUHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQ6Ok5vbmU7CisgICAgfQorCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFt
JikgY29uc3Q7CiAKICAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMmIGxpdmVuZXNzQW5hbHlz
aXMoQ29kZUJsb2NrKiBjb2RlQmxvY2spCkBAIC00MDcsNiArNDE0LDcgQEAgcHVibGljOgogICAg
ICAgICBSZWZDb3VudGVkQXJyYXk8Q29uc3RhbnRJZGVudGlmaWVyU2V0RW50cnk+IG1fY29uc3Rh
bnRJZGVudGlmaWVyU2V0czsKIAogICAgICAgICB1bnNpZ25lZCBtX25lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyIDogMTsKKyAgICAgICAgdW5zaWduZWQgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVu
dCA6IDE7CiAgICAgfTsKIAogICAgIGludCBvdXRPZkxpbmVKdW1wT2Zmc2V0KEluc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaAppbmRleCAyZWI5ODRjMWIwNWE0
NWUwYWE1MjBlMWZkMzc4YWQ5ZTJmYzkzMjIyLi45NGM2ODcwZTk5NGMyYmY1Yzk4MmNlOTUyZTRj
NTM0YmRjOTZiNDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaApAQCAtNTAsNiArNTAsNyBAQCBw
dWJsaWM6CiAgICAgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZygpIGNvbnN0IHsgcmV0dXJuIG1f
Y29kZUJsb2NrLT5zdXBlckJpbmRpbmcoKTsgfQogICAgIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3Jp
cHRNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnNjcmlwdE1vZGUoKTsgfQogICAg
IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkg
Y29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCk7
IH0KKyAgICBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5wcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpOyB9
CiAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT51c2VzRXZh
bCgpOyB9CiAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29kZUJsb2NrLT5wYXJzZU1vZGUoKTsgfQogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgeyBy
ZXR1cm4gbV9jb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmNwcAppbmRleCA0NjFkOWZhZGQ0OGIzNWJjOTRlZGQ2MTBiNzM4N2NlYTkwMmMxNGY2Li5m
MmYxMDBmODlhYTU3NWI2Nzg1ZGU2ODJmNzBjODMyZjRhNzViOTUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5jcHAKQEAgLTcwLDExICs3MCwxMSBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogCiAgICAgYm9vbCBp
c0NsYXNzQ29udGV4dCA9IGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpID09IFN1cGVyQmluZGlu
Zzo6TmVlZGVkOwogCi0gICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKHZtLCBGdW5jdGlvbkNvZGUsIEV4ZWN1dGFi
bGVJbmZvKGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1
bmN0aW9uS2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwgZXhlY3V0YWJsZS0+Y29uc3Ry
dWN0b3JLaW5kKCksIHNjcmlwdE1vZGUsIGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpLCBwYXJz
ZU1vZGUsIGV4ZWN1dGFibGUtPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBleGVjdXRhYmxlLT5uZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBmYWxzZSwgaXNDbGFzc0NvbnRleHQsIEV2YWxDb250
ZXh0VHlwZTo6RnVuY3Rpb25FdmFsQ29udGV4dCksIGNvZGVHZW5lcmF0aW9uTW9kZSk7CisgICAg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jazo6Y3JlYXRlKHZtLCBGdW5jdGlvbkNvZGUsIEV4ZWN1dGFibGVJbmZvKGZ1bmN0aW9uLT51
c2VzRXZhbCgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGV4ZWN1dGFibGUtPnByaXZhdGVC
cmFuZFJlcXVpcmVtZW50KCksIGZ1bmN0aW9uS2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlv
biwgZXhlY3V0YWJsZS0+Y29uc3RydWN0b3JLaW5kKCksIHNjcmlwdE1vZGUsIGV4ZWN1dGFibGUt
PnN1cGVyQmluZGluZygpLCBwYXJzZU1vZGUsIGV4ZWN1dGFibGUtPmRlcml2ZWRDb250ZXh0VHlw
ZSgpLCBleGVjdXRhYmxlLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBmYWxzZSwgaXND
bGFzc0NvbnRleHQsIEV2YWxDb250ZXh0VHlwZTo6RnVuY3Rpb25FdmFsQ29udGV4dCksIGNvZGVH
ZW5lcmF0aW9uTW9kZSk7CiAKLSAgICBWYXJpYWJsZUVudmlyb25tZW50IHBhcmVudFNjb3BlVERa
VmFyaWFibGVzID0gZXhlY3V0YWJsZS0+cGFyZW50U2NvcGVURFpWYXJpYWJsZXMoKTsKKyAgICBW
YXJpYWJsZUVudmlyb25tZW50IHBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCA9IGV4ZWN1
dGFibGUtPnBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCgpOwogICAgIEVDTUFNb2RlIGVj
bWFNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEVDTUFNb2RlOjpzdHJp
Y3QoKSA6IEVDTUFNb2RlOjpzbG9wcHkoKTsKLSAgICBlcnJvciA9IEJ5dGVjb2RlR2VuZXJhdG9y
OjpnZW5lcmF0ZSh2bSwgZnVuY3Rpb24uZ2V0KCksIHNvdXJjZSwgcmVzdWx0LCBjb2RlR2VuZXJh
dGlvbk1vZGUsICZwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgZWNtYU1vZGUpOworICAgIGVycm9y
ID0gQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKHZtLCBmdW5jdGlvbi5nZXQoKSwgc291cmNl
LCByZXN1bHQsIGNvZGVHZW5lcmF0aW9uTW9kZSwgJnBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9u
bWVudCwgZWNtYU1vZGUpOwogCiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC04Miw3ICs4Miw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAotVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUm
IHBhcmVudFNvdXJjZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rp
b25LaW5kIGtpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJT
Y3JpcHRNb2RlIHNjcmlwdE1vZGUsIE9wdGlvbmFsPENvbXBhY3RWYXJpYWJsZU1hcDo6SGFuZGxl
PiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250
ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIsIGJvb2wgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IpCitVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU291cmNlQ29kZSYgcGFyZW50U291cmNlLCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQga2luZCwgQ29uc3RydWN0
QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwg
T3B0aW9uYWw8Q29tcGFjdFZhcmlhYmxlTWFwOjpIYW5kbGU+IHBhcmVudFNjb3BlVmFyaWFibGVF
bnZpcm9ubWVudCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVC
cmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29sIGlzQnVpbHRpbkRl
ZmF1bHRDbGFzc0NvbnN0cnVjdG9yKQogICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQogICAgICwg
bV9maXJzdExpbmVPZmZzZXQobm9kZS0+Zmlyc3RMaW5lKCkgLSBwYXJlbnRTb3VyY2UuZmlyc3RM
aW5lKCkub25lQmFzZWRJbnQoKSkKICAgICAsIG1faXNJblN0cmljdENvbnRleHQobm9kZS0+aXNJ
blN0cmljdENvbnRleHQoKSkKQEAgLTEwMyw2ICsxMDMsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdAogICAgICwgbV90eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQobm9kZS0+ZnVuY3Rpb25LZXl3
b3JkU3RhcnQoKSkKICAgICAsIG1fdHlwZVByb2ZpbGluZ0VuZE9mZnNldChub2RlLT5zdGFydFN0
YXJ0T2Zmc2V0KCkgKyBub2RlLT5zb3VyY2UoKS5sZW5ndGgoKSAtIDEpCiAgICAgLCBtX3BhcmFt
ZXRlckNvdW50KG5vZGUtPnBhcmFtZXRlckNvdW50KCkpCisgICAgLCBtX3ByaXZhdGVCcmFuZFJl
cXVpcmVtZW50KHN0YXRpY19jYXN0PHVuc2lnbmVkPihwcml2YXRlQnJhbmRSZXF1aXJlbWVudCkp
CiAgICAgLCBtX2ZlYXR1cmVzKDApCiAgICAgLCBtX3NvdXJjZVBhcnNlTW9kZShub2RlLT5wYXJz
ZU1vZGUoKSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihu
b2RlLT5jb25zdHJ1Y3RvcktpbmQoKSkpCkBAIC0xMjIsMTIgKzEyMywxMyBAQCBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdAogICAgIEFTU0VSVChtX3NjcmlwdE1vZGUgPT0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHNjcmlwdE1vZGUpKTsKICAgICBBU1NFUlQobV9zdXBlckJpbmRpbmcgPT0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPnN1cGVyQmluZGluZygpKSk7CiAgICAgQVNTRVJUKG1fZGVy
aXZlZENvbnRleHRUeXBlID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXJpdmVkQ29udGV4dFR5
cGUpKTsKKyAgICBBU1NFUlQobV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9PSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4ocHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpKTsKICAgICBBU1NFUlQoIShtX2lz
QnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yICYmIGNvbnN0cnVjdG9yS2luZCgpID09IENv
bnN0cnVjdG9yS2luZDo6Tm9uZSkpOwogICAgIEFTU0VSVCghbV9uZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplciB8fCAoaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKSB8fCBkZXJpdmVkQ29udGV4
dFR5cGUgPT0gRGVyaXZlZENvbnRleHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KSk7
CiAgICAgaWYgKCFub2RlLT5jbGFzc1NvdXJjZSgpLmlzTnVsbCgpKQogICAgICAgICBzZXRDbGFz
c1NvdXJjZShub2RlLT5jbGFzc1NvdXJjZSgpKTsKLSAgICBpZiAocGFyZW50U2NvcGVURFpWYXJp
YWJsZXMpCi0gICAgICAgIGVuc3VyZVJhcmVEYXRhKCkubV9wYXJlbnRTY29wZVREWlZhcmlhYmxl
cyA9IFdURk1vdmUoKnBhcmVudFNjb3BlVERaVmFyaWFibGVzKTsKKyAgICBpZiAocGFyZW50U2Nv
cGVWYXJpYWJsZUVudmlyb25tZW50KQorICAgICAgICBlbnN1cmVSYXJlRGF0YSgpLm1fcGFyZW50
U2NvcGVWYXJpYWJsZUVudmlyb25tZW50ID0gV1RGTW92ZSgqcGFyZW50U2NvcGVWYXJpYWJsZUVu
dmlyb25tZW50KTsKIH0KIAogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6On5VbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCmluZGV4IDhmZmUzMDBkODQ0
MjcxZDRmNmRkZjkxNWQyZGJlMmE1MmZjMDJhN2YuLjU2MzY3ZWIwNWVlMGY1MThhM2U3OTdlOGI0
MmJlNDIyYmNjNzQ2OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCkBAIC03MCwxMCArNzAsMTAg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gJnZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
U3BhY2Uuc3BhY2U7CiAgICAgfQogCi0gICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBjcmVhdGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uTWV0
YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9uS2lu
ZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUg
c2NyaXB0TW9kZSwgT3B0aW9uYWw8Q29tcGFjdFZhcmlhYmxlTWFwOjpIYW5kbGU+IHBhcmVudFNj
b3BlVERaVmFyaWFibGVzLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBO
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9v
bCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvciA9IGZhbHNlKQorICAgIHN0YXRpYyBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNJiB2bSwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktp
bmQgdW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0
eSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIE9wdGlvbmFsPENvbXBhY3RWYXJpYWJs
ZU1hcDo6SGFuZGxlPiBwYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQsIERlcml2ZWRDb250
ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRl
QnJhbmRSZXF1aXJlbWVudCwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvciA9
IGZhbHNlKQogICAgIHsKICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGluc3Rh
bmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU+KHZtLmhlYXApKQotICAgICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUodm0s
IHZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBzb3VyY2UsIG5v
ZGUsIHVubGlua2VkRnVuY3Rpb25LaW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBzY3JpcHRNb2RlLCBX
VEZNb3ZlKHBhcmVudFNjb3BlVERaVmFyaWFibGVzKSwgZGVyaXZlZENvbnRleHRUeXBlLCBuZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplciwgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3Ip
OworICAgICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHZtLnVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBzb3VyY2UsIG5vZGUsIHVubGlua2Vk
RnVuY3Rpb25LaW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBzY3JpcHRNb2RlLCBXVEZNb3ZlKHBhcmVu
dFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCksIGRlcml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBpc0J1aWx0aW5EZWZh
dWx0Q2xhc3NDb25zdHJ1Y3Rvcik7CiAgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2
bSk7CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9CkBAIC0xNDMsNiArMTQzLDggQEAg
cHVibGljOgogICAgIENvZGVGZWF0dXJlcyBmZWF0dXJlcygpIGNvbnN0IHsgcmV0dXJuIG1fZmVh
dHVyZXM7IH0KICAgICBib29sIGhhc0NhcHR1cmVkVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4g
bV9oYXNDYXB0dXJlZFZhcmlhYmxlczsgfQogCisgICAgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQg
cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxQcml2
YXRlQnJhbmRSZXF1aXJlbWVudD4obV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7IH0KKwogICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKICAgICBzdGF0
aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCkBAIC0xNjgsMTEgKzE3MCwxMSBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiAhbV9yYXJlRGF0YS0+bV9jbGFzc1NvdXJjZS5pc051bGwoKTsKICAg
ICB9CiAKLSAgICBWYXJpYWJsZUVudmlyb25tZW50IHBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkg
Y29uc3QKKyAgICBWYXJpYWJsZUVudmlyb25tZW50IHBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9u
bWVudCgpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAoIW1fcmFyZURhdGEgfHwgIW1fcmFyZURh
dGEtPm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpCisgICAgICAgIGlmICghbV9yYXJlRGF0YSB8
fCAhbV9yYXJlRGF0YS0+bV9wYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQpCiAgICAgICAg
ICAgICByZXR1cm4gVmFyaWFibGVFbnZpcm9ubWVudCgpOwotICAgICAgICByZXR1cm4gbV9yYXJl
RGF0YS0+bV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5lbnZpcm9ubWVudCgpLnRvVmFyaWFibGVF
bnZpcm9ubWVudCgpOworICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9wYXJlbnRTY29wZVZh
cmlhYmxlRW52aXJvbm1lbnQuZW52aXJvbm1lbnQoKS50b1ZhcmlhYmxlRW52aXJvbm1lbnQoKTsK
ICAgICB9CiAgICAgCiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBp
c0Fycm93RnVuY3Rpb25QYXJzZU1vZGUocGFyc2VNb2RlKCkpOyB9CkBAIC0yMDgsNyArMjEwLDcg
QEAgcHVibGljOgogICAgICAgICBTb3VyY2VDb2RlIG1fY2xhc3NTb3VyY2U7CiAgICAgICAgIFN0
cmluZyBtX3NvdXJjZVVSTERpcmVjdGl2ZTsKICAgICAgICAgU3RyaW5nIG1fc291cmNlTWFwcGlu
Z1VSTERpcmVjdGl2ZTsKLSAgICAgICAgQ29tcGFjdFZhcmlhYmxlTWFwOjpIYW5kbGUgbV9wYXJl
bnRTY29wZVREWlZhcmlhYmxlczsKKyAgICAgICAgQ29tcGFjdFZhcmlhYmxlTWFwOjpIYW5kbGUg
bV9wYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQ7CiAgICAgICAgIFZlY3RvcjxKU1RleHRQ
b3NpdGlvbj4gbV9pbnN0YW5jZUZpZWxkTG9jYXRpb25zOwogICAgIH07CiAKQEAgLTIyOSw3ICsy
MzEsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKFZNJiwgU3RydWN0dXJlKiwgY29uc3QgU291cmNlQ29kZSYsIEZ1bmN0aW9uTWV0
YWRhdGFOb2RlKiwgVW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHksIEpTUGFy
c2VyU2NyaXB0TW9kZSwgT3B0aW9uYWw8Q29tcGFjdFZhcmlhYmxlTWFwOjpIYW5kbGU+LCAgSlND
OjpEZXJpdmVkQ29udGV4dFR5cGUsIEpTQzo6TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJv
b2wgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IpOworICAgIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKFZNJiwgU3RydWN0dXJlKiwgY29uc3QgU291cmNlQ29kZSYsIEZ1bmN0aW9u
TWV0YWRhdGFOb2RlKiwgVW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHksIEpT
UGFyc2VyU2NyaXB0TW9kZSwgT3B0aW9uYWw8Q29tcGFjdFZhcmlhYmxlTWFwOjpIYW5kbGU+LCAg
SlNDOjpEZXJpdmVkQ29udGV4dFR5cGUsIEpTQzo6TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIs
IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29sIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0
cnVjdG9yKTsKICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShEZWNvZGVyJiwgY29uc3Qg
Q2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlJik7CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxk
cmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CkBAIC0yNjEsNyArMjYzLDggQEAgcHJpdmF0ZToK
ICAgICB1bnNpZ25lZCBtX2lzQ2FjaGVkIDogMTsKICAgICB1bnNpZ25lZCBtX3R5cGVQcm9maWxp
bmdTdGFydE9mZnNldDsKICAgICB1bnNpZ25lZCBtX3R5cGVQcm9maWxpbmdFbmRPZmZzZXQ7Ci0g
ICAgdW5zaWduZWQgbV9wYXJhbWV0ZXJDb3VudDsKKyAgICB1bnNpZ25lZCBtX3BhcmFtZXRlckNv
dW50IDogMzE7CisgICAgdW5zaWduZWQgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA6IDE7CiAg
ICAgQ29kZUZlYXR1cmVzIG1fZmVhdHVyZXM7CiAgICAgU291cmNlUGFyc2VNb2RlIG1fc291cmNl
UGFyc2VNb2RlOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKaW5kZXggNDY3NDBkYThlNTU1N2FmOTU5YTJhZDE4MTM4MTkzNmFhYmQxYmM4MC4uYTgy
NWU3YTBjN2E5ZWNmMWVjNTBkNDRiOWQxODZkNTIzZTk1MmE0OSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
QEAgLTI4OCw3ICsyODgsNyBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJh
dGUoKQogICAgIHJldHVybiBQYXJzZXJFcnJvcihQYXJzZXJFcnJvcjo6RXJyb3JOb25lKTsKIH0K
IAotQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5v
ZGUqIHByb2dyYW1Ob2RlLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0
aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBWYXJp
YWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRUNNQU1vZGUgZWNtYU1v
ZGUpCitCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBQcm9ncmFt
Tm9kZSogcHJvZ3JhbU5vZGUsIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrLCBP
cHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFZh
cmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCwgRUNNQU1v
ZGUgZWNtYU1vZGUpCiAgICAgOiBCeXRlY29kZUdlbmVyYXRvckJhc2UobWFrZVVuaXF1ZTxVbmxp
bmtlZENvZGVCbG9ja0dlbmVyYXRvcj4odm0sIGNvZGVCbG9jayksIENvZGVCbG9jazo6bGxpbnRC
YXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKQogICAgICwgbV9jb2Rl
R2VuZXJhdGlvbk1vZGUoY29kZUdlbmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5vZGUocHJv
Z3JhbU5vZGUpCkBAIC0zMDQsNyArMzA0LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2Rl
R2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxpbmtlZFAKICAg
ICAsIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KHByb2dyYW1Ob2RlLT51c2Vz
QXJyb3dGdW5jdGlvbigpIHx8IHByb2dyYW1Ob2RlLT51c2VzRXZhbCgpKQogICAgICwgbV9lY21h
TW9kZShlY21hTW9kZSkKIHsKLSAgICBBU1NFUlRfVU5VU0VEKHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzLCAhcGFyZW50U2NvcGVURFpWYXJpYWJsZXMtPnNpemUoKSk7CisgICAgQVNTRVJUX1VOVVNF
RChwYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQsICFwYXJlbnRTY29wZVZhcmlhYmxlRW52
aXJvbm1lbnQtPnNpemUoKSk7CiAKICAgICBtX2NvZGVCbG9jay0+c2V0TnVtUGFyYW1ldGVycygx
KTsgLy8gQWxsb2NhdGUgc3BhY2UgZm9yICJ0aGlzIgogCkBAIC0zMzYsNyArMzM2LDcgQEAgQnl0
ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHBy
b2dyYW1Ob2RlLCBVbmxpbmtlZFAKICAgICB9CiB9CiAKLUJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRl
Y29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1v
ZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50
U2NvcGVURFpWYXJpYWJsZXMsIEVDTUFNb2RlIGVjbWFNb2RlKQorQnl0ZWNvZGVHZW5lcmF0b3I6
OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0
aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBw
YXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQsIEVDTUFNb2RlIGVjbWFNb2RlKQogICAgIDog
Qnl0ZWNvZGVHZW5lcmF0b3JCYXNlKG1ha2VVbmlxdWU8VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0
b3I+KHZtLCBjb2RlQmxvY2spLCBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3Bh
Y2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSkKICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2RlKGNvZGVH
ZW5lcmF0aW9uTW9kZSkKICAgICAsIG1fc2NvcGVOb2RlKGZ1bmN0aW9uTm9kZSkKQEAgLTM2MCw2
ICszNjAsOCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBG
dW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICwgbV9lY21hTW9kZShlY21h
TW9kZSkKICAgICAsIG1fZGVyaXZlZENvbnRleHRUeXBlKGNvZGVCbG9jay0+ZGVyaXZlZENvbnRl
eHRUeXBlKCkpCiB7CisgICAgcHVzaFByaXZhdGVBY2Nlc3NOYW1lcygqcGFyZW50U2NvcGVWYXJp
YWJsZUVudmlyb25tZW50KTsKKwogICAgIFN5bWJvbFRhYmxlKiBmdW5jdGlvblN5bWJvbFRhYmxl
ID0gU3ltYm9sVGFibGU6OmNyZWF0ZShtX3ZtKTsKICAgICBmdW5jdGlvblN5bWJvbFRhYmxlLT5z
ZXRVc2VzTm9uU3RyaWN0RXZhbChtX3VzZXNOb25TdHJpY3RFdmFsKTsKICAgICBpbnQgc3ltYm9s
VGFibGVDb25zdGFudEluZGV4ID0gMDsKQEAgLTcwNiw4ICs3MDgsMTIgQEAgQnl0ZWNvZGVHZW5l
cmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5v
ZGUsIFVubGlua2UKICAgICAgICAgICAgICAgICBjYXNlIENvbnN0cnVjdG9yS2luZDo6Tm9uZToK
ICAgICAgICAgICAgICAgICBjYXNlIENvbnN0cnVjdG9yS2luZDo6QmFzZToKICAgICAgICAgICAg
ICAgICAgICAgZW1pdENyZWF0ZVRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKE9wdGlvbnM6OnVzZVByaXZhdGVNZXRob2RzKCkgJiYgcHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQoKSA9PSBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6TmVlZGVkKQorICAgICAgICAg
ICAgICAgICAgICAgICAgZW1pdEluc3RhbGxQcml2YXRlQnJhbmQoJm1fdGhpc1JlZ2lzdGVyKTsK
KwogICAgICAgICAgICAgICAgICAgICBpZiAoT3B0aW9uczo6dXNlUHVibGljQ2xhc3NGaWVsZHMo
KSkKICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRJbnN0YW5jZUZpZWxkSW5pdGlhbGl6YXRp
b25JZk5lZWRlZCgmbV90aGlzUmVnaXN0ZXIsICZtX2NhbGxlZVJlZ2lzdGVyLCBtX3Njb3BlTm9k
ZS0+cG9zaXRpb24oKSwgbV9zY29wZU5vZGUtPnBvc2l0aW9uKCksIG1fc2NvcGVOb2RlLT5wb3Np
dGlvbigpKTsKKwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBj
YXNlIENvbnN0cnVjdG9yS2luZDo6RXh0ZW5kczoKICAgICAgICAgICAgICAgICAgICAgbW92ZUVt
cHR5VmFsdWUoJm1fdGhpc1JlZ2lzdGVyKTsKQEAgLTc3Miw3ICs3NzgsNyBAQCBCeXRlY29kZUdl
bmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9u
Tm9kZSwgVW5saW5rZQogCiAgICAgLy8gQWxsICJhZGRWYXIoKSJzIG5lZWRzIHRvIGhhcHBlbiBi
ZWZvcmUgImluaXRpYWxpemVEZWZhdWx0UGFyYW1ldGVyVmFsdWVzQW5kU2V0dXBGdW5jdGlvblNj
b3BlU3RhY2soKSIgaXMgY2FsbGVkCiAgICAgLy8gYmVjYXVzZSBhIGZ1bmN0aW9uJ3MgZGVmYXVs
dCBwYXJhbWV0ZXIgRXhwcmVzc2lvbk5vZGVzIHdpbGwgdXNlIHRlbXBvcmFyeSByZWdpc3RlcnMu
Ci0gICAgcHVzaFREWlZhcmlhYmxlcygqcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIFREWkNoZWNr
T3B0aW1pemF0aW9uOjpEb05vdE9wdGltaXplLCBURFpSZXF1aXJlbWVudDo6VW5kZXJURFopOwor
ICAgIHB1c2hURFpWYXJpYWJsZXMoKnBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCwgVERa
Q2hlY2tPcHRpbWl6YXRpb246OkRvTm90T3B0aW1pemUsIFREWlJlcXVpcmVtZW50OjpVbmRlclRE
Wik7CiAKICAgICBSZWY8TGFiZWw+IGNhdGNoTGFiZWwgPSBuZXdMYWJlbCgpOwogICAgIFRyeURh
dGEqIHRyeUZvcm1hbFBhcmFtZXRlcnNEYXRhID0gbnVsbHB0cjsKQEAgLTg0MCw3ICs4NDYsNyBA
QCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5v
ZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIHB1c2hMZXhpY2FsU2NvcGUobV9zY29wZU5v
ZGUsIFREWkNoZWNrT3B0aW1pemF0aW9uOjpPcHRpbWl6ZSwgTmVzdGVkU2NvcGVUeXBlOjpJc05v
dE5lc3RlZCwgbnVsbHB0ciwgc2hvdWxkSW5pdGlhbGl6ZUJsb2NrU2NvcGVkRnVuY3Rpb25zKTsK
IH0KIAotQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5v
ZGUqIGV2YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0
PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBWYXJpYWJsZUVu
dmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRUNNQU1vZGUgZWNtYU1vZGUpCitC
eXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZh
bE5vZGUsIFVubGlua2VkRXZhbENvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdl
bmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1l
bnQqIHBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCwgRUNNQU1vZGUgZWNtYU1vZGUpCiAg
ICAgOiBCeXRlY29kZUdlbmVyYXRvckJhc2UobWFrZVVuaXF1ZTxVbmxpbmtlZENvZGVCbG9ja0dl
bmVyYXRvcj4odm0sIGNvZGVCbG9jayksIENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNh
dmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKQogICAgICwgbV9jb2RlR2VuZXJhdGlvbk1vZGUo
Y29kZUdlbmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5vZGUoZXZhbE5vZGUpCkBAIC04NTks
NyArODY1LDggQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwg
RXZhbE5vZGUqIGV2YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2QKIHsKICAgICBtX2NvZGVCbG9jay0+
c2V0TnVtUGFyYW1ldGVycygxKTsKIAotICAgIHB1c2hURFpWYXJpYWJsZXMoKnBhcmVudFNjb3Bl
VERaVmFyaWFibGVzLCBURFpDaGVja09wdGltaXphdGlvbjo6RG9Ob3RPcHRpbWl6ZSwgVERaUmVx
dWlyZW1lbnQ6OlVuZGVyVERaKTsKKyAgICBwdXNoUHJpdmF0ZUFjY2Vzc05hbWVzKCpwYXJlbnRT
Y29wZVZhcmlhYmxlRW52aXJvbm1lbnQpOworICAgIHB1c2hURFpWYXJpYWJsZXMoKnBhcmVudFNj
b3BlVmFyaWFibGVFbnZpcm9ubWVudCwgVERaQ2hlY2tPcHRpbWl6YXRpb246OkRvTm90T3B0aW1p
emUsIFREWlJlcXVpcmVtZW50OjpVbmRlclREWik7CiAKICAgICBlbWl0RW50ZXIoKTsKIApAQCAt
OTA0LDcgKzkxMSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYg
dm0sIEV2YWxOb2RlKiBldmFsTm9kZSwgVW5saW5rZWRFdmFsQ29kCiAgICAgcHVzaExleGljYWxT
Y29wZShtX3Njb3BlTm9kZSwgVERaQ2hlY2tPcHRpbWl6YXRpb246Ok9wdGltaXplLCBOZXN0ZWRT
Y29wZVR5cGU6OklzTm90TmVzdGVkLCBudWxscHRyLCBzaG91bGRJbml0aWFsaXplQmxvY2tTY29w
ZWRGdW5jdGlvbnMpOwogfQogCi1CeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3Io
Vk0mIHZtLCBNb2R1bGVQcm9ncmFtTm9kZSogbW9kdWxlUHJvZ3JhbU5vZGUsIFVubGlua2VkTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25N
b2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVu
dFNjb3BlVERaVmFyaWFibGVzLCBFQ01BTW9kZSBlY21hTW9kZSkKK0J5dGVjb2RlR2VuZXJhdG9y
OjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIE1vZHVsZVByb2dyYW1Ob2RlKiBtb2R1bGVQcm9n
cmFtTm9kZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlv
blNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgVmFyaWFi
bGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50LCBFQ01BTW9kZSBl
Y21hTW9kZSkKICAgICA6IEJ5dGVjb2RlR2VuZXJhdG9yQmFzZShtYWtlVW5pcXVlPFVubGlua2Vk
Q29kZUJsb2NrR2VuZXJhdG9yPih2bSwgY29kZUJsb2NrKSwgQ29kZUJsb2NrOjpsbGludEJhc2Vs
aW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkpCiAgICAgLCBtX2NvZGVHZW5l
cmF0aW9uTW9kZShjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAgLCBtX3Njb3BlTm9kZShtb2R1bGVQ
cm9ncmFtTm9kZSkKQEAgLTkyMCw3ICs5MjcsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IoVk0mIHZtLCBNb2R1bGVQcm9ncmFtTm9kZSogbW9kdWxlUHJvZ3JhbU5vZAog
ICAgICwgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQobW9kdWxlUHJvZ3JhbU5v
ZGUtPnVzZXNBcnJvd0Z1bmN0aW9uKCkgfHwgbW9kdWxlUHJvZ3JhbU5vZGUtPnVzZXNFdmFsKCkp
CiAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQogewotICAgIEFTU0VSVF9VTlVTRUQocGFyZW50
U2NvcGVURFpWYXJpYWJsZXMsICFwYXJlbnRTY29wZVREWlZhcmlhYmxlcy0+c2l6ZSgpKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKHBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCwgIXBhcmVudFNj
b3BlVmFyaWFibGVFbnZpcm9ubWVudC0+c2l6ZSgpKTsKIAogICAgIFN5bWJvbFRhYmxlKiBtb2R1
bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlID0gU3ltYm9sVGFibGU6OmNyZWF0ZShtX3ZtKTsKICAg
ICBtb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlLT5zZXRVc2VzTm9uU3RyaWN0RXZhbChtX3Vz
ZXNOb25TdHJpY3RFdmFsKTsKQEAgLTE4OTcsOCArMTkwNCwxMCBAQCBib29sIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjppbnN0YW50aWF0ZUxleGljYWxWYXJpYWJsZXMoY29uc3QgVmFyaWFibGVFbnZpcm9u
bWVudCYgbAogCiAgICAgICAgICAgICAvLyBGSVhNRTogb25seSBkbyB0aGlzIGlmIHRoZXJlIGlz
IGFuIGV2YWwoKSB3aXRoaW4gYSBuZXN0ZWQgc2NvcGUgLS0tIG90aGVyd2lzZSBpdCBpc24ndCBu
ZWVkZWQuCiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA2NjYzCi0gICAgICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNQcml2YXRlTmFtZSgp
KQotICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5hZGRQcml2YXRlTmFtZShlbnRyeS5rZXku
Z2V0KCkpOworICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVlLmlzUHJpdmF0ZUZpZWxkKCkpCisg
ICAgICAgICAgICAgICAgc3ltYm9sVGFibGUtPmFkZFByaXZhdGVOYW1lKGVudHJ5LmtleS5nZXQo
KSwgUHJpdmF0ZU5hbWVFbnRyeShQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzRGVjbGFyZWQp
KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGVudHJ5LnZhbHVlLmlzUHJpdmF0ZU1ldGhvZCgpKQor
ICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5hZGRQcml2YXRlTmFtZShlbnRyeS5rZXkuZ2V0
KCksIFByaXZhdGVOYW1lRW50cnkoUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc0RlY2xhcmVk
IHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc01ldGhvZCkpOwogICAgICAgICB9CiAgICAg
fQogICAgIHJldHVybiBoYXNDYXB0dXJlZFZhcmlhYmxlczsKQEAgLTI3MTksNyArMjcyOCw3IEBA
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlWYWwoUmVnaXN0ZXJJRCog
YmFzZSwgUmVnaXN0ZXJJRCogdGhpc1ZhCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi1SZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpCitSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFByaXZhdGVOYW1lKFJlZ2lzdGVySUQqIGRzdCwgUmVn
aXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpCiB7CiAgICAgT3BHZXRQcml2YXRl
TmFtZTo6ZW1pdCh0aGlzLCBkc3QsIGJhc2UsIHByb3BlcnR5KTsKICAgICByZXR1cm4gZHN0OwpA
QCAtMjc1NSwxMiArMjc2NCw0NSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dERlZmluZVByaXZhdGVGaWVsZChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcgogICAgIHJldHVy
biB2YWx1ZTsKIH0KIAordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZVByaXZhdGVC
cmFuZChSZWdpc3RlcklEKiBzY29wZSwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
RW5kKQoreworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjcmVhdGVQcml2YXRlU3ltYm9sID0gbW92
ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6Y3JlYXRlUHJpdmF0
ZVN5bWJvbCk7CisKKyAgICBDYWxsQXJndW1lbnRzIGFyZ3VtZW50cygqdGhpcywgbnVsbHB0ciwg
MCk7CisgICAgZW1pdExvYWQoYXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgp
KTsKKyAgICBSZWdpc3RlcklEKiBuZXdTeW1ib2wgPSBlbWl0Q2FsbChmaW5hbERlc3RpbmF0aW9u
KG51bGxwdHIsIGNyZWF0ZVByaXZhdGVTeW1ib2wuZ2V0KCkpLCBjcmVhdGVQcml2YXRlU3ltYm9s
LmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGFyZ3VtZW50cywgZGl2b3QsIGRpdm90U3RhcnQs
IGRpdm90RW5kLCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOworCisgICAgVmFyaWFibGUgcHJpdmF0ZUJy
YW5kVmFyID0gdmFyaWFibGUocHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLnByaXZhdGVC
cmFuZFByaXZhdGVOYW1lKCkpOworCisgICAgZW1pdFB1dFRvU2NvcGUoc2NvcGUsIHByaXZhdGVC
cmFuZFZhciwgbmV3U3ltYm9sLCBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRpb25N
b2RlOjpJbml0aWFsaXphdGlvbik7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJ
bnN0YWxsUHJpdmF0ZUJyYW5kKFJlZ2lzdGVySUQqIHRhcmdldCkKK3sKKyAgICBWYXJpYWJsZSBw
cml2YXRlQnJhbmRWYXIgPSB2YXJpYWJsZShwcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCku
cHJpdmF0ZUJyYW5kUHJpdmF0ZU5hbWUoKSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZh
dGVCcmFuZFZhclNjb3BlID0gZW1pdFJlc29sdmVTY29wZShudWxscHRyLCBwcml2YXRlQnJhbmRW
YXIpOworICAgIFJlZ2lzdGVySUQqIHByaXZhdGVCcmFuZFN5bWJvbCA9IGVtaXRHZXRQcml2YXRl
QnJhbmQobmV3VGVtcG9yYXJ5KCksIHByaXZhdGVCcmFuZFZhclNjb3BlLmdldCgpKTsKKyAgICBl
bWl0RGVmaW5lUHJpdmF0ZUZpZWxkKHRhcmdldCwgcHJpdmF0ZUJyYW5kU3ltYm9sLCBwcml2YXRl
QnJhbmRTeW1ib2wpOworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdl
dFByaXZhdGVCcmFuZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNjb3BlKQoreworICAg
IFZhcmlhYmxlIHByaXZhdGVCcmFuZFZhciA9IHZhcmlhYmxlKHByb3BlcnR5TmFtZXMoKS5idWls
dGluTmFtZXMoKS5wcml2YXRlQnJhbmRQcml2YXRlTmFtZSgpKTsKKyAgICByZXR1cm4gZW1pdEdl
dEZyb21TY29wZShkc3QsIHNjb3BlLCBwcml2YXRlQnJhbmRWYXIsIFRocm93SWZOb3RGb3VuZCk7
Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHJpdmF0ZUZpZWxkUHV0
KFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1
ZSkKIHsKICAgICBPcFB1dFByaXZhdGVOYW1lOjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2
YWx1ZSwgUHJpdmF0ZUZpZWxkUHV0S2luZDo6c2V0KCkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0K
IAordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENoZWNrUHJpdmF0ZUJyYW5kKFJlZ2lzdGVy
SUQqIGJhc2UsIFJlZ2lzdGVySUQqIGJyYW5kU3ltYm9sKQoreworICAgIC8vIFRoaXMgaXMgZ29p
bmcgdG8gdHJob3cgVHlwZUVycm9yIGlmIGJyYW5kIGlzIG5vdCBwcmVzZW50CisgICAgZW1pdEdl
dFByaXZhdGVOYW1lKG5ld1RlbXBvcmFyeSgpLCBiYXNlLCBicmFuZFN5bWJvbCk7Cit9CisKIHZv
aWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTdXBlclNhbXBsZXJCZWdpbigpCiB7CiAgICAgT3BT
dXBlclNhbXBsZXJCZWdpbjo6ZW1pdCh0aGlzKTsKQEAgLTI4ODksNiArMjkzMSwzOCBAQCB2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjpsaWZ0VERaQ2hlY2tJZlBvc3NpYmxlKGNvbnN0IFZhcmlhYmxl
JiB2YXJpYWJsZSkKICAgICB9CiB9CiAKK2Jvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmlzUHJpdmF0
ZU1ldGhvZChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSBtX3ByaXZhdGVOYW1lc1N0YWNrLnNpemUoKTsgaS0tOyApIHsKKyAgICAgICAgYXV0byYgbWFw
ID0gbV9wcml2YXRlTmFtZXNTdGFja1tpXTsKKyAgICAgICAgYXV0byBpdCA9IG1hcC5maW5kKGlk
ZW50LmltcGwoKSk7CisgICAgICAgIGlmIChpdCAhPSBtYXAuZW5kKCkpCisgICAgICAgICAgICBy
ZXR1cm4gaXQtPnZhbHVlLmlzTWV0aG9kKCk7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOwor
fQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoUHJpdmF0ZUFjY2Vzc05hbWVzKGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQmIGVudmlyb25tZW50KQoreworICAgIGlmICghZW52aXJvbm1l
bnQucHJpdmF0ZU5hbWVzU2l6ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBWYXJpYWJsZUVu
dmlyb25tZW50OjpQcml2YXRlTmFtZXMgcHJpdmF0ZU5hbWVzTWFwOworICAgIGZvciAoY29uc3Qg
YXV0byYgZW50cnkgOiBlbnZpcm9ubWVudC5wcml2YXRlTmFtZXMoKSkKKyAgICAgICAgcHJpdmF0
ZU5hbWVzTWFwLmFkZChlbnRyeS5rZXksIGVudHJ5LnZhbHVlKTsKKworICAgIG1fcHJpdmF0ZU5h
bWVzU3RhY2suYXBwZW5kKFdURk1vdmUocHJpdmF0ZU5hbWVzTWFwKSk7Cit9CisKK3ZvaWQgQnl0
ZWNvZGVHZW5lcmF0b3I6OnBvcFByaXZhdGVBY2Nlc3NOYW1lcygpCit7CisgICAgaWYgKCFtX3By
aXZhdGVOYW1lc1N0YWNrLnNpemUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wcml2YXRl
TmFtZXNTdGFjay5yZW1vdmVMYXN0KCk7Cit9CisKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnB1
c2hURFpWYXJpYWJsZXMoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgZW52aXJvbm1lbnQsIFRE
WkNoZWNrT3B0aW1pemF0aW9uIG9wdGltaXphdGlvbiwgVERaUmVxdWlyZW1lbnQgcmVxdWlyZW1l
bnQpCiB7CiAgICAgaWYgKCFlbnZpcm9ubWVudC5zaXplKCkpCkBAIC0yOTExLDYgKzI5ODUsMjQg
QEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cHVzaFREWlZhcmlhYmxlcyhjb25zdCBWYXJpYWJs
ZUVudmlyb25tZW50JiBlbnZpcm9ubWVudCwKICAgICBtX2NhY2hlZFZhcmlhYmxlc1VuZGVyVERa
ID0geyB9OwogfQogCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZXRBdmFpbGFibGVQcml2YXRl
QWNjZXNzTmFtZXMoVmFyaWFibGVFbnZpcm9ubWVudCYgcmVzdWx0KQoreworICAgIFNtYWxsUHRy
U2V0PFVuaXF1ZWRTdHJpbmdJbXBsKiwgMTY+IGV4Y2x1ZGVkTmFtZXM7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gbV9wcml2YXRlTmFtZXNTdGFjay5zaXplKCk7IGktLTsgKSB7CisgICAgICAgIGF1
dG8mIG1hcCA9IG1fcHJpdmF0ZU5hbWVzU3RhY2tbaV07CisgICAgICAgIGZvciAoYXV0byYgZW50
cnkgOiBtYXApICB7CisgICAgICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNQcml2YXRlQWNjZXNz
KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWV4Y2x1ZGVkTmFtZXMuY29udGFpbnMoZW50cnku
a2V5LmdldCgpKSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IHJlc3Vs
dC5hZGRQcml2YXRlTmFtZShlbnRyeS5rZXkpOworICAgICAgICAgICAgICAgICAgICBhZGRSZXN1
bHQuaXRlcmF0b3ItPnZhbHVlID0gZW50cnkudmFsdWU7CisgICAgICAgICAgICAgICAgICAgIGV4
Y2x1ZGVkTmFtZXMuYWRkKGVudHJ5LmtleS5nZXQoKSk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgZXhjbHVkZWROYW1lcy5hZGQoZW50cnku
a2V5LmdldCgpKTsKKyAgICAgICAgfQorICAgIH0KK30KKwogT3B0aW9uYWw8Q29tcGFjdFZhcmlh
YmxlTWFwOjpIYW5kbGU+IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZXRWYXJpYWJsZXNVbmRlclREWigp
CiB7CiAgICAgaWYgKG1fY2FjaGVkVmFyaWFibGVzVW5kZXJURFopIHsKQEAgLTI5NDQsNiArMzAz
Niw4IEBAIE9wdGlvbmFsPENvbXBhY3RWYXJpYWJsZU1hcDo6SGFuZGxlPiBCeXRlY29kZUdlbmVy
YXRvcjo6Z2V0VmFyaWFibGVzVW5kZXJURFooKQogICAgICAgICB9CiAgICAgfQogCisgICAgZ2V0
QXZhaWxhYmxlUHJpdmF0ZUFjY2Vzc05hbWVzKGVudmlyb25tZW50KTsKKwogICAgIG1fY2FjaGVk
VmFyaWFibGVzVW5kZXJURFogPSBtX3ZtLm1fY29tcGFjdFZhcmlhYmxlTWFwLT5nZXQoZW52aXJv
bm1lbnQpOwogICAgIG1faGFzQ2FjaGVkVmFyaWFibGVzVW5kZXJURFogPSAhZW52aXJvbm1lbnQu
aXNFbXB0eSgpOwogICAgIGlmICghbV9oYXNDYWNoZWRWYXJpYWJsZXNVbmRlclREWikKQEAgLTMx
MjIsOSArMzIxNiw5IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3TWV0
aG9kRGVmaW5pdGlvbihSZWdpc3RlcklEKiBkc3QsIE1ldGhvZERlCiB9CiAKIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKFJlZ2lzdGVySUQq
IGRzdCwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYg
bmFtZSwKLSAgICBjb25zdCBJZGVudGlmaWVyJiBlY21hTmFtZSwgY29uc3QgU291cmNlQ29kZSYg
Y2xhc3NTb3VyY2UsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyKQorICAgIGNvbnN0IElkZW50aWZpZXImIGVjbWFOYW1lLCBjb25zdCBTb3VyY2VD
b2RlJiBjbGFzc1NvdXJjZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVp
cmVtZW50KQogewotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0g
bV92bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yKGNvbnN0
cnVjdG9yS2luZCwgbmFtZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpOworICAgIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbV92bS5idWlsdGluRXhlY3V0YWJs
ZXMoKS0+Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yKGNvbnN0cnVjdG9yS2luZCwgbmFtZSwgbmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KTsKICAgICBl
eGVjdXRhYmxlLT5zZXRJbnZhbGlkVHlwZVByb2ZpbGluZ09mZnNldHMoKTsKICAgICBleGVjdXRh
YmxlLT5zZXRFY21hTmFtZShlY21hTmFtZSk7CiAgICAgZXhlY3V0YWJsZS0+c2V0Q2xhc3NTb3Vy
Y2UoY2xhc3NTb3VyY2UpOwpAQCAtMzE1NCw3ICszMjQ4LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXROZXdJbnN0YW5jZUZpZWxkSW5pdGlhbGl6ZXJGdW5jdGlvbihSZWdp
c3RlckkKICAgICBjb25zdCBib29sIGFsd2F5c1N0cmljdEluQ2xhc3MgPSB0cnVlOwogICAgIEZ1
bmN0aW9uTWV0YWRhdGFOb2RlIG1ldGFkYXRhKHBhcnNlckFyZW5hKCksIEpTVG9rZW5Mb2NhdGlv
bigpLCBKU1Rva2VuTG9jYXRpb24oKSwgMCwgMCwgMCwgMCwgMCwgYWx3YXlzU3RyaWN0SW5DbGFz
cywgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBzdXBlckJpbmRpbmcsIDAsIHBhcnNlTW9kZSwgZmFs
c2UpOwogICAgIG1ldGFkYXRhLmZpbmlzaFBhcnNpbmcobV9zY29wZU5vZGUtPnNvdXJjZSgpLCBJ
ZGVudGlmaWVyKCksIEZ1bmN0aW9uTW9kZTo6TWV0aG9kRGVmaW5pdGlvbik7Ci0gICAgYXV0byBp
bml0aWFsaXplciA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9z
Y29wZU5vZGUtPnNvdXJjZSgpLCAmbWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxp
bmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFi
aWxpdHksIHNjcmlwdE1vZGUoKSwgV1RGTW92ZSh2YXJpYWJsZXNVbmRlclREWiksIG5ld0Rlcml2
ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vKTsKKyAgICBhdXRv
IGluaXRpYWxpemVyID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBt
X3Njb3BlTm9kZS0+c291cmNlKCksICZtZXRhZGF0YSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVu
bGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0
QWJpbGl0eSwgc2NyaXB0TW9kZSgpLCBXVEZNb3ZlKHZhcmlhYmxlc1VuZGVyVERaKSwgbmV3RGVy
aXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8sIFByaXZhdGVC
cmFuZFJlcXVpcmVtZW50OjpOb25lKTsKICAgICBpbml0aWFsaXplci0+c2V0SW5zdGFuY2VGaWVs
ZExvY2F0aW9ucyhXVEZNb3ZlKGluc3RhbmNlRmllbGRMb2NhdGlvbnMpKTsKIAogICAgIHVuc2ln
bmVkIGluZGV4ID0gbV9jb2RlQmxvY2stPmFkZEZ1bmN0aW9uRXhwcihpbml0aWFsaXplcik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmgKaW5kZXggZDI4MjUzNGE5NmE4NDE1OWMxMjljNWMxNGUzYTc4Yzc0MDA0YjlmZi4u
ODY0ZDIzMTI0ZjkwYjQxMmQ4OGJhMjFmN2RhMmEzYTJlMmVmY2NmZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApA
QCAtNDI1LDYgKzQyNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG5lZWRzVG9V
cGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNUb1VwZGF0
ZUFycm93RnVuY3Rpb25Db250ZXh0OyB9CiAgICAgICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7
IHJldHVybiBtX3Njb3BlTm9kZS0+dXNlc0V2YWwoKTsgfQogICAgICAgICBib29sIHVzZXNUaGlz
KCkgY29uc3QgeyByZXR1cm4gbV9zY29wZU5vZGUtPnVzZXNUaGlzKCk7IH0KKyAgICAgICAgUHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSBjb25zdCB7IHJl
dHVybiBtX2NvZGVCbG9jay0+cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKTsgfQogICAgICAgICBD
b25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxv
Y2stPmNvbnN0cnVjdG9yS2luZCgpOyB9CiAgICAgICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRp
bmcoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+c3VwZXJCaW5kaW5nKCk7IH0KICAgICAg
ICAgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVC
bG9jay0+c2NyaXB0TW9kZSgpOyB9CkBAIC03NzQsNyArNzc1LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uKFJlZ2lzdGVySUQqIGRzdCwg
RnVuY3Rpb25NZXRhZGF0YU5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0
aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmNFeHByTm9kZSopOwotICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29u
c3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBJZGVudGlmaWVyJiBl
Y21hTmFtZSwgY29uc3QgU291cmNlQ29kZSYgY2xhc3NTb3VyY2UsIE5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3Rv
cihSZWdpc3RlcklEKiBkc3QsIENvbnN0cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFt
ZSwgY29uc3QgSWRlbnRpZmllciYgZWNtYU5hbWUsIGNvbnN0IFNvdXJjZUNvZGUmIGNsYXNzU291
cmNlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQp
OwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3SW5zdGFuY2VGaWVsZEluaXRpYWxpemVyRnVu
Y3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+JiYgaW5zdGFuY2VG
aWVsZExvY2F0aW9ucywgYm9vbCBpc0Rlcml2ZWQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCosIEFycm93RnVuY0V4cHJOb2Rl
Kik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdNZXRob2REZWZpbml0aW9uKFJlZ2lzdGVy
SUQqIGRzdCwgTWV0aG9kRGVmaW5pdGlvbk5vZGUqKTsKQEAgLTgxNSw3ICs4MTYsNiBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERpcmVjdFNldFByb3RvdHlwZU9m
KFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3RvdHlwZSk7CiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0
eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0QnlWYWwo
UmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdGhpc1ZhbHVlLCBSZWdpc3RlcklEKiBwcm9w
ZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGlyZWN0
R2V0QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBw
cm9wZXJ0eSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREaXJlY3RQdXRCeVZhbChSZWdpc3Rl
cklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0RGVsZXRlQnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3Rl
cklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSk7CiAKQEAgLTgyMyw2ICs4MjMsMTIgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRJbnRlcm5hbEZpZWxk
KFJlZ2lzdGVySUQqIGJhc2UsIHVuc2lnbmVkIGluZGV4LCBSZWdpc3RlcklEKiB2YWx1ZSk7CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXREZWZpbmVQcml2YXRlRmllbGQoUmVnaXN0ZXJJRCogYmFz
ZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKICAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdFByaXZhdGVGaWVsZFB1dChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklE
KiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0
R2V0UHJpdmF0ZU5hbWUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3Rl
cklEKiBwcm9wZXJ0eSk7CisKKyAgICAgICAgdm9pZCBlbWl0Q3JlYXRlUHJpdmF0ZUJyYW5kKFJl
Z2lzdGVySUQqIGRzdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKKyAg
ICAgICAgdm9pZCBlbWl0SW5zdGFsbFByaXZhdGVCcmFuZChSZWdpc3RlcklEKiB0YXJnZXQpOwor
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0UHJpdmF0ZUJyYW5kKFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogc2NvcGUpOworICAgICAgICB2b2lkIGVtaXRDaGVja1ByaXZhdGVCcmFuZChS
ZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBicmFuZCk7CiAKICAgICAgICAgdm9pZCBlbWl0
U3VwZXJTYW1wbGVyQmVnaW4oKTsKICAgICAgICAgdm9pZCBlbWl0U3VwZXJTYW1wbGVyRW5kKCk7
CkBAIC0xMTc2LDEwICsxMTgyLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgRGVy
aXZlZENvbnRleHRUeXBlIG5ld0Rlcml2ZWRDb250ZXh0VHlwZSA9IERlcml2ZWRDb250ZXh0VHlw
ZTo6Tm9uZTsKIAogICAgICAgICAgICAgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSBtZXRhZGF0YS0+aXNDb25zdHJ1Y3RvckFuZE5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyKCkgPyBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6WWVzIDog
TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vOworICAgICAgICAgICAgUHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBtZXRhZGF0YS0+cHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQoKTsKICAgICAgICAgICAgIGlmIChTb3VyY2VQYXJzZU1vZGVTZXQoU291
cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSwgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fy
cm93RnVuY3Rpb25Nb2RlLCBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbkJvZHlN
b2RlKS5jb250YWlucyhtZXRhZGF0YS0+cGFyc2VNb2RlKCkpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RXh0ZW5kcyB8fCBpc0Rl
cml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSkgewogICAgICAgICAgICAgICAgICAgICBuZXdEZXJp
dmVkQ29udGV4dFR5cGUgPSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRDb25zdHJ1Y3RvckNv
bnRleHQ7CiAgICAgICAgICAgICAgICAgICAgIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyID0g
bV9jb2RlQmxvY2stPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCk7CisgICAgICAgICAgICAg
ICAgICAgIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID0gbV9jb2RlQmxvY2stPnByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50KCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKG1fY29kZUJsb2NrLT5pc0NsYXNzQ29udGV4dCgpIHx8IGlzRGVyaXZlZENsYXNzQ29udGV4
dCgpKQogICAgICAgICAgICAgICAgICAgICBuZXdEZXJpdmVkQ29udGV4dFR5cGUgPSBEZXJpdmVk
Q29udGV4dFR5cGU6OkRlcml2ZWRNZXRob2RDb250ZXh0OwpAQCAtMTE5NCwxMCArMTIwMiwxMSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFy
c2VNb2RlOjpNZXRob2RNb2RlICYmIG1ldGFkYXRhLT5jb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25z
dHJ1Y3RvcktpbmQ6Ok5vbmUpCiAgICAgICAgICAgICAgICAgY29uc3RydWN0QWJpbGl0eSA9IENv
bnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdDsKIAotICAgICAgICAgICAgcmV0dXJuIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgp
LCBtZXRhZGF0YSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9u
IDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwgc2NyaXB0TW9kZSgp
LCBXVEZNb3ZlKG9wdGlvbmFsVmFyaWFibGVzVW5kZXJURFopLCBuZXdEZXJpdmVkQ29udGV4dFR5
cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsKKyAgICAgICAgICAgIHJldHVybiBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2Uo
KSwgbWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlv
biA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIHNjcmlwdE1vZGUo
KSwgV1RGTW92ZShvcHRpb25hbFZhcmlhYmxlc1VuZGVyVERaKSwgbmV3RGVyaXZlZENvbnRleHRU
eXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQp
OwogICAgICAgICB9CiAKICAgICAgICAgT3B0aW9uYWw8Q29tcGFjdFZhcmlhYmxlTWFwOjpIYW5k
bGU+IGdldFZhcmlhYmxlc1VuZGVyVERaKCk7CisgICAgICAgIHZvaWQgZ2V0QXZhaWxhYmxlUHJp
dmF0ZUFjY2Vzc05hbWVzKFZhcmlhYmxlRW52aXJvbm1lbnQmKTsKIAogICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0Q29uc3RydWN0VmFyYXJncyhSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1
bmMsIFJlZ2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVnaXN0ZXJJRCogYXJndW1lbnRzLCBSZWdp
c3RlcklEKiBmaXJzdEZyZWVSZWdpc3RlciwgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFy
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBEZWJ1Z2dhYmxlQ2FsbCk7CiAgICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxPcD4KQEAgLTEyNTEsNiArMTI2MCwxMSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIG1fbGFzdEluc3RydWN0aW9uID0gcHJldkxhc3RJbnN0
cnVjdGlvbjsKICAgICAgICAgfQogCisgICAgICAgIGJvb2wgaXNQcml2YXRlTWV0aG9kKGNvbnN0
IElkZW50aWZpZXImKTsKKworICAgICAgICB2b2lkIHB1c2hQcml2YXRlQWNjZXNzTmFtZXMoY29u
c3QgVmFyaWFibGVFbnZpcm9ubWVudCYpOworICAgICAgICB2b2lkIHBvcFByaXZhdGVBY2Nlc3NO
YW1lcygpOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9u
TW9kZT4gbV9jb2RlR2VuZXJhdGlvbk1vZGU7CiAKQEAgLTEyNjMsNiArMTI3Nyw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBWZWN0b3I8TGV4aWNhbFNjb3BlU3RhY2tFbnRyeT4gbV9sZXhp
Y2FsU2NvcGVTdGFjazsKIAogICAgICAgICBWZWN0b3I8VERaTWFwPiBtX1REWlN0YWNrOworICAg
ICAgICBWZWN0b3I8VmFyaWFibGVFbnZpcm9ubWVudDo6UHJpdmF0ZU5hbWVzPiBtX3ByaXZhdGVO
YW1lc1N0YWNrOwogICAgICAgICBPcHRpb25hbDxzaXplX3Q+IG1fdmFyU2NvcGVMZXhpY2FsU2Nv
cGVTdGFja0luZGV4OwogICAgICAgICB2b2lkIHB1c2hURFpWYXJpYWJsZXMoY29uc3QgVmFyaWFi
bGVFbnZpcm9ubWVudCYsIFREWkNoZWNrT3B0aW1pemF0aW9uLCBURFpSZXF1aXJlbWVudCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcAppbmRleCA1YWQ4NDk4MDg2NGJiZjI2OWNjOWRhMzRkYmIxNzk3MTAxNzZmZTJmLi5iNGRl
NTJkNTZkNzBjZDBhNjFiY2NhOWRhMTFhZDU3M2Q1MTBkYWU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC01NjMsNyAr
NTYzLDcgQEAgdm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0RGVjbGFyZVByaXZhdGVGaWVsZE5h
bWVzKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
Y3JlYXRlUHJpdmF0ZVN5bWJvbDsKICAgICBmb3IgKFByb3BlcnR5TGlzdE5vZGUqIHAgPSB0aGlz
OyBwOyBwID0gcC0+bV9uZXh0KSB7CiAgICAgICAgIGNvbnN0IFByb3BlcnR5Tm9kZSYgbm9kZSA9
ICpwLT5tX25vZGU7Ci0gICAgICAgIGlmIChub2RlLnR5cGUoKSAmIFByb3BlcnR5Tm9kZTo6UHJp
dmF0ZSkgeworICAgICAgICBpZiAobm9kZS50eXBlKCkgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGVG
aWVsZCkgewogICAgICAgICAgICAgaWYgKCFjcmVhdGVQcml2YXRlU3ltYm9sKQogICAgICAgICAg
ICAgICAgIGNyZWF0ZVByaXZhdGVTeW1ib2wgPSBnZW5lcmF0b3IubW92ZUxpbmtUaW1lQ29uc3Rh
bnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6Y3JlYXRlUHJpdmF0ZVN5bWJvbCk7CiAKQEAg
LTU4OSw3ICs1ODksNyBAQCBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZQogICAgICAgICBpZiAocC0+
aXNDb21wdXRlZENsYXNzRmllbGQoKSkKICAgICAgICAgICAgIGVtaXRTYXZlQ29tcHV0ZWRGaWVs
ZE5hbWUoZ2VuZXJhdG9yLCAqcC0+bV9ub2RlKTsKIAotICAgICAgICBpZiAocC0+aXNJbnN0YW5j
ZUNsYXNzRmllbGQoKSkgeworICAgICAgICBpZiAocC0+aXNJbnN0YW5jZUNsYXNzRmllbGQoKSAm
JiAhKHAtPm1fbm9kZS0+dHlwZSgpICYgUHJvcGVydHlOb2RlOjpQcml2YXRlTWV0aG9kKSkgewog
ICAgICAgICAgICAgQVNTRVJUKGluc3RhbmNlRmllbGRMb2NhdGlvbnMpOwogICAgICAgICAgICAg
aW5zdGFuY2VGaWVsZExvY2F0aW9ucy0+YXBwZW5kKHAtPnBvc2l0aW9uKCkpOwogICAgICAgICAg
ICAgY29udGludWU7CkBAIC03NDUsNyArNzQ1LDcgQEAgUmVnaXN0ZXJJRCogUHJvcGVydHlMaXN0
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGUK
IHZvaWQgUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogbmV3T2JqLCBQcm9wZXJ0eU5vZGUmIG5v
ZGUpCiB7CiAgICAgLy8gUHJpdmF0ZSBmaWVsZHMgYXJlIGhhbmRsZWQgaW4gdGhlIHN5bnRoZXRp
YyBpbnN0YW5jZUZpZWxkSW5pdGlhbGl6ZXIgZnVuY3Rpb24sIG5vdCBoZXJlLgotICAgIEFTU0VS
VCghKG5vZGUudHlwZSgpICYgUHJvcGVydHlOb2RlOjpQcml2YXRlKSk7CisgICAgQVNTRVJUKCEo
bm9kZS50eXBlKCkgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGVGaWVsZCkpOwogCiAgICAgaWYgKFBy
b3BlcnR5Tm9kZTo6aXNVbmRlcnNjb3JlUHJvdG9TZXR0ZXIoZ2VuZXJhdG9yLnZtKCksIG5vZGUp
KSB7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm90b3R5cGUgPSBnZW5lcmF0b3IuZW1p
dE5vZGUobm9kZS5tX2Fzc2lnbik7CkBAIC03NzAsNiArNzcwLDE0IEBAIHZvaWQgUHJvcGVydHlM
aXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnCiAKICAgICBpZiAobm9kZS5pc0NsYXNzUHJvcGVydHkoKSkgewogICAgICAgICBB
U1NFUlQobm9kZS5uZWVkc1N1cGVyQmluZGluZygpKTsKKworICAgICAgICBpZiAobm9kZS50eXBl
KCkgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGVNZXRob2QpIHsKKyAgICAgICAgICAgIFZhcmlhYmxl
IHZhciA9IGdlbmVyYXRvci52YXJpYWJsZSgqbm9kZS5uYW1lKCkpOworICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRQdXRUb1Njb3BlKGdlbmVyYXRvci5zY29wZVJlZ2lzdGVyKCksIHZhciwgdmFs
dWUuZ2V0KCksIERvTm90VGhyb3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6OkNvbnN0
SW5pdGlhbGl6YXRpb24pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BlcnR5TmFtZVJlZ2lzdGVyOwogICAgICAgICBpZiAo
bm9kZS5uYW1lKCkpCiAgICAgICAgICAgICBwcm9wZXJ0eU5hbWUgPSBnZW5lcmF0b3IuZW1pdExv
YWQobnVsbHB0ciwgKm5vZGUubmFtZSgpKTsKIApAQCAtODkyLDEzICs5MDAsMjMgQEAgUmVnaXN0
ZXJJRCogRG90QWNjZXNzb3JOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXIKIFJlZ2lzdGVySUQqIEJhc2VEb3ROb2RlOjplbWl0R2V0UHJvcGVy
dHlWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIGJhc2UsIFJlZlB0cjxSZWdpc3RlcklEPiYgdGhpc1ZhbHVlKQogewogICAgIGlm
IChpc1ByaXZhdGVGaWVsZCgpKSB7CisgICAgICAgIGlmIChnZW5lcmF0b3IuaXNQcml2YXRlTWV0
aG9kKGlkZW50aWZpZXIoKSkpIHsKKyAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRv
ci52YXJpYWJsZShpZGVudGlmaWVyKCkpOworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKKworICAg
ICAgICAgICAgUmVnaXN0ZXJJRCogcHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRH
ZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSk7Cisg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENoZWNrUHJpdmF0ZUJyYW5kKGJhc2UsIHByaXZhdGVC
cmFuZFN5bWJvbCk7CisKKyAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEZyb21T
Y29wZShkc3QsIHNjb3BlLmdldCgpLCB2YXIsIFRocm93SWZOb3RGb3VuZCk7CisgICAgICAgIH0K
KwogICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUobV9pZGVudCk7CiAg
ICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXZhci5sb2NhbCgpLCAiUHJpdmF0ZSBGaWVsZCBu
YW1lcyBtdXN0IGJlIHN0b3JlZCBpbiBjYXB0dXJlZCB2YXJpYWJsZXMiKTsKIAogICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxs
cHRyLCB2YXIpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5l
cmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3Bl
KHByaXZhdGVOYW1lLmdldCgpLCBzY29wZS5nZXQoKSwgdmFyLCBEb05vdFRocm93SWZOb3RGb3Vu
ZCk7Ci0gICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdERpcmVjdEdldEJ5VmFsKGRzdCwgYmFz
ZSwgcHJpdmF0ZU5hbWUuZ2V0KCkpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRQ
cml2YXRlTmFtZShkc3QsIGJhc2UsIHByaXZhdGVOYW1lLmdldCgpKTsKICAgICB9CiAKICAgICBp
ZiAobV9iYXNlLT5pc1N1cGVyTm9kZSgpKSB7CkBAIC05MTksNiArOTM3LDE3IEBAIFJlZ2lzdGVy
SUQqIEJhc2VEb3ROb2RlOjplbWl0R2V0UHJvcGVydHlWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpCiBSZWdpc3RlcklEKiBCYXNlRG90Tm9kZTo6ZW1pdFB1dFByb3BlcnR5
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVy
SUQqIHZhbHVlLCBSZWZQdHI8UmVnaXN0ZXJJRD4mIHRoaXNWYWx1ZSkKIHsKICAgICBpZiAoaXNQ
cml2YXRlRmllbGQoKSkgeworICAgICAgICBhdXRvIGlkZW50aWZpZXJOYW1lID0gaWRlbnRpZmll
cigpOworICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzUHJpdmF0ZU1ldGhvZChpZGVudGlmaWVyTmFt
ZSkpIHsKKyAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVu
dGlmaWVyTmFtZSk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5l
cmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOworCisgICAgICAgICAgICBSZWdp
c3RlcklEKiBwcml2YXRlQnJhbmRTeW1ib2wgPSBnZW5lcmF0b3IuZW1pdEdldFByaXZhdGVCcmFu
ZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpKTsKKyAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0Q2hlY2tQcml2YXRlQnJhbmQoYmFzZSwgcHJpdmF0ZUJyYW5kU3ltYm9sKTsK
KworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvd1R5cGVFcnJvcigiVHJ5aW5nIHRvIGFj
Y2VzcyBhIG5vdCBkZWZpbmVkIHByaXZhdGUgc2V0dGVyIik7CisgICAgICAgIH0KKwogICAgICAg
ICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUobV9pZGVudCk7CiAgICAgICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UoIXZhci5sb2NhbCgpLCAiUHJpdmF0ZSBGaWVsZCBuYW1lcyBtdXN0
IGJlIHN0b3JlZCBpbiBjYXB0dXJlZCB2YXJpYWJsZXMiKTsKIApAQCAtMTA3MiwxMiArMTEwMSwx
NCBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZQogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQ
dXRUaGlzVG9BcnJvd0Z1bmN0aW9uQ29udGV4dFNjb3BlKCk7CiAKICAgICAgICAgLy8gSW5pdGlh
bGl6ZSBpbnN0YW5jZSBmaWVsZHMgYWZ0ZXIgc3VwZXItY2FsbC4KKyAgICAgICAgaWYgKE9wdGlv
bnM6OnVzZVByaXZhdGVNZXRob2RzKCkgJiYgZ2VuZXJhdG9yLnByaXZhdGVCcmFuZFJlcXVpcmVt
ZW50KCkgPT0gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5lZWRlZCkKKyAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0SW5zdGFsbFByaXZhdGVCcmFuZChnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkp
OworCiAgICAgICAgIGlmIChPcHRpb25zOjp1c2VQdWJsaWNDbGFzc0ZpZWxkcygpICYmIGdlbmVy
YXRvci5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpID09IE5lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyOjpZZXMpIHsKICAgICAgICAgICAgIEFTU0VSVChnZW5lcmF0b3IuaXNDb25zdHJ1Y3Rv
cigpIHx8IGdlbmVyYXRvci5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSk7CiAgICAgICAg
ICAgICBmdW5jID0gZ2VuZXJhdG9yLmVtaXRMb2FkRGVyaXZlZENvbnN0cnVjdG9yKCk7CiAgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdEluc3RhbmNlRmllbGRJbml0aWFsaXphdGlvbklmTmVlZGVk
KGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSwgZnVuYy5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgfQotCiAgICAgICAgIHJldHVybiByZXQ7CiAgICAg
fQogCkBAIC0yMjQ5LDcgKzIyODAsNyBAQCBSZWdpc3RlcklEKiBQb3N0Zml4Tm9kZTo6ZW1pdERv
dChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0ZU5hbWUuZ2V0KCks
IHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsKIAotICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdERpcmVjdEdldEJ5VmFsKGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKSwgYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCkpOworICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldFByaXZhdGVO
YW1lKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0
KCkpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gb2xkVmFsdWUgPSBlbWl0UG9zdEluY09y
RGVjKGdlbmVyYXRvciwgZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCB2YWx1ZS5nZXQo
KSwgbV9vcGVyYXRvcik7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2
b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQ
cml2YXRlRmllbGRQdXQoYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCksIHZhbHVlLmdldCgp
KTsKQEAgLTI0ODgsNyArMjUxOSw3IEBAIFJlZ2lzdGVySUQqIFByZWZpeE5vZGU6OmVtaXREb3Qo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7
CiAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHByaXZhdGVOYW1lLmdldCgpLCBz
Y29wZS5nZXQoKSwgdmFyLCBEb05vdFRocm93SWZOb3RGb3VuZCk7CiAKLSAgICAgICAgdmFsdWUg
PSBnZW5lcmF0b3IuZW1pdERpcmVjdEdldEJ5VmFsKHByb3BEc3QuZ2V0KCksIGJhc2UuZ2V0KCks
IHByaXZhdGVOYW1lLmdldCgpKTsKKyAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldFBy
aXZhdGVOYW1lKHByb3BEc3QuZ2V0KCksIGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpKTsK
ICAgICAgICAgZW1pdEluY09yRGVjKGdlbmVyYXRvciwgdmFsdWUsIG1fb3BlcmF0b3IpOwogICAg
ICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwg
ZGl2b3RFbmQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJpdmF0ZUZpZWxkUHV0KGJhc2Uu
Z2V0KCksIHByaXZhdGVOYW1lLmdldCgpLCB2YWx1ZSk7CkBAIC00ODgxLDYgKzQ5MTIsMTMgQEAg
UmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKICAgICBpZiAobV9uZWVkc0xleGljYWxTY29wZSkKICAg
ICAgICAgZ2VuZXJhdG9yLnB1c2hMZXhpY2FsU2NvcGUodGhpcywgQnl0ZWNvZGVHZW5lcmF0b3I6
OlREWkNoZWNrT3B0aW1pemF0aW9uOjpPcHRpbWl6ZSwgQnl0ZWNvZGVHZW5lcmF0b3I6Ok5lc3Rl
ZFNjb3BlVHlwZTo6SXNOZXN0ZWQpOwogCisgICAgYm9vbCBoYXNQcml2YXRlTmFtZXMgPSAhIW1f
bGV4aWNhbFZhcmlhYmxlcy5wcml2YXRlTmFtZXNTaXplKCk7CisgICAgYm9vbCBzaG91bGRFbWl0
UHJpdmF0ZUJyYW5kID0gbV9sZXhpY2FsVmFyaWFibGVzLmhhc1ByaXZhdGVBY2Nlc3MoKTsKKyAg
ICBpZiAoaGFzUHJpdmF0ZU5hbWVzKQorICAgICAgICBnZW5lcmF0b3IucHVzaFByaXZhdGVBY2Nl
c3NOYW1lcyhtX2xleGljYWxWYXJpYWJsZXMpOworICAgIGlmIChzaG91bGRFbWl0UHJpdmF0ZUJy
YW5kKQorICAgICAgICBnZW5lcmF0b3IuZW1pdENyZWF0ZVByaXZhdGVCcmFuZChnZW5lcmF0b3Iu
c2NvcGVSZWdpc3RlcigpLCBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uKTsKKwog
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzdXBlcmNsYXNzOwogICAgIGlmIChtX2NsYXNzSGVyaXRh
Z2UpIHsKICAgICAgICAgc3VwZXJjbGFzcyA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKQEAg
LTQ4OTEsMTcgKzQ5MjksMTggQEAgUmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKICAgICBib29sIG5l
ZWRzSG9tZU9iamVjdCA9IGZhbHNlOwogCiAgICAgYXV0byBuZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplciA9IHRoaXMtPmhhc0luc3RhbmNlRmllbGRzKCkgPyBOZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplcjo6WWVzIDogTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vOwotCisgICAgYXV0byBw
cml2YXRlQnJhbmRSZXF1aXJlbWVudCA9IHNob3VsZEVtaXRQcml2YXRlQnJhbmQgPyBQcml2YXRl
QnJhbmRSZXF1aXJlbWVudDo6TmVlZGVkIDogUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmU7
CiAgICAgaWYgKG1fY29uc3RydWN0b3JFeHByZXNzaW9uKSB7CiAgICAgICAgIEFTU0VSVChtX2Nv
bnN0cnVjdG9yRXhwcmVzc2lvbi0+aXNGdW5jRXhwck5vZGUoKSk7CiAgICAgICAgIEZ1bmN0aW9u
TWV0YWRhdGFOb2RlKiBtZXRhZGF0YSA9IHN0YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+KG1fY29u
c3RydWN0b3JFeHByZXNzaW9uKS0+bWV0YWRhdGEoKTsKICAgICAgICAgbWV0YWRhdGEtPnNldEVj
bWFOYW1lKGVjbWFOYW1lKCkpOwogICAgICAgICBtZXRhZGF0YS0+c2V0Q2xhc3NTb3VyY2UobV9j
bGFzc1NvdXJjZSk7CiAgICAgICAgIG1ldGFkYXRhLT5zZXROZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplcihuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9PSBOZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplcjo6WWVzKTsKKyAgICAgICAgbWV0YWRhdGEtPnNldFByaXZhdGVCcmFuZFJlcXVpcmVtZW50
KHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KTsKICAgICAgICAgY29uc3RydWN0b3IgPSBnZW5lcmF0
b3IuZW1pdE5vZGUoY29uc3RydWN0b3IuZ2V0KCksIG1fY29uc3RydWN0b3JFeHByZXNzaW9uKTsK
ICAgICAgICAgbmVlZHNIb21lT2JqZWN0ID0gbV9jbGFzc0hlcml0YWdlIHx8IG1ldGFkYXRhLT5z
dXBlckJpbmRpbmcoKSA9PSBTdXBlckJpbmRpbmc6Ok5lZWRlZDsKICAgICB9IGVsc2UKLSAgICAg
ICAgY29uc3RydWN0b3IgPSBnZW5lcmF0b3IuZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3Rvcihjb25z
dHJ1Y3Rvci5nZXQoKSwgbV9jbGFzc0hlcml0YWdlID8gQ29uc3RydWN0b3JLaW5kOjpFeHRlbmRz
IDogQ29uc3RydWN0b3JLaW5kOjpCYXNlLCBtX25hbWUsIGVjbWFOYW1lKCksIG1fY2xhc3NTb3Vy
Y2UsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsKKyAgICAgICAgY29uc3RydWN0b3IgPSBn
ZW5lcmF0b3IuZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3Rvcihjb25zdHJ1Y3Rvci5nZXQoKSwgbV9j
bGFzc0hlcml0YWdlID8gQ29uc3RydWN0b3JLaW5kOjpFeHRlbmRzIDogQ29uc3RydWN0b3JLaW5k
OjpCYXNlLCBtX25hbWUsIGVjbWFOYW1lKCksIG1fY2xhc3NTb3VyY2UsIG5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyLCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7CiAKICAgICBjb25zdCBhdXRv
JiBwcm9wZXJ0eU5hbWVzID0gZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKTsKICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gcHJvdG90eXBlID0gZ2VuZXJhdG9yLmVtaXROZXdPYmplY3QoZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpKTsKQEAgLTQ5NjgsNiArNTAwNyw5IEBAIFJlZ2lzdGVySUQqIENsYXNz
RXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklECiAgICAgICAgIGdlbmVyYXRvci5wb3BMZXhpY2FsU2NvcGUodGhpcyk7CiAgICAgfQog
CisgICAgaWYgKGhhc1ByaXZhdGVOYW1lcykKKyAgICAgICAgZ2VuZXJhdG9yLnBvcFByaXZhdGVB
Y2Nlc3NOYW1lcygpOworCiAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGdlbmVyYXRvci5maW5h
bERlc3RpbmF0aW9uKGRzdCwgY29uc3RydWN0b3IuZ2V0KCkpLCBjb25zdHJ1Y3Rvci5nZXQoKSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
ckNhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJD
YWxsRnJhbWUuY3BwCmluZGV4IDVmMjlhZDc2MzUxNjM3ZGExYTRjODhmZWFjZGU3OTRiMTk4Nzg1
YWYuLmNkNTMyNTc2NDc1ZDgzNzY4YTA1YjFjMjlmYWYwYzdiOTEzZGRhMGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcApA
QCAtMjYyLDcgKzI2Miw3IEBAIEpTVmFsdWUgRGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlV2l0
aFNjb3BlRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBKU09iCiAgICAgSlNTY29wZTo6
Y29sbGVjdENsb3N1cmVWYXJpYWJsZXNVbmRlclREWihzY29wZSgpLT5qc1Njb3BlKCksIHZhcmlh
Ymxlc1VuZGVyVERaKTsKIAogICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gY29kZUJsb2NrLT5vd25l
ckV4ZWN1dGFibGUoKS0+aXNJblN0cmljdENvbnRleHQoKSA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6
IEVDTUFNb2RlOjpzbG9wcHkoKTsKLSAgICBhdXRvKiBldmFsID0gRGlyZWN0RXZhbEV4ZWN1dGFi
bGU6OmNyZWF0ZShnbG9iYWxPYmplY3QsIG1ha2VTb3VyY2Uoc2NyaXB0LCBjYWxsRnJhbWUtPmNh
bGxlclNvdXJjZU9yaWdpbih2bSkpLCBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmRl
cml2ZWRDb250ZXh0VHlwZSgpLCBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPm5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+
aXNBcnJvd0Z1bmN0aW9uKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5zaWRl
T3JkaW5hcnlGdW5jdGlvbigpLCBldmFsQ29udGV4dFR5cGUsICZ2YXJpYWJsZXNVbmRlclREWiwg
ZWNtYU1vZGUpOworICAgIGF1dG8qIGV2YWwgPSBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRl
KGdsb2JhbE9iamVjdCwgbWFrZVNvdXJjZShzY3JpcHQsIGNhbGxGcmFtZS0+Y2FsbGVyU291cmNl
T3JpZ2luKHZtKSksIGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+ZGVyaXZlZENvbnRl
eHRUeXBlKCksIGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+bmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIoKSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5wcml2YXRlQnJh
bmRSZXF1aXJlbWVudCgpLCBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmlzQXJyb3dG
dW5jdGlvbigpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0luc2lkZU9yZGluYXJ5
RnVuY3Rpb24oKSwgZXZhbENvbnRleHRUeXBlLCAmdmFyaWFibGVzVW5kZXJURFosIGVjbWFNb2Rl
KTsKICAgICBpZiAoVU5MSUtFTFkoY2F0Y2hTY29wZS5leGNlcHRpb24oKSkpIHsKICAgICAgICAg
ZXhjZXB0aW9uID0gY2F0Y2hTY29wZS5leGNlcHRpb24oKTsKICAgICAgICAgY2F0Y2hTY29wZS5j
bGVhckV4Y2VwdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAKaW5kZXggZDE0OWY3NzYzM2RmOWRjYmJkMDc1YjgzMDMzZWUxZGVl
ODhhMmY3NC4uOTNiMDQ3MjE2MTY5ZTFjOGJmMGRjZmZiYzcxMGY4ODFlNGUwY2JhYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBA
IC0xNDUsNyArMTQ1LDcgQEAgSlNWYWx1ZSBldmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBFQ01BTW9kZSBlY21hTW8KICAgICAgICAgCiAgICAg
ICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgdmFyaWFibGVzVW5kZXJURFo7CiAgICAgICAgIEpTU2Nv
cGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFooY2FsbGVyU2NvcGVDaGFpbiwgdmFy
aWFibGVzVW5kZXJURFopOwotICAgICAgICBldmFsID0gRGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNy
ZWF0ZShnbG9iYWxPYmplY3QsIG1ha2VTb3VyY2UocHJvZ3JhbVNvdXJjZSwgY2FsbGVyQ29kZUJs
b2NrLT5zb3VyY2UoKS5wcm92aWRlcigpLT5zb3VyY2VPcmlnaW4oKSksIGRlcml2ZWRDb250ZXh0
VHlwZSwgY2FsbGVyVW5saW5rZWRDb2RlQmxvY2stPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
KCksIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGNhbGxlckNvZGVCbG9jay0+b3duZXJFeGVjdXRh
YmxlKCktPmlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbigpLCBldmFsQ29udGV4dFR5cGUsICZ2YXJp
YWJsZXNVbmRlclREWiwgZWNtYU1vZGUpOworICAgICAgICBldmFsID0gRGlyZWN0RXZhbEV4ZWN1
dGFibGU6OmNyZWF0ZShnbG9iYWxPYmplY3QsIG1ha2VTb3VyY2UocHJvZ3JhbVNvdXJjZSwgY2Fs
bGVyQ29kZUJsb2NrLT5zb3VyY2UoKS5wcm92aWRlcigpLT5zb3VyY2VPcmlnaW4oKSksIGRlcml2
ZWRDb250ZXh0VHlwZSwgY2FsbGVyVW5saW5rZWRDb2RlQmxvY2stPm5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyKCksIGNhbGxlclVubGlua2VkQ29kZUJsb2NrLT5wcml2YXRlQnJhbmRSZXF1aXJl
bWVudCgpLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBjYWxsZXJDb2RlQmxvY2stPm93bmVyRXhl
Y3V0YWJsZSgpLT5pc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24oKSwgZXZhbENvbnRleHRUeXBlLCAm
dmFyaWFibGVzVW5kZXJURFosIGVjbWFNb2RlKTsKICAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCgh
IXNjb3BlLmV4Y2VwdGlvbigpID09ICFldmFsKTsKICAgICAgICAgaWYgKCFldmFsKQogICAgICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZXMuY3BwCmluZGV4IDY0YTY2Zjc2NWM4ZjRkMjg0OTZkYTljZTZjNDRhYmIwOGFhODgxYjkuLjAy
Yjc4NzVjY2FmNmFmZjY2M2FjMWVlZjVhZGRiOGRiZDM0MDkzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC0yMDIsNiArMjAyLDcgQEAgRnVuY3Rpb25NZXRhZGF0
YU5vZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKAogICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5k
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKQogICAgICAgICAsIG1fbmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE5lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyOjpObykpCiAgICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhw
cmVzc2lvbihpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKKyAgICAgICAgLCBtX3ByaXZh
dGVCcmFuZFJlcXVpcmVtZW50KHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcml2YXRlQnJhbmRSZXF1
aXJlbWVudDo6Tm9uZSkpCiAgICAgICAgICwgbV9wYXJzZU1vZGUobW9kZSkKICAgICAgICAgLCBt
X3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQogICAgICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVt
bikKQEAgLTIyNiw2ICsyMjcsNyBAQCBGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRh
ZGF0YU5vZGUoCiAgICAgICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGNvbnN0cnVjdG9yS2luZCkpCiAgICAgICAgICwgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5v
KSkKICAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKGlzQXJyb3dGdW5j
dGlvbkJvZHlFeHByZXNzaW9uKQorICAgICAgICAsIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lKSkKICAg
ICAgICAgLCBtX3BhcnNlTW9kZShtb2RlKQogICAgICAgICAsIG1fc3RhcnRDb2x1bW4oc3RhcnRD
b2x1bW4pCiAgICAgICAgICwgbV9lbmRDb2x1bW4oZW5kQ29sdW1uKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5oCmluZGV4IDczNThiYjMyNTI3ZTBmMDQzNTE0NzUwZjRiYjBlYjQxNDRi
MDg3ZjAuLjgzY2Y0MzQxODc2YTNiYWE3MzM3ZjJlMjI5Zjk3MDhkZTg3MmIxNjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTcyMSw3ICs3MjEsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBlbnVtIGNsYXNzIENsYXNzRWxlbWVudFRhZyA6IHVpbnQ4X3QgeyBObywgSW5z
dGFuY2UsIFN0YXRpYywgTGFzdFRhZyB9OwogICAgIGNsYXNzIFByb3BlcnR5Tm9kZSBmaW5hbCA6
IHB1YmxpYyBQYXJzZXJBcmVuYUZyZWVhYmxlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIGVudW0g
VHlwZSA6IHVpbnQ4X3QgeyBDb25zdGFudCA9IDEsIEdldHRlciA9IDIsIFNldHRlciA9IDQsIENv
bXB1dGVkID0gOCwgU2hvcnRoYW5kID0gMTYsIFNwcmVhZCA9IDMyLCBQcml2YXRlID0gNjQgfTsK
KyAgICAgICAgZW51bSBUeXBlIDogdWludDhfdCB7IENvbnN0YW50ID0gMSwgR2V0dGVyID0gMiwg
U2V0dGVyID0gNCwgQ29tcHV0ZWQgPSA4LCBTaG9ydGhhbmQgPSAxNiwgU3ByZWFkID0gMzIsIFBy
aXZhdGVGaWVsZCA9IDY0LCBQcml2YXRlTWV0aG9kID0gMTI4IH07CiAKICAgICAgICAgUHJvcGVy
dHlOb2RlKGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSosIFR5cGUsIFN1cGVyQmlu
ZGluZywgQ2xhc3NFbGVtZW50VGFnKTsKICAgICAgICAgUHJvcGVydHlOb2RlKEV4cHJlc3Npb25O
b2RlKiwgVHlwZSwgU3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcpOwpAQCAtNzM5LDcgKzcz
OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIGlzQ2xhc3NGaWVsZCgpIGNvbnN0
IHsgcmV0dXJuIGlzQ2xhc3NQcm9wZXJ0eSgpICYmICFuZWVkc1N1cGVyQmluZGluZygpOyB9CiAg
ICAgICAgIGJvb2wgaXNJbnN0YW5jZUNsYXNzRmllbGQoKSBjb25zdCB7IHJldHVybiBpc0luc3Rh
bmNlQ2xhc3NQcm9wZXJ0eSgpICYmICFuZWVkc1N1cGVyQmluZGluZygpOyB9CiAgICAgICAgIGJv
b2wgaXNPdmVycmlkZGVuQnlEdXBsaWNhdGUoKSBjb25zdCB7IHJldHVybiBtX2lzT3ZlcnJpZGRl
bkJ5RHVwbGljYXRlOyB9Ci0gICAgICAgIGJvb2wgaXNQcml2YXRlKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlICYgUHJpdmF0ZTsgfQorICAgICAgICBib29sIGlzUHJpdmF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZSAmIChQcml2YXRlRmllbGQgfCBQcml2YXRlTWV0aG9kKTsgfQogICAgICAgICBi
b29sIGhhc0NvbXB1dGVkTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXhwcmVzc2lvbjsgfQogICAg
ICAgICBib29sIGlzQ29tcHV0ZWRDbGFzc0ZpZWxkKCkgY29uc3QgeyByZXR1cm4gaXNDbGFzc0Zp
ZWxkKCkgJiYgaGFzQ29tcHV0ZWROYW1lKCk7IH0KICAgICAgICAgdm9pZCBzZXRJc092ZXJyaWRk
ZW5CeUR1cGxpY2F0ZSgpIHsgbV9pc092ZXJyaWRkZW5CeUR1cGxpY2F0ZSA9IHRydWU7IH0KQEAg
LTc1OSw3ICs3NTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSWRlbnRpZmll
ciogbV9uYW1lOwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9leHByZXNzaW9uOwogICAgICAg
ICBFeHByZXNzaW9uTm9kZSogbV9hc3NpZ247Ci0gICAgICAgIHVuc2lnbmVkIG1fdHlwZSA6IDc7
CisgICAgICAgIHVuc2lnbmVkIG1fdHlwZTsKICAgICAgICAgdW5zaWduZWQgbV9uZWVkc1N1cGVy
QmluZGluZyA6IDE7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoMSA8PCAyID4gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KENsYXNzRWxlbWVudFRhZzo6TGFzdFRhZyksICJDbGFzc0VsZW1lbnRUYWcgc2hv
dWxkbid0IHVzZSBtb3JlIHRoYW4gdHdvIGJpdHMiKTsKICAgICAgICAgdW5zaWduZWQgbV9jbGFz
c0VsZW1lbnRUYWcgOiAyOwpAQCAtMjE1MSw2ICsyMTUxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHZvaWQgc2V0RWNtYU5hbWUoY29uc3QgSWRlbnRpZmllciYgZWNtYU5hbWUpIHsgbV9l
Y21hTmFtZSA9IGVjbWFOYW1lOyB9CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGVjbWFOYW1l
KCkgeyByZXR1cm4gbV9pZGVudC5pc0VtcHR5KCkgPyBtX2VjbWFOYW1lIDogbV9pZGVudDsgfQog
CisgICAgICAgIHZvaWQgc2V0UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoUHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpIHsgbV9wcml2YXRlQnJhbmRSZXF1aXJl
bWVudCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihwcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7IH0K
KyAgICAgICAgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQo
KSB7IHJldHVybiBzdGF0aWNfY2FzdDxQcml2YXRlQnJhbmRSZXF1aXJlbWVudD4obV9wcml2YXRl
QnJhbmRSZXF1aXJlbWVudCk7IH0KKwogICAgICAgICBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2Rl
KCkgeyByZXR1cm4gbV9mdW5jdGlvbk1vZGU7IH0KIAogICAgICAgICBpbnQgZnVuY3Rpb25OYW1l
U3RhcnQoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uTmFtZVN0YXJ0OyB9CkBAIC0yMTk5LDYg
KzIyMDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3Rv
cktpbmQgOiAyOwogICAgICAgICB1bnNpZ25lZCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
IDogMTsKICAgICAgICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA6
IDE7CisgICAgICAgIHVuc2lnbmVkIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgOiAxOwogICAg
ICAgICBTb3VyY2VQYXJzZU1vZGUgbV9wYXJzZU1vZGU7CiAgICAgICAgIEZ1bmN0aW9uTW9kZSBt
X2Z1bmN0aW9uTW9kZTsKICAgICAgICAgSWRlbnRpZmllciBtX2lkZW50OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IGUxOTBlNjkzNjk5NTdhNGQwMGNiYzZiNzNj
N2NmMDEwOWM1OWUxYTMuLjY5ZmY4OWZlMmExOTRiZDFjNGY0MzVkNjJiYTM1ZWM2ZTMxOGZmMGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI4NTEsNiArMjg1
MSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNsYXNzRXhwcmVzc2lvbiBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyhUCiAgICAgY2xhc3NTY29wZS0+c2V0SXNMZXhp
Y2FsU2NvcGUoKTsKICAgICBjbGFzc1Njb3BlLT5wcmV2ZW50VmFyRGVjbGFyYXRpb25zKCk7CiAg
ICAgY2xhc3NTY29wZS0+c2V0U3RyaWN0TW9kZSgpOworICAgIGJvb2wgZGVjbGFyZXNQcml2YXRl
TWV0aG9kID0gZmFsc2U7CiAKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHJlcXVpcmVtZW50cyAh
PSBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHM6OlVubmFtZWQsICJDdXJyZW50bHksIHRoZXJlIGlz
IG5vIGNhbGxlciB0aGF0IHVzZXMgRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzOjpVbm5hbWVkIGZv
ciBjbGFzcyBzeW50YXguIik7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghKHJlcXVpcmVtZW50
cyA9PSBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHM6Ok5vbmUgJiYgIWluZm8uY2xhc3NOYW1lKSwg
IldoZW4gc3BlY2lmeWluZyBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHM6Ok5vbmUsIHdlIG5lZWQg
dG8gaW5pdGlhbGl6ZSBpbmZvLmNsYXNzTmFtZSB3aXRoIHRoZSBkZWZhdWx0IHZhbHVlIGluIHRo
ZSBjYWxsZXIgc2lkZS4iKTsKQEAgLTI5NjUsMTUgKzI5NjYsMjEgQEAgcGFyc2VNZXRob2Q6CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQUklWQVRFTkFNRTogewogICAgICAgICAg
ICAgQVNTRVJUKE9wdGlvbnM6OnVzZVByaXZhdGVDbGFzc0ZpZWxkcygpKTsKLSAgICAgICAgICAg
IEpTVG9rZW4gdG9rZW4gPSBtX3Rva2VuOwogICAgICAgICAgICAgaWRlbnQgPSBtX3Rva2VuLm1f
ZGF0YS5pZGVudDsKICAgICAgICAgICAgIGZhaWxJZlRydWUodGFnID09IENsYXNzRWxlbWVudFRh
Zzo6U3RhdGljLCAiU3RhdGljIGNsYXNzIGVsZW1lbnQgY2Fubm90IGJlIHByaXZhdGUiKTsKICAg
ICAgICAgICAgIGZhaWxJZlRydWUoaXNHZXR0ZXIgfHwgaXNTZXR0ZXIsICJDYW5ub3QgcGFyc2Ug
Y2xhc3MgbWV0aG9kIHdpdGggcHJpdmF0ZSBuYW1lIik7CiAgICAgICAgICAgICBBU1NFUlQoaWRl
bnQpOwogICAgICAgICAgICAgbmV4dCgpOwotICAgICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaEFu
ZFVwZGF0ZShPUEVOUEFSRU4sIHRva2VuKSwgIkNhbm5vdCBwYXJzZSBjbGFzcyBtZXRob2Qgd2l0
aCBwcml2YXRlIG5hbWUiKTsKLSAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShjbGFzc1Nj
b3BlLT5kZWNsYXJlUHJpdmF0ZU5hbWUoKmlkZW50KSAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZh
bGlkRHVwbGljYXRlRGVjbGFyYXRpb24sICJDYW5ub3QgZGVjbGFyZSBwcml2YXRlIGZpZWxkIHR3
aWNlIik7Ci0gICAgICAgICAgICB0eXBlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBl
Pih0eXBlIHwgUHJvcGVydHlOb2RlOjpQcml2YXRlKTsKKyAgICAgICAgICAgIGlmIChPcHRpb25z
Ojp1c2VQcml2YXRlTWV0aG9kcygpICYmIG1hdGNoKE9QRU5QQVJFTikpIHsKKyAgICAgICAgICAg
ICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoY2xhc3NTY29wZS0+ZGVjbGFyZVByaXZhdGVNZXRob2Qo
KmlkZW50KSAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb24s
ICJDYW5ub3QgZGVjbGFyZSBwcml2YXRlIG1ldGhvZCB0d2ljZSIpOworICAgICAgICAgICAgICAg
IGRlY2xhcmVzUHJpdmF0ZU1ldGhvZCA9IHRydWU7CisgICAgICAgICAgICAgICAgdHlwZSA9IHN0
YXRpY19jYXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4odHlwZSB8IFByb3BlcnR5Tm9kZTo6UHJpdmF0
ZU1ldGhvZCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGZhaWxJZlRydWUobWF0Y2goT1BFTlBBUkVOKSwgIkNhbm5vdCBwYXJzZSBjbGFzcyBt
ZXRob2Qgd2l0aCBwcml2YXRlIG5hbWUiKTsKKyAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1
ZShjbGFzc1Njb3BlLT5kZWNsYXJlUHJpdmF0ZUZpZWxkKCppZGVudCkgJiBEZWNsYXJhdGlvblJl
c3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uLCAiQ2Fubm90IGRlY2xhcmUgcHJpdmF0
ZSBmaWVsZCB0d2ljZSIpOworICAgICAgICAgICAgdHlwZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5
Tm9kZTo6VHlwZT4odHlwZSB8IFByb3BlcnR5Tm9kZTo6UHJpdmF0ZUZpZWxkKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0zMDUzLDEwICszMDYw
LDE5IEBAIHBhcnNlTWV0aG9kOgogICAgIGluZm8uZW5kT2Zmc2V0ID0gdG9rZW5Mb2NhdGlvbigp
LmVuZE9mZnNldCAtIDE7CiAgICAgY29uc3VtZU9yRmFpbChDTE9TRUJSQUNFLCAiRXhwZWN0ZWQg
YSBjbG9zaW5nICd9JyBhZnRlciBhIGNsYXNzIGJvZHkiKTsKIAorICAgIGlmIChkZWNsYXJlc1By
aXZhdGVNZXRob2QpIHsKKyAgICAgICAgSWRlbnRpZmllciBwcml2YXRlQnJhbmRJZGVudGlmaWVy
ID0gbV92bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5wcml2YXRlQnJhbmRQcml2YXRl
TmFtZSgpOworICAgICAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyYXRpb25SZXN1bHQg
PSBjbGFzc1Njb3BlLT5kZWNsYXJlTGV4aWNhbFZhcmlhYmxlKCZwcml2YXRlQnJhbmRJZGVudGlm
aWVyLCB0cnVlKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChkZWNsYXJhdGlvblJlc3VsdCwgZGVj
bGFyYXRpb25SZXN1bHQgPT0gRGVjbGFyYXRpb25SZXN1bHQ6OlZhbGlkKTsKKyAgICAgICAgY2xh
c3NTY29wZS0+dXNlVmFyaWFibGUoJnByaXZhdGVCcmFuZElkZW50aWZpZXIsIGZhbHNlKTsKKyAg
ICAgICAgY2xhc3NTY29wZS0+YWRkQ2xvc2VkVmFyaWFibGVDYW5kaWRhdGVVbmNvbmRpdGlvbmFs
bHkocHJpdmF0ZUJyYW5kSWRlbnRpZmllci5pbXBsKCkpOworICAgIH0KKwogICAgIGlmIChPcHRp
b25zOjp1c2VQcml2YXRlQ2xhc3NGaWVsZHMoKSkgewogICAgICAgICAvLyBGYWlsIGlmIHRoZXJl
IGFyZSBubyBwYXJlbnQgcHJpdmF0ZSBuYW1lIHNjb3BlcyBhbmQgYW55IHVzZWQtYnV0LXVuZGVj
bGFyZWQgcHJpdmF0ZSBuYW1lcy4KICAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxzZShjb3B5VW5k
ZWNsYXJlZFByaXZhdGVOYW1lc1RvT3V0ZXJTY29wZSgpLCAiQ2Fubm90IHJlZmVyZW5jZSB1bmRl
Y2xhcmVkIHByaXZhdGUgbmFtZXMiKTsKICAgICB9CisKICAgICBhdXRvIGNsYXNzRXhwcmVzc2lv
biA9IGNvbnRleHQuY3JlYXRlQ2xhc3NFeHByKGxvY2F0aW9uLCBpbmZvLCBjbGFzc1Njb3BlLT5m
aW5hbGl6ZUxleGljYWxFbnZpcm9ubWVudCgpLCBjb25zdHJ1Y3RvciwgcGFyZW50Q2xhc3MsIGNs
YXNzRWxlbWVudHMpOwogICAgIHBvcFNjb3BlKGNsYXNzU2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVk
c0ZyZWVWYXJpYWJsZUluZm8pOwogICAgIHJldHVybiBjbGFzc0V4cHJlc3Npb247CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBkYjhlYjczY2I5YTk4YmNhYjA2NGEwZmNj
MGU1NDVjNmVlNGFiNGY3Li5hOGRlNTU4MmE1NmE0NGI3NWRkNTczMTI1ZmM0N2E4YzdjOTUyNWY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTUxMSwxMSArNTExLDI4
IEBAIHB1YmxpYzoKICAgICAgICAgbV9sZXhpY2FsVmFyaWFibGVzLnVzZVByaXZhdGVOYW1lKGlk
ZW50KTsKICAgICB9CiAKLSAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyZVByaXZhdGVO
YW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBk
ZWNsYXJlUHJpdmF0ZU1ldGhvZChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChtX2FsbG93c0xleGljYWxEZWNsYXJhdGlvbnMpOwogICAgICAgICBEZWNsYXJh
dGlvblJlc3VsdE1hc2sgcmVzdWx0ID0gRGVjbGFyYXRpb25SZXN1bHQ6OlZhbGlkOwotICAgICAg
ICBhdXRvIGFkZFJlc3VsdCA9IG1fbGV4aWNhbFZhcmlhYmxlcy5kZWNsYXJlUHJpdmF0ZU5hbWUo
aWRlbnQpOworICAgICAgICBib29sIGFkZFJlc3VsdCA9IG1fbGV4aWNhbFZhcmlhYmxlcy5kZWNs
YXJlUHJpdmF0ZU1ldGhvZChpZGVudCk7CisKKyAgICAgICAgaWYgKCFhZGRSZXN1bHQpIHsKKyAg
ICAgICAgICAgIHJlc3VsdCB8PSBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURl
Y2xhcmF0aW9uOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCisgICAg
ICAgIHVzZVZhcmlhYmxlKCZpZGVudCwgZmFsc2UpOworICAgICAgICBhZGRDbG9zZWRWYXJpYWJs
ZUNhbmRpZGF0ZVVuY29uZGl0aW9uYWxseShpZGVudC5pbXBsKCkpOworCisgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgfQorCisgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmVQcml2
YXRlRmllbGQoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgeworICAgICAgICBBU1NFUlQo
bV9hbGxvd3NMZXhpY2FsRGVjbGFyYXRpb25zKTsKKyAgICAgICAgRGVjbGFyYXRpb25SZXN1bHRN
YXNrIHJlc3VsdCA9IERlY2xhcmF0aW9uUmVzdWx0OjpWYWxpZDsKKyAgICAgICAgYXV0byBhZGRS
ZXN1bHQgPSBtX2xleGljYWxWYXJpYWJsZXMuZGVjbGFyZVByaXZhdGVGaWVsZChpZGVudCk7CiAg
ICAgICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgICAgICByZXN1bHQgfD0g
RGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbjsKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyTW9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMu
aAppbmRleCBlYWZmZGUyMWMxNTk1ZGIzMDJmNjI5OTJiYWExOTJlZjZhYWQ2MTU4Li45ZDlhMTg5
Yjc2YmU5NGNlZDFlZTE0OGViYTUyNDFmOWRlNzZkM2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCkBAIC0zNyw2ICszNyw4IEBAIGVudW0gY2xhc3MgSlNQ
YXJzZXJTY3JpcHRNb2RlIHsgQ2xhc3NpYywgTW9kdWxlIH07CiAKIGVudW0gY2xhc3MgU3VwZXJC
aW5kaW5nIHsgTmVlZGVkLCBOb3ROZWVkZWQgfTsKIAorZW51bSBjbGFzcyBQcml2YXRlQnJhbmRS
ZXF1aXJlbWVudCB7IE5vbmUsIE5lZWRlZCB9OworCiBlbnVtIGNsYXNzIENvZGVHZW5lcmF0aW9u
TW9kZSA6IHVpbnQ4X3QgewogICAgIERlYnVnZ2VyID0gMSA8PCAwLAogICAgIFR5cGVQcm9maWxl
ciA9IDEgPDwgMSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFy
aWFibGVFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Zhcmlh
YmxlRW52aXJvbm1lbnQuY3BwCmluZGV4IGQ1YTllZDk5OTVlMzg3MjNiN2ZiZmFhMTVjYmQ2OTQy
YWQ0ZDU5ZDIuLjdkM2IxYjhiNzA2MDViZGUzOTVhNWM3ZGJmZTA4NTAwOWVhOTRlOTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50
LmNwcApAQCAtMTA0LDYgKzEwNCw0MSBAQCB2b2lkIFZhcmlhYmxlRW52aXJvbm1lbnQ6Om1hcmtW
YXJpYWJsZUFzRXhwb3J0ZWQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPgogICAgIGZp
bmRSZXN1bHQtPnZhbHVlLnNldElzRXhwb3J0ZWQoKTsKIH0KIAorYm9vbCBWYXJpYWJsZUVudmly
b25tZW50OjpkZWNsYXJlUHJpdmF0ZU1ldGhvZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0lt
cGw+JiBpZGVudGlmaWVyKQoreworICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgbV9yYXJl
RGF0YSA9IG1ha2VVbmlxdWU8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+KCk7CisKKyAg
ICBhdXRvIGZpbmRSZXN1bHQgPSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5maW5kKGlkZW50
aWZpZXIpOworCisgICAgaWYgKGZpbmRSZXN1bHQgPT0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFt
ZXMuZW5kKCkpIHsKKyAgICAgICAgUHJpdmF0ZU5hbWVFbnRyeSBtZXRhKFByaXZhdGVOYW1lRW50
cnk6OlRyYWl0czo6SXNEZWNsYXJlZCB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNNZXRo
b2QpOworCisgICAgICAgIGF1dG8gZW50cnkgPSBWYXJpYWJsZUVudmlyb25tZW50RW50cnkoKTsK
KyAgICAgICAgZW50cnkuc2V0SXNQcml2YXRlTWV0aG9kKCk7CisgICAgICAgIGVudHJ5LnNldElz
Q29uc3QoKTsKKyAgICAgICAgZW50cnkuc2V0SXNDYXB0dXJlZCgpOworICAgICAgICBtX21hcC5h
ZGQoaWRlbnRpZmllciwgZW50cnkpOworCisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yYXJl
RGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKGlkZW50aWZpZXIsIG1ldGEpOworICAgICAgICByZXR1
cm4gYWRkUmVzdWx0LmlzTmV3RW50cnk7CisgICAgfQorCisgICAgaWYgKGZpbmRSZXN1bHQtPnZh
bHVlLmlzRGVjbGFyZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBFcnJvcjogZGVjbGFy
aW5nIGEgZHVwbGljYXRlIHByaXZhdGUgbmFtZS4KKworICAgIGF1dG8gZW50cnkgPSBWYXJpYWJs
ZUVudmlyb25tZW50RW50cnkoKTsKKyAgICBlbnRyeS5zZXRJc1ByaXZhdGVNZXRob2QoKTsKKyAg
ICBlbnRyeS5zZXRJc0NvbnN0KCk7CisgICAgZW50cnkuc2V0SXNDYXB0dXJlZCgpOworICAgIG1f
bWFwLmFkZChpZGVudGlmaWVyLCBlbnRyeSk7CisKKyAgICAvLyBpdCB3YXMgcHJldmlvdXNseSB1
c2VkLCBtYXJrIGl0IGFzIGRlY2xhcmVkLgorICAgIFByaXZhdGVOYW1lRW50cnkgbWV0YShQcml2
YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzRGVjbGFyZWQgfCBQcml2YXRlTmFtZUVudHJ5OjpUcmFp
dHM6OklzVXNlZCB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNNZXRob2QpOworICAgIGF1
dG8gYWRkUmVzdWx0ID0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuc2V0KGlkZW50aWZpZXIs
IG1ldGEpOworICAgIHJldHVybiAhYWRkUmVzdWx0LmlzTmV3RW50cnk7Cit9CisKIENvbXBhY3RW
YXJpYWJsZUVudmlyb25tZW50OjpDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudChjb25zdCBWYXJp
YWJsZUVudmlyb25tZW50JiBlbnYpCiAgICAgOiBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkKGVudi5p
c0V2ZXJ5dGhpbmdDYXB0dXJlZCgpKQogewpAQCAtMTE3LDYgKzE1MiwyNSBAQCBDb21wYWN0VmFy
aWFibGVFbnZpcm9ubWVudDo6Q29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQoY29uc3QgVmFyaWFi
bGVFbnZpcm9ubWVudAogICAgIH0pOwogCiAgICAgbV9oYXNoID0gMDsKKyAgICBpZiAoZW52LnBy
aXZhdGVOYW1lc1NpemUoKSkgeworICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPFVuaXF1ZWRTdHJp
bmdJbXBsKiwgUHJpdmF0ZU5hbWVFbnRyeT4sIDE2PiBzb3J0ZWRQcml2YXRlRW50cmllczsKKyAg
ICAgICAgc29ydGVkUHJpdmF0ZUVudHJpZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShlbnYucHJp
dmF0ZU5hbWVzU2l6ZSgpKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbnRyaWVzIDogZW52
LnByaXZhdGVOYW1lcygpKQorICAgICAgICAgICAgc29ydGVkUHJpdmF0ZUVudHJpZXMuYXBwZW5k
KHtlbnRyaWVzLmtleS5nZXQoKSwgZW50cmllcy52YWx1ZX0pOworCisgICAgICAgIHN0ZDo6c29y
dChzb3J0ZWRQcml2YXRlRW50cmllcy5iZWdpbigpLCBzb3J0ZWRQcml2YXRlRW50cmllcy5lbmQo
KSwgW10gKGNvbnN0IGF1dG8mIGEsIGNvbnN0IGF1dG8mIGIpIHsKKyAgICAgICAgICAgIHJldHVy
biBhLmZpcnN0IDwgYi5maXJzdDsKKyAgICAgICAgfSk7CisKKyAgICAgICAgbV9wcml2YXRlQWNj
ZXNzTmFtZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShlbnYucHJpdmF0ZU5hbWVzU2l6ZSgpKTsK
KyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogc29ydGVkUHJpdmF0ZUVudHJpZXMpIHsK
KyAgICAgICAgICAgIG1fcHJpdmF0ZUFjY2Vzc05hbWVzLmFwcGVuZChwYWlyLmZpcnN0KTsKKyAg
ICAgICAgICAgIG1fcHJpdmF0ZU5hbWVNZXRhZGF0YS5hcHBlbmQocGFpci5zZWNvbmQpOworICAg
ICAgICAgICAgbV9oYXNoIF49IHBhaXIuZmlyc3QtPmhhc2goKTsKKyAgICAgICAgICAgIG1faGFz
aCArPSBwYWlyLnNlY29uZC5iaXRzKCk7CisgICAgICAgIH0KKyAgICB9CisKICAgICBtX3Zhcmlh
Ymxlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNvcnRlZEVudHJpZXMuc2l6ZSgpKTsKICAgICBt
X3ZhcmlhYmxlTWV0YWRhdGEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzb3J0ZWRFbnRyaWVzLnNp
emUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogc29ydGVkRW50cmllcykgewpAQCAt
MTQwLDYgKzE5NCwxMCBAQCBib29sIENvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50OjpvcGVyYXRv
cj09KGNvbnN0IENvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50JiBvdAogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgaWYgKG1fdmFyaWFibGVNZXRhZGF0YSAhPSBvdGhlci5tX3ZhcmlhYmxlTWV0
YWRhdGEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9wcml2YXRlQWNjZXNzTmFt
ZXMgIT0gb3RoZXIubV9wcml2YXRlQWNjZXNzTmFtZXMpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAobV9wcml2YXRlTmFtZU1ldGFkYXRhICE9IG90aGVyLm1fcHJpdmF0ZU5hbWVNZXRh
ZGF0YSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0x
NTMsNiArMjExLDEyIEBAIFZhcmlhYmxlRW52aXJvbm1lbnQgQ29tcGFjdFZhcmlhYmxlRW52aXJv
bm1lbnQ6OnRvVmFyaWFibGVFbnZpcm9ubWVudCgpIGNvbnN0CiAgICAgICAgIGFkZFJlc3VsdC5p
dGVyYXRvci0+dmFsdWUgPSBtX3ZhcmlhYmxlTWV0YWRhdGFbaV07CiAgICAgfQogCisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX3ByaXZhdGVBY2Nlc3NOYW1lcy5zaXplKCk7IGkrKykgewor
ICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IHJlc3VsdC5hZGRQcml2YXRlTmFtZShtX3ByaXZhdGVB
Y2Nlc3NOYW1lc1tpXSk7CisgICAgICAgIEFTU0VSVChhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Cisg
ICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtX3ByaXZhdGVOYW1lTWV0YWRhdGFb
aV07CisgICAgfQorCiAgICAgaWYgKG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQpCiAgICAgICAgIHJl
c3VsdC5tYXJrQWxsVmFyaWFibGVzQXNDYXB0dXJlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oCmluZGV4IGMxMjEzNTE5ZjE3
MWQwZmM3ZTJlZmM3ZDJkZWU4YTFhYjQ0OTkwOTAuLjViMDIxMmUzN2YyZWIyMTNiZmI5ZWRkMjNh
YTE1YWEyOWFlZjRmYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
VmFyaWFibGVFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
VmFyaWFibGVFbnZpcm9ubWVudC5oCkBAIC00NCw3ICs0NCw4IEBAIHB1YmxpYzoKICAgICBBTFdB
WVNfSU5MSU5FIGJvb2wgaXNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzRnVu
Y3Rpb247IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQYXJhbWV0ZXIoKSBjb25zdCB7IHJl
dHVybiBtX2JpdHMgJiBJc1BhcmFtZXRlcjsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1Ns
b3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzU2xv
cHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlOyB9Ci0gICAgQUxXQVlTX0lOTElORSBib29sIGlzUHJp
dmF0ZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1ByaXZhdGVOYW1lOyB9CisgICAg
QUxXQVlTX0lOTElORSBib29sIGlzUHJpdmF0ZUZpZWxkKCkgY29uc3QgeyByZXR1cm4gbV9iaXRz
ICYgSXNQcml2YXRlRmllbGQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQcml2YXRlTWV0
aG9kKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNQcml2YXRlTWV0aG9kOyB9CiAKICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNDYXB0dXJlZCgpIHsgbV9iaXRzIHw9IElzQ2FwdHVyZWQ7
IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNDb25zdCgpIHsgbV9iaXRzIHw9IElzQ29u
c3Q7IH0KQEAgLTU2LDcgKzU3LDggQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXRJc0Z1bmN0aW9uKCkgeyBtX2JpdHMgfD0gSXNGdW5jdGlvbjsgfQogICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXRJc1BhcmFtZXRlcigpIHsgbV9iaXRzIHw9IElzUGFyYW1ldGVyOyB9CiAgICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldElzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlKCkgeyBt
X2JpdHMgfD0gSXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGU7IH0KLSAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0SXNQcml2YXRlTmFtZSgpIHsgbV9iaXRzIHw9IElzUHJpdmF0ZU5hbWU7IH0K
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNQcml2YXRlRmllbGQoKSB7IG1fYml0cyB8PSBJ
c1ByaXZhdGVGaWVsZDsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1ByaXZhdGVNZXRo
b2QoKSB7IG1fYml0cyB8PSBJc1ByaXZhdGVNZXRob2Q7IH0KIAogICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBjbGVhcklzVmFyKCkgeyBtX2JpdHMgJj0gfklzVmFyOyB9CiAKQEAgLTc5LDcgKzgxLDgg
QEAgcHJpdmF0ZToKICAgICAgICAgSXNGdW5jdGlvbiA9IDEgPDwgNywKICAgICAgICAgSXNQYXJh
bWV0ZXIgPSAxIDw8IDgsCiAgICAgICAgIElzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlID0g
MSA8PCA5LAotICAgICAgICBJc1ByaXZhdGVOYW1lID0gMSA8PCAxMCwKKyAgICAgICAgSXNQcml2
YXRlRmllbGQgPSAxIDw8IDEwLAorICAgICAgICBJc1ByaXZhdGVNZXRob2QgPSAxIDw8IDExLAog
ICAgIH07CiAgICAgdWludDE2X3QgbV9iaXRzIHsgMCB9OwogfTsKQEAgLTg5LDExICs5MiwxNiBA
QCBzdHJ1Y3QgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5SGFzaFRyYWl0cyA6IEhhc2hUcmFpdHM8
VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5PgogfTsKIAogc3RydWN0IFByaXZhdGVOYW1lRW50cnkg
eworICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRQcml2YXRlTmFtZUVudHJ5OworCiBwdWJsaWM6CiAg
ICAgUHJpdmF0ZU5hbWVFbnRyeSh1aW50MTZfdCB0cmFpdHMgPSAwKSB7IG1fYml0cyA9IHRyYWl0
czsgfQogCiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzVXNlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
Yml0cyAmIElzVXNlZDsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0RlY2xhcmVkKCkgY29u
c3QgeyByZXR1cm4gbV9iaXRzICYgSXNEZWNsYXJlZDsgfQorICAgIEFMV0FZU19JTkxJTkUgYm9v
bCBpc01ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzTWV0aG9kOyB9CisKKyAgICBi
b29sIGlzUHJpdmF0ZUFjY2VzcygpIGNvbnN0IHsgcmV0dXJuIGlzTWV0aG9kKCk7IH0KIAogICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1VzZWQoKSB7IG1fYml0cyB8PSBJc1VzZWQ7IH0KICAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNEZWNsYXJlZCgpIHsgbV9iaXRzIHw9IElzRGVjbGFy
ZWQ7IH0KQEAgLTEwNiw4ICsxMTQsMTAgQEAgcHVibGljOgogICAgIH0KIAogICAgIGVudW0gVHJh
aXRzIDogdWludDE2X3QgeworICAgICAgICBOb25lID0gMCwKICAgICAgICAgSXNVc2VkID0gMSA8
PCAwLAogICAgICAgICBJc0RlY2xhcmVkID0gMSA8PCAxLAorICAgICAgICBJc01ldGhvZCA9IDEg
PDwgMiwKICAgICB9OwogCiBwcml2YXRlOgpAQCAtMTE1LDE0ICsxMjUsMTYgQEAgcHJpdmF0ZToK
IH07CiAKIHN0cnVjdCBQcml2YXRlTmFtZUVudHJ5SGFzaFRyYWl0cyA6IEhhc2hUcmFpdHM8UHJp
dmF0ZU5hbWVFbnRyeT4gewotICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24g
PSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IGZh
bHNlOwogfTsKIAogY2xhc3MgVmFyaWFibGVFbnZpcm9ubWVudCB7CiBwcml2YXRlOgogICAgIHR5
cGVkZWYgSGFzaE1hcDxQYWNrZWRSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBWYXJpYWJsZUVu
dmlyb25tZW50RW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlx
dWVkU3RyaW5nSW1wbD4+LCBWYXJpYWJsZUVudmlyb25tZW50RW50cnlIYXNoVHJhaXRzPiBNYXA7
Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFBhY2tlZFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIFBy
aXZhdGVOYW1lRW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlx
dWVkU3RyaW5nSW1wbD4+LCBQcml2YXRlTmFtZUVudHJ5SGFzaFRyYWl0cz4gUHJpdmF0ZU5hbWVz
OworCiBwdWJsaWM6CisgICAgdHlwZWRlZiBIYXNoTWFwPFBhY2tlZFJlZlB0cjxVbmlxdWVkU3Ry
aW5nSW1wbD4sIFByaXZhdGVOYW1lRW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRz
PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+LCBQcml2YXRlTmFtZUVudHJ5SGFzaFRyYWl0cz4g
UHJpdmF0ZU5hbWVzOworCiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCgpIHsgfQogICAgIFZhcmlh
YmxlRW52aXJvbm1lbnQoVmFyaWFibGVFbnZpcm9ubWVudCYmIG90aGVyKQogICAgICAgICA6IG1f
bWFwKFdURk1vdmUob3RoZXIubV9tYXApKQpAQCAtMTQ0LDYgKzE1NiwxNiBAQCBwdWJsaWM6CiAg
ICAgQUxXQVlTX0lOTElORSBNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJu
IG1fbWFwLmVuZCgpOyB9CiAgICAgQUxXQVlTX0lOTElORSBNYXA6OkFkZFJlc3VsdCBhZGQoY29u
c3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikgeyByZXR1cm4gbV9tYXAu
YWRkKGlkZW50aWZpZXIsIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpKTsgfQogICAgIEFMV0FZ
U19JTkxJTkUgTWFwOjpBZGRSZXN1bHQgYWRkKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIp
IHsgcmV0dXJuIGFkZChpZGVudGlmaWVyLmltcGwoKSk7IH0KKworICAgIEFMV0FZU19JTkxJTkUg
UHJpdmF0ZU5hbWVzOjpBZGRSZXN1bHQgYWRkUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYg
aWRlbnRpZmllcikgeyByZXR1cm4gYWRkUHJpdmF0ZU5hbWUoaWRlbnRpZmllci5pbXBsKCkpOyB9
CisgICAgQUxXQVlTX0lOTElORSBQcml2YXRlTmFtZXM6OkFkZFJlc3VsdCBhZGRQcml2YXRlTmFt
ZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQorICAgIHsKKyAg
ICAgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICAgICAgbV9yYXJlRGF0YSA9IG1ha2VVbmlx
dWU8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+KCk7CisKKyAgICAgICAgcmV0dXJuIG1f
cmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChpZGVudGlmaWVyLCBQcml2YXRlTmFtZUVudHJ5
KCkpOworICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbWFwLnNpemUoKSArIHByaXZhdGVOYW1lc1NpemUoKTsgfQogICAgIEFMV0FZU19J
TkxJTkUgdW5zaWduZWQgbWFwU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKTsgfQog
ICAgIEFMV0FZU19JTkxJTkUgYm9vbCBjb250YWlucyhjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmlu
Z0ltcGw+JiBpZGVudGlmaWVyKSBjb25zdCB7IHJldHVybiBtX21hcC5jb250YWlucyhpZGVudGlm
aWVyKTsgfQpAQCAtMTY0LDE1ICsxODYsMTggQEAgcHVibGljOgogCiAgICAgdXNpbmcgUHJpdmF0
ZU5hbWVzUmFuZ2UgPSBXVEY6Okl0ZXJhdG9yUmFuZ2U8UHJpdmF0ZU5hbWVzOjppdGVyYXRvcj47
CiAKLSAgICBBTFdBWVNfSU5MSU5FIE1hcDo6QWRkUmVzdWx0IGRlY2xhcmVQcml2YXRlTmFtZShj
b25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBkZWNsYXJlUHJpdmF0ZU5hbWUo
aWRlbnRpZmllci5pbXBsKCkpOyB9CisgICAgQUxXQVlTX0lOTElORSBNYXA6OkFkZFJlc3VsdCBk
ZWNsYXJlUHJpdmF0ZUZpZWxkKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsgcmV0dXJu
IGRlY2xhcmVQcml2YXRlRmllbGQoaWRlbnRpZmllci5pbXBsKCkpOyB9CiAgICAgQUxXQVlTX0lO
TElORSB2b2lkIHVzZVByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsg
dXNlUHJpdmF0ZU5hbWUoaWRlbnRpZmllci5pbXBsKCkpOyB9CiAKLSAgICBNYXA6OkFkZFJlc3Vs
dCBkZWNsYXJlUHJpdmF0ZU5hbWUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRl
bnRpZmllcikKKyAgICBib29sIGRlY2xhcmVQcml2YXRlTWV0aG9kKGNvbnN0IElkZW50aWZpZXIm
IGlkZW50aWZpZXIpIHsgcmV0dXJuIGRlY2xhcmVQcml2YXRlTWV0aG9kKGlkZW50aWZpZXIuaW1w
bCgpKTsgfQorICAgIGJvb2wgZGVjbGFyZVByaXZhdGVNZXRob2QoY29uc3QgUmVmUHRyPFVuaXF1
ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcik7CisKKyAgICBNYXA6OkFkZFJlc3VsdCBkZWNsYXJl
UHJpdmF0ZUZpZWxkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIp
CiAgICAgewogICAgICAgICBhdXRvJiBtZXRhID0gZ2V0T3JBZGRQcml2YXRlTmFtZShpZGVudGlm
aWVyLmdldCgpKTsKICAgICAgICAgbWV0YS5zZXRJc0RlY2xhcmVkKCk7CiAgICAgICAgIGF1dG8g
ZW50cnkgPSBWYXJpYWJsZUVudmlyb25tZW50RW50cnkoKTsKLSAgICAgICAgZW50cnkuc2V0SXNQ
cml2YXRlTmFtZSgpOworICAgICAgICBlbnRyeS5zZXRJc1ByaXZhdGVGaWVsZCgpOwogICAgICAg
ICBlbnRyeS5zZXRJc0NvbnN0KCk7CiAgICAgICAgIGVudHJ5LnNldElzQ2FwdHVyZWQoKTsKICAg
ICAgICAgcmV0dXJuIG1fbWFwLmFkZChpZGVudGlmaWVyLCBlbnRyeSk7CkBAIC0xOTksNiArMjI0
LDE5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVz
LnNpemUoKTsKICAgICB9CiAKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaGFzUHJpdmF0ZUFjY2Vz
cygpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAgICAgZm9yIChhdXRvIGVudHJ5IDogcHJpdmF0ZU5hbWVzKCkp
IHsKKyAgICAgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc1ByaXZhdGVBY2Nlc3MoKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaGFzUHJpdmF0ZU5hbWUoY29uc3Qg
SWRlbnRpZmllciYgaWRlbnRpZmllcikKICAgICB7CiAgICAgICAgIGlmICghbV9yYXJlRGF0YSkK
QEAgLTI4MCw2ICszMTgsOSBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPFBhY2tlZFJlZlB0cjxV
bmlxdWVkU3RyaW5nSW1wbD4+IG1fdmFyaWFibGVzOwogICAgIFZlY3RvcjxWYXJpYWJsZUVudmly
b25tZW50RW50cnk+IG1fdmFyaWFibGVNZXRhZGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPFVuaXF1
ZWRTdHJpbmdJbXBsPj4gbV9wcml2YXRlQWNjZXNzTmFtZXM7CisgICAgVmVjdG9yPFByaXZhdGVO
YW1lRW50cnk+IG1fcHJpdmF0ZU5hbWVNZXRhZGF0YTsKKwogICAgIHVuc2lnbmVkIG1faGFzaDsK
ICAgICBib29sIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCmluZGV4IGU0NGMxYTM5Nzk0YjI0YmNkODdh
ZWYzOThhN2MyODI1N2VmMGM1MmQuLjE5YWFmODE2YTQxNzYyN2IwMGI1MmI3NjUyMWVhZWU4MzFj
OTQyYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5
cGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5j
cHAKQEAgLTk4MCw2ICs5ODAsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYml0VmVjdG9ycy5lbmNv
ZGUoZW5jb2RlciwgcmFyZURhdGEubV9iaXRWZWN0b3JzKTsKICAgICAgICAgbV9jb25zdGFudElk
ZW50aWZpZXJTZXRzLmVuY29kZShlbmNvZGVyLCByYXJlRGF0YS5tX2NvbnN0YW50SWRlbnRpZmll
clNldHMpOwogICAgICAgICBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyID0gcmFyZURhdGEu
bV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjsKKyAgICAgICAgbV9wcml2YXRlQnJhbmRSZXF1
aXJlbWVudCA9IHJhcmVEYXRhLm1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ7CiAgICAgfQogCiAg
ICAgVW5saW5rZWRDb2RlQmxvY2s6OlJhcmVEYXRhKiBkZWNvZGUoRGVjb2RlciYgZGVjb2Rlcikg
Y29uc3QKQEAgLTk5NCw2ICs5OTUsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYml0VmVjdG9ycy5k
ZWNvZGUoZGVjb2RlciwgcmFyZURhdGEtPm1fYml0VmVjdG9ycyk7CiAgICAgICAgIG1fY29uc3Rh
bnRJZGVudGlmaWVyU2V0cy5kZWNvZGUoZGVjb2RlciwgcmFyZURhdGEtPm1fY29uc3RhbnRJZGVu
dGlmaWVyU2V0cyk7CiAgICAgICAgIHJhcmVEYXRhLT5tX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyID0gbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjsKKyAgICAgICAgcmFyZURhdGEtPm1f
cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50OwogICAg
ICAgICByZXR1cm4gcmFyZURhdGE7CiAgICAgfQogCkBAIC0xMDA3LDYgKzEwMDksNyBAQCBwcml2
YXRlOgogICAgIENhY2hlZFZlY3RvcjxDYWNoZWRCaXRWZWN0b3I+IG1fYml0VmVjdG9yczsKICAg
ICBDYWNoZWRWZWN0b3I8Q2FjaGVkQ29uc3RhbnRJZGVudGlmaWVyU2V0RW50cnk+IG1fY29uc3Rh
bnRJZGVudGlmaWVyU2V0czsKICAgICB1bnNpZ25lZCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyIDogMTsKKyAgICB1bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsKIH07
CiAKIGNsYXNzIENhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnRSYXJlRGF0YSA6IHB1YmxpYyBDYWNo
ZWRPYmplY3Q8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+IHsKQEAgLTExODgsNyArMTE5
MSw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgQ2FjaGVkSGFzaFNldDxDYWNo
ZWRSZWZQdHI8Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGw+LCBJZGVudGlmaWVyUmVwSGFzaD4gbV9w
cml2YXRlTmFtZXM7CisgICAgQ2FjaGVkSGFzaE1hcDxDYWNoZWRSZWZQdHI8Q2FjaGVkVW5pcXVl
ZFN0cmluZ0ltcGwsIFVuaXF1ZWRTdHJpbmdJbXBsLCBXVEY6OlBhY2tlZFB0clRyYWl0czxVbmlx
dWVkU3RyaW5nSW1wbD4+LCBQcml2YXRlTmFtZUVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFz
aFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiwgUHJpdmF0ZU5hbWVFbnRyeUhhc2hU
cmFpdHM+IG1fcHJpdmF0ZU5hbWVzOwogfTsKIAogY2xhc3MgQ2FjaGVkU3ltYm9sVGFibGUgOiBw
dWJsaWMgQ2FjaGVkT2JqZWN0PFN5bWJvbFRhYmxlPiB7CkBAIC0xNzQ0LDIxICsxNzQ3LDIxIEBA
IHB1YmxpYzoKICAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6UmFyZURhdGEmIHJhcmVEYXRhKQogICAgIHsKICAgICAgICAg
bV9jbGFzc1NvdXJjZS5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9jbGFzc1NvdXJjZSk7Ci0g
ICAgICAgIG1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXMuZW5jb2RlKGVuY29kZXIsIHJhcmVEYXRh
Lm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOworICAgICAgICBtX3BhcmVudFNjb3BlVmFyaWFi
bGVFbnZpcm9ubWVudC5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9wYXJlbnRTY29wZVZhcmlh
YmxlRW52aXJvbm1lbnQpOwogICAgIH0KIAogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
OjpSYXJlRGF0YSogZGVjb2RlKERlY29kZXImIGRlY29kZXIpIGNvbnN0CiAgICAgewogICAgICAg
ICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6UmFyZURhdGEqIHJhcmVEYXRhID0gbmV3IFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpSYXJlRGF0YSB7IH07CiAgICAgICAgIG1fY2xhc3NT
b3VyY2UuZGVjb2RlKGRlY29kZXIsIHJhcmVEYXRhLT5tX2NsYXNzU291cmNlKTsKLSAgICAgICAg
YXV0byBwYXJlbnRTY29wZVREWlZhcmlhYmxlcyA9IG1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXMu
ZGVjb2RlKGRlY29kZXIpOwotICAgICAgICByYXJlRGF0YS0+bV9wYXJlbnRTY29wZVREWlZhcmlh
YmxlcyA9IFdURk1vdmUocGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOworICAgICAgICBhdXRvIHBh
cmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCA9IG1fcGFyZW50U2NvcGVWYXJpYWJsZUVudmly
b25tZW50LmRlY29kZShkZWNvZGVyKTsKKyAgICAgICAgcmFyZURhdGEtPm1fcGFyZW50U2NvcGVW
YXJpYWJsZUVudmlyb25tZW50ID0gV1RGTW92ZShwYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1l
bnQpOwogICAgICAgICByZXR1cm4gcmFyZURhdGE7CiAgICAgfQogCiBwcml2YXRlOgogICAgIENh
Y2hlZFNvdXJjZUNvZGVXaXRob3V0UHJvdmlkZXIgbV9jbGFzc1NvdXJjZTsKLSAgICBDYWNoZWRD
b21wYWN0VmFyaWFibGVNYXBIYW5kbGUgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlczsKKyAgICBD
YWNoZWRDb21wYWN0VmFyaWFibGVNYXBIYW5kbGUgbV9wYXJlbnRTY29wZVZhcmlhYmxlRW52aXJv
bm1lbnQ7CiB9OwogCiBjbGFzcyBDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGUgOiBwdWJsaWMgQ2Fj
aGVkT2JqZWN0PFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPiB7CkBAIC0xNzk0LDYgKzE3OTcs
NyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgc3VwZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4g
bV9zdXBlckJpbmRpbmc7IH0KICAgICB1bnNpZ25lZCBkZXJpdmVkQ29udGV4dFR5cGUoKSBjb25z
dCB7IHJldHVybiBtX2Rlcml2ZWRDb250ZXh0VHlwZTsgfQogICAgIHVuc2lnbmVkIG5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplcjsgfQorICAgIHVuc2lnbmVkIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkgY29uc3Qg
eyByZXR1cm4gbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudDsgfQogCiAgICAgSWRlbnRpZmllciBu
YW1lKERlY29kZXImIGRlY29kZXIpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZS5kZWNvZGUoZGVjb2Rl
cik7IH0KICAgICBJZGVudGlmaWVyIGVjbWFOYW1lKERlY29kZXImIGRlY29kZXIpIGNvbnN0IHsg
cmV0dXJuIG1fZWNtYU5hbWUuZGVjb2RlKGRlY29kZXIpOyB9CkBAIC0xODIyLDcgKzE4MjYsOCBA
QCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fcGFyYW1ldGVyc1N0YXJ0T2Zmc2V0IDogMzE7CiAg
ICAgdW5zaWduZWQgbV90eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQ7CiAgICAgdW5zaWduZWQgbV90
eXBlUHJvZmlsaW5nRW5kT2Zmc2V0OwotICAgIHVuc2lnbmVkIG1fcGFyYW1ldGVyQ291bnQ7Cisg
ICAgdW5zaWduZWQgbV9wYXJhbWV0ZXJDb3VudDozMTsKKyAgICB1bnNpZ25lZCBtX3ByaXZhdGVC
cmFuZFJlcXVpcmVtZW50IDogMTsKICAgICBTb3VyY2VQYXJzZU1vZGUgbV9zb3VyY2VQYXJzZU1v
ZGU7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1f
ZnVuY3Rpb25Nb2RlIDogMjsgLy8gRnVuY3Rpb25Nb2RlCkBAIC0xODc5LDcgKzE4ODQsNiBAQCBw
dWJsaWM6CiAgICAgdW5zaWduZWQgaXNDbGFzc0NvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lz
Q2xhc3NDb250ZXh0OyB9CiAgICAgdW5zaWduZWQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb25zdHJ1Y3RvcktpbmQ7IH0KICAgICB1bnNpZ25lZCBkZXJpdmVkQ29udGV4dFR5
cGUoKSBjb25zdCB7IHJldHVybiBtX2Rlcml2ZWRDb250ZXh0VHlwZTsgfQotICAgIHVuc2lnbmVk
IG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplcjsgfQogICAgIHVuc2lnbmVkIGV2YWxDb250ZXh0VHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZXZhbENvbnRleHRUeXBlOyB9CiAgICAgdW5zaWduZWQgaGFzVGFpbENhbGxz
KCkgY29uc3QgeyByZXR1cm4gbV9oYXNUYWlsQ2FsbHM7IH0KICAgICB1bnNpZ25lZCBoYXNDaGVj
a3BvaW50cygpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ2hlY2twb2ludHM7IH0KQEAgLTE5MTEsNyAr
MTkxNSw2IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9pc0NsYXNzQ29udGV4dCA6IDE7CiAg
ICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZGVyaXZl
ZENvbnRleHRUeXBlIDogMjsKLSAgICB1bnNpZ25lZCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyIDogMTsKICAgICB1bnNpZ25lZCBtX2V2YWxDb250ZXh0VHlwZSA6IDI7CiAgICAgdW5zaWdu
ZWQgbV9oYXNUYWlsQ2FsbHMgOiAxOwogICAgIHVuc2lnbmVkIG1fY29kZVR5cGUgOiAyOwpAQCAt
MjE5Miw2ICsyMTk1LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIENhY2hlZEZ1bmN0aW9uRXhlY3V0
YWJsZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFVubGkKICAgICBtX3N1cGVyQmlu
ZGluZyA9IGV4ZWN1dGFibGUubV9zdXBlckJpbmRpbmc7CiAgICAgbV9kZXJpdmVkQ29udGV4dFR5
cGUgPSBleGVjdXRhYmxlLm1fZGVyaXZlZENvbnRleHRUeXBlOwogICAgIG1fbmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIgPSBleGVjdXRhYmxlLm1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI7
CisgICAgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9IGV4ZWN1dGFibGUubV9wcml2YXRlQnJh
bmRSZXF1aXJlbWVudDsKIAogICAgIG1fcmFyZURhdGEuZW5jb2RlKGVuY29kZXIsIGV4ZWN1dGFi
bGUubV9yYXJlRGF0YS5nZXQoKSk7CiAKQEAgLTIyMzMsNiArMjIzNyw3IEBAIEFMV0FZU19JTkxJ
TkUgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KERlY29kZXImIGRlCiAgICAgLCBtX3R5cGVQcm9maWxpbmdTdGFydE9mZnNldChjYWNoZWRFeGVj
dXRhYmxlLnR5cGVQcm9maWxpbmdTdGFydE9mZnNldCgpKQogICAgICwgbV90eXBlUHJvZmlsaW5n
RW5kT2Zmc2V0KGNhY2hlZEV4ZWN1dGFibGUudHlwZVByb2ZpbGluZ0VuZE9mZnNldCgpKQogICAg
ICwgbV9wYXJhbWV0ZXJDb3VudChjYWNoZWRFeGVjdXRhYmxlLnBhcmFtZXRlckNvdW50KCkpCisg
ICAgLCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50KGNhY2hlZEV4ZWN1dGFibGUucHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQoKSkKICAgICAsIG1fZmVhdHVyZXMoY2FjaGVkRXhlY3V0YWJsZS5mZWF0
dXJlcygpKQogICAgICwgbV9zb3VyY2VQYXJzZU1vZGUoY2FjaGVkRXhlY3V0YWJsZS5zb3VyY2VQ
YXJzZU1vZGUoKSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKGNhY2hlZEV4ZWN1dGFibGUuY29u
c3RydWN0b3JLaW5kKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hl
LmNwcAppbmRleCBhZmRjYzkwMjkxMzczZjUwZDA1NzBlMzhjOGQ5MzVhMGFiZmM5YzliLi41ZTc1
ZWJlZGE3YmRmZTQ2MmUyMWY0NjA0Y2JkMDY3NmE1OTIwZmVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKQEAgLTkyLDkgKzkyLDEyIEBAIFVubGlua2Vk
Q29kZUJsb2NrVHlwZSogZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ltcGwoVk0mIHZtLCBjb25z
dCBTb3VyY2VDb2RlJiBzCiAgICAgYm9vbCB1c2VzRXZhbCA9IHJvb3ROb2RlLT5mZWF0dXJlcygp
ICYgRXZhbEZlYXR1cmU7CiAgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSByb290Tm9kZS0+ZmVhdHVy
ZXMoKSAmIFN0cmljdE1vZGVGZWF0dXJlID8gRUNNQU1vZGU6OnN0cmljdCgpIDogRUNNQU1vZGU6
OnNsb3BweSgpOwogICAgIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyID0gTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vOwotICAgIGlmIGNv
bnN0ZXhwciAoc3RkOjppc19zYW1lX3Y8RXhlY3V0YWJsZVR5cGUsIERpcmVjdEV2YWxFeGVjdXRh
YmxlPikKKyAgICBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVu
dCA9IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lOworICAgIGlmIGNvbnN0ZXhwciAoc3Rk
Ojppc19zYW1lX3Y8RXhlY3V0YWJsZVR5cGUsIERpcmVjdEV2YWxFeGVjdXRhYmxlPikgewogICAg
ICAgICBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9IGV4ZWN1dGFibGUtPm5lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyKCk7Ci0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8odXNl
c0V2YWwsIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBzY3JpcHRNb2RlLCBT
dXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+
OjpwYXJzZU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGZhbHNlLCBldmFsQ29udGV4dFR5cGUpOworICAg
ICAgICBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9IGV4ZWN1dGFibGUtPnByaXZhdGVCcmFuZFJl
cXVpcmVtZW50KCk7CisgICAgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKHVz
ZXNFdmFsLCBmYWxzZSwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGZhbHNlLCBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUsIHNjcmlwdE1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBDYWNoZVR5
cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwgZGVyaXZlZENvbnRleHRUeXBl
LCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgZmFs
c2UsIGV2YWxDb250ZXh0VHlwZSk7CiAKICAgICBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIHVubGlu
a2VkQ29kZUJsb2NrID0gVW5saW5rZWRDb2RlQmxvY2tUeXBlOjpjcmVhdGUodm0sIGV4ZWN1dGFi
bGVJbmZvLCBjb2RlR2VuZXJhdGlvbk1vZGUpOwogICAgIHVubGlua2VkQ29kZUJsb2NrLT5yZWNv
cmRQYXJzZShyb290Tm9kZS0+ZmVhdHVyZXMoKSwgcm9vdE5vZGUtPmhhc0NhcHR1cmVkVmFyaWFi
bGVzKCksIGxpbmVDb3VudCwgdW5saW5rZWRFbmRDb2x1bW4pOwpAQCAtMjQ0LDcgKzI0Nyw3IEBA
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBDb2RlQ2FjaGU6OmdldFVubGlua2VkR2xvYmFs
RnVuY3Rpb25FeGVjdXRhYmxlKFZNJiB2CiAgICAgLy8gVGhlIEZ1bmN0aW9uIGNvbnN0cnVjdG9y
IG9ubHkgaGFzIGFjY2VzcyB0byBnbG9iYWwgdmFyaWFibGVzLCBzbyBubyB2YXJpYWJsZXMgd2ls
bCBiZSB1bmRlciBURFogdW5sZXNzIHRoZXkncmUKICAgICAvLyBpbiB0aGUgZ2xvYmFsIGxleGlj
YWwgZW52aXJvbm1lbnQsIHdoaWNoIHdlIGFsd2F5cyBURFogY2hlY2sgYWNjZXNzZXMgZnJvbS4K
ICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkgPSBjb25zdHJ1Y3RBYmlsaXR5
Rm9yUGFyc2VNb2RlKG1ldGFkYXRhLT5wYXJzZU1vZGUoKSk7Ci0gICAgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlOjpjcmVhdGUodm0sIHNvdXJjZSwgbWV0YWRhdGEsIFVubGlua2VkTm9ybWFsRnVuY3Rpb24s
IGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgV1RGOjpudWxs
b3B0LCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
OjpObyk7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJs
ZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUodm0sIHNvdXJjZSwgbWV0YWRh
dGEsIFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2Ny
aXB0TW9kZTo6Q2xhc3NpYywgV1RGOjpudWxsb3B0LCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUs
IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObywgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6
Ok5vbmUpOwogCiAgICAgaWYgKCFzb3VyY2UucHJvdmlkZXIoKS0+c291cmNlVVJMRGlyZWN0aXZl
KCkuaXNOdWxsKCkpCiAgICAgICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+c2V0U291cmNlVVJMRGly
ZWN0aXZlKHNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2VVUkxEaXJlY3RpdmUoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5j
cHAKaW5kZXggZmM3NjAxZGEyMDRiMTdiN2Y2ZTk0MWM2NDg0ZDM2MGU1ZDRmZjQ2OS4uNDE2NDI2
MjIwOGI5ZDM1YzM1NmVjNWYzMTc2NTI0YjdlNTNlYThjZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcApAQCAtMzQs
NyArMzQsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotRGlyZWN0RXZhbEV4ZWN1dGFibGUqIERp
cmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRl
eHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlG
dW5jdGlvbiwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgY29uc3QgVmFyaWFibGVF
bnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFosIEVDTUFNb2RlIGVjbWFNb2RlKQorRGlyZWN0
RXZhbEV4ZWN1dGFibGUqIERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBEZXJpdmVkQ29udGV4
dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0luc2lk
ZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaLCBFQ01BTW9kZSBlY21hTW9k
ZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNDQsNyArNDQsNyBAQCBEaXJlY3RFdmFsRXhl
Y3V0YWJsZSogRGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRvKiBl
eGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RGlyZWN0RXZhbEV4ZWN1dGFi
bGU+KHZtLmhlYXApKSBEaXJlY3RFdmFsRXhlY3V0YWJsZShnbG9iYWxPYmplY3QsIHNvdXJjZSwg
ZWNtYU1vZGUuaXNTdHJpY3QoKSwgZGVyaXZlZENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplciwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0
aW9uLCBldmFsQ29udGV4dFR5cGUpOworICAgIGF1dG8qIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxEaXJlY3RFdmFsRXhlY3V0YWJsZT4odm0uaGVhcCkpIERpcmVjdEV2
YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNlLCBlY21hTW9kZS5pc1N0cmljdCgpLCBk
ZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBwcml2YXRlQnJh
bmRSZXF1aXJlbWVudCwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgaXNJbnNpZGVPcmRpbmFyeUZ1
bmN0aW9uLCBldmFsQ29udGV4dFR5cGUpOwogICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9u
KHZtKTsKIAogICAgIFBhcnNlckVycm9yIGVycm9yOwpAQCAtNjcsMTAgKzY3LDEwIEBAIERpcmVj
dEV2YWxFeGVjdXRhYmxlKiBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgcmV0dXJuIGV4ZWN1dGFibGU7CiB9CiAKLURpcmVjdEV2
YWxFeGVjdXRhYmxlOjpEaXJlY3RFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBE
ZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25D
b250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBlIGV2
YWxDb250ZXh0VHlwZSkKLSAgICA6IEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNl
LCBpblN0cmljdENvbnRleHQsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29u
dGV4dCwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBldmFsQ29udGV4dFR5cGUsIG5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyKQorRGlyZWN0RXZhbEV4ZWN1dGFibGU6OkRpcmVjdEV2YWxFeGVj
dXRhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgYm9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29u
dGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCwg
Ym9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlv
biwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSkKKyAgICA6IEV2YWxFeGVjdXRhYmxl
KGdsb2JhbE9iamVjdCwgc291cmNlLCBpblN0cmljdENvbnRleHQsIGRlcml2ZWRDb250ZXh0VHlw
ZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBldmFs
Q29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBwcml2YXRlQnJhbmRSZXF1
aXJlbWVudCkKIHsKLSAgICBBU1NFUlQobmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPT0gTmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vIHx8IGRlcml2ZWRDb250ZXh0VHlwZSA9PSBEZXJp
dmVkQ29udGV4dFR5cGU6OkRlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQpOworICAgIEFTU0VSVCgo
bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPT0gTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6
Ok5vICYmIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID09IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50
OjpOb25lKSB8fCBkZXJpdmVkQ29udGV4dFR5cGUgPT0gRGVyaXZlZENvbnRleHRUeXBlOjpEZXJp
dmVkQ29uc3RydWN0b3JDb250ZXh0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuaApp
bmRleCAyNDA3NWE3ZjVhMzZjNzNmZWJhNDA3ZTcxMDlhNmZjMzNmMjcwZDRiLi5hNGZhNjc2M2Nh
YjE1YjVkZGE2NDVhYTAyYzk2MjNiNzkyMmJkMTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmgKQEAgLTMxLDkgKzMxLDkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIERpcmVjdEV2YWxFeGVjdXRhYmxlIGZpbmFsIDog
cHVibGljIEV2YWxFeGVjdXRhYmxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgRGlyZWN0RXZhbEV4
ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBEZXJp
dmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dG
dW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4
dFR5cGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqLCBFQ01BTW9kZSk7CisgICAgc3RhdGlj
IERpcmVjdEV2YWxFeGVjdXRhYmxlKiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgRGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwg
UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9v
bCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSwgY29uc3QgVmFyaWFi
bGVFbnZpcm9ubWVudCosIEVDTUFNb2RlKTsKIHByaXZhdGU6Ci0gICAgRGlyZWN0RXZhbEV4ZWN1
dGFibGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBpblN0cmljdENv
bnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJv
b2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24s
IEV2YWxDb250ZXh0VHlwZSk7CisgICAgRGlyZWN0RXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmpl
Y3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRDb250
ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVt
ZW50LCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1
bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUpOwogfTsKIAogc3RhdGljX2Fzc2VydChzaXplb2YoRGly
ZWN0RXZhbEV4ZWN1dGFibGUpID09IHNpemVvZihFdmFsRXhlY3V0YWJsZSksICIiKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmNwcAppbmRleCAy
ZWMxMzdhNzM2MjI0MjFiNWY5ZDEyMmMyNzM1MThkNWU2Mzg2NDljLi4wYjNkNDE2NGFhNjVhYmQw
MDRmZWU5OGI4Y2VjZTg3OTZkZmJjMmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuY3BwCkBAIC0zMiw5ICszMiwxMCBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIEV2YWxFeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJFdmFs
RXhlY3V0YWJsZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoRXZhbEV4ZWN1dGFibGUpIH07CiAKLUV2YWxFeGVjdXRhYmxlOjpFdmFsRXhlY3V0
YWJsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRl
eHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFy
eUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcikKK0V2YWxFeGVjdXRhYmxl
OjpFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUg
ZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJ
bnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlLCBO
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpCiAgICAgOiBCYXNl
KGdsb2JhbE9iamVjdC0+dm0oKS5ldmFsRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgZ2xvYmFs
T2JqZWN0LT52bSgpLCBzb3VyY2UsIGluU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBl
LCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxD
b250ZXh0VHlwZSwgTm9JbnRyaW5zaWMpCiAgICAgLCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcikpCisg
ICAgLCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50KHN0YXRpY19jYXN0PHVuc2lnbmVkPihwcml2
YXRlQnJhbmRSZXF1aXJlbWVudCkpCiB7CiAgICAgQVNTRVJUKHNvdXJjZS5wcm92aWRlcigpLT5z
b3VyY2VUeXBlKCkgPT0gU291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFtKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oCmluZGV4IDY3
ZTY5Yzg2MjliYTNmYjM4MTE0ODExMzZiOGU3ZTk5NDgwZWQ3NzEuLjUyNjAyNTFhY2VlMjI1ZTli
NTc5ZjhlODJmNmVkYzgxMGM3YWRlZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXZhbEV4ZWN1dGFibGUuaApAQCAtNjIsMTMgKzYyLDE0IEBAIHB1YmxpYzoKIAogICAg
IERFQ0xBUkVfSU5GTzsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29u
c3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8odXNlc0V2YWwoKSwgZmFsc2UsIGZhbHNlLCBDb25z
dHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgU3VwZXJCaW5k
aW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGRlcml2ZWRDb250
ZXh0VHlwZSgpLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBpc0Fycm93RnVuY3Rpb25D
b250ZXh0KCksIGZhbHNlLCBldmFsQ29udGV4dFR5cGUoKSk7IH0KKyAgICBFeGVjdXRhYmxlSW5m
byBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFs
KCksIGZhbHNlLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZSwgZmFsc2UsIENvbnN0cnVj
dG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBTdXBlckJpbmRpbmc6
Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZGVyaXZlZENvbnRleHRU
eXBlKCksIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQoKSwgZmFsc2UsIGV2YWxDb250ZXh0VHlwZSgpKTsgfQogCiAgICAgdW5zaWduZWQgbnVtVmFy
aWFibGVzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bVZhcmlhYmxlcygp
OyB9CiAgICAgdW5zaWduZWQgbnVtRnVuY3Rpb25Ib2lzdGluZ0NhbmRpZGF0ZXMoKSB7IHJldHVy
biBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtRnVuY3Rpb25Ib2lzdGluZ0NhbmRpZGF0ZXMo
KTsgfQogICAgIHVuc2lnbmVkIG51bVRvcExldmVsRnVuY3Rpb25EZWNscygpIHsgcmV0dXJuIG1f
dW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKTsgfQogICAgIGJv
b2wgYWxsb3dEaXJlY3RFdmFsQ2FjaGUoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXZhbENv
ZGVCbG9jay0+YWxsb3dEaXJlY3RFdmFsQ2FjaGUoKTsgfQogICAgIE5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI+KG1fbmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIpOyB9CisgICAgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxQcml2YXRlQnJhbmRSZXF1aXJl
bWVudD4obV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7IH0KICAgICBUZW1wbGF0ZU9iamVjdE1h
cCYgZW5zdXJlVGVtcGxhdGVPYmplY3RNYXAoVk0mKTsKIAogcHJvdGVjdGVkOgpAQCAtNzYsMTEg
Kzc3LDEyIEBAIHByb3RlY3RlZDoKICAgICBmcmllbmQgY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsK
IAogICAgIHVzaW5nIEJhc2U6OmZpbmlzaENyZWF0aW9uOwotICAgIEV2YWxFeGVjdXRhYmxlKEpT
R2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBE
ZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0lu
c2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIpOworICAgIEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291
cmNlQ29kZSYsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2
YWxDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJl
cXVpcmVtZW50KTsKIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xv
dFZpc2l0b3ImKTsKIAogICAgIHVuc2lnbmVkIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIg
OiAxOworICAgIHVuc2lnbmVkIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgOiAxOwogCiAgICAg
V3JpdGVCYXJyaWVyPEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+IG1fZXZhbENvZGVCbG9jazsK
ICAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRFdmFsQ29kZUJsb2NrPiBtX3VubGlua2VkRXZhbENv
ZGVCbG9jazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2Vw
dGlvbkhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9u
SGVscGVycy5jcHAKaW5kZXggNDE0ZTdiZGY3N2FiNGZjNzY0YjU2NWRmNmYxYmQ0YTBkNjRiMzBj
Yi4uN2EyOTEwZTg4N2YyYTE0ZTJmNTg5Mjc1YTBjYjIxOGM3YjVlZDgyNCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKQEAgLTMy
Niw3ICszMjYsNyBAQCBKU09iamVjdCogY3JlYXRlVERaRXJyb3IoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKIAogSlNPYmplY3QqIGNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoIkNhbm5vdCBhY2Nlc3MgaW52YWxpZCBwcml2YXRl
IGZpZWxkIiksIGRlZmF1bHRTb3VyY2VBcHBlbmRlciwgVHlwZU5vdGhpbmcpOworICAgIHJldHVy
biBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKCJJbnZhbGlkIHByaXZh
dGUgbWVtYmVyIGFjY2VzcyIpLCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIFR5cGVOb3RoaW5nKTsK
IH0KIAogSlNPYmplY3QqIGNyZWF0ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3IoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKaW5kZXggOThkN2UyYjgzYTI3OTEy
ZmE1NGMyYzI1ZWUxODNiZmI0ZTA0NmM3My4uNzQ5ODIwNTAxOGNkZWY4ZjNmODM2N2I0YmJlMmVm
NzlkYmQxN2MxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5k
aXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgSW5kaXJlY3RF
dmFsRXhlY3V0YWJsZSogSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmoKIGNvbnN0ZXhwciBib29sIGluU3RyaWN0Q29udGV4dCA9IGZhbHNlOwog
Y29uc3RleHByIGJvb2wgaW5zaWRlT3JkaW5hcnlGdW5jdGlvbiA9IGZhbHNlOwogSW5kaXJlY3RF
dmFsRXhlY3V0YWJsZTo6SW5kaXJlY3RFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIERlcml2ZWRDb250ZXh0VHlwZSBk
ZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRl
eHRUeXBlIGV2YWxDb250ZXh0VHlwZSkKLSAgICA6IEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVj
dCwgc291cmNlLCBpblN0cmljdENvbnRleHQsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1
bmN0aW9uQ29udGV4dCwgaW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgZXZhbENvbnRleHRUeXBlLCBO
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8pCisgICAgOiBFdmFsRXhlY3V0YWJsZShnbG9i
YWxPYmplY3QsIHNvdXJjZSwgaW5TdHJpY3RDb250ZXh0LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlz
QXJyb3dGdW5jdGlvbkNvbnRleHQsIGluc2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250ZXh0
VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vLCBQcml2YXRlQnJhbmRSZXF1aXJl
bWVudDo6Tm9uZSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTY29wZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3Bl
LmNwcAppbmRleCBhMzA2OWEwMmNkYzNhYTk4MWUzMjA1NDVhZDFhOTQ1ODNkMTM0YWIwLi41Yzcz
OTE1NDM3YmU2ZmQzMDFhN2M1YmM2M2Y2Y2Y0ZTE5OGQ0MjAxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Njb3BlLmNwcApAQCAtMzM5LDggKzMzOSwxNCBAQCB2b2lkIEpTU2Nv
cGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFooSlNTY29wZSogc2NvcGUsIFZhcmlh
YmxlRW52aXJvbm1lbgogICAgICAgICBmb3IgKGF1dG8gZW5kID0gc3ltYm9sVGFibGUtPmVuZChs
b2NrZXIpLCBpdGVyID0gc3ltYm9sVGFibGUtPmJlZ2luKGxvY2tlcik7IGl0ZXIgIT0gZW5kOyAr
K2l0ZXIpCiAgICAgICAgICAgICByZXN1bHQuYWRkKGl0ZXItPmtleSk7CiAgICAgICAgIGlmIChz
eW1ib2xUYWJsZS0+aGFzUHJpdmF0ZU5hbWVzKCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byBu
YW1lIDogc3ltYm9sVGFibGUtPnByaXZhdGVOYW1lcygpKQotICAgICAgICAgICAgICAgIHJlc3Vs
dC51c2VQcml2YXRlTmFtZShuYW1lKTsgICAgCisgICAgICAgICAgICBhdXRvIHByaXZhdGVOYW1l
cyA9IHN5bWJvbFRhYmxlLT5wcml2YXRlTmFtZXMoKTsKKyAgICAgICAgICAgIGZvciAoYXV0byBl
bmQgPSBwcml2YXRlTmFtZXMuZW5kKCksIGl0ZXIgPSBwcml2YXRlTmFtZXMuYmVnaW4oKTsgaXRl
ciAhPSBlbmQ7ICsraXRlcikgeworICAgICAgICAgICAgICAgIGlmIChpdGVyLT52YWx1ZS5pc1By
aXZhdGVBY2Nlc3MoKSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IHJl
c3VsdC5hZGRQcml2YXRlTmFtZShpdGVyLT5rZXkpOworICAgICAgICAgICAgICAgICAgICBhZGRS
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gaXRlci0+dmFsdWU7CisgICAgICAgICAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC51c2VQcml2YXRlTmFtZShpdGVyLT5rZXkp
OworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgKaW5kZXgg
MDk5ZDg5OWFkNWU2M2E3NDMzNThlMmFiYjIwYWIzNGY1OWI5NjBlYy4uYjg1OTE0ZmY4ZWEwZGQw
M2M2MjQ3NzUzNTk2ZmY0MmQ1NjE2NmIzNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oCkBAIC02Myw3ICs2Myw3
IEBAIHB1YmxpYzoKIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4
ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8odXNlc0V2YWwoKSwg
ZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6
TW9kdWxlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVF
dmFsdWF0ZU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBOZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplcjo6Tm8sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgZmFsc2UsIEV2YWxDb250ZXh0VHlw
ZTo6Tm9uZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsg
cmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGZhbHNlLCBQcml2YXRlQnJhbmRSZXF1
aXJlbWVudDo6Tm9uZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJTY3Jp
cHRNb2RlOjpNb2R1bGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6
Ok1vZHVsZUV2YWx1YXRlTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIE5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyOjpObywgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgRXZhbENv
bnRleHRUeXBlOjpOb25lKTsgfQogCiAgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
KiB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2soKSB7IHJldHVybiBtX3VubGlua2VkTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jay5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnMuY3BwCmluZGV4IDBkMmY1YWNmNzljZGY1NzQ5OGU2YTczYzA2NzJkNmRkNGJm
ODg0NzguLmY0ZDYwZTViNDA3NDc1MTMzMjJkNDM2NDU4ZmQ4OGVmYTgzOTkyZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCkBAIC01MzEsNiArNTMxLDkgQEAg
dm9pZCBPcHRpb25zOjpyZWNvbXB1dGVEZXBlbmRlbnRPcHRpb25zKCkKICAgICAgICAgT3B0aW9u
czo6cmFuZG9tSW50ZWdyaXR5QXVkaXRSYXRlKCkgPSAwOwogICAgIGVsc2UgaWYgKE9wdGlvbnM6
OnJhbmRvbUludGVncml0eUF1ZGl0UmF0ZSgpID4gMS4wKQogICAgICAgICBPcHRpb25zOjpyYW5k
b21JbnRlZ3JpdHlBdWRpdFJhdGUoKSA9IDEuMDsKKyAgICAKKyAgICBpZiAoT3B0aW9uczo6dXNl
UHJpdmF0ZU1ldGhvZHMoKSkKKyAgICAgICAgT3B0aW9uczo6dXNlUHJpdmF0ZUNsYXNzRmllbGRz
KCkgPSB0cnVlOwogCiAgICAgaWYgKCFPcHRpb25zOjphbGxvd1Vuc3VwcG9ydGVkVGllcnMoKSkg
ewogI2RlZmluZSBESVNBQkxFX1RJRVJTKG9wdGlvbiwgZmxhZ3MsIC4uLikgZG8geyBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRleCAyZTE5YjA4ZGY5
NmY3ZTAyNzFlMmVjNzAzZDE0ZTM0NTAyMTAzNzI2Li5hNTI4OGQyNjBlNmNlZmVjNGQ3N2Q4Y2Q5
MTkyYTczNTdlZTkzNzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnNMaXN0LmgKQEAgLTUxMyw2ICs1MTMsNyBAQCBjb25zdGV4cHIgYm9vbCBlbmFibGVXZWJBc3Nl
bWJseVN0cmVhbWluZ0FwaSA9IGZhbHNlOwogICAgIHYoQm9vbCwgZXhwb3NlUHJvZmlsZXJzT25H
bG9iYWxPYmplY3QsIGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIGV4cG9zZSBmdW5j
dGlvbnMgdG8gZW5hYmxlL2Rpc2FibGUgYm90aCB0aGUgc2FtcGxpbmcgcHJvZmlsZXIgYW5kIHRo
ZSBzdXBlciBzYW1wbGVyIikgXAogICAgIHYoQm9vbCwgYWxsb3dVbnN1cHBvcnRlZFRpZXJzLCBm
YWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCBub3QgZGlzYWJsZSBERkcgb3IgRlRMIHdo
ZW4gYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUgaXMgZW5hYmxlZC4iKSBcCiAgICAgdihCb29sLCB1
c2VQcml2YXRlQ2xhc3NGaWVsZHMsIGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCB0aGUgcGFyc2Vy
IHdpbGwgdW5kZXJzdGFuZCBwcml2YXRlIGRhdGEgZmllbGRzIGluc2lkZSBjbGFzc2VzLiIpIFwK
KyAgICB2KEJvb2wsIHVzZVByaXZhdGVNZXRob2RzLCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwg
dGhlIHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHJpdmF0ZSBtZXRob2RzIGluc2lkZSBjbGFzc2Vz
LiIpIFwKICAgICB2KEJvb2wsIHJldHVybkVhcmx5RnJvbUluZmluaXRlTG9vcHNGb3JGdXp6aW5n
LCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihTaXplLCBlYXJseVJldHVybkZyb21J
bmZpbml0ZUxvb3BzTGltaXQsIDEzMDAwMDAwMDAsIE5vcm1hbCwgIldoZW4gcmV0dXJuRWFybHlG
cm9tSW5maW5pdGVMb29wc0ZvckZ1enppbmcgaXMgdHJ1ZSwgdGhpcyBkZXRlcm1pbmVzIHRoZSBu
dW1iZXIgb2YgZXhlY3V0aW9ucyBhIGxvb3AgY2FuIHJ1biBmb3IgYmVmb3JlIGp1c3QgcmV0dXJu
aW5nLiBUaGlzIGlzIGhlbHBmdWwgZm9yIHRoZSBmdXp6ZXIgc28gaXQgZG9lc24ndCBnZXQgc3R1
Y2sgaW4gaW5maW5pdGUgbG9vcHMuIikgXAogICAgIHYoQm9vbCwgdXNlTElDTUZ1enppbmcsIGZh
bHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCmluZGV4IGI4NzE1YWE3MmJiY2I3MzM5ZDZlMzQxM2Fj
NTljNzQ0MTE3YjgyYTguLjk0OTc2MzEyMDVjYTBlNGQwYTI5NGUwNDVjZTc2YjcxYWQxMTQ0YWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRh
YmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFi
bGUuaApAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgIERFQ0xBUkVfSU5G
TzsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4g
RXhlY3V0YWJsZUluZm8odXNlc0V2YWwoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgU3VwZXJCaW5kaW5nOjpOb3ROZWVk
ZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBO
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwg
ZmFsc2UsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVj
dXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGZh
bHNlLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZSwgZmFsc2UsIENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBTdXBlckJpbmRpbmc6Ok5vdE5l
ZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCks
IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObywgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgp
LCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsgfQogCiAgICAgVGVtcGxhdGVPYmplY3RN
YXAmIGVuc3VyZVRlbXBsYXRlT2JqZWN0TWFwKFZNJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcAppbmRleCAxNjRjYTZkNDMxMGU2YmIzOGU2NDdl
MmY2YmUyZjlmN2Q5ZjMyNjVjLi5mYjQ2MDAxYmFlZDJmOWMxYzg3ZTU3MjJlMjYxNWI0MTQ1ZDE4
NzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJs
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3Bw
CkBAIC0xODQsNyArMTg0LDcgQEAgU3ltYm9sVGFibGUqIFN5bWJvbFRhYmxlOjpjbG9uZVNjb3Bl
UGFydChWTSYgdm0pCiAKICAgICAgICAgewogICAgICAgICAgICAgZm9yIChhdXRvIG5hbWUgOiBt
X3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcykKLSAgICAgICAgICAgICAgICByZXN1bHQtPm1fcmFy
ZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChuYW1lKTsKKyAgICAgICAgICAgICAgICByZXN1bHQt
Pm1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChuYW1lLmtleSwgbmFtZS52YWx1ZSk7CiAg
ICAgICAgIH0KICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TeW1ib2xUYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3lt
Ym9sVGFibGUuaAppbmRleCA1OWE3MjMwNWQzYTcwNDIwYWJiMWFmNGVmYmU2N2ZkNmNjZGZkZWEw
Li5jMzYxZjk4NmNiZGMxYmUwMWNhZWIzYjg4MjUyNmY5MGMxMGNiOGU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNp
bmNsdWRlICJTY29wZWRBcmd1bWVudHNUYWJsZS5oIgogI2luY2x1ZGUgIlR5cGVMb2NhdGlvbi5o
IgogI2luY2x1ZGUgIlZhck9mZnNldC5oIgorI2luY2x1ZGUgIlZhcmlhYmxlRW52aXJvbm1lbnQu
aCIKICNpbmNsdWRlICJXYXRjaHBvaW50LmgiCiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUg
PHd0Zi9IYXNoVHJhaXRzLmg+CkBAIC00NTAsOCArNDUxLDcgQEAgcHVibGljOgogICAgIHR5cGVk
ZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBSZWZQdHI8VHlwZVNldD4sIElk
ZW50aWZpZXJSZXBIYXNoPiBVbmlxdWVUeXBlU2V0TWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDxW
YXJPZmZzZXQsIFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+IE9mZnNldFRvVmFyaWFibGVNYXA7
CiAgICAgdHlwZWRlZiBWZWN0b3I8U3ltYm9sVGFibGVFbnRyeSo+IExvY2FsVG9FbnRyeVZlYzsK
LSAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgSWRlbnRpZmll
clJlcEhhc2g+IFByaXZhdGVOYW1lU2V0OwotICAgIHR5cGVkZWYgV1RGOjpJdGVyYXRvclJhbmdl
PHR5cGVuYW1lIFByaXZhdGVOYW1lU2V0OjppdGVyYXRvcj4gUHJpdmF0ZU5hbWVJdGVyYXRvclJh
bmdlOworICAgIHR5cGVkZWYgV1RGOjpJdGVyYXRvclJhbmdlPHR5cGVuYW1lIFZhcmlhYmxlRW52
aXJvbm1lbnQ6OlByaXZhdGVOYW1lczo6aXRlcmF0b3I+IFByaXZhdGVOYW1lSXRlcmF0b3JSYW5n
ZTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKQEAgLTYwNSwxNCArNjA1
LDE0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1ha2VJdGVyYXRvclJhbmdlKG1fcmFyZURh
dGEtPm1fcHJpdmF0ZU5hbWVzLmJlZ2luKCksIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmVu
ZCgpKTsKICAgICB9CiAKLSAgICB2b2lkIGFkZFByaXZhdGVOYW1lKFVuaXF1ZWRTdHJpbmdJbXBs
KiBrZXkpCisgICAgdm9pZCBhZGRQcml2YXRlTmFtZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmlu
Z0ltcGw+JiBrZXksIFByaXZhdGVOYW1lRW50cnkgdmFsdWUpCiAgICAgewogICAgICAgICBBU1NF
UlQoa2V5ICYmICFrZXktPmlzU3ltYm9sKCkpOwogICAgICAgICBpZiAoIW1fcmFyZURhdGEpCiAg
ICAgICAgICAgICBtX3JhcmVEYXRhID0gV1RGOjptYWtlVW5pcXVlPFN5bWJvbFRhYmxlUmFyZURh
dGE+KCk7CiAKLSAgICAgICAgQVNTRVJUKCFtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5jb250
YWlucyhrZXkpKTsKLSAgICAgICAgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKGtleSk7
CisgICAgICAgIEFTU0VSVChtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5maW5kKGtleSkgPT0g
bV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZW5kKCkpOworICAgICAgICBtX3JhcmVEYXRhLT5t
X3ByaXZhdGVOYW1lcy5hZGQoa2V5LCB2YWx1ZSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRW50cnk+CkBAIC03NTYsNyArNzU2LDcgQEAgcHVibGljOgogICAgICAgICBPZmZzZXRU
b1ZhcmlhYmxlTWFwIG1fb2Zmc2V0VG9WYXJpYWJsZU1hcDsKICAgICAgICAgVW5pcXVlVHlwZVNl
dE1hcCBtX3VuaXF1ZVR5cGVTZXRNYXA7CiAgICAgICAgIFdyaXRlQmFycmllcjxDb2RlQmxvY2s+
IG1fY29kZUJsb2NrOwotICAgICAgICBQcml2YXRlTmFtZVNldCBtX3ByaXZhdGVOYW1lczsKKyAg
ICAgICAgVmFyaWFibGVFbnZpcm9ubWVudDo6UHJpdmF0ZU5hbWVzIG1fcHJpdmF0ZU5hbWVzOwog
ICAgIH07CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVz
dHMvQ2hhbmdlTG9nCmluZGV4IGYyMDY1ZmE1YjY1ZTlhMThmYjllMWY1MGJkMjkzYzI4ZmMyNTQ5
NWMuLmNjMTI3NTBhOWFlOTU0MzZlOTY2NmYxN2I5OWE2Y2JiMjMxYWZkZDggMTAwNjQ0Ci0tLSBh
L0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMjAtMTAtMjAgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgorCisgICAg
ICAgIFtFU05leHRdIEltcGxlbWVudCBwcml2YXRlIG1ldGhvZHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDQzNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtYnJhbmQtaW5z
dGFsbGVkLWFmdGVyLXN1cGVyLWNhbGwtZnJvbS1hcnJvdy1mdW5jdGlvbi5qczogQWRkZWQuCisg
ICAgICAgICogc3RyZXNzL3ByaXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVyLWNhbGwt
ZnJvbS1ldmFsLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2QtYnJh
bmQtY2hlY2suanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZC1jb21w
YXJpc29uLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2QtZXh0ZW5k
cy1icmFuZC1jaGVjay5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9k
LWdldC1hbmQtY2FsbC5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9k
LW5lc3RlZC1jbGFzcy5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9k
cy1vbi1wcm94eS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbmFtZXMtYXZh
aWxhYmxlLW9uLWRpcmVjdC1ldmFsLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0MjYyL2NvbmZp
Zy55YW1sOgorCiAyMDIwLTEwLTE5ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWls
LmNvbT4KIAogICAgICAgICBbV2ViSURMXSAlSW50ZXJmYWNlJS5wcm90b3R5cGUuY29uc3RydWN0
b3Igc2hvdWxkIGJlIGRlZmluZWQgb24gW1tTZXRdXSByZWNlaXZlcgpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvcHJpdmF0ZS1icmFuZC1pbnN0YWxsZWQtYWZ0ZXItc3VwZXItY2FsbC1mcm9t
LWFycm93LWZ1bmN0aW9uLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1icmFuZC1pbnN0YWxs
ZWQtYWZ0ZXItc3VwZXItY2FsbC1mcm9tLWFycm93LWZ1bmN0aW9uLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdl
MjljN2JjMTFjMzYzNDM5MTViZDIwMmU4MDIyMzdhODgwNDFlNGYKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLWJyYW5kLWluc3RhbGxlZC1hZnRlci1zdXBlci1jYWxs
LWZyb20tYXJyb3ctZnVuY3Rpb24uanMKQEAgLTAsMCArMSwyNyBAQAorLy9AIHJlcXVpcmVPcHRp
b25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitmdW5jdGlvbiBhc3NlcnQoYSwgZSkg
eworICAgIGlmIChhICE9PSBlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAi
ICsgZSArICIgYnV0IGdvdDogIiArIGEpOworfQorCitjbGFzcyBBIHt9CisKK2NsYXNzIEMgZXh0
ZW5kcyBBIHsKKyAgICAjbWV0aG9kKCkgeworICAgICAgICByZXR1cm4gImJhc2UiOworICAgIH0K
KworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICBsZXQgaW5pdCA9ICgpID0+IHN1cGVyKCk7
CisgICAgICAgIGluaXQoKTsKKyAgICB9CisKKyAgICBiYXNlQWNjZXNzKCkgeworICAgICAgICBy
ZXR1cm4gdGhpcy4jbWV0aG9kKCk7CisgICAgfQorfQorCitsZXQgYyA9IG5ldyBDKCk7Cithc3Nl
cnQoYy5iYXNlQWNjZXNzKCksICJiYXNlIik7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L3ByaXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVyLWNhbGwtZnJvbS1ldmFsLmpzIGIv
SlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1icmFuZC1pbnN0YWxsZWQtYWZ0ZXItc3VwZXItY2FsbC1m
cm9tLWV2YWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWUxNmVlMzhlMzQxY2NjMTYxMDU0ZGIxNzJiNWUyMjFm
YjY4NmM4MgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYnJhbmQt
aW5zdGFsbGVkLWFmdGVyLXN1cGVyLWNhbGwtZnJvbS1ldmFsLmpzCkBAIC0wLDAgKzEsMjYgQEAK
Ky8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworZnVuY3Rp
b24gYXNzZXJ0KGEsIGUpIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKK30KKworY2xhc3MgQSB7
fQorCitjbGFzcyBDIGV4dGVuZHMgQSB7CisgICAgI21ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJu
ICJiYXNlIjsKKyAgICB9CisKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgZXZhbCgic3Vw
ZXIoKSIpOworICAgIH0KKworICAgIGJhc2VBY2Nlc3MoKSB7CisgICAgICAgIHJldHVybiB0aGlz
LiNtZXRob2QoKTsKKyAgICB9Cit9CisKK2xldCBjID0gbmV3IEMoKTsKK2Fzc2VydChjLmJhc2VB
Y2Nlc3MoKSwgImJhc2UiKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1t
ZXRob2QtYnJhbmQtY2hlY2suanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1icmFu
ZC1jaGVjay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTUxNzVhM2Y1YmNhZjliMjQwYjE5NjAwYTdiN2JkZDFl
YjA1ZTQ5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2Qt
YnJhbmQtY2hlY2suanMKQEAgLTAsMCArMSwzMyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVz
ZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitmdW5jdGlvbiBhc3NlcnQoYSwgZSkgeworICAgIGlm
IChhICE9PSBlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIg
YnV0IGdvdDogIiArIGEpOworfQorCitjbGFzcyBDIHsKKyAgICAjbSgpIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuI2Y7CisgICAgfQorCisgICAgbWV0aG9kKCkgeworICAgICAgICByZXR1cm4gdGhp
cy4jbSgpOworICAgIH0KKworICAgICNmID0gNDsKK30KKworbGV0IGMgPSBuZXcgQygpOworYXNz
ZXJ0KGMubWV0aG9kKCksIDQpOworCit0cnkgeworICAgIGNsYXNzIEMgeworICAgICAgICAjbSgp
IHsgcmV0dXJuIDM7IH0KKyAgICB9CisKKyAgICBsZXQgbyA9IG5ldyBDKCk7CisgICAgYy5tZXRo
b2QuY2FsbChvKTsKK30gY2F0Y2ggKGUpIHsKKyAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIFR5cGVF
cnJvciwgdHJ1ZSk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0
aG9kLWNvbXBhcmlzb24uanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1jb21wYXJp
c29uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQ2ZGE3ODY3YmE0OGViNzdhMWI0MDE0Y2Y0ZWY2NDE2ZDEyNGE3
ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1jb21w
YXJpc29uLmpzCkBAIC0wLDAgKzEsMzEgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2
YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0
aW9uIChsaHMsIHJocykgeworICAgICAgICBpZiAobGhzICE9PSByaHMpCisgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgbGhzICsgIiBidWcgZ290OiAiICsgcmhzKTsK
KyAgICB9LAorCisgICAgdGhyb3dzOiBmdW5jdGlvbiAoZXhwZWN0ZWRFcnJvciwgb3ApIHsKKyAg
ICAgICAgdHJ5IHsKKyAgICAgICAgICBvcCgpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAg
ICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEVycm9yKSkKKyAgICAgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhwZWN0ZWRFcnJvciAr
ICIgYnV0IHRocmV3OiAiICsgZSk7CisgICAgICAgIH0KKyAgICB9Cit9OworCitjbGFzcyBDIHsK
KyAgICAjbSgpIHsgcmV0dXJuICd0ZXN0MjYyJzsgfQorCisgICAgZ2V0UHJpdmF0ZU1ldGhvZCgp
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI207CisgICAgfQorfQorCitsZXQgYzEgPSBuZXcgQygp
OworbGV0IGMyID0gbmV3IEMoKTsKKworYXNzZXJ0LnNhbWVWYWx1ZShjMS5nZXRQcml2YXRlTWV0
aG9kKCksIGMyLmdldFByaXZhdGVNZXRob2QoKSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL3ByaXZhdGUtbWV0aG9kLWV4dGVuZHMtYnJhbmQtY2hlY2suanMgYi9KU1Rlc3RzL3N0cmVz
cy9wcml2YXRlLW1ldGhvZC1leHRlbmRzLWJyYW5kLWNoZWNrLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMyNjY0
YjJmY2NjZjY4OTVjMjE0NTFmNzY5NzhjN2EyODRjN2EzZDEKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1leHRlbmRzLWJyYW5kLWNoZWNrLmpzCkBAIC0w
LDAgKzEsNDEgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVl
IikKKworZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKK30K
KworY2xhc3MgQmFzZSB7CisgICAgI21CYXNlKCkgeworICAgICAgICByZXR1cm4gNDsKKyAgICB9
CisKKyAgICBtZXRob2RCYXNlKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jbUJhc2UoKTsKKyAg
ICB9Cit9CisKK2NsYXNzIEMgZXh0ZW5kcyBCYXNlIHsKKyAgICAjbSgpIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuI2Y7CisgICAgfQorCisgICAgbWV0aG9kKCkgeworICAgICAgICByZXR1cm4gdGhp
cy4jbSgpOworICAgIH0KKworICAgICNmID0gMTU7Cit9CisKK2xldCBjID0gbmV3IEMoKTsKK2Fz
c2VydChjLm1ldGhvZCgpLCAxNSk7Cithc3NlcnQoYy5tZXRob2RCYXNlKCksIDQpOworCitsZXQg
YmFzZSA9IG5ldyBCYXNlICgpOworYXNzZXJ0KGJhc2UubWV0aG9kQmFzZSgpLCA0KTsKK3RyeSB7
CisgICAgYy5tZXRob2QuY2FsbChiYXNlKTsKK30gY2F0Y2ggKGUpIHsKKyAgICBhc3NlcnQoZSBp
bnN0YW5jZW9mIFR5cGVFcnJvciwgdHJ1ZSk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL3ByaXZhdGUtbWV0aG9kLWdldC1hbmQtY2FsbC5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZh
dGUtbWV0aG9kLWdldC1hbmQtY2FsbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMzE3ZTFlNzdlNDMzNmQ0ZWRi
OGI4MzA3ZjYzNWJkODBhNmEyZjg4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
cHJpdmF0ZS1tZXRob2QtZ2V0LWFuZC1jYWxsLmpzCkBAIC0wLDAgKzEsMjQgQEAKKy8vQCByZXF1
aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsK
KyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChsaHMsIHJocykgeworICAgICAgICBpZiAobGhzICE9
PSByaHMpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgbGhzICsg
IiBidWcgZ290OiAiICsgcmhzKTsKKyAgICB9Cit9OworCitjbGFzcyBDIHsKKyAgICAjbSgpIHsg
cmV0dXJuIHRoaXMuX3Y7IH0KKworICAgIGdldFByaXZhdGVNZXRob2QoKSB7CisgICAgICAgIHJl
dHVybiB0aGlzLiNtOworICAgIH0KK30KKworbGV0IGMgPSBuZXcgQygpOworCitsZXQgbzEgPSB7
X3Y6ICd0ZXN0MjYyJ307CitsZXQgbzIgPSB7X3Y6ICdmb28nfTsKK2Fzc2VydC5zYW1lVmFsdWUo
Yy5nZXRQcml2YXRlTWV0aG9kKCkuY2FsbChvMSksICd0ZXN0MjYyJyk7Cithc3NlcnQuc2FtZVZh
bHVlKGMuZ2V0UHJpdmF0ZU1ldGhvZCgpLmNhbGwobzIpLCAnZm9vJyk7CisKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLW5lc3RlZC1jbGFzcy5qcyBiL0pTVGVzdHMv
c3RyZXNzL3ByaXZhdGUtbWV0aG9kLW5lc3RlZC1jbGFzcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Y2RmNDg5
OWE0M2U2OWVkMGRhYjM0YzIyNjNlZmQzODgzZDlhMjJkCi0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtbmVzdGVkLWNsYXNzLmpzCkBAIC0wLDAgKzEsNjgg
QEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworZnVu
Y3Rpb24gYXNzZXJ0KGEsIGUpIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKK30KKworKCgpID0+
IHsKKyAgICBjbGFzcyBCYXNlIHsKKyAgICAgICAgQyA9IGNsYXNzIHsKKyAgICAgICAgICAgIG1l
dGhvZCgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4jbUJhc2UoKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgICNtQmFzZSgpIHsKKyAgICAgICAgICAgIHJldHVy
biA0OworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGJhc2UgPSBuZXcgQmFzZSgpOworICAg
IGxldCBjID0gbmV3IGJhc2UuQygpOworICAgIGFzc2VydChjLm1ldGhvZC5jYWxsKGJhc2UpLCA0
KTsKKworICAgIHRyeSB7CisgICAgICAgIGMubWV0aG9kKCk7CisgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIFR5cGVFcnJvciwgdHJ1ZSk7CisgICAgfQorfSko
KTsKKworLy8gVGVzdCBzaGFkb3cgbWV0aG9kcworCisoKCkgPT4geworICAgIGNsYXNzIEJhc2Ug
eworICAgICAgICBtZXRob2QoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy4jbSgpOworICAg
ICAgICB9CisKKyAgICAgICAgQyA9IGNsYXNzIHsKKyAgICAgICAgICAgIG1ldGhvZChvKSB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIG8uI20oKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgI20oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZm9vOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBmb28gPSA0OworICAgICAgICB9OworCisgICAgICAgICNtKCkgewor
ICAgICAgICAgICAgcmV0dXJuICJmb28iOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGJh
c2UgPSBuZXcgQmFzZSgpOworICAgIGxldCBjID0gbmV3IGJhc2UuQygpOworICAgIGFzc2VydChj
Lm1ldGhvZChjKSwgNCk7CisgICAgYXNzZXJ0KGJhc2UubWV0aG9kKCksICJmb28iKTsKKworICAg
IHRyeSB7CisgICAgICAgIGMubWV0aG9kKGJhc2UpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBUeXBlRXJyb3IsIHRydWUpOworICAgIH0KK30pKCk7CisK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1vbi1wcm94eS5qcyBi
L0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1vbi1wcm94eS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
YjVmZGZjYjYyMzRkNTQwYWEwZmExMmU4ZTc3NzZkMDYzYWE1YTlmCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2RzLW9uLXByb3h5LmpzCkBAIC0wLDAgKzEs
NDIgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKwor
ZnVuY3Rpb24gYXNzZXJ0KGEsIGUsIG0pIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKG0pOworfQorCitmdW5jdGlvbiBhc3NlcnRBcnJheUNvbnRlbnQoYSwgZSkg
eworICAgIGFzc2VydChhLmxlbmd0aCwgZS5sZW5ndGgsICJTaXplIG9mIGFycmF5cyBkb2Vzbid0
IG1hdGNoIik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKQorICAgICAg
ICBhc3NlcnQoYVtpXSwgZVtpXSwgImFbIiArIGkgKyAiXSA9ICIgKyBhW2ldICsgIiBidXQgZVsi
ICsgaSArICJdID0gIiArIGVbaV0pOworfQorCitsZXQgYXJyID0gW107CisKK2NsYXNzIFByb3h5
QmFzZSB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIHJldHVybiBuZXcgUHJveHkodGhp
cywgeworICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAob2JqLCBwcm9wKSB7CisgICAgICAgICAg
ICAgICAgYXJyLnB1c2gocHJvcCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG9ialtwcm9wXTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorfQorCitjbGFzcyBUZXN0IGV4dGVu
ZHMgUHJveHlCYXNlIHsKKyAgICAjbSgpIHsKKyAgICAgICAgcmV0dXJuIDM7CisgICAgfQorCisg
ICAgbWV0aG9kKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jbSgpOworICAgIH0KK30KKworbGV0
IHQgPSBuZXcgVGVzdCgpOworbGV0IHIgPSB0Lm1ldGhvZCgpOworYXNzZXJ0KHIsIDMsICJFeHBl
Y3RlZDogMyBidXQgZ290OiAiICsgcik7CisKK2Fzc2VydEFycmF5Q29udGVudChhcnIsIFsnbWV0
aG9kJ10pOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5hbWVzLWF2YWls
YWJsZS1vbi1kaXJlY3QtZXZhbC5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbmFtZXMtYXZh
aWxhYmxlLW9uLWRpcmVjdC1ldmFsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY0Y2UwZTBhZjgwNTc4ZTg5NzE2
YTE2NzJlZGMxNzczMDViMDY0ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9w
cml2YXRlLW5hbWVzLWF2YWlsYWJsZS1vbi1kaXJlY3QtZXZhbC5qcwpAQCAtMCwwICsxLDIzIEBA
CisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBh
c3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAobGhzLCByaHMpIHsKKyAgICAgICAg
aWYgKGxocyAhPT0gcmhzKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDog
IiArIHJocyArICIgYnVnIGdvdDogIiArIGxocyk7CisgICAgfQorfTsKKworKGZ1bmN0aW9uICgp
IHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgI20oKSB7IHJldHVybiAndGVzdCc7IH0KKworICAg
ICAgICBjYWxsTWV0aG9kRnJvbUV2YWwoKSB7CisgICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXM7
CisgICAgICAgICAgICByZXR1cm4gZXZhbCgnc2VsZi4jbSgpJyk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmNhbGxNZXRo
b2RGcm9tRXZhbCgpLCAndGVzdCcpOworfSkoKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0
MjYyL2NvbmZpZy55YW1sIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCmluZGV4IDMxZDg4
ZWNkOTk4ZDEyMzAyYjAxNGJhYjNiNmY4NDgyMzYxNTc2ZWIuLjQ3NDYwYjlkMzhlMTk1MTkxODRh
ODZlYmI1NDVkYjJiNWUyYTllYjggMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcu
eWFtbAorKysgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKQEAgLTUsNiArNSw3IEBAIGZs
YWdzOgogICBGaW5hbGl6YXRpb25SZWdpc3RyeTogdXNlV2Vha1JlZnMKICAgY2xhc3MtZmllbGRz
LXB1YmxpYzogdXNlUHVibGljQ2xhc3NGaWVsZHMKICAgY2xhc3MtZmllbGRzLXByaXZhdGU6IHVz
ZVByaXZhdGVDbGFzc0ZpZWxkcworICBjbGFzcy1tZXRob2RzLXByaXZhdGU6IHVzZVByaXZhdGVN
ZXRob2RzCiAgIEludGwuRGF0ZVRpbWVGb3JtYXQtZGF5UGVyaW9kOiB1c2VJbnRsRGF0ZVRpbWVG
b3JtYXREYXlQZXJpb2QKIHNraXA6CiAgIGZlYXR1cmVzOgpAQCAtMTYsNyArMTcsNiBAQCBza2lw
OgogICAgIC0gbGVnYWN5LXJlZ2V4cAogCiAgICAgLSBhcmJpdHJhcnktbW9kdWxlLW5hbWVzcGFj
ZS1uYW1lcwotICAgIC0gY2xhc3MtbWV0aG9kcy1wcml2YXRlCiAgICAgLSBjbGFzcy1zdGF0aWMt
ZmllbGRzLXB1YmxpYwogICAgIC0gY2xhc3Mtc3RhdGljLWZpZWxkcy1wcml2YXRlCiAgICAgLSBj
bGFzcy1zdGF0aWMtbWV0aG9kcy1wcml2YXRlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412125</attachid>
            <date>2020-10-22 13:30:14 -0700</date>
            <delta_ts>2020-11-05 07:02:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194434-20201022173011.patch</filename>
            <type>text/plain</type>
            <size>145019</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4Nzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
ZThlYTI2NDNhYzA2M2QxZjUzOTVlZTYzNDBiMTVmMDUzZDA0Njk4Li4xYzAzNGRkMjllYzI3M2Qy
ZjNiMmFhOWExODFlZjg0Y2Y2M2FmZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNjUgQEAKKzIwMjAtMTAtMjAgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtFU05leHRdIEltcGxlbWVudCBwcml2YXRlIG1ldGhvZHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDQzNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYWRk
aW5nIHN1cHBvcnQgdG8gcHJpdmF0ZSBtZXRob2RzIGZvbGxvd2luZyB0aGUKKyAgICAgICAgc3Bl
Y2lmaWNhdGlvbiBvbiBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtcHJpdmF0ZS1tZXRob2RzLy4K
KyAgICAgICAgVGhpcyBpcyBpbnRyb2R1Y2luZyBhIG5ldyB3YXkgdG8gZGVjbGFyZSBwcml2YXRl
IG1ldGhvZHMgb24KKyAgICAgICAgY2xhc3Mgc3ludGF4LiBQcml2YXRlIG1ldGhvZHMgYXJlIG9u
bHkgYWNjZXNzaWJsZSB3aXRoaW4KKyAgICAgICAgY2xhc3NlcyB0aGV5IHdlcmUgZGVjbGFyZWQs
IGFuZCBvbmx5IGNhbiBiZSBjYWxsZWQgZnJvbQorICAgICAgICBvYmplY3RzIHRoYXQgYXJlIGlu
c3RhbmNlIG9mIHRoZXNlIGNsYXNzZXMuCisgICAgICAgIFRvIGd1YXJhbnRlZSBzdWNoIHJ1bGVz
LCB0aGUgcHJvcG9zYWwgcHJlc2VudHMgdGhlIGNvbmNlcHQgb2YKKyAgICAgICAgQnJhbmQgQ2hl
Y2suIER1cmluZyBjbGFzcyBldmFsdWF0aW9uLCBpZiBhIHByaXZhdGUgbWV0aG9kIGlzIHByZXNl
bnQsCisgICAgICAgIGEgYGJyYW5kYCBpcyBpbnN0YWxsZWQgaW4gdGhpcyBjbGFzcy4gRXZlcnkg
aW5zdGFuY2Ugb2Ygc3VjaCBjbGFzcworICAgICAgICB0aGVuIGdldHMgdGhpcyBicmFuZCBpbnN0
YWxsZWQgZHVyaW5nIGBbW0NvbnN0cnVjdF1dYCBvcGVyYXRpb24uIEl0CisgICAgICAgIG1lYW5z
IHRoYXQgYW4gb2JqZWN0IGNhbiBoYXZlIG11bHRpcGxlIGJyYW5kcyAoZS5nIHdoZW4gdGhlcmUg
aXMgYWxzbworICAgICAgICBwcml2YXRlIG1ldGhvZHMgZGVjbGFyZWQgb24gc3VwZXIgY2xhc3Mp
LiBCZWZvcmUgYWNjZXNzaW5nIGEgcHJpdmF0ZQorICAgICAgICBtZXRob2QsIHRoZXJlIGlzIGEg
Y2hlY2sgdG8gdmFsaWRhdGUgaWYgdGhlIHRhcmdldCBvZiB0aGUgY2FsbCBoYXMgdGhlCisgICAg
ICAgIGJyYW5kIG9mIGNhbGxlZSBtZXRob2QuCisgICAgICAgIFRoZSBicmFuZCBjaGVjayBtZWNo
YW5pc20gaXMgaW1wbGVtZW50ZWQgdXNpbmcgYSBgQHByaXZhdGVCcmFuZGAKKyAgICAgICAgc3Rv
cmVkIG9uIGNsYXNzIHNjb3BlLiBIZXJlIGlzIGEgcmVwcmVzZW50YXRpb24gb2YgaG93IHRoaXMg
bWVjaGFuaXNtCisgICAgICAgIHdvcmtzOgorCisgICAgICAgIGBgYAorICAgICAgICBjbGFzcyBD
IHsKKyAgICAgICAgICAgICNtKCkgeyByZXR1cm4gMzsgfQorICAgICAgICAgICAgbWV0aG9kKCkg
eyByZXR1cm4gdGhpcy4jbSgpOyB9CisgICAgICAgIH0KKworICAgICAgICBsZXQgYyA9IG5ldyBD
KCk7CisgICAgICAgIGNvbnNvbGUubG9nKGMubWV0aG9kKCkpOyAvLyBwcmludHMgMworICAgICAg
ICBgYGAKKworICAgICAgICBHZW5lcmF0ZWQgYnl0ZWNvZGUgZm9yIHRoZSBmb2xsb3dpbmcgcmVw
cmVzZW50YXRpb246CisgICAgICAgIGBgYAorICAgICAgICB7IC8vIGNsYXNzIGxleGljYWwgc2Nv
cGUKKyAgICAgICAgICAgIGNvbnN0IEBwcml2YXRlQnJhbmQgPSBAY3JlYXRlUHJpdmF0ZVN5bWJv
bCgpOworICAgICAgICAgICAgY29uc3QgI20gPSBmdW5jdGlvbiAoKSB7IHJldHVybiAzOyB9Cisg
ICAgICAgICAgICBDLnByb3RvdHlwZS5tZXRob2QgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICAgICBAZ2V0X3ByaXZhdGVfbmFtZSh0aGlzLCBAcHJpdmF0ZUJyYW5kKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gI20uY2FsbCh0aGlzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEMg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBAcHV0X3ByaXZhdGVfbmFtZSh0aGlzLCBA
cHJpdmF0ZUJyYW5kLCBAcHJpdmF0ZUJyYW5kKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICAgICAgY29uc29sZS5sb2coYy5tZXRob2Qo
KSk7IC8vIHByaW50cyAzCisgICAgICAgIGBgYAorCisgICAgICAgIFRoZSBicmFuZCBjaGVjayBp
cyBwZXJmb3JtZWQgYnkgYGdldF9wcml2YXRlX25hbWVgLCB3aGVyZSB3ZSByZS11c2UKKyAgICAg
ICAgdGhlIG1lY2hhbmlzbSBpbnRyb2R1Y2VkIGJ5IHByaXZhdGUgY2xhc3MgZmllbGRzLiBXZSBj
YW4gc2VlIHRoZQorICAgICAgICBwcml2YXRlIGJyYW5kIGFzIGEgc3BlY2lhbCBwcml2YXRlIGZp
ZWxkIGluc3RhbGxlZCBkdXJpbmcKKyAgICAgICAgYFtbQ29uc3RydWN0XV1gIG9wZXJhdGlvbi4g
U2luY2UgdGhlIHByaXZhdGUgYnJhbmQgaXMgYSBwcml2YXRlIGZpZWxkLAorICAgICAgICB3ZSB0
aHJvdyBgVHlwZUVycm9yYCB3aGVuIHRoZSBsb29rdXAgZmFpbC4KKworICAgICAgICBUbyBwcm9w
ZXJseSBzdG9yZSB0aGUgcHJpdmF0ZSBicmFuZCBvZiBhIGNsYXNzIG9uIGFsbCBvYmplY3RzLAor
ICAgICAgICBpbmNsdWRpbmcgUHJveGllcywgd2UgdXNlIGBwdXRfcHJpdmF0ZV9uYW1lYC4gVGhp
cyBpbnN0cnVjdGlvbiBwdXRzCisgICAgICAgIHZhbHVlIG9uIG9iamVjdCdzIHByb3BlcnRpZXMg
d2l0aG91dCBleGVjdXRpbmcgW1tQdXRdXSBzZW1hbnRpY3MuCisgICAgICAgIFdpdGggdGhpcyBk
ZXNpZ24sIHdlIGF2b2lkIGFsbG9jYXRpbmcgYSBmaWVsZCBmb3IgZXZlcnkgaW5zdGFuY2UKKyAg
ICAgICAgb2YgYSBjbGFzcywgc2luY2UgcHJpdmF0ZSBtZXRob2RzIGFyZSBzdG9yZWQgb24gY2xh
c3MKKyAgICAgICAgbGV4aWNhbCBzY29wZS4gRXZlcnkgb2JqZWN0IHdpbGwgaGF2ZSB0byBhbGxv
Y2F0ZSBpdHMgcHJpdmF0ZQorICAgICAgICBicmFuZCBsaXN0LiBUaGlzIGRlc2lnbiBpbnNlcnRz
IG5vIG92ZXJoZWFkIG9uIG9iamVjdHMgYW5kIGNsYXNzZXMKKyAgICAgICAgd2l0aG91dCBwcml2
YXRlIG1ldGhvZHMvYWNjZXNzb3IuCisKKyAgICAgICAgUmVzb2x2aW5nIGNvcnJlY3QgYnJhbmQg
Y2hlY2s6CisKKyAgICAgICAgSW4gdGhlIGNhc2Ugb2Ygc2hhZG93aW5nIG9yIG5lc3RlZCBzY29w
ZSwgd2UgbmVlZCB0byBlbWl0IGJyYW5kCisgICAgICAgIGNoZWNrcyB0byB0aGUgcmlnaHQgcHJp
dmF0ZSBicmFuZC4gU2VlIGNvZGUgYmVsb3c6CisKKyAgICAgICAgYGBgCisgICAgICAgIGNsYXNz
IEMgeworICAgICAgICAgICAgI20oKSB7IHJldHVybiAzOyB9CisgICAgICAgICAgICBtZXRob2Qo
KSB7IHJldHVybiB0aGlzLiNtKCk7fQorCisgICAgICAgICAgICBBID0gY2xhc3MgeworICAgICAg
ICAgICAgICAgICNtMigpIHsgcmV0dXJuIDM7IH0KKyAgICAgICAgICAgICAgICBmb28obykgeyBy
ZXR1cm4gdGhpcy4jbSgpOyB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYGBg
CisKKyAgICAgICAgVGhlIGNhbGwgb2YgIiNtIiBpbiBgZm9vYCByZWZlcnMgdG8gIkM6OiNtIi4g
SW4gc3VjaCBjYXNlLCB3ZSBuZWVkIHRvCisgICAgICAgIGNoZWNrIEMncyBwcml2YXRlIGJyYW5k
LCBpbnN0ZWFkIG9mIEEncyBwcml2YXRlIGJyYW5kLgorICAgICAgICBUbyBwZXJmb3JtIHRoZSBw
cm9wZXIgY2hlY2ssIHdlIGZpcnN0IHJlc29sdmUgc2NvcGUgb2YgIiNtIiBhbmQgdGhlbgorICAg
ICAgICBjaGVjayB0aGUgcHJpdmF0ZSBicmFuZCBvZiB0aGlzIHNjb3BlICh0aGUgc2NvcGUgd2hl
cmUgdGhlIHByaXZhdGUKKyAgICAgICAgbWV0aG9kIGFuZCBicmFuZCBhcmUgc3RvcmVkIGlzIHRo
ZSBzYW1lKS4KKyAgICAgICAgU28gdGhlIGJ5dGVjb2RlIHRvIGxvb2t1cCB0aGUgcmlnaHQgYnJh
bmQgaXM6CisKKyAgICAgICAgYGBgCisgICAgICAgIHJlc29sdmVfc2NvcGUgbG9jMTAsICIjbSIK
KyAgICAgICAgZ2V0X2Zyb21fc2NvcGUgbG9jMTEsIGxvYzEwLCAiQHByaXZhdGVCcmFuZCIKKyAg
ICAgICAgZ2V0X3ByaXZhdGVfbmFtZSBsb2MxMiwgdGhpcywgbG9jMTEKKyAgICAgICAgZ2V0X2Zy
b21fc2NvcGUgbG9jMTEsIGxvYzEwLCAiI20iCisgICAgICAgIC8vIHNldHVwIGNhbGwgZnJhbWUK
KyAgICAgICAgY2FsbCBsb2MxMSwgLi4uCisgICAgICAgIC8vIC4uLgorICAgICAgICBgYGAKKwor
ICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6CisgICAgICAgIChKU0M6
OkJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yKToKKyAgICAgICAg
KEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKToKKyAgICAgICAgKiBi
dWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaDoKKworICAgICAgICBXZSBhcmUgYWRkaW5nIGEg
bmV3IHBhcmFtZXRlciBgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnRgIHRvIHByb3BhZ2F0ZQorICAg
ICAgICB3aGVuIGEgZGVmYXVsdCBjb25zdHJ1Y3RvciBuZWVkcyB0byBlbWl0IGNvZGUgdG8gc2V0
dXAgcHJpdmF0ZSBicmFuZAorICAgICAgICBvbiBpbnN0YW5jZXMuCisKKyAgICAgICAgKiBidWls
dGlucy9CdWlsdGluTmFtZXMuaDoKKworICAgICAgICBBZGRpbmcgYEBwcml2YXRlQnJhbmRgIHRo
YXQgIHdlIHVzZSB0byBzdG9yZSBwcml2YXRlIGJyYW5kIG9uCisgICAgICAgIGNsYXNzJ3Mgc2Nv
cGUuCisKKyAgICAgICAgKiBieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oOgorICAgICAgICAoSlND
OjpFeGVjdXRhYmxlSW5mbzo6RXhlY3V0YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpFeGVjdXRh
YmxlSW5mbzo6cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgY29uc3QpOgorICAgICAgICAqIGJ5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxv
Y2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6cHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2Vu
ZXJhdG9yLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yOjpwcml2
YXRlQnJhbmRSZXF1aXJlbWVudCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZVVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2Rl
R2VuZXJhdG9yKToKKworICAgICAgICBXZSBjaGFuZ2VkIEJ5dGVjb2RlR2VuZXJhdG9yIGZvciBG
dW5jdGlvbk5vZGUgYW5kIEV2YWxOb2RlIHRvCisgICAgICAgIHByb3BhZ2F0ZSBwYXJlbnRTY29w
ZSBWYXJpYWJsZUVudmlyb25tZW50LiBUaGVzZSBlbnZpcm9ubWVudHMgc3RvcmVzCisgICAgICAg
IHByaXZhdGUgbmFtZSBlbnRyaWVzIHRoYXQgYXJlIHZpc2libGUgaW50byB0aGUgc2NvcGUgb2Yg
dGhlCisgICAgICAgIGZ1bmN0aW9uL2V2YWwgaW4gYWRkaXRpb24gdG8gVERaIHZhcmlhYmxlcy4K
KyAgICAgICAgVGhpcyBpcyByZXF1aXJlZCB0byBpZGVudGlmeSB0aGUga2luZCBvZiBhY2Nlc3Mg
YSBwcml2YXRlIG5hbWUgaXMKKyAgICAgICAgcmVmZXJyaW5nIHRvLCBzaW5jZSBpdCBjYW4gYmUg
YSBwcml2YXRlIGZpZWxkIG9yIGEgcHJpdmF0ZSBtZXRob2QuCisgICAgICAgIEdpdmVuIHRoaXMg
Y2hhbmdlLCB3ZSBjaGFuZ2VkIHRoZSBuYW1lIG9mIFZhcmlhYmxlRW52aXJvbm1lbnQKKyAgICAg
ICAgZnJvbSBgcGFyZW50U2NvcGVURFpWYXJpYWJsZXNgIHRvIGBwYXJlbnRTY29wZVZhcmlhYmxl
RW52aXJvbm1lbnRgLgorCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppbnN0YW50
aWF0ZUxleGljYWxWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEdldFByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRDcmVhdGVQcml2YXRlQnJhbmQpOgorCisgICAgICAgIFRoZSBwcm9jZXNzIHRvIGNyZWF0ZSBh
IHByaXZhdGUgYnJhbmQgaXMgYXMgZm9sbG93czoKKyAgICAgICAgICAgIDEuIENyZWF0ZSBhIFBy
aXZhdGVTeW1ib2wgdXNpbmcgYEBjcmVhdGVQcml2YXRlU3ltYm9sYC4KKyAgICAgICAgICAgIDIu
IFN0b3JlIHRoaXMgc3ltYm9sIGludG8gYSBnaXZlbiBzY29wZSAoaS5lIGNsYXNzIGxleGljYWwg
c2NvcGUpCisgICAgICAgICAgICAgICBvbiBgQHByaXZhdGVCcmFuZGAgdmFyaWFibGUuCisKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJbnN0YWxsUHJpdmF0ZUJyYW5kKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRQcml2YXRlQnJhbmQpOgor
CisgICAgICAgIFdlIGFkZGVkIGBtX3ByaXZhdGVOYW1lc1N0YWNrYCB0byBCeXRlY29kZUdlbmVy
YXRvciB0byByZXByZXNlbnQgdGhlCisgICAgICAgIHNjb3BlIGNoYWluIG9mIGF2YWlsYWJsZSBw
cml2YXRlIG5hbWVzIHdoaWxlIGdlbmVyYXRpbmcgYnl0ZWNvZGUuCisKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDaGVja1ByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjppc1ByaXZhdGVNZXRob2QpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6cHVzaFByaXZhdGVBY2Nlc3NOYW1lcyk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjpwb3BQcml2YXRlQWNjZXNzTmFtZXMpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6Z2V0QXZhaWxhYmxlUHJpdmF0ZUFjY2Vzc05hbWVzKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdldFZhcmlhYmxlc1VuZGVyVERaKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0luc3RhbmNlRmllbGRJbml0
aWFsaXplckZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRE
aXJlY3RHZXRCeVZhbCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpwcml2YXRlQnJh
bmRSZXF1aXJlbWVudCBjb25zdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpt
YWtlRnVuY3Rpb24pOgorCisgICAgICAgIFRoaXMgY2hhbmdlIGlzIHJlcXVpcmVkIHRvIHByb3Bl
cmx5IHByb3BhZ2F0ZSBQcml2YXRlQnJhbmRSZXF1aXJlbWVudAorICAgICAgICB0byBhcnJvdyBm
dW5jdGlvbnMgdGhhdCBjYW4gcG90ZW50aWFsbHkgY2FsbCBgc3VwZXIoKWAuCisKKyAgICAgICAg
KiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlM
aXN0Tm9kZTo6ZW1pdERlY2xhcmVQcml2YXRlRmllbGROYW1lcyk6CisgICAgICAgIChKU0M6OlBy
b3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlz
dE5vZGU6OmVtaXRQdXRDb25zdGFudFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6QmFzZURvdE5v
ZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKToKKworICAgICAgICBBZGRpbmcgc3VwcG9ydCB0byBw
cm9wZXJseSBhY2Nlc3MgcHJpdmF0ZSBtZXRob2QuIFNpbmNlIHdlIHN0b3JlCisgICAgICAgIHBy
aXZhdGUgbWV0aG9kcyBvbiBjbGFzcyBsZXhpY2FsIHNjb3BlLCB3ZSBuZWVkIGEgZGlmZmVyZW50
IHNldCBvZgorICAgICAgICBpbnN0cnVjdGlvbnMgdG8gYWNjZXNzIGEgcHJpdmF0ZSBtZXRob2Qu
CisKKyAgICAgICAgKEpTQzo6QmFzZURvdE5vZGU6OmVtaXRQdXRQcm9wZXJ0eSk6CisKKyAgICAg
ICAgSW4gdGhlIGNhc2Ugb2Ygd2UgdHJ5aW5nIHRvIHdyaXRlIGluIGEgcHJpdmF0ZSBtZXRob2Qs
IHdlIG5lZWQgdG8KKyAgICAgICAgdGhyb3cgYSBUeXBlRXJyb3IgYWNjb3JkaW5nIHRvIHNwZWNp
ZmljYXRpb24KKyAgICAgICAgKGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1wcml2YXRlLW1ldGhv
ZHMvI3NlYy1wcml2YXRlZmllbGRzZXQpLgorCisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbFZh
bHVlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UG9zdGZpeE5vZGU6OmVtaXRE
b3QpOgorICAgICAgICAoSlNDOjpQcmVmaXhOb2RlOjplbWl0RG90KToKKyAgICAgICAgKEpTQzo6
Q2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dl
ckNhbGxGcmFtZS5jcHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lOjpldmFsdWF0
ZVdpdGhTY29wZUV4dGVuc2lvbik6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwOgorICAgICAgICAoSlNDOjpldmFsKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgor
ICAgICAgICAoSlNDOjpGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUp
OgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3Bw
OgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6CisgICAgICAg
ICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpTY29wZTo6ZGVjbGFyZVByaXZhdGVN
ZXRob2QpOgorICAgICAgICAoSlNDOjpTY29wZTo6ZGVjbGFyZVByaXZhdGVGaWVsZCk6CisgICAg
ICAgIChKU0M6OlNjb3BlOjpkZWNsYXJlUHJpdmF0ZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAq
IHBhcnNlci9QYXJzZXJNb2Rlcy5oOgorICAgICAgICAqIHBhcnNlci9WYXJpYWJsZUVudmlyb25t
ZW50LmNwcDoKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVByaXZh
dGVNZXRob2QpOgorICAgICAgICAoSlNDOjpDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudDo6Q29t
cGFjdFZhcmlhYmxlRW52aXJvbm1lbnQpOgorICAgICAgICAoSlNDOjpDb21wYWN0VmFyaWFibGVF
bnZpcm9ubWVudDo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6OkNvbXBhY3RWYXJp
YWJsZUVudmlyb25tZW50Ojp0b1ZhcmlhYmxlRW52aXJvbm1lbnQgY29uc3QpOgorICAgICAgICAq
IHBhcnNlci9WYXJpYWJsZUVudmlyb25tZW50Lmg6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52
aXJvbm1lbnRFbnRyeTo6aXNQcml2YXRlRmllbGQgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJp
YWJsZUVudmlyb25tZW50RW50cnk6OmlzUHJpdmF0ZU1ldGhvZCBjb25zdCk6CisgICAgICAgIChK
U0M6OlZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeTo6c2V0SXNQcml2YXRlRmllbGQpOgorICAgICAg
ICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OnNldElzUHJpdmF0ZU1ldGhvZCk6Cisg
ICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6OmlzTWV0aG9kIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6aXNQcml2YXRlQWNjZXNzIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6YWRkUHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlND
OjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKEpT
Qzo6VmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVByaXZhdGVNZXRob2QpOgorICAgICAgICAo
SlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpoYXNQcml2YXRlQWNjZXNzIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5Ojppc1ByaXZhdGVOYW1lIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5OjpzZXRJc1By
aXZhdGVOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6
ZGVjbGFyZVByaXZhdGVOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0NhY2hlZFR5
cGVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ29kZUJsb2NrUmFyZURhdGE6OmVuY29kZSk6
CisgICAgICAgIChKU0M6OkNhY2hlZENvZGVCbG9ja1JhcmVEYXRhOjpkZWNvZGUgY29uc3QpOgor
ICAgICAgICAoSlNDOjpDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGVSYXJlRGF0YTo6ZW5jb2RlKToK
KyAgICAgICAgKEpTQzo6Q2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlUmFyZURhdGE6OmRlY29kZSBj
b25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6cHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpDYWNoZWRDb2RlQmxvY2s6OmRl
cml2ZWRDb250ZXh0VHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ29k
ZUJsb2NrOjpuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogcnVudGltZS9Db2RlQ2FjaGUuY3BwOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZVVubGlu
a2VkQ29kZUJsb2NrSW1wbCk6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0VW5saW5rZWRH
bG9iYWxGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvRGlyZWN0RXZhbEV4
ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRl
KToKKyAgICAgICAgKEpTQzo6RGlyZWN0RXZhbEV4ZWN1dGFibGU6OkRpcmVjdEV2YWxFeGVjdXRh
YmxlKToKKyAgICAgICAgKiBydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmg6CisgICAgICAg
ICogcnVudGltZS9FdmFsRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRh
YmxlOjpFdmFsRXhlY3V0YWJsZSk6CisgICAgICAgICogcnVudGltZS9FdmFsRXhlY3V0YWJsZS5o
OgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6ZXhlY3V0YWJsZUluZm8gY29uc3QpOgor
ICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgY29u
c3QpOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHA6CisgICAgICAgIChK
U0M6OmNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKToKKyAgICAgICAgKiBydW50aW1lL0lu
ZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpJbmRpcmVjdEV2YWxFeGVj
dXRhYmxlOjpJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKToKKyAgICAgICAgKiBydW50aW1lL0pTU2Nv
cGUuY3BwOgorICAgICAgICAoSlNDOjpKU1Njb3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1Vu
ZGVyVERaKToKKyAgICAgICAgKiBydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmg6Cisg
ICAgICAgICogcnVudGltZS9PcHRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6T3B0aW9uczo6cmVj
b21wdXRlRGVwZW5kZW50T3B0aW9ucyk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zTGlzdC5o
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50
aW1lL1N5bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OmNsb25lU2Nv
cGVQYXJ0KToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFRhYmxlLmg6CisKIDIwMjAtMTAtMjEg
IENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNvbT4KIAogICAgICAgICBbSlNDXSBzdXBw
b3J0IG9wX2dldF9wcml2YXRlX25hbWUgaW4gREZHIGFuZCBGVEwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKaW5kZXggODMw
NDk0NGJhYzQzOGJjOTc5MzRhNGEwMmQwMjE1OTU1YjRjYWNmYi4uYTY0NGQzMjIxYjY4MzY1NDE5
ZTRhMzNlYjFmNmFiOGZiNmUxNTRmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgU291
cmNlQ29kZSBCdWlsdGluRXhlY3V0YWJsZXM6OmRlZmF1bHRDb25zdHJ1Y3RvclNvdXJjZUNvZGUo
Q29uc3RydWN0b3JLaW5kIGNvbnMKICAgICByZXR1cm4gU291cmNlQ29kZSgpOwogfQogCi1Vbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVEZWZhdWx0
Q29uc3RydWN0b3IoQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgY29uc3QgSWRlbnRp
ZmllciYgbmFtZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIpCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVz
OjpjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2lu
ZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVC
cmFuZFJlcXVpcmVtZW50KQogewogICAgIHN3aXRjaCAoY29uc3RydWN0b3JLaW5kKSB7CiAgICAg
Y2FzZSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU6CkBAIC02Nyw3ICs2Nyw3IEBAIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZURlZmF1bHRDb25zdHJ1
Y3RvcihDb25zdHJ1CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29uc3RydWN0b3JLaW5kOjpC
YXNlOgogICAgIGNhc2UgQ29uc3RydWN0b3JLaW5kOjpFeHRlbmRzOgotICAgICAgICByZXR1cm4g
Y3JlYXRlRXhlY3V0YWJsZShtX3ZtLCBkZWZhdWx0Q29uc3RydWN0b3JTb3VyY2VDb2RlKGNvbnN0
cnVjdG9yS2luZCksIG5hbWUsIGNvbnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJpbGl0eTo6Q2Fu
Q29uc3RydWN0LCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcik7CisgICAgICAgIHJldHVybiBj
cmVhdGVFeGVjdXRhYmxlKG1fdm0sIGRlZmF1bHRDb25zdHJ1Y3RvclNvdXJjZUNvZGUoY29uc3Ry
dWN0b3JLaW5kKSwgbmFtZSwgY29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5D
b25zdHJ1Y3QsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBwcml2YXRlQnJhbmRSZXF1aXJl
bWVudCk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxs
cHRyOwpAQCAtNzgsNyArNzgsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRp
bkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShjb25zdCBTbwogICAgIHJldHVy
biBjcmVhdGVFeGVjdXRhYmxlKG1fdm0sIGNvZGUsIG5hbWUsIGNvbnN0cnVjdG9yS2luZCwgY29u
c3RydWN0QWJpbGl0eSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vKTsKIH0KIAotVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0
YWJsZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgY29uc3QgSWRlbnRpZmllciYg
bmFtZSwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJpbGl0eSBj
b25zdHJ1Y3RBYmlsaXR5LCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplcikKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0
YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IGNvbnN0IElkZW50aWZpZXImIG5hbWUsIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQs
IENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50
IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KQogewogICAgIC8vIEZJWE1FOiBDYW4gd2UganVzdCBt
YWtlIE1ldGFEYXRhIGNvbXB1dGF0aW9uIGJlIGNvbnN0ZXhwciBhbmQgaGF2ZSB0aGUgY29tcGls
ZXIgZG8gdGhpcyBmb3IgdXM/CiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5MzI3MgpAQCAtMjUxLDcgKzI1MSw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUoVk0mIHZtLCBjb25z
dCBTCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSh2
bSwgc291cmNlLCAmbWV0YWRhdGEsIGtpbmQsIGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2Ny
aXB0TW9kZTo6Q2xhc3NpYywgV1RGOjpudWxsb3B0LCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUs
IG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1
Y3Rvcik7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJs
ZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUodm0sIHNvdXJjZSwgJm1ldGFk
YXRhLCBraW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMs
IFdURjo6bnVsbG9wdCwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBuZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplciwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGlzQnVpbHRpbkRlZmF1bHRDbGFz
c0NvbnN0cnVjdG9yKTsKICAgICByZXR1cm4gZnVuY3Rpb25FeGVjdXRhYmxlOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgK
aW5kZXggNDUxNjM4ZTg3M2Y3OTZjOGM0ZDI2MjljN2I1YWFmYmZhZWIyNGI5OC4uNDNlMzgyNzVi
MWI5YWEzNjE2N2EyYWU5MWQzNTg3ODYwMzgwNzgzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaApAQCAtNTgsOSArNTgsOSBA
QCBTb3VyY2VDb2RlIG5hbWUjI1NvdXJjZSgpOwogI3VuZGVmIEVYUE9TRV9CVUlMVElOX0VYRUNV
VEFCTEVTCiAKICAgICBzdGF0aWMgU291cmNlQ29kZSBkZWZhdWx0Q29uc3RydWN0b3JTb3VyY2VD
b2RlKENvbnN0cnVjdG9yS2luZCk7Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNy
ZWF0ZURlZmF1bHRDb25zdHJ1Y3RvcihDb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXIm
IG5hbWUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogY3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yKENvbnN0cnVjdG9yS2luZCwgY29u
c3QgSWRlbnRpZmllciYgbmFtZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVC
cmFuZFJlcXVpcmVtZW50KTsKIAotICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogY3JlYXRlRXhlY3V0YWJsZShWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBJZGVudGlm
aWVyJiwgQ29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBOZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplcik7CisgICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVh
dGVFeGVjdXRhYmxlKFZNJiwgY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXImLCBD
b25zdHJ1Y3RvcktpbmQsIENvbnN0cnVjdEFiaWxpdHksIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpO
b25lKTsKIAogICAgIHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCmluZGV4IGMxZDVkOTA0NmFh
YmZkNmZlNWNiMzkzZDk1Y2UwN2E3MTExNzY2OGUuLjBkODI0NTc3NDkwYmFiYmM3MmY0ODUzOGUx
OTdjNDIzNjM4YTU5YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9CdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVp
bHRpbk5hbWVzLmgKQEAgLTE3MSw2ICsxNzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNy
byh3ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbCkgXAogICAgIG1hY3JvKHdlYkFz
c2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbCkgXAogICAgIG1hY3JvKGluc3RhbmNl
RmllbGRJbml0aWFsaXplcikgXAorICAgIG1hY3JvKHByaXZhdGVCcmFuZCkgXAogICAgIG1hY3Jv
KGhhc093blByb3BlcnR5RnVuY3Rpb24pIFwKICAgICBtYWNybyhjcmVhdGVQcml2YXRlU3ltYm9s
KQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJs
ZUluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5o
CmluZGV4IDQ5ZWRkNTI4NWQ1YzJjMjhiMWM5YTRiY2VlZjQ1MTcxOTkwYmU5MWMuLmNkNTlmYjRh
NzMzZTkyNGU0ZWIxM2E5YzAwNjkzMDQyZDM5ZDlkZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0zNiw5ICszNiwxMCBAQCBlbnVt
IGNsYXNzIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIDogdWludDhfdCB7IE5vLCBZZXMgfTsK
IC8vIEZJWE1FOiBUaGVzZSBmbGFncywgUGFyc2VyTW9kZXMgYW5kIHByb3BhZ2F0aW9uIHRvIFhY
WENvZGVCbG9ja3Mgc2hvdWxkIGJlIHJlb3JnYW5pemVkLgogLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0Nwogc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKLSAg
ICBFeGVjdXRhYmxlSW5mbyhib29sIHVzZXNFdmFsLCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wg
aXNCdWlsdGluRnVuY3Rpb24sIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIEpTUGFy
c2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBTb3Vy
Y2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRU
eXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
ciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzQ2xhc3NDb250ZXh0LCBFdmFs
Q29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgdXNl
c0V2YWwsIGJvb2wgaXNDb25zdHJ1Y3RvciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24sIENvbnN0cnVjdG9yS2lu
ZCBjb25zdHJ1Y3RvcktpbmQsIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBTdXBlckJp
bmRpbmcgc3VwZXJCaW5kaW5nLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBEZXJpdmVkQ29u
dGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBu
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBi
b29sIGlzQ2xhc3NDb250ZXh0LCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKQogICAg
ICAgICA6IG1fdXNlc0V2YWwodXNlc0V2YWwpCiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlz
Q29uc3RydWN0b3IpCisgICAgICAgICwgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4ocHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpKQogICAgICAgICAsIG1faXNC
dWlsdGluRnVuY3Rpb24oaXNCdWlsdGluRnVuY3Rpb24pCiAgICAgICAgICwgbV9jb25zdHJ1Y3Rv
cktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCiAgICAgICAgICwg
bV9zdXBlckJpbmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykpCkBAIC01
Nyw2ICs1OCw3IEBAIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiAKICAgICBib29sIHVzZXNFdmFs
KCkgY29uc3QgeyByZXR1cm4gbV91c2VzRXZhbDsgfQogICAgIGJvb2wgaXNDb25zdHJ1Y3Rvcigp
IGNvbnN0IHsgcmV0dXJuIG1faXNDb25zdHJ1Y3RvcjsgfQorICAgIFByaXZhdGVCcmFuZFJlcXVp
cmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ+KG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOyB9
CiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGlu
RnVuY3Rpb247IH0KICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7
IH0KICAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1cGVyQmluZGluZyk7IH0KQEAgLTcxLDYgKzczLDcgQEAg
c3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV91c2VzRXZh
bCA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKKyAgICB1bnNpZ25lZCBt
X3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1
bmN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CiAgICAgdW5z
aWduZWQgbV9zdXBlckJpbmRpbmcgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggYjNhZGMwYjc3ZWI3YzcyNDE4
NmE5ODFjNjM1M2MzMTlhNTk5YjBlMC4uOTNkZmY3NzQyZDM3NGVlYzNlZmEyZGUwNzRlMjg0ODFm
OTY5NjE1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suY3BwCkBAIC02OSw2ICs2OSwxMCBAQCBVbmxpbmtlZENvZGVCbG9jazo6
VW5saW5rZWRDb2RlQmxvY2soVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29kZVR5cGUg
Y29kZQogICAgICAgICBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KGhvbGRMb2NrKGNlbGxMb2Nr
KCkpKTsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6WWVzKTsK
ICAgICB9CisgICAgaWYgKGluZm8ucHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSA9PSBQcml2YXRl
QnJhbmRSZXF1aXJlbWVudDo6TmVlZGVkKSB7CisgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNl
c3NhcnkoaG9sZExvY2soY2VsbExvY2soKSkpOworICAgICAgICBtX3JhcmVEYXRhLT5tX3ByaXZh
dGVCcmFuZFJlcXVpcmVtZW50ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByaXZhdGVCcmFuZFJl
cXVpcmVtZW50OjpOZWVkZWQpOworICAgIH0KIH0KIAogdm9pZCBVbmxpbmtlZENvZGVCbG9jazo6
dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRl
eCAwMGRjNjE2MzM1ZmQzMWIwNDMyNTFlMzQ0MDBlNTdkZWY1MzE1ZDVmLi4xZjUxZWNlNWQ2Zjg2
ZDcwOTUxMWI0YTRjMTgyYzY0Y2JmYTE4M2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMjY2LDYgKzI2NiwxMyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm87CiAg
ICAgfQogCisgICAgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1fcmFyZURhdGEpCisgICAgICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ+KG1fcmFyZURhdGEtPm1f
cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOworICAgICAgICByZXR1cm4gUHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQ6Ok5vbmU7CisgICAgfQorCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29u
c3Q7CiAKICAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMmIGxpdmVuZXNzQW5hbHlzaXMoQ29k
ZUJsb2NrKiBjb2RlQmxvY2spCkBAIC00MDcsNiArNDE0LDcgQEAgcHVibGljOgogICAgICAgICBS
ZWZDb3VudGVkQXJyYXk8Q29uc3RhbnRJZGVudGlmaWVyU2V0RW50cnk+IG1fY29uc3RhbnRJZGVu
dGlmaWVyU2V0czsKIAogICAgICAgICB1bnNpZ25lZCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyIDogMTsKKyAgICAgICAgdW5zaWduZWQgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA6IDE7
CiAgICAgfTsKIAogICAgIGludCBvdXRPZkxpbmVKdW1wT2Zmc2V0KEluc3RydWN0aW9uU3RyZWFt
OjpPZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaAppbmRleCAyZWI5ODRjMWIwNWE0NWUwYWE1
MjBlMWZkMzc4YWQ5ZTJmYzkzMjIyLi45NGM2ODcwZTk5NGMyYmY1Yzk4MmNlOTUyZTRjNTM0YmRj
OTZiNDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2tHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaApAQCAtNTAsNiArNTAsNyBAQCBwdWJsaWM6
CiAgICAgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJs
b2NrLT5zdXBlckJpbmRpbmcoKTsgfQogICAgIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnNjcmlwdE1vZGUoKTsgfQogICAgIE5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkgY29uc3Qg
eyByZXR1cm4gbV9jb2RlQmxvY2stPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCk7IH0KKyAg
ICBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5wcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpOyB9CiAgICAg
Ym9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT51c2VzRXZhbCgpOyB9
CiAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJs
b2NrLT5wYXJzZU1vZGUoKTsgfQogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgeyByZXR1cm4g
bV9jb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNw
cAppbmRleCA0NjFkOWZhZGQ0OGIzNWJjOTRlZGQ2MTBiNzM4N2NlYTkwMmMxNGY2Li5mMmYxMDBm
ODlhYTU3NWI2Nzg1ZGU2ODJmNzBjODMyZjRhNzViOTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZS5jcHAKQEAgLTcwLDExICs3MCwxMSBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
ayogZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogCiAgICAgYm9vbCBpc0NsYXNz
Q29udGV4dCA9IGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpID09IFN1cGVyQmluZGluZzo6TmVl
ZGVkOwogCi0gICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKHZtLCBGdW5jdGlvbkNvZGUsIEV4ZWN1dGFibGVJbmZv
KGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0aW9u
S2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwgZXhlY3V0YWJsZS0+Y29uc3RydWN0b3JL
aW5kKCksIHNjcmlwdE1vZGUsIGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpLCBwYXJzZU1vZGUs
IGV4ZWN1dGFibGUtPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBleGVjdXRhYmxlLT5uZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplcigpLCBmYWxzZSwgaXNDbGFzc0NvbnRleHQsIEV2YWxDb250ZXh0VHlw
ZTo6RnVuY3Rpb25FdmFsQ29udGV4dCksIGNvZGVHZW5lcmF0aW9uTW9kZSk7CisgICAgVW5saW5r
ZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6
Y3JlYXRlKHZtLCBGdW5jdGlvbkNvZGUsIEV4ZWN1dGFibGVJbmZvKGZ1bmN0aW9uLT51c2VzRXZh
bCgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGV4ZWN1dGFibGUtPnByaXZhdGVCcmFuZFJl
cXVpcmVtZW50KCksIGZ1bmN0aW9uS2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwgZXhl
Y3V0YWJsZS0+Y29uc3RydWN0b3JLaW5kKCksIHNjcmlwdE1vZGUsIGV4ZWN1dGFibGUtPnN1cGVy
QmluZGluZygpLCBwYXJzZU1vZGUsIGV4ZWN1dGFibGUtPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBl
eGVjdXRhYmxlLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBmYWxzZSwgaXNDbGFzc0Nv
bnRleHQsIEV2YWxDb250ZXh0VHlwZTo6RnVuY3Rpb25FdmFsQ29udGV4dCksIGNvZGVHZW5lcmF0
aW9uTW9kZSk7CiAKLSAgICBWYXJpYWJsZUVudmlyb25tZW50IHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzID0gZXhlY3V0YWJsZS0+cGFyZW50U2NvcGVURFpWYXJpYWJsZXMoKTsKKyAgICBWYXJpYWJs
ZUVudmlyb25tZW50IHBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCA9IGV4ZWN1dGFibGUt
PnBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCgpOwogICAgIEVDTUFNb2RlIGVjbWFNb2Rl
ID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6
IEVDTUFNb2RlOjpzbG9wcHkoKTsKLSAgICBlcnJvciA9IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5l
cmF0ZSh2bSwgZnVuY3Rpb24uZ2V0KCksIHNvdXJjZSwgcmVzdWx0LCBjb2RlR2VuZXJhdGlvbk1v
ZGUsICZwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgZWNtYU1vZGUpOworICAgIGVycm9yID0gQnl0
ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKHZtLCBmdW5jdGlvbi5nZXQoKSwgc291cmNlLCByZXN1
bHQsIGNvZGVHZW5lcmF0aW9uTW9kZSwgJnBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCwg
ZWNtYU1vZGUpOwogCiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CkBAIC04Miw3ICs4Miw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
KiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHBhcmVu
dFNvdXJjZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5k
IGtpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRN
b2RlIHNjcmlwdE1vZGUsIE9wdGlvbmFsPENvbXBhY3RWYXJpYWJsZU1hcDo6SGFuZGxlPiBwYXJl
bnRTY29wZVREWlZhcmlhYmxlcywgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlw
ZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIs
IGJvb2wgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IpCitVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgY29uc3QgU291cmNlQ29kZSYgcGFyZW50U291cmNlLCBGdW5jdGlvbk1ldGFk
YXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQga2luZCwgQ29uc3RydWN0QWJpbGl0
eSBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgT3B0aW9u
YWw8Q29tcGFjdFZhcmlhYmxlTWFwOjpIYW5kbGU+IHBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9u
bWVudCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJl
cXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29sIGlzQnVpbHRpbkRlZmF1bHRD
bGFzc0NvbnN0cnVjdG9yKQogICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQogICAgICwgbV9maXJz
dExpbmVPZmZzZXQobm9kZS0+Zmlyc3RMaW5lKCkgLSBwYXJlbnRTb3VyY2UuZmlyc3RMaW5lKCku
b25lQmFzZWRJbnQoKSkKICAgICAsIG1faXNJblN0cmljdENvbnRleHQobm9kZS0+aXNJblN0cmlj
dENvbnRleHQoKSkKQEAgLTEwMyw2ICsxMDMsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdAog
ICAgICwgbV90eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQobm9kZS0+ZnVuY3Rpb25LZXl3b3JkU3Rh
cnQoKSkKICAgICAsIG1fdHlwZVByb2ZpbGluZ0VuZE9mZnNldChub2RlLT5zdGFydFN0YXJ0T2Zm
c2V0KCkgKyBub2RlLT5zb3VyY2UoKS5sZW5ndGgoKSAtIDEpCiAgICAgLCBtX3BhcmFtZXRlckNv
dW50KG5vZGUtPnBhcmFtZXRlckNvdW50KCkpCisgICAgLCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVt
ZW50KHN0YXRpY19jYXN0PHVuc2lnbmVkPihwcml2YXRlQnJhbmRSZXF1aXJlbWVudCkpCiAgICAg
LCBtX2ZlYXR1cmVzKDApCiAgICAgLCBtX3NvdXJjZVBhcnNlTW9kZShub2RlLT5wYXJzZU1vZGUo
KSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihub2RlLT5j
b25zdHJ1Y3RvcktpbmQoKSkpCkBAIC0xMjIsMTIgKzEyMywxMyBAQCBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdAogICAgIEFTU0VSVChtX3NjcmlwdE1vZGUgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHNjcmlwdE1vZGUpKTsKICAgICBBU1NFUlQobV9zdXBlckJpbmRpbmcgPT0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KG5vZGUtPnN1cGVyQmluZGluZygpKSk7CiAgICAgQVNTRVJUKG1fZGVyaXZlZENv
bnRleHRUeXBlID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXJpdmVkQ29udGV4dFR5cGUpKTsK
KyAgICBBU1NFUlQobV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9PSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4ocHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpKTsKICAgICBBU1NFUlQoIShtX2lzQnVpbHRp
bkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yICYmIGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVj
dG9yS2luZDo6Tm9uZSkpOwogICAgIEFTU0VSVCghbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
ciB8fCAoaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKSB8fCBkZXJpdmVkQ29udGV4dFR5cGUg
PT0gRGVyaXZlZENvbnRleHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KSk7CiAgICAg
aWYgKCFub2RlLT5jbGFzc1NvdXJjZSgpLmlzTnVsbCgpKQogICAgICAgICBzZXRDbGFzc1NvdXJj
ZShub2RlLT5jbGFzc1NvdXJjZSgpKTsKLSAgICBpZiAocGFyZW50U2NvcGVURFpWYXJpYWJsZXMp
Ci0gICAgICAgIGVuc3VyZVJhcmVEYXRhKCkubV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcyA9IFdU
Rk1vdmUoKnBhcmVudFNjb3BlVERaVmFyaWFibGVzKTsKKyAgICBpZiAocGFyZW50U2NvcGVWYXJp
YWJsZUVudmlyb25tZW50KQorICAgICAgICBlbnN1cmVSYXJlRGF0YSgpLm1fcGFyZW50U2NvcGVW
YXJpYWJsZUVudmlyb25tZW50ID0gV1RGTW92ZSgqcGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25t
ZW50KTsKIH0KIAogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6On5VbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCmluZGV4IDhmZmUzMDBkODQ0MjcxZDRm
NmRkZjkxNWQyZGJlMmE1MmZjMDJhN2YuLjU2MzY3ZWIwNWVlMGY1MThhM2U3OTdlOGI0MmJlNDIy
YmNjNzQ2OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCkBAIC03MCwxMCArNzAsMTAgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gJnZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uu
c3BhY2U7CiAgICAgfQogCi0gICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBj
cmVhdGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uTWV0YWRhdGFO
b2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29u
c3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0
TW9kZSwgT3B0aW9uYWw8Q29tcGFjdFZhcmlhYmxlTWFwOjpIYW5kbGU+IHBhcmVudFNjb3BlVERa
VmFyaWFibGVzLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0J1
aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvciA9IGZhbHNlKQorICAgIHN0YXRpYyBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQgdW5s
aW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgSlNQ
YXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIE9wdGlvbmFsPENvbXBhY3RWYXJpYWJsZU1hcDo6
SGFuZGxlPiBwYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQsIERlcml2ZWRDb250ZXh0VHlw
ZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRS
ZXF1aXJlbWVudCwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvciA9IGZhbHNl
KQogICAgIHsKICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGluc3RhbmNlID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KHZt
LmhlYXApKQotICAgICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHZtLnVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBzb3VyY2UsIG5vZGUsIHVu
bGlua2VkRnVuY3Rpb25LaW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBzY3JpcHRNb2RlLCBXVEZNb3Zl
KHBhcmVudFNjb3BlVERaVmFyaWFibGVzKSwgZGVyaXZlZENvbnRleHRUeXBlLCBuZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplciwgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IpOworICAg
ICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHZtLnVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBzb3VyY2UsIG5vZGUsIHVubGlua2VkRnVuY3Rp
b25LaW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBzY3JpcHRNb2RlLCBXVEZNb3ZlKHBhcmVudFNjb3Bl
VmFyaWFibGVFbnZpcm9ubWVudCksIGRlcml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBpc0J1aWx0aW5EZWZhdWx0Q2xh
c3NDb25zdHJ1Y3Rvcik7CiAgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSk7CiAg
ICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9CkBAIC0xNDMsNiArMTQzLDggQEAgcHVibGlj
OgogICAgIENvZGVGZWF0dXJlcyBmZWF0dXJlcygpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXM7
IH0KICAgICBib29sIGhhc0NhcHR1cmVkVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9oYXND
YXB0dXJlZFZhcmlhYmxlczsgfQogCisgICAgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxQcml2YXRlQnJh
bmRSZXF1aXJlbWVudD4obV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7IH0KKwogICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKICAgICBzdGF0aWMgdm9p
ZCBkZXN0cm95KEpTQ2VsbCopOwogCkBAIC0xNjgsMTEgKzE3MCwxMSBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiAhbV9yYXJlRGF0YS0+bV9jbGFzc1NvdXJjZS5pc051bGwoKTsKICAgICB9CiAK
LSAgICBWYXJpYWJsZUVudmlyb25tZW50IHBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkgY29uc3QK
KyAgICBWYXJpYWJsZUVudmlyb25tZW50IHBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCgp
IGNvbnN0CiAgICAgewotICAgICAgICBpZiAoIW1fcmFyZURhdGEgfHwgIW1fcmFyZURhdGEtPm1f
cGFyZW50U2NvcGVURFpWYXJpYWJsZXMpCisgICAgICAgIGlmICghbV9yYXJlRGF0YSB8fCAhbV9y
YXJlRGF0YS0+bV9wYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQpCiAgICAgICAgICAgICBy
ZXR1cm4gVmFyaWFibGVFbnZpcm9ubWVudCgpOwotICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+
bV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5lbnZpcm9ubWVudCgpLnRvVmFyaWFibGVFbnZpcm9u
bWVudCgpOworICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9wYXJlbnRTY29wZVZhcmlhYmxl
RW52aXJvbm1lbnQuZW52aXJvbm1lbnQoKS50b1ZhcmlhYmxlRW52aXJvbm1lbnQoKTsKICAgICB9
CiAgICAgCiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBpc0Fycm93
RnVuY3Rpb25QYXJzZU1vZGUocGFyc2VNb2RlKCkpOyB9CkBAIC0yMDgsNyArMjEwLDcgQEAgcHVi
bGljOgogICAgICAgICBTb3VyY2VDb2RlIG1fY2xhc3NTb3VyY2U7CiAgICAgICAgIFN0cmluZyBt
X3NvdXJjZVVSTERpcmVjdGl2ZTsKICAgICAgICAgU3RyaW5nIG1fc291cmNlTWFwcGluZ1VSTERp
cmVjdGl2ZTsKLSAgICAgICAgQ29tcGFjdFZhcmlhYmxlTWFwOjpIYW5kbGUgbV9wYXJlbnRTY29w
ZVREWlZhcmlhYmxlczsKKyAgICAgICAgQ29tcGFjdFZhcmlhYmxlTWFwOjpIYW5kbGUgbV9wYXJl
bnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQ7CiAgICAgICAgIFZlY3RvcjxKU1RleHRQb3NpdGlv
bj4gbV9pbnN0YW5jZUZpZWxkTG9jYXRpb25zOwogICAgIH07CiAKQEAgLTIyOSw3ICsyMzEsNyBA
QCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKFZNJiwgU3RydWN0dXJlKiwgY29uc3QgU291cmNlQ29kZSYsIEZ1bmN0aW9uTWV0YWRhdGFO
b2RlKiwgVW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2Ny
aXB0TW9kZSwgT3B0aW9uYWw8Q29tcGFjdFZhcmlhYmxlTWFwOjpIYW5kbGU+LCAgSlNDOjpEZXJp
dmVkQ29udGV4dFR5cGUsIEpTQzo6TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNC
dWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKFZNJiwgU3RydWN0dXJlKiwgY29uc3QgU291cmNlQ29kZSYsIEZ1bmN0aW9uTWV0YWRh
dGFOb2RlKiwgVW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2Vy
U2NyaXB0TW9kZSwgT3B0aW9uYWw8Q29tcGFjdFZhcmlhYmxlTWFwOjpIYW5kbGU+LCAgSlNDOjpE
ZXJpdmVkQ29udGV4dFR5cGUsIEpTQzo6TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZh
dGVCcmFuZFJlcXVpcmVtZW50LCBib29sIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9y
KTsKICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShEZWNvZGVyJiwgY29uc3QgQ2FjaGVk
RnVuY3Rpb25FeGVjdXRhYmxlJik7CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpT
Q2VsbCosIFNsb3RWaXNpdG9yJik7CkBAIC0yNjEsNyArMjYzLDggQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX2lzQ2FjaGVkIDogMTsKICAgICB1bnNpZ25lZCBtX3R5cGVQcm9maWxpbmdTdGFy
dE9mZnNldDsKICAgICB1bnNpZ25lZCBtX3R5cGVQcm9maWxpbmdFbmRPZmZzZXQ7Ci0gICAgdW5z
aWduZWQgbV9wYXJhbWV0ZXJDb3VudDsKKyAgICB1bnNpZ25lZCBtX3BhcmFtZXRlckNvdW50IDog
MzE7CisgICAgdW5zaWduZWQgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA6IDE7CiAgICAgQ29k
ZUZlYXR1cmVzIG1fZmVhdHVyZXM7CiAgICAgU291cmNlUGFyc2VNb2RlIG1fc291cmNlUGFyc2VN
b2RlOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
aW5kZXggNDY3NDBkYThlNTU1N2FmOTU5YTJhZDE4MTM4MTkzNmFhYmQxYmM4MC4uODVhN2RlMjcz
YzU4NzdmZjhhOWM0ZDZkY2Y3ZmRhNjU1NGQzMmU2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTI4
OCw3ICsyODgsNyBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQog
ICAgIHJldHVybiBQYXJzZXJFcnJvcihQYXJzZXJFcnJvcjo6RXJyb3JOb25lKTsKIH0KIAotQnl0
ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHBy
b2dyYW1Ob2RlLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0
PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBWYXJpYWJsZUVu
dmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRUNNQU1vZGUgZWNtYU1vZGUpCitC
eXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBQcm9ncmFtTm9kZSog
cHJvZ3JhbU5vZGUsIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25T
ZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFZhcmlhYmxl
RW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCwgRUNNQU1vZGUgZWNt
YU1vZGUpCiAgICAgOiBCeXRlY29kZUdlbmVyYXRvckJhc2UobWFrZVVuaXF1ZTxVbmxpbmtlZENv
ZGVCbG9ja0dlbmVyYXRvcj4odm0sIGNvZGVCbG9jayksIENvZGVCbG9jazo6bGxpbnRCYXNlbGlu
ZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKQogICAgICwgbV9jb2RlR2VuZXJh
dGlvbk1vZGUoY29kZUdlbmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5vZGUocHJvZ3JhbU5v
ZGUpCkBAIC0zMDQsNyArMzA0LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJh
dG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxpbmtlZFAKICAgICAsIG1f
bmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KHByb2dyYW1Ob2RlLT51c2VzQXJyb3dG
dW5jdGlvbigpIHx8IHByb2dyYW1Ob2RlLT51c2VzRXZhbCgpKQogICAgICwgbV9lY21hTW9kZShl
Y21hTW9kZSkKIHsKLSAgICBBU1NFUlRfVU5VU0VEKHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCAh
cGFyZW50U2NvcGVURFpWYXJpYWJsZXMtPnNpemUoKSk7CisgICAgQVNTRVJUX1VOVVNFRChwYXJl
bnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQsICFwYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1l
bnQtPnNpemUoKSk7CiAKICAgICBtX2NvZGVCbG9jay0+c2V0TnVtUGFyYW1ldGVycygxKTsgLy8g
QWxsb2NhdGUgc3BhY2UgZm9yICJ0aGlzIgogCkBAIC0zMzYsNyArMzM2LDcgQEAgQnl0ZWNvZGVH
ZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1O
b2RlLCBVbmxpbmtlZFAKICAgICB9CiB9CiAKLUJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdl
bmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNv
ZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVU
RFpWYXJpYWJsZXMsIEVDTUFNb2RlIGVjbWFNb2RlKQorQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVj
b2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2Vk
RnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9k
ZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRT
Y29wZVZhcmlhYmxlRW52aXJvbm1lbnQsIEVDTUFNb2RlIGVjbWFNb2RlKQogICAgIDogQnl0ZWNv
ZGVHZW5lcmF0b3JCYXNlKG1ha2VVbmlxdWU8VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I+KHZt
LCBjb2RlQmxvY2spLCBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1Zp
cnR1YWxSZWdpc3RlcnMoKSkKICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2RlKGNvZGVHZW5lcmF0
aW9uTW9kZSkKICAgICAsIG1fc2NvcGVOb2RlKGZ1bmN0aW9uTm9kZSkKQEAgLTM2MCw2ICszNjAs
OCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlv
bk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkK
ICAgICAsIG1fZGVyaXZlZENvbnRleHRUeXBlKGNvZGVCbG9jay0+ZGVyaXZlZENvbnRleHRUeXBl
KCkpCiB7CisgICAgcHVzaFByaXZhdGVBY2Nlc3NOYW1lcygqcGFyZW50U2NvcGVWYXJpYWJsZUVu
dmlyb25tZW50KTsKKwogICAgIFN5bWJvbFRhYmxlKiBmdW5jdGlvblN5bWJvbFRhYmxlID0gU3lt
Ym9sVGFibGU6OmNyZWF0ZShtX3ZtKTsKICAgICBmdW5jdGlvblN5bWJvbFRhYmxlLT5zZXRVc2Vz
Tm9uU3RyaWN0RXZhbChtX3VzZXNOb25TdHJpY3RFdmFsKTsKICAgICBpbnQgc3ltYm9sVGFibGVD
b25zdGFudEluZGV4ID0gMDsKQEAgLTcwNiw4ICs3MDgsMTIgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6
OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVu
bGlua2UKICAgICAgICAgICAgICAgICBjYXNlIENvbnN0cnVjdG9yS2luZDo6Tm9uZToKICAgICAg
ICAgICAgICAgICBjYXNlIENvbnN0cnVjdG9yS2luZDo6QmFzZToKICAgICAgICAgICAgICAgICAg
ICAgZW1pdENyZWF0ZVRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKE9wdGlvbnM6OnVzZVByaXZhdGVNZXRob2RzKCkgJiYgcHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQoKSA9PSBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6TmVlZGVkKQorICAgICAgICAgICAgICAg
ICAgICAgICAgZW1pdEluc3RhbGxQcml2YXRlQnJhbmQoJm1fdGhpc1JlZ2lzdGVyKTsKKwogICAg
ICAgICAgICAgICAgICAgICBpZiAoT3B0aW9uczo6dXNlUHVibGljQ2xhc3NGaWVsZHMoKSkKICAg
ICAgICAgICAgICAgICAgICAgICAgIGVtaXRJbnN0YW5jZUZpZWxkSW5pdGlhbGl6YXRpb25JZk5l
ZWRlZCgmbV90aGlzUmVnaXN0ZXIsICZtX2NhbGxlZVJlZ2lzdGVyLCBtX3Njb3BlTm9kZS0+cG9z
aXRpb24oKSwgbV9zY29wZU5vZGUtPnBvc2l0aW9uKCksIG1fc2NvcGVOb2RlLT5wb3NpdGlvbigp
KTsKKwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIENv
bnN0cnVjdG9yS2luZDo6RXh0ZW5kczoKICAgICAgICAgICAgICAgICAgICAgbW92ZUVtcHR5VmFs
dWUoJm1fdGhpc1JlZ2lzdGVyKTsKQEAgLTc3Miw3ICs3NzgsNyBAQCBCeXRlY29kZUdlbmVyYXRv
cjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwg
VW5saW5rZQogCiAgICAgLy8gQWxsICJhZGRWYXIoKSJzIG5lZWRzIHRvIGhhcHBlbiBiZWZvcmUg
ImluaXRpYWxpemVEZWZhdWx0UGFyYW1ldGVyVmFsdWVzQW5kU2V0dXBGdW5jdGlvblNjb3BlU3Rh
Y2soKSIgaXMgY2FsbGVkCiAgICAgLy8gYmVjYXVzZSBhIGZ1bmN0aW9uJ3MgZGVmYXVsdCBwYXJh
bWV0ZXIgRXhwcmVzc2lvbk5vZGVzIHdpbGwgdXNlIHRlbXBvcmFyeSByZWdpc3RlcnMuCi0gICAg
cHVzaFREWlZhcmlhYmxlcygqcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIFREWkNoZWNrT3B0aW1p
emF0aW9uOjpEb05vdE9wdGltaXplLCBURFpSZXF1aXJlbWVudDo6VW5kZXJURFopOworICAgIHB1
c2hURFpWYXJpYWJsZXMoKnBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCwgVERaQ2hlY2tP
cHRpbWl6YXRpb246OkRvTm90T3B0aW1pemUsIFREWlJlcXVpcmVtZW50OjpVbmRlclREWik7CiAK
ICAgICBSZWY8TGFiZWw+IGNhdGNoTGFiZWwgPSBuZXdMYWJlbCgpOwogICAgIFRyeURhdGEqIHRy
eUZvcm1hbFBhcmFtZXRlcnNEYXRhID0gbnVsbHB0cjsKQEAgLTg0MCw3ICs4NDYsNyBAQCBCeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1
bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIHB1c2hMZXhpY2FsU2NvcGUobV9zY29wZU5vZGUsIFRE
WkNoZWNrT3B0aW1pemF0aW9uOjpPcHRpbWl6ZSwgTmVzdGVkU2NvcGVUeXBlOjpJc05vdE5lc3Rl
ZCwgbnVsbHB0ciwgc2hvdWxkSW5pdGlhbGl6ZUJsb2NrU2NvcGVkRnVuY3Rpb25zKTsKIH0KIAot
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2
YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVH
ZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25t
ZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRUNNQU1vZGUgZWNtYU1vZGUpCitCeXRlY29k
ZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUs
IFVubGlua2VkRXZhbENvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRp
b25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBh
cmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCwgRUNNQU1vZGUgZWNtYU1vZGUpCiAgICAgOiBC
eXRlY29kZUdlbmVyYXRvckJhc2UobWFrZVVuaXF1ZTxVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRv
cj4odm0sIGNvZGVCbG9jayksIENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFj
ZUFzVmlydHVhbFJlZ2lzdGVycygpKQogICAgICwgbV9jb2RlR2VuZXJhdGlvbk1vZGUoY29kZUdl
bmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5vZGUoZXZhbE5vZGUpCkBAIC04NTksNyArODY1
LDggQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5v
ZGUqIGV2YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2QKIHsKICAgICBtX2NvZGVCbG9jay0+c2V0TnVt
UGFyYW1ldGVycygxKTsKIAotICAgIHB1c2hURFpWYXJpYWJsZXMoKnBhcmVudFNjb3BlVERaVmFy
aWFibGVzLCBURFpDaGVja09wdGltaXphdGlvbjo6RG9Ob3RPcHRpbWl6ZSwgVERaUmVxdWlyZW1l
bnQ6OlVuZGVyVERaKTsKKyAgICBwdXNoUHJpdmF0ZUFjY2Vzc05hbWVzKCpwYXJlbnRTY29wZVZh
cmlhYmxlRW52aXJvbm1lbnQpOworICAgIHB1c2hURFpWYXJpYWJsZXMoKnBhcmVudFNjb3BlVmFy
aWFibGVFbnZpcm9ubWVudCwgVERaQ2hlY2tPcHRpbWl6YXRpb246OkRvTm90T3B0aW1pemUsIFRE
WlJlcXVpcmVtZW50OjpVbmRlclREWik7CiAKICAgICBlbWl0RW50ZXIoKTsKIApAQCAtOTA0LDcg
KzkxMSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEV2
YWxOb2RlKiBldmFsTm9kZSwgVW5saW5rZWRFdmFsQ29kCiAgICAgcHVzaExleGljYWxTY29wZSht
X3Njb3BlTm9kZSwgVERaQ2hlY2tPcHRpbWl6YXRpb246Ok9wdGltaXplLCBOZXN0ZWRTY29wZVR5
cGU6OklzTm90TmVzdGVkLCBudWxscHRyLCBzaG91bGRJbml0aWFsaXplQmxvY2tTY29wZWRGdW5j
dGlvbnMpOwogfQogCi1CeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZt
LCBNb2R1bGVQcm9ncmFtTm9kZSogbW9kdWxlUHJvZ3JhbU5vZGUsIFVubGlua2VkTW9kdWxlUHJv
Z3JhbUNvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBj
b2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3Bl
VERaVmFyaWFibGVzLCBFQ01BTW9kZSBlY21hTW9kZSkKK0J5dGVjb2RlR2VuZXJhdG9yOjpCeXRl
Y29kZUdlbmVyYXRvcihWTSYgdm0sIE1vZHVsZVByb2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9k
ZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxD
b2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgVmFyaWFibGVFbnZp
cm9ubWVudCogcGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50LCBFQ01BTW9kZSBlY21hTW9k
ZSkKICAgICA6IEJ5dGVjb2RlR2VuZXJhdG9yQmFzZShtYWtlVW5pcXVlPFVubGlua2VkQ29kZUJs
b2NrR2VuZXJhdG9yPih2bSwgY29kZUJsb2NrKSwgQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2Fs
bGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkpCiAgICAgLCBtX2NvZGVHZW5lcmF0aW9u
TW9kZShjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAgLCBtX3Njb3BlTm9kZShtb2R1bGVQcm9ncmFt
Tm9kZSkKQEAgLTkyMCw3ICs5MjcsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5l
cmF0b3IoVk0mIHZtLCBNb2R1bGVQcm9ncmFtTm9kZSogbW9kdWxlUHJvZ3JhbU5vZAogICAgICwg
bV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQobW9kdWxlUHJvZ3JhbU5vZGUtPnVz
ZXNBcnJvd0Z1bmN0aW9uKCkgfHwgbW9kdWxlUHJvZ3JhbU5vZGUtPnVzZXNFdmFsKCkpCiAgICAg
LCBtX2VjbWFNb2RlKGVjbWFNb2RlKQogewotICAgIEFTU0VSVF9VTlVTRUQocGFyZW50U2NvcGVU
RFpWYXJpYWJsZXMsICFwYXJlbnRTY29wZVREWlZhcmlhYmxlcy0+c2l6ZSgpKTsKKyAgICBBU1NF
UlRfVU5VU0VEKHBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCwgIXBhcmVudFNjb3BlVmFy
aWFibGVFbnZpcm9ubWVudC0+c2l6ZSgpKTsKIAogICAgIFN5bWJvbFRhYmxlKiBtb2R1bGVFbnZp
cm9ubWVudFN5bWJvbFRhYmxlID0gU3ltYm9sVGFibGU6OmNyZWF0ZShtX3ZtKTsKICAgICBtb2R1
bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlLT5zZXRVc2VzTm9uU3RyaWN0RXZhbChtX3VzZXNOb25T
dHJpY3RFdmFsKTsKQEAgLTE4OTcsOCArMTkwNCwxMCBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9y
OjppbnN0YW50aWF0ZUxleGljYWxWYXJpYWJsZXMoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYg
bAogCiAgICAgICAgICAgICAvLyBGSVhNRTogb25seSBkbyB0aGlzIGlmIHRoZXJlIGlzIGFuIGV2
YWwoKSB3aXRoaW4gYSBuZXN0ZWQgc2NvcGUgLS0tIG90aGVyd2lzZSBpdCBpc24ndCBuZWVkZWQu
CiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA2NjYzCi0gICAgICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNQcml2YXRlTmFtZSgpKQotICAg
ICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5hZGRQcml2YXRlTmFtZShlbnRyeS5rZXkuZ2V0KCkp
OworICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVlLmlzUHJpdmF0ZUZpZWxkKCkpCisgICAgICAg
ICAgICAgICAgc3ltYm9sVGFibGUtPmFkZFByaXZhdGVOYW1lKGVudHJ5LmtleS5nZXQoKSwgUHJp
dmF0ZU5hbWVFbnRyeShQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzRGVjbGFyZWQpKTsKKyAg
ICAgICAgICAgIGVsc2UgaWYgKGVudHJ5LnZhbHVlLmlzUHJpdmF0ZU1ldGhvZCgpKQorICAgICAg
ICAgICAgICAgIHN5bWJvbFRhYmxlLT5hZGRQcml2YXRlTmFtZShlbnRyeS5rZXkuZ2V0KCksIFBy
aXZhdGVOYW1lRW50cnkoUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc0RlY2xhcmVkIHwgUHJp
dmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc01ldGhvZCkpOwogICAgICAgICB9CiAgICAgfQogICAg
IHJldHVybiBoYXNDYXB0dXJlZFZhcmlhYmxlczsKQEAgLTI3MTksNyArMjcyOCw3IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwg
UmVnaXN0ZXJJRCogdGhpc1ZhCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi1SZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVn
aXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpCitSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEdldFByaXZhdGVOYW1lKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpCiB7CiAgICAgT3BHZXRQcml2YXRlTmFtZTo6
ZW1pdCh0aGlzLCBkc3QsIGJhc2UsIHByb3BlcnR5KTsKICAgICByZXR1cm4gZHN0OwpAQCAtMjc1
NSwxMiArMjc2NCw0NSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlZmlu
ZVByaXZhdGVGaWVsZChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcgogICAgIHJldHVybiB2YWx1
ZTsKIH0KIAordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZVByaXZhdGVCcmFuZChS
ZWdpc3RlcklEKiBzY29wZSwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQor
eworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjcmVhdGVQcml2YXRlU3ltYm9sID0gbW92ZUxpbmtU
aW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6Y3JlYXRlUHJpdmF0ZVN5bWJv
bCk7CisKKyAgICBDYWxsQXJndW1lbnRzIGFyZ3VtZW50cygqdGhpcywgbnVsbHB0ciwgMCk7Cisg
ICAgZW1pdExvYWQoYXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKKyAg
ICBSZWdpc3RlcklEKiBuZXdTeW1ib2wgPSBlbWl0Q2FsbChmaW5hbERlc3RpbmF0aW9uKG51bGxw
dHIsIGNyZWF0ZVByaXZhdGVTeW1ib2wuZ2V0KCkpLCBjcmVhdGVQcml2YXRlU3ltYm9sLmdldCgp
LCBOb0V4cGVjdGVkRnVuY3Rpb24sIGFyZ3VtZW50cywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90
RW5kLCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOworCisgICAgVmFyaWFibGUgcHJpdmF0ZUJyYW5kVmFy
ID0gdmFyaWFibGUocHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLnByaXZhdGVCcmFuZFBy
aXZhdGVOYW1lKCkpOworCisgICAgZW1pdFB1dFRvU2NvcGUoc2NvcGUsIHByaXZhdGVCcmFuZFZh
ciwgbmV3U3ltYm9sLCBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpJ
bml0aWFsaXphdGlvbik7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJbnN0YWxs
UHJpdmF0ZUJyYW5kKFJlZ2lzdGVySUQqIHRhcmdldCkKK3sKKyAgICBWYXJpYWJsZSBwcml2YXRl
QnJhbmRWYXIgPSB2YXJpYWJsZShwcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkucHJpdmF0
ZUJyYW5kUHJpdmF0ZU5hbWUoKSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVCcmFu
ZFZhclNjb3BlID0gZW1pdFJlc29sdmVTY29wZShudWxscHRyLCBwcml2YXRlQnJhbmRWYXIpOwor
ICAgIFJlZ2lzdGVySUQqIHByaXZhdGVCcmFuZFN5bWJvbCA9IGVtaXRHZXRQcml2YXRlQnJhbmQo
bmV3VGVtcG9yYXJ5KCksIHByaXZhdGVCcmFuZFZhclNjb3BlLmdldCgpKTsKKyAgICBlbWl0RGVm
aW5lUHJpdmF0ZUZpZWxkKHRhcmdldCwgcHJpdmF0ZUJyYW5kU3ltYm9sLCBwcml2YXRlQnJhbmRT
eW1ib2wpOworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFByaXZh
dGVCcmFuZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNjb3BlKQoreworICAgIFZhcmlh
YmxlIHByaXZhdGVCcmFuZFZhciA9IHZhcmlhYmxlKHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFt
ZXMoKS5wcml2YXRlQnJhbmRQcml2YXRlTmFtZSgpKTsKKyAgICByZXR1cm4gZW1pdEdldEZyb21T
Y29wZShkc3QsIHNjb3BlLCBwcml2YXRlQnJhbmRWYXIsIFRocm93SWZOb3RGb3VuZCk7Cit9CisK
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHJpdmF0ZUZpZWxkUHV0KFJlZ2lz
dGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsK
ICAgICBPcFB1dFByaXZhdGVOYW1lOjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwg
UHJpdmF0ZUZpZWxkUHV0S2luZDo6c2V0KCkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIAordm9p
ZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENoZWNrUHJpdmF0ZUJyYW5kKFJlZ2lzdGVySUQqIGJh
c2UsIFJlZ2lzdGVySUQqIGJyYW5kU3ltYm9sKQoreworICAgIC8vIFRoaXMgaXMgZ29pbmcgdG8g
dGhyb3cgVHlwZUVycm9yIGlmIGJyYW5kIGlzIG5vdCBwcmVzZW50CisgICAgZW1pdEdldFByaXZh
dGVOYW1lKG5ld1RlbXBvcmFyeSgpLCBiYXNlLCBicmFuZFN5bWJvbCk7Cit9CisKIHZvaWQgQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRTdXBlclNhbXBsZXJCZWdpbigpCiB7CiAgICAgT3BTdXBlclNh
bXBsZXJCZWdpbjo6ZW1pdCh0aGlzKTsKQEAgLTI4ODksNiArMjkzMSwzNiBAQCB2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjpsaWZ0VERaQ2hlY2tJZlBvc3NpYmxlKGNvbnN0IFZhcmlhYmxlJiB2YXJp
YWJsZSkKICAgICB9CiB9CiAKK2Jvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmlzUHJpdmF0ZU1ldGhv
ZChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3By
aXZhdGVOYW1lc1N0YWNrLnNpemUoKTsgaS0tOyApIHsKKyAgICAgICAgYXV0byYgbWFwID0gbV9w
cml2YXRlTmFtZXNTdGFja1tpXTsKKyAgICAgICAgYXV0byBpdCA9IG1hcC5maW5kKGlkZW50Lmlt
cGwoKSk7CisgICAgICAgIGlmIChpdCAhPSBtYXAuZW5kKCkpCisgICAgICAgICAgICByZXR1cm4g
aXQtPnZhbHVlLmlzTWV0aG9kKCk7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoUHJpdmF0ZUFjY2Vzc05hbWVzKGNvbnN0IFZhcmlh
YmxlRW52aXJvbm1lbnQmIGVudmlyb25tZW50KQoreworICAgIGlmICghZW52aXJvbm1lbnQucHJp
dmF0ZU5hbWVzU2l6ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBWYXJpYWJsZUVudmlyb25t
ZW50OjpQcml2YXRlTmFtZXMgcHJpdmF0ZU5hbWVzTWFwOworICAgIGZvciAoY29uc3QgYXV0byYg
ZW50cnkgOiBlbnZpcm9ubWVudC5wcml2YXRlTmFtZXMoKSkKKyAgICAgICAgcHJpdmF0ZU5hbWVz
TWFwLmFkZChlbnRyeS5rZXksIGVudHJ5LnZhbHVlKTsKKworICAgIG1fcHJpdmF0ZU5hbWVzU3Rh
Y2suYXBwZW5kKFdURk1vdmUocHJpdmF0ZU5hbWVzTWFwKSk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVH
ZW5lcmF0b3I6OnBvcFByaXZhdGVBY2Nlc3NOYW1lcygpCit7CisgICAgQVNTRVJUKG1fcHJpdmF0
ZU5hbWVzU3RhY2suc2l6ZSgpKTsKKyAgICBtX3ByaXZhdGVOYW1lc1N0YWNrLnJlbW92ZUxhc3Qo
KTsKK30KKwogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cHVzaFREWlZhcmlhYmxlcyhjb25zdCBW
YXJpYWJsZUVudmlyb25tZW50JiBlbnZpcm9ubWVudCwgVERaQ2hlY2tPcHRpbWl6YXRpb24gb3B0
aW1pemF0aW9uLCBURFpSZXF1aXJlbWVudCByZXF1aXJlbWVudCkKIHsKICAgICBpZiAoIWVudmly
b25tZW50LnNpemUoKSkKQEAgLTI5MTEsNiArMjk4MywyNCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjpwdXNoVERaVmFyaWFibGVzKGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGVudmlyb25t
ZW50LAogICAgIG1fY2FjaGVkVmFyaWFibGVzVW5kZXJURFogPSB7IH07CiB9CiAKK3ZvaWQgQnl0
ZWNvZGVHZW5lcmF0b3I6OmdldEF2YWlsYWJsZVByaXZhdGVBY2Nlc3NOYW1lcyhWYXJpYWJsZUVu
dmlyb25tZW50JiByZXN1bHQpCit7CisgICAgU21hbGxQdHJTZXQ8VW5pcXVlZFN0cmluZ0ltcGwq
LCAxNj4gZXhjbHVkZWROYW1lczsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3ByaXZhdGVOYW1l
c1N0YWNrLnNpemUoKTsgaS0tOyApIHsKKyAgICAgICAgYXV0byYgbWFwID0gbV9wcml2YXRlTmFt
ZXNTdGFja1tpXTsKKyAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1hcCkgIHsKKyAgICAgICAg
ICAgIGlmIChlbnRyeS52YWx1ZS5pc1ByaXZhdGVNZXRob2RPckFjZXNzb3IoKSkgeworICAgICAg
ICAgICAgICAgIGlmICghZXhjbHVkZWROYW1lcy5jb250YWlucyhlbnRyeS5rZXkuZ2V0KCkpKSB7
CisgICAgICAgICAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gcmVzdWx0LmFkZFByaXZhdGVO
YW1lKGVudHJ5LmtleSk7CisgICAgICAgICAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+
dmFsdWUgPSBlbnRyeS52YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgZXhjbHVkZWROYW1lcy5h
ZGQoZW50cnkua2V5LmdldCgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgICAgICBleGNsdWRlZE5hbWVzLmFkZChlbnRyeS5rZXkuZ2V0KCkpOwor
ICAgICAgICB9CisgICAgfQorfQorCiBPcHRpb25hbDxDb21wYWN0VmFyaWFibGVNYXA6OkhhbmRs
ZT4gQnl0ZWNvZGVHZW5lcmF0b3I6OmdldFZhcmlhYmxlc1VuZGVyVERaKCkKIHsKICAgICBpZiAo
bV9jYWNoZWRWYXJpYWJsZXNVbmRlclREWikgewpAQCAtMjk0NCw2ICszMDM0LDggQEAgT3B0aW9u
YWw8Q29tcGFjdFZhcmlhYmxlTWFwOjpIYW5kbGU+IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZXRWYXJp
YWJsZXNVbmRlclREWigpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBnZXRBdmFpbGFibGVQcml2
YXRlQWNjZXNzTmFtZXMoZW52aXJvbm1lbnQpOworCiAgICAgbV9jYWNoZWRWYXJpYWJsZXNVbmRl
clREWiA9IG1fdm0ubV9jb21wYWN0VmFyaWFibGVNYXAtPmdldChlbnZpcm9ubWVudCk7CiAgICAg
bV9oYXNDYWNoZWRWYXJpYWJsZXNVbmRlclREWiA9ICFlbnZpcm9ubWVudC5pc0VtcHR5KCk7CiAg
ICAgaWYgKCFtX2hhc0NhY2hlZFZhcmlhYmxlc1VuZGVyVERaKQpAQCAtMzEyMiw5ICszMjE0LDkg
QEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdNZXRob2REZWZpbml0aW9u
KFJlZ2lzdGVySUQqIGRzdCwgTWV0aG9kRGUKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCogZHN0LCBDb25zdHJ1
Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLAotICAgIGNv
bnN0IElkZW50aWZpZXImIGVjbWFOYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBjbGFzc1NvdXJjZSwg
TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpCisg
ICAgY29uc3QgSWRlbnRpZmllciYgZWNtYU5hbWUsIGNvbnN0IFNvdXJjZUNvZGUmIGNsYXNzU291
cmNlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
ciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpCiB7Ci0g
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBtX3ZtLmJ1aWx0aW5F
eGVjdXRhYmxlcygpLT5jcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoY29uc3RydWN0b3JLaW5kLCBu
YW1lLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcik7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBtX3ZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jcmVhdGVE
ZWZhdWx0Q29uc3RydWN0b3IoY29uc3RydWN0b3JLaW5kLCBuYW1lLCBuZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplciwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOwogICAgIGV4ZWN1dGFibGUtPnNl
dEludmFsaWRUeXBlUHJvZmlsaW5nT2Zmc2V0cygpOwogICAgIGV4ZWN1dGFibGUtPnNldEVjbWFO
YW1lKGVjbWFOYW1lKTsKICAgICBleGVjdXRhYmxlLT5zZXRDbGFzc1NvdXJjZShjbGFzc1NvdXJj
ZSk7CkBAIC0zMTU0LDcgKzMyNDYsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdE5ld0luc3RhbmNlRmllbGRJbml0aWFsaXplckZ1bmN0aW9uKFJlZ2lzdGVySQogICAgIGNv
bnN0IGJvb2wgYWx3YXlzU3RyaWN0SW5DbGFzcyA9IHRydWU7CiAgICAgRnVuY3Rpb25NZXRhZGF0
YU5vZGUgbWV0YWRhdGEocGFyc2VyQXJlbmEoKSwgSlNUb2tlbkxvY2F0aW9uKCksIEpTVG9rZW5M
b2NhdGlvbigpLCAwLCAwLCAwLCAwLCAwLCBhbHdheXNTdHJpY3RJbkNsYXNzLCBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUsIHN1cGVyQmluZGluZywgMCwgcGFyc2VNb2RlLCBmYWxzZSk7CiAgICAgbWV0
YWRhdGEuZmluaXNoUGFyc2luZyhtX3Njb3BlTm9kZS0+c291cmNlKCksIElkZW50aWZpZXIoKSwg
RnVuY3Rpb25Nb2RlOjpNZXRob2REZWZpbml0aW9uKTsKLSAgICBhdXRvIGluaXRpYWxpemVyID0g
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291
cmNlKCksICZtZXRhZGF0YSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1
bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwgc2NyaXB0
TW9kZSgpLCBXVEZNb3ZlKHZhcmlhYmxlc1VuZGVyVERaKSwgbmV3RGVyaXZlZENvbnRleHRUeXBl
LCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8pOworICAgIGF1dG8gaW5pdGlhbGl6ZXIg
PSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5z
b3VyY2UoKSwgJm1ldGFkYXRhLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGlu
RnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCBzY3Jp
cHRNb2RlKCksIFdURk1vdmUodmFyaWFibGVzVW5kZXJURFopLCBuZXdEZXJpdmVkQ29udGV4dFR5
cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObywgUHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQ6Ok5vbmUpOwogICAgIGluaXRpYWxpemVyLT5zZXRJbnN0YW5jZUZpZWxkTG9jYXRpb25zKFdU
Rk1vdmUoaW5zdGFuY2VGaWVsZExvY2F0aW9ucykpOwogCiAgICAgdW5zaWduZWQgaW5kZXggPSBt
X2NvZGVCbG9jay0+YWRkRnVuY3Rpb25FeHByKGluaXRpYWxpemVyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRl
eCBkMjgyNTM0YTk2YTg0MTU5YzEyOWM1YzE0ZTNhNzhjNzQwMDRiOWZmLi44NjRkMjMxMjRmOTBi
NDEyZDg4YmEyMWY3ZGEyYTNhMmUyZWZjY2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC00MjUsNiArNDI1
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbmVlZHNUb1VwZGF0ZUFycm93RnVu
Y3Rpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlv
bkNvbnRleHQ7IH0KICAgICAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nv
cGVOb2RlLT51c2VzRXZhbCgpOyB9CiAgICAgICAgIGJvb2wgdXNlc1RoaXMoKSBjb25zdCB7IHJl
dHVybiBtX3Njb3BlTm9kZS0+dXNlc1RoaXMoKTsgfQorICAgICAgICBQcml2YXRlQnJhbmRSZXF1
aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJs
b2NrLT5wcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpOyB9CiAgICAgICAgIENvbnN0cnVjdG9yS2lu
ZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+Y29uc3RydWN0
b3JLaW5kKCk7IH0KICAgICAgICAgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZygpIGNvbnN0IHsg
cmV0dXJuIG1fY29kZUJsb2NrLT5zdXBlckJpbmRpbmcoKTsgfQogICAgICAgICBKU1BhcnNlclNj
cmlwdE1vZGUgc2NyaXB0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5zY3JpcHRN
b2RlKCk7IH0KQEAgLTc3NCw3ICs3NzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jdGlvbk1ldGFk
YXRhTm9kZSopOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9u
KFJlZ2lzdGVySUQqIGRzdCwgRnVuY0V4cHJOb2RlKik7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVt
aXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCogZHN0LCBDb25zdHJ1Y3RvcktpbmQs
IGNvbnN0IElkZW50aWZpZXImIG5hbWUsIGNvbnN0IElkZW50aWZpZXImIGVjbWFOYW1lLCBjb25z
dCBTb3VyY2VDb2RlJiBjbGFzc1NvdXJjZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpOwor
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKFJlZ2lzdGVySUQq
IGRzdCwgQ29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBJZGVu
dGlmaWVyJiBlY21hTmFtZSwgY29uc3QgU291cmNlQ29kZSYgY2xhc3NTb3VyY2UsIE5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7CiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXROZXdJbnN0YW5jZUZpZWxkSW5pdGlhbGl6ZXJGdW5jdGlvbihSZWdpc3Rl
cklEKiBkc3QsIFZlY3RvcjxKU1RleHRQb3NpdGlvbj4mJiBpbnN0YW5jZUZpZWxkTG9jYXRpb25z
LCBib29sIGlzRGVyaXZlZCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdBcnJvd0Z1bmN0
aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiwgQXJyb3dGdW5jRXhwck5vZGUqKTsKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdE5ld01ldGhvZERlZmluaXRpb24oUmVnaXN0ZXJJRCogZHN0LCBNZXRo
b2REZWZpbml0aW9uTm9kZSopOwpAQCAtODE1LDcgKzgxNiw2IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGlyZWN0U2V0UHJvdG90eXBlT2YoUmVnaXN0ZXJJRCog
YmFzZSwgUmVnaXN0ZXJJRCogcHJvdG90eXBlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1
dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklE
KiB2YWx1ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRCeVZhbChSZWdpc3RlcklEKiBi
YXNlLCBSZWdpc3RlcklEKiB0aGlzVmFsdWUsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3Rl
cklEKiB2YWx1ZSk7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXREaXJlY3RHZXRCeVZhbChSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5KTsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdERpcmVjdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJl
Z2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXREZWxldGVCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJl
Z2lzdGVySUQqIHByb3BlcnR5KTsKIApAQCAtODIzLDYgKzgyMywxMiBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dEludGVybmFsRmllbGQoUmVnaXN0ZXJJRCog
YmFzZSwgdW5zaWduZWQgaW5kZXgsIFJlZ2lzdGVySUQqIHZhbHVlKTsKICAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdERlZmluZVByaXZhdGVGaWVsZChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklE
KiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
UHJpdmF0ZUZpZWxkUHV0KFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBS
ZWdpc3RlcklEKiB2YWx1ZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRQcml2YXRlTmFt
ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5
KTsKKworICAgICAgICB2b2lkIGVtaXRDcmVhdGVQcml2YXRlQnJhbmQoUmVnaXN0ZXJJRCogZHN0
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOworICAgICAgICB2b2lkIGVt
aXRJbnN0YWxsUHJpdmF0ZUJyYW5kKFJlZ2lzdGVySUQqIHRhcmdldCk7CisgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRHZXRQcml2YXRlQnJhbmQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBz
Y29wZSk7CisgICAgICAgIHZvaWQgZW1pdENoZWNrUHJpdmF0ZUJyYW5kKFJlZ2lzdGVySUQqIGJh
c2UsIFJlZ2lzdGVySUQqIGJyYW5kKTsKIAogICAgICAgICB2b2lkIGVtaXRTdXBlclNhbXBsZXJC
ZWdpbigpOwogICAgICAgICB2b2lkIGVtaXRTdXBlclNhbXBsZXJFbmQoKTsKQEAgLTExNzYsMTAg
KzExODIsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBEZXJpdmVkQ29udGV4dFR5
cGUgbmV3RGVyaXZlZENvbnRleHRUeXBlID0gRGVyaXZlZENvbnRleHRUeXBlOjpOb25lOwogCiAg
ICAgICAgICAgICBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplciA9IG1ldGFkYXRhLT5pc0NvbnN0cnVjdG9yQW5kTmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIoKSA/IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpZZXMgOiBOZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplcjo6Tm87CisgICAgICAgICAgICBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBw
cml2YXRlQnJhbmRSZXF1aXJlbWVudCA9IG1ldGFkYXRhLT5wcml2YXRlQnJhbmRSZXF1aXJlbWVu
dCgpOwogICAgICAgICAgICAgaWYgKFNvdXJjZVBhcnNlTW9kZVNldChTb3VyY2VQYXJzZU1vZGU6
OkFycm93RnVuY3Rpb25Nb2RlLCBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1v
ZGUsIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uQm9keU1vZGUpLmNvbnRhaW5z
KG1ldGFkYXRhLT5wYXJzZU1vZGUoKSkpIHsKICAgICAgICAgICAgICAgICBpZiAoY29uc3RydWN0
b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpFeHRlbmRzIHx8IGlzRGVyaXZlZENvbnN0cnVj
dG9yQ29udGV4dCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIG5ld0Rlcml2ZWRDb250ZXh0VHlw
ZSA9IERlcml2ZWRDb250ZXh0VHlwZTo6RGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dDsKICAgICAg
ICAgICAgICAgICAgICAgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSBtX2NvZGVCbG9jay0+
bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgcHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQgPSBtX2NvZGVCbG9jay0+cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQo
KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAobV9jb2RlQmxv
Y2stPmlzQ2xhc3NDb250ZXh0KCkgfHwgaXNEZXJpdmVkQ2xhc3NDb250ZXh0KCkpCiAgICAgICAg
ICAgICAgICAgICAgIG5ld0Rlcml2ZWRDb250ZXh0VHlwZSA9IERlcml2ZWRDb250ZXh0VHlwZTo6
RGVyaXZlZE1ldGhvZENvbnRleHQ7CkBAIC0xMTk0LDEwICsxMjAyLDExIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhv
ZE1vZGUgJiYgbWV0YWRhdGEtPmNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6
Tm9uZSkKICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RBYmlsaXR5ID0gQ29uc3RydWN0QWJpbGl0
eTo6Q2FuQ29uc3RydWN0OwogCi0gICAgICAgICAgICByZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksIG1ldGFkYXRhLCBp
c0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5v
cm1hbEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCBzY3JpcHRNb2RlKCksIFdURk1vdmUob3B0
aW9uYWxWYXJpYWJsZXNVbmRlclREWiksIG5ld0Rlcml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIpOworICAgICAgICAgICAgcmV0dXJuIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgpLCBtZXRhZGF0YSwg
aXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWRO
b3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwgc2NyaXB0TW9kZSgpLCBXVEZNb3ZlKG9w
dGlvbmFsVmFyaWFibGVzVW5kZXJURFopLCBuZXdEZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyLCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7CiAgICAgICAgIH0K
IAogICAgICAgICBPcHRpb25hbDxDb21wYWN0VmFyaWFibGVNYXA6OkhhbmRsZT4gZ2V0VmFyaWFi
bGVzVW5kZXJURFooKTsKKyAgICAgICAgdm9pZCBnZXRBdmFpbGFibGVQcml2YXRlQWNjZXNzTmFt
ZXMoVmFyaWFibGVFbnZpcm9ubWVudCYpOwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDb25z
dHJ1Y3RWYXJhcmdzKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgUmVnaXN0ZXJJ
RCogdGhpc1JlZ2lzdGVyLCBSZWdpc3RlcklEKiBhcmd1bWVudHMsIFJlZ2lzdGVySUQqIGZpcnN0
RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3RFbmQsIERlYnVnZ2FibGVDYWxsKTsKICAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2FsbE9wPgpAQCAtMTI1MSw2ICsxMjYwLDExIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgbV9sYXN0SW5zdHJ1Y3Rpb24gPSBwcmV2TGFzdEluc3RydWN0aW9uOwogICAg
ICAgICB9CiAKKyAgICAgICAgYm9vbCBpc1ByaXZhdGVNZXRob2QoY29uc3QgSWRlbnRpZmllciYp
OworCisgICAgICAgIHZvaWQgcHVzaFByaXZhdGVBY2Nlc3NOYW1lcyhjb25zdCBWYXJpYWJsZUVu
dmlyb25tZW50Jik7CisgICAgICAgIHZvaWQgcG9wUHJpdmF0ZUFjY2Vzc05hbWVzKCk7CisKICAg
ICBwcml2YXRlOgogICAgICAgICBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBtX2NvZGVH
ZW5lcmF0aW9uTW9kZTsKIApAQCAtMTI2Myw2ICsxMjc3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIFZlY3RvcjxMZXhpY2FsU2NvcGVTdGFja0VudHJ5PiBtX2xleGljYWxTY29wZVN0YWNr
OwogCiAgICAgICAgIFZlY3RvcjxURFpNYXA+IG1fVERaU3RhY2s7CisgICAgICAgIFZlY3RvcjxW
YXJpYWJsZUVudmlyb25tZW50OjpQcml2YXRlTmFtZXM+IG1fcHJpdmF0ZU5hbWVzU3RhY2s7CiAg
ICAgICAgIE9wdGlvbmFsPHNpemVfdD4gbV92YXJTY29wZUxleGljYWxTY29wZVN0YWNrSW5kZXg7
CiAgICAgICAgIHZvaWQgcHVzaFREWlZhcmlhYmxlcyhjb25zdCBWYXJpYWJsZUVudmlyb25tZW50
JiwgVERaQ2hlY2tPcHRpbWl6YXRpb24sIFREWlJlcXVpcmVtZW50KTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDVh
ZDg0OTgwODY0YmJmMjY5Y2M5ZGEzNGRiYjE3OTcxMDE3NmZlMmYuLjA0ZmI2ODI0Mzg5Y2ZkNmE5
Y2YxMDkxZGJmZDk2Nzk5MjM1YzVhY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTU2Myw3ICs1NjMsNyBAQCB2b2lk
IFByb3BlcnR5TGlzdE5vZGU6OmVtaXREZWNsYXJlUHJpdmF0ZUZpZWxkTmFtZXMoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvcgogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjcmVhdGVQcml2YXRl
U3ltYm9sOwogICAgIGZvciAoUHJvcGVydHlMaXN0Tm9kZSogcCA9IHRoaXM7IHA7IHAgPSBwLT5t
X25leHQpIHsKICAgICAgICAgY29uc3QgUHJvcGVydHlOb2RlJiBub2RlID0gKnAtPm1fbm9kZTsK
LSAgICAgICAgaWYgKG5vZGUudHlwZSgpICYgUHJvcGVydHlOb2RlOjpQcml2YXRlKSB7CisgICAg
ICAgIGlmIChub2RlLnR5cGUoKSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0ZUZpZWxkKSB7CiAgICAg
ICAgICAgICBpZiAoIWNyZWF0ZVByaXZhdGVTeW1ib2wpCiAgICAgICAgICAgICAgICAgY3JlYXRl
UHJpdmF0ZVN5bWJvbCA9IGdlbmVyYXRvci5tb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBM
aW5rVGltZUNvbnN0YW50OjpjcmVhdGVQcml2YXRlU3ltYm9sKTsKIApAQCAtNTg5LDcgKzU4OSw3
IEBAIFJlZ2lzdGVySUQqIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlCiAgICAgICAgIGlmIChwLT5pc0NvbXB1dGVkQ2xh
c3NGaWVsZCgpKQogICAgICAgICAgICAgZW1pdFNhdmVDb21wdXRlZEZpZWxkTmFtZShnZW5lcmF0
b3IsICpwLT5tX25vZGUpOwogCi0gICAgICAgIGlmIChwLT5pc0luc3RhbmNlQ2xhc3NGaWVsZCgp
KSB7CisgICAgICAgIGlmIChwLT5pc0luc3RhbmNlQ2xhc3NGaWVsZCgpICYmICEocC0+bV9ub2Rl
LT50eXBlKCkgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGVNZXRob2QpKSB7CiAgICAgICAgICAgICBB
U1NFUlQoaW5zdGFuY2VGaWVsZExvY2F0aW9ucyk7CiAgICAgICAgICAgICBpbnN0YW5jZUZpZWxk
TG9jYXRpb25zLT5hcHBlbmQocC0+cG9zaXRpb24oKSk7CiAgICAgICAgICAgICBjb250aW51ZTsK
QEAgLTc0NSw3ICs3NDUsNyBAQCBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZQogdm9pZCBQcm9wZXJ0
eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBuZXdPYmosIFByb3BlcnR5Tm9kZSYgbm9kZSkKIHsKICAgICAv
LyBQcml2YXRlIGZpZWxkcyBhcmUgaGFuZGxlZCBpbiB0aGUgc3ludGhldGljIGluc3RhbmNlRmll
bGRJbml0aWFsaXplciBmdW5jdGlvbiwgbm90IGhlcmUuCi0gICAgQVNTRVJUKCEobm9kZS50eXBl
KCkgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGUpKTsKKyAgICBBU1NFUlQoIShub2RlLnR5cGUoKSAm
IFByb3BlcnR5Tm9kZTo6UHJpdmF0ZUZpZWxkKSk7CiAKICAgICBpZiAoUHJvcGVydHlOb2RlOjpp
c1VuZGVyc2NvcmVQcm90b1NldHRlcihnZW5lcmF0b3Iudm0oKSwgbm9kZSkpIHsKICAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHByb3RvdHlwZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShub2RlLm1f
YXNzaWduKTsKQEAgLTc3MCw2ICs3NzAsMTQgQEAgdm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0
UHV0Q29uc3RhbnRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWcKIAog
ICAgIGlmIChub2RlLmlzQ2xhc3NQcm9wZXJ0eSgpKSB7CiAgICAgICAgIEFTU0VSVChub2RlLm5l
ZWRzU3VwZXJCaW5kaW5nKCkpOworCisgICAgICAgIGlmIChub2RlLnR5cGUoKSAmIFByb3BlcnR5
Tm9kZTo6UHJpdmF0ZU1ldGhvZCkgeworICAgICAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJh
dG9yLnZhcmlhYmxlKCpub2RlLm5hbWUoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1
dFRvU2NvcGUoZ2VuZXJhdG9yLnNjb3BlUmVnaXN0ZXIoKSwgdmFyLCB2YWx1ZS5nZXQoKSwgRG9O
b3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6Q29uc3RJbml0aWFsaXphdGlv
bik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gcHJvcGVydHlOYW1lUmVnaXN0ZXI7CiAgICAgICAgIGlmIChub2RlLm5hbWUoKSkK
ICAgICAgICAgICAgIHByb3BlcnR5TmFtZSA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCAq
bm9kZS5uYW1lKCkpOwogCkBAIC04OTEsMTQgKzg5OSwyNCBAQCBSZWdpc3RlcklEKiBEb3RBY2Nl
c3Nvck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcgogCiBSZWdpc3RlcklEKiBCYXNlRG90Tm9kZTo6ZW1pdEdldFByb3BlcnR5VmFsdWUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBi
YXNlLCBSZWZQdHI8UmVnaXN0ZXJJRD4mIHRoaXNWYWx1ZSkKIHsKLSAgICBpZiAoaXNQcml2YXRl
RmllbGQoKSkgeworICAgIGlmIChpc1ByaXZhdGVNZW1iZXIoKSkgeworICAgICAgICBpZiAoZ2Vu
ZXJhdG9yLmlzUHJpdmF0ZU1ldGhvZChpZGVudGlmaWVyKCkpKSB7CisgICAgICAgICAgICBWYXJp
YWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnRpZmllcigpKTsKKyAgICAgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51
bGxwdHIsIHZhcik7CisKKyAgICAgICAgICAgIFJlZ2lzdGVySUQqIHByaXZhdGVCcmFuZFN5bWJv
bCA9IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZUJyYW5kKGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KSwgc2NvcGUuZ2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDaGVja1ByaXZhdGVC
cmFuZChiYXNlLCBwcml2YXRlQnJhbmRTeW1ib2wpOworCisgICAgICAgICAgICByZXR1cm4gZ2Vu
ZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZHN0LCBzY29wZS5nZXQoKSwgdmFyLCBUaHJvd0lmTm90
Rm91bmQpOworICAgICAgICB9CisKICAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZh
cmlhYmxlKG1faWRlbnQpOwogICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCF2YXIubG9jYWwo
KSwgIlByaXZhdGUgRmllbGQgbmFtZXMgbXVzdCBiZSBzdG9yZWQgaW4gY2FwdHVyZWQgdmFyaWFi
bGVzIik7CiAKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVt
aXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHByaXZhdGVOYW1lID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICBnZW5lcmF0
b3IuZW1pdEdldEZyb21TY29wZShwcml2YXRlTmFtZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwg
RG9Ob3RUaHJvd0lmTm90Rm91bmQpOwotICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXREaXJl
Y3RHZXRCeVZhbChkc3QsIGJhc2UsIHByaXZhdGVOYW1lLmdldCgpKTsKKyAgICAgICAgcmV0dXJu
IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZU5hbWUoZHN0LCBiYXNlLCBwcml2YXRlTmFtZS5nZXQo
KSk7CiAgICAgfQogCiAgICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkgewpAQCAtOTE4LDcg
KzkzNiwxOCBAQCBSZWdpc3RlcklEKiBCYXNlRG90Tm9kZTo6ZW1pdEdldFByb3BlcnR5VmFsdWUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaQogCiBSZWdpc3RlcklEKiBCYXNlRG90
Tm9kZTo6ZW1pdFB1dFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZWZQdHI8UmVnaXN0ZXJJRD4mIHRoaXNW
YWx1ZSkKIHsKLSAgICBpZiAoaXNQcml2YXRlRmllbGQoKSkgeworICAgIGlmIChpc1ByaXZhdGVN
ZW1iZXIoKSkgeworICAgICAgICBhdXRvIGlkZW50aWZpZXJOYW1lID0gaWRlbnRpZmllcigpOwor
ICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzUHJpdmF0ZU1ldGhvZChpZGVudGlmaWVyTmFtZSkpIHsK
KyAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudGlmaWVy
TmFtZSk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3Iu
ZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOworCisgICAgICAgICAgICBSZWdpc3RlcklE
KiBwcml2YXRlQnJhbmRTeW1ib2wgPSBnZW5lcmF0b3IuZW1pdEdldFByaXZhdGVCcmFuZChnZW5l
cmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0Q2hlY2tQcml2YXRlQnJhbmQoYmFzZSwgcHJpdmF0ZUJyYW5kU3ltYm9sKTsKKworICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvd1R5cGVFcnJvcigiVHJ5aW5nIHRvIGFjY2VzcyBh
IG5vdCBkZWZpbmVkIHByaXZhdGUgc2V0dGVyIik7CisgICAgICAgIH0KKwogICAgICAgICBWYXJp
YWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUobV9pZGVudCk7CiAgICAgICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UoIXZhci5sb2NhbCgpLCAiUHJpdmF0ZSBGaWVsZCBuYW1lcyBtdXN0IGJlIHN0
b3JlZCBpbiBjYXB0dXJlZCB2YXJpYWJsZXMiKTsKIApAQCAtMTA3MiwxMiArMTEwMSwxNCBAQCBS
ZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZQogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUaGlz
VG9BcnJvd0Z1bmN0aW9uQ29udGV4dFNjb3BlKCk7CiAKICAgICAgICAgLy8gSW5pdGlhbGl6ZSBp
bnN0YW5jZSBmaWVsZHMgYWZ0ZXIgc3VwZXItY2FsbC4KKyAgICAgICAgaWYgKE9wdGlvbnM6OnVz
ZVByaXZhdGVNZXRob2RzKCkgJiYgZ2VuZXJhdG9yLnByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkg
PT0gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5lZWRlZCkKKyAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0SW5zdGFsbFByaXZhdGVCcmFuZChnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkpOworCiAg
ICAgICAgIGlmIChPcHRpb25zOjp1c2VQdWJsaWNDbGFzc0ZpZWxkcygpICYmIGdlbmVyYXRvci5u
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpID09IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
OjpZZXMpIHsKICAgICAgICAgICAgIEFTU0VSVChnZW5lcmF0b3IuaXNDb25zdHJ1Y3RvcigpIHx8
IGdlbmVyYXRvci5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSk7CiAgICAgICAgICAgICBm
dW5jID0gZ2VuZXJhdG9yLmVtaXRMb2FkRGVyaXZlZENvbnN0cnVjdG9yKCk7CiAgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdEluc3RhbmNlRmllbGRJbml0aWFsaXphdGlvbklmTmVlZGVkKGdlbmVy
YXRvci50aGlzUmVnaXN0ZXIoKSwgZnVuYy5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKICAgICAgICAgfQotCiAgICAgICAgIHJldHVybiByZXQ7CiAgICAgfQogCkBA
IC0yMjQyLDE0ICsyMjczLDE0IEBAIFJlZ2lzdGVySUQqIFBvc3RmaXhOb2RlOjplbWl0RG90KEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIAogICAgIGdlbmVy
YXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZG90QWNjZXNzb3ItPmRpdm90KCksIGRvdEFjY2Vzc29y
LT5kaXZvdFN0YXJ0KCksIGRvdEFjY2Vzc29yLT5kaXZvdEVuZCgpKTsKIAotICAgIGlmIChkb3RB
Y2Nlc3Nvci0+aXNQcml2YXRlRmllbGQoKSkgeworICAgIGlmIChkb3RBY2Nlc3Nvci0+aXNQcml2
YXRlTWVtYmVyKCkpIHsKICAgICAgICAgQVNTRVJUKCFiYXNlSXNTdXBlcik7CiAgICAgICAgIFZh
cmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudCk7CiAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZh
cik7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0
ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsKIAot
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdERpcmVjdEdl
dEJ5VmFsKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUu
Z2V0KCkpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1p
dEdldFByaXZhdGVOYW1lKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgYmFzZS5nZXQoKSwgcHJp
dmF0ZU5hbWUuZ2V0KCkpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gb2xkVmFsdWUgPSBl
bWl0UG9zdEluY09yRGVjKGdlbmVyYXRvciwgZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3Qp
LCB2YWx1ZS5nZXQoKSwgbV9vcGVyYXRvcik7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVz
c2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRQcml2YXRlRmllbGRQdXQoYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCks
IHZhbHVlLmdldCgpKTsKQEAgLTI0ODEsMTQgKzI1MTIsMTQgQEAgUmVnaXN0ZXJJRCogUHJlZml4
Tm9kZTo6ZW1pdERvdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
c3QpCiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRvdEFjY2Vzc29yLT5kaXZv
dCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RTdGFydCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RFbmQoKSk7
CiAgICAgUmVnaXN0ZXJJRCogdmFsdWU7Ci0gICAgaWYgKGRvdEFjY2Vzc29yLT5pc1ByaXZhdGVG
aWVsZCgpKSB7CisgICAgaWYgKGRvdEFjY2Vzc29yLT5pc1ByaXZhdGVNZW1iZXIoKSkgewogICAg
ICAgICBBU1NFUlQoIWJhc2VOb2RlLT5pc1N1cGVyTm9kZSgpKTsKICAgICAgICAgVmFyaWFibGUg
dmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGlkZW50KTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKICAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJhdG9yLm5ld1RlbXBv
cmFyeSgpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShwcml2YXRlTmFtZS5n
ZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQpOwogCi0gICAgICAg
IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXREaXJlY3RHZXRCeVZhbChwcm9wRHN0LmdldCgpLCBiYXNl
LmdldCgpLCBwcml2YXRlTmFtZS5nZXQoKSk7CisgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVt
aXRHZXRQcml2YXRlTmFtZShwcm9wRHN0LmdldCgpLCBiYXNlLmdldCgpLCBwcml2YXRlTmFtZS5n
ZXQoKSk7CiAgICAgICAgIGVtaXRJbmNPckRlYyhnZW5lcmF0b3IsIHZhbHVlLCBtX29wZXJhdG9y
KTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0
YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdFByaXZhdGVGaWVsZFB1
dChiYXNlLmdldCgpLCBwcml2YXRlTmFtZS5nZXQoKSwgdmFsdWUpOwpAQCAtNDg4MSw2ICs0OTEy
LDEzIEBAIFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAgICAgaWYgKG1fbmVlZHNMZXhpY2FsU2Nv
cGUpCiAgICAgICAgIGdlbmVyYXRvci5wdXNoTGV4aWNhbFNjb3BlKHRoaXMsIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpURFpDaGVja09wdGltaXphdGlvbjo6T3B0aW1pemUsIEJ5dGVjb2RlR2VuZXJhdG9y
OjpOZXN0ZWRTY29wZVR5cGU6OklzTmVzdGVkKTsKIAorICAgIGJvb2wgaGFzUHJpdmF0ZU5hbWVz
ID0gISFtX2xleGljYWxWYXJpYWJsZXMucHJpdmF0ZU5hbWVzU2l6ZSgpOworICAgIGJvb2wgc2hv
dWxkRW1pdFByaXZhdGVCcmFuZCA9IG1fbGV4aWNhbFZhcmlhYmxlcy5oYXNQcml2YXRlQWNjZXNz
KCk7CisgICAgaWYgKGhhc1ByaXZhdGVOYW1lcykKKyAgICAgICAgZ2VuZXJhdG9yLnB1c2hQcml2
YXRlQWNjZXNzTmFtZXMobV9sZXhpY2FsVmFyaWFibGVzKTsKKyAgICBpZiAoc2hvdWxkRW1pdFBy
aXZhdGVCcmFuZCkKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRDcmVhdGVQcml2YXRlQnJhbmQoZ2Vu
ZXJhdG9yLnNjb3BlUmVnaXN0ZXIoKSwgbV9wb3NpdGlvbiwgbV9wb3NpdGlvbiwgbV9wb3NpdGlv
bik7CisKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3VwZXJjbGFzczsKICAgICBpZiAobV9jbGFz
c0hlcml0YWdlKSB7CiAgICAgICAgIHN1cGVyY2xhc3MgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5
KCk7CkBAIC00ODkxLDE3ICs0OTI5LDE4IEBAIFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAgICAg
Ym9vbCBuZWVkc0hvbWVPYmplY3QgPSBmYWxzZTsKIAogICAgIGF1dG8gbmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIgPSB0aGlzLT5oYXNJbnN0YW5jZUZpZWxkcygpID8gTmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXI6OlllcyA6IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObzsKLQorICAg
IGF1dG8gcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBzaG91bGRFbWl0UHJpdmF0ZUJyYW5kID8g
UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5lZWRlZCA6IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50
OjpOb25lOwogICAgIGlmIChtX2NvbnN0cnVjdG9yRXhwcmVzc2lvbikgewogICAgICAgICBBU1NF
UlQobV9jb25zdHJ1Y3RvckV4cHJlc3Npb24tPmlzRnVuY0V4cHJOb2RlKCkpOwogICAgICAgICBG
dW5jdGlvbk1ldGFkYXRhTm9kZSogbWV0YWRhdGEgPSBzdGF0aWNfY2FzdDxGdW5jRXhwck5vZGUq
PihtX2NvbnN0cnVjdG9yRXhwcmVzc2lvbiktPm1ldGFkYXRhKCk7CiAgICAgICAgIG1ldGFkYXRh
LT5zZXRFY21hTmFtZShlY21hTmFtZSgpKTsKICAgICAgICAgbWV0YWRhdGEtPnNldENsYXNzU291
cmNlKG1fY2xhc3NTb3VyY2UpOwogICAgICAgICBtZXRhZGF0YS0+c2V0TmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIobmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPT0gTmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXI6Olllcyk7CisgICAgICAgIG1ldGFkYXRhLT5zZXRQcml2YXRlQnJhbmRSZXF1
aXJlbWVudChwcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7CiAgICAgICAgIGNvbnN0cnVjdG9yID0g
Z2VuZXJhdG9yLmVtaXROb2RlKGNvbnN0cnVjdG9yLmdldCgpLCBtX2NvbnN0cnVjdG9yRXhwcmVz
c2lvbik7CiAgICAgICAgIG5lZWRzSG9tZU9iamVjdCA9IG1fY2xhc3NIZXJpdGFnZSB8fCBtZXRh
ZGF0YS0+c3VwZXJCaW5kaW5nKCkgPT0gU3VwZXJCaW5kaW5nOjpOZWVkZWQ7CiAgICAgfSBlbHNl
Ci0gICAgICAgIGNvbnN0cnVjdG9yID0gZ2VuZXJhdG9yLmVtaXROZXdEZWZhdWx0Q29uc3RydWN0
b3IoY29uc3RydWN0b3IuZ2V0KCksIG1fY2xhc3NIZXJpdGFnZSA/IENvbnN0cnVjdG9yS2luZDo6
RXh0ZW5kcyA6IENvbnN0cnVjdG9yS2luZDo6QmFzZSwgbV9uYW1lLCBlY21hTmFtZSgpLCBtX2Ns
YXNzU291cmNlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcik7CisgICAgICAgIGNvbnN0cnVj
dG9yID0gZ2VuZXJhdG9yLmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoY29uc3RydWN0b3IuZ2V0
KCksIG1fY2xhc3NIZXJpdGFnZSA/IENvbnN0cnVjdG9yS2luZDo6RXh0ZW5kcyA6IENvbnN0cnVj
dG9yS2luZDo6QmFzZSwgbV9uYW1lLCBlY21hTmFtZSgpLCBtX2NsYXNzU291cmNlLCBuZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplciwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOwogCiAgICAgY29u
c3QgYXV0byYgcHJvcGVydHlOYW1lcyA9IGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCk7CiAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHByb3RvdHlwZSA9IGdlbmVyYXRvci5lbWl0TmV3T2JqZWN0KGdl
bmVyYXRvci5uZXdUZW1wb3JhcnkoKSk7CkBAIC00OTY4LDYgKzUwMDcsOSBAQCBSZWdpc3RlcklE
KiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRAogICAgICAgICBnZW5lcmF0b3IucG9wTGV4aWNhbFNjb3BlKHRoaXMpOwog
ICAgIH0KIAorICAgIGlmIChoYXNQcml2YXRlTmFtZXMpCisgICAgICAgIGdlbmVyYXRvci5wb3BQ
cml2YXRlQWNjZXNzTmFtZXMoKTsKKwogICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShnZW5lcmF0
b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIGNvbnN0cnVjdG9yLmdldCgpKSwgY29uc3RydWN0b3Iu
Z2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXJDYWxsRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyQ2FsbEZyYW1lLmNwcAppbmRleCA1ZjI5YWQ3NjM1MTYzN2RhMWE0Yzg4ZmVhY2RlNzk0
YjE5ODc4NWFmLi5jZDUzMjU3NjQ3NWQ4Mzc2OGEwNWIxYzI5ZmFmMGM3YjkxM2RkYTBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFt
ZS5jcHAKQEAgLTI2Miw3ICsyNjIsNyBAQCBKU1ZhbHVlIERlYnVnZ2VyQ2FsbEZyYW1lOjpldmFs
dWF0ZVdpdGhTY29wZUV4dGVuc2lvbihjb25zdCBTdHJpbmcmIHNjcmlwdCwgSlNPYgogICAgIEpT
U2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFooc2NvcGUoKS0+anNTY29wZSgp
LCB2YXJpYWJsZXNVbmRlclREWik7CiAKICAgICBFQ01BTW9kZSBlY21hTW9kZSA9IGNvZGVCbG9j
ay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5TdHJpY3RDb250ZXh0KCkgPyBFQ01BTW9kZTo6c3Ry
aWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCk7Ci0gICAgYXV0byogZXZhbCA9IERpcmVjdEV2YWxF
eGVjdXRhYmxlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtYWtlU291cmNlKHNjcmlwdCwgY2FsbEZy
YW1lLT5jYWxsZXJTb3VyY2VPcmlnaW4odm0pKSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9j
aygpLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygp
LT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJs
b2NrKCktPmlzQXJyb3dGdW5jdGlvbigpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5p
c0luc2lkZU9yZGluYXJ5RnVuY3Rpb24oKSwgZXZhbENvbnRleHRUeXBlLCAmdmFyaWFibGVzVW5k
ZXJURFosIGVjbWFNb2RlKTsKKyAgICBhdXRvKiBldmFsID0gRGlyZWN0RXZhbEV4ZWN1dGFibGU6
OmNyZWF0ZShnbG9iYWxPYmplY3QsIG1ha2VTb3VyY2Uoc2NyaXB0LCBjYWxsRnJhbWUtPmNhbGxl
clNvdXJjZU9yaWdpbih2bSkpLCBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmRlcml2
ZWRDb250ZXh0VHlwZSgpLCBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPm5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyKCksIGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+cHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5p
c0Fycm93RnVuY3Rpb24oKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJbnNpZGVP
cmRpbmFyeUZ1bmN0aW9uKCksIGV2YWxDb250ZXh0VHlwZSwgJnZhcmlhYmxlc1VuZGVyVERaLCBl
Y21hTW9kZSk7CiAgICAgaWYgKFVOTElLRUxZKGNhdGNoU2NvcGUuZXhjZXB0aW9uKCkpKSB7CiAg
ICAgICAgIGV4Y2VwdGlvbiA9IGNhdGNoU2NvcGUuZXhjZXB0aW9uKCk7CiAgICAgICAgIGNhdGNo
U2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggZTcyMDdlYTgzMjZiMGVmOWM3YmQ4NDI1NzkyOWE2
Y2RhM2M3MTk3Mi4uOTMxODEyOGNkNmQzYzNlMmY2YWE0ZTk3MWU4MzRlNDA2NzJjN2Q1MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAg
LTQ3MzMsOCArNDczMyw5IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldFByaXZhdGVO
YW1lQnlJZCgKICAgICBBU1NFUlQoIWdldEJ5U3RhdHVzLmlzQ3VzdG9tKCkpOwogICAgIEFTU0VS
VCghZ2V0QnlTdGF0dXMubWFrZXNDYWxscygpKTsKICAgICBpZiAoIWdldEJ5U3RhdHVzLmlzU2lt
cGxlKCkgfHwgIWdldEJ5U3RhdHVzLm51bVZhcmlhbnRzKCkgfHwgIU9wdGlvbnM6OnVzZUFjY2Vz
c0lubGluaW5nKCkpIHsKLSAgICAgICAgc2V0KGRlc3RpbmF0aW9uLAotICAgICAgICAgICAgYWRk
VG9HcmFwaChHZXRQcml2YXRlTmFtZUJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKHBy
ZWRpY3Rpb24pLCBiYXNlLCBudWxscHRyKSk7CisgICAgICAgIE5vZGUqIG5vZGUgPSBhZGRUb0dy
YXBoKEdldFByaXZhdGVOYW1lQnlJZCwgT3BJbmZvKGlkZW50aWZpZXIpLCBPcEluZm8ocHJlZGlj
dGlvbiksIGJhc2UsIG51bGxwdHIpOworICAgICAgICBpZiAoZGVzdGluYXRpb24uaXNWYWxpZCgp
KQorICAgICAgICAgICAgc2V0KGRlc3RpbmF0aW9uLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtNDc0Miw4ICs0NzQzLDkgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
R2V0UHJpdmF0ZU5hbWVCeUlkKAogICAgICAgICBpZiAoIW1fZ3JhcGgubV9wbGFuLmlzRlRMKCkK
ICAgICAgICAgICAgIHx8ICFPcHRpb25zOjp1c2VQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nKCkK
ICAgICAgICAgICAgIHx8IGdldEJ5U3RhdHVzLm51bVZhcmlhbnRzKCkgPiBPcHRpb25zOjptYXhQ
b2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlzdFNpemUoKSkgewotICAgICAgICAgICAgc2V0KGRl
c3RpbmF0aW9uLAotICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoR2V0UHJpdmF0ZU5hbWVCeUlk
LCBPcEluZm8oaWRlbnRpZmllciksIE9wSW5mbyhwcmVkaWN0aW9uKSwgYmFzZSwgbnVsbHB0cikp
OworICAgICAgICAgICAgTm9kZSogbm9kZSA9IGFkZFRvR3JhcGgoR2V0UHJpdmF0ZU5hbWVCeUlk
LCBPcEluZm8oaWRlbnRpZmllciksIE9wSW5mbyhwcmVkaWN0aW9uKSwgYmFzZSwgbnVsbHB0cik7
CisgICAgICAgICAgICBpZiAoZGVzdGluYXRpb24uaXNWYWxpZCgpKQorICAgICAgICAgICAgICAg
IHNldChkZXN0aW5hdGlvbiwgbm9kZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IApAQCAtNDc2Niw4ICs0NzY4LDkgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0UHJp
dmF0ZU5hbWVCeUlkKAogICAgICAgICBNdWx0aUdldEJ5T2Zmc2V0RGF0YSogZGF0YSA9IG1fZ3Jh
cGgubV9tdWx0aUdldEJ5T2Zmc2V0RGF0YS5hZGQoKTsKICAgICAgICAgZGF0YS0+Y2FzZXMgPSBj
YXNlczsKICAgICAgICAgZGF0YS0+aWRlbnRpZmllck51bWJlciA9IGlkZW50aWZpZXJOdW1iZXI7
Ci0gICAgICAgIHNldChkZXN0aW5hdGlvbiwKLSAgICAgICAgICAgIGFkZFRvR3JhcGgoTXVsdGlH
ZXRCeU9mZnNldCwgT3BJbmZvKGRhdGEpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UpKTsKKyAg
ICAgICAgTm9kZSogbm9kZSA9IGFkZFRvR3JhcGgoTXVsdGlHZXRCeU9mZnNldCwgT3BJbmZvKGRh
dGEpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UpOworICAgICAgICBpZiAoZGVzdGluYXRpb24u
aXNWYWxpZCgpKQorICAgICAgICAgICAgc2V0KGRlc3RpbmF0aW9uLCBub2RlKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtNDc4MSw4ICs0Nzg0LDkgQEAgdm9pZCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlR2V0UHJpdmF0ZU5hbWVCeUlkKAogCiAgICAgTm9kZSogbG9hZGVkVmFsdWUgPSBs
b2FkKHByZWRpY3Rpb24sIGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIHZhcmlhbnQpOwogICAgIGlm
ICghbG9hZGVkVmFsdWUpIHsKLSAgICAgICAgc2V0KGRlc3RpbmF0aW9uLAotICAgICAgICAgICAg
YWRkVG9HcmFwaChHZXRQcml2YXRlTmFtZUJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZv
KHByZWRpY3Rpb24pLCBiYXNlLCBudWxscHRyKSk7CisgICAgICAgIE5vZGUqIG5vZGUgPSBhZGRU
b0dyYXBoKEdldFByaXZhdGVOYW1lQnlJZCwgT3BJbmZvKGlkZW50aWZpZXIpLCBPcEluZm8ocHJl
ZGljdGlvbiksIGJhc2UsIG51bGxwdHIpOworICAgICAgICBpZiAoZGVzdGluYXRpb24uaXNWYWxp
ZCgpKQorICAgICAgICAgICAgc2V0KGRlc3RpbmF0aW9uLCBub2RlKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtNDc5MCw3ICs0Nzk0LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlR2V0UHJpdmF0ZU5hbWVCeUlkKAogICAgICAgICBtX2dyYXBoLmNvbXBpbGF0aW9uKCktPm5v
dGljZUlubGluZWRHZXRCeUlkKCk7CiAKICAgICBBU1NFUlQoIXZhcmlhbnQuY2FsbExpbmtTdGF0
dXMoKSk7Ci0gICAgaWYgKHZhcmlhbnQuaW50cmluc2ljKCkgPT0gTm9JbnRyaW5zaWMpCisgICAg
aWYgKHZhcmlhbnQuaW50cmluc2ljKCkgPT0gTm9JbnRyaW5zaWMgJiYgZGVzdGluYXRpb24uaXNW
YWxpZCgpKQogICAgICAgICBzZXQoZGVzdGluYXRpb24sIGxvYWRlZFZhbHVlKTsKIH0KIApAQCAt
NjQ0OCwxMiArNjQ1MiwxNiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2ln
bmVkIGxpbWl0KQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAorICAgICAgICAg
ICAgLy8gU2luY2Ugd2UgZG9uJ3QgdXNlIHRoZSByZXR1cm4gb2YgcHJpdmF0ZSBicmFuZCBjaGVj
aywgd2UgZG9uJ3QgbmVlZCB0byBzZXQgcmVzdWx0IGhlcmUuCisgICAgICAgICAgICAvLyBUaGlz
IGhlbHBzIHVzIERDRSBHZXRCeU9mZnNldCBmb3IgdGhpcyBjYXNlLgorICAgICAgICAgICAgVmly
dHVhbFJlZ2lzdGVyIGRlc3RpbmF0aW9uID0gbV9ncmFwaC5tX3ByaXZhdGVCcmFuZEFjY2Vzcy5j
b250YWlucyhwcm9wZXJ0eSkgPyBWaXJ0dWFsUmVnaXN0ZXIoKSA6IGJ5dGVjb2RlLm1fZHN0Owog
ICAgICAgICAgICAgaWYgKGNvbXBpbGVTaW5nbGVJZGVudGlmaWVyKQotICAgICAgICAgICAgICAg
IGhhbmRsZUdldFByaXZhdGVOYW1lQnlJZChieXRlY29kZS5tX2RzdCwgcHJlZGljdGlvbiwgYmFz
ZSwgaWRlbnRpZmllciwgaWRlbnRpZmllck51bWJlciwgZ2V0QnlTdGF0dXMpOworICAgICAgICAg
ICAgICAgIGhhbmRsZUdldFByaXZhdGVOYW1lQnlJZChkZXN0aW5hdGlvbiwgcHJlZGljdGlvbiwg
YmFzZSwgaWRlbnRpZmllciwgaWRlbnRpZmllck51bWJlciwgZ2V0QnlTdGF0dXMpOwogICAgICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGFkZFRvR3JhcGgoR2V0
UHJpdmF0ZU5hbWUsIE9wSW5mbygpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UsIHByb3BlcnR5
KTsKICAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHNl
dChieXRlY29kZS5tX2RzdCwgbm9kZSk7CisgICAgICAgICAgICAgICAgaWYgKGRlc3RpbmF0aW9u
LmlzVmFsaWQoKSkKKyAgICAgICAgICAgICAgICAgICAgc2V0KGRlc3RpbmF0aW9uLCBub2RlKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9wcml2YXRlX25h
bWUpOwogICAgICAgICB9CkBAIC03NzI5LDEyICs3NzM3LDIxIEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAgICAgLy8gcHJlZGlj
dGlvbiwgd2UnZCBvdGhlcndpc2UgdGhpbmsgdGhhdCBpdCBoYXMgdG8gZXhpdC4gVGhlbiB3aGVu
IGl0IGRpZCBleGVjdXRlLCB3ZQogICAgICAgICAgICAgICAgIC8vIHdvdWxkIHJlY29tcGlsZS4g
QnV0IGlmIHdlIGNhbiBmb2xkIGl0IGhlcmUsIHdlIGF2b2lkIHRoZSBleGl0LgogICAgICAgICAg
ICAgICAgIGlmIChKU1ZhbHVlIHZhbHVlID0gbV9ncmFwaC50cnlHZXRDb25zdGFudENsb3N1cmVW
YXIoc2NvcGVOb2RlLCBTY29wZU9mZnNldChvcGVyYW5kKSkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCB3ZWFrSlNDb25zdGFudCh2YWx1ZSkpOworICAgICAgICAg
ICAgICAgICAgICBOb2RlKiBub2RlID0gd2Vha0pTQ29uc3RhbnQodmFsdWUpOworICAgICAgICAg
ICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIG5vZGUpOworCisgICAgICAgICAgICAgICAg
ICAgIGlmICh1aWQgJiYgdWlkID09IG1fZ3JhcGgubV92bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5wcml2YXRlQnJhbmRQcml2YXRlTmFtZSgpLmltcGwoKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1fZ3JhcGgubV9wcml2YXRlQnJhbmRBY2Nlc3MuYWRkKG5vZGUpOworCiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbigpOwotICAgICAgICAg
ICAgICAgIHNldChieXRlY29kZS5tX2RzdCwKLSAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFw
aChHZXRDbG9zdXJlVmFyLCBPcEluZm8ob3BlcmFuZCksIE9wSW5mbyhwcmVkaWN0aW9uKSwgc2Nv
cGVOb2RlKSk7CisgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGFkZFRvR3JhcGgoR2V0Q2xv
c3VyZVZhciwgT3BJbmZvKG9wZXJhbmQpLCBPcEluZm8ocHJlZGljdGlvbiksIHNjb3BlTm9kZSk7
CisgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBub2RlKTsKKworICAgICAgICAg
ICAgICAgIGlmICh1aWQgJiYgdWlkID09IG1fZ3JhcGgubV92bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5wcml2YXRlQnJhbmRQcml2YXRlTmFtZSgpLmltcGwoKSkKKyAgICAgICAgICAg
ICAgICAgICAgbV9ncmFwaC5tX3ByaXZhdGVCcmFuZEFjY2Vzcy5hZGQobm9kZSk7CisKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgVW5yZXNv
bHZlZFByb3BlcnR5OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCmluZGV4IGIzYTli
ZmY1Y2QyYWFlNzkyMTQ3ZGU4ZjJjYmE1YjRkNjE3YWFmZDQuLjk3NGZmZmMyZWVmMGRjMTMyMjdi
OTFiMjZmMTVhMWZmNGYxMDMxOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgK
QEAgLTExODIsNiArMTE4Miw3IEBAIHB1YmxpYzoKICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN5
bWJvbFN0cnVjdHVyZTsKIAogICAgIEhhc2hTZXQ8Tm9kZSo+IG1fc2xvd0dldEJ5VmFsOworICAg
IEhhc2hTZXQ8Tm9kZSo+IG1fcHJpdmF0ZUJyYW5kQWNjZXNzOwogCiBwcml2YXRlOgogICAgIGJv
b2wgaXNTdHJpbmdQcm90b3R5cGVNZXRob2RTYW5lKEpTR2xvYmFsT2JqZWN0KiwgVW5pcXVlZFN0
cmluZ0ltcGwqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCmluZGV4IGQxNDlmNzc2MzNkZjlkY2JiZDA3NWI4MzAzM2VlMWRlZTg4YTJm
NzQuLjkzYjA0NzIxNjE2OWUxYzhiZjBkY2ZmYmM3MTBmODgxZTRlMGNiYWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtMTQ1
LDcgKzE0NSw3IEBAIEpTVmFsdWUgZXZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgRUNNQU1vZGUgZWNtYU1vCiAgICAgICAgIAogICAgICAgICBW
YXJpYWJsZUVudmlyb25tZW50IHZhcmlhYmxlc1VuZGVyVERaOwogICAgICAgICBKU1Njb3BlOjpj
b2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKGNhbGxlclNjb3BlQ2hhaW4sIHZhcmlhYmxl
c1VuZGVyVERaKTsKLSAgICAgICAgZXZhbCA9IERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUo
Z2xvYmFsT2JqZWN0LCBtYWtlU291cmNlKHByb2dyYW1Tb3VyY2UsIGNhbGxlckNvZGVCbG9jay0+
c291cmNlKCkucHJvdmlkZXIoKS0+c291cmNlT3JpZ2luKCkpLCBkZXJpdmVkQ29udGV4dFR5cGUs
IGNhbGxlclVubGlua2VkQ29kZUJsb2NrLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBp
c0Fycm93RnVuY3Rpb25Db250ZXh0LCBjYWxsZXJDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgp
LT5pc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24oKSwgZXZhbENvbnRleHRUeXBlLCAmdmFyaWFibGVz
VW5kZXJURFosIGVjbWFNb2RlKTsKKyAgICAgICAgZXZhbCA9IERpcmVjdEV2YWxFeGVjdXRhYmxl
OjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtYWtlU291cmNlKHByb2dyYW1Tb3VyY2UsIGNhbGxlckNv
ZGVCbG9jay0+c291cmNlKCkucHJvdmlkZXIoKS0+c291cmNlT3JpZ2luKCkpLCBkZXJpdmVkQ29u
dGV4dFR5cGUsIGNhbGxlclVubGlua2VkQ29kZUJsb2NrLT5uZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplcigpLCBjYWxsZXJVbmxpbmtlZENvZGVCbG9jay0+cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQo
KSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgY2FsbGVyQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFi
bGUoKS0+aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKCksIGV2YWxDb250ZXh0VHlwZSwgJnZhcmlh
Ymxlc1VuZGVyVERaLCBlY21hTW9kZSk7CiAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29w
ZS5leGNlcHRpb24oKSA9PSAhZXZhbCk7CiAgICAgICAgIGlmICghZXZhbCkKICAgICAgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNw
cAppbmRleCA2NGE2NmY3NjVjOGY0ZDI4NDk2ZGE5Y2U2YzQ0YWJiMDhhYTg4MWI5Li4wMmI3ODc1
Y2NhZjZhZmY2NjNhYzFlZWY1YWRkYjhkYmQzNDA5Mzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVzLmNwcApAQCAtMjAyLDYgKzIwMiw3IEBAIEZ1bmN0aW9uTWV0YWRhdGFOb2Rl
OjpGdW5jdGlvbk1ldGFkYXRhTm9kZSgKICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkKICAgICAgICAgLCBtX25lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihOZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplcjo6Tm8pKQogICAgICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Np
b24oaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCisgICAgICAgICwgbV9wcml2YXRlQnJh
bmRSZXF1aXJlbWVudChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQ6Ok5vbmUpKQogICAgICAgICAsIG1fcGFyc2VNb2RlKG1vZGUpCiAgICAgICAgICwgbV9zdGFy
dENvbHVtbihzdGFydENvbHVtbikKICAgICAgICAgLCBtX2VuZENvbHVtbihlbmRDb2x1bW4pCkBA
IC0yMjYsNiArMjI3LDcgQEAgRnVuY3Rpb25NZXRhZGF0YU5vZGU6OkZ1bmN0aW9uTWV0YWRhdGFO
b2RlKAogICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihj
b25zdHJ1Y3RvcktpbmQpKQogICAgICAgICAsIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObykpCiAg
ICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbihpc0Fycm93RnVuY3Rpb25C
b2R5RXhwcmVzc2lvbikKKyAgICAgICAgLCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50KHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZSkpCiAgICAgICAg
ICwgbV9wYXJzZU1vZGUobW9kZSkKICAgICAgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1u
KQogICAgICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuaAppbmRleCA3MzU4YmIzMjUyN2UwZjA0MzUxNDc1MGY0YmIwZWI0MTQ0YjA4N2Yw
Li4xZmQzZjI0NzYwMDU4NjM0OTI2MGVmNzA2MzU4NDA0ZjBjZWQ2NmRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC03MjEsNyArNzIxLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgZW51bSBjbGFzcyBDbGFzc0VsZW1lbnRUYWcgOiB1aW50OF90IHsgTm8sIEluc3RhbmNl
LCBTdGF0aWMsIExhc3RUYWcgfTsKICAgICBjbGFzcyBQcm9wZXJ0eU5vZGUgZmluYWwgOiBwdWJs
aWMgUGFyc2VyQXJlbmFGcmVlYWJsZSB7CiAgICAgcHVibGljOgotICAgICAgICBlbnVtIFR5cGUg
OiB1aW50OF90IHsgQ29uc3RhbnQgPSAxLCBHZXR0ZXIgPSAyLCBTZXR0ZXIgPSA0LCBDb21wdXRl
ZCA9IDgsIFNob3J0aGFuZCA9IDE2LCBTcHJlYWQgPSAzMiwgUHJpdmF0ZSA9IDY0IH07CisgICAg
ICAgIGVudW0gVHlwZSA6IHVpbnQ4X3QgeyBDb25zdGFudCA9IDEsIEdldHRlciA9IDIsIFNldHRl
ciA9IDQsIENvbXB1dGVkID0gOCwgU2hvcnRoYW5kID0gMTYsIFNwcmVhZCA9IDMyLCBQcml2YXRl
RmllbGQgPSA2NCwgUHJpdmF0ZU1ldGhvZCA9IDEyOCB9OwogCiAgICAgICAgIFByb3BlcnR5Tm9k
ZShjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqLCBUeXBlLCBTdXBlckJpbmRpbmcs
IENsYXNzRWxlbWVudFRhZyk7CiAgICAgICAgIFByb3BlcnR5Tm9kZShFeHByZXNzaW9uTm9kZSos
IFR5cGUsIFN1cGVyQmluZGluZywgQ2xhc3NFbGVtZW50VGFnKTsKQEAgLTczOSw3ICs3MzksNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBpc0NsYXNzRmllbGQoKSBjb25zdCB7IHJl
dHVybiBpc0NsYXNzUHJvcGVydHkoKSAmJiAhbmVlZHNTdXBlckJpbmRpbmcoKTsgfQogICAgICAg
ICBib29sIGlzSW5zdGFuY2VDbGFzc0ZpZWxkKCkgY29uc3QgeyByZXR1cm4gaXNJbnN0YW5jZUNs
YXNzUHJvcGVydHkoKSAmJiAhbmVlZHNTdXBlckJpbmRpbmcoKTsgfQogICAgICAgICBib29sIGlz
T3ZlcnJpZGRlbkJ5RHVwbGljYXRlKCkgY29uc3QgeyByZXR1cm4gbV9pc092ZXJyaWRkZW5CeUR1
cGxpY2F0ZTsgfQotICAgICAgICBib29sIGlzUHJpdmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlw
ZSAmIFByaXZhdGU7IH0KKyAgICAgICAgYm9vbCBpc1ByaXZhdGUoKSBjb25zdCB7IHJldHVybiBt
X3R5cGUgJiAoUHJpdmF0ZUZpZWxkIHwgUHJpdmF0ZU1ldGhvZCk7IH0KICAgICAgICAgYm9vbCBo
YXNDb21wdXRlZE5hbWUoKSBjb25zdCB7IHJldHVybiBtX2V4cHJlc3Npb247IH0KICAgICAgICAg
Ym9vbCBpc0NvbXB1dGVkQ2xhc3NGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGlzQ2xhc3NGaWVsZCgp
ICYmIGhhc0NvbXB1dGVkTmFtZSgpOyB9CiAgICAgICAgIHZvaWQgc2V0SXNPdmVycmlkZGVuQnlE
dXBsaWNhdGUoKSB7IG1faXNPdmVycmlkZGVuQnlEdXBsaWNhdGUgPSB0cnVlOyB9CkBAIC03NTks
NyArNzU5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIG1f
bmFtZTsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcmVzc2lvbjsKICAgICAgICAgRXhw
cmVzc2lvbk5vZGUqIG1fYXNzaWduOwotICAgICAgICB1bnNpZ25lZCBtX3R5cGUgOiA3OworICAg
ICAgICB1bnNpZ25lZCBtX3R5cGU7CiAgICAgICAgIHVuc2lnbmVkIG1fbmVlZHNTdXBlckJpbmRp
bmcgOiAxOwogICAgICAgICBzdGF0aWNfYXNzZXJ0KDEgPDwgMiA+IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihDbGFzc0VsZW1lbnRUYWc6Okxhc3RUYWcpLCAiQ2xhc3NFbGVtZW50VGFnIHNob3VsZG4n
dCB1c2UgbW9yZSB0aGFuIHR3byBiaXRzIik7CiAgICAgICAgIHVuc2lnbmVkIG1fY2xhc3NFbGVt
ZW50VGFnIDogMjsKQEAgLTgzMiw3ICs4MzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
Ym9vbCBtX3N1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzOwogICAgIH07CiAKLSAgICBlbnVtIGNsYXNz
IERvdFR5cGUgeyBOYW1lLCBQcml2YXRlRmllbGQgfTsKKyAgICBlbnVtIGNsYXNzIERvdFR5cGUg
eyBOYW1lLCBQcml2YXRlTWVtYmVyIH07CiAgICAgY2xhc3MgQmFzZURvdE5vZGUgOiBwdWJsaWMg
RXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKICAgICAgICAgQmFzZURvdE5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIm
LCBEb3RUeXBlKTsKQEAgLTg0MCw3ICs4NDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
RXhwcmVzc2lvbk5vZGUqIGJhc2UoKSBjb25zdCB7IHJldHVybiBtX2Jhc2U7IH0KICAgICAgICAg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnQ7IH0K
ICAgICAgICAgRG90VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9Ci0gICAgICAg
IGJvb2wgaXNQcml2YXRlRmllbGQoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gRG90VHlwZTo6
UHJpdmF0ZUZpZWxkOyB9CisgICAgICAgIGJvb2wgaXNQcml2YXRlTWVtYmVyKCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlID09IERvdFR5cGU6OlByaXZhdGVNZW1iZXI7IH0KIAogICAgICAgICBSZWdp
c3RlcklEKiBlbWl0R2V0UHJvcGVydHlWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVmUHRyPFJlZ2lzdGVySUQ+JiB0aGlzVmFsdWUp
OwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0UHJvcGVydHlWYWx1ZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSk7CkBAIC04NjQsNyArODY0
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cikgZmluYWw7CiAKICAgICAg
ICAgYm9vbCBpc0xvY2F0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAg
ICBib29sIGlzUHJpdmF0ZUxvY2F0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV90eXBl
ID09IERvdFR5cGU6OlByaXZhdGVGaWVsZDsgfQorICAgICAgICBib29sIGlzUHJpdmF0ZUxvY2F0
aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV90eXBlID09IERvdFR5cGU6OlByaXZhdGVN
ZW1iZXI7IH0KICAgICAgICAgYm9vbCBpc0RvdEFjY2Vzc29yTm9kZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KICAgICB9OwogCkBAIC0yMTUxLDYgKzIxNTEsOSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgdm9pZCBzZXRFY21hTmFtZShjb25zdCBJZGVudGlmaWVyJiBlY21hTmFt
ZSkgeyBtX2VjbWFOYW1lID0gZWNtYU5hbWU7IH0KICAgICAgICAgY29uc3QgSWRlbnRpZmllciYg
ZWNtYU5hbWUoKSB7IHJldHVybiBtX2lkZW50LmlzRW1wdHkoKSA/IG1fZWNtYU5hbWUgOiBtX2lk
ZW50OyB9CiAKKyAgICAgICAgdm9pZCBzZXRQcml2YXRlQnJhbmRSZXF1aXJlbWVudChQcml2YXRl
QnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCkgeyBtX3ByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHByaXZhdGVCcmFuZFJlcXVpcmVt
ZW50KTsgfQorICAgICAgICBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1
aXJlbWVudCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFByaXZhdGVCcmFuZFJlcXVpcmVtZW50Piht
X3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50KTsgfQorCiAgICAgICAgIEZ1bmN0aW9uTW9kZSBmdW5j
dGlvbk1vZGUoKSB7IHJldHVybiBtX2Z1bmN0aW9uTW9kZTsgfQogCiAgICAgICAgIGludCBmdW5j
dGlvbk5hbWVTdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25OYW1lU3RhcnQ7IH0KQEAg
LTIxOTksNiArMjIwMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBtX2Nv
bnN0cnVjdG9yS2luZCA6IDI7CiAgICAgICAgIHVuc2lnbmVkIG1fbmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIgOiAxOwogICAgICAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbkJvZHlFeHBy
ZXNzaW9uIDogMTsKKyAgICAgICAgdW5zaWduZWQgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA6
IDE7CiAgICAgICAgIFNvdXJjZVBhcnNlTW9kZSBtX3BhcnNlTW9kZTsKICAgICAgICAgRnVuY3Rp
b25Nb2RlIG1fZnVuY3Rpb25Nb2RlOwogICAgICAgICBJZGVudGlmaWVyIG1faWRlbnQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggZTE5MGU2OTM2OTk1N2E0ZDAw
Y2JjNmI3M2M3Y2YwMTA5YzU5ZTFhMy4uOGFhOGZkNGE5Y2ZiYjlmYTc0Mzc2NzllYTgwOGE2YjMy
OTMyOGU4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjg1
MSw2ICsyODUxLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlQ2xhc3NFeHBy
ZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKFQKICAgICBjbGFzc1Njb3BlLT5z
ZXRJc0xleGljYWxTY29wZSgpOwogICAgIGNsYXNzU2NvcGUtPnByZXZlbnRWYXJEZWNsYXJhdGlv
bnMoKTsKICAgICBjbGFzc1Njb3BlLT5zZXRTdHJpY3RNb2RlKCk7CisgICAgYm9vbCBkZWNsYXJl
c1ByaXZhdGVNZXRob2QgPSBmYWxzZTsKIAogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocmVxdWly
ZW1lbnRzICE9IEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50czo6VW5uYW1lZCwgIkN1cnJlbnRseSwg
dGhlcmUgaXMgbm8gY2FsbGVyIHRoYXQgdXNlcyBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHM6OlVu
bmFtZWQgZm9yIGNsYXNzIHN5bnRheC4iKTsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCEocmVx
dWlyZW1lbnRzID09IEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50czo6Tm9uZSAmJiAhaW5mby5jbGFz
c05hbWUpLCAiV2hlbiBzcGVjaWZ5aW5nIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50czo6Tm9uZSwg
d2UgbmVlZCB0byBpbml0aWFsaXplIGluZm8uY2xhc3NOYW1lIHdpdGggdGhlIGRlZmF1bHQgdmFs
dWUgaW4gdGhlIGNhbGxlciBzaWRlLiIpOwpAQCAtMjk2NSwxNSArMjk2NiwyMSBAQCBwYXJzZU1l
dGhvZDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBSSVZBVEVOQU1FOiB7CiAg
ICAgICAgICAgICBBU1NFUlQoT3B0aW9uczo6dXNlUHJpdmF0ZUNsYXNzRmllbGRzKCkpOwotICAg
ICAgICAgICAgSlNUb2tlbiB0b2tlbiA9IG1fdG9rZW47CiAgICAgICAgICAgICBpZGVudCA9IG1f
dG9rZW4ubV9kYXRhLmlkZW50OwogICAgICAgICAgICAgZmFpbElmVHJ1ZSh0YWcgPT0gQ2xhc3NF
bGVtZW50VGFnOjpTdGF0aWMsICJTdGF0aWMgY2xhc3MgZWxlbWVudCBjYW5ub3QgYmUgcHJpdmF0
ZSIpOwogICAgICAgICAgICAgZmFpbElmVHJ1ZShpc0dldHRlciB8fCBpc1NldHRlciwgIkNhbm5v
dCBwYXJzZSBjbGFzcyBtZXRob2Qgd2l0aCBwcml2YXRlIG5hbWUiKTsKICAgICAgICAgICAgIEFT
U0VSVChpZGVudCk7CiAgICAgICAgICAgICBuZXh0KCk7Ci0gICAgICAgICAgICBmYWlsSWZUcnVl
KG1hdGNoQW5kVXBkYXRlKE9QRU5QQVJFTiwgdG9rZW4pLCAiQ2Fubm90IHBhcnNlIGNsYXNzIG1l
dGhvZCB3aXRoIHByaXZhdGUgbmFtZSIpOwotICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVl
KGNsYXNzU2NvcGUtPmRlY2xhcmVQcml2YXRlTmFtZSgqaWRlbnQpICYgRGVjbGFyYXRpb25SZXN1
bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbiwgIkNhbm5vdCBkZWNsYXJlIHByaXZhdGUg
ZmllbGQgdHdpY2UiKTsKLSAgICAgICAgICAgIHR5cGUgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5v
ZGU6OlR5cGU+KHR5cGUgfCBQcm9wZXJ0eU5vZGU6OlByaXZhdGUpOworICAgICAgICAgICAgaWYg
KE9wdGlvbnM6OnVzZVByaXZhdGVNZXRob2RzKCkgJiYgbWF0Y2goT1BFTlBBUkVOKSkgeworICAg
ICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShjbGFzc1Njb3BlLT5kZWNsYXJlUHJpdmF0
ZU1ldGhvZCgqaWRlbnQpICYgRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBsaWNhdGVEZWNs
YXJhdGlvbiwgIkNhbm5vdCBkZWNsYXJlIHByaXZhdGUgbWV0aG9kIHR3aWNlIik7CisgICAgICAg
ICAgICAgICAgZGVjbGFyZXNQcml2YXRlTWV0aG9kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB0
eXBlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlIHwgUHJvcGVydHlOb2Rl
OjpQcml2YXRlTWV0aG9kKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaChPUEVOUEFSRU4pLCAiQ2Fubm90IHBhcnNl
IGNsYXNzIG1ldGhvZCB3aXRoIHByaXZhdGUgbmFtZSIpOworICAgICAgICAgICAgc2VtYW50aWNG
YWlsSWZUcnVlKGNsYXNzU2NvcGUtPmRlY2xhcmVQcml2YXRlRmllbGQoKmlkZW50KSAmIERlY2xh
cmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb24sICJDYW5ub3QgZGVjbGFy
ZSBwcml2YXRlIGZpZWxkIHR3aWNlIik7CisgICAgICAgICAgICB0eXBlID0gc3RhdGljX2Nhc3Q8
UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlIHwgUHJvcGVydHlOb2RlOjpQcml2YXRlRmllbGQpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTMwNTMs
MTAgKzMwNjAsMTkgQEAgcGFyc2VNZXRob2Q6CiAgICAgaW5mby5lbmRPZmZzZXQgPSB0b2tlbkxv
Y2F0aW9uKCkuZW5kT2Zmc2V0IC0gMTsKICAgICBjb25zdW1lT3JGYWlsKENMT1NFQlJBQ0UsICJF
eHBlY3RlZCBhIGNsb3NpbmcgJ30nIGFmdGVyIGEgY2xhc3MgYm9keSIpOwogCisgICAgaWYgKGRl
Y2xhcmVzUHJpdmF0ZU1ldGhvZCkgeworICAgICAgICBJZGVudGlmaWVyIHByaXZhdGVCcmFuZElk
ZW50aWZpZXIgPSBtX3ZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnByaXZhdGVCcmFu
ZFByaXZhdGVOYW1lKCk7CisgICAgICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJhdGlv
blJlc3VsdCA9IGNsYXNzU2NvcGUtPmRlY2xhcmVMZXhpY2FsVmFyaWFibGUoJnByaXZhdGVCcmFu
ZElkZW50aWZpZXIsIHRydWUpOworICAgICAgICBBU1NFUlRfVU5VU0VEKGRlY2xhcmF0aW9uUmVz
dWx0LCBkZWNsYXJhdGlvblJlc3VsdCA9PSBEZWNsYXJhdGlvblJlc3VsdDo6VmFsaWQpOworICAg
ICAgICBjbGFzc1Njb3BlLT51c2VWYXJpYWJsZSgmcHJpdmF0ZUJyYW5kSWRlbnRpZmllciwgZmFs
c2UpOworICAgICAgICBjbGFzc1Njb3BlLT5hZGRDbG9zZWRWYXJpYWJsZUNhbmRpZGF0ZVVuY29u
ZGl0aW9uYWxseShwcml2YXRlQnJhbmRJZGVudGlmaWVyLmltcGwoKSk7CisgICAgfQorCiAgICAg
aWYgKE9wdGlvbnM6OnVzZVByaXZhdGVDbGFzc0ZpZWxkcygpKSB7CiAgICAgICAgIC8vIEZhaWwg
aWYgdGhlcmUgYXJlIG5vIHBhcmVudCBwcml2YXRlIG5hbWUgc2NvcGVzIGFuZCBhbnkgdXNlZC1i
dXQtdW5kZWNsYXJlZCBwcml2YXRlIG5hbWVzLgogICAgICAgICBzZW1hbnRpY0ZhaWxJZkZhbHNl
KGNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzVG9PdXRlclNjb3BlKCksICJDYW5ub3QgcmVmZXJl
bmNlIHVuZGVjbGFyZWQgcHJpdmF0ZSBuYW1lcyIpOwogICAgIH0KKwogICAgIGF1dG8gY2xhc3NF
eHByZXNzaW9uID0gY29udGV4dC5jcmVhdGVDbGFzc0V4cHIobG9jYXRpb24sIGluZm8sIGNsYXNz
U2NvcGUtPmZpbmFsaXplTGV4aWNhbEVudmlyb25tZW50KCksIGNvbnN0cnVjdG9yLCBwYXJlbnRD
bGFzcywgY2xhc3NFbGVtZW50cyk7CiAgICAgcG9wU2NvcGUoY2xhc3NTY29wZSwgVHJlZUJ1aWxk
ZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbyk7CiAgICAgcmV0dXJuIGNsYXNzRXhwcmVzc2lvbjsK
QEAgLTUwNzMsNyArNTA4OSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4
cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzCiAgICAgICAgICAg
ICAgICAgICAgIHNlbWFudGljRmFpbElmRmFsc2UodXNlUHJpdmF0ZU5hbWUoaWRlbnQpLCAiQ2Fu
bm90IHJlZmVyZW5jZSBwcml2YXRlIG5hbWVzIG91dHNpZGUgb2YgY2xhc3MiKTsKICAgICAgICAg
ICAgICAgICAgICAgbV9wYXJzZXJTdGF0ZS5sYXN0UHJpdmF0ZU5hbWUgPSBpZGVudDsKICAgICAg
ICAgICAgICAgICAgICAgY3VycmVudFNjb3BlKCktPnVzZVZhcmlhYmxlKGlkZW50LCBmYWxzZSk7
Ci0gICAgICAgICAgICAgICAgICAgIHR5cGUgPSBEb3RUeXBlOjpQcml2YXRlRmllbGQ7CisgICAg
ICAgICAgICAgICAgICAgIHR5cGUgPSBEb3RUeXBlOjpQcml2YXRlTWVtYmVyOwogICAgICAgICAg
ICAgICAgICAgICBtX3Rva2VuLm1fdHlwZSA9IElERU5UOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBtYXRjaE9yRmFpbChJREVOVCwgIkV4cGVjdGVkIGEgcHJvcGVydHkgbmFt
ZSBhZnRlciAiLCBvcHRpb25hbENoYWluQmFzZSA/ICInPy4nIiA6ICInLiciKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IGRiOGViNzNjYjlhOThiY2FiMDY0YTBmY2Mw
ZTU0NWM2ZWU0YWI0ZjcuLmE4ZGU1NTgyYTU2YTQ0Yjc1ZGQ1NzMxMjVmYzQ3YThjN2M5NTI1Zjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtNTExLDExICs1MTEsMjgg
QEAgcHVibGljOgogICAgICAgICBtX2xleGljYWxWYXJpYWJsZXMudXNlUHJpdmF0ZU5hbWUoaWRl
bnQpOwogICAgIH0KIAotICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJlUHJpdmF0ZU5h
bWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRl
Y2xhcmVQcml2YXRlTWV0aG9kKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogICAgIHsKICAgICAg
ICAgQVNTRVJUKG1fYWxsb3dzTGV4aWNhbERlY2xhcmF0aW9ucyk7CiAgICAgICAgIERlY2xhcmF0
aW9uUmVzdWx0TWFzayByZXN1bHQgPSBEZWNsYXJhdGlvblJlc3VsdDo6VmFsaWQ7Ci0gICAgICAg
IGF1dG8gYWRkUmVzdWx0ID0gbV9sZXhpY2FsVmFyaWFibGVzLmRlY2xhcmVQcml2YXRlTmFtZShp
ZGVudCk7CisgICAgICAgIGJvb2wgYWRkUmVzdWx0ID0gbV9sZXhpY2FsVmFyaWFibGVzLmRlY2xh
cmVQcml2YXRlTWV0aG9kKGlkZW50KTsKKworICAgICAgICBpZiAoIWFkZFJlc3VsdCkgeworICAg
ICAgICAgICAgcmVzdWx0IHw9IERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVj
bGFyYXRpb247CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAgICAg
ICAgdXNlVmFyaWFibGUoJmlkZW50LCBmYWxzZSk7CisgICAgICAgIGFkZENsb3NlZFZhcmlhYmxl
Q2FuZGlkYXRlVW5jb25kaXRpb25hbGx5KGlkZW50LmltcGwoKSk7CisKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICB9CisKKyAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyZVByaXZh
dGVGaWVsZChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICB7CisgICAgICAgIEFTU0VSVCht
X2FsbG93c0xleGljYWxEZWNsYXJhdGlvbnMpOworICAgICAgICBEZWNsYXJhdGlvblJlc3VsdE1h
c2sgcmVzdWx0ID0gRGVjbGFyYXRpb25SZXN1bHQ6OlZhbGlkOworICAgICAgICBhdXRvIGFkZFJl
c3VsdCA9IG1fbGV4aWNhbFZhcmlhYmxlcy5kZWNsYXJlUHJpdmF0ZUZpZWxkKGlkZW50KTsKICAg
ICAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgIHJlc3VsdCB8PSBE
ZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uOwogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXJNb2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5o
CmluZGV4IGVhZmZkZTIxYzE1OTVkYjMwMmY2Mjk5MmJhYTE5MmVmNmFhZDYxNTguLjlkOWExODli
NzZiZTk0Y2VkMWVlMTQ4ZWJhNTI0MWY5ZGU3NmQzZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKQEAgLTM3LDYgKzM3LDggQEAgZW51bSBjbGFzcyBKU1Bh
cnNlclNjcmlwdE1vZGUgeyBDbGFzc2ljLCBNb2R1bGUgfTsKIAogZW51bSBjbGFzcyBTdXBlckJp
bmRpbmcgeyBOZWVkZWQsIE5vdE5lZWRlZCB9OwogCitlbnVtIGNsYXNzIFByaXZhdGVCcmFuZFJl
cXVpcmVtZW50IHsgTm9uZSwgTmVlZGVkIH07CisKIGVudW0gY2xhc3MgQ29kZUdlbmVyYXRpb25N
b2RlIDogdWludDhfdCB7CiAgICAgRGVidWdnZXIgPSAxIDw8IDAsCiAgICAgVHlwZVByb2ZpbGVy
ID0gMSA8PCAxLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50
YXhDaGVja2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIu
aAppbmRleCAxYTZkMGU0OGFjZWFiNTM3YjFkOGZhMDcwMzM1NjE2NTAxYmE0YjQ5Li42MThjZGIz
ZmMxZDI1ZDIxNTFlNTk2M2ZkMDBkZmM5NGJiNjVhZTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaApAQCAtMTc5LDcgKzE3OSw3IEBAIHB1YmxpYzoK
ICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCb29sZWFuKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IGJvb2wpIHsgcmV0dXJuIEJvb2xFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTnVs
bChjb25zdCBKU1Rva2VuTG9jYXRpb24mKSB7IHJldHVybiBOdWxsRXhwcjsgfQogICAgIEV4cHJl
c3Npb25UeXBlIGNyZWF0ZUJyYWNrZXRBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhw
cmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVy
biBCcmFja2V0RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZURvdEFjY2Vzcyhjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgY29uc3QgSWRlbnRpZmllciosIERv
dFR5cGUgdHlwZSwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gdHlwZSA9PSBEb3RUeXBlOjpQcml2
YXRlRmllbGQgPyBQcml2YXRlRG90RXhwciA6IERvdEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlw
ZSBjcmVhdGVEb3RBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUs
IGNvbnN0IElkZW50aWZpZXIqLCBEb3RUeXBlIHR5cGUsIGludCwgaW50LCBpbnQpIHsgcmV0dXJu
IHR5cGUgPT0gRG90VHlwZTo6UHJpdmF0ZU1lbWJlciA/IFByaXZhdGVEb3RFeHByIDogRG90RXhw
cjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVJlZ0V4cChjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBjb25zdCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25zdCBJZGVudGlmaWVyJiBmbGFncywg
aW50KSB7IHJldHVybiBZYXJyOjpoYXNFcnJvcihZYXJyOjpjaGVja1N5bnRheChwYXR0ZXJuLnN0
cmluZygpLCBmbGFncy5zdHJpbmcoKSkpID8gMCA6IFJlZ0V4cEV4cHI7IH0KICAgICBFeHByZXNz
aW9uVHlwZSBjcmVhdGVOZXdFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25U
eXBlLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIE5ld0V4cHI7IH0KICAgICBFeHByZXNz
aW9uVHlwZSBjcmVhdGVOZXdFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25U
eXBlLCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhwcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAKaW5kZXggZDVhOWVkOTk5
NWUzODcyM2I3ZmJmYWExNWNiZDY5NDJhZDRkNTlkMi4uN2QzYjFiOGI3MDYwNWJkZTM5NWE1Yzdk
YmZlMDg1MDA5ZWE5NGU5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9WYXJpYWJsZUVudmlyb25tZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwCkBAIC0xMDQsNiArMTA0LDQxIEBAIHZvaWQgVmFy
aWFibGVFbnZpcm9ubWVudDo6bWFya1ZhcmlhYmxlQXNFeHBvcnRlZChjb25zdCBSZWZQdHI8VW5p
cXVlZFN0cmluZ0ltcGw+CiAgICAgZmluZFJlc3VsdC0+dmFsdWUuc2V0SXNFeHBvcnRlZCgpOwog
fQogCitib29sIFZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlTWV0aG9kKGNvbnN0
IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCit7CisgICAgaWYgKCFtX3Jh
cmVEYXRhKQorICAgICAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxWYXJpYWJsZUVudmlyb25t
ZW50OjpSYXJlRGF0YT4oKTsKKworICAgIGF1dG8gZmluZFJlc3VsdCA9IG1fcmFyZURhdGEtPm1f
cHJpdmF0ZU5hbWVzLmZpbmQoaWRlbnRpZmllcik7CisKKyAgICBpZiAoZmluZFJlc3VsdCA9PSBt
X3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5lbmQoKSkgeworICAgICAgICBQcml2YXRlTmFtZUVu
dHJ5IG1ldGEoUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc0RlY2xhcmVkIHwgUHJpdmF0ZU5h
bWVFbnRyeTo6VHJhaXRzOjpJc01ldGhvZCk7CisKKyAgICAgICAgYXV0byBlbnRyeSA9IFZhcmlh
YmxlRW52aXJvbm1lbnRFbnRyeSgpOworICAgICAgICBlbnRyeS5zZXRJc1ByaXZhdGVNZXRob2Qo
KTsKKyAgICAgICAgZW50cnkuc2V0SXNDb25zdCgpOworICAgICAgICBlbnRyeS5zZXRJc0NhcHR1
cmVkKCk7CisgICAgICAgIG1fbWFwLmFkZChpZGVudGlmaWVyLCBlbnRyeSk7CisKKyAgICAgICAg
YXV0byBhZGRSZXN1bHQgPSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoaWRlbnRpZmll
ciwgbWV0YSk7CisgICAgICAgIHJldHVybiBhZGRSZXN1bHQuaXNOZXdFbnRyeTsKKyAgICB9CisK
KyAgICBpZiAoZmluZFJlc3VsdC0+dmFsdWUuaXNEZWNsYXJlZCgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7IC8vIEVycm9yOiBkZWNsYXJpbmcgYSBkdXBsaWNhdGUgcHJpdmF0ZSBuYW1lLgorCisg
ICAgYXV0byBlbnRyeSA9IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpOworICAgIGVudHJ5LnNl
dElzUHJpdmF0ZU1ldGhvZCgpOworICAgIGVudHJ5LnNldElzQ29uc3QoKTsKKyAgICBlbnRyeS5z
ZXRJc0NhcHR1cmVkKCk7CisgICAgbV9tYXAuYWRkKGlkZW50aWZpZXIsIGVudHJ5KTsKKworICAg
IC8vIGl0IHdhcyBwcmV2aW91c2x5IHVzZWQsIG1hcmsgaXQgYXMgZGVjbGFyZWQuCisgICAgUHJp
dmF0ZU5hbWVFbnRyeSBtZXRhKFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNEZWNsYXJlZCB8
IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNVc2VkIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJh
aXRzOjpJc01ldGhvZCk7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3JhcmVEYXRhLT5tX3ByaXZh
dGVOYW1lcy5zZXQoaWRlbnRpZmllciwgbWV0YSk7CisgICAgcmV0dXJuICFhZGRSZXN1bHQuaXNO
ZXdFbnRyeTsKK30KKwogQ29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQ6OkNvbXBhY3RWYXJpYWJs
ZUVudmlyb25tZW50KGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGVudikKICAgICA6IG1faXNF
dmVyeXRoaW5nQ2FwdHVyZWQoZW52LmlzRXZlcnl0aGluZ0NhcHR1cmVkKCkpCiB7CkBAIC0xMTcs
NiArMTUyLDI1IEBAIENvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50OjpDb21wYWN0VmFyaWFibGVF
bnZpcm9ubWVudChjb25zdCBWYXJpYWJsZUVudmlyb25tZW50CiAgICAgfSk7CiAKICAgICBtX2hh
c2ggPSAwOworICAgIGlmIChlbnYucHJpdmF0ZU5hbWVzU2l6ZSgpKSB7CisgICAgICAgIFZlY3Rv
cjxzdGQ6OnBhaXI8VW5pcXVlZFN0cmluZ0ltcGwqLCBQcml2YXRlTmFtZUVudHJ5PiwgMTY+IHNv
cnRlZFByaXZhdGVFbnRyaWVzOworICAgICAgICBzb3J0ZWRQcml2YXRlRW50cmllcy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KGVudi5wcml2YXRlTmFtZXNTaXplKCkpOworICAgICAgICBmb3IgKGNv
bnN0IGF1dG8mIGVudHJpZXMgOiBlbnYucHJpdmF0ZU5hbWVzKCkpCisgICAgICAgICAgICBzb3J0
ZWRQcml2YXRlRW50cmllcy5hcHBlbmQoe2VudHJpZXMua2V5LmdldCgpLCBlbnRyaWVzLnZhbHVl
fSk7CisKKyAgICAgICAgc3RkOjpzb3J0KHNvcnRlZFByaXZhdGVFbnRyaWVzLmJlZ2luKCksIHNv
cnRlZFByaXZhdGVFbnRyaWVzLmVuZCgpLCBbXSAoY29uc3QgYXV0byYgYSwgY29uc3QgYXV0byYg
YikgeworICAgICAgICAgICAgcmV0dXJuIGEuZmlyc3QgPCBiLmZpcnN0OworICAgICAgICB9KTsK
KworICAgICAgICBtX3ByaXZhdGVBY2Nlc3NOYW1lcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGVu
di5wcml2YXRlTmFtZXNTaXplKCkpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBz
b3J0ZWRQcml2YXRlRW50cmllcykgeworICAgICAgICAgICAgbV9wcml2YXRlQWNjZXNzTmFtZXMu
YXBwZW5kKHBhaXIuZmlyc3QpOworICAgICAgICAgICAgbV9wcml2YXRlTmFtZU1ldGFkYXRhLmFw
cGVuZChwYWlyLnNlY29uZCk7CisgICAgICAgICAgICBtX2hhc2ggXj0gcGFpci5maXJzdC0+aGFz
aCgpOworICAgICAgICAgICAgbV9oYXNoICs9IHBhaXIuc2Vjb25kLmJpdHMoKTsKKyAgICAgICAg
fQorICAgIH0KKwogICAgIG1fdmFyaWFibGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc29ydGVk
RW50cmllcy5zaXplKCkpOwogICAgIG1fdmFyaWFibGVNZXRhZGF0YS5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KHNvcnRlZEVudHJpZXMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIg
OiBzb3J0ZWRFbnRyaWVzKSB7CkBAIC0xNDAsNiArMTk0LDEwIEBAIGJvb2wgQ29tcGFjdFZhcmlh
YmxlRW52aXJvbm1lbnQ6Om9wZXJhdG9yPT0oY29uc3QgQ29tcGFjdFZhcmlhYmxlRW52aXJvbm1l
bnQmIG90CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAobV92YXJpYWJsZU1ldGFkYXRh
ICE9IG90aGVyLm1fdmFyaWFibGVNZXRhZGF0YSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmIChtX3ByaXZhdGVBY2Nlc3NOYW1lcyAhPSBvdGhlci5tX3ByaXZhdGVBY2Nlc3NOYW1lcykK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX3ByaXZhdGVOYW1lTWV0YWRhdGEgIT0g
b3RoZXIubV9wcml2YXRlTmFtZU1ldGFkYXRhKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTE1Myw2ICsyMTEsMTIgQEAgVmFyaWFibGVFbnZpcm9ubWVu
dCBDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudDo6dG9WYXJpYWJsZUVudmlyb25tZW50KCkgY29u
c3QKICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1fdmFyaWFibGVNZXRhZGF0
YVtpXTsKICAgICB9CiAKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcHJpdmF0ZUFjY2Vz
c05hbWVzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gcmVzdWx0LmFk
ZFByaXZhdGVOYW1lKG1fcHJpdmF0ZUFjY2Vzc05hbWVzW2ldKTsKKyAgICAgICAgQVNTRVJUKGFk
ZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9
IG1fcHJpdmF0ZU5hbWVNZXRhZGF0YVtpXTsKKyAgICB9CisKICAgICBpZiAobV9pc0V2ZXJ5dGhp
bmdDYXB0dXJlZCkKICAgICAgICAgcmVzdWx0Lm1hcmtBbGxWYXJpYWJsZXNBc0NhcHR1cmVkKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZp
cm9ubWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25t
ZW50LmgKaW5kZXggYzEyMTM1MTlmMTcxZDBmYzdlMmVmYzdkMmRlZThhMWFiNDQ5OTA5MC4uNDll
MzQ4YTE0MDRiNzcxZTBmOGM4ODIwMWQwMTk5M2M4NGI3ZGZkOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKQEAgLTQ0LDcgKzQ0
LDggQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0Z1bmN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9iaXRzICYgSXNGdW5jdGlvbjsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBp
c1BhcmFtZXRlcigpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzUGFyYW1ldGVyOyB9CiAgICAg
QUxXQVlTX0lOTElORSBib29sIGlzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlKCkgY29uc3Qg
eyByZXR1cm4gbV9iaXRzICYgSXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGU7IH0KLSAgICBB
TFdBWVNfSU5MSU5FIGJvb2wgaXNQcml2YXRlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAm
IElzUHJpdmF0ZU5hbWU7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQcml2YXRlRmllbGQo
KSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1ByaXZhdGVGaWVsZDsgfQorICAgIEFMV0FZU19J
TkxJTkUgYm9vbCBpc1ByaXZhdGVNZXRob2QoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1By
aXZhdGVNZXRob2Q7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0NhcHR1cmVkKCkg
eyBtX2JpdHMgfD0gSXNDYXB0dXJlZDsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0Nv
bnN0KCkgeyBtX2JpdHMgfD0gSXNDb25zdDsgfQpAQCAtNTYsNyArNTcsOCBAQCBwdWJsaWM6CiAg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzRnVuY3Rpb24oKSB7IG1fYml0cyB8PSBJc0Z1bmN0
aW9uOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzUGFyYW1ldGVyKCkgeyBtX2JpdHMg
fD0gSXNQYXJhbWV0ZXI7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNTbG9wcHlNb2Rl
SG9pc3RpbmdDYW5kaWRhdGUoKSB7IG1fYml0cyB8PSBJc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRp
ZGF0ZTsgfQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1ByaXZhdGVOYW1lKCkgeyBtX2Jp
dHMgfD0gSXNQcml2YXRlTmFtZTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1ByaXZh
dGVGaWVsZCgpIHsgbV9iaXRzIHw9IElzUHJpdmF0ZUZpZWxkOyB9CisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldElzUHJpdmF0ZU1ldGhvZCgpIHsgbV9iaXRzIHw9IElzUHJpdmF0ZU1ldGhvZDsg
fQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGNsZWFySXNWYXIoKSB7IG1fYml0cyAmPSB+SXNW
YXI7IH0KIApAQCAtNzksNyArODEsOCBAQCBwcml2YXRlOgogICAgICAgICBJc0Z1bmN0aW9uID0g
MSA8PCA3LAogICAgICAgICBJc1BhcmFtZXRlciA9IDEgPDwgOCwKICAgICAgICAgSXNTbG9wcHlN
b2RlSG9pc3RpbmdDYW5kaWRhdGUgPSAxIDw8IDksCi0gICAgICAgIElzUHJpdmF0ZU5hbWUgPSAx
IDw8IDEwLAorICAgICAgICBJc1ByaXZhdGVGaWVsZCA9IDEgPDwgMTAsCisgICAgICAgIElzUHJp
dmF0ZU1ldGhvZCA9IDEgPDwgMTEsCiAgICAgfTsKICAgICB1aW50MTZfdCBtX2JpdHMgeyAwIH07
CiB9OwpAQCAtODksMTEgKzkyLDE2IEBAIHN0cnVjdCBWYXJpYWJsZUVudmlyb25tZW50RW50cnlI
YXNoVHJhaXRzIDogSGFzaFRyYWl0czxWYXJpYWJsZUVudmlyb25tZW50RW50cnk+CiB9OwogCiBz
dHJ1Y3QgUHJpdmF0ZU5hbWVFbnRyeSB7CisgICAgZnJpZW5kIGNsYXNzIENhY2hlZFByaXZhdGVO
YW1lRW50cnk7CisKIHB1YmxpYzoKICAgICBQcml2YXRlTmFtZUVudHJ5KHVpbnQxNl90IHRyYWl0
cyA9IDApIHsgbV9iaXRzID0gdHJhaXRzOyB9CiAKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNV
c2VkKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNVc2VkOyB9CiAgICAgQUxXQVlTX0lOTElO
RSBib29sIGlzRGVjbGFyZWQoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc0RlY2xhcmVkOyB9
CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzTWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9iaXRz
ICYgSXNNZXRob2Q7IH0KKworICAgIGJvb2wgaXNQcml2YXRlTWV0aG9kT3JBY2Vzc29yKCkgY29u
c3QgeyByZXR1cm4gaXNNZXRob2QoKTsgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElz
VXNlZCgpIHsgbV9iaXRzIHw9IElzVXNlZDsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJ
c0RlY2xhcmVkKCkgeyBtX2JpdHMgfD0gSXNEZWNsYXJlZDsgfQpAQCAtMTA2LDggKzExNCwxMCBA
QCBwdWJsaWM6CiAgICAgfQogCiAgICAgZW51bSBUcmFpdHMgOiB1aW50MTZfdCB7CisgICAgICAg
IE5vbmUgPSAwLAogICAgICAgICBJc1VzZWQgPSAxIDw8IDAsCiAgICAgICAgIElzRGVjbGFyZWQg
PSAxIDw8IDEsCisgICAgICAgIElzTWV0aG9kID0gMSA8PCAyLAogICAgIH07CiAKIHByaXZhdGU6
CkBAIC0xMTUsMTQgKzEyNSwxNiBAQCBwcml2YXRlOgogfTsKIAogc3RydWN0IFByaXZhdGVOYW1l
RW50cnlIYXNoVHJhaXRzIDogSGFzaFRyYWl0czxQcml2YXRlTmFtZUVudHJ5PiB7Ci0gICAgc3Rh
dGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IGZhbHNlOworICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFsc2U7CiB9OwogCiBjbGFzcyBWYXJpYWJs
ZUVudmlyb25tZW50IHsKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFBhY2tlZFJlZlB0
cjxVbmlxdWVkU3RyaW5nSW1wbD4sIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSwgSWRlbnRpZmll
clJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFZhcmlhYmxl
RW52aXJvbm1lbnRFbnRyeUhhc2hUcmFpdHM+IE1hcDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8UGFj
a2VkUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgUHJpdmF0ZU5hbWVFbnRyeSwgSWRlbnRpZmll
clJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVO
YW1lRW50cnlIYXNoVHJhaXRzPiBQcml2YXRlTmFtZXM7CisKIHB1YmxpYzoKKyAgICB0eXBlZGVm
IEhhc2hNYXA8UGFja2VkUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgUHJpdmF0ZU5hbWVFbnRy
eSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBs
Pj4sIFByaXZhdGVOYW1lRW50cnlIYXNoVHJhaXRzPiBQcml2YXRlTmFtZXM7CisKICAgICBWYXJp
YWJsZUVudmlyb25tZW50KCkgeyB9CiAgICAgVmFyaWFibGVFbnZpcm9ubWVudChWYXJpYWJsZUVu
dmlyb25tZW50JiYgb3RoZXIpCiAgICAgICAgIDogbV9tYXAoV1RGTW92ZShvdGhlci5tX21hcCkp
CkBAIC0xNDQsNiArMTU2LDE2IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6Y29u
c3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuZW5kKCk7IH0KICAgICBBTFdB
WVNfSU5MSU5FIE1hcDo6QWRkUmVzdWx0IGFkZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0lt
cGw+JiBpZGVudGlmaWVyKSB7IHJldHVybiBtX21hcC5hZGQoaWRlbnRpZmllciwgVmFyaWFibGVF
bnZpcm9ubWVudEVudHJ5KCkpOyB9CiAgICAgQUxXQVlTX0lOTElORSBNYXA6OkFkZFJlc3VsdCBh
ZGQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyByZXR1cm4gYWRkKGlkZW50aWZpZXIu
aW1wbCgpKTsgfQorCisgICAgQUxXQVlTX0lOTElORSBQcml2YXRlTmFtZXM6OkFkZFJlc3VsdCBh
ZGRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBhZGRQ
cml2YXRlTmFtZShpZGVudGlmaWVyLmltcGwoKSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIFByaXZh
dGVOYW1lczo6QWRkUmVzdWx0IGFkZFByaXZhdGVOYW1lKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3Ry
aW5nSW1wbD4mIGlkZW50aWZpZXIpCisgICAgeworICAgICAgICBpZiAoIW1fcmFyZURhdGEpCisg
ICAgICAgICAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxWYXJpYWJsZUVudmlyb25tZW50OjpS
YXJlRGF0YT4oKTsKKworICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMu
YWRkKGlkZW50aWZpZXIsIFByaXZhdGVOYW1lRW50cnkoKSk7CisgICAgfQorCiAgICAgQUxXQVlT
X0lOTElORSB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuc2l6ZSgpICsgcHJp
dmF0ZU5hbWVzU2l6ZSgpOyB9CiAgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBtYXBTaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9tYXAuc2l6ZSgpOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGNv
bnRhaW5zKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpIGNvbnN0
IHsgcmV0dXJuIG1fbWFwLmNvbnRhaW5zKGlkZW50aWZpZXIpOyB9CkBAIC0xNjQsMTUgKzE4Niwx
OCBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBQcml2YXRlTmFtZXNSYW5nZSA9IFdURjo6SXRlcmF0
b3JSYW5nZTxQcml2YXRlTmFtZXM6Oml0ZXJhdG9yPjsKIAotICAgIEFMV0FZU19JTkxJTkUgTWFw
OjpBZGRSZXN1bHQgZGVjbGFyZVByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZp
ZXIpIHsgcmV0dXJuIGRlY2xhcmVQcml2YXRlTmFtZShpZGVudGlmaWVyLmltcGwoKSk7IH0KKyAg
ICBBTFdBWVNfSU5MSU5FIE1hcDo6QWRkUmVzdWx0IGRlY2xhcmVQcml2YXRlRmllbGQoY29uc3Qg
SWRlbnRpZmllciYgaWRlbnRpZmllcikgeyByZXR1cm4gZGVjbGFyZVByaXZhdGVGaWVsZChpZGVu
dGlmaWVyLmltcGwoKSk7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdXNlUHJpdmF0ZU5hbWUo
Y29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyB1c2VQcml2YXRlTmFtZShpZGVudGlmaWVy
LmltcGwoKSk7IH0KIAotICAgIE1hcDo6QWRkUmVzdWx0IGRlY2xhcmVQcml2YXRlTmFtZShjb25z
dCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQorICAgIGJvb2wgZGVjbGFy
ZVByaXZhdGVNZXRob2QoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyByZXR1cm4gZGVj
bGFyZVByaXZhdGVNZXRob2QoaWRlbnRpZmllci5pbXBsKCkpOyB9CisgICAgYm9vbCBkZWNsYXJl
UHJpdmF0ZU1ldGhvZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVy
KTsKKworICAgIE1hcDo6QWRkUmVzdWx0IGRlY2xhcmVQcml2YXRlRmllbGQoY29uc3QgUmVmUHRy
PFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikKICAgICB7CiAgICAgICAgIGF1dG8mIG1l
dGEgPSBnZXRPckFkZFByaXZhdGVOYW1lKGlkZW50aWZpZXIuZ2V0KCkpOwogICAgICAgICBtZXRh
LnNldElzRGVjbGFyZWQoKTsKICAgICAgICAgYXV0byBlbnRyeSA9IFZhcmlhYmxlRW52aXJvbm1l
bnRFbnRyeSgpOwotICAgICAgICBlbnRyeS5zZXRJc1ByaXZhdGVOYW1lKCk7CisgICAgICAgIGVu
dHJ5LnNldElzUHJpdmF0ZUZpZWxkKCk7CiAgICAgICAgIGVudHJ5LnNldElzQ29uc3QoKTsKICAg
ICAgICAgZW50cnkuc2V0SXNDYXB0dXJlZCgpOwogICAgICAgICByZXR1cm4gbV9tYXAuYWRkKGlk
ZW50aWZpZXIsIGVudHJ5KTsKQEAgLTE5OSw2ICsyMjQsMTkgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuc2l6ZSgpOwogICAgIH0KIAorICAgIEFM
V0FZU19JTkxJTkUgYm9vbCBoYXNQcml2YXRlQWNjZXNzKCkgY29uc3QKKyAgICB7CisgICAgICAg
IGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBm
b3IgKGF1dG8gZW50cnkgOiBwcml2YXRlTmFtZXMoKSkgeworICAgICAgICAgICAgaWYgKGVudHJ5
LnZhbHVlLmlzUHJpdmF0ZU1ldGhvZE9yQWNlc3NvcigpKQorICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAg
IEFMV0FZU19JTkxJTkUgYm9vbCBoYXNQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVu
dGlmaWVyKQogICAgIHsKICAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQpAQCAtMjgwLDYgKzMxOCw5
IEBAIHByaXZhdGU6CiAKICAgICBWZWN0b3I8UGFja2VkUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBs
Pj4gbV92YXJpYWJsZXM7CiAgICAgVmVjdG9yPFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeT4gbV92
YXJpYWJsZU1ldGFkYXRhOworICAgIFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiBt
X3ByaXZhdGVBY2Nlc3NOYW1lczsKKyAgICBWZWN0b3I8UHJpdmF0ZU5hbWVFbnRyeT4gbV9wcml2
YXRlTmFtZU1ldGFkYXRhOworCiAgICAgdW5zaWduZWQgbV9oYXNoOwogICAgIGJvb2wgbV9pc0V2
ZXJ5dGhpbmdDYXB0dXJlZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DYWNoZWRUeXBlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
YWNoZWRUeXBlcy5jcHAKaW5kZXggZTQ0YzFhMzk3OTRiMjRiY2Q4N2FlZjM5OGE3YzI4MjU3ZWYw
YzUyZC4uMTlhYWY4MTZhNDE3NjI3YjAwYjUyYjc2NTIxZWFlZTgzMWM5NDJjNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcApAQCAtOTgwLDYgKzk4
MCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9iaXRWZWN0b3JzLmVuY29kZShlbmNvZGVyLCByYXJl
RGF0YS5tX2JpdFZlY3RvcnMpOwogICAgICAgICBtX2NvbnN0YW50SWRlbnRpZmllclNldHMuZW5j
b2RlKGVuY29kZXIsIHJhcmVEYXRhLm1fY29uc3RhbnRJZGVudGlmaWVyU2V0cyk7CiAgICAgICAg
IG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSByYXJlRGF0YS5tX25lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyOworICAgICAgICBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID0gcmFyZURh
dGEubV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudDsKICAgICB9CiAKICAgICBVbmxpbmtlZENvZGVC
bG9jazo6UmFyZURhdGEqIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKSBjb25zdApAQCAtOTk0LDYg
Kzk5NSw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9iaXRWZWN0b3JzLmRlY29kZShkZWNvZGVyLCBy
YXJlRGF0YS0+bV9iaXRWZWN0b3JzKTsKICAgICAgICAgbV9jb25zdGFudElkZW50aWZpZXJTZXRz
LmRlY29kZShkZWNvZGVyLCByYXJlRGF0YS0+bV9jb25zdGFudElkZW50aWZpZXJTZXRzKTsKICAg
ICAgICAgcmFyZURhdGEtPm1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSBtX25lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyOworICAgICAgICByYXJlRGF0YS0+bV9wcml2YXRlQnJhbmRSZXF1
aXJlbWVudCA9IG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ7CiAgICAgICAgIHJldHVybiByYXJl
RGF0YTsKICAgICB9CiAKQEAgLTEwMDcsNiArMTAwOSw3IEBAIHByaXZhdGU6CiAgICAgQ2FjaGVk
VmVjdG9yPENhY2hlZEJpdFZlY3Rvcj4gbV9iaXRWZWN0b3JzOwogICAgIENhY2hlZFZlY3RvcjxD
YWNoZWRDb25zdGFudElkZW50aWZpZXJTZXRFbnRyeT4gbV9jb25zdGFudElkZW50aWZpZXJTZXRz
OwogICAgIHVuc2lnbmVkIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgOiAxOworICAgIHVu
c2lnbmVkIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgOiAxOwogfTsKIAogY2xhc3MgQ2FjaGVk
VmFyaWFibGVFbnZpcm9ubWVudFJhcmVEYXRhIDogcHVibGljIENhY2hlZE9iamVjdDxWYXJpYWJs
ZUVudmlyb25tZW50OjpSYXJlRGF0YT4gewpAQCAtMTE4OCw3ICsxMTkxLDcgQEAgcHVibGljOgog
ICAgIH0KIAogcHJpdmF0ZToKLSAgICBDYWNoZWRIYXNoU2V0PENhY2hlZFJlZlB0cjxDYWNoZWRV
bmlxdWVkU3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPiBtX3ByaXZhdGVOYW1lczsKKyAg
ICBDYWNoZWRIYXNoTWFwPENhY2hlZFJlZlB0cjxDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbCwgVW5p
cXVlZFN0cmluZ0ltcGwsIFdURjo6UGFja2VkUHRyVHJhaXRzPFVuaXF1ZWRTdHJpbmdJbXBsPj4s
IFByaXZhdGVOYW1lRW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxV
bmlxdWVkU3RyaW5nSW1wbD4+LCBQcml2YXRlTmFtZUVudHJ5SGFzaFRyYWl0cz4gbV9wcml2YXRl
TmFtZXM7CiB9OwogCiBjbGFzcyBDYWNoZWRTeW1ib2xUYWJsZSA6IHB1YmxpYyBDYWNoZWRPYmpl
Y3Q8U3ltYm9sVGFibGU+IHsKQEAgLTE3NDQsMjEgKzE3NDcsMjEgQEAgcHVibGljOgogICAgIHZv
aWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlOjpSYXJlRGF0YSYgcmFyZURhdGEpCiAgICAgewogICAgICAgICBtX2NsYXNzU291cmNlLmVu
Y29kZShlbmNvZGVyLCByYXJlRGF0YS5tX2NsYXNzU291cmNlKTsKLSAgICAgICAgbV9wYXJlbnRT
Y29wZVREWlZhcmlhYmxlcy5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9wYXJlbnRTY29wZVRE
WlZhcmlhYmxlcyk7CisgICAgICAgIG1fcGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50LmVu
Y29kZShlbmNvZGVyLCByYXJlRGF0YS5tX3BhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCk7
CiAgICAgfQogCiAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlJhcmVEYXRhKiBkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikgY29uc3QKICAgICB7CiAgICAgICAgIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjpSYXJlRGF0YSogcmFyZURhdGEgPSBuZXcgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU6OlJhcmVEYXRhIHsgfTsKICAgICAgICAgbV9jbGFzc1NvdXJjZS5kZWNvZGUoZGVj
b2RlciwgcmFyZURhdGEtPm1fY2xhc3NTb3VyY2UpOwotICAgICAgICBhdXRvIHBhcmVudFNjb3Bl
VERaVmFyaWFibGVzID0gbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5kZWNvZGUoZGVjb2Rlcik7
Ci0gICAgICAgIHJhcmVEYXRhLT5tX3BhcmVudFNjb3BlVERaVmFyaWFibGVzID0gV1RGTW92ZShw
YXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CisgICAgICAgIGF1dG8gcGFyZW50U2NvcGVWYXJpYWJs
ZUVudmlyb25tZW50ID0gbV9wYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1lbnQuZGVjb2RlKGRl
Y29kZXIpOworICAgICAgICByYXJlRGF0YS0+bV9wYXJlbnRTY29wZVZhcmlhYmxlRW52aXJvbm1l
bnQgPSBXVEZNb3ZlKHBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudCk7CiAgICAgICAgIHJl
dHVybiByYXJlRGF0YTsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgQ2FjaGVkU291cmNlQ29kZVdp
dGhvdXRQcm92aWRlciBtX2NsYXNzU291cmNlOwotICAgIENhY2hlZENvbXBhY3RWYXJpYWJsZU1h
cEhhbmRsZSBtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzOworICAgIENhY2hlZENvbXBhY3RWYXJp
YWJsZU1hcEhhbmRsZSBtX3BhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudDsKIH07CiAKIGNs
YXNzIENhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8VW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU+IHsKQEAgLTE3OTQsNiArMTc5Nyw3IEBAIHB1YmxpYzoKICAg
ICB1bnNpZ25lZCBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX3N1cGVyQmluZGluZzsg
fQogICAgIHVuc2lnbmVkIGRlcml2ZWRDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVy
aXZlZENvbnRleHRUeXBlOyB9CiAgICAgdW5zaWduZWQgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIoKSBjb25zdCB7IHJldHVybiBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOyB9CisgICAg
dW5zaWduZWQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX3ByaXZh
dGVCcmFuZFJlcXVpcmVtZW50OyB9CiAKICAgICBJZGVudGlmaWVyIG5hbWUoRGVjb2RlciYgZGVj
b2RlcikgY29uc3QgeyByZXR1cm4gbV9uYW1lLmRlY29kZShkZWNvZGVyKTsgfQogICAgIElkZW50
aWZpZXIgZWNtYU5hbWUoRGVjb2RlciYgZGVjb2RlcikgY29uc3QgeyByZXR1cm4gbV9lY21hTmFt
ZS5kZWNvZGUoZGVjb2Rlcik7IH0KQEAgLTE4MjIsNyArMTgyNiw4IEBAIHByaXZhdGU6CiAgICAg
dW5zaWduZWQgbV9wYXJhbWV0ZXJzU3RhcnRPZmZzZXQgOiAzMTsKICAgICB1bnNpZ25lZCBtX3R5
cGVQcm9maWxpbmdTdGFydE9mZnNldDsKICAgICB1bnNpZ25lZCBtX3R5cGVQcm9maWxpbmdFbmRP
ZmZzZXQ7Ci0gICAgdW5zaWduZWQgbV9wYXJhbWV0ZXJDb3VudDsKKyAgICB1bnNpZ25lZCBtX3Bh
cmFtZXRlckNvdW50OjMxOworICAgIHVuc2lnbmVkIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQg
OiAxOwogICAgIFNvdXJjZVBhcnNlTW9kZSBtX3NvdXJjZVBhcnNlTW9kZTsKICAgICB1bnNpZ25l
ZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CiAgICAgdW5zaWduZWQgbV9mdW5jdGlvbk1vZGUgOiAy
OyAvLyBGdW5jdGlvbk1vZGUKQEAgLTE4NzksNyArMTg4NCw2IEBAIHB1YmxpYzoKICAgICB1bnNp
Z25lZCBpc0NsYXNzQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDbGFzc0NvbnRleHQ7IH0K
ICAgICB1bnNpZ25lZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBtX2NvbnN0cnVj
dG9yS2luZDsgfQogICAgIHVuc2lnbmVkIGRlcml2ZWRDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGVyaXZlZENvbnRleHRUeXBlOyB9Ci0gICAgdW5zaWduZWQgbmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIoKSBjb25zdCB7IHJldHVybiBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
OyB9CiAgICAgdW5zaWduZWQgZXZhbENvbnRleHRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9ldmFs
Q29udGV4dFR5cGU7IH0KICAgICB1bnNpZ25lZCBoYXNUYWlsQ2FsbHMoKSBjb25zdCB7IHJldHVy
biBtX2hhc1RhaWxDYWxsczsgfQogICAgIHVuc2lnbmVkIGhhc0NoZWNrcG9pbnRzKCkgY29uc3Qg
eyByZXR1cm4gbV9oYXNDaGVja3BvaW50czsgfQpAQCAtMTkxMSw3ICsxOTE1LDYgQEAgcHJpdmF0
ZToKICAgICB1bnNpZ25lZCBtX2lzQ2xhc3NDb250ZXh0IDogMTsKICAgICB1bnNpZ25lZCBtX2Nv
bnN0cnVjdG9yS2luZCA6IDI7CiAgICAgdW5zaWduZWQgbV9kZXJpdmVkQ29udGV4dFR5cGUgOiAy
OwotICAgIHVuc2lnbmVkIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgOiAxOwogICAgIHVu
c2lnbmVkIG1fZXZhbENvbnRleHRUeXBlIDogMjsKICAgICB1bnNpZ25lZCBtX2hhc1RhaWxDYWxs
cyA6IDE7CiAgICAgdW5zaWduZWQgbV9jb2RlVHlwZSA6IDI7CkBAIC0yMTkyLDYgKzIxOTUsNyBA
QCBBTFdBWVNfSU5MSU5FIHZvaWQgQ2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgVW5saQogICAgIG1fc3VwZXJCaW5kaW5nID0gZXhlY3V0YWJs
ZS5tX3N1cGVyQmluZGluZzsKICAgICBtX2Rlcml2ZWRDb250ZXh0VHlwZSA9IGV4ZWN1dGFibGUu
bV9kZXJpdmVkQ29udGV4dFR5cGU7CiAgICAgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9
IGV4ZWN1dGFibGUubV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjsKKyAgICBtX3ByaXZhdGVC
cmFuZFJlcXVpcmVtZW50ID0gZXhlY3V0YWJsZS5tX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50Owog
CiAgICAgbV9yYXJlRGF0YS5lbmNvZGUoZW5jb2RlciwgZXhlY3V0YWJsZS5tX3JhcmVEYXRhLmdl
dCgpKTsKIApAQCAtMjIzMyw2ICsyMjM3LDcgQEAgQUxXQVlTX0lOTElORSBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoRGVjb2RlciYgZGUKICAg
ICAsIG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KGNhY2hlZEV4ZWN1dGFibGUudHlwZVByb2Zp
bGluZ1N0YXJ0T2Zmc2V0KCkpCiAgICAgLCBtX3R5cGVQcm9maWxpbmdFbmRPZmZzZXQoY2FjaGVk
RXhlY3V0YWJsZS50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkpCiAgICAgLCBtX3BhcmFtZXRlckNv
dW50KGNhY2hlZEV4ZWN1dGFibGUucGFyYW1ldGVyQ291bnQoKSkKKyAgICAsIG1fcHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQoY2FjaGVkRXhlY3V0YWJsZS5wcml2YXRlQnJhbmRSZXF1aXJlbWVudCgp
KQogICAgICwgbV9mZWF0dXJlcyhjYWNoZWRFeGVjdXRhYmxlLmZlYXR1cmVzKCkpCiAgICAgLCBt
X3NvdXJjZVBhcnNlTW9kZShjYWNoZWRFeGVjdXRhYmxlLnNvdXJjZVBhcnNlTW9kZSgpKQogICAg
ICwgbV9jb25zdHJ1Y3RvcktpbmQoY2FjaGVkRXhlY3V0YWJsZS5jb25zdHJ1Y3RvcktpbmQoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCmluZGV4IGFmZGNj
OTAyOTEzNzNmNTBkMDU3MGUzOGM4ZDkzNWEwYWJmYzljOWIuLjVlNzVlYmVkYTdiZGZlNDYyZTIx
ZjQ2MDRjYmQwNjc2YTU5MjBmZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvZGVDYWNoZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29kZUNhY2hlLmNwcApAQCAtOTIsOSArOTIsMTIgQEAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBn
ZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrSW1wbChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHMK
ICAgICBib29sIHVzZXNFdmFsID0gcm9vdE5vZGUtPmZlYXR1cmVzKCkgJiBFdmFsRmVhdHVyZTsK
ICAgICBFQ01BTW9kZSBlY21hTW9kZSA9IHJvb3ROb2RlLT5mZWF0dXJlcygpICYgU3RyaWN0TW9k
ZUZlYXR1cmUgPyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCk7CiAgICAg
TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSBO
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm87Ci0gICAgaWYgY29uc3RleHByIChzdGQ6Omlz
X3NhbWVfdjxFeGVjdXRhYmxlVHlwZSwgRGlyZWN0RXZhbEV4ZWN1dGFibGU+KQorICAgIFByaXZh
dGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID0gUHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQ6Ok5vbmU7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWVfdjxFeGVj
dXRhYmxlVHlwZSwgRGlyZWN0RXZhbEV4ZWN1dGFibGU+KSB7CiAgICAgICAgIG5lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyID0gZXhlY3V0YWJsZS0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIo
KTsKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbyh1c2VzRXZhbCwgZmFsc2UsIGZh
bHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIHNjcmlwdE1vZGUsIFN1cGVyQmluZGluZzo6Tm90
TmVlZGVkLCBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwgZGVy
aXZlZENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgaXNBcnJvd0Z1bmN0
aW9uQ29udGV4dCwgZmFsc2UsIGV2YWxDb250ZXh0VHlwZSk7CisgICAgICAgIHByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50ID0gZXhlY3V0YWJsZS0+cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKTsKKyAg
ICB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8odXNlc0V2YWwsIGZhbHNlLCBw
cml2YXRlQnJhbmRSZXF1aXJlbWVudCwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgc2Ny
aXB0TW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIENhY2hlVHlwZXM8VW5saW5rZWRDb2Rl
QmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBmYWxzZSwgZXZhbENvbnRleHRU
eXBlKTsKIAogICAgIFVubGlua2VkQ29kZUJsb2NrVHlwZSogdW5saW5rZWRDb2RlQmxvY2sgPSBV
bmxpbmtlZENvZGVCbG9ja1R5cGU6OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZUluZm8sIGNvZGVHZW5l
cmF0aW9uTW9kZSk7CiAgICAgdW5saW5rZWRDb2RlQmxvY2stPnJlY29yZFBhcnNlKHJvb3ROb2Rl
LT5mZWF0dXJlcygpLCByb290Tm9kZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwgbGluZUNvdW50
LCB1bmxpbmtlZEVuZENvbHVtbik7CkBAIC0yNDQsNyArMjQ3LDcgQEAgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqIENvZGVDYWNoZTo6Z2V0VW5saW5rZWRHbG9iYWxGdW5jdGlvbkV4ZWN1dGFi
bGUoVk0mIHYKICAgICAvLyBUaGUgRnVuY3Rpb24gY29uc3RydWN0b3Igb25seSBoYXMgYWNjZXNz
IHRvIGdsb2JhbCB2YXJpYWJsZXMsIHNvIG5vIHZhcmlhYmxlcyB3aWxsIGJlIHVuZGVyIFREWiB1
bmxlc3MgdGhleSdyZQogICAgIC8vIGluIHRoZSBnbG9iYWwgbGV4aWNhbCBlbnZpcm9ubWVudCwg
d2hpY2ggd2UgYWx3YXlzIFREWiBjaGVjayBhY2Nlc3NlcyBmcm9tLgogICAgIENvbnN0cnVjdEFi
aWxpdHkgY29uc3RydWN0QWJpbGl0eSA9IGNvbnN0cnVjdEFiaWxpdHlGb3JQYXJzZU1vZGUobWV0
YWRhdGEtPnBhcnNlTW9kZSgpKTsKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVu
Y3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSh2bSwg
c291cmNlLCBtZXRhZGF0YSwgVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0
eSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBXVEY6Om51bGxvcHQsIERlcml2ZWRDb250
ZXh0VHlwZTo6Tm9uZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vKTsKKyAgICBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSh2bSwgc291cmNlLCBtZXRhZGF0YSwgVW5saW5rZWROb3Jt
YWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2lj
LCBXVEY6Om51bGxvcHQsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgTmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXI6Ok5vLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZSk7CiAKICAgICBp
ZiAoIXNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2VVUkxEaXJlY3RpdmUoKS5pc051bGwoKSkKICAg
ICAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5zZXRTb3VyY2VVUkxEaXJlY3RpdmUoc291cmNlLnBy
b3ZpZGVyKCktPnNvdXJjZVVSTERpcmVjdGl2ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcAppbmRleCBmYzc2MDFk
YTIwNGIxN2I3ZjZlOTQxYzY0ODRkMzYwZTVkNGZmNDY5Li40MTY0MjYyMjA4YjlkMzVjMzU2ZWM1
ZjMxNzY1MjRiN2U1M2VhOGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCi1EaXJlY3RFdmFsRXhlY3V0YWJsZSogRGlyZWN0RXZhbEV4ZWN1dGFi
bGU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJy
b3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29u
dGV4dFR5cGUgZXZhbENvbnRleHRUeXBlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiB2YXJp
YWJsZXNVbmRlclREWiwgRUNNQU1vZGUgZWNtYU1vZGUpCitEaXJlY3RFdmFsRXhlY3V0YWJsZSog
RGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29u
dGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCwg
Ym9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlv
biwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgY29uc3QgVmFyaWFibGVFbnZpcm9u
bWVudCogdmFyaWFibGVzVW5kZXJURFosIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CkBAIC00NCw3ICs0NCw3IEBAIERpcmVjdEV2YWxFeGVjdXRhYmxlKiBEaXJlY3RF
dmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8qIGV4ZWN1dGFibGUgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxEaXJlY3RFdmFsRXhlY3V0YWJsZT4odm0uaGVhcCkpIERp
cmVjdEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNlLCBlY21hTW9kZS5pc1N0cmlj
dCgpLCBkZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBpc0Fy
cm93RnVuY3Rpb25Db250ZXh0LCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250ZXh0
VHlwZSk7CisgICAgYXV0byogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PERpcmVjdEV2YWxFeGVjdXRhYmxlPih2bS5oZWFwKSkgRGlyZWN0RXZhbEV4ZWN1dGFibGUoZ2xv
YmFsT2JqZWN0LCBzb3VyY2UsIGVjbWFNb2RlLmlzU3RyaWN0KCksIGRlcml2ZWRDb250ZXh0VHlw
ZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBp
c0Fycm93RnVuY3Rpb25Db250ZXh0LCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250
ZXh0VHlwZSk7CiAgICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogCiAgICAgUGFy
c2VyRXJyb3IgZXJyb3I7CkBAIC02NywxMCArNjcsMTAgQEAgRGlyZWN0RXZhbEV4ZWN1dGFibGUq
IERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwKICAgICByZXR1cm4gZXhlY3V0YWJsZTsKIH0KIAotRGlyZWN0RXZhbEV4ZWN1dGFibGU6OkRp
cmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlw
ZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJ
bnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKQot
ICAgIDogRXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGluU3RyaWN0Q29udGV4
dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBpc0luc2lkZU9y
ZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIpCitEaXJlY3RFdmFsRXhlY3V0YWJsZTo6RGlyZWN0RXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGluU3Ry
aWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVC
cmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29sIGlzQXJyb3dGdW5j
dGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5
cGUgZXZhbENvbnRleHRUeXBlKQorICAgIDogRXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBz
b3VyY2UsIGluU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rp
b25Db250ZXh0LCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250ZXh0VHlwZSwgbmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KQogewotICAg
IEFTU0VSVChuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9PSBOZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplcjo6Tm8gfHwgZGVyaXZlZENvbnRleHRUeXBlID09IERlcml2ZWRDb250ZXh0VHlwZTo6
RGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCk7CisgICAgQVNTRVJUKChuZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplciA9PSBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8gJiYgcHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQgPT0gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmUpIHx8IGRlcml2
ZWRDb250ZXh0VHlwZSA9PSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRDb25zdHJ1Y3RvckNv
bnRleHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oCmluZGV4IDI0MDc1YTdmNWEz
NmM3M2ZlYmE0MDdlNzEwOWE2ZmMzM2YyNzBkNGIuLmE0ZmE2NzYzY2FiMTViNWRkYTY0NWFhMDJj
OTYyM2I3OTIyYmQxODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RpcmVjdEV2YWxFeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuaApAQCAtMzEsOSArMzEsOSBAQCBuYW1lc3BhY2UgSlND
IHsKIAogY2xhc3MgRGlyZWN0RXZhbEV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgRXZhbEV4ZWN1
dGFibGUgewogcHVibGljOgotICAgIHN0YXRpYyBEaXJlY3RFdmFsRXhlY3V0YWJsZSogY3JlYXRl
KEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIERlcml2ZWRDb250ZXh0VHlwZSwg
TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwg
Ym9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSwgY29uc3QgVmFy
aWFibGVFbnZpcm9ubWVudCosIEVDTUFNb2RlKTsKKyAgICBzdGF0aWMgRGlyZWN0RXZhbEV4ZWN1
dGFibGUqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBEZXJpdmVk
Q29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1
aXJlbWVudCwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5h
cnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50Kiwg
RUNNQU1vZGUpOwogcHJpdmF0ZToKLSAgICBEaXJlY3RFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9i
amVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENv
bnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0Fycm93RnVuY3Rp
b25Db250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBl
KTsKKyAgICBEaXJlY3RFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJj
ZUNvZGUmLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGJvb2wgaXNBcnJv
d0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250
ZXh0VHlwZSk7CiB9OwogCiBzdGF0aWNfYXNzZXJ0KHNpemVvZihEaXJlY3RFdmFsRXhlY3V0YWJs
ZSkgPT0gc2l6ZW9mKEV2YWxFeGVjdXRhYmxlKSwgIiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuY3BwCmluZGV4IDJlYzEzN2E3MzYyMjQyMWI1
ZjlkMTIyYzI3MzUxOGQ1ZTYzODY0OWMuLjBiM2Q0MTY0YWE2NWFiZDAwNGZlZTk4YjhjZWNlODc5
NmRmYmMyYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxF
eGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhl
Y3V0YWJsZS5jcHAKQEAgLTMyLDkgKzMyLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBD
bGFzc0luZm8gRXZhbEV4ZWN1dGFibGU6OnNfaW5mbyA9IHsgIkV2YWxFeGVjdXRhYmxlIiwgJkJh
c2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShFdmFsRXhl
Y3V0YWJsZSkgfTsKIAotRXZhbEV4ZWN1dGFibGU6OkV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpblN0cmlj
dENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNB
cnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxD
b250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKQorRXZhbEV4ZWN1dGFibGU6OkV2YWxFeGVjdXRhYmxl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwg
Ym9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5
cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVu
Y3Rpb24sIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJl
bWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCkKICAgICA6IEJhc2UoZ2xvYmFsT2JqZWN0LT52
bSgpLmV2YWxFeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBnbG9iYWxPYmplY3QtPnZtKCksIHNv
dXJjZSwgaW5TdHJpY3RDb250ZXh0LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlv
bkNvbnRleHQsIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgZXZhbENvbnRleHRUeXBlLCBOb0lu
dHJpbnNpYykKICAgICAsIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKSkKKyAgICAsIG1fcHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHByaXZhdGVCcmFuZFJlcXVpcmVt
ZW50KSkKIHsKICAgICBBU1NFUlQoc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZVR5cGUoKSA9PSBT
b3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dyYW0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmgKaW5kZXggNjdlNjljODYyOWJhM2ZiMzgx
MTQ4MTEzNmI4ZTdlOTk0ODBlZDc3MS4uNTI2MDI1MWFjZWUyMjVlOWI1NzlmOGU4MmY2ZWRjODEw
YzdhZGVkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4
ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0
YWJsZS5oCkBAIC02MiwxMyArNjIsMTQgQEAgcHVibGljOgogCiAgICAgREVDTEFSRV9JTkZPOwog
Ci0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVj
dXRhYmxlSW5mbyh1c2VzRXZhbCgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9u
ZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwg
U291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIG5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgZmFsc2Us
IGV2YWxDb250ZXh0VHlwZSgpKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZv
KCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8odXNlc0V2YWwoKSwgZmFsc2UsIFByaXZh
dGVCcmFuZFJlcXVpcmVtZW50OjpOb25lLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBK
U1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3Vy
Y2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUoKSwgbmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIoKSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgZXZh
bENvbnRleHRUeXBlKCkpOyB9CiAKICAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMoKSB7IHJldHVy
biBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtVmFyaWFibGVzKCk7IH0KICAgICB1bnNpZ25l
ZCBudW1GdW5jdGlvbkhvaXN0aW5nQ2FuZGlkYXRlcygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFs
Q29kZUJsb2NrLT5udW1GdW5jdGlvbkhvaXN0aW5nQ2FuZGlkYXRlcygpOyB9CiAgICAgdW5zaWdu
ZWQgbnVtVG9wTGV2ZWxGdW5jdGlvbkRlY2xzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2Rl
QmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpOyB9CiAgICAgYm9vbCBhbGxvd0RpcmVjdEV2
YWxDYWNoZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5hbGxvd0Rp
cmVjdEV2YWxDYWNoZSgpOyB9CiAgICAgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxOZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplcj4obV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcik7IH0KKyAg
ICBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PFByaXZhdGVCcmFuZFJlcXVpcmVtZW50PihtX3ByaXZhdGVC
cmFuZFJlcXVpcmVtZW50KTsgfQogICAgIFRlbXBsYXRlT2JqZWN0TWFwJiBlbnN1cmVUZW1wbGF0
ZU9iamVjdE1hcChWTSYpOwogCiBwcm90ZWN0ZWQ6CkBAIC03NiwxMSArNzcsMTIgQEAgcHJvdGVj
dGVkOgogICAgIGZyaWVuZCBjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOwogCiAgICAgdXNpbmcgQmFz
ZTo6ZmluaXNoQ3JlYXRpb247Ci0gICAgRXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqLCBj
b25zdCBTb3VyY2VDb2RlJiwgYm9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlw
ZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5j
dGlvbiwgRXZhbENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcik7CisgICAg
RXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBp
blN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25D
b250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBlLCBO
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOwogCiAg
ICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAg
ICAgdW5zaWduZWQgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA6IDE7CisgICAgdW5zaWdu
ZWQgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA6IDE7CiAKICAgICBXcml0ZUJhcnJpZXI8RXhl
Y3V0YWJsZVRvQ29kZUJsb2NrRWRnZT4gbV9ldmFsQ29kZUJsb2NrOwogICAgIFdyaXRlQmFycmll
cjxVbmxpbmtlZEV2YWxDb2RlQmxvY2s+IG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAppbmRl
eCA0MTRlN2JkZjc3YWI0ZmM3NjRiNTY1ZGY2ZjFiZDRhMGQ2NGIzMGNiLi43YTI5MTBlODg3ZjJh
MTRlMmY1ODkyNzVhMGNiMjE4YzdiNWVkODI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcApAQCAtMzI2LDcgKzMyNiw3IEBAIEpT
T2JqZWN0KiBjcmVhdGVURFpFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiBK
U09iamVjdCogY3JlYXRlSW52YWxpZFByaXZhdGVOYW1lRXJyb3IoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
bWFrZVN0cmluZygiQ2Fubm90IGFjY2VzcyBpbnZhbGlkIHByaXZhdGUgZmllbGQiKSwgZGVmYXVs
dFNvdXJjZUFwcGVuZGVyLCBUeXBlTm90aGluZyk7CisgICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoIkludmFsaWQgcHJpdmF0ZSBtZW1iZXIgYWNjZXNz
IiksIGRlZmF1bHRTb3VyY2VBcHBlbmRlciwgVHlwZU5vdGhpbmcpOwogfQogCiBKU09iamVjdCog
Y3JlYXRlUmVkZWZpbmVkUHJpdmF0ZU5hbWVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RF
dmFsRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVj
dEV2YWxFeGVjdXRhYmxlLmNwcAppbmRleCA5OGQ3ZTJiODNhMjc5MTJmYTU0YzJjMjVlZTE4M2Jm
YjRlMDQ2YzczLi43NDk4MjA1MDE4Y2RlZjhmM2Y4MzY3YjRiYmUyZWY3OWRiZDE3YzFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRh
YmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxF
eGVjdXRhYmxlLmNwcApAQCAtNjksNyArNjksNyBAQCBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJ
bmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagog
Y29uc3RleHByIGJvb2wgaW5TdHJpY3RDb250ZXh0ID0gZmFsc2U7CiBjb25zdGV4cHIgYm9vbCBp
bnNpZGVPcmRpbmFyeUZ1bmN0aW9uID0gZmFsc2U7CiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpJ
bmRpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlw
ZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRl
eHRUeXBlKQotICAgIDogRXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGluU3Ry
aWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBp
bnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBldmFsQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyOjpObykKKyAgICA6IEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNl
LCBpblN0cmljdENvbnRleHQsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29u
dGV4dCwgaW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgZXZhbENvbnRleHRUeXBlLCBOZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplcjo6Tm8sIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lKQogewog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCmluZGV4IGEzMDY5
YTAyY2RjM2FhOTgxZTMyMDU0NWFkMWE5NDU4M2QxMzRhYjAuLmJhYThmYzMyN2U0ZTJkZjA2ZGMy
MDE2ZDlmZDExZDhjYmExZDkxM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U2NvcGUuY3BwCkBAIC0zMzksOCArMzM5LDE0IEBAIHZvaWQgSlNTY29wZTo6Y29sbGVjdENsb3N1
cmVWYXJpYWJsZXNVbmRlclREWihKU1Njb3BlKiBzY29wZSwgVmFyaWFibGVFbnZpcm9ubWVuCiAg
ICAgICAgIGZvciAoYXV0byBlbmQgPSBzeW1ib2xUYWJsZS0+ZW5kKGxvY2tlciksIGl0ZXIgPSBz
eW1ib2xUYWJsZS0+YmVnaW4obG9ja2VyKTsgaXRlciAhPSBlbmQ7ICsraXRlcikKICAgICAgICAg
ICAgIHJlc3VsdC5hZGQoaXRlci0+a2V5KTsKICAgICAgICAgaWYgKHN5bWJvbFRhYmxlLT5oYXNQ
cml2YXRlTmFtZXMoKSkgewotICAgICAgICAgICAgZm9yIChhdXRvIG5hbWUgOiBzeW1ib2xUYWJs
ZS0+cHJpdmF0ZU5hbWVzKCkpCi0gICAgICAgICAgICAgICAgcmVzdWx0LnVzZVByaXZhdGVOYW1l
KG5hbWUpOyAgICAKKyAgICAgICAgICAgIGF1dG8gcHJpdmF0ZU5hbWVzID0gc3ltYm9sVGFibGUt
PnByaXZhdGVOYW1lcygpOworICAgICAgICAgICAgZm9yIChhdXRvIGVuZCA9IHByaXZhdGVOYW1l
cy5lbmQoKSwgaXRlciA9IHByaXZhdGVOYW1lcy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVy
KSB7CisgICAgICAgICAgICAgICAgaWYgKGl0ZXItPnZhbHVlLmlzUHJpdmF0ZU1ldGhvZE9yQWNl
c3NvcigpKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gcmVzdWx0LmFk
ZFByaXZhdGVOYW1lKGl0ZXItPmtleSk7CisgICAgICAgICAgICAgICAgICAgIGFkZFJlc3VsdC5p
dGVyYXRvci0+dmFsdWUgPSBpdGVyLT52YWx1ZTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0LnVzZVByaXZhdGVOYW1lKGl0ZXItPmtleSk7CisgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaAppbmRleCAwOTlkODk5
YWQ1ZTYzYTc0MzM1OGUyYWJiMjBhYjM0ZjU5Yjk2MGVjLi5iODU5MTRmZjhlYTBkZDAzYzYyNDc3
NTM1OTZmZjQyZDU2MTY2YjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVi
bGljOgogCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJs
ZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1c2VzRXZhbCgpLCBmYWxzZSwg
ZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUs
IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUV2YWx1YXRl
TW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpO
bywgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25l
KTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4g
RXhlY3V0YWJsZUluZm8odXNlc0V2YWwoKSwgZmFsc2UsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50
OjpOb25lLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6
Ok1vZHVsZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxl
RXZhbHVhdGVNb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUoKSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXI6Ok5vLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlLCBFdmFsQ29udGV4dFR5
cGU6Ok5vbmUpOyB9CiAKICAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlu
a2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygpIHsgcmV0dXJuIG1fdW5saW5rZWRNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9ucy5jcHAKaW5kZXggMGQyZjVhY2Y3OWNkZjU3NDk4ZTZhNzNjMDY3MmQ2ZGQ0YmY4ODQ3OC4u
ZjRkNjBlNWI0MDc0NzUxMzMyMmQ0MzY0NThmZDg4ZWZhODM5OTJkNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKQEAgLTUzMSw2ICs1MzEsOSBAQCB2b2lkIE9w
dGlvbnM6OnJlY29tcHV0ZURlcGVuZGVudE9wdGlvbnMoKQogICAgICAgICBPcHRpb25zOjpyYW5k
b21JbnRlZ3JpdHlBdWRpdFJhdGUoKSA9IDA7CiAgICAgZWxzZSBpZiAoT3B0aW9uczo6cmFuZG9t
SW50ZWdyaXR5QXVkaXRSYXRlKCkgPiAxLjApCiAgICAgICAgIE9wdGlvbnM6OnJhbmRvbUludGVn
cml0eUF1ZGl0UmF0ZSgpID0gMS4wOworICAgIAorICAgIGlmIChPcHRpb25zOjp1c2VQcml2YXRl
TWV0aG9kcygpKQorICAgICAgICBPcHRpb25zOjp1c2VQcml2YXRlQ2xhc3NGaWVsZHMoKSA9IHRy
dWU7CiAKICAgICBpZiAoIU9wdGlvbnM6OmFsbG93VW5zdXBwb3J0ZWRUaWVycygpKSB7CiAjZGVm
aW5lIERJU0FCTEVfVElFUlMob3B0aW9uLCBmbGFncywgLi4uKSBkbyB7IFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCmluZGV4IGE5ZGY1NWViZDI3NmNlMTRk
ZGM5Yjg3Y2QwMWU2ZWJjN2YyZjc3ZjUuLjdjNWMyZWU4MjRhYzY4ZTYwMWEzOWE5OWViYjRkNzZm
ODUzZThiMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnNMaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3Qu
aApAQCAtNTE0LDYgKzUxNCw3IEBAIGNvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5U3Ry
ZWFtaW5nQXBpID0gZmFsc2U7CiAgICAgdihCb29sLCBleHBvc2VQcm9maWxlcnNPbkdsb2JhbE9i
amVjdCwgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgZXhwb3NlIGZ1bmN0aW9ucyB0
byBlbmFibGUvZGlzYWJsZSBib3RoIHRoZSBzYW1wbGluZyBwcm9maWxlciBhbmQgdGhlIHN1cGVy
IHNhbXBsZXIiKSBcCiAgICAgdihCb29sLCBhbGxvd1Vuc3VwcG9ydGVkVGllcnMsIGZhbHNlLCBO
b3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIG5vdCBkaXNhYmxlIERGRyBvciBGVEwgd2hlbiBhbiBl
eHBlcmltZW50YWwgZmVhdHVyZSBpcyBlbmFibGVkLiIpIFwKICAgICB2KEJvb2wsIHVzZVByaXZh
dGVDbGFzc0ZpZWxkcywgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIHRoZSBwYXJzZXIgd2lsbCB1
bmRlcnN0YW5kIHByaXZhdGUgZGF0YSBmaWVsZHMgaW5zaWRlIGNsYXNzZXMuIikgXAorICAgIHYo
Qm9vbCwgdXNlUHJpdmF0ZU1ldGhvZHMsIGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCB0aGUgcGFy
c2VyIHdpbGwgdW5kZXJzdGFuZCBwcml2YXRlIG1ldGhvZHMgaW5zaWRlIGNsYXNzZXMuIikgXAog
ICAgIHYoQm9vbCwgcmV0dXJuRWFybHlGcm9tSW5maW5pdGVMb29wc0ZvckZ1enppbmcsIGZhbHNl
LCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KFNpemUsIGVhcmx5UmV0dXJuRnJvbUluZmluaXRl
TG9vcHNMaW1pdCwgMTMwMDAwMDAwMCwgTm9ybWFsLCAiV2hlbiByZXR1cm5FYXJseUZyb21JbmZp
bml0ZUxvb3BzRm9yRnV6emluZyBpcyB0cnVlLCB0aGlzIGRldGVybWluZXMgdGhlIG51bWJlciBv
ZiBleGVjdXRpb25zIGEgbG9vcCBjYW4gcnVuIGZvciBiZWZvcmUganVzdCByZXR1cm5pbmcuIFRo
aXMgaXMgaGVscGZ1bCBmb3IgdGhlIGZ1enplciBzbyBpdCBkb2Vzbid0IGdldCBzdHVjayBpbiBp
bmZpbml0ZSBsb29wcy4iKSBcCiAgICAgdihCb29sLCB1c2VMSUNNRnV6emluZywgZmFsc2UsIE5v
cm1hbCwgbnVsbHB0cikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvZ3JhbUV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b2dyYW1FeGVjdXRhYmxlLmgKaW5kZXggYjg3MTVhYTcyYmJjYjczMzlkNmUzNDEzYWM1OWM3NDQx
MTdiODJhOC4uOTQ5NzYzMTIwNWNhMGU0ZDBhMjk0ZTA0NWNlNzZiNzFhZDExNDRhYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCkBA
IC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgREVDTEFSRV9JTkZPOwogCi0g
ICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRh
YmxlSW5mbyh1c2VzRXZhbCgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwg
SlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291
cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIE5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyOjpObywgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwg
RXZhbENvbnRleHRUeXBlOjpOb25lKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJ
bmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8odXNlc0V2YWwoKSwgZmFsc2UsIFBy
aXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25l
LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBT
b3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUoKSwgTmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNl
LCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUpOyB9CiAKICAgICBUZW1wbGF0ZU9iamVjdE1hcCYgZW5z
dXJlVGVtcGxhdGVPYmplY3RNYXAoVk0mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3ltYm9sVGFibGUuY3BwCmluZGV4IDE2NGNhNmQ0MzEwZTZiYjM4ZTY0N2UyZjZiZTJm
OWY3ZDlmMzI2NWMuLmZiNDYwMDFiYWVkMmY5YzFjODdlNTcyMmUyNjE1YjQxNDVkMTg3MDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKQEAgLTE4
NCw3ICsxODQsNyBAQCBTeW1ib2xUYWJsZSogU3ltYm9sVGFibGU6OmNsb25lU2NvcGVQYXJ0KFZN
JiB2bSkKIAogICAgICAgICB7CiAgICAgICAgICAgICBmb3IgKGF1dG8gbmFtZSA6IG1fcmFyZURh
dGEtPm1fcHJpdmF0ZU5hbWVzKQotICAgICAgICAgICAgICAgIHJlc3VsdC0+bV9yYXJlRGF0YS0+
bV9wcml2YXRlTmFtZXMuYWRkKG5hbWUpOworICAgICAgICAgICAgICAgIHJlc3VsdC0+bV9yYXJl
RGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKG5hbWUua2V5LCBuYW1lLnZhbHVlKTsKICAgICAgICAg
fQogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N5bWJvbFRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJs
ZS5oCmluZGV4IDU5YTcyMzA1ZDNhNzA0MjBhYmIxYWY0ZWZiZTY3ZmQ2Y2NkZmRlYTAuLmMzNjFm
OTg2Y2JkYzFiZTAxY2FlYjNiODgyNTI2ZjkwYzEwY2I4ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUg
IlNjb3BlZEFyZ3VtZW50c1RhYmxlLmgiCiAjaW5jbHVkZSAiVHlwZUxvY2F0aW9uLmgiCiAjaW5j
bHVkZSAiVmFyT2Zmc2V0LmgiCisjaW5jbHVkZSAiVmFyaWFibGVFbnZpcm9ubWVudC5oIgogI2lu
Y2x1ZGUgIldhdGNocG9pbnQuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hh
c2hUcmFpdHMuaD4KQEAgLTQ1MCw4ICs0NTEsNyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBIYXNo
TWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIFJlZlB0cjxUeXBlU2V0PiwgSWRlbnRpZmll
clJlcEhhc2g+IFVuaXF1ZVR5cGVTZXRNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFZhck9mZnNl
dCwgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4gT2Zmc2V0VG9WYXJpYWJsZU1hcDsKICAgICB0
eXBlZGVmIFZlY3RvcjxTeW1ib2xUYWJsZUVudHJ5Kj4gTG9jYWxUb0VudHJ5VmVjOwotICAgIHR5
cGVkZWYgSGFzaFNldDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBJZGVudGlmaWVyUmVwSGFz
aD4gUHJpdmF0ZU5hbWVTZXQ7Ci0gICAgdHlwZWRlZiBXVEY6Okl0ZXJhdG9yUmFuZ2U8dHlwZW5h
bWUgUHJpdmF0ZU5hbWVTZXQ6Oml0ZXJhdG9yPiBQcml2YXRlTmFtZUl0ZXJhdG9yUmFuZ2U7Cisg
ICAgdHlwZWRlZiBXVEY6Okl0ZXJhdG9yUmFuZ2U8dHlwZW5hbWUgVmFyaWFibGVFbnZpcm9ubWVu
dDo6UHJpdmF0ZU5hbWVzOjppdGVyYXRvcj4gUHJpdmF0ZU5hbWVJdGVyYXRvclJhbmdlOwogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQpAQCAtNjA1LDE0ICs2MDUsMTQgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gbWFrZUl0ZXJhdG9yUmFuZ2UobV9yYXJlRGF0YS0+bV9w
cml2YXRlTmFtZXMuYmVnaW4oKSwgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZW5kKCkpOwog
ICAgIH0KIAotICAgIHZvaWQgYWRkUHJpdmF0ZU5hbWUoVW5pcXVlZFN0cmluZ0ltcGwqIGtleSkK
KyAgICB2b2lkIGFkZFByaXZhdGVOYW1lKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4m
IGtleSwgUHJpdmF0ZU5hbWVFbnRyeSB2YWx1ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChrZXkg
JiYgIWtleS0+aXNTeW1ib2woKSk7CiAgICAgICAgIGlmICghbV9yYXJlRGF0YSkKICAgICAgICAg
ICAgIG1fcmFyZURhdGEgPSBXVEY6Om1ha2VVbmlxdWU8U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsK
IAotICAgICAgICBBU1NFUlQoIW1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmNvbnRhaW5zKGtl
eSkpOwotICAgICAgICBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoa2V5KTsKKyAgICAg
ICAgQVNTRVJUKG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmZpbmQoa2V5KSA9PSBtX3JhcmVE
YXRhLT5tX3ByaXZhdGVOYW1lcy5lbmQoKSk7CisgICAgICAgIG1fcmFyZURhdGEtPm1fcHJpdmF0
ZU5hbWVzLmFkZChrZXksIHZhbHVlKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBF
bnRyeT4KQEAgLTc1Niw3ICs3NTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIE9mZnNldFRvVmFyaWFi
bGVNYXAgbV9vZmZzZXRUb1ZhcmlhYmxlTWFwOwogICAgICAgICBVbmlxdWVUeXBlU2V0TWFwIG1f
dW5pcXVlVHlwZVNldE1hcDsKICAgICAgICAgV3JpdGVCYXJyaWVyPENvZGVCbG9jaz4gbV9jb2Rl
QmxvY2s7Ci0gICAgICAgIFByaXZhdGVOYW1lU2V0IG1fcHJpdmF0ZU5hbWVzOworICAgICAgICBW
YXJpYWJsZUVudmlyb25tZW50OjpQcml2YXRlTmFtZXMgbV9wcml2YXRlTmFtZXM7CiAgICAgfTsK
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggNmNhZGI1NTM2MzMyNDY5NDdhZmIwMDRiZWNkZTNjODhiMmU4MDFjMi4uMWRi
ZWZjMmMwM2QwMjBlODExNmE0NDU0MWZiMDRjOTBlNTc0ODYyNiAxMDA2NDQKLS0tIGEvSlNUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAy
MC0xMC0yMCAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VT
TmV4dF0gSW1wbGVtZW50IHByaXZhdGUgbWV0aG9kcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NDM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1icmFuZC1pbnN0YWxsZWQt
YWZ0ZXItc3VwZXItY2FsbC1mcm9tLWFycm93LWZ1bmN0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAg
KiBzdHJlc3MvcHJpdmF0ZS1icmFuZC1pbnN0YWxsZWQtYWZ0ZXItc3VwZXItY2FsbC1mcm9tLWV2
YWwuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZC1icmFuZC1jaGVj
ay5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWNvbXBhcmlzb24u
anM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZC1leHRlbmRzLWJyYW5k
LWNoZWNrLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2QtZ2V0LWFu
ZC1jYWxsLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2QtbmVzdGVk
LWNsYXNzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2RzLW9uLXBy
b3h5LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1uYW1lcy1hdmFpbGFibGUt
b24tZGlyZWN0LWV2YWwuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3QyNjIvY29uZmlnLnlhbWw6
CisKIDIwMjAtMTAtMjEgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbSlNDXSBzdXBwb3J0IG9wX2dldF9wcml2YXRlX25hbWUgaW4gREZHIGFuZCBGVEwKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVyLXN1
cGVyLWNhbGwtZnJvbS1hcnJvdy1mdW5jdGlvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUt
YnJhbmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVyLWNhbGwtZnJvbS1hcnJvdy1mdW5jdGlvbi5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43ZTI5YzdiYzExYzM2MzQzOTE1YmQyMDJlODAyMjM3YTg4MDQxZTRmCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1icmFuZC1pbnN0YWxsZWQtYWZ0
ZXItc3VwZXItY2FsbC1mcm9tLWFycm93LWZ1bmN0aW9uLmpzCkBAIC0wLDAgKzEsMjcgQEAKKy8v
QCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworZnVuY3Rpb24g
YXNzZXJ0KGEsIGUpIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKK30KKworY2xhc3MgQSB7fQor
CitjbGFzcyBDIGV4dGVuZHMgQSB7CisgICAgI21ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuICJi
YXNlIjsKKyAgICB9CisKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgbGV0IGluaXQgPSAo
KSA9PiBzdXBlcigpOworICAgICAgICBpbml0KCk7CisgICAgfQorCisgICAgYmFzZUFjY2Vzcygp
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI21ldGhvZCgpOworICAgIH0KK30KKworbGV0IGMgPSBu
ZXcgQygpOworYXNzZXJ0KGMuYmFzZUFjY2VzcygpLCAiYmFzZSIpOworCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9wcml2YXRlLWJyYW5kLWluc3RhbGxlZC1hZnRlci1zdXBlci1jYWxsLWZy
b20tZXZhbC5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVy
LXN1cGVyLWNhbGwtZnJvbS1ldmFsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllMTZlZTM4ZTM0MWNjYzE2MTA1
NGRiMTcyYjVlMjIxZmI2ODZjODIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9w
cml2YXRlLWJyYW5kLWluc3RhbGxlZC1hZnRlci1zdXBlci1jYWxsLWZyb20tZXZhbC5qcwpAQCAt
MCwwICsxLDI2IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1
ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBlKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7Cit9
CisKK2NsYXNzIEEge30KKworY2xhc3MgQyBleHRlbmRzIEEgeworICAgICNtZXRob2QoKSB7Cisg
ICAgICAgIHJldHVybiAiYmFzZSI7CisgICAgfQorCisgICAgY29uc3RydWN0b3IoKSB7CisgICAg
ICAgIGV2YWwoInN1cGVyKCkiKTsKKyAgICB9CisKKyAgICBiYXNlQWNjZXNzKCkgeworICAgICAg
ICByZXR1cm4gdGhpcy4jbWV0aG9kKCk7CisgICAgfQorfQorCitsZXQgYyA9IG5ldyBDKCk7Cith
c3NlcnQoYy5iYXNlQWNjZXNzKCksICJiYXNlIik7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL3ByaXZhdGUtbWV0aG9kLWJyYW5kLWNoZWNrLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0
ZS1tZXRob2QtYnJhbmQtY2hlY2suanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmE1MTc1YTNmNWJjYWY5YjI0MGIx
OTYwMGE3YjdiZGQxZWIwNWU0OQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3By
aXZhdGUtbWV0aG9kLWJyYW5kLWNoZWNrLmpzCkBAIC0wLDAgKzEsMzMgQEAKKy8vQCByZXF1aXJl
T3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGEs
IGUpIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKK30KKworY2xhc3MgQyB7CisgICAgI20oKSB7
CisgICAgICAgIHJldHVybiB0aGlzLiNmOworICAgIH0KKworICAgIG1ldGhvZCgpIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuI20oKTsKKyAgICB9CisKKyAgICAjZiA9IDQ7Cit9CisKK2xldCBjID0g
bmV3IEMoKTsKK2Fzc2VydChjLm1ldGhvZCgpLCA0KTsKKwordHJ5IHsKKyAgICBjbGFzcyBDIHsK
KyAgICAgICAgI20oKSB7IHJldHVybiAzOyB9CisgICAgfQorCisgICAgbGV0IG8gPSBuZXcgQygp
OworICAgIGMubWV0aG9kLmNhbGwobyk7Cit9IGNhdGNoIChlKSB7CisgICAgYXNzZXJ0KGUgaW5z
dGFuY2VvZiBUeXBlRXJyb3IsIHRydWUpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9wcml2YXRlLW1ldGhvZC1jaGVjay1zdHJ1Y3R1cmUtbWlzcy5qcyBiL0pTVGVzdHMvc3RyZXNz
L3ByaXZhdGUtbWV0aG9kLWNoZWNrLXN0cnVjdHVyZS1taXNzLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4MGQ3
ZjdlZWU3MDRlZjBjYjhkOTA5ODAwMzUxMDExYWYzMzAzMWMKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1jaGVjay1zdHJ1Y3R1cmUtbWlzcy5qcwpAQCAt
MCwwICsxLDUxIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1
ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgewor
ICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDog
IiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9LAorICAgIHNob3VsZFRocm93OiBmdW5j
dGlvbihleGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9uOwor
ICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhyZXdF
eGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJl
d0V4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRp
b24pCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzog
IiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBl
eGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworICAgIH0KK30KKworbGV0IGkgPSAwOworCitj
bGFzcyBDIHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgaWYgKGkgPj0gNTAwMCkKKyAg
ICAgICAgICAgIHRoaXMucHJvcGVydHkgPSBpOworICAgIH0KKworICAgICNtZXRob2Qodikgewor
ICAgICAgICB0aGlzLmZpZWxkID0gdjsKKyAgICB9CisKKyAgICBhY2Nlc3ModikgeworICAgICAg
ICB0aGlzLiNtZXRob2Qodik7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuYWNjZXNz
KTsKKworbGV0IGMgPSBuZXcgQygpOworZm9yICg7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgYy5h
Y2Nlc3MoJ2ZvbycgKyBpKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZmllbGQsICdmb28nICsg
aSk7Cit9CisKK2Fzc2VydC5zaG91bGRUaHJvdyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAg
IGMuYWNjZXNzLmNhbGwoe30sICd0ZXN0Jyk7Cit9KTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvcHJpdmF0ZS1tZXRob2QtY29tcGFyaXNvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZh
dGUtbWV0aG9kLWNvbXBhcmlzb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDZkYTc4NjdiYTQ4ZWI3N2ExYjQw
MTRjZjRlZjY0MTZkMTI0YTdkNgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3By
aXZhdGUtbWV0aG9kLWNvbXBhcmlzb24uanMKQEAgLTAsMCArMSwzMSBAQAorLy9AIHJlcXVpcmVP
cHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAg
IHNhbWVWYWx1ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7CisgICAgICAgIGlmIChsaHMgIT09IHJo
cykKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBsaHMgKyAiIGJ1
ZyBnb3Q6ICIgKyByaHMpOworICAgIH0sCisKKyAgICB0aHJvd3M6IGZ1bmN0aW9uIChleHBlY3Rl
ZEVycm9yLCBvcCkgeworICAgICAgICB0cnkgeworICAgICAgICAgIG9wKCk7CisgICAgICAgIH0g
Y2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVkRXJyb3Ip
KQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIg
KyBleHBlY3RlZEVycm9yICsgIiBidXQgdGhyZXc6ICIgKyBlKTsKKyAgICAgICAgfQorICAgIH0K
K307CisKK2NsYXNzIEMgeworICAgICNtKCkgeyByZXR1cm4gJ3Rlc3QyNjInOyB9CisKKyAgICBn
ZXRQcml2YXRlTWV0aG9kKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jbTsKKyAgICB9Cit9CisK
K2xldCBjMSA9IG5ldyBDKCk7CitsZXQgYzIgPSBuZXcgQygpOworCithc3NlcnQuc2FtZVZhbHVl
KGMxLmdldFByaXZhdGVNZXRob2QoKSwgYzIuZ2V0UHJpdmF0ZU1ldGhvZCgpKTsKKwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtZXh0ZW5kcy1icmFuZC1jaGVjay5q
cyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWV4dGVuZHMtYnJhbmQtY2hlY2suanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzI2NjRiMmZjY2NmNjg5NWMyMTQ1MWY3Njk3OGM3YTI4NGM3YTNkMQotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWV4dGVuZHMtYnJh
bmQtY2hlY2suanMKQEAgLTAsMCArMSw0MSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVBy
aXZhdGVNZXRob2RzPXRydWUiKQorCitmdW5jdGlvbiBhc3NlcnQoYSwgZSkgeworICAgIGlmIChh
ICE9PSBlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0
IGdvdDogIiArIGEpOworfQorCitjbGFzcyBCYXNlIHsKKyAgICAjbUJhc2UoKSB7CisgICAgICAg
IHJldHVybiA0OworICAgIH0KKworICAgIG1ldGhvZEJhc2UoKSB7CisgICAgICAgIHJldHVybiB0
aGlzLiNtQmFzZSgpOworICAgIH0KK30KKworY2xhc3MgQyBleHRlbmRzIEJhc2UgeworICAgICNt
KCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZjsKKyAgICB9CisKKyAgICBtZXRob2QoKSB7Cisg
ICAgICAgIHJldHVybiB0aGlzLiNtKCk7CisgICAgfQorCisgICAgI2YgPSAxNTsKK30KKworbGV0
IGMgPSBuZXcgQygpOworYXNzZXJ0KGMubWV0aG9kKCksIDE1KTsKK2Fzc2VydChjLm1ldGhvZEJh
c2UoKSwgNCk7CisKK2xldCBiYXNlID0gbmV3IEJhc2UgKCk7Cithc3NlcnQoYmFzZS5tZXRob2RC
YXNlKCksIDQpOwordHJ5IHsKKyAgICBjLm1ldGhvZC5jYWxsKGJhc2UpOworfSBjYXRjaCAoZSkg
eworICAgIGFzc2VydChlIGluc3RhbmNlb2YgVHlwZUVycm9yLCB0cnVlKTsKK30KKwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtZ2V0LWFuZC1jYWxsLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtZ2V0LWFuZC1jYWxsLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEz
MTdlMWU3N2U0MzM2ZDRlZGI4YjgzMDdmNjM1YmQ4MGE2YTJmODgKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1nZXQtYW5kLWNhbGwuanMKQEAgLTAsMCAr
MSwyNCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQor
CitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7Cisg
ICAgICAgIGlmIChsaHMgIT09IHJocykKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhw
ZWN0ZWQ6ICIgKyBsaHMgKyAiIGJ1ZyBnb3Q6ICIgKyByaHMpOworICAgIH0KK307CisKK2NsYXNz
IEMgeworICAgICNtKCkgeyByZXR1cm4gdGhpcy5fdjsgfQorCisgICAgZ2V0UHJpdmF0ZU1ldGhv
ZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI207CisgICAgfQorfQorCitsZXQgYyA9IG5ldyBD
KCk7CisKK2xldCBvMSA9IHtfdjogJ3Rlc3QyNjInfTsKK2xldCBvMiA9IHtfdjogJ2Zvbyd9Owor
YXNzZXJ0LnNhbWVWYWx1ZShjLmdldFByaXZhdGVNZXRob2QoKS5jYWxsKG8xKSwgJ3Rlc3QyNjIn
KTsKK2Fzc2VydC5zYW1lVmFsdWUoYy5nZXRQcml2YXRlTWV0aG9kKCkuY2FsbChvMiksICdmb28n
KTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtaW52YWxpZC1t
dWx0aXBsZS1icmFuZC1pbnN0YWxsYXRpb24uanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1l
dGhvZC1pbnZhbGlkLW11bHRpcGxlLWJyYW5kLWluc3RhbGxhdGlvbi5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
ZDc3NTA3OWYzMTRkMDg4MGNmN2I4YzY2MTg2N2FkNWVmOTIyYTQzCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtaW52YWxpZC1tdWx0aXBsZS1icmFuZC1p
bnN0YWxsYXRpb24uanMKQEAgLTAsMCArMSw1MSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVz
ZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTog
ZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfSwKKyAg
ICBzaG91bGRUaHJvdzogZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxl
dCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsK
KyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkg
eworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFl
IGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigi
RXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGl0IHRocm93czog
IiArIGUubmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9uKQor
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2Vw
dGlvbi5uYW1lICsgIiBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKKyAgICB9Cit9
CisKK2xldCBpID0gMDsKKworbGV0IG8gPSB7fTsKK2NsYXNzIEJhc2UgeworICAgIGNvbnN0cnVj
dG9yKCkgeworICAgICAgICByZXR1cm4gbzsKKyAgICB9Cit9CisKK2NsYXNzIEMgZXh0ZW5kcyBC
YXNlIHsKKyAgICAjbWV0aG9kKHYpIHsKKyAgICAgICAgdGhpcy5maWVsZCA9IHY7CisgICAgfQor
CisgICAgYWNjZXNzKHYpIHsKKyAgICAgICAgdGhpcy4jbWV0aG9kKHYpOworICAgIH0KK30KK25v
SW5saW5lKEMucHJvdG90eXBlLmFjY2Vzcyk7CisKK2xldCBjID0gbmV3IEMoKTsKK0MucHJvdG90
eXBlLmFjY2Vzcy5jYWxsKGMsICdmb28nKTsKK2Fzc2VydC5zYW1lVmFsdWUoYy5maWVsZCwgJ2Zv
bycpOworCithc3NlcnQuc2hvdWxkVGhyb3coVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICBj
ID0gbmV3IEMoKTsKK30pOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1l
dGhvZC1pbnZhbGlkYXRlLWNvbXBpbGVkLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzIGIvSlNUZXN0
cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtaW52YWxpZGF0ZS1jb21waWxlZC13aXRoLWNvbnN0YW50
LXN5bWJvbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOWQzYzcyYjAzOGJiMGFkN2VlNzk5ZDUyMTQ3YzIyYmQ4
NmJhNTk0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2Qt
aW52YWxpZGF0ZS1jb21waWxlZC13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpAQCAtMCwwICsxLDYy
IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xl
dCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlm
IChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAi
IGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9LAorICAgIHRocm93czogZnVuY3Rpb24oZXhjZXB0aW9u
LCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsK
KyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFs
c2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0
cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24u
bmFtZSArICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBl
Y3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0ZWQgd2l0aG91
dCBleGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGZhY3RvcnlDbGFzcygpIHsKKyAg
ICBjbGFzcyBDIHsKKyAgICAgICAgI21ldGhvZCgpIHsKKyAgICAgICAgICAgIHJldHVybiAndGVz
dCc7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgYWNjZXNzKCkgeworICAgICAgICAgICAgcmV0
dXJuIHRoaXMuI21ldGhvZCgpOworICAgICAgICB9CisgICAgfQorICAgIG5vSW5saW5lKEMucHJv
dG90eXBlLmFjY2Vzcyk7CisKKyAgICByZXR1cm4gQzsKK30KKworbGV0IEMgPSBmYWN0b3J5Q2xh
c3MoKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IGMgPSBu
ZXcgQygpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5hY2Nlc3MoKSwgJ3Rlc3QnKTsKKyAgICBh
c3NlcnQudGhyb3dzKFR5cGVFcnJvciwgKCkgPT4geworICAgICAgICBjLmFjY2Vzcy5jYWxsKHt9
KTsKKyAgICB9KTsKK30KKworbGV0IEMyID0gZmFjdG9yeUNsYXNzKCk7CisKK2xldCBjMiA9IG5l
dyBDMigpOworYXNzZXJ0LnNhbWVWYWx1ZShjMi5hY2Nlc3MoKSwgJ3Rlc3QnKTsKKworbGV0IGMg
PSBuZXcgQygpOworCithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgKCkgPT4geworICAgIGMuYWNj
ZXNzLmNhbGwoYzIpOworfSk7CisKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCAoKSA9PiB7Cisg
ICAgYzIuYWNjZXNzLmNhbGwoYyk7Cit9KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3By
aXZhdGUtbWV0aG9kLW5lc3RlZC1jbGFzcy5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0
aG9kLW5lc3RlZC1jbGFzcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Y2RmNDg5OWE0M2U2OWVkMGRhYjM0YzIy
NjNlZmQzODgzZDlhMjJkCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0
ZS1tZXRob2QtbmVzdGVkLWNsYXNzLmpzCkBAIC0wLDAgKzEsNjggQEAKKy8vQCByZXF1aXJlT3B0
aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGEsIGUp
IHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDog
IiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKK30KKworKCgpID0+IHsKKyAgICBjbGFzcyBCYXNl
IHsKKyAgICAgICAgQyA9IGNsYXNzIHsKKyAgICAgICAgICAgIG1ldGhvZCgpIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdGhpcy4jbUJhc2UoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAgICNtQmFzZSgpIHsKKyAgICAgICAgICAgIHJldHVybiA0OworICAgICAgICB9Cisg
ICAgfQorCisgICAgbGV0IGJhc2UgPSBuZXcgQmFzZSgpOworICAgIGxldCBjID0gbmV3IGJhc2Uu
QygpOworICAgIGFzc2VydChjLm1ldGhvZC5jYWxsKGJhc2UpLCA0KTsKKworICAgIHRyeSB7Cisg
ICAgICAgIGMubWV0aG9kKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBhc3NlcnQoZSBp
bnN0YW5jZW9mIFR5cGVFcnJvciwgdHJ1ZSk7CisgICAgfQorfSkoKTsKKworLy8gVGVzdCBzaGFk
b3cgbWV0aG9kcworCisoKCkgPT4geworICAgIGNsYXNzIEJhc2UgeworICAgICAgICBtZXRob2Qo
KSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy4jbSgpOworICAgICAgICB9CisKKyAgICAgICAg
QyA9IGNsYXNzIHsKKyAgICAgICAgICAgIG1ldGhvZChvKSB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIG8uI20oKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgI20oKSB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHRoaXMuZm9vOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBm
b28gPSA0OworICAgICAgICB9OworCisgICAgICAgICNtKCkgeworICAgICAgICAgICAgcmV0dXJu
ICJmb28iOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGJhc2UgPSBuZXcgQmFzZSgpOwor
ICAgIGxldCBjID0gbmV3IGJhc2UuQygpOworICAgIGFzc2VydChjLm1ldGhvZChjKSwgNCk7Cisg
ICAgYXNzZXJ0KGJhc2UubWV0aG9kKCksICJmb28iKTsKKworICAgIHRyeSB7CisgICAgICAgIGMu
bWV0aG9kKGJhc2UpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgYXNzZXJ0KGUgaW5zdGFu
Y2VvZiBUeXBlRXJyb3IsIHRydWUpOworICAgIH0KK30pKCk7CisKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLXBvbHltb3JwaGljLXdpdGgtY29uc3RhbnQtc3ltYm9s
LmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtcG9seW1vcnBoaWMtd2l0aC1jb25z
dGFudC1zeW1ib2wuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDAxNzYyN2E1MzA5OWEyMDFmYmVhZWIzZDkxN2Iw
MzZiZjkzMWMxNgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0
aG9kLXBvbHltb3JwaGljLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzCkBAIC0wLDAgKzEsNTMgQEAK
Ky8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFz
c2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEg
IT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0
IGdvdDogIiArIGEpOworICAgIH0sCisgICAgc2hvdWxkVGhyb3c6IGZ1bmN0aW9uKGV4Y2VwdGlv
biwgZnVuY3RvcikgeworICAgICAgICBsZXQgdGhyZXdFeGNlcHRpb247CisgICAgICAgIHRyeSB7
CisgICAgICAgICAgICBmdW5jdG9yKCk7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IGZh
bHNlOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0g
dHJ1ZTsKKyAgICAgICAgICAgIGlmICghZSBpbnN0YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9u
Lm5hbWUgKyAiIGJ1dCBpdCB0aHJvd3M6ICIgKyBlLm5hbWUpOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKCF0aHJld0V4Y2VwdGlvbikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhw
ZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGV4ZWN1dGVkIHdpdGhv
dXQgZXhjZXB0aW9uIik7CisgICAgfQorfQorCitsZXQgaSA9IDA7CisKK2NsYXNzIEJhc2Ugewor
ICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICBpZiAoaSAlIDIpCisgICAgICAgICAgICB0aGlz
LmFub3RoZXJGaWVsZCA9IGk7CisgICAgfQorfQorCitjbGFzcyBDIGV4dGVuZHMgQmFzZSB7Cisg
ICAgI21ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuICd0ZXN0JzsKKyAgICB9CisKKyAgICBhY2Nl
c3MoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtZXRob2QoKTsKKyAgICB9Cit9Citub0lubGlu
ZShDLnByb3RvdHlwZS5hY2Nlc3MpOworCitmb3IgKDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBj
b3VudCA9IGk7CisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5h
Y2Nlc3MoKSwgJ3Rlc3QnKTsKK30KKworYXNzZXJ0LnNob3VsZFRocm93KFR5cGVFcnJvciwgKCkg
PT4geworICAgIGMuYWNjZXNzLmNhbGwoe30pOworfSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL3ByaXZhdGUtbWV0aG9kLXVudHlwZWQtdXNlLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJp
dmF0ZS1tZXRob2QtdW50eXBlZC11c2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGFjYjhiNDEwMmJkYzNkNGMx
MDE4MWIwYjQ5NDk4ZTdjODYxZTJkOAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L3ByaXZhdGUtbWV0aG9kLXVudHlwZWQtdXNlLmpzCkBAIC0wLDAgKzEsNTggQEAKKy8vQCByZXF1
aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIiwgIi0tdXNlQWNjZXNzSW5saW5p
bmc9ZmFsc2UiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNob3VsZFRocm93OiBmdW5jdGlvbihl
eGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9uOworICAgICAg
ICB0cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhyZXdFeGNlcHRp
b24gPSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJld0V4Y2Vw
dGlvbiA9IHRydWU7CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRpb24pCisg
ICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4
Y2VwdGlvbi5uYW1lICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAgICAgICAgfQor
CisgICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBleGVjdXRl
ZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworICAgIH0KK30KKworY2xhc3MgQyB7CisgICNtZXRob2Qo
KSB7fQorCisgIGFjY2Vzcyh2KSB7CisgICAgICBsZXQgbyA9IHRoaXM7CisgICAgICAvLyBUaGlz
IGJyYW5jaCBpcyBoZXJlIHRvIGF2b2lkIFB1dFByaXZhdGVOYW1lQnlJZCB0byBiZSBmb2xkZWQg
YXMgCisgICAgICAvLyBQdXRCeU9mZnNldC4KKyAgICAgIGlmICh2ID4gMTAwKQorICAgICAgICAg
IG8gPSB7fTsKKyAgICAgIG8uI21ldGhvZCgpOworICB9Cit9Citub0lubGluZShDLnByb3RvdHlw
ZS5hY2Nlc3MpOworCitsZXQgYyA9IG5ldyBDKCk7CisKKy8vIExldCdzIHRyaWdnZXIgSklUIGNv
bXBpbGF0aW9uIGZvciBgQy5wcm90b3R5cGUuYWNjZXNzYAorZm9yIChsZXQgaSA9IDA7IGkgPCAx
MDAwMDsgaSsrKSB7CisgICAgYy5hY2Nlc3MoMTUpOworfQorCitmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDAwOyBpKyspIHsKKyAgICBhc3NlcnQuc2hvdWxkVGhyb3coVHlwZUVycm9yLCAoKSA9PiB7
CisgICAgICAgIGMuYWNjZXNzLmNhbGwoe30sIDApOworICAgIH0pOworCisgICAgYXNzZXJ0LnNo
b3VsZFRocm93KFR5cGVFcnJvciwgKCkgPT4geworICAgICAgICBjLmFjY2Vzcy5jYWxsKDE1LCAw
KTsKKyAgICB9KTsKKworICAgIGFzc2VydC5zaG91bGRUaHJvdyhUeXBlRXJyb3IsICgpID0+IHsK
KyAgICAgICAgYy5zZXRGaWVsZC5jYWxsKCdzdHJpbmcnLCAwKTsKKyAgICB9KTsKKworICAgIGFz
c2VydC5zaG91bGRUaHJvdyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICAgICAgYy5zZXRGaWVsZC5j
YWxsKFN5bWJvbCgnc3ltYm9sJyksIDApOworICAgIH0pOworfQorCmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZHMtb24tcHJveHkuanMgYi9KU1Rlc3RzL3N0cmVzcy9w
cml2YXRlLW1ldGhvZHMtb24tcHJveHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmI1ZmRmY2I2MjM0ZDU0MGFh
MGZhMTJlOGU3Nzc2ZDA2M2FhNWE5ZgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L3ByaXZhdGUtbWV0aG9kcy1vbi1wcm94eS5qcwpAQCAtMCwwICsxLDQyIEBACisvL0AgcmVxdWly
ZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChh
LCBlLCBtKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihtKTsK
K30KKworZnVuY3Rpb24gYXNzZXJ0QXJyYXlDb250ZW50KGEsIGUpIHsKKyAgICBhc3NlcnQoYS5s
ZW5ndGgsIGUubGVuZ3RoLCAiU2l6ZSBvZiBhcnJheXMgZG9lc24ndCBtYXRjaCIpOworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykKKyAgICAgICAgYXNzZXJ0KGFbaV0sIGVb
aV0sICJhWyIgKyBpICsgIl0gPSAiICsgYVtpXSArICIgYnV0IGVbIiArIGkgKyAiXSA9ICIgKyBl
W2ldKTsKK30KKworbGV0IGFyciA9IFtdOworCitjbGFzcyBQcm94eUJhc2UgeworICAgIGNvbnN0
cnVjdG9yKCkgeworICAgICAgICByZXR1cm4gbmV3IFByb3h5KHRoaXMsIHsKKyAgICAgICAgICAg
IGdldDogZnVuY3Rpb24gKG9iaiwgcHJvcCkgeworICAgICAgICAgICAgICAgIGFyci5wdXNoKHBy
b3ApOworICAgICAgICAgICAgICAgIHJldHVybiBvYmpbcHJvcF07CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0pOworICAgIH0KK30KKworY2xhc3MgVGVzdCBleHRlbmRzIFByb3h5QmFzZSB7Cisg
ICAgI20oKSB7CisgICAgICAgIHJldHVybiAzOworICAgIH0KKworICAgIG1ldGhvZCgpIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuI20oKTsKKyAgICB9Cit9CisKK2xldCB0ID0gbmV3IFRlc3QoKTsK
K2xldCByID0gdC5tZXRob2QoKTsKK2Fzc2VydChyLCAzLCAiRXhwZWN0ZWQ6IDMgYnV0IGdvdDog
IiArIHIpOworCithc3NlcnRBcnJheUNvbnRlbnQoYXJyLCBbJ21ldGhvZCddKTsKKwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1lcy1hdmFpbGFibGUtb24tZGlyZWN0LWV2
YWwuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5hbWVzLWF2YWlsYWJsZS1vbi1kaXJlY3Qt
ZXZhbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42NGNlMGUwYWY4MDU3OGU4OTcxNmExNjcyZWRjMTc3MzA1YjA2
NGYzCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1lcy1hdmFp
bGFibGUtb24tZGlyZWN0LWV2YWwuanMKQEAgLTAsMCArMSwyMyBAQAorLy9AIHJlcXVpcmVPcHRp
b25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNh
bWVWYWx1ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7CisgICAgICAgIGlmIChsaHMgIT09IHJocykK
KyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyByaHMgKyAiIGJ1ZyBn
b3Q6ICIgKyBsaHMpOworICAgIH0KK307CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7
CisgICAgICAgICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisKKyAgICAgICAgY2FsbE1ldGhvZEZy
b21FdmFsKCkgeworICAgICAgICAgICAgbGV0IHNlbGYgPSB0aGlzOworICAgICAgICAgICAgcmV0
dXJuIGV2YWwoJ3NlbGYuI20oKScpOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBu
ZXcgQygpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5jYWxsTWV0aG9kRnJvbUV2YWwoKSwgJ3Rl
c3QnKTsKK30pKCk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbCBi
L0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAppbmRleCBiOTE0OTY3YmRiNzA1MDQyYjg4ZmI5
ZjU4MGJiZGFkOWRkOGNlM2IxLi42Y2VmZTQ0YzEwNDc3YWI0YzE5ODliYmY5ODU3YmUyMDEyY2Vj
MTQyIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKKysrIGIvSlNUZXN0
cy90ZXN0MjYyL2NvbmZpZy55YW1sCkBAIC01LDYgKzUsNyBAQCBmbGFnczoKICAgRmluYWxpemF0
aW9uUmVnaXN0cnk6IHVzZVdlYWtSZWZzCiAgIGNsYXNzLWZpZWxkcy1wdWJsaWM6IHVzZVB1Ymxp
Y0NsYXNzRmllbGRzCiAgIGNsYXNzLWZpZWxkcy1wcml2YXRlOiB1c2VQcml2YXRlQ2xhc3NGaWVs
ZHMKKyAgY2xhc3MtbWV0aG9kcy1wcml2YXRlOiB1c2VQcml2YXRlTWV0aG9kcwogICBJbnRsLkRh
dGVUaW1lRm9ybWF0LWRheVBlcmlvZDogdXNlSW50bERhdGVUaW1lRm9ybWF0RGF5UGVyaW9kCiBz
a2lwOgogICBmZWF0dXJlczoKQEAgLTE2LDcgKzE3LDYgQEAgc2tpcDoKICAgICAtIGxlZ2FjeS1y
ZWdleHAKIAogICAgIC0gYXJiaXRyYXJ5LW1vZHVsZS1uYW1lc3BhY2UtbmFtZXMKLSAgICAtIGNs
YXNzLW1ldGhvZHMtcHJpdmF0ZQogICAgIC0gY2xhc3Mtc3RhdGljLWZpZWxkcy1wdWJsaWMKICAg
ICAtIGNsYXNzLXN0YXRpYy1maWVsZHMtcHJpdmF0ZQogICAgIC0gY2xhc3Mtc3RhdGljLW1ldGhv
ZHMtcHJpdmF0ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413292</attachid>
            <date>2020-11-05 07:02:14 -0800</date>
            <delta_ts>2020-11-11 13:15:41 -0800</delta_ts>
            <desc>WIP - Patch</desc>
            <filename>private-methods.diff</filename>
            <type>text/plain</type>
            <size>156788</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
MmE0ZjlhNjliN2Y4Li40N2UzYWU5OTdmYjggMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMTAtMjAgIENh
aW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgorCisgICAgICAgIFtFU05leHRdIEltcGxl
bWVudCBwcml2YXRlIG1ldGhvZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5NDQzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVy
LWNhbGwtZnJvbS1hcnJvdy1mdW5jdGlvbi5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3By
aXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVyLWNhbGwtZnJvbS1ldmFsLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2QtYnJhbmQtY2hlY2suanM6IEFkZGVk
LgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZC1jb21wYXJpc29uLmpzOiBBZGRlZC4K
KyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2QtZXh0ZW5kcy1icmFuZC1jaGVjay5qczog
QWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWdldC1hbmQtY2FsbC5qczog
QWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9kLW5lc3RlZC1jbGFzcy5qczog
QWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1vbi1wcm94eS5qczogQWRk
ZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWRpcmVjdC1l
dmFsLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1sOgorCiAyMDIwLTEx
LTAzICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBiYWNr
IHRoZSByZW1vdmVkIGFzc2VydGlvbiBmcm9tIHIyNjkzMzggYW5kIGFkZCBhIHRlc3QKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVy
LWNhbGwtZnJvbS1hcnJvdy1mdW5jdGlvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYnJh
bmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVyLWNhbGwtZnJvbS1hcnJvdy1mdW5jdGlvbi5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjdlMjljN2JjMTFjMwotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVy
LXN1cGVyLWNhbGwtZnJvbS1hcnJvdy1mdW5jdGlvbi5qcwpAQCAtMCwwICsxLDI3IEBACisvL0Ag
cmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFz
c2VydChhLCBlKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigi
RXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7Cit9CisKK2NsYXNzIEEge30KKwor
Y2xhc3MgQyBleHRlbmRzIEEgeworICAgICNtZXRob2QoKSB7CisgICAgICAgIHJldHVybiAiYmFz
ZSI7CisgICAgfQorCisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIGxldCBpbml0ID0gKCkg
PT4gc3VwZXIoKTsKKyAgICAgICAgaW5pdCgpOworICAgIH0KKworICAgIGJhc2VBY2Nlc3MoKSB7
CisgICAgICAgIHJldHVybiB0aGlzLiNtZXRob2QoKTsKKyAgICB9Cit9CisKK2xldCBjID0gbmV3
IEMoKTsKK2Fzc2VydChjLmJhc2VBY2Nlc3MoKSwgImJhc2UiKTsKKwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvcHJpdmF0ZS1icmFuZC1pbnN0YWxsZWQtYWZ0ZXItc3VwZXItY2FsbC1mcm9t
LWV2YWwuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLWJyYW5kLWluc3RhbGxlZC1hZnRlci1z
dXBlci1jYWxsLWZyb20tZXZhbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjllMTZlZTM4ZTM0MQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3By
aXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVyLWNhbGwtZnJvbS1ldmFsLmpzCkBAIC0w
LDAgKzEsMjYgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVl
IikKKworZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKK30K
KworY2xhc3MgQSB7fQorCitjbGFzcyBDIGV4dGVuZHMgQSB7CisgICAgI21ldGhvZCgpIHsKKyAg
ICAgICAgcmV0dXJuICJiYXNlIjsKKyAgICB9CisKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAg
ICAgZXZhbCgic3VwZXIoKSIpOworICAgIH0KKworICAgIGJhc2VBY2Nlc3MoKSB7CisgICAgICAg
IHJldHVybiB0aGlzLiNtZXRob2QoKTsKKyAgICB9Cit9CisKK2xldCBjID0gbmV3IEMoKTsKK2Fz
c2VydChjLmJhc2VBY2Nlc3MoKSwgImJhc2UiKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvcHJpdmF0ZS1tZXRob2QtYnJhbmQtY2hlY2suanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRl
LW1ldGhvZC1icmFuZC1jaGVjay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjZhNTE3NWEzZjViYwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3By
aXZhdGUtbWV0aG9kLWJyYW5kLWNoZWNrLmpzCkBAIC0wLDAgKzEsMzMgQEAKKy8vQCByZXF1aXJl
T3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGEs
IGUpIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKK30KKworY2xhc3MgQyB7CisgICAgI20oKSB7
CisgICAgICAgIHJldHVybiB0aGlzLiNmOworICAgIH0KKworICAgIG1ldGhvZCgpIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuI20oKTsKKyAgICB9CisKKyAgICAjZiA9IDQ7Cit9CisKK2xldCBjID0g
bmV3IEMoKTsKK2Fzc2VydChjLm1ldGhvZCgpLCA0KTsKKwordHJ5IHsKKyAgICBjbGFzcyBDIHsK
KyAgICAgICAgI20oKSB7IHJldHVybiAzOyB9CisgICAgfQorCisgICAgbGV0IG8gPSBuZXcgQygp
OworICAgIGMubWV0aG9kLmNhbGwobyk7Cit9IGNhdGNoIChlKSB7CisgICAgYXNzZXJ0KGUgaW5z
dGFuY2VvZiBUeXBlRXJyb3IsIHRydWUpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9wcml2YXRlLW1ldGhvZC1jaGVjay1zdHJ1Y3R1cmUtbWlzcy5qcyBiL0pTVGVzdHMvc3RyZXNz
L3ByaXZhdGUtbWV0aG9kLWNoZWNrLXN0cnVjdHVyZS1taXNzLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNTgwZDdmN2VlZTcwCi0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtY2hlY2stc3RydWN0dXJlLW1pc3MuanMKQEAg
LTAsMCArMSw1MSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRy
dWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsK
KyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6
ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfSwKKyAgICBzaG91bGRUaHJvdzogZnVu
Y3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsK
KyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3
RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhy
ZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0
aW9uKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6
ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQg
ZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2xldCBpID0gMDsKKwor
Y2xhc3MgQyB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIGlmIChpID49IDUwMDApCisg
ICAgICAgICAgICB0aGlzLnByb3BlcnR5ID0gaTsKKyAgICB9CisKKyAgICAjbWV0aG9kKHYpIHsK
KyAgICAgICAgdGhpcy5maWVsZCA9IHY7CisgICAgfQorCisgICAgYWNjZXNzKHYpIHsKKyAgICAg
ICAgdGhpcy4jbWV0aG9kKHYpOworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLmFjY2Vz
cyk7CisKK2xldCBjID0gbmV3IEMoKTsKK2ZvciAoOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGMu
YWNjZXNzKCdmb28nICsgaSk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmZpZWxkLCAnZm9vJyAr
IGkpOworfQorCithc3NlcnQuc2hvdWxkVGhyb3coVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAg
ICBjLmFjY2Vzcy5jYWxsKHt9LCAndGVzdCcpOworfSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL3ByaXZhdGUtbWV0aG9kLWNvbXBhcmlzb24uanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2
YXRlLW1ldGhvZC1jb21wYXJpc29uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uNDZkYTc4NjdiYTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
cHJpdmF0ZS1tZXRob2QtY29tcGFyaXNvbi5qcwpAQCAtMCwwICsxLDMxIEBACisvL0AgcmVxdWly
ZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7Cisg
ICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAobGhzLCByaHMpIHsKKyAgICAgICAgaWYgKGxocyAhPT0g
cmhzKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGxocyArICIg
YnVnIGdvdDogIiArIHJocyk7CisgICAgfSwKKworICAgIHRocm93czogZnVuY3Rpb24gKGV4cGVj
dGVkRXJyb3IsIG9wKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgb3AoKTsKKyAgICAgICAg
fSBjYXRjaChlKSB7CisgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgZXhwZWN0ZWRFcnJv
cikpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzog
IiArIGV4cGVjdGVkRXJyb3IgKyAiIGJ1dCB0aHJldzogIiArIGUpOworICAgICAgICB9CisgICAg
fQorfTsKKworY2xhc3MgQyB7CisgICAgI20oKSB7IHJldHVybiAndGVzdDI2Mic7IH0KKworICAg
IGdldFByaXZhdGVNZXRob2QoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtOworICAgIH0KK30K
KworbGV0IGMxID0gbmV3IEMoKTsKK2xldCBjMiA9IG5ldyBDKCk7CisKK2Fzc2VydC5zYW1lVmFs
dWUoYzEuZ2V0UHJpdmF0ZU1ldGhvZCgpLCBjMi5nZXRQcml2YXRlTWV0aG9kKCkpOworCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1leHRlbmRzLWJyYW5kLWNoZWNr
LmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtZXh0ZW5kcy1icmFuZC1jaGVjay5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjMyNjY0YjJmY2NjZgot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWV4dGVuZHMt
YnJhbmQtY2hlY2suanMKQEAgLTAsMCArMSw0MSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVz
ZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitmdW5jdGlvbiBhc3NlcnQoYSwgZSkgeworICAgIGlm
IChhICE9PSBlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIg
YnV0IGdvdDogIiArIGEpOworfQorCitjbGFzcyBCYXNlIHsKKyAgICAjbUJhc2UoKSB7CisgICAg
ICAgIHJldHVybiA0OworICAgIH0KKworICAgIG1ldGhvZEJhc2UoKSB7CisgICAgICAgIHJldHVy
biB0aGlzLiNtQmFzZSgpOworICAgIH0KK30KKworY2xhc3MgQyBleHRlbmRzIEJhc2UgeworICAg
ICNtKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZjsKKyAgICB9CisKKyAgICBtZXRob2QoKSB7
CisgICAgICAgIHJldHVybiB0aGlzLiNtKCk7CisgICAgfQorCisgICAgI2YgPSAxNTsKK30KKwor
bGV0IGMgPSBuZXcgQygpOworYXNzZXJ0KGMubWV0aG9kKCksIDE1KTsKK2Fzc2VydChjLm1ldGhv
ZEJhc2UoKSwgNCk7CisKK2xldCBiYXNlID0gbmV3IEJhc2UgKCk7Cithc3NlcnQoYmFzZS5tZXRo
b2RCYXNlKCksIDQpOwordHJ5IHsKKyAgICBjLm1ldGhvZC5jYWxsKGJhc2UpOworfSBjYXRjaCAo
ZSkgeworICAgIGFzc2VydChlIGluc3RhbmNlb2YgVHlwZUVycm9yLCB0cnVlKTsKK30KKwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtZ2V0LWFuZC1jYWxsLmpzIGIv
SlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtZ2V0LWFuZC1jYWxsLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTMxN2UxZTc3ZTQzCi0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtZ2V0LWFuZC1jYWxsLmpzCkBAIC0w
LDAgKzEsMjQgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVl
IikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChsaHMsIHJocykg
eworICAgICAgICBpZiAobGhzICE9PSByaHMpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IkV4cGVjdGVkOiAiICsgbGhzICsgIiBidWcgZ290OiAiICsgcmhzKTsKKyAgICB9Cit9OworCitj
bGFzcyBDIHsKKyAgICAjbSgpIHsgcmV0dXJuIHRoaXMuX3Y7IH0KKworICAgIGdldFByaXZhdGVN
ZXRob2QoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtOworICAgIH0KK30KKworbGV0IGMgPSBu
ZXcgQygpOworCitsZXQgbzEgPSB7X3Y6ICd0ZXN0MjYyJ307CitsZXQgbzIgPSB7X3Y6ICdmb28n
fTsKK2Fzc2VydC5zYW1lVmFsdWUoYy5nZXRQcml2YXRlTWV0aG9kKCkuY2FsbChvMSksICd0ZXN0
MjYyJyk7Cithc3NlcnQuc2FtZVZhbHVlKGMuZ2V0UHJpdmF0ZU1ldGhvZCgpLmNhbGwobzIpLCAn
Zm9vJyk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWludmFs
aWQtbXVsdGlwbGUtYnJhbmQtaW5zdGFsbGF0aW9uLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0
ZS1tZXRob2QtaW52YWxpZC1tdWx0aXBsZS1icmFuZC1pbnN0YWxsYXRpb24uanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43ZDc3NTA3OWYzMTQKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1pbnZhbGlkLW11bHRpcGxlLWJy
YW5kLWluc3RhbGxhdGlvbi5qcwpAQCAtMCwwICsxLDUxIEBACisvL0AgcmVxdWlyZU9wdGlvbnMo
Ii0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZh
bHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9
LAorICAgIHNob3VsZFRocm93OiBmdW5jdGlvbihleGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAgICAg
ICAgbGV0IHRocmV3RXhjZXB0aW9uOworICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3Rv
cigpOworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfSBjYXRj
aChlKSB7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICBp
ZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRpb24pCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgaXQgdGhy
b3dzOiAiICsgZS5uYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNlcHRp
b24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsg
ZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworICAg
IH0KK30KKworbGV0IGkgPSAwOworCitsZXQgbyA9IHt9OworY2xhc3MgQmFzZSB7CisgICAgY29u
c3RydWN0b3IoKSB7CisgICAgICAgIHJldHVybiBvOworICAgIH0KK30KKworY2xhc3MgQyBleHRl
bmRzIEJhc2UgeworICAgICNtZXRob2QodikgeworICAgICAgICB0aGlzLmZpZWxkID0gdjsKKyAg
ICB9CisKKyAgICBhY2Nlc3ModikgeworICAgICAgICB0aGlzLiNtZXRob2Qodik7CisgICAgfQor
fQorbm9JbmxpbmUoQy5wcm90b3R5cGUuYWNjZXNzKTsKKworbGV0IGMgPSBuZXcgQygpOworQy5w
cm90b3R5cGUuYWNjZXNzLmNhbGwoYywgJ2ZvbycpOworYXNzZXJ0LnNhbWVWYWx1ZShjLmZpZWxk
LCAnZm9vJyk7CisKK2Fzc2VydC5zaG91bGRUaHJvdyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgewor
ICAgIGMgPSBuZXcgQygpOworfSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZh
dGUtbWV0aG9kLWludmFsaWRhdGUtY29tcGlsZWQtd2l0aC1jb25zdGFudC1zeW1ib2wuanMgYi9K
U1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1pbnZhbGlkYXRlLWNvbXBpbGVkLXdpdGgtY29u
c3RhbnQtc3ltYm9sLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u
MjlkM2M3MmIwMzhiCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1t
ZXRob2QtaW52YWxpZGF0ZS1jb21waWxlZC13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpAQCAtMCww
ICsxLDYyIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIp
CisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAg
ICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiAr
IGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9LAorICAgIHRocm93czogZnVuY3Rpb24oZXhj
ZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAg
dHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9u
ID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRp
b24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAg
ICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNl
cHRpb24ubmFtZSArICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0ZWQg
d2l0aG91dCBleGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGZhY3RvcnlDbGFzcygp
IHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgI21ldGhvZCgpIHsKKyAgICAgICAgICAgIHJldHVy
biAndGVzdCc7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgYWNjZXNzKCkgeworICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuI21ldGhvZCgpOworICAgICAgICB9CisgICAgfQorICAgIG5vSW5saW5l
KEMucHJvdG90eXBlLmFjY2Vzcyk7CisKKyAgICByZXR1cm4gQzsKK30KKworbGV0IEMgPSBmYWN0
b3J5Q2xhc3MoKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0
IGMgPSBuZXcgQygpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5hY2Nlc3MoKSwgJ3Rlc3QnKTsK
KyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgKCkgPT4geworICAgICAgICBjLmFjY2Vzcy5j
YWxsKHt9KTsKKyAgICB9KTsKK30KKworbGV0IEMyID0gZmFjdG9yeUNsYXNzKCk7CisKK2xldCBj
MiA9IG5ldyBDMigpOworYXNzZXJ0LnNhbWVWYWx1ZShjMi5hY2Nlc3MoKSwgJ3Rlc3QnKTsKKwor
bGV0IGMgPSBuZXcgQygpOworCithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgKCkgPT4geworICAg
IGMuYWNjZXNzLmNhbGwoYzIpOworfSk7CisKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCAoKSA9
PiB7CisgICAgYzIuYWNjZXNzLmNhbGwoYyk7Cit9KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL3ByaXZhdGUtbWV0aG9kLW5lc3RlZC1jbGFzcy5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZh
dGUtbWV0aG9kLW5lc3RlZC1jbGFzcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLjhjZGY0ODk5YTQzZQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L3ByaXZhdGUtbWV0aG9kLW5lc3RlZC1jbGFzcy5qcwpAQCAtMCwwICsxLDY4IEBACisvL0AgcmVx
dWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2Vy
dChhLCBlKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhw
ZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7Cit9CisKKygoKSA9PiB7CisgICAgY2xh
c3MgQmFzZSB7CisgICAgICAgIEMgPSBjbGFzcyB7CisgICAgICAgICAgICBtZXRob2QoKSB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuI21CYXNlKCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICAjbUJhc2UoKSB7CisgICAgICAgICAgICByZXR1cm4gNDsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGxldCBiYXNlID0gbmV3IEJhc2UoKTsKKyAgICBsZXQgYyA9IG5l
dyBiYXNlLkMoKTsKKyAgICBhc3NlcnQoYy5tZXRob2QuY2FsbChiYXNlKSwgNCk7CisKKyAgICB0
cnkgeworICAgICAgICBjLm1ldGhvZCgpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgYXNz
ZXJ0KGUgaW5zdGFuY2VvZiBUeXBlRXJyb3IsIHRydWUpOworICAgIH0KK30pKCk7CisKKy8vIFRl
c3Qgc2hhZG93IG1ldGhvZHMKKworKCgpID0+IHsKKyAgICBjbGFzcyBCYXNlIHsKKyAgICAgICAg
bWV0aG9kKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI20oKTsKKyAgICAgICAgfQorCisg
ICAgICAgIEMgPSBjbGFzcyB7CisgICAgICAgICAgICBtZXRob2QobykgeworICAgICAgICAgICAg
ICAgIHJldHVybiBvLiNtKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICNtKCkgewor
ICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZvbzsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgZm9vID0gNDsKKyAgICAgICAgfTsKKworICAgICAgICAjbSgpIHsKKyAgICAgICAgICAg
IHJldHVybiAiZm9vIjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBiYXNlID0gbmV3IEJh
c2UoKTsKKyAgICBsZXQgYyA9IG5ldyBiYXNlLkMoKTsKKyAgICBhc3NlcnQoYy5tZXRob2QoYyks
IDQpOworICAgIGFzc2VydChiYXNlLm1ldGhvZCgpLCAiZm9vIik7CisKKyAgICB0cnkgeworICAg
ICAgICBjLm1ldGhvZChiYXNlKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGFzc2VydChl
IGluc3RhbmNlb2YgVHlwZUVycm9yLCB0cnVlKTsKKyAgICB9Cit9KSgpOworCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1wb2x5bW9ycGhpYy13aXRoLWNvbnN0YW50
LXN5bWJvbC5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLXBvbHltb3JwaGljLXdp
dGgtY29uc3RhbnQtc3ltYm9sLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uMDAxNzYyN2E1MzA5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJp
dmF0ZS1tZXRob2QtcG9seW1vcnBoaWMtd2l0aC1jb25zdGFudC1zeW1ib2wuanMKQEAgLTAsMCAr
MSw1MyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQor
CitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAg
ICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBl
ICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfSwKKyAgICBzaG91bGRUaHJvdzogZnVuY3Rpb24o
ZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAg
ICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0
aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNl
cHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQor
ICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBl
eGNlcHRpb24ubmFtZSArICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7CisgICAgICAgIH0K
KworICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0
ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2xldCBpID0gMDsKKworY2xhc3Mg
QmFzZSB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIGlmIChpICUgMikKKyAgICAgICAg
ICAgIHRoaXMuYW5vdGhlckZpZWxkID0gaTsKKyAgICB9Cit9CisKK2NsYXNzIEMgZXh0ZW5kcyBC
YXNlIHsKKyAgICAjbWV0aG9kKCkgeworICAgICAgICByZXR1cm4gJ3Rlc3QnOworICAgIH0KKwor
ICAgIGFjY2VzcygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI21ldGhvZCgpOworICAgIH0KK30K
K25vSW5saW5lKEMucHJvdG90eXBlLmFjY2Vzcyk7CisKK2ZvciAoOyBpIDwgMTAwMDA7IGkrKykg
eworICAgIGNvdW50ID0gaTsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVW
YWx1ZShjLmFjY2VzcygpLCAndGVzdCcpOworfQorCithc3NlcnQuc2hvdWxkVGhyb3coVHlwZUVy
cm9yLCAoKSA9PiB7CisgICAgYy5hY2Nlc3MuY2FsbCh7fSk7Cit9KTsKKwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtdW50eXBlZC11c2UuanMgYi9KU1Rlc3RzL3N0
cmVzcy9wcml2YXRlLW1ldGhvZC11bnR5cGVkLXVzZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLjhhY2I4YjQxMDJiZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLXVudHlwZWQtdXNlLmpzCkBAIC0wLDAgKzEsNTggQEAK
Ky8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIiwgIi0tdXNlQWNj
ZXNzSW5saW5pbmc9ZmFsc2UiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNob3VsZFRocm93OiBm
dW5jdGlvbihleGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9u
OworICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhy
ZXdFeGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0
aHJld0V4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNl
cHRpb24pCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJv
dzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1
dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworICAgIH0KK30KKworY2xhc3MgQyB7Cisg
ICNtZXRob2QoKSB7fQorCisgIGFjY2Vzcyh2KSB7CisgICAgICBsZXQgbyA9IHRoaXM7CisgICAg
ICAvLyBUaGlzIGJyYW5jaCBpcyBoZXJlIHRvIGF2b2lkIFB1dFByaXZhdGVOYW1lQnlJZCB0byBi
ZSBmb2xkZWQgYXMgCisgICAgICAvLyBQdXRCeU9mZnNldC4KKyAgICAgIGlmICh2ID4gMTAwKQor
ICAgICAgICAgIG8gPSB7fTsKKyAgICAgIG8uI21ldGhvZCgpOworICB9Cit9Citub0lubGluZShD
LnByb3RvdHlwZS5hY2Nlc3MpOworCitsZXQgYyA9IG5ldyBDKCk7CisKKy8vIExldCdzIHRyaWdn
ZXIgSklUIGNvbXBpbGF0aW9uIGZvciBgQy5wcm90b3R5cGUuYWNjZXNzYAorZm9yIChsZXQgaSA9
IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgYy5hY2Nlc3MoMTUpOworfQorCitmb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBhc3NlcnQuc2hvdWxkVGhyb3coVHlwZUVycm9y
LCAoKSA9PiB7CisgICAgICAgIGMuYWNjZXNzLmNhbGwoe30sIDApOworICAgIH0pOworCisgICAg
YXNzZXJ0LnNob3VsZFRocm93KFR5cGVFcnJvciwgKCkgPT4geworICAgICAgICBjLmFjY2Vzcy5j
YWxsKDE1LCAwKTsKKyAgICB9KTsKKworICAgIGFzc2VydC5zaG91bGRUaHJvdyhUeXBlRXJyb3Is
ICgpID0+IHsKKyAgICAgICAgYy5zZXRGaWVsZC5jYWxsKCdzdHJpbmcnLCAwKTsKKyAgICB9KTsK
KworICAgIGFzc2VydC5zaG91bGRUaHJvdyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICAgICAgYy5z
ZXRGaWVsZC5jYWxsKFN5bWJvbCgnc3ltYm9sJyksIDApOworICAgIH0pOworfQorCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZHMtb24tcHJveHkuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9wcml2YXRlLW1ldGhvZHMtb24tcHJveHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi5mYjVmZGZjYjYyMzQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZHMtb24tcHJveHkuanMKQEAgLTAsMCArMSw0MiBAQAor
Ly9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitmdW5jdGlv
biBhc3NlcnQoYSwgZSwgbSkgeworICAgIGlmIChhICE9PSBlKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IobSk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydEFycmF5Q29udGVudChhLCBlKSB7CisgICAg
YXNzZXJ0KGEubGVuZ3RoLCBlLmxlbmd0aCwgIlNpemUgb2YgYXJyYXlzIGRvZXNuJ3QgbWF0Y2gi
KTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspCisgICAgICAgIGFzc2Vy
dChhW2ldLCBlW2ldLCAiYVsiICsgaSArICJdID0gIiArIGFbaV0gKyAiIGJ1dCBlWyIgKyBpICsg
Il0gPSAiICsgZVtpXSk7Cit9CisKK2xldCBhcnIgPSBbXTsKKworY2xhc3MgUHJveHlCYXNlIHsK
KyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm94eSh0aGlzLCB7Cisg
ICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uIChvYmosIHByb3ApIHsKKyAgICAgICAgICAgICAgICBh
cnIucHVzaChwcm9wKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gb2JqW3Byb3BdOworICAgICAg
ICAgICAgfQorICAgICAgICB9KTsKKyAgICB9Cit9CisKK2NsYXNzIFRlc3QgZXh0ZW5kcyBQcm94
eUJhc2UgeworICAgICNtKCkgeworICAgICAgICByZXR1cm4gMzsKKyAgICB9CisKKyAgICBtZXRo
b2QoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtKCk7CisgICAgfQorfQorCitsZXQgdCA9IG5l
dyBUZXN0KCk7CitsZXQgciA9IHQubWV0aG9kKCk7Cithc3NlcnQociwgMywgIkV4cGVjdGVkOiAz
IGJ1dCBnb3Q6ICIgKyByKTsKKworYXNzZXJ0QXJyYXlDb250ZW50KGFyciwgWydtZXRob2QnXSk7
CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9u
LWRpcmVjdC1ldmFsLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1lcy1hdmFpbGFibGUt
b24tZGlyZWN0LWV2YWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li42NGNlMGUwYWY4MDUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRl
LW5hbWVzLWF2YWlsYWJsZS1vbi1kaXJlY3QtZXZhbC5qcwpAQCAtMCwwICsxLDIzIEBACisvL0Ag
cmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQg
PSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAobGhzLCByaHMpIHsKKyAgICAgICAgaWYgKGxo
cyAhPT0gcmhzKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIHJo
cyArICIgYnVnIGdvdDogIiArIGxocyk7CisgICAgfQorfTsKKworKGZ1bmN0aW9uICgpIHsKKyAg
ICBjbGFzcyBDIHsKKyAgICAgICAgI20oKSB7IHJldHVybiAndGVzdCc7IH0KKworICAgICAgICBj
YWxsTWV0aG9kRnJvbUV2YWwoKSB7CisgICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXM7CisgICAg
ICAgICAgICByZXR1cm4gZXZhbCgnc2VsZi4jbSgpJyk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmNhbGxNZXRob2RGcm9t
RXZhbCgpLCAndGVzdCcpOworfSkoKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2Nv
bmZpZy55YW1sIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCmluZGV4IGI5MTQ5NjdiZGI3
MC4uNmNlZmU0NGMxMDQ3IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwK
KysrIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCkBAIC01LDYgKzUsNyBAQCBmbGFnczoK
ICAgRmluYWxpemF0aW9uUmVnaXN0cnk6IHVzZVdlYWtSZWZzCiAgIGNsYXNzLWZpZWxkcy1wdWJs
aWM6IHVzZVB1YmxpY0NsYXNzRmllbGRzCiAgIGNsYXNzLWZpZWxkcy1wcml2YXRlOiB1c2VQcml2
YXRlQ2xhc3NGaWVsZHMKKyAgY2xhc3MtbWV0aG9kcy1wcml2YXRlOiB1c2VQcml2YXRlTWV0aG9k
cwogICBJbnRsLkRhdGVUaW1lRm9ybWF0LWRheVBlcmlvZDogdXNlSW50bERhdGVUaW1lRm9ybWF0
RGF5UGVyaW9kCiBza2lwOgogICBmZWF0dXJlczoKQEAgLTE2LDcgKzE3LDYgQEAgc2tpcDoKICAg
ICAtIGxlZ2FjeS1yZWdleHAKIAogICAgIC0gYXJiaXRyYXJ5LW1vZHVsZS1uYW1lc3BhY2UtbmFt
ZXMKLSAgICAtIGNsYXNzLW1ldGhvZHMtcHJpdmF0ZQogICAgIC0gY2xhc3Mtc3RhdGljLWZpZWxk
cy1wdWJsaWMKICAgICAtIGNsYXNzLXN0YXRpYy1maWVsZHMtcHJpdmF0ZQogICAgIC0gY2xhc3Mt
c3RhdGljLW1ldGhvZHMtcHJpdmF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggMDQ2OTQw
NTYwODE3Li4zYWE4YzBlY2VjN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI2NSBAQAorMjAyMC0xMC0yMCAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CisK
KyAgICAgICAgW0VTTmV4dF0gSW1wbGVtZW50IHByaXZhdGUgbWV0aG9kcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NDM0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBhZGRpbmcg
c3VwcG9ydCB0byBwcml2YXRlIG1ldGhvZHMgZm9sbG93aW5nIHRoZQorICAgICAgICBzcGVjaWZp
Y2F0aW9uIG9uIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1wcml2YXRlLW1ldGhvZHMvLgorICAg
ICAgICBUaGlzIGlzIGludHJvZHVjaW5nIGEgbmV3IHdheSB0byBkZWNsYXJlIHByaXZhdGUgbWV0
aG9kcyBvbgorICAgICAgICBjbGFzcyBzeW50YXguIFByaXZhdGUgbWV0aG9kcyBhcmUgb25seSBh
Y2Nlc3NpYmxlIHdpdGhpbgorICAgICAgICBjbGFzc2VzIHRoZXkgd2VyZSBkZWNsYXJlZCwgYW5k
IG9ubHkgY2FuIGJlIGNhbGxlZCBmcm9tCisgICAgICAgIG9iamVjdHMgdGhhdCBhcmUgaW5zdGFu
Y2Ugb2YgdGhlc2UgY2xhc3Nlcy4KKyAgICAgICAgVG8gZ3VhcmFudGVlIHN1Y2ggcnVsZXMsIHRo
ZSBwcm9wb3NhbCBwcmVzZW50cyB0aGUgY29uY2VwdCBvZgorICAgICAgICBCcmFuZCBDaGVjay4g
RHVyaW5nIGNsYXNzIGV2YWx1YXRpb24sIGlmIGEgcHJpdmF0ZSBtZXRob2QgaXMgcHJlc2VudCwK
KyAgICAgICAgYSBgYnJhbmRgIGlzIGluc3RhbGxlZCBpbiB0aGlzIGNsYXNzLiBFdmVyeSBpbnN0
YW5jZSBvZiBzdWNoIGNsYXNzCisgICAgICAgIHRoZW4gZ2V0cyB0aGlzIGJyYW5kIGluc3RhbGxl
ZCBkdXJpbmcgYFtbQ29uc3RydWN0XV1gIG9wZXJhdGlvbi4gSXQKKyAgICAgICAgbWVhbnMgdGhh
dCBhbiBvYmplY3QgY2FuIGhhdmUgbXVsdGlwbGUgYnJhbmRzIChlLmcgd2hlbiB0aGVyZSBpcyBh
bHNvCisgICAgICAgIHByaXZhdGUgbWV0aG9kcyBkZWNsYXJlZCBvbiBzdXBlciBjbGFzcykuIEJl
Zm9yZSBhY2Nlc3NpbmcgYSBwcml2YXRlCisgICAgICAgIG1ldGhvZCwgdGhlcmUgaXMgYSBjaGVj
ayB0byB2YWxpZGF0ZSBpZiB0aGUgdGFyZ2V0IG9mIHRoZSBjYWxsIGhhcyB0aGUKKyAgICAgICAg
YnJhbmQgb2YgY2FsbGVlIG1ldGhvZC4KKyAgICAgICAgVGhlIGJyYW5kIGNoZWNrIG1lY2hhbmlz
bSBpcyBpbXBsZW1lbnRlZCB1c2luZyBhIGBAcHJpdmF0ZUJyYW5kYAorICAgICAgICBzdG9yZWQg
b24gY2xhc3Mgc2NvcGUuIEhlcmUgaXMgYSByZXByZXNlbnRhdGlvbiBvZiBob3cgdGhpcyBtZWNo
YW5pc20KKyAgICAgICAgd29ya3M6CisKKyAgICAgICAgYGBgCisgICAgICAgIGNsYXNzIEMgewor
ICAgICAgICAgICAgI20oKSB7IHJldHVybiAzOyB9CisgICAgICAgICAgICBtZXRob2QoKSB7IHJl
dHVybiB0aGlzLiNtKCk7IH0KKyAgICAgICAgfQorCisgICAgICAgIGxldCBjID0gbmV3IEMoKTsK
KyAgICAgICAgY29uc29sZS5sb2coYy5tZXRob2QoKSk7IC8vIHByaW50cyAzCisgICAgICAgIGBg
YAorCisgICAgICAgIEdlbmVyYXRlZCBieXRlY29kZSBmb3IgdGhlIGZvbGxvd2luZyByZXByZXNl
bnRhdGlvbjoKKyAgICAgICAgYGBgCisgICAgICAgIHsgLy8gY2xhc3MgbGV4aWNhbCBzY29wZQor
ICAgICAgICAgICAgY29uc3QgQHByaXZhdGVCcmFuZCA9IEBjcmVhdGVQcml2YXRlU3ltYm9sKCk7
CisgICAgICAgICAgICBjb25zdCAjbSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDM7IH0KKyAgICAg
ICAgICAgIEMucHJvdG90eXBlLm1ldGhvZCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg
IEBnZXRfcHJpdmF0ZV9uYW1lKHRoaXMsIEBwcml2YXRlQnJhbmQpOworICAgICAgICAgICAgICAg
IHJldHVybiAjbS5jYWxsKHRoaXMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQyA9IGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIEBwdXRfcHJpdmF0ZV9uYW1lKHRoaXMsIEBwcml2
YXRlQnJhbmQsIEBwcml2YXRlQnJhbmQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgbGV0IGMgPSBuZXcgQygpOworICAgICAgICBjb25zb2xlLmxvZyhjLm1ldGhvZCgpKTsg
Ly8gcHJpbnRzIDMKKyAgICAgICAgYGBgCisKKyAgICAgICAgVGhlIGJyYW5kIGNoZWNrIGlzIHBl
cmZvcm1lZCBieSBgZ2V0X3ByaXZhdGVfbmFtZWAsIHdoZXJlIHdlIHJlLXVzZQorICAgICAgICB0
aGUgbWVjaGFuaXNtIGludHJvZHVjZWQgYnkgcHJpdmF0ZSBjbGFzcyBmaWVsZHMuIFdlIGNhbiBz
ZWUgdGhlCisgICAgICAgIHByaXZhdGUgYnJhbmQgYXMgYSBzcGVjaWFsIHByaXZhdGUgZmllbGQg
aW5zdGFsbGVkIGR1cmluZworICAgICAgICBgW1tDb25zdHJ1Y3RdXWAgb3BlcmF0aW9uLiBTaW5j
ZSB0aGUgcHJpdmF0ZSBicmFuZCBpcyBhIHByaXZhdGUgZmllbGQsCisgICAgICAgIHdlIHRocm93
IGBUeXBlRXJyb3JgIHdoZW4gdGhlIGxvb2t1cCBmYWlsLgorCisgICAgICAgIFRvIHByb3Blcmx5
IHN0b3JlIHRoZSBwcml2YXRlIGJyYW5kIG9mIGEgY2xhc3Mgb24gYWxsIG9iamVjdHMsCisgICAg
ICAgIGluY2x1ZGluZyBQcm94aWVzLCB3ZSB1c2UgYHB1dF9wcml2YXRlX25hbWVgLiBUaGlzIGlu
c3RydWN0aW9uIHB1dHMKKyAgICAgICAgdmFsdWUgb24gb2JqZWN0J3MgcHJvcGVydGllcyB3aXRo
b3V0IGV4ZWN1dGluZyBbW1B1dF1dIHNlbWFudGljcy4KKyAgICAgICAgV2l0aCB0aGlzIGRlc2ln
biwgd2UgYXZvaWQgYWxsb2NhdGluZyBhIGZpZWxkIGZvciBldmVyeSBpbnN0YW5jZQorICAgICAg
ICBvZiBhIGNsYXNzLCBzaW5jZSBwcml2YXRlIG1ldGhvZHMgYXJlIHN0b3JlZCBvbiBjbGFzcwor
ICAgICAgICBsZXhpY2FsIHNjb3BlLiBFdmVyeSBvYmplY3Qgd2lsbCBoYXZlIHRvIGFsbG9jYXRl
IGl0cyBwcml2YXRlCisgICAgICAgIGJyYW5kIGxpc3QuIFRoaXMgZGVzaWduIGluc2VydHMgbm8g
b3ZlcmhlYWQgb24gb2JqZWN0cyBhbmQgY2xhc3NlcworICAgICAgICB3aXRob3V0IHByaXZhdGUg
bWV0aG9kcy9hY2Nlc3Nvci4KKworICAgICAgICBSZXNvbHZpbmcgY29ycmVjdCBicmFuZCBjaGVj
azoKKworICAgICAgICBJbiB0aGUgY2FzZSBvZiBzaGFkb3dpbmcgb3IgbmVzdGVkIHNjb3BlLCB3
ZSBuZWVkIHRvIGVtaXQgYnJhbmQKKyAgICAgICAgY2hlY2tzIHRvIHRoZSByaWdodCBwcml2YXRl
IGJyYW5kLiBTZWUgY29kZSBiZWxvdzoKKworICAgICAgICBgYGAKKyAgICAgICAgY2xhc3MgQyB7
CisgICAgICAgICAgICAjbSgpIHsgcmV0dXJuIDM7IH0KKyAgICAgICAgICAgIG1ldGhvZCgpIHsg
cmV0dXJuIHRoaXMuI20oKTt9CisKKyAgICAgICAgICAgIEEgPSBjbGFzcyB7CisgICAgICAgICAg
ICAgICAgI20yKCkgeyByZXR1cm4gMzsgfQorICAgICAgICAgICAgICAgIGZvbyhvKSB7IHJldHVy
biB0aGlzLiNtKCk7IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBgYGAKKwor
ICAgICAgICBUaGUgY2FsbCBvZiAiI20iIGluIGBmb29gIHJlZmVycyB0byAiQzo6I20iLiBJbiBz
dWNoIGNhc2UsIHdlIG5lZWQgdG8KKyAgICAgICAgY2hlY2sgQydzIHByaXZhdGUgYnJhbmQsIGlu
c3RlYWQgb2YgQSdzIHByaXZhdGUgYnJhbmQuCisgICAgICAgIFRvIHBlcmZvcm0gdGhlIHByb3Bl
ciBjaGVjaywgd2UgZmlyc3QgcmVzb2x2ZSBzY29wZSBvZiAiI20iIGFuZCB0aGVuCisgICAgICAg
IGNoZWNrIHRoZSBwcml2YXRlIGJyYW5kIG9mIHRoaXMgc2NvcGUgKHRoZSBzY29wZSB3aGVyZSB0
aGUgcHJpdmF0ZQorICAgICAgICBtZXRob2QgYW5kIGJyYW5kIGFyZSBzdG9yZWQgaXMgdGhlIHNh
bWUpLgorICAgICAgICBTbyB0aGUgYnl0ZWNvZGUgdG8gbG9va3VwIHRoZSByaWdodCBicmFuZCBp
czoKKworICAgICAgICBgYGAKKyAgICAgICAgcmVzb2x2ZV9zY29wZSBsb2MxMCwgIiNtIgorICAg
ICAgICBnZXRfZnJvbV9zY29wZSBsb2MxMSwgbG9jMTAsICJAcHJpdmF0ZUJyYW5kIgorICAgICAg
ICBnZXRfcHJpdmF0ZV9uYW1lIGxvYzEyLCB0aGlzLCBsb2MxMQorICAgICAgICBnZXRfZnJvbV9z
Y29wZSBsb2MxMSwgbG9jMTAsICIjbSIKKyAgICAgICAgLy8gc2V0dXAgY2FsbCBmcmFtZQorICAg
ICAgICBjYWxsIGxvYzExLCAuLi4KKyAgICAgICAgLy8gLi4uCisgICAgICAgIGBgYAorCisgICAg
ICAgICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDoKKyAgICAgICAgKEpTQzo6QnVp
bHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IpOgorICAgICAgICAoSlND
OjpCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUpOgorICAgICAgICAqIGJ1aWx0
aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oOgorCisgICAgICAgIFdlIGFyZSBhZGRpbmcgYSBuZXcg
cGFyYW1ldGVyIGBQcml2YXRlQnJhbmRSZXF1aXJlbWVudGAgdG8gcHJvcGFnYXRlCisgICAgICAg
IHdoZW4gYSBkZWZhdWx0IGNvbnN0cnVjdG9yIG5lZWRzIHRvIGVtaXQgY29kZSB0byBzZXR1cCBw
cml2YXRlIGJyYW5kCisgICAgICAgIG9uIGluc3RhbmNlcy4KKworICAgICAgICAqIGJ1aWx0aW5z
L0J1aWx0aW5OYW1lcy5oOgorCisgICAgICAgIEFkZGluZyBgQHByaXZhdGVCcmFuZGAgdGhhdCAg
d2UgdXNlIHRvIHN0b3JlIHByaXZhdGUgYnJhbmQgb24KKyAgICAgICAgY2xhc3MncyBzY29wZS4K
KworICAgICAgICAqIGJ5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmg6CisgICAgICAgIChKU0M6OkV4
ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJ
bmZvOjpwcml2YXRlQnJhbmRSZXF1aXJlbWVudCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
VW5saW5rZWRDb2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
Lmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpwcml2YXRlQnJhbmRSZXF1aXJl
bWVudCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0
b3IuaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6OnByaXZhdGVC
cmFuZFJlcXVpcmVtZW50IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5l
cmF0b3IpOgorCisgICAgICAgIFdlIGNoYW5nZWQgQnl0ZWNvZGVHZW5lcmF0b3IgZm9yIEZ1bmN0
aW9uTm9kZSBhbmQgRXZhbE5vZGUgdG8KKyAgICAgICAgcHJvcGFnYXRlIHBhcmVudFNjb3BlIFZh
cmlhYmxlRW52aXJvbm1lbnQuIFRoZXNlIGVudmlyb25tZW50cyBzdG9yZXMKKyAgICAgICAgcHJp
dmF0ZSBuYW1lIGVudHJpZXMgdGhhdCBhcmUgdmlzaWJsZSBpbnRvIHRoZSBzY29wZSBvZiB0aGUK
KyAgICAgICAgZnVuY3Rpb24vZXZhbCBpbiBhZGRpdGlvbiB0byBURFogdmFyaWFibGVzLgorICAg
ICAgICBUaGlzIGlzIHJlcXVpcmVkIHRvIGlkZW50aWZ5IHRoZSBraW5kIG9mIGFjY2VzcyBhIHBy
aXZhdGUgbmFtZSBpcworICAgICAgICByZWZlcnJpbmcgdG8sIHNpbmNlIGl0IGNhbiBiZSBhIHBy
aXZhdGUgZmllbGQgb3IgYSBwcml2YXRlIG1ldGhvZC4KKyAgICAgICAgR2l2ZW4gdGhpcyBjaGFu
Z2UsIHdlIGNoYW5nZWQgdGhlIG5hbWUgb2YgVmFyaWFibGVFbnZpcm9ubWVudAorICAgICAgICBm
cm9tIGBwYXJlbnRTY29wZVREWlZhcmlhYmxlc2AgdG8gYHBhcmVudFNjb3BlVmFyaWFibGVFbnZp
cm9ubWVudGAuCisKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Omluc3RhbnRpYXRl
TGV4aWNhbFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
R2V0UHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENy
ZWF0ZVByaXZhdGVCcmFuZCk6CisKKyAgICAgICAgVGhlIHByb2Nlc3MgdG8gY3JlYXRlIGEgcHJp
dmF0ZSBicmFuZCBpcyBhcyBmb2xsb3dzOgorICAgICAgICAgICAgMS4gQ3JlYXRlIGEgUHJpdmF0
ZVN5bWJvbCB1c2luZyBgQGNyZWF0ZVByaXZhdGVTeW1ib2xgLgorICAgICAgICAgICAgMi4gU3Rv
cmUgdGhpcyBzeW1ib2wgaW50byBhIGdpdmVuIHNjb3BlIChpLmUgY2xhc3MgbGV4aWNhbCBzY29w
ZSkKKyAgICAgICAgICAgICAgIG9uIGBAcHJpdmF0ZUJyYW5kYCB2YXJpYWJsZS4KKworICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEluc3RhbGxQcml2YXRlQnJhbmQpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFByaXZhdGVCcmFuZCk6CisKKyAg
ICAgICAgV2UgYWRkZWQgYG1fcHJpdmF0ZU5hbWVzU3RhY2tgIHRvIEJ5dGVjb2RlR2VuZXJhdG9y
IHRvIHJlcHJlc2VudCB0aGUKKyAgICAgICAgc2NvcGUgY2hhaW4gb2YgYXZhaWxhYmxlIHByaXZh
dGUgbmFtZXMgd2hpbGUgZ2VuZXJhdGluZyBieXRlY29kZS4KKworICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdENoZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmlzUHJpdmF0ZU1ldGhvZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjpwdXNoUHJpdmF0ZUFjY2Vzc05hbWVzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OnBvcFByaXZhdGVBY2Nlc3NOYW1lcyk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjpnZXRBdmFpbGFibGVQcml2YXRlQWNjZXNzTmFtZXMpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2V0VmFyaWFibGVzVW5kZXJURFopOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3Rvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3SW5zdGFuY2VGaWVsZEluaXRpYWxp
emVyRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVj
dEdldEJ5VmFsKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnByaXZhdGVCcmFuZFJl
cXVpcmVtZW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Om1ha2VG
dW5jdGlvbik6CisKKyAgICAgICAgVGhpcyBjaGFuZ2UgaXMgcmVxdWlyZWQgdG8gcHJvcGVybHkg
cHJvcGFnYXRlIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50CisgICAgICAgIHRvIGFycm93IGZ1bmN0
aW9ucyB0aGF0IGNhbiBwb3RlbnRpYWxseSBjYWxsIGBzdXBlcigpYC4KKworICAgICAgICAqIGJ5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3RO
b2RlOjplbWl0RGVjbGFyZVByaXZhdGVGaWVsZE5hbWVzKToKKyAgICAgICAgKEpTQzo6UHJvcGVy
dHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlMaXN0Tm9k
ZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6
ZW1pdEdldFByb3BlcnR5VmFsdWUpOgorCisgICAgICAgIEFkZGluZyBzdXBwb3J0IHRvIHByb3Bl
cmx5IGFjY2VzcyBwcml2YXRlIG1ldGhvZC4gU2luY2Ugd2Ugc3RvcmUKKyAgICAgICAgcHJpdmF0
ZSBtZXRob2RzIG9uIGNsYXNzIGxleGljYWwgc2NvcGUsIHdlIG5lZWQgYSBkaWZmZXJlbnQgc2V0
IG9mCisgICAgICAgIGluc3RydWN0aW9ucyB0byBhY2Nlc3MgYSBwcml2YXRlIG1ldGhvZC4KKwor
ICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6ZW1pdFB1dFByb3BlcnR5KToKKworICAgICAgICBJ
biB0aGUgY2FzZSBvZiB3ZSB0cnlpbmcgdG8gd3JpdGUgaW4gYSBwcml2YXRlIG1ldGhvZCwgd2Ug
bmVlZCB0bworICAgICAgICB0aHJvdyBhIFR5cGVFcnJvciBhY2NvcmRpbmcgdG8gc3BlY2lmaWNh
dGlvbgorICAgICAgICAoaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXByaXZhdGUtbWV0aG9kcy8j
c2VjLXByaXZhdGVmaWVsZHNldCkuCisKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsVmFsdWVO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdERvdCk6
CisgICAgICAgIChKU0M6OlByZWZpeE5vZGU6OmVtaXREb3QpOgorICAgICAgICAoSlNDOjpDbGFz
c0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQ2Fs
bEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlV2l0
aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6
CisgICAgICAgIChKU0M6OmV2YWwpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAg
ICAgIChKU0M6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpGdW5jdGlvbk1ldGFkYXRhTm9kZSk6Cisg
ICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKToKKyAgICAgICAgKiBw
YXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlNjb3BlOjpkZWNsYXJlUHJpdmF0ZU1ldGhv
ZCk6CisgICAgICAgIChKU0M6OlNjb3BlOjpkZWNsYXJlUHJpdmF0ZUZpZWxkKToKKyAgICAgICAg
KEpTQzo6U2NvcGU6OmRlY2xhcmVQcml2YXRlTmFtZSk6IERlbGV0ZWQuCisgICAgICAgICogcGFy
c2VyL1BhcnNlck1vZGVzLmg6CisgICAgICAgICogcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQu
Y3BwOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZU1l
dGhvZCk6CisgICAgICAgIChKU0M6OkNvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50OjpDb21wYWN0
VmFyaWFibGVFbnZpcm9ubWVudCk6CisgICAgICAgIChKU0M6OkNvbXBhY3RWYXJpYWJsZUVudmly
b25tZW50OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q29tcGFjdFZhcmlhYmxl
RW52aXJvbm1lbnQ6OnRvVmFyaWFibGVFbnZpcm9ubWVudCBjb25zdCk6CisgICAgICAgICogcGFy
c2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9u
bWVudEVudHJ5Ojppc1ByaXZhdGVGaWVsZCBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxl
RW52aXJvbm1lbnRFbnRyeTo6aXNQcml2YXRlTWV0aG9kIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5OjpzZXRJc1ByaXZhdGVGaWVsZCk6CisgICAgICAgIChK
U0M6OlZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeTo6c2V0SXNQcml2YXRlTWV0aG9kKToKKyAgICAg
ICAgKEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6aXNNZXRob2QgY29uc3QpOgorICAgICAgICAoSlND
OjpQcml2YXRlTmFtZUVudHJ5Ojppc1ByaXZhdGVBY2Nlc3MgY29uc3QpOgorICAgICAgICAoSlND
OjpWYXJpYWJsZUVudmlyb25tZW50OjphZGRQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OlZh
cmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlRmllbGQpOgorICAgICAgICAoSlNDOjpW
YXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZU1ldGhvZCk6CisgICAgICAgIChKU0M6
OlZhcmlhYmxlRW52aXJvbm1lbnQ6Omhhc1ByaXZhdGVBY2Nlc3MgY29uc3QpOgorICAgICAgICAo
SlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OmlzUHJpdmF0ZU5hbWUgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OnNldElzUHJpdmF0
ZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNs
YXJlUHJpdmF0ZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMu
Y3BwOgorICAgICAgICAoSlNDOjpDYWNoZWRDb2RlQmxvY2tSYXJlRGF0YTo6ZW5jb2RlKToKKyAg
ICAgICAgKEpTQzo6Q2FjaGVkQ29kZUJsb2NrUmFyZURhdGE6OmRlY29kZSBjb25zdCk6CisgICAg
ICAgIChKU0M6OkNhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZVJhcmVEYXRhOjplbmNvZGUpOgorICAg
ICAgICAoSlNDOjpDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGVSYXJlRGF0YTo6ZGVjb2RlIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlOjpwcml2YXRlQnJhbmRS
ZXF1aXJlbWVudCBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZENvZGVCbG9jazo6ZGVyaXZl
ZENvbnRleHRUeXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkRnVuY3Rpb25FeGVjdXRh
YmxlOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRDb2RlQmxv
Y2s6Om5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRD
b2RlQmxvY2tJbXBsKToKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpnZXRVbmxpbmtlZEdsb2Jh
bEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgICogcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0
YWJsZS5jcHA6CisgICAgICAgIChKU0M6OkRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUpOgor
ICAgICAgICAoSlNDOjpEaXJlY3RFdmFsRXhlY3V0YWJsZTo6RGlyZWN0RXZhbEV4ZWN1dGFibGUp
OgorICAgICAgICAqIHJ1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBy
dW50aW1lL0V2YWxFeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6
OkV2YWxFeGVjdXRhYmxlKToKKyAgICAgICAgKiBydW50aW1lL0V2YWxFeGVjdXRhYmxlLmg6Cisg
ICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpleGVjdXRhYmxlSW5mbyBjb25zdCk6CisgICAg
ICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpwcml2YXRlQnJhbmRSZXF1aXJlbWVudCBjb25zdCk6
CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6
Y3JlYXRlSW52YWxpZFByaXZhdGVOYW1lRXJyb3IpOgorICAgICAgICAqIHJ1bnRpbWUvSW5kaXJl
Y3RFdmFsRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OkluZGlyZWN0RXZhbEV4ZWN1dGFi
bGU6OkluZGlyZWN0RXZhbEV4ZWN1dGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5j
cHA6CisgICAgICAgIChKU0M6OkpTU2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJU
RFopOgorICAgICAgICAqIHJ1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaDoKKyAgICAg
ICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpPcHRpb25zOjpyZWNvbXB1
dGVEZXBlbmRlbnRPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnNMaXN0Lmg6Cisg
ICAgICAgICogcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
U3ltYm9sVGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZTo6Y2xvbmVTY29wZVBh
cnQpOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuaDoKKwogMjAyMC0xMS0wMyAgWXVz
dWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGJ1
aWxkIGZpeCBmb3IgQVJNNjRFIGRlYnVnIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCmluZGV4IDgzMDQ5NDRiYWM0
My4uNGUxZDk5MjNhNWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcApAQCAtNTksNyArNTksNyBAQCBTb3VyY2VDb2Rl
IEJ1aWx0aW5FeGVjdXRhYmxlczo6ZGVmYXVsdENvbnN0cnVjdG9yU291cmNlQ29kZShDb25zdHJ1
Y3RvcktpbmQgY29ucwogICAgIHJldHVybiBTb3VyY2VDb2RlKCk7CiB9CiAKLVVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZURlZmF1bHRDb25zdHJ1
Y3RvcihDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBu
YW1lLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
cikKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0
ZURlZmF1bHRDb25zdHJ1Y3RvcihDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBjb25z
dCBJZGVudGlmaWVyJiBuYW1lLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQpCiB7CiAgICAgc3dpdGNoIChjb25zdHJ1Y3RvcktpbmQpIHsKICAgICBjYXNlIENv
bnN0cnVjdG9yS2luZDo6Tm9uZToKQEAgLTY3LDcgKzY3LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yKENv
bnN0cnUKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb25zdHJ1Y3RvcktpbmQ6OkJhc2U6CiAg
ICAgY2FzZSBDb25zdHJ1Y3RvcktpbmQ6OkV4dGVuZHM6Ci0gICAgICAgIHJldHVybiBjcmVhdGVF
eGVjdXRhYmxlKG1fdm0sIGRlZmF1bHRDb25zdHJ1Y3RvclNvdXJjZUNvZGUoY29uc3RydWN0b3JL
aW5kKSwgbmFtZSwgY29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1
Y3QsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUV4
ZWN1dGFibGUobV92bSwgZGVmYXVsdENvbnN0cnVjdG9yU291cmNlQ29kZShjb25zdHJ1Y3Rvcktp
bmQpLCBuYW1lLCBjb25zdHJ1Y3RvcktpbmQsIENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVj
dCwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KTsK
ICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC03OCw3ICs3OCw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0
YWJsZXM6OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKGNvbnN0IFNvCiAgICAgcmV0dXJuIGNyZWF0
ZUV4ZWN1dGFibGUobV92bSwgY29kZSwgbmFtZSwgY29uc3RydWN0b3JLaW5kLCBjb25zdHJ1Y3RB
YmlsaXR5LCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8pOwogfQogCi1VbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKFZN
JiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBD
b25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVj
dEFiaWxpdHksIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyKQorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6
Y3JlYXRlRXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgY29uc3Qg
SWRlbnRpZmllciYgbmFtZSwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgQ29uc3Ry
dWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBu
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQpCiB7CiAgICAgLy8gRklYTUU6IENhbiB3ZSBqdXN0IG1ha2UgTWV0
YURhdGEgY29tcHV0YXRpb24gYmUgY29uc3RleHByIGFuZCBoYXZlIHRoZSBjb21waWxlciBkbyB0
aGlzIGZvciB1cz8KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTkzMjcyCkBAIC0yNTEsNyArMjUxLDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0IFMKICAg
ICAgICAgfQogICAgIH0KIAotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlv
bkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBzb3Vy
Y2UsICZtZXRhZGF0YSwga2luZCwgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2Rl
OjpDbGFzc2ljLCBXVEY6Om51bGxvcHQsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgbmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKTsK
KyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSh2bSwgc291cmNlLCAmbWV0YWRhdGEsIGtp
bmQsIGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgV1RGOjpu
dWxsb3B0LCBXVEY6Om51bGxvcHQsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgbmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBpc0J1aWx0aW5EZWZh
dWx0Q2xhc3NDb25zdHJ1Y3Rvcik7CiAgICAgcmV0dXJuIGZ1bmN0aW9uRXhlY3V0YWJsZTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRh
Ymxlcy5oCmluZGV4IDQ1MTYzOGU4NzNmNy4uNDNlMzgyNzViMWI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCkBAIC01OCw5
ICs1OCw5IEBAIFNvdXJjZUNvZGUgbmFtZSMjU291cmNlKCk7CiAjdW5kZWYgRVhQT1NFX0JVSUxU
SU5fRVhFQ1VUQUJMRVMKIAogICAgIHN0YXRpYyBTb3VyY2VDb2RlIGRlZmF1bHRDb25zdHJ1Y3Rv
clNvdXJjZUNvZGUoQ29uc3RydWN0b3JLaW5kKTsKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSogY3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yKENvbnN0cnVjdG9yS2luZCwgY29uc3QgSWRl
bnRpZmllciYgbmFtZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpOworICAgIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoQ29uc3RydWN0b3JL
aW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwg
UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOwogCi0gICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiBjcmVhdGVFeGVjdXRhYmxlKFZNJiwgY29uc3QgU291cmNlQ29kZSYsIGNvbnN0
IElkZW50aWZpZXImLCBDb25zdHJ1Y3RvcktpbmQsIENvbnN0cnVjdEFiaWxpdHksIE5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyKTsKKyAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqIGNyZWF0ZUV4ZWN1dGFibGUoVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgY29uc3QgSWRlbnRp
ZmllciYsIENvbnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJpbGl0eSwgTmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID0gUHJpdmF0ZUJyYW5kUmVxdWly
ZW1lbnQ6Ok5vbmUpOwogCiAgICAgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXggOWI5
YjY0ODgyMGFjLi5kOWNiNDk3MGIwM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAgLTE3MSw2ICsxNzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBtYWNybyh3ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbCkgXAogICAgIG1h
Y3JvKHdlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbCkgXAogICAgIG1hY3Jv
KGluc3RhbmNlRmllbGRJbml0aWFsaXplcikgXAorICAgIG1hY3JvKHByaXZhdGVCcmFuZCkgXAog
ICAgIG1hY3JvKGhhc093blByb3BlcnR5RnVuY3Rpb24pIFwKICAgICBtYWNybyhjcmVhdGVQcml2
YXRlU3ltYm9sKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RXhlY3V0YWJsZUluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRh
YmxlSW5mby5oCmluZGV4IDQ5ZWRkNTI4NWQ1Yy4uY2Q1OWZiNGE3MzNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaApAQCAtMzYsOSArMzYs
MTAgQEAgZW51bSBjbGFzcyBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA6IHVpbnQ4X3QgeyBO
bywgWWVzIH07CiAvLyBGSVhNRTogVGhlc2UgZmxhZ3MsIFBhcnNlck1vZGVzIGFuZCBwcm9wYWdh
dGlvbiB0byBYWFhDb2RlQmxvY2tzIHNob3VsZCBiZSByZW9yZ2FuaXplZC4KIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDcKIHN0cnVjdCBFeGVjdXRhYmxl
SW5mbyB7Ci0gICAgRXhlY3V0YWJsZUluZm8oYm9vbCB1c2VzRXZhbCwgYm9vbCBpc0NvbnN0cnVj
dG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JL
aW5kLCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmlu
ZGluZywgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2
ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0NsYXNzQ29u
dGV4dCwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSkKKyAgICBFeGVjdXRhYmxlSW5m
byhib29sIHVzZXNFdmFsLCBib29sIGlzQ29uc3RydWN0b3IsIFByaXZhdGVCcmFuZFJlcXVpcmVt
ZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25z
dHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9k
ZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwg
RGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0aW9u
Q29udGV4dCwgYm9vbCBpc0NsYXNzQ29udGV4dCwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0
VHlwZSkKICAgICAgICAgOiBtX3VzZXNFdmFsKHVzZXNFdmFsKQogICAgICAgICAsIG1faXNDb25z
dHJ1Y3Rvcihpc0NvbnN0cnVjdG9yKQorICAgICAgICAsIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KSkKICAgICAg
ICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGlzQnVpbHRpbkZ1bmN0aW9uKQogICAgICAgICAsIG1f
Y29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKQog
ICAgICAgICAsIG1fc3VwZXJCaW5kaW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdXBlckJpbmRp
bmcpKQpAQCAtNTcsNiArNTgsNyBAQCBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewogCiAgICAgYm9v
bCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KICAgICBib29sIGlzQ29u
c3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KKyAgICBQcml2YXRl
QnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PFByaXZhdGVCcmFuZFJlcXVpcmVtZW50PihtX3ByaXZhdGVCcmFuZFJlcXVp
cmVtZW50KTsgfQogICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X2lzQnVpbHRpbkZ1bmN0aW9uOyB9CiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2lu
ZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1
Y3RvcktpbmQpOyB9CiAgICAgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZygpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PFN1cGVyQmluZGluZz4obV9zdXBlckJpbmRpbmcpOyB9CkBAIC03MSw2
ICs3Myw3IEBAIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiBwcml2YXRlOgogICAgIHVuc2lnbmVk
IG1fdXNlc0V2YWwgOiAxOwogICAgIHVuc2lnbmVkIG1faXNDb25zdHJ1Y3RvciA6IDE7CisgICAg
dW5zaWduZWQgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA6IDE7CiAgICAgdW5zaWduZWQgbV9p
c0J1aWx0aW5GdW5jdGlvbiA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAy
OwogICAgIHVuc2lnbmVkIG1fc3VwZXJCaW5kaW5nIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IGIzYWRjMGI3
N2ViNy4uOTNkZmY3NzQyZDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTY5LDYgKzY5LDEwIEBAIFVubGlua2Vk
Q29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayhWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBDb2RlVHlwZSBjb2RlCiAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoaG9sZExv
Y2soY2VsbExvY2soKSkpOwogICAgICAgICBtX3JhcmVEYXRhLT5tX25lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyOjpZZXMpOwogICAgIH0KKyAgICBpZiAoaW5mby5wcml2YXRlQnJhbmRSZXF1aXJlbWVudCgp
ID09IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOZWVkZWQpIHsKKyAgICAgICAgY3JlYXRlUmFy
ZURhdGFJZk5lY2Vzc2FyeShob2xkTG9jayhjZWxsTG9jaygpKSk7CisgICAgICAgIG1fcmFyZURh
dGEtPm1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5lZWRlZCk7CisgICAgfQogfQogCiB2b2lkIFVubGlua2Vk
Q29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5oCmluZGV4IDAwZGM2MTYzMzVmZC4uMWY1MWVjZTVkNmY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMjY2LDYg
KzI2NiwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBOZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplcjo6Tm87CiAgICAgfQogCisgICAgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1fcmFyZURhdGEpCisg
ICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ+KG1f
cmFyZURhdGEtPm1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOworICAgICAgICByZXR1cm4gUHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmU7CisgICAgfQorCiAgICAgdm9pZCBkdW1wKFByaW50
U3RyZWFtJikgY29uc3Q7CiAKICAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMmIGxpdmVuZXNz
QW5hbHlzaXMoQ29kZUJsb2NrKiBjb2RlQmxvY2spCkBAIC00MDcsNiArNDE0LDcgQEAgcHVibGlj
OgogICAgICAgICBSZWZDb3VudGVkQXJyYXk8Q29uc3RhbnRJZGVudGlmaWVyU2V0RW50cnk+IG1f
Y29uc3RhbnRJZGVudGlmaWVyU2V0czsKIAogICAgICAgICB1bnNpZ25lZCBtX25lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyIDogMTsKKyAgICAgICAgdW5zaWduZWQgbV9wcml2YXRlQnJhbmRSZXF1
aXJlbWVudCA6IDE7CiAgICAgfTsKIAogICAgIGludCBvdXRPZkxpbmVKdW1wT2Zmc2V0KEluc3Ry
dWN0aW9uU3RyZWFtOjpPZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaAppbmRleCAyZWI5ODRj
MWIwNWEuLjk0YzY4NzBlOTk0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmgKQEAgLTUwLDYgKzUw
LDcgQEAgcHVibGljOgogICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJl
dHVybiBtX2NvZGVCbG9jay0+c3VwZXJCaW5kaW5nKCk7IH0KICAgICBKU1BhcnNlclNjcmlwdE1v
ZGUgc2NyaXB0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5zY3JpcHRNb2RlKCk7
IH0KICAgICBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplcigpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5uZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplcigpOyB9CisgICAgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWly
ZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+cHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQoKTsgfQogICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+
dXNlc0V2YWwoKTsgfQogICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJl
dHVybiBtX2NvZGVCbG9jay0+cGFyc2VNb2RlKCk7IH0KICAgICBib29sIGlzQXJyb3dGdW5jdGlv
bigpIHsgcmV0dXJuIG1fY29kZUJsb2NrLT5pc0Fycm93RnVuY3Rpb24oKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZS5jcHAKaW5kZXggNmIzNzFmNTM5NTdhLi42ODIxNDEwMTA0MzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtNzAsMTEgKzcwLDEyIEBAIHN0YXRpYyBVbmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAKICAg
ICBib29sIGlzQ2xhc3NDb250ZXh0ID0gZXhlY3V0YWJsZS0+c3VwZXJCaW5kaW5nKCkgPT0gU3Vw
ZXJCaW5kaW5nOjpOZWVkZWQ7CiAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1
bHQgPSBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29kZSwg
RXhlY3V0YWJsZUluZm8oZnVuY3Rpb24tPnVzZXNFdmFsKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0
cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxl
LT5jb25zdHJ1Y3RvcktpbmQoKSwgc2NyaXB0TW9kZSwgZXhlY3V0YWJsZS0+c3VwZXJCaW5kaW5n
KCksIHBhcnNlTW9kZSwgZXhlY3V0YWJsZS0+ZGVyaXZlZENvbnRleHRUeXBlKCksIGV4ZWN1dGFi
bGUtPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGZhbHNlLCBpc0NsYXNzQ29udGV4dCwg
RXZhbENvbnRleHRUeXBlOjpGdW5jdGlvbkV2YWxDb250ZXh0KSwgY29kZUdlbmVyYXRpb25Nb2Rl
KTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrOjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29kZSwgRXhlY3V0YWJsZUluZm8oZnVu
Y3Rpb24tPnVzZXNFdmFsKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZXhlY3V0YWJsZS0+
cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRp
bkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgc2NyaXB0TW9kZSwgZXhl
Y3V0YWJsZS0+c3VwZXJCaW5kaW5nKCksIHBhcnNlTW9kZSwgZXhlY3V0YWJsZS0+ZGVyaXZlZENv
bnRleHRUeXBlKCksIGV4ZWN1dGFibGUtPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGZh
bHNlLCBpc0NsYXNzQ29udGV4dCwgRXZhbENvbnRleHRUeXBlOjpGdW5jdGlvbkV2YWxDb250ZXh0
KSwgY29kZUdlbmVyYXRpb25Nb2RlKTsKIAogICAgIGF1dG8gcGFyZW50U2NvcGVURFpWYXJpYWJs
ZXMgPSBleGVjdXRhYmxlLT5wYXJlbnRTY29wZVREWlZhcmlhYmxlcygpOworICAgIFByaXZhdGVO
YW1lRW52aXJvbm1lbnQgcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCA9IGV4ZWN1dGFibGUt
PnBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQoKTsKICAgICBFQ01BTW9kZSBlY21hTW9kZSA9
IGV4ZWN1dGFibGUtPmlzSW5TdHJpY3RDb250ZXh0KCkgPyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBF
Q01BTW9kZTo6c2xvcHB5KCk7Ci0gICAgZXJyb3IgPSBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJh
dGUodm0sIGZ1bmN0aW9uLmdldCgpLCBzb3VyY2UsIHJlc3VsdCwgY29kZUdlbmVyYXRpb25Nb2Rl
LCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgZWNtYU1vZGUpOworICAgIGVycm9yID0gQnl0ZWNv
ZGVHZW5lcmF0b3I6OmdlbmVyYXRlKHZtLCBmdW5jdGlvbi5nZXQoKSwgc291cmNlLCByZXN1bHQs
IGNvZGVHZW5lcmF0aW9uTW9kZSwgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsICZwYXJlbnRQcml2
YXRlTmFtZUVudmlyb25tZW50LCBlY21hTW9kZSk7CiAKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTgyLDcgKzgzLDcgQEAgc3RhdGljIFVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29u
c3QgU291cmNlQ29kZSYgcGFyZW50U291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwg
VW5saW5rZWRGdW5jdGlvbktpbmQga2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmls
aXR5LCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgT3B0aW9uYWw8VmVjdG9yPENvbXBh
Y3RURFpFbnZpcm9ubWVudE1hcDo6SGFuZGxlPj4gcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIERl
cml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQnVpbHRpbkRlZmF1bHRD
bGFzc0NvbnN0cnVjdG9yKQorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJj
ZUNvZGUmIHBhcmVudFNvdXJjZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2Vk
RnVuY3Rpb25LaW5kIGtpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgSlNQ
YXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIE9wdGlvbmFsPFZlY3RvcjxDb21wYWN0VERaRW52
aXJvbm1lbnRNYXA6OkhhbmRsZT4+IHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBPcHRpb25hbDxQ
cml2YXRlTmFtZUVudmlyb25tZW50PiBwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50LCBEZXJp
dmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50
IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29sIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0
cnVjdG9yKQogICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQogICAgICwgbV9maXJzdExpbmVPZmZz
ZXQobm9kZS0+Zmlyc3RMaW5lKCkgLSBwYXJlbnRTb3VyY2UuZmlyc3RMaW5lKCkub25lQmFzZWRJ
bnQoKSkKICAgICAsIG1faXNJblN0cmljdENvbnRleHQobm9kZS0+aXNJblN0cmljdENvbnRleHQo
KSkKQEAgLTEwMyw2ICsxMDQsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdAogICAgICwgbV90
eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQobm9kZS0+ZnVuY3Rpb25LZXl3b3JkU3RhcnQoKSkKICAg
ICAsIG1fdHlwZVByb2ZpbGluZ0VuZE9mZnNldChub2RlLT5zdGFydFN0YXJ0T2Zmc2V0KCkgKyBu
b2RlLT5zb3VyY2UoKS5sZW5ndGgoKSAtIDEpCiAgICAgLCBtX3BhcmFtZXRlckNvdW50KG5vZGUt
PnBhcmFtZXRlckNvdW50KCkpCisgICAgLCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50KHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihwcml2YXRlQnJhbmRSZXF1aXJlbWVudCkpCiAgICAgLCBtX2ZlYXR1
cmVzKDApCiAgICAgLCBtX3NvdXJjZVBhcnNlTW9kZShub2RlLT5wYXJzZU1vZGUoKSkKICAgICAs
IG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihub2RlLT5jb25zdHJ1Y3Rv
cktpbmQoKSkpCkBAIC0xMjIsMTIgKzEyNCwxNSBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdAog
ICAgIEFTU0VSVChtX3NjcmlwdE1vZGUgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNjcmlwdE1v
ZGUpKTsKICAgICBBU1NFUlQobV9zdXBlckJpbmRpbmcgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KG5vZGUtPnN1cGVyQmluZGluZygpKSk7CiAgICAgQVNTRVJUKG1fZGVyaXZlZENvbnRleHRUeXBl
ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXJpdmVkQ29udGV4dFR5cGUpKTsKKyAgICBBU1NF
UlQobV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQpKTsKICAgICBBU1NFUlQoIShtX2lzQnVpbHRpbkRlZmF1bHRD
bGFzc0NvbnN0cnVjdG9yICYmIGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6
Tm9uZSkpOwogICAgIEFTU0VSVCghbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciB8fCAoaXND
bGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKSB8fCBkZXJpdmVkQ29udGV4dFR5cGUgPT0gRGVyaXZl
ZENvbnRleHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KSk7CiAgICAgaWYgKCFub2Rl
LT5jbGFzc1NvdXJjZSgpLmlzTnVsbCgpKQogICAgICAgICBzZXRDbGFzc1NvdXJjZShub2RlLT5j
bGFzc1NvdXJjZSgpKTsKICAgICBpZiAocGFyZW50U2NvcGVURFpWYXJpYWJsZXMpCiAgICAgICAg
IGVuc3VyZVJhcmVEYXRhKCkubV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcyA9IFdURk1vdmUoKnBh
cmVudFNjb3BlVERaVmFyaWFibGVzKTsKKyAgICBpZiAocGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9u
bWVudCkKKyAgICAgICAgZW5zdXJlUmFyZURhdGEoKS5tX3BhcmVudFByaXZhdGVOYW1lRW52aXJv
bm1lbnQgPSBXVEZNb3ZlKCpwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50KTsKIH0KIAogVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6On5VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZS5oCmluZGV4IGI2MjdlYWI3YzZkYi4uOTVhYWU4NmIzNTczIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtNzAsMTAgKzcwLDEwIEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuICZ2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNwYWNlOwogICAgIH0K
IAotICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNJiB2bSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5s
aW5rZWRGdW5jdGlvbktpbmQgdW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHkg
Y29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIE9wdGlvbmFs
PFZlY3RvcjxDb21wYWN0VERaRW52aXJvbm1lbnRNYXA6OkhhbmRsZT4+IHBhcmVudFNjb3BlVERa
VmFyaWFibGVzLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0J1
aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvciA9IGZhbHNlKQorICAgIHN0YXRpYyBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQgdW5s
aW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgSlNQ
YXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIE9wdGlvbmFsPFZlY3RvcjxDb21wYWN0VERaRW52
aXJvbm1lbnRNYXA6OkhhbmRsZT4+IHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBPcHRpb25hbDxQ
cml2YXRlTmFtZUVudmlyb25tZW50PiBwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50LCBEZXJp
dmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQg
cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGJvb2wgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3Ry
dWN0b3IgPSBmYWxzZSkKICAgICB7CiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlPih2bS5oZWFwKSkKLSAgICAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKHZtLCB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgc291
cmNlLCBub2RlLCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgY29uc3RydWN0QWJpbGl0eSwgc2NyaXB0
TW9kZSwgV1RGTW92ZShwYXJlbnRTY29wZVREWlZhcmlhYmxlcyksIGRlcml2ZWRDb250ZXh0VHlw
ZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0
cnVjdG9yKTsKKyAgICAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCB2bS51
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgc291cmNlLCBub2RlLCB1
bmxpbmtlZEZ1bmN0aW9uS2luZCwgY29uc3RydWN0QWJpbGl0eSwgc2NyaXB0TW9kZSwgV1RGTW92
ZShwYXJlbnRTY29wZVREWlZhcmlhYmxlcyksIFdURk1vdmUocGFyZW50UHJpdmF0ZU5hbWVFbnZp
cm9ubWVudCksIGRlcml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIs
IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3Rv
cik7CiAgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVy
biBpbnN0YW5jZTsKICAgICB9CkBAIC0xNDMsNiArMTQzLDggQEAgcHVibGljOgogICAgIENvZGVG
ZWF0dXJlcyBmZWF0dXJlcygpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXM7IH0KICAgICBib29s
IGhhc0NhcHR1cmVkVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNDYXB0dXJlZFZhcmlh
YmxlczsgfQogCisgICAgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWly
ZW1lbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxQcml2YXRlQnJhbmRSZXF1aXJlbWVu
dD4obV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7IH0KKwogICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpT
Q2VsbCopOwogCkBAIC0xNzQsNiArMTc2LDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVy
biB7IH07CiAgICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX3BhcmVudFNjb3BlVERaVmFyaWFi
bGVzOwogICAgIH0KKworICAgIFByaXZhdGVOYW1lRW52aXJvbm1lbnQgcGFyZW50UHJpdmF0ZU5h
bWVFbnZpcm9ubWVudCgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIW1fcmFyZURhdGEpCisg
ICAgICAgICAgICByZXR1cm4gUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCgpOworICAgICAgICByZXR1
cm4gbV9yYXJlRGF0YS0+bV9wYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50OworICAgIH0KICAg
ICAKICAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGlzQXJyb3dGdW5j
dGlvblBhcnNlTW9kZShwYXJzZU1vZGUoKSk7IH0KIApAQCAtMjA5LDYgKzIxOCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgU3RyaW5nIG1fc291cmNlVVJMRGlyZWN0aXZlOwogICAgICAgICBTdHJpbmcg
bV9zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlOwogICAgICAgICBWZWN0b3I8Q29tcGFjdFREWkVu
dmlyb25tZW50TWFwOjpIYW5kbGU+IG1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7CisgICAgICAg
IFByaXZhdGVOYW1lRW52aXJvbm1lbnQgbV9wYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50Owog
ICAgICAgICBWZWN0b3I8SlNUZXh0UG9zaXRpb24+IG1faW5zdGFuY2VGaWVsZExvY2F0aW9uczsK
ICAgICB9OwogCkBAIC0yMjksNyArMjM5LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToK
LSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYsIFN0cnVjdHVyZSosIGNvbnN0IFNv
dXJjZUNvZGUmLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBD
b25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUsIE9wdGlvbmFsPFZlY3RvcjxDb21w
YWN0VERaRW52aXJvbm1lbnRNYXA6OkhhbmRsZT4+LCAgSlNDOjpEZXJpdmVkQ29udGV4dFR5cGUs
IEpTQzo6TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNCdWlsdGluRGVmYXVsdENs
YXNzQ29uc3RydWN0b3IpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNJiwgU3Ry
dWN0dXJlKiwgY29uc3QgU291cmNlQ29kZSYsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgVW5saW5r
ZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZSwgT3B0
aW9uYWw8VmVjdG9yPENvbXBhY3RURFpFbnZpcm9ubWVudE1hcDo6SGFuZGxlPj4sIE9wdGlvbmFs
PFByaXZhdGVOYW1lRW52aXJvbm1lbnQ+LCAgSlNDOjpEZXJpdmVkQ29udGV4dFR5cGUsIEpTQzo6
TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29s
IGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKTsKICAgICBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZShEZWNvZGVyJiwgY29uc3QgQ2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlJik7CiAK
ICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CkBA
IC0yNjEsNyArMjcxLDggQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2lzQ2FjaGVkIDogMTsK
ICAgICB1bnNpZ25lZCBtX3R5cGVQcm9maWxpbmdTdGFydE9mZnNldDsKICAgICB1bnNpZ25lZCBt
X3R5cGVQcm9maWxpbmdFbmRPZmZzZXQ7Ci0gICAgdW5zaWduZWQgbV9wYXJhbWV0ZXJDb3VudDsK
KyAgICB1bnNpZ25lZCBtX3BhcmFtZXRlckNvdW50IDogMzE7CisgICAgdW5zaWduZWQgbV9wcml2
YXRlQnJhbmRSZXF1aXJlbWVudCA6IDE7CiAgICAgQ29kZUZlYXR1cmVzIG1fZmVhdHVyZXM7CiAg
ICAgU291cmNlUGFyc2VNb2RlIG1fc291cmNlUGFyc2VNb2RlOwogICAgIHVuc2lnbmVkIG1fY29u
c3RydWN0b3JLaW5kIDogMjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggYzllNWVhNjZmOTJhLi4wNDAw
OGFhNzU2YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yODksNyArMjg5LDcgQEAgUGFyc2VyRXJy
b3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICByZXR1cm4gUGFyc2VyRXJyb3Io
UGFyc2VyRXJyb3I6OkVycm9yTm9uZSk7CiB9CiAKLUJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29k
ZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5saW5rZWRQcm9n
cmFtQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNv
ZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgQ2FjaGVkVERaU3RhY2smIHBhcmVudFNjb3BlVERaVmFy
aWFibGVzLCBFQ01BTW9kZSBlY21hTW9kZSkKK0J5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdl
bmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5saW5rZWRQcm9ncmFt
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVH
ZW5lcmF0aW9uTW9kZSwgY29uc3QgQ2FjaGVkVERaU3RhY2smIHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiwgRUNNQU1vZGUgZWNtYU1vZGUpCiAg
ICAgOiBCeXRlY29kZUdlbmVyYXRvckJhc2UobWFrZVVuaXF1ZTxVbmxpbmtlZENvZGVCbG9ja0dl
bmVyYXRvcj4odm0sIGNvZGVCbG9jayksIENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNh
dmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKQogICAgICwgbV9jb2RlR2VuZXJhdGlvbk1vZGUo
Y29kZUdlbmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5vZGUocHJvZ3JhbU5vZGUpCkBAIC0z
MzYsNyArMzM2LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2
bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxpbmtlZFAKICAgICB9CiB9CiAKLUJ5dGVj
b2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVu
Y3Rpb25Ob2RlLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNl
dDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgQ2FjaGVkVERa
U3RhY2smIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBFQ01BTW9kZSBlY21hTW9kZSkKK0J5dGVj
b2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVu
Y3Rpb25Ob2RlLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNl
dDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgQ2FjaGVkVERa
U3RhY2smIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25t
ZW50KiBwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50LCBFQ01BTW9kZSBlY21hTW9kZSkKICAg
ICA6IEJ5dGVjb2RlR2VuZXJhdG9yQmFzZShtYWtlVW5pcXVlPFVubGlua2VkQ29kZUJsb2NrR2Vu
ZXJhdG9yPih2bSwgY29kZUJsb2NrKSwgQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2
ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkpCiAgICAgLCBtX2NvZGVHZW5lcmF0aW9uTW9kZShj
b2RlR2VuZXJhdGlvbk1vZGUpCiAgICAgLCBtX3Njb3BlTm9kZShmdW5jdGlvbk5vZGUpCkBAIC0z
NTksNiArMzU5LDggQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2
bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAsIG1fZWNtYU1vZGUo
ZWNtYU1vZGUpCiAgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShjb2RlQmxvY2stPmRlcml2ZWRD
b250ZXh0VHlwZSgpKQogeworICAgIHB1c2hQcml2YXRlQWNjZXNzTmFtZXMocGFyZW50UHJpdmF0
ZU5hbWVFbnZpcm9ubWVudCk7CisKICAgICBTeW1ib2xUYWJsZSogZnVuY3Rpb25TeW1ib2xUYWJs
ZSA9IFN5bWJvbFRhYmxlOjpjcmVhdGUobV92bSk7CiAgICAgZnVuY3Rpb25TeW1ib2xUYWJsZS0+
c2V0VXNlc05vblN0cmljdEV2YWwobV91c2VzTm9uU3RyaWN0RXZhbCk7CiAgICAgaW50IHN5bWJv
bFRhYmxlQ29uc3RhbnRJbmRleCA9IDA7CkBAIC03MDgsOCArNzEwLDEyIEBAIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25O
b2RlLCBVbmxpbmtlCiAgICAgICAgICAgICAgICAgY2FzZSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU6
CiAgICAgICAgICAgICAgICAgY2FzZSBDb25zdHJ1Y3RvcktpbmQ6OkJhc2U6CiAgICAgICAgICAg
ICAgICAgICAgIGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChPcHRpb25zOjp1c2VQcml2YXRlTWV0aG9kcygpICYmIHByaXZhdGVCcmFuZFJl
cXVpcmVtZW50KCkgPT0gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5lZWRlZCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGVtaXRJbnN0YWxsUHJpdmF0ZUJyYW5kKCZtX3RoaXNSZWdpc3Rlcik7
CisKICAgICAgICAgICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVB1YmxpY0NsYXNzRmllbGRz
KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0SW5zdGFuY2VGaWVsZEluaXRpYWxpemF0
aW9uSWZOZWVkZWQoJm1fdGhpc1JlZ2lzdGVyLCAmbV9jYWxsZWVSZWdpc3RlciwgbV9zY29wZU5v
ZGUtPnBvc2l0aW9uKCksIG1fc2NvcGVOb2RlLT5wb3NpdGlvbigpLCBtX3Njb3BlTm9kZS0+cG9z
aXRpb24oKSk7CisKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
Y2FzZSBDb25zdHJ1Y3RvcktpbmQ6OkV4dGVuZHM6CiAgICAgICAgICAgICAgICAgICAgIG1vdmVF
bXB0eVZhbHVlKCZtX3RoaXNSZWdpc3Rlcik7CkBAIC04NDAsNyArODQ2LDcgQEAgQnl0ZWNvZGVH
ZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlv
bk5vZGUsIFVubGlua2UKICAgICBwdXNoTGV4aWNhbFNjb3BlKG1fc2NvcGVOb2RlLCBURFpDaGVj
a09wdGltaXphdGlvbjo6T3B0aW1pemUsIE5lc3RlZFNjb3BlVHlwZTo6SXNOb3ROZXN0ZWQsIG51
bGxwdHIsIHNob3VsZEluaXRpYWxpemVCbG9ja1Njb3BlZEZ1bmN0aW9ucyk7CiB9CiAKLUJ5dGVj
b2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEV2YWxOb2RlKiBldmFsTm9k
ZSwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJh
dGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgQ2FjaGVkVERaU3RhY2smIHBhcmVu
dFNjb3BlVERaVmFyaWFibGVzLCBFQ01BTW9kZSBlY21hTW9kZSkKK0J5dGVjb2RlR2VuZXJhdG9y
OjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEV2YWxOb2RlKiBldmFsTm9kZSwgVW5saW5rZWRF
dmFsQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNv
ZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgQ2FjaGVkVERaU3RhY2smIHBhcmVudFNjb3BlVERaVmFy
aWFibGVzLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiBwYXJlbnRQcml2YXRlTmFtZUVu
dmlyb25tZW50LCBFQ01BTW9kZSBlY21hTW9kZSkKICAgICA6IEJ5dGVjb2RlR2VuZXJhdG9yQmFz
ZShtYWtlVW5pcXVlPFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yPih2bSwgY29kZUJsb2NrKSwg
Q29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJz
KCkpCiAgICAgLCBtX2NvZGVHZW5lcmF0aW9uTW9kZShjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAg
LCBtX3Njb3BlTm9kZShldmFsTm9kZSkKQEAgLTg1OCw2ICs4NjQsOCBAQCBCeXRlY29kZUdlbmVy
YXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlu
a2VkRXZhbENvZAogewogICAgIG1fY29kZUJsb2NrLT5zZXROdW1QYXJhbWV0ZXJzKDEpOwogCisg
ICAgcHVzaFByaXZhdGVBY2Nlc3NOYW1lcyhwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50KTsK
KyAgICAKICAgICBtX3BhcmVudFNjb3BlVERaU3RhY2tTaXplID0gcGFyZW50U2NvcGVURFpWYXJp
YWJsZXMuc2l6ZSgpOwogICAgIG1fY2FjaGVkVmFyaWFibGVzVW5kZXJURFogPSBwYXJlbnRTY29w
ZVREWlZhcmlhYmxlczsKIApAQCAtOTA0LDcgKzkxMiw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpC
eXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEV2YWxOb2RlKiBldmFsTm9kZSwgVW5saW5rZWRFdmFs
Q29kCiAgICAgcHVzaExleGljYWxTY29wZShtX3Njb3BlTm9kZSwgVERaQ2hlY2tPcHRpbWl6YXRp
b246Ok9wdGltaXplLCBOZXN0ZWRTY29wZVR5cGU6OklzTm90TmVzdGVkLCBudWxscHRyLCBzaG91
bGRJbml0aWFsaXplQmxvY2tTY29wZWRGdW5jdGlvbnMpOwogfQogCi1CeXRlY29kZUdlbmVyYXRv
cjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBNb2R1bGVQcm9ncmFtTm9kZSogbW9kdWxlUHJv
Z3JhbU5vZGUsIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrLCBPcHRp
b25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IENhY2hl
ZFREWlN0YWNrJiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRUNNQU1vZGUgZWNtYU1vZGUpCitC
eXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBNb2R1bGVQcm9ncmFt
Tm9kZSogbW9kdWxlUHJvZ3JhbU5vZGUsIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayog
Y29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1v
ZGUsIGNvbnN0IENhY2hlZFREWlN0YWNrJiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgY29uc3Qg
UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCosIEVDTUFNb2RlIGVjbWFNb2RlKQogICAgIDogQnl0ZWNv
ZGVHZW5lcmF0b3JCYXNlKG1ha2VVbmlxdWU8VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I+KHZt
LCBjb2RlQmxvY2spLCBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1Zp
cnR1YWxSZWdpc3RlcnMoKSkKICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2RlKGNvZGVHZW5lcmF0
aW9uTW9kZSkKICAgICAsIG1fc2NvcGVOb2RlKG1vZHVsZVByb2dyYW1Ob2RlKQpAQCAtMTg5Niw4
ICsxOTA0LDEwIEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6Omluc3RhbnRpYXRlTGV4aWNhbFZh
cmlhYmxlcyhjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBsCiAKICAgICAgICAgICAgIC8vIEZJ
WE1FOiBvbmx5IGRvIHRoaXMgaWYgdGhlcmUgaXMgYW4gZXZhbCgpIHdpdGhpbiBhIG5lc3RlZCBz
Y29wZSAtLS0gb3RoZXJ3aXNlIGl0IGlzbid0IG5lZWRlZC4KICAgICAgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY2NjMKLSAgICAgICAgICAgIGlm
IChlbnRyeS52YWx1ZS5pc1ByaXZhdGVOYW1lKCkpCi0gICAgICAgICAgICAgICAgc3ltYm9sVGFi
bGUtPmFkZFByaXZhdGVOYW1lKGVudHJ5LmtleS5nZXQoKSk7CisgICAgICAgICAgICBpZiAoZW50
cnkudmFsdWUuaXNQcml2YXRlRmllbGQoKSkKKyAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+
YWRkUHJpdmF0ZU5hbWUoZW50cnkua2V5LmdldCgpLCBQcml2YXRlTmFtZUVudHJ5KFByaXZhdGVO
YW1lRW50cnk6OlRyYWl0czo6SXNEZWNsYXJlZCkpOworICAgICAgICAgICAgZWxzZSBpZiAoZW50
cnkudmFsdWUuaXNQcml2YXRlTWV0aG9kKCkpCisgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUt
PmFkZFByaXZhdGVOYW1lKGVudHJ5LmtleS5nZXQoKSwgUHJpdmF0ZU5hbWVFbnRyeShQcml2YXRl
TmFtZUVudHJ5OjpUcmFpdHM6OklzRGVjbGFyZWQgfCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6
OklzTWV0aG9kKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGhhc0NhcHR1cmVkVmFy
aWFibGVzOwpAQCAtMjcxOCw3ICsyNzI4LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmEKICAg
ICByZXR1cm4gdmFsdWU7CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
RGlyZWN0R2V0QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3Rl
cklEKiBwcm9wZXJ0eSkKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0UHJp
dmF0ZU5hbWUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBw
cm9wZXJ0eSkKIHsKICAgICBPcEdldFByaXZhdGVOYW1lOjplbWl0KHRoaXMsIGRzdCwgYmFzZSwg
cHJvcGVydHkpOwogICAgIHJldHVybiBkc3Q7CkBAIC0yNzU0LDEyICsyNzY0LDQ1IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVmaW5lUHJpdmF0ZUZpZWxkKFJlZ2lzdGVy
SUQqIGJhc2UsIFJlZ2lzdGVyCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCit2b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0Q3JlYXRlUHJpdmF0ZUJyYW5kKFJlZ2lzdGVySUQqIHNjb3BlLCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCit7CisgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IGNyZWF0ZVByaXZhdGVTeW1ib2wgPSBtb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBM
aW5rVGltZUNvbnN0YW50OjpjcmVhdGVQcml2YXRlU3ltYm9sKTsKKworICAgIENhbGxBcmd1bWVu
dHMgYXJndW1lbnRzKCp0aGlzLCBudWxscHRyLCAwKTsKKyAgICBlbWl0TG9hZChhcmd1bWVudHMu
dGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOworICAgIFJlZ2lzdGVySUQqIG5ld1N5bWJv
bCA9IGVtaXRDYWxsKGZpbmFsRGVzdGluYXRpb24obnVsbHB0ciwgY3JlYXRlUHJpdmF0ZVN5bWJv
bC5nZXQoKSksIGNyZWF0ZVByaXZhdGVTeW1ib2wuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwg
YXJndW1lbnRzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQsIERlYnVnZ2FibGVDYWxsOjpO
byk7CisKKyAgICBWYXJpYWJsZSBwcml2YXRlQnJhbmRWYXIgPSB2YXJpYWJsZShwcm9wZXJ0eU5h
bWVzKCkuYnVpbHRpbk5hbWVzKCkucHJpdmF0ZUJyYW5kUHJpdmF0ZU5hbWUoKSk7CisKKyAgICBl
bWl0UHV0VG9TY29wZShzY29wZSwgcHJpdmF0ZUJyYW5kVmFyLCBuZXdTeW1ib2wsIERvTm90VGhy
b3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6OkluaXRpYWxpemF0aW9uKTsKK30KKwor
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEluc3RhbGxQcml2YXRlQnJhbmQoUmVnaXN0ZXJJ
RCogdGFyZ2V0KQoreworICAgIFZhcmlhYmxlIHByaXZhdGVCcmFuZFZhciA9IHZhcmlhYmxlKHBy
b3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5wcml2YXRlQnJhbmRQcml2YXRlTmFtZSgpKTsK
KyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZUJyYW5kVmFyU2NvcGUgPSBlbWl0UmVzb2x2
ZVNjb3BlKG51bGxwdHIsIHByaXZhdGVCcmFuZFZhcik7CisgICAgUmVnaXN0ZXJJRCogcHJpdmF0
ZUJyYW5kU3ltYm9sID0gZW1pdEdldFByaXZhdGVCcmFuZChuZXdUZW1wb3JhcnkoKSwgcHJpdmF0
ZUJyYW5kVmFyU2NvcGUuZ2V0KCkpOworICAgIGVtaXREZWZpbmVQcml2YXRlRmllbGQodGFyZ2V0
LCBwcml2YXRlQnJhbmRTeW1ib2wsIHByaXZhdGVCcmFuZFN5bWJvbCk7Cit9CisKK1JlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0UHJpdmF0ZUJyYW5kKFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogc2NvcGUpCit7CisgICAgVmFyaWFibGUgcHJpdmF0ZUJyYW5kVmFyID0g
dmFyaWFibGUocHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLnByaXZhdGVCcmFuZFByaXZh
dGVOYW1lKCkpOworICAgIHJldHVybiBlbWl0R2V0RnJvbVNjb3BlKGRzdCwgc2NvcGUsIHByaXZh
dGVCcmFuZFZhciwgVGhyb3dJZk5vdEZvdW5kKTsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRQcml2YXRlRmllbGRQdXQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJ
RCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewogICAgIE9wUHV0UHJpdmF0ZU5hbWU6
OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQcml2YXRlRmllbGRQdXRLaW5kOjpz
ZXQoKSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0Q2hlY2tQcml2YXRlQnJhbmQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogYnJhbmRT
eW1ib2wpCit7CisgICAgLy8gVGhpcyBpcyBnb2luZyB0byB0aHJvdyBUeXBlRXJyb3IgaWYgYnJh
bmQgaXMgbm90IHByZXNlbnQKKyAgICBlbWl0R2V0UHJpdmF0ZU5hbWUobmV3VGVtcG9yYXJ5KCks
IGJhc2UsIGJyYW5kU3ltYm9sKTsKK30KKwogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFN1
cGVyU2FtcGxlckJlZ2luKCkKIHsKICAgICBPcFN1cGVyU2FtcGxlckJlZ2luOjplbWl0KHRoaXMp
OwpAQCAtMjg5MSw2ICsyOTM0LDMyIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmxpZnRURFpD
aGVja0lmUG9zc2libGUoY29uc3QgVmFyaWFibGUmIHZhcmlhYmxlKQogICAgIH0KIH0KIAorYm9v
bCBCeXRlY29kZUdlbmVyYXRvcjo6aXNQcml2YXRlTWV0aG9kKGNvbnN0IElkZW50aWZpZXImIGlk
ZW50KQoreworICAgIGZvciAodW5zaWduZWQgaSA9IG1fcHJpdmF0ZU5hbWVzU3RhY2suc2l6ZSgp
OyBpLS07ICkgeworICAgICAgICBhdXRvJiBtYXAgPSBtX3ByaXZhdGVOYW1lc1N0YWNrW2ldOwor
ICAgICAgICBhdXRvIGl0ID0gbWFwLmZpbmQoaWRlbnQuaW1wbCgpKTsKKyAgICAgICAgaWYgKGl0
ICE9IG1hcC5lbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBpdC0+dmFsdWUuaXNNZXRob2QoKTsK
KyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OnB1c2hQcml2YXRlQWNjZXNzTmFtZXMoY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogZW52
aXJvbm1lbnQpCit7CisgICAgaWYgKCFlbnZpcm9ubWVudCB8fCAhZW52aXJvbm1lbnQtPnNpemUo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wcml2YXRlTmFtZXNTdGFjay5hcHBlbmQoKmVu
dmlyb25tZW50KTsKK30KKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cG9wUHJpdmF0ZUFjY2Vz
c05hbWVzKCkKK3sKKyAgICBBU1NFUlQobV9wcml2YXRlTmFtZXNTdGFjay5zaXplKCkpOworICAg
IG1fcHJpdmF0ZU5hbWVzU3RhY2sucmVtb3ZlTGFzdCgpOworfQorCiB2b2lkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpwdXNoVERaVmFyaWFibGVzKGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGVudmly
b25tZW50LCBURFpDaGVja09wdGltaXphdGlvbiBvcHRpbWl6YXRpb24sIFREWlJlcXVpcmVtZW50
IHJlcXVpcmVtZW50KQogewogICAgIGlmICghZW52aXJvbm1lbnQuc2l6ZSgpKQpAQCAtMjkxMyw2
ICsyOTgyLDI4IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnB1c2hURFpWYXJpYWJsZXMoY29u
c3QgVmFyaWFibGVFbnZpcm9ubWVudCYgZW52aXJvbm1lbnQsCiAgICAgbV9jYWNoZWRWYXJpYWJs
ZXNVbmRlclREWi5hcHBlbmQoeyB9KTsKIH0KIAorT3B0aW9uYWw8UHJpdmF0ZU5hbWVFbnZpcm9u
bWVudD4gQnl0ZWNvZGVHZW5lcmF0b3I6OmdldEF2YWlsYWJsZVByaXZhdGVBY2Nlc3NOYW1lcygp
Cit7CisgICAgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCByZXN1bHQ7CisgICAgU21hbGxQdHJTZXQ8
VW5pcXVlZFN0cmluZ0ltcGwqLCAxNj4gZXhjbHVkZWROYW1lczsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSBtX3ByaXZhdGVOYW1lc1N0YWNrLnNpemUoKTsgaS0tOyApIHsKKyAgICAgICAgYXV0byYg
bWFwID0gbV9wcml2YXRlTmFtZXNTdGFja1tpXTsKKyAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6
IG1hcCkgIHsKKyAgICAgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc1ByaXZhdGVNZXRob2RPckFj
ZXNzb3IoKSkgeworICAgICAgICAgICAgICAgIGlmICghZXhjbHVkZWROYW1lcy5jb250YWlucyhl
bnRyeS5rZXkuZ2V0KCkpKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoZW50cnku
a2V5LCBlbnRyeS52YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIGV4Y2x1ZGVkTmFtZXMuYWRk
KGVudHJ5LmtleS5nZXQoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICAgICAgZXhjbHVkZWROYW1lcy5hZGQoZW50cnkua2V5LmdldCgpKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGlmICghcmVzdWx0LnNpemUoKSkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBPcHRpb25hbDxCeXRlY29k
ZUdlbmVyYXRvcjo6Q2FjaGVkVERaU3RhY2s+IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZXRWYXJpYWJs
ZXNVbmRlclREWigpCiB7CiAgICAgYXV0byBhc3NlcnRDYWNoZUlzQ29oZXJlbnQgPSBbJl0gewpA
QCAtMzEyMCw5ICszMjExLDkgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRO
ZXdNZXRob2REZWZpbml0aW9uKFJlZ2lzdGVySUQqIGRzdCwgTWV0aG9kRGUKIH0KIAogUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0
ZXJJRCogZHN0LCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlm
aWVyJiBuYW1lLAotICAgIGNvbnN0IElkZW50aWZpZXImIGVjbWFOYW1lLCBjb25zdCBTb3VyY2VD
b2RlJiBjbGFzc1NvdXJjZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIpCisgICAgY29uc3QgSWRlbnRpZmllciYgZWNtYU5hbWUsIGNvbnN0IFNv
dXJjZUNvZGUmIGNsYXNzU291cmNlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQpCiB7Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUgPSBtX3ZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jcmVhdGVEZWZhdWx0Q29uc3RydWN0b3Io
Y29uc3RydWN0b3JLaW5kLCBuYW1lLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcik7CisgICAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBtX3ZtLmJ1aWx0aW5FeGVj
dXRhYmxlcygpLT5jcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoY29uc3RydWN0b3JLaW5kLCBuYW1l
LCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOwog
ICAgIGV4ZWN1dGFibGUtPnNldEludmFsaWRUeXBlUHJvZmlsaW5nT2Zmc2V0cygpOwogICAgIGV4
ZWN1dGFibGUtPnNldEVjbWFOYW1lKGVjbWFOYW1lKTsKICAgICBleGVjdXRhYmxlLT5zZXRDbGFz
c1NvdXJjZShjbGFzc1NvdXJjZSk7CkBAIC0zMTQ2LDEzICszMjM3LDE0IEBAIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3SW5zdGFuY2VGaWVsZEluaXRpYWxpemVyRnVuY3Rp
b24oUmVnaXN0ZXJJCiAgICAgfQogCiAgICAgYXV0byB2YXJpYWJsZXNVbmRlclREWiA9IGdldFZh
cmlhYmxlc1VuZGVyVERaKCk7CisgICAgT3B0aW9uYWw8UHJpdmF0ZU5hbWVFbnZpcm9ubWVudD4g
cGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCA9IGdldEF2YWlsYWJsZVByaXZhdGVBY2Nlc3NO
YW1lcygpOwogICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6
Okluc3RhbmNlRmllbGRJbml0aWFsaXplck1vZGU7CiAgICAgQ29uc3RydWN0QWJpbGl0eSBjb25z
dHJ1Y3RBYmlsaXR5ID0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OwogCiAgICAg
Y29uc3QgYm9vbCBhbHdheXNTdHJpY3RJbkNsYXNzID0gdHJ1ZTsKICAgICBGdW5jdGlvbk1ldGFk
YXRhTm9kZSBtZXRhZGF0YShwYXJzZXJBcmVuYSgpLCBKU1Rva2VuTG9jYXRpb24oKSwgSlNUb2tl
bkxvY2F0aW9uKCksIDAsIDAsIDAsIDAsIDAsIGFsd2F5c1N0cmljdEluQ2xhc3MsIENvbnN0cnVj
dG9yS2luZDo6Tm9uZSwgc3VwZXJCaW5kaW5nLCAwLCBwYXJzZU1vZGUsIGZhbHNlKTsKICAgICBt
ZXRhZGF0YS5maW5pc2hQYXJzaW5nKG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgSWRlbnRpZmllcigp
LCBGdW5jdGlvbk1vZGU6Ok1ldGhvZERlZmluaXRpb24pOwotICAgIGF1dG8gaW5pdGlhbGl6ZXIg
PSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5z
b3VyY2UoKSwgJm1ldGFkYXRhLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGlu
RnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCBzY3Jp
cHRNb2RlKCksIFdURk1vdmUodmFyaWFibGVzVW5kZXJURFopLCBuZXdEZXJpdmVkQ29udGV4dFR5
cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObyk7CisgICAgYXV0byBpbml0aWFsaXpl
ciA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29wZU5vZGUt
PnNvdXJjZSgpLCAmbWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0
aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIHNj
cmlwdE1vZGUoKSwgV1RGTW92ZSh2YXJpYWJsZXNVbmRlclREWiksIFdURk1vdmUocGFyZW50UHJp
dmF0ZU5hbWVFbnZpcm9ubWVudCksIG5ld0Rlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXI6Ok5vLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZSk7CiAgICAg
aW5pdGlhbGl6ZXItPnNldEluc3RhbmNlRmllbGRMb2NhdGlvbnMoV1RGTW92ZShpbnN0YW5jZUZp
ZWxkTG9jYXRpb25zKSk7CiAKICAgICB1bnNpZ25lZCBpbmRleCA9IG1fY29kZUJsb2NrLT5hZGRG
dW5jdGlvbkV4cHIoaW5pdGlhbGl6ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDRhNTdhNGZhOTJiNC4u
ZmMyMzRmYzJhZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC00MDksMTAgKzQwOSwxMCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdHlwZWRlZiBEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFj
ayBGdW5jdGlvblN0YWNrOwogICAgICAgICB1c2luZyBDYWNoZWRURFpTdGFjayA9IFZlY3RvcjxD
b21wYWN0VERaRW52aXJvbm1lbnRNYXA6OkhhbmRsZT47CiAKLSAgICAgICAgQnl0ZWNvZGVHZW5l
cmF0b3IoVk0mLCBQcm9ncmFtTm9kZSosIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayosIE9wdGlv
blNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBjb25zdCBDYWNoZWRURFpTdGFjayYsIEVDTUFNb2Rl
KTsKLSAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBGdW5jdGlvbk5vZGUqLCBVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0
IENhY2hlZFREWlN0YWNrJiwgRUNNQU1vZGUpOwotICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihW
TSYsIEV2YWxOb2RlKiwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5l
cmF0aW9uTW9kZT4sIGNvbnN0IENhY2hlZFREWlN0YWNrJiwgRUNNQU1vZGUpOwotICAgICAgICBC
eXRlY29kZUdlbmVyYXRvcihWTSYsIE1vZHVsZVByb2dyYW1Ob2RlKiwgVW5saW5rZWRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IENh
Y2hlZFREWlN0YWNrJiwgRUNNQU1vZGUpOworICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYs
IFByb2dyYW1Ob2RlKiwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVH
ZW5lcmF0aW9uTW9kZT4sIGNvbnN0IENhY2hlZFREWlN0YWNrJiwgY29uc3QgUHJpdmF0ZU5hbWVF
bnZpcm9ubWVudCosIEVDTUFNb2RlKTsKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBG
dW5jdGlvbk5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVH
ZW5lcmF0aW9uTW9kZT4sIGNvbnN0IENhY2hlZFREWlN0YWNrJiwgY29uc3QgUHJpdmF0ZU5hbWVF
bnZpcm9ubWVudCosIEVDTUFNb2RlKTsKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBF
dmFsTm9kZSosIFVubGlua2VkRXZhbENvZGVCbG9jayosIE9wdGlvblNldDxDb2RlR2VuZXJhdGlv
bk1vZGU+LCBjb25zdCBDYWNoZWRURFpTdGFjayYsIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1l
bnQqLCBFQ01BTW9kZSk7CisgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgTW9kdWxlUHJv
Z3JhbU5vZGUqLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29k
ZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgQ2FjaGVkVERaU3RhY2smLCBjb25zdCBQcml2YXRlTmFt
ZUVudmlyb25tZW50KiwgRUNNQU1vZGUpOwogCiAgICAgICAgIH5CeXRlY29kZUdlbmVyYXRvcigp
OwogICAgICAgICAKQEAgLTQyNiwyMCArNDI2LDIxIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBib29sIG5lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJu
IG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0OyB9CiAgICAgICAgIGJvb2wgdXNl
c0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlTm9kZS0+dXNlc0V2YWwoKTsgfQogICAgICAg
ICBib29sIHVzZXNUaGlzKCkgY29uc3QgeyByZXR1cm4gbV9zY29wZU5vZGUtPnVzZXNUaGlzKCk7
IH0KKyAgICAgICAgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQo
KTsgfQogICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb2RlQmxvY2stPmNvbnN0cnVjdG9yS2luZCgpOyB9CiAgICAgICAgIFN1cGVyQmlu
ZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+c3VwZXJCaW5k
aW5nKCk7IH0KICAgICAgICAgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUoKSBjb25zdCB7
IHJldHVybiBtX2NvZGVCbG9jay0+c2NyaXB0TW9kZSgpOyB9CiAgICAgICAgIE5lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkgY29uc3QgeyByZXR1
cm4gbV9jb2RlQmxvY2stPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCk7IH0KIAogICAgICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBOb2RlLCB0eXBlbmFtZSBVbmxpbmtlZENvZGVCbG9jaz4KLSAg
ICAgICAgc3RhdGljIFBhcnNlckVycm9yIGdlbmVyYXRlKFZNJiB2bSwgTm9kZSogbm9kZSwgY29u
c3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29k
ZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUs
IGNvbnN0IENhY2hlZFREWlN0YWNrJiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRUNNQU1vZGUg
ZWNtYU1vZGUpCisgICAgICAgIHN0YXRpYyBQYXJzZXJFcnJvciBnZW5lcmF0ZShWTSYgdm0sIE5v
ZGUqIG5vZGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIFVubGlua2VkQ29kZUJsb2Nr
KiB1bmxpbmtlZENvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdl
bmVyYXRpb25Nb2RlLCBjb25zdCBDYWNoZWRURFpTdGFjayYgcGFyZW50U2NvcGVURFpWYXJpYWJs
ZXMsIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHByaXZhdGVOYW1lRW52aXJvbm1lbnQs
IEVDTUFNb2RlIGVjbWFNb2RlKQogICAgICAgICB7CiAgICAgICAgICAgICBNb25vdG9uaWNUaW1l
IGJlZm9yZTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpyZXBvcnRCeXRlY29k
ZUNvbXBpbGVUaW1lcygpKSkKICAgICAgICAgICAgICAgICBiZWZvcmUgPSBNb25vdG9uaWNUaW1l
Ojpub3coKTsKIAogICAgICAgICAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwotICAgICAg
ICAgICAgYXV0byBieXRlY29kZUdlbmVyYXRvciA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVHZW5lcmF0
b3I+KHZtLCBub2RlLCB1bmxpbmtlZENvZGVCbG9jaywgY29kZUdlbmVyYXRpb25Nb2RlLCBwYXJl
bnRTY29wZVREWlZhcmlhYmxlcywgZWNtYU1vZGUpOworICAgICAgICAgICAgYXV0byBieXRlY29k
ZUdlbmVyYXRvciA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVHZW5lcmF0b3I+KHZtLCBub2RlLCB1bmxp
bmtlZENvZGVCbG9jaywgY29kZUdlbmVyYXRpb25Nb2RlLCBwYXJlbnRTY29wZVREWlZhcmlhYmxl
cywgcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgZWNtYU1vZGUpOwogICAgICAgICAgICAgYXV0byBy
ZXN1bHQgPSBieXRlY29kZUdlbmVyYXRvci0+Z2VuZXJhdGUoKTsKIAogICAgICAgICAgICAgaWYg
KFVOTElLRUxZKE9wdGlvbnM6OnJlcG9ydEJ5dGVjb2RlQ29tcGlsZVRpbWVzKCkpKSB7CkBAIC03
NzUsNyArNzc2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dE5ld0Z1bmN0aW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqKTsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiBk
c3QsIEZ1bmNFeHByTm9kZSopOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3RGVmYXVsdENv
bnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlm
aWVyJiBuYW1lLCBjb25zdCBJZGVudGlmaWVyJiBlY21hTmFtZSwgY29uc3QgU291cmNlQ29kZSYg
Y2xhc3NTb3VyY2UsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsKKyAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3RvcihSZWdpc3RlcklEKiBkc3QsIENvbnN0cnVj
dG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3QgSWRlbnRpZmllciYgZWNtYU5h
bWUsIGNvbnN0IFNvdXJjZUNvZGUmIGNsYXNzU291cmNlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
TmV3SW5zdGFuY2VGaWVsZEluaXRpYWxpemVyRnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBWZWN0
b3I8SlNUZXh0UG9zaXRpb24+JiYgaW5zdGFuY2VGaWVsZExvY2F0aW9ucywgYm9vbCBpc0Rlcml2
ZWQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24o
UmVnaXN0ZXJJRCosIEFycm93RnVuY0V4cHJOb2RlKik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXROZXdNZXRob2REZWZpbml0aW9uKFJlZ2lzdGVySUQqIGRzdCwgTWV0aG9kRGVmaW5pdGlvbk5v
ZGUqKTsKQEAgLTgxNiw3ICs4MTcsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdERpcmVjdFNldFByb3RvdHlwZU9mKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVy
SUQqIHByb3RvdHlwZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRCeVZhbChSZWdpc3Rl
cklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJ
RCogdGhpc1ZhbHVlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwot
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGlyZWN0R2V0QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSk7CiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXREaXJlY3RQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9w
ZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGVsZXRl
QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9w
ZXJ0eSk7CiAKQEAgLTgyNCw2ICs4MjQsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRQdXRJbnRlcm5hbEZpZWxkKFJlZ2lzdGVySUQqIGJhc2UsIHVuc2lnbmVk
IGluZGV4LCBSZWdpc3RlcklEKiB2YWx1ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREZWZp
bmVQcml2YXRlRmllbGQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJl
Z2lzdGVySUQqIHZhbHVlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFByaXZhdGVGaWVsZFB1
dChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFs
dWUpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0UHJpdmF0ZU5hbWUoUmVnaXN0ZXJJRCog
ZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSk7CisKKyAgICAgICAg
dm9pZCBlbWl0Q3JlYXRlUHJpdmF0ZUJyYW5kKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKKyAgICAgICAgdm9pZCBlbWl0SW5zdGFsbFByaXZh
dGVCcmFuZChSZWdpc3RlcklEKiB0YXJnZXQpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0
UHJpdmF0ZUJyYW5kKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc2NvcGUpOworICAgICAg
ICB2b2lkIGVtaXRDaGVja1ByaXZhdGVCcmFuZChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklE
KiBicmFuZCk7CiAKICAgICAgICAgdm9pZCBlbWl0U3VwZXJTYW1wbGVyQmVnaW4oKTsKICAgICAg
ICAgdm9pZCBlbWl0U3VwZXJTYW1wbGVyRW5kKCk7CkBAIC0xMTc3LDE2ICsxMTgzLDE5IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgRGVyaXZlZENvbnRleHRUeXBlIG5ld0Rlcml2ZWRD
b250ZXh0VHlwZSA9IERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZTsKIAogICAgICAgICAgICAgTmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSBtZXRh
ZGF0YS0+aXNDb25zdHJ1Y3RvckFuZE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkgPyBOZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplcjo6WWVzIDogTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6
Ok5vOworICAgICAgICAgICAgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQgPSBtZXRhZGF0YS0+cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKTsKICAgICAgICAg
ICAgIGlmIChTb3VyY2VQYXJzZU1vZGVTZXQoU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9u
TW9kZSwgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlLCBTb3VyY2VQYXJz
ZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbkJvZHlNb2RlKS5jb250YWlucyhtZXRhZGF0YS0+cGFy
c2VNb2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGNvbnN0cnVjdG9yS2luZCgpID09IENv
bnN0cnVjdG9yS2luZDo6RXh0ZW5kcyB8fCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSkg
ewogICAgICAgICAgICAgICAgICAgICBuZXdEZXJpdmVkQ29udGV4dFR5cGUgPSBEZXJpdmVkQ29u
dGV4dFR5cGU6OkRlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQ7CiAgICAgICAgICAgICAgICAgICAg
IG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyID0gbV9jb2RlQmxvY2stPm5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyKCk7CisgICAgICAgICAgICAgICAgICAgIHByaXZhdGVCcmFuZFJlcXVpcmVt
ZW50ID0gbV9jb2RlQmxvY2stPnByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCk7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1fY29kZUJsb2NrLT5pc0NsYXNzQ29u
dGV4dCgpIHx8IGlzRGVyaXZlZENsYXNzQ29udGV4dCgpKQogICAgICAgICAgICAgICAgICAgICBu
ZXdEZXJpdmVkQ29udGV4dFR5cGUgPSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRNZXRob2RD
b250ZXh0OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBhdXRvIG9wdGlvbmFsVmFyaWFi
bGVzVW5kZXJURFogPSBnZXRWYXJpYWJsZXNVbmRlclREWigpOworICAgICAgICAgICAgT3B0aW9u
YWw8UHJpdmF0ZU5hbWVFbnZpcm9ubWVudD4gcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCA9
IGdldEF2YWlsYWJsZVByaXZhdGVBY2Nlc3NOYW1lcygpOwogCiAgICAgICAgICAgICAvLyBGSVhN
RTogVGhlc2UgZmxhZ3MsIFBhcnNlck1vZGVzIGFuZCBwcm9wYWdhdGlvbiB0byBYWFhDb2RlQmxv
Y2tzIHNob3VsZCBiZSByZW9yZ2FuaXplZC4KICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDcKQEAgLTExOTUsMTAgKzEyMDQsMTEgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNl
TW9kZTo6TWV0aG9kTW9kZSAmJiBtZXRhZGF0YS0+Y29uc3RydWN0b3JLaW5kKCkgIT0gQ29uc3Ry
dWN0b3JLaW5kOjpOb25lKQogICAgICAgICAgICAgICAgIGNvbnN0cnVjdEFiaWxpdHkgPSBDb25z
dHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3Q7CiAKLSAgICAgICAgICAgIHJldHVybiBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwg
bWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6
IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIHNjcmlwdE1vZGUoKSwg
V1RGTW92ZShvcHRpb25hbFZhcmlhYmxlc1VuZGVyVERaKSwgbmV3RGVyaXZlZENvbnRleHRUeXBl
LCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcik7CisgICAgICAgICAgICByZXR1cm4gVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCks
IG1ldGFkYXRhLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24g
OiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCBzY3JpcHRNb2RlKCks
IFdURk1vdmUob3B0aW9uYWxWYXJpYWJsZXNVbmRlclREWiksIFdURk1vdmUocGFyZW50UHJpdmF0
ZU5hbWVFbnZpcm9ubWVudCksIG5ld0Rlcml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KTsKICAgICAgICAgfQogCiAgICAg
ICAgIE9wdGlvbmFsPENhY2hlZFREWlN0YWNrPiBnZXRWYXJpYWJsZXNVbmRlclREWigpOworICAg
ICAgICBPcHRpb25hbDxQcml2YXRlTmFtZUVudmlyb25tZW50PiBnZXRBdmFpbGFibGVQcml2YXRl
QWNjZXNzTmFtZXMoKTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q29uc3RydWN0VmFyYXJn
cyhSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIFJlZ2lzdGVySUQqIHRoaXNSZWdp
c3RlciwgUmVnaXN0ZXJJRCogYXJndW1lbnRzLCBSZWdpc3RlcklEKiBmaXJzdEZyZWVSZWdpc3Rl
ciwgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90RW5kLCBEZWJ1Z2dhYmxlQ2FsbCk7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIENh
bGxPcD4KQEAgLTEyNTMsNiArMTI2MywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IG1fbGFzdEluc3RydWN0aW9uID0gcHJldkxhc3RJbnN0cnVjdGlvbjsKICAgICAgICAgfQogCisg
ICAgICAgIGJvb2wgaXNQcml2YXRlTWV0aG9kKGNvbnN0IElkZW50aWZpZXImKTsKKworICAgICAg
ICB2b2lkIHB1c2hQcml2YXRlQWNjZXNzTmFtZXMoY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVu
dCopOworICAgICAgICB2b2lkIHBvcFByaXZhdGVBY2Nlc3NOYW1lcygpOworCiAgICAgcHJpdmF0
ZToKICAgICAgICAgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gbV9jb2RlR2VuZXJhdGlv
bk1vZGU7CiAKQEAgLTEyNjcsNiArMTI4Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBz
aXplX3QgbV9wYXJlbnRTY29wZVREWlN0YWNrU2l6ZSB7IDAgfTsKICAgICAgICAgVmVjdG9yPFRE
Wk1hcD4gbV9URFpTdGFjazsKICAgICAgICAgQ2FjaGVkVERaU3RhY2sgbV9jYWNoZWRWYXJpYWJs
ZXNVbmRlclREWjsKKyAgICAgICAgVmVjdG9yPFByaXZhdGVOYW1lRW52aXJvbm1lbnQ+IG1fcHJp
dmF0ZU5hbWVzU3RhY2s7CiAgICAgICAgIE9wdGlvbmFsPHNpemVfdD4gbV92YXJTY29wZUxleGlj
YWxTY29wZVN0YWNrSW5kZXg7CiAgICAgICAgIHZvaWQgcHVzaFREWlZhcmlhYmxlcyhjb25zdCBW
YXJpYWJsZUVudmlyb25tZW50JiwgVERaQ2hlY2tPcHRpbWl6YXRpb24sIFREWlJlcXVpcmVtZW50
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwCmluZGV4IDVhZDg0OTgwODY0Yi4uZTEyYWEwMDE3MmIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC01
NjMsNyArNTYzLDcgQEAgdm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0RGVjbGFyZVByaXZhdGVG
aWVsZE5hbWVzKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IKICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gY3JlYXRlUHJpdmF0ZVN5bWJvbDsKICAgICBmb3IgKFByb3BlcnR5TGlzdE5vZGUqIHAg
PSB0aGlzOyBwOyBwID0gcC0+bV9uZXh0KSB7CiAgICAgICAgIGNvbnN0IFByb3BlcnR5Tm9kZSYg
bm9kZSA9ICpwLT5tX25vZGU7Ci0gICAgICAgIGlmIChub2RlLnR5cGUoKSAmIFByb3BlcnR5Tm9k
ZTo6UHJpdmF0ZSkgeworICAgICAgICBpZiAobm9kZS50eXBlKCkgJiBQcm9wZXJ0eU5vZGU6OlBy
aXZhdGVGaWVsZCkgewogICAgICAgICAgICAgaWYgKCFjcmVhdGVQcml2YXRlU3ltYm9sKQogICAg
ICAgICAgICAgICAgIGNyZWF0ZVByaXZhdGVTeW1ib2wgPSBnZW5lcmF0b3IubW92ZUxpbmtUaW1l
Q29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6Y3JlYXRlUHJpdmF0ZVN5bWJvbCk7
CiAKQEAgLTU4OSw3ICs1ODksNyBAQCBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZQogICAgICAgICBp
ZiAocC0+aXNDb21wdXRlZENsYXNzRmllbGQoKSkKICAgICAgICAgICAgIGVtaXRTYXZlQ29tcHV0
ZWRGaWVsZE5hbWUoZ2VuZXJhdG9yLCAqcC0+bV9ub2RlKTsKIAotICAgICAgICBpZiAocC0+aXNJ
bnN0YW5jZUNsYXNzRmllbGQoKSkgeworICAgICAgICBpZiAocC0+aXNJbnN0YW5jZUNsYXNzRmll
bGQoKSAmJiAhKHAtPm1fbm9kZS0+dHlwZSgpICYgUHJvcGVydHlOb2RlOjpQcml2YXRlTWV0aG9k
KSkgewogICAgICAgICAgICAgQVNTRVJUKGluc3RhbmNlRmllbGRMb2NhdGlvbnMpOwogICAgICAg
ICAgICAgaW5zdGFuY2VGaWVsZExvY2F0aW9ucy0+YXBwZW5kKHAtPnBvc2l0aW9uKCkpOwogICAg
ICAgICAgICAgY29udGludWU7CkBAIC03NDUsNyArNzQ1LDcgQEAgUmVnaXN0ZXJJRCogUHJvcGVy
dHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGUKIHZvaWQgUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogbmV3T2JqLCBQcm9wZXJ0eU5v
ZGUmIG5vZGUpCiB7CiAgICAgLy8gUHJpdmF0ZSBmaWVsZHMgYXJlIGhhbmRsZWQgaW4gdGhlIHN5
bnRoZXRpYyBpbnN0YW5jZUZpZWxkSW5pdGlhbGl6ZXIgZnVuY3Rpb24sIG5vdCBoZXJlLgotICAg
IEFTU0VSVCghKG5vZGUudHlwZSgpICYgUHJvcGVydHlOb2RlOjpQcml2YXRlKSk7CisgICAgQVNT
RVJUKCEobm9kZS50eXBlKCkgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGVGaWVsZCkpOwogCiAgICAg
aWYgKFByb3BlcnR5Tm9kZTo6aXNVbmRlcnNjb3JlUHJvdG9TZXR0ZXIoZ2VuZXJhdG9yLnZtKCks
IG5vZGUpKSB7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm90b3R5cGUgPSBnZW5lcmF0
b3IuZW1pdE5vZGUobm9kZS5tX2Fzc2lnbik7CkBAIC03NzAsNiArNzcwLDE0IEBAIHZvaWQgUHJv
cGVydHlMaXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnCiAKICAgICBpZiAobm9kZS5pc0NsYXNzUHJvcGVydHkoKSkgewogICAg
ICAgICBBU1NFUlQobm9kZS5uZWVkc1N1cGVyQmluZGluZygpKTsKKworICAgICAgICBpZiAobm9k
ZS50eXBlKCkgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGVNZXRob2QpIHsKKyAgICAgICAgICAgIFZh
cmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZSgqbm9kZS5uYW1lKCkpOworICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKGdlbmVyYXRvci5zY29wZVJlZ2lzdGVyKCksIHZh
ciwgdmFsdWUuZ2V0KCksIERvTm90VGhyb3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6
OkNvbnN0SW5pdGlhbGl6YXRpb24pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BlcnR5TmFtZVJlZ2lzdGVyOwogICAgICAg
ICBpZiAobm9kZS5uYW1lKCkpCiAgICAgICAgICAgICBwcm9wZXJ0eU5hbWUgPSBnZW5lcmF0b3Iu
ZW1pdExvYWQobnVsbHB0ciwgKm5vZGUubmFtZSgpKTsKIApAQCAtODkxLDE0ICs4OTksMjQgQEAg
UmVnaXN0ZXJJRCogRG90QWNjZXNzb3JOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXIKIAogUmVnaXN0ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRH
ZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVmUHRyPFJlZ2lzdGVySUQ+JiB0aGlzVmFsdWUpCiB7
Ci0gICAgaWYgKGlzUHJpdmF0ZUZpZWxkKCkpIHsKKyAgICBpZiAoaXNQcml2YXRlTWVtYmVyKCkp
IHsKKyAgICAgICAgaWYgKGdlbmVyYXRvci5pc1ByaXZhdGVNZXRob2QoaWRlbnRpZmllcigpKSkg
eworICAgICAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGlkZW50aWZp
ZXIoKSk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3Iu
ZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOworCisgICAgICAgICAgICBSZWdpc3RlcklE
KiBwcml2YXRlQnJhbmRTeW1ib2wgPSBnZW5lcmF0b3IuZW1pdEdldFByaXZhdGVCcmFuZChnZW5l
cmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0Q2hlY2tQcml2YXRlQnJhbmQoYmFzZSwgcHJpdmF0ZUJyYW5kU3ltYm9sKTsKKworICAg
ICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGRzdCwgc2NvcGUuZ2V0
KCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsKKyAgICAgICAgfQorCiAgICAgICAgIFZhcmlhYmxl
IHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShtX2lkZW50KTsKICAgICAgICAgQVNTRVJUX1dJVEhf
TUVTU0FHRSghdmFyLmxvY2FsKCksICJQcml2YXRlIEZpZWxkIG5hbWVzIG11c3QgYmUgc3RvcmVk
IGluIGNhcHR1cmVkIHZhcmlhYmxlcyIpOwogCiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBz
Y29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CiAgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0ZU5hbWUuZ2V0KCks
IHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsKLSAgICAgICAgcmV0dXJu
IGdlbmVyYXRvci5lbWl0RGlyZWN0R2V0QnlWYWwoZHN0LCBiYXNlLCBwcml2YXRlTmFtZS5nZXQo
KSk7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldFByaXZhdGVOYW1lKGRzdCwgYmFz
ZSwgcHJpdmF0ZU5hbWUuZ2V0KCkpOwogICAgIH0KIAogICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJO
b2RlKCkpIHsKQEAgLTkxOCw3ICs5MzYsMTggQEAgUmVnaXN0ZXJJRCogQmFzZURvdE5vZGU6OmVt
aXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2kKIAog
UmVnaXN0ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRQdXRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVmUHRy
PFJlZ2lzdGVySUQ+JiB0aGlzVmFsdWUpCiB7Ci0gICAgaWYgKGlzUHJpdmF0ZUZpZWxkKCkpIHsK
KyAgICBpZiAoaXNQcml2YXRlTWVtYmVyKCkpIHsKKyAgICAgICAgYXV0byBpZGVudGlmaWVyTmFt
ZSA9IGlkZW50aWZpZXIoKTsKKyAgICAgICAgaWYgKGdlbmVyYXRvci5pc1ByaXZhdGVNZXRob2Qo
aWRlbnRpZmllck5hbWUpKSB7CisgICAgICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3Iu
dmFyaWFibGUoaWRlbnRpZmllck5hbWUpOworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKKworICAg
ICAgICAgICAgUmVnaXN0ZXJJRCogcHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRH
ZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSk7Cisg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENoZWNrUHJpdmF0ZUJyYW5kKGJhc2UsIHByaXZhdGVC
cmFuZFN5bWJvbCk7CisKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0VGhyb3dUeXBlRXJyb3Io
IlRyeWluZyB0byBhY2Nlc3MgYSBub3QgZGVmaW5lZCBwcml2YXRlIHNldHRlciIpOworICAgICAg
ICB9CisKICAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKG1faWRlbnQp
OwogICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCF2YXIubG9jYWwoKSwgIlByaXZhdGUgRmll
bGQgbmFtZXMgbXVzdCBiZSBzdG9yZWQgaW4gY2FwdHVyZWQgdmFyaWFibGVzIik7CiAKQEAgLTEw
NzIsMTIgKzExMDEsMTQgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsVmFsdWVOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmUKICAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0UHV0VGhpc1RvQXJyb3dGdW5jdGlvbkNvbnRleHRTY29wZSgpOwogCiAgICAg
ICAgIC8vIEluaXRpYWxpemUgaW5zdGFuY2UgZmllbGRzIGFmdGVyIHN1cGVyLWNhbGwuCisgICAg
ICAgIGlmIChPcHRpb25zOjp1c2VQcml2YXRlTWV0aG9kcygpICYmIGdlbmVyYXRvci5wcml2YXRl
QnJhbmRSZXF1aXJlbWVudCgpID09IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOZWVkZWQpCisg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEluc3RhbGxQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLnRo
aXNSZWdpc3RlcigpKTsKKwogICAgICAgICBpZiAoT3B0aW9uczo6dXNlUHVibGljQ2xhc3NGaWVs
ZHMoKSAmJiBnZW5lcmF0b3IubmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSA9PSBOZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplcjo6WWVzKSB7CiAgICAgICAgICAgICBBU1NFUlQoZ2VuZXJhdG9y
LmlzQ29uc3RydWN0b3IoKSB8fCBnZW5lcmF0b3IuaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0
KCkpOwogICAgICAgICAgICAgZnVuYyA9IGdlbmVyYXRvci5lbWl0TG9hZERlcml2ZWRDb25zdHJ1
Y3RvcigpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRJbnN0YW5jZUZpZWxkSW5pdGlhbGl6
YXRpb25JZk5lZWRlZChnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCksIGZ1bmMuZ2V0KCksIGRpdm90
KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIH0KLQogICAgICAgICByZXR1
cm4gcmV0OwogICAgIH0KIApAQCAtMjI0MiwxNCArMjI3MywxNCBAQCBSZWdpc3RlcklEKiBQb3N0
Zml4Tm9kZTo6ZW1pdERvdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KiBkc3QpCiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRvdEFjY2Vzc29yLT5k
aXZvdCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RTdGFydCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RFbmQo
KSk7CiAKLSAgICBpZiAoZG90QWNjZXNzb3ItPmlzUHJpdmF0ZUZpZWxkKCkpIHsKKyAgICBpZiAo
ZG90QWNjZXNzb3ItPmlzUHJpdmF0ZU1lbWJlcigpKSB7CiAgICAgICAgIEFTU0VSVCghYmFzZUlz
U3VwZXIpOwogICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnQp
OwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29s
dmVTY29wZShudWxscHRyLCB2YXIpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0
ZU5hbWUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0
R2V0RnJvbVNjb3BlKHByaXZhdGVOYW1lLmdldCgpLCBzY29wZS5nZXQoKSwgdmFyLCBEb05vdFRo
cm93SWZOb3RGb3VuZCk7CiAKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2Vu
ZXJhdG9yLmVtaXREaXJlY3RHZXRCeVZhbChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGJhc2Uu
Z2V0KCksIHByaXZhdGVOYW1lLmdldCgpKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZh
bHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlTmFtZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5
KCksIGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpKTsKICAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IG9sZFZhbHVlID0gZW1pdFBvc3RJbmNPckRlYyhnZW5lcmF0b3IsIGdlbmVyYXRvci50
ZW1wRGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCksIG1fb3BlcmF0b3IpOwogICAgICAgICBn
ZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RF
bmQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJpdmF0ZUZpZWxkUHV0KGJhc2UuZ2V0KCks
IHByaXZhdGVOYW1lLmdldCgpLCB2YWx1ZS5nZXQoKSk7CkBAIC0yNDgxLDE0ICsyNTEyLDE0IEBA
IFJlZ2lzdGVySUQqIFByZWZpeE5vZGU6OmVtaXREb3QoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0KQogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5m
byhkb3RBY2Nlc3Nvci0+ZGl2b3QoKSwgZG90QWNjZXNzb3ItPmRpdm90U3RhcnQoKSwgZG90QWNj
ZXNzb3ItPmRpdm90RW5kKCkpOwogICAgIFJlZ2lzdGVySUQqIHZhbHVlOwotICAgIGlmIChkb3RB
Y2Nlc3Nvci0+aXNQcml2YXRlRmllbGQoKSkgeworICAgIGlmIChkb3RBY2Nlc3Nvci0+aXNQcml2
YXRlTWVtYmVyKCkpIHsKICAgICAgICAgQVNTRVJUKCFiYXNlTm9kZS0+aXNTdXBlck5vZGUoKSk7
CiAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudCk7CiAgICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3Bl
KG51bGxwdHIsIHZhcik7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9
IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9t
U2NvcGUocHJpdmF0ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5v
dEZvdW5kKTsKIAotICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0RGlyZWN0R2V0QnlWYWwo
cHJvcERzdC5nZXQoKSwgYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCkpOworICAgICAgICB2
YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZU5hbWUocHJvcERzdC5nZXQoKSwgYmFzZS5n
ZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCkpOwogICAgICAgICBlbWl0SW5jT3JEZWMoZ2VuZXJhdG9y
LCB2YWx1ZSwgbV9vcGVyYXRvcik7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbklu
Zm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRQcml2YXRlRmllbGRQdXQoYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCksIHZhbHVl
KTsKQEAgLTQ4ODEsNiArNDkxMiwxMyBAQCBSZWdpc3RlcklEKiBDbGFzc0V4cHJOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogICAgIGlm
IChtX25lZWRzTGV4aWNhbFNjb3BlKQogICAgICAgICBnZW5lcmF0b3IucHVzaExleGljYWxTY29w
ZSh0aGlzLCBCeXRlY29kZUdlbmVyYXRvcjo6VERaQ2hlY2tPcHRpbWl6YXRpb246Ok9wdGltaXpl
LCBCeXRlY29kZUdlbmVyYXRvcjo6TmVzdGVkU2NvcGVUeXBlOjpJc05lc3RlZCk7CiAKKyAgICBi
b29sIGhhc1ByaXZhdGVOYW1lcyA9ICEhbV9sZXhpY2FsVmFyaWFibGVzLnByaXZhdGVOYW1lc1Np
emUoKTsKKyAgICBib29sIHNob3VsZEVtaXRQcml2YXRlQnJhbmQgPSBtX2xleGljYWxWYXJpYWJs
ZXMuaGFzUHJpdmF0ZU1ldGhvZE9yQWNjZXNzb3IoKTsKKyAgICBpZiAoaGFzUHJpdmF0ZU5hbWVz
KQorICAgICAgICBnZW5lcmF0b3IucHVzaFByaXZhdGVBY2Nlc3NOYW1lcyhtX2xleGljYWxWYXJp
YWJsZXMucHJpdmF0ZU5hbWVFbnZpcm9ubWVudCgpKTsKKyAgICBpZiAoc2hvdWxkRW1pdFByaXZh
dGVCcmFuZCkKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRDcmVhdGVQcml2YXRlQnJhbmQoZ2VuZXJh
dG9yLnNjb3BlUmVnaXN0ZXIoKSwgbV9wb3NpdGlvbiwgbV9wb3NpdGlvbiwgbV9wb3NpdGlvbik7
CisKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3VwZXJjbGFzczsKICAgICBpZiAobV9jbGFzc0hl
cml0YWdlKSB7CiAgICAgICAgIHN1cGVyY2xhc3MgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7
CkBAIC00ODkxLDE3ICs0OTI5LDE4IEBAIFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAgICAgYm9v
bCBuZWVkc0hvbWVPYmplY3QgPSBmYWxzZTsKIAogICAgIGF1dG8gbmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIgPSB0aGlzLT5oYXNJbnN0YW5jZUZpZWxkcygpID8gTmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXI6OlllcyA6IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObzsKLQorICAgIGF1
dG8gcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBzaG91bGRFbWl0UHJpdmF0ZUJyYW5kID8gUHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5lZWRlZCA6IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpO
b25lOwogICAgIGlmIChtX2NvbnN0cnVjdG9yRXhwcmVzc2lvbikgewogICAgICAgICBBU1NFUlQo
bV9jb25zdHJ1Y3RvckV4cHJlc3Npb24tPmlzRnVuY0V4cHJOb2RlKCkpOwogICAgICAgICBGdW5j
dGlvbk1ldGFkYXRhTm9kZSogbWV0YWRhdGEgPSBzdGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPiht
X2NvbnN0cnVjdG9yRXhwcmVzc2lvbiktPm1ldGFkYXRhKCk7CiAgICAgICAgIG1ldGFkYXRhLT5z
ZXRFY21hTmFtZShlY21hTmFtZSgpKTsKICAgICAgICAgbWV0YWRhdGEtPnNldENsYXNzU291cmNl
KG1fY2xhc3NTb3VyY2UpOwogICAgICAgICBtZXRhZGF0YS0+c2V0TmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIobmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPT0gTmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXI6Olllcyk7CisgICAgICAgIG1ldGFkYXRhLT5zZXRQcml2YXRlQnJhbmRSZXF1aXJl
bWVudChwcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7CiAgICAgICAgIGNvbnN0cnVjdG9yID0gZ2Vu
ZXJhdG9yLmVtaXROb2RlKGNvbnN0cnVjdG9yLmdldCgpLCBtX2NvbnN0cnVjdG9yRXhwcmVzc2lv
bik7CiAgICAgICAgIG5lZWRzSG9tZU9iamVjdCA9IG1fY2xhc3NIZXJpdGFnZSB8fCBtZXRhZGF0
YS0+c3VwZXJCaW5kaW5nKCkgPT0gU3VwZXJCaW5kaW5nOjpOZWVkZWQ7CiAgICAgfSBlbHNlCi0g
ICAgICAgIGNvbnN0cnVjdG9yID0gZ2VuZXJhdG9yLmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3Io
Y29uc3RydWN0b3IuZ2V0KCksIG1fY2xhc3NIZXJpdGFnZSA/IENvbnN0cnVjdG9yS2luZDo6RXh0
ZW5kcyA6IENvbnN0cnVjdG9yS2luZDo6QmFzZSwgbV9uYW1lLCBlY21hTmFtZSgpLCBtX2NsYXNz
U291cmNlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcik7CisgICAgICAgIGNvbnN0cnVjdG9y
ID0gZ2VuZXJhdG9yLmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoY29uc3RydWN0b3IuZ2V0KCks
IG1fY2xhc3NIZXJpdGFnZSA/IENvbnN0cnVjdG9yS2luZDo6RXh0ZW5kcyA6IENvbnN0cnVjdG9y
S2luZDo6QmFzZSwgbV9uYW1lLCBlY21hTmFtZSgpLCBtX2NsYXNzU291cmNlLCBuZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplciwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOwogCiAgICAgY29uc3Qg
YXV0byYgcHJvcGVydHlOYW1lcyA9IGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCk7CiAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHByb3RvdHlwZSA9IGdlbmVyYXRvci5lbWl0TmV3T2JqZWN0KGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKSk7CkBAIC00OTY4LDYgKzUwMDcsOSBAQCBSZWdpc3RlcklEKiBD
bGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRAogICAgICAgICBnZW5lcmF0b3IucG9wTGV4aWNhbFNjb3BlKHRoaXMpOwogICAg
IH0KIAorICAgIGlmIChoYXNQcml2YXRlTmFtZXMpCisgICAgICAgIGdlbmVyYXRvci5wb3BQcml2
YXRlQWNjZXNzTmFtZXMoKTsKKwogICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShnZW5lcmF0b3Iu
ZmluYWxEZXN0aW5hdGlvbihkc3QsIGNvbnN0cnVjdG9yLmdldCgpKSwgY29uc3RydWN0b3IuZ2V0
KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJDYWxsRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyQ2FsbEZyYW1lLmNwcAppbmRleCA4NzdlNjMyNTUwYmMuLjc0MGFkODJjNzk1NCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUu
Y3BwCkBAIC0yNTksMTEgKzI1OSwxMSBAQCBKU1ZhbHVlIERlYnVnZ2VyQ2FsbEZyYW1lOjpldmFs
dWF0ZVdpdGhTY29wZUV4dGVuc2lvbihjb25zdCBTdHJpbmcmIHNjcmlwdCwgSlNPYgogICAgICAg
ICBldmFsQ29udGV4dFR5cGUgPSBFdmFsQ29udGV4dFR5cGU6Ok5vbmU7CiAKICAgICBURFpFbnZp
cm9ubWVudCB2YXJpYWJsZXNVbmRlclREWjsKLSAgICBWYXJpYWJsZUVudmlyb25tZW50IHByaXZh
dGVOYW1lczsKLSAgICBKU1Njb3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKHNj
b3BlKCktPmpzU2NvcGUoKSwgdmFyaWFibGVzVW5kZXJURFosIHByaXZhdGVOYW1lcyk7CisgICAg
UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCBwcml2YXRlTmFtZUVudmlyb25tZW50OworICAgIEpTU2Nv
cGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFooc2NvcGUoKS0+anNTY29wZSgpLCB2
YXJpYWJsZXNVbmRlclREWiwgcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCk7CiAKICAgICBFQ01BTW9k
ZSBlY21hTW9kZSA9IGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5TdHJpY3RDb250
ZXh0KCkgPyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCk7Ci0gICAgYXV0
byogZXZhbCA9IERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtYWtl
U291cmNlKHNjcmlwdCwgY2FsbEZyYW1lLT5jYWxsZXJTb3VyY2VPcmlnaW4odm0pKSwgY29kZUJs
b2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgY29kZUJsb2Nr
LT51bmxpbmtlZENvZGVCbG9jaygpLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBjb2Rl
QmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmlzQXJyb3dGdW5jdGlvbigpLCBjb2RlQmxvY2st
Pm93bmVyRXhlY3V0YWJsZSgpLT5pc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24oKSwgZXZhbENvbnRl
eHRUeXBlLCAmdmFyaWFibGVzVW5kZXJURFosICZwcml2YXRlTmFtZXMsIGVjbWFNb2RlKTsKKyAg
ICBhdXRvKiBldmFsID0gRGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShnbG9iYWxPYmplY3Qs
IG1ha2VTb3VyY2Uoc2NyaXB0LCBjYWxsRnJhbWUtPmNhbGxlclNvdXJjZU9yaWdpbih2bSkpLCBj
b2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBjb2Rl
QmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCks
IGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQo
KSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5pc0Fycm93RnVuY3Rpb24oKSwgY29k
ZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKCksIGV2
YWxDb250ZXh0VHlwZSwgJnZhcmlhYmxlc1VuZGVyVERaLCAmcHJpdmF0ZU5hbWVFbnZpcm9ubWVu
dCwgZWNtYU1vZGUpOwogICAgIGlmIChVTkxJS0VMWShjYXRjaFNjb3BlLmV4Y2VwdGlvbigpKSkg
ewogICAgICAgICBleGNlcHRpb24gPSBjYXRjaFNjb3BlLmV4Y2VwdGlvbigpOwogICAgICAgICBj
YXRjaFNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGZkODcxNGEyNTA5Mi4uMDM3YmZhOGE0Y2Rj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cApAQCAtNDczMyw4ICs0NzMzLDkgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0UHJp
dmF0ZU5hbWVCeUlkKAogICAgIEFTU0VSVCghZ2V0QnlTdGF0dXMuaXNDdXN0b20oKSk7CiAgICAg
QVNTRVJUKCFnZXRCeVN0YXR1cy5tYWtlc0NhbGxzKCkpOwogICAgIGlmICghZ2V0QnlTdGF0dXMu
aXNTaW1wbGUoKSB8fCAhZ2V0QnlTdGF0dXMubnVtVmFyaWFudHMoKSB8fCAhT3B0aW9uczo6dXNl
QWNjZXNzSW5saW5pbmcoKSkgewotICAgICAgICBzZXQoZGVzdGluYXRpb24sCi0gICAgICAgICAg
ICBhZGRUb0dyYXBoKEdldFByaXZhdGVOYW1lQnlJZCwgT3BJbmZvKGlkZW50aWZpZXIpLCBPcElu
Zm8ocHJlZGljdGlvbiksIGJhc2UsIG51bGxwdHIpKTsKKyAgICAgICAgTm9kZSogbm9kZSA9IGFk
ZFRvR3JhcGgoR2V0UHJpdmF0ZU5hbWVCeUlkLCBPcEluZm8oaWRlbnRpZmllciksIE9wSW5mbyhw
cmVkaWN0aW9uKSwgYmFzZSwgbnVsbHB0cik7CisgICAgICAgIGlmIChkZXN0aW5hdGlvbi5pc1Zh
bGlkKCkpCisgICAgICAgICAgICBzZXQoZGVzdGluYXRpb24sIG5vZGUpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC00NzQyLDggKzQ3NDMsOSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVHZXRQcml2YXRlTmFtZUJ5SWQoCiAgICAgICAgIGlmICghbV9ncmFwaC5tX3BsYW4uaXNG
VEwoKQogICAgICAgICAgICAgfHwgIU9wdGlvbnM6OnVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5p
bmcoKQogICAgICAgICAgICAgfHwgZ2V0QnlTdGF0dXMubnVtVmFyaWFudHMoKSA+IE9wdGlvbnM6
Om1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0U2l6ZSgpKSB7Ci0gICAgICAgICAgICBz
ZXQoZGVzdGluYXRpb24sCi0gICAgICAgICAgICAgICAgYWRkVG9HcmFwaChHZXRQcml2YXRlTmFt
ZUJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBiYXNlLCBudWxs
cHRyKSk7CisgICAgICAgICAgICBOb2RlKiBub2RlID0gYWRkVG9HcmFwaChHZXRQcml2YXRlTmFt
ZUJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBiYXNlLCBudWxs
cHRyKTsKKyAgICAgICAgICAgIGlmIChkZXN0aW5hdGlvbi5pc1ZhbGlkKCkpCisgICAgICAgICAg
ICAgICAgc2V0KGRlc3RpbmF0aW9uLCBub2RlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCkBAIC00NzY2LDggKzQ3NjgsOSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVH
ZXRQcml2YXRlTmFtZUJ5SWQoCiAgICAgICAgIE11bHRpR2V0QnlPZmZzZXREYXRhKiBkYXRhID0g
bV9ncmFwaC5tX211bHRpR2V0QnlPZmZzZXREYXRhLmFkZCgpOwogICAgICAgICBkYXRhLT5jYXNl
cyA9IGNhc2VzOwogICAgICAgICBkYXRhLT5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51
bWJlcjsKLSAgICAgICAgc2V0KGRlc3RpbmF0aW9uLAotICAgICAgICAgICAgYWRkVG9HcmFwaChN
dWx0aUdldEJ5T2Zmc2V0LCBPcEluZm8oZGF0YSksIE9wSW5mbyhwcmVkaWN0aW9uKSwgYmFzZSkp
OworICAgICAgICBOb2RlKiBub2RlID0gYWRkVG9HcmFwaChNdWx0aUdldEJ5T2Zmc2V0LCBPcElu
Zm8oZGF0YSksIE9wSW5mbyhwcmVkaWN0aW9uKSwgYmFzZSk7CisgICAgICAgIGlmIChkZXN0aW5h
dGlvbi5pc1ZhbGlkKCkpCisgICAgICAgICAgICBzZXQoZGVzdGluYXRpb24sIG5vZGUpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NzgxLDggKzQ3ODQsOSBAQCB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVHZXRQcml2YXRlTmFtZUJ5SWQoCiAKICAgICBOb2RlKiBsb2FkZWRWYWx1
ZSA9IGxvYWQocHJlZGljdGlvbiwgYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFyaWFudCk7CiAg
ICAgaWYgKCFsb2FkZWRWYWx1ZSkgewotICAgICAgICBzZXQoZGVzdGluYXRpb24sCi0gICAgICAg
ICAgICBhZGRUb0dyYXBoKEdldFByaXZhdGVOYW1lQnlJZCwgT3BJbmZvKGlkZW50aWZpZXIpLCBP
cEluZm8ocHJlZGljdGlvbiksIGJhc2UsIG51bGxwdHIpKTsKKyAgICAgICAgTm9kZSogbm9kZSA9
IGFkZFRvR3JhcGgoR2V0UHJpdmF0ZU5hbWVCeUlkLCBPcEluZm8oaWRlbnRpZmllciksIE9wSW5m
byhwcmVkaWN0aW9uKSwgYmFzZSwgbnVsbHB0cik7CisgICAgICAgIGlmIChkZXN0aW5hdGlvbi5p
c1ZhbGlkKCkpCisgICAgICAgICAgICBzZXQoZGVzdGluYXRpb24sIG5vZGUpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC00NzkwLDcgKzQ3OTQsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVHZXRQcml2YXRlTmFtZUJ5SWQoCiAgICAgICAgIG1fZ3JhcGguY29tcGlsYXRpb24o
KS0+bm90aWNlSW5saW5lZEdldEJ5SWQoKTsKIAogICAgIEFTU0VSVCghdmFyaWFudC5jYWxsTGlu
a1N0YXR1cygpKTsKLSAgICBpZiAodmFyaWFudC5pbnRyaW5zaWMoKSA9PSBOb0ludHJpbnNpYykK
KyAgICBpZiAodmFyaWFudC5pbnRyaW5zaWMoKSA9PSBOb0ludHJpbnNpYyAmJiBkZXN0aW5hdGlv
bi5pc1ZhbGlkKCkpCiAgICAgICAgIHNldChkZXN0aW5hdGlvbiwgbG9hZGVkVmFsdWUpOwogfQog
CkBAIC02NDQ4LDEyICs2NDUyLDE2IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCisgICAg
ICAgICAgICAvLyBTaW5jZSB3ZSBkb24ndCB1c2UgdGhlIHJldHVybiBvZiBwcml2YXRlIGJyYW5k
IGNoZWNrLCB3ZSBkb24ndCBuZWVkIHRvIHNldCByZXN1bHQgaGVyZS4KKyAgICAgICAgICAgIC8v
IFRoaXMgaGVscHMgdXMgRENFIEdldEJ5T2Zmc2V0IGZvciB0aGlzIGNhc2UuCisgICAgICAgICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24gPSBtX2dyYXBoLm1fcHJpdmF0ZUJyYW5kQWNj
ZXNzLmNvbnRhaW5zKHByb3BlcnR5KSA/IFZpcnR1YWxSZWdpc3RlcigpIDogYnl0ZWNvZGUubV9k
c3Q7CiAgICAgICAgICAgICBpZiAoY29tcGlsZVNpbmdsZUlkZW50aWZpZXIpCi0gICAgICAgICAg
ICAgICAgaGFuZGxlR2V0UHJpdmF0ZU5hbWVCeUlkKGJ5dGVjb2RlLm1fZHN0LCBwcmVkaWN0aW9u
LCBiYXNlLCBpZGVudGlmaWVyLCBpZGVudGlmaWVyTnVtYmVyLCBnZXRCeVN0YXR1cyk7CisgICAg
ICAgICAgICAgICAgaGFuZGxlR2V0UHJpdmF0ZU5hbWVCeUlkKGRlc3RpbmF0aW9uLCBwcmVkaWN0
aW9uLCBiYXNlLCBpZGVudGlmaWVyLCBpZGVudGlmaWVyTnVtYmVyLCBnZXRCeVN0YXR1cyk7CiAg
ICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYWRkVG9HcmFw
aChHZXRQcml2YXRlTmFtZSwgT3BJbmZvKCksIE9wSW5mbyhwcmVkaWN0aW9uKSwgYmFzZSwgcHJv
cGVydHkpOwogICAgICAgICAgICAgICAgIG1fZXhpdE9LID0gZmFsc2U7Ci0gICAgICAgICAgICAg
ICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBub2RlKTsKKyAgICAgICAgICAgICAgICBpZiAoZGVzdGlu
YXRpb24uaXNWYWxpZCgpKQorICAgICAgICAgICAgICAgICAgICBzZXQoZGVzdGluYXRpb24sIG5v
ZGUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X3ByaXZh
dGVfbmFtZSk7CiAgICAgICAgIH0KQEAgLTc3MjksMTIgKzc3MzcsMjEgQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgICAgICAvLyBw
cmVkaWN0aW9uLCB3ZSdkIG90aGVyd2lzZSB0aGluayB0aGF0IGl0IGhhcyB0byBleGl0LiBUaGVu
IHdoZW4gaXQgZGlkIGV4ZWN1dGUsIHdlCiAgICAgICAgICAgICAgICAgLy8gd291bGQgcmVjb21w
aWxlLiBCdXQgaWYgd2UgY2FuIGZvbGQgaXQgaGVyZSwgd2UgYXZvaWQgdGhlIGV4aXQuCiAgICAg
ICAgICAgICAgICAgaWYgKEpTVmFsdWUgdmFsdWUgPSBtX2dyYXBoLnRyeUdldENvbnN0YW50Q2xv
c3VyZVZhcihzY29wZU5vZGUsIFNjb3BlT2Zmc2V0KG9wZXJhbmQpKSkgewotICAgICAgICAgICAg
ICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIHdlYWtKU0NvbnN0YW50KHZhbHVlKSk7CisgICAg
ICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSB3ZWFrSlNDb25zdGFudCh2YWx1ZSk7CisgICAg
ICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgbm9kZSk7CisKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKHVpZCAmJiB1aWQgPT0gbV9ncmFwaC5tX3ZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLnByaXZhdGVCcmFuZFByaXZhdGVOYW1lKCkuaW1wbCgpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ByaXZhdGVCcmFuZEFjY2Vzcy5hZGQobm9kZSk7CisK
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRQcmVkaWN0aW9uKCk7Ci0gICAg
ICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LAotICAgICAgICAgICAgICAgICAgICBhZGRU
b0dyYXBoKEdldENsb3N1cmVWYXIsIE9wSW5mbyhvcGVyYW5kKSwgT3BJbmZvKHByZWRpY3Rpb24p
LCBzY29wZU5vZGUpKTsKKyAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYWRkVG9HcmFwaChH
ZXRDbG9zdXJlVmFyLCBPcEluZm8ob3BlcmFuZCksIE9wSW5mbyhwcmVkaWN0aW9uKSwgc2NvcGVO
b2RlKTsKKyAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIG5vZGUpOworCisgICAg
ICAgICAgICAgICAgaWYgKHVpZCAmJiB1aWQgPT0gbV9ncmFwaC5tX3ZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLnByaXZhdGVCcmFuZFByaXZhdGVOYW1lKCkuaW1wbCgpKQorICAgICAg
ICAgICAgICAgICAgICBtX2dyYXBoLm1fcHJpdmF0ZUJyYW5kQWNjZXNzLmFkZChub2RlKTsKKwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBV
bnJlc29sdmVkUHJvcGVydHk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXgg
YjNhOWJmZjVjZDJhLi45NzRmZmZjMmVlZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmgKQEAgLTExODIsNiArMTE4Miw3IEBAIHB1YmxpYzoKICAgICBSZWdpc3RlcmVkU3RydWN0
dXJlIHN5bWJvbFN0cnVjdHVyZTsKIAogICAgIEhhc2hTZXQ8Tm9kZSo+IG1fc2xvd0dldEJ5VmFs
OworICAgIEhhc2hTZXQ8Tm9kZSo+IG1fcHJpdmF0ZUJyYW5kQWNjZXNzOwogCiBwcml2YXRlOgog
ICAgIGJvb2wgaXNTdHJpbmdQcm90b3R5cGVNZXRob2RTYW5lKEpTR2xvYmFsT2JqZWN0KiwgVW5p
cXVlZFN0cmluZ0ltcGwqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGMwN2ZkZTA3OTkwYi4uMjlhN2E3MTg1OWUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAK
QEAgLTE0NCw5ICsxNDQsOSBAQCBKU1ZhbHVlIGV2YWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEVDTUFNb2RlIGVjbWFNbwogICAgICAgICB9CiAg
ICAgICAgIAogICAgICAgICBURFpFbnZpcm9ubWVudCB2YXJpYWJsZXNVbmRlclREWjsKLSAgICAg
ICAgVmFyaWFibGVFbnZpcm9ubWVudCBwcml2YXRlTmFtZXM7Ci0gICAgICAgIEpTU2NvcGU6OmNv
bGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFooY2FsbGVyU2NvcGVDaGFpbiwgdmFyaWFibGVz
VW5kZXJURFosIHByaXZhdGVOYW1lcyk7Ci0gICAgICAgIGV2YWwgPSBEaXJlY3RFdmFsRXhlY3V0
YWJsZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgbWFrZVNvdXJjZShwcm9ncmFtU291cmNlLCBjYWxs
ZXJDb2RlQmxvY2stPnNvdXJjZSgpLnByb3ZpZGVyKCktPnNvdXJjZU9yaWdpbigpKSwgZGVyaXZl
ZENvbnRleHRUeXBlLCBjYWxsZXJVbmxpbmtlZENvZGVCbG9jay0+bmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIoKSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgY2FsbGVyQ29kZUJsb2NrLT5vd25l
ckV4ZWN1dGFibGUoKS0+aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKCksIGV2YWxDb250ZXh0VHlw
ZSwgJnZhcmlhYmxlc1VuZGVyVERaLCAmcHJpdmF0ZU5hbWVzLCBlY21hTW9kZSk7CisgICAgICAg
IFByaXZhdGVOYW1lRW52aXJvbm1lbnQgcHJpdmF0ZU5hbWVFbnZpcm9ubWVudDsKKyAgICAgICAg
SlNTY29wZTo6Y29sbGVjdENsb3N1cmVWYXJpYWJsZXNVbmRlclREWihjYWxsZXJTY29wZUNoYWlu
LCB2YXJpYWJsZXNVbmRlclREWiwgcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCk7CisgICAgICAgIGV2
YWwgPSBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgbWFrZVNvdXJj
ZShwcm9ncmFtU291cmNlLCBjYWxsZXJDb2RlQmxvY2stPnNvdXJjZSgpLnByb3ZpZGVyKCktPnNv
dXJjZU9yaWdpbigpKSwgZGVyaXZlZENvbnRleHRUeXBlLCBjYWxsZXJVbmxpbmtlZENvZGVCbG9j
ay0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgY2FsbGVyVW5saW5rZWRDb2RlQmxvY2st
PnByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCksIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGNhbGxl
ckNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbigp
LCBldmFsQ29udGV4dFR5cGUsICZ2YXJpYWJsZXNVbmRlclREWiwgJnByaXZhdGVOYW1lRW52aXJv
bm1lbnQsIGVjbWFNb2RlKTsKICAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2Vw
dGlvbigpID09ICFldmFsKTsKICAgICAgICAgaWYgKCFldmFsKQogICAgICAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcAppbmRleCAyMzY2OTJjODUyOGYuLjY5NTI5YzE2NDNkNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0yMjcyLDYgKzIyNzIsOCBAQCBBTFdB
WVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIGdldFByaXZhdGVOYW1lKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcgogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFs
dWUoKSk7CiAKICAgICBKU09iamVjdCogYmFzZSA9IGJhc2VWYWx1ZS50b09iamVjdChnbG9iYWxP
YmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CisKICAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlw
ZTo6R2V0T3duUHJvcGVydHkpOwogICAgIGJhc2UtPmdldFByaXZhdGVGaWVsZChnbG9iYWxPYmpl
Y3QsIGZpZWxkTmFtZSwgc2xvdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNW
YWx1ZSgpKTsKQEAgLTIzNzgsNyArMjM4MCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWRPcHRpbWl6ZSwgRW5jb2RlZEpTVmFsdWUsIChKCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2xvdC5nZXRWYWx1ZShnbG9iYWxPYmplY3Qs
IGZpZWxkTmFtZSkpOwogICAgIH0KIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2V0UHJp
dmF0ZU5hbWUoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VWYWx1ZSwgZmllbGROYW1lKSk7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZ2V0UHJpdmF0
ZU5hbWUoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VWYWx1ZSwgZmllbGROYW1lKSkpOwog
fQogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVCeUlk
R2VuZXJpYywgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSBiYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmllcikpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IDY0YTY2Zjc2NWM4Zi4uMDJi
Nzg3NWNjYWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApAQCAtMjAy
LDYgKzIwMiw3IEBAIEZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpGdW5jdGlvbk1ldGFkYXRhTm9kZSgK
ICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3Ry
dWN0b3JLaW5kKSkKICAgICAgICAgLCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8pKQogICAgICAg
ICAsIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24oaXNBcnJvd0Z1bmN0aW9uQm9keUV4
cHJlc3Npb24pCisgICAgICAgICwgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudChzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmUpKQogICAgICAgICAsIG1f
cGFyc2VNb2RlKG1vZGUpCiAgICAgICAgICwgbV9zdGFydENvbHVtbihzdGFydENvbHVtbikKICAg
ICAgICAgLCBtX2VuZENvbHVtbihlbmRDb2x1bW4pCkBAIC0yMjYsNiArMjI3LDcgQEAgRnVuY3Rp
b25NZXRhZGF0YU5vZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKAogICAgICAgICAsIG1fY29uc3Ry
dWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKQogICAgICAg
ICAsIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObykpCiAgICAgICAgICwgbV9pc0Fycm93RnVuY3Rp
b25Cb2R5RXhwcmVzc2lvbihpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKKyAgICAgICAg
LCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50KHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcml2YXRl
QnJhbmRSZXF1aXJlbWVudDo6Tm9uZSkpCiAgICAgICAgICwgbV9wYXJzZU1vZGUobW9kZSkKICAg
ICAgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQogICAgICAgICAsIG1fZW5kQ29sdW1u
KGVuZENvbHVtbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCA3MzU4YmIz
MjUyN2UuLjFmZDNmMjQ3NjAwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApA
QCAtNzIxLDcgKzcyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGVudW0gY2xhc3MgQ2xhc3NF
bGVtZW50VGFnIDogdWludDhfdCB7IE5vLCBJbnN0YW5jZSwgU3RhdGljLCBMYXN0VGFnIH07CiAg
ICAgY2xhc3MgUHJvcGVydHlOb2RlIGZpbmFsIDogcHVibGljIFBhcnNlckFyZW5hRnJlZWFibGUg
ewogICAgIHB1YmxpYzoKLSAgICAgICAgZW51bSBUeXBlIDogdWludDhfdCB7IENvbnN0YW50ID0g
MSwgR2V0dGVyID0gMiwgU2V0dGVyID0gNCwgQ29tcHV0ZWQgPSA4LCBTaG9ydGhhbmQgPSAxNiwg
U3ByZWFkID0gMzIsIFByaXZhdGUgPSA2NCB9OworICAgICAgICBlbnVtIFR5cGUgOiB1aW50OF90
IHsgQ29uc3RhbnQgPSAxLCBHZXR0ZXIgPSAyLCBTZXR0ZXIgPSA0LCBDb21wdXRlZCA9IDgsIFNo
b3J0aGFuZCA9IDE2LCBTcHJlYWQgPSAzMiwgUHJpdmF0ZUZpZWxkID0gNjQsIFByaXZhdGVNZXRo
b2QgPSAxMjggfTsKIAogICAgICAgICBQcm9wZXJ0eU5vZGUoY29uc3QgSWRlbnRpZmllciYsIEV4
cHJlc3Npb25Ob2RlKiwgVHlwZSwgU3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcpOwogICAg
ICAgICBQcm9wZXJ0eU5vZGUoRXhwcmVzc2lvbk5vZGUqLCBUeXBlLCBTdXBlckJpbmRpbmcsIENs
YXNzRWxlbWVudFRhZyk7CkBAIC03MzksNyArNzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIGJvb2wgaXNDbGFzc0ZpZWxkKCkgY29uc3QgeyByZXR1cm4gaXNDbGFzc1Byb3BlcnR5KCkg
JiYgIW5lZWRzU3VwZXJCaW5kaW5nKCk7IH0KICAgICAgICAgYm9vbCBpc0luc3RhbmNlQ2xhc3NG
aWVsZCgpIGNvbnN0IHsgcmV0dXJuIGlzSW5zdGFuY2VDbGFzc1Byb3BlcnR5KCkgJiYgIW5lZWRz
U3VwZXJCaW5kaW5nKCk7IH0KICAgICAgICAgYm9vbCBpc092ZXJyaWRkZW5CeUR1cGxpY2F0ZSgp
IGNvbnN0IHsgcmV0dXJuIG1faXNPdmVycmlkZGVuQnlEdXBsaWNhdGU7IH0KLSAgICAgICAgYm9v
bCBpc1ByaXZhdGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgJiBQcml2YXRlOyB9CisgICAgICAg
IGJvb2wgaXNQcml2YXRlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlICYgKFByaXZhdGVGaWVsZCB8
IFByaXZhdGVNZXRob2QpOyB9CiAgICAgICAgIGJvb2wgaGFzQ29tcHV0ZWROYW1lKCkgY29uc3Qg
eyByZXR1cm4gbV9leHByZXNzaW9uOyB9CiAgICAgICAgIGJvb2wgaXNDb21wdXRlZENsYXNzRmll
bGQoKSBjb25zdCB7IHJldHVybiBpc0NsYXNzRmllbGQoKSAmJiBoYXNDb21wdXRlZE5hbWUoKTsg
fQogICAgICAgICB2b2lkIHNldElzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlKCkgeyBtX2lzT3ZlcnJp
ZGRlbkJ5RHVwbGljYXRlID0gdHJ1ZTsgfQpAQCAtNzU5LDcgKzc1OSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBtX25hbWU7CiAgICAgICAgIEV4cHJlc3Np
b25Ob2RlKiBtX2V4cHJlc3Npb247CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Fzc2lnbjsK
LSAgICAgICAgdW5zaWduZWQgbV90eXBlIDogNzsKKyAgICAgICAgdW5zaWduZWQgbV90eXBlOwog
ICAgICAgICB1bnNpZ25lZCBtX25lZWRzU3VwZXJCaW5kaW5nIDogMTsKICAgICAgICAgc3RhdGlj
X2Fzc2VydCgxIDw8IDIgPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ2xhc3NFbGVtZW50VGFnOjpM
YXN0VGFnKSwgIkNsYXNzRWxlbWVudFRhZyBzaG91bGRuJ3QgdXNlIG1vcmUgdGhhbiB0d28gYml0
cyIpOwogICAgICAgICB1bnNpZ25lZCBtX2NsYXNzRWxlbWVudFRhZyA6IDI7CkBAIC04MzIsNyAr
ODMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9zdWJzY3JpcHRIYXNBc3Np
Z25tZW50czsKICAgICB9OwogCi0gICAgZW51bSBjbGFzcyBEb3RUeXBlIHsgTmFtZSwgUHJpdmF0
ZUZpZWxkIH07CisgICAgZW51bSBjbGFzcyBEb3RUeXBlIHsgTmFtZSwgUHJpdmF0ZU1lbWJlciB9
OwogICAgIGNsYXNzIEJhc2VEb3ROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBw
dWJsaWM6CiAgICAgICAgIEJhc2VEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRG90VHlwZSk7CkBAIC04NDAsNyAr
ODQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBiYXNlKCkg
Y29uc3QgeyByZXR1cm4gbV9iYXNlOyB9CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50OyB9CiAgICAgICAgIERvdFR5cGUgdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQotICAgICAgICBib29sIGlzUHJpdmF0ZUZpZWxkKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlID09IERvdFR5cGU6OlByaXZhdGVGaWVsZDsgfQorICAgICAg
ICBib29sIGlzUHJpdmF0ZU1lbWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBEb3RUeXBl
OjpQcml2YXRlTWVtYmVyOyB9CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldFByb3BlcnR5
VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJh
c2UsIFJlZlB0cjxSZWdpc3RlcklEPiYgdGhpc1ZhbHVlKTsKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdEdldFByb3BlcnR5VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkc3Qs
IFJlZ2lzdGVySUQqIGJhc2UpOwpAQCAtODY0LDcgKzg2NCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IG51bGxwdHIpIGZpbmFsOwogCiAgICAgICAgIGJvb2wgaXNMb2NhdGlvbigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgYm9vbCBpc1ByaXZhdGVMb2NhdGlv
bigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fdHlwZSA9PSBEb3RUeXBlOjpQcml2YXRlRmll
bGQ7IH0KKyAgICAgICAgYm9vbCBpc1ByaXZhdGVMb2NhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fdHlwZSA9PSBEb3RUeXBlOjpQcml2YXRlTWVtYmVyOyB9CiAgICAgICAgIGJvb2wg
aXNEb3RBY2Nlc3Nvck5vZGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgfTsK
IApAQCAtMjE1MSw2ICsyMTUxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgc2V0
RWNtYU5hbWUoY29uc3QgSWRlbnRpZmllciYgZWNtYU5hbWUpIHsgbV9lY21hTmFtZSA9IGVjbWFO
YW1lOyB9CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGVjbWFOYW1lKCkgeyByZXR1cm4gbV9p
ZGVudC5pc0VtcHR5KCkgPyBtX2VjbWFOYW1lIDogbV9pZGVudDsgfQogCisgICAgICAgIHZvaWQg
c2V0UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQpIHsgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihwcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7IH0KKyAgICAgICAgUHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSB7IHJldHVybiBzdGF0
aWNfY2FzdDxQcml2YXRlQnJhbmRSZXF1aXJlbWVudD4obV9wcml2YXRlQnJhbmRSZXF1aXJlbWVu
dCk7IH0KKwogICAgICAgICBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2RlKCkgeyByZXR1cm4gbV9m
dW5jdGlvbk1vZGU7IH0KIAogICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQoKSBjb25zdCB7
IHJldHVybiBtX2Z1bmN0aW9uTmFtZVN0YXJ0OyB9CkBAIC0yMTk5LDYgKzIyMDIsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwogICAg
ICAgICB1bnNpZ25lZCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIDogMTsKICAgICAgICAg
dW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA6IDE7CisgICAgICAgIHVu
c2lnbmVkIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgOiAxOwogICAgICAgICBTb3VyY2VQYXJz
ZU1vZGUgbV9wYXJzZU1vZGU7CiAgICAgICAgIEZ1bmN0aW9uTW9kZSBtX2Z1bmN0aW9uTW9kZTsK
ICAgICAgICAgSWRlbnRpZmllciBtX2lkZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuY3BwCmluZGV4IGUxOTBlNjkzNjk5NS4uOGFhOGZkNGE5Y2ZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yODUxLDYgKzI4NTEsNyBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVDbGFzc0V4cHJlc3Npb24gUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlQ2xhc3MoVAogICAgIGNsYXNzU2NvcGUtPnNldElzTGV4aWNhbFNjb3BlKCk7CiAg
ICAgY2xhc3NTY29wZS0+cHJldmVudFZhckRlY2xhcmF0aW9ucygpOwogICAgIGNsYXNzU2NvcGUt
PnNldFN0cmljdE1vZGUoKTsKKyAgICBib29sIGRlY2xhcmVzUHJpdmF0ZU1ldGhvZCA9IGZhbHNl
OwogCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShyZXF1aXJlbWVudHMgIT0gRnVuY3Rpb25OYW1l
UmVxdWlyZW1lbnRzOjpVbm5hbWVkLCAiQ3VycmVudGx5LCB0aGVyZSBpcyBubyBjYWxsZXIgdGhh
dCB1c2VzIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50czo6VW5uYW1lZCBmb3IgY2xhc3Mgc3ludGF4
LiIpOwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIShyZXF1aXJlbWVudHMgPT0gRnVuY3Rpb25O
YW1lUmVxdWlyZW1lbnRzOjpOb25lICYmICFpbmZvLmNsYXNzTmFtZSksICJXaGVuIHNwZWNpZnlp
bmcgRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzOjpOb25lLCB3ZSBuZWVkIHRvIGluaXRpYWxpemUg
aW5mby5jbGFzc05hbWUgd2l0aCB0aGUgZGVmYXVsdCB2YWx1ZSBpbiB0aGUgY2FsbGVyIHNpZGUu
Iik7CkBAIC0yOTY1LDE1ICsyOTY2LDIxIEBAIHBhcnNlTWV0aG9kOgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgUFJJVkFURU5BTUU6IHsKICAgICAgICAgICAgIEFTU0VSVChPcHRp
b25zOjp1c2VQcml2YXRlQ2xhc3NGaWVsZHMoKSk7Ci0gICAgICAgICAgICBKU1Rva2VuIHRva2Vu
ID0gbV90b2tlbjsKICAgICAgICAgICAgIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CiAg
ICAgICAgICAgICBmYWlsSWZUcnVlKHRhZyA9PSBDbGFzc0VsZW1lbnRUYWc6OlN0YXRpYywgIlN0
YXRpYyBjbGFzcyBlbGVtZW50IGNhbm5vdCBiZSBwcml2YXRlIik7CiAgICAgICAgICAgICBmYWls
SWZUcnVlKGlzR2V0dGVyIHx8IGlzU2V0dGVyLCAiQ2Fubm90IHBhcnNlIGNsYXNzIG1ldGhvZCB3
aXRoIHByaXZhdGUgbmFtZSIpOwogICAgICAgICAgICAgQVNTRVJUKGlkZW50KTsKICAgICAgICAg
ICAgIG5leHQoKTsKLSAgICAgICAgICAgIGZhaWxJZlRydWUobWF0Y2hBbmRVcGRhdGUoT1BFTlBB
UkVOLCB0b2tlbiksICJDYW5ub3QgcGFyc2UgY2xhc3MgbWV0aG9kIHdpdGggcHJpdmF0ZSBuYW1l
Iik7Ci0gICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoY2xhc3NTY29wZS0+ZGVjbGFyZVBy
aXZhdGVOYW1lKCppZGVudCkgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURl
Y2xhcmF0aW9uLCAiQ2Fubm90IGRlY2xhcmUgcHJpdmF0ZSBmaWVsZCB0d2ljZSIpOwotICAgICAg
ICAgICAgdHlwZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4odHlwZSB8IFByb3Bl
cnR5Tm9kZTo6UHJpdmF0ZSk7CisgICAgICAgICAgICBpZiAoT3B0aW9uczo6dXNlUHJpdmF0ZU1l
dGhvZHMoKSAmJiBtYXRjaChPUEVOUEFSRU4pKSB7CisgICAgICAgICAgICAgICAgc2VtYW50aWNG
YWlsSWZUcnVlKGNsYXNzU2NvcGUtPmRlY2xhcmVQcml2YXRlTWV0aG9kKCppZGVudCkgJiBEZWNs
YXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uLCAiQ2Fubm90IGRlY2xh
cmUgcHJpdmF0ZSBtZXRob2QgdHdpY2UiKTsKKyAgICAgICAgICAgICAgICBkZWNsYXJlc1ByaXZh
dGVNZXRob2QgPSB0cnVlOworICAgICAgICAgICAgICAgIHR5cGUgPSBzdGF0aWNfY2FzdDxQcm9w
ZXJ0eU5vZGU6OlR5cGU+KHR5cGUgfCBQcm9wZXJ0eU5vZGU6OlByaXZhdGVNZXRob2QpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmYWlsSWZU
cnVlKG1hdGNoKE9QRU5QQVJFTiksICJDYW5ub3QgcGFyc2UgY2xhc3MgbWV0aG9kIHdpdGggcHJp
dmF0ZSBuYW1lIik7CisgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoY2xhc3NTY29wZS0+
ZGVjbGFyZVByaXZhdGVGaWVsZCgqaWRlbnQpICYgRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWRE
dXBsaWNhdGVEZWNsYXJhdGlvbiwgIkNhbm5vdCBkZWNsYXJlIHByaXZhdGUgZmllbGQgdHdpY2Ui
KTsKKyAgICAgICAgICAgIHR5cGUgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KHR5
cGUgfCBQcm9wZXJ0eU5vZGU6OlByaXZhdGVGaWVsZCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBkZWZhdWx0OgpAQCAtMzA1MywxMCArMzA2MCwxOSBAQCBwYXJzZU1l
dGhvZDoKICAgICBpbmZvLmVuZE9mZnNldCA9IHRva2VuTG9jYXRpb24oKS5lbmRPZmZzZXQgLSAx
OwogICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VCUkFDRSwgIkV4cGVjdGVkIGEgY2xvc2luZyAnfScg
YWZ0ZXIgYSBjbGFzcyBib2R5Iik7CiAKKyAgICBpZiAoZGVjbGFyZXNQcml2YXRlTWV0aG9kKSB7
CisgICAgICAgIElkZW50aWZpZXIgcHJpdmF0ZUJyYW5kSWRlbnRpZmllciA9IG1fdm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucHJpdmF0ZUJyYW5kUHJpdmF0ZU5hbWUoKTsKKyAgICAg
ICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmF0aW9uUmVzdWx0ID0gY2xhc3NTY29wZS0+
ZGVjbGFyZUxleGljYWxWYXJpYWJsZSgmcHJpdmF0ZUJyYW5kSWRlbnRpZmllciwgdHJ1ZSk7Cisg
ICAgICAgIEFTU0VSVF9VTlVTRUQoZGVjbGFyYXRpb25SZXN1bHQsIGRlY2xhcmF0aW9uUmVzdWx0
ID09IERlY2xhcmF0aW9uUmVzdWx0OjpWYWxpZCk7CisgICAgICAgIGNsYXNzU2NvcGUtPnVzZVZh
cmlhYmxlKCZwcml2YXRlQnJhbmRJZGVudGlmaWVyLCBmYWxzZSk7CisgICAgICAgIGNsYXNzU2Nv
cGUtPmFkZENsb3NlZFZhcmlhYmxlQ2FuZGlkYXRlVW5jb25kaXRpb25hbGx5KHByaXZhdGVCcmFu
ZElkZW50aWZpZXIuaW1wbCgpKTsKKyAgICB9CisKICAgICBpZiAoT3B0aW9uczo6dXNlUHJpdmF0
ZUNsYXNzRmllbGRzKCkpIHsKICAgICAgICAgLy8gRmFpbCBpZiB0aGVyZSBhcmUgbm8gcGFyZW50
IHByaXZhdGUgbmFtZSBzY29wZXMgYW5kIGFueSB1c2VkLWJ1dC11bmRlY2xhcmVkIHByaXZhdGUg
bmFtZXMuCiAgICAgICAgIHNlbWFudGljRmFpbElmRmFsc2UoY29weVVuZGVjbGFyZWRQcml2YXRl
TmFtZXNUb091dGVyU2NvcGUoKSwgIkNhbm5vdCByZWZlcmVuY2UgdW5kZWNsYXJlZCBwcml2YXRl
IG5hbWVzIik7CiAgICAgfQorCiAgICAgYXV0byBjbGFzc0V4cHJlc3Npb24gPSBjb250ZXh0LmNy
ZWF0ZUNsYXNzRXhwcihsb2NhdGlvbiwgaW5mbywgY2xhc3NTY29wZS0+ZmluYWxpemVMZXhpY2Fs
RW52aXJvbm1lbnQoKSwgY29uc3RydWN0b3IsIHBhcmVudENsYXNzLCBjbGFzc0VsZW1lbnRzKTsK
ICAgICBwb3BTY29wZShjbGFzc1Njb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJ
bmZvKTsKICAgICByZXR1cm4gY2xhc3NFeHByZXNzaW9uOwpAQCAtNTA3Myw3ICs1MDg5LDcgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VNZW1iZXJFeHByZXMKICAgICAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWls
SWZGYWxzZSh1c2VQcml2YXRlTmFtZShpZGVudCksICJDYW5ub3QgcmVmZXJlbmNlIHByaXZhdGUg
bmFtZXMgb3V0c2lkZSBvZiBjbGFzcyIpOwogICAgICAgICAgICAgICAgICAgICBtX3BhcnNlclN0
YXRlLmxhc3RQcml2YXRlTmFtZSA9IGlkZW50OwogICAgICAgICAgICAgICAgICAgICBjdXJyZW50
U2NvcGUoKS0+dXNlVmFyaWFibGUoaWRlbnQsIGZhbHNlKTsKLSAgICAgICAgICAgICAgICAgICAg
dHlwZSA9IERvdFR5cGU6OlByaXZhdGVGaWVsZDsKKyAgICAgICAgICAgICAgICAgICAgdHlwZSA9
IERvdFR5cGU6OlByaXZhdGVNZW1iZXI7CiAgICAgICAgICAgICAgICAgICAgIG1fdG9rZW4ubV90
eXBlID0gSURFTlQ7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG1hdGNoT3JG
YWlsKElERU5ULCAiRXhwZWN0ZWQgYSBwcm9wZXJ0eSBuYW1lIGFmdGVyICIsIG9wdGlvbmFsQ2hh
aW5CYXNlID8gIic/LiciIDogIicuJyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmgKaW5kZXggY2VjY2Y4MTYzMjhkLi4wNDkyNzVlYjAyYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuaApAQCAtNTExLDExICs1MTEsMjggQEAgcHVibGljOgogICAgICAgICBt
X2xleGljYWxWYXJpYWJsZXMudXNlUHJpdmF0ZU5hbWUoaWRlbnQpOwogICAgIH0KIAotICAgIERl
Y2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJlUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYg
aWRlbnQpCisgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmVQcml2YXRlTWV0aG9kKGNv
bnN0IElkZW50aWZpZXImIGlkZW50KQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fYWxsb3dzTGV4
aWNhbERlY2xhcmF0aW9ucyk7CiAgICAgICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayByZXN1bHQg
PSBEZWNsYXJhdGlvblJlc3VsdDo6VmFsaWQ7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9s
ZXhpY2FsVmFyaWFibGVzLmRlY2xhcmVQcml2YXRlTmFtZShpZGVudCk7CisgICAgICAgIGJvb2wg
YWRkUmVzdWx0ID0gbV9sZXhpY2FsVmFyaWFibGVzLmRlY2xhcmVQcml2YXRlTWV0aG9kKGlkZW50
KTsKKworICAgICAgICBpZiAoIWFkZFJlc3VsdCkgeworICAgICAgICAgICAgcmVzdWx0IHw9IERl
Y2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb247CisgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgdXNlVmFyaWFibGUoJmlkZW50
LCBmYWxzZSk7CisgICAgICAgIGFkZENsb3NlZFZhcmlhYmxlQ2FuZGlkYXRlVW5jb25kaXRpb25h
bGx5KGlkZW50LmltcGwoKSk7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAg
ICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyZVByaXZhdGVGaWVsZChjb25zdCBJZGVudGlm
aWVyJiBpZGVudCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2FsbG93c0xleGljYWxEZWNsYXJh
dGlvbnMpOworICAgICAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgcmVzdWx0ID0gRGVjbGFyYXRp
b25SZXN1bHQ6OlZhbGlkOworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbGV4aWNhbFZhcmlh
Ymxlcy5kZWNsYXJlUHJpdmF0ZUZpZWxkKGlkZW50KTsKICAgICAgICAgaWYgKCFhZGRSZXN1bHQu
aXNOZXdFbnRyeSkKICAgICAgICAgICAgIHJlc3VsdCB8PSBEZWNsYXJhdGlvblJlc3VsdDo6SW52
YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtOTU1
LDcgKzk3Miw3IEBAIHB1YmxpYzoKICAgICB+UGFyc2VyKCk7CiAKICAgICB0ZW1wbGF0ZSA8Y2xh
c3MgUGFyc2VkTm9kZT4KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFy
c2VyRXJyb3ImLCBjb25zdCBJZGVudGlmaWVyJiwgU291cmNlUGFyc2VNb2RlLCBQYXJzaW5nQ29u
dGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0
aW9uID0gV1RGOjpudWxsb3B0LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiA9IG51bGxwdHIs
IGNvbnN0IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qID0gbnVsbHB0cik7CisgICAgc3RkOjp1bmlx
dWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKFBhcnNlckVycm9yJiwgY29uc3QgSWRlbnRpZmllciYs
IFNvdXJjZVBhcnNlTW9kZSwgUGFyc2luZ0NvbnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25D
b25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiA9IFdURjo6bnVsbG9wdCwgY29uc3QgUHJp
dmF0ZU5hbWVFbnZpcm9ubWVudCogPSBudWxscHRyLCBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRp
b24+KiA9IG51bGxwdHIpOwogCiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0
TmV3bGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGV4ZXItPnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xp
bmUoKTsgfQogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbkJlZm9yZUxhc3RUb2tlbigpIGNv
bnN0IHsgcmV0dXJuIG1fbGV4ZXItPmxhc3RUb2tlbkxvY2F0aW9uKCk7IH0KQEAgLTIwNTMsNyAr
MjA3MCw3IEBAIHByaXZhdGU6CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1w
bGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4KLXN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2UoUGFyc2VyRXJyb3ImIGVycm9yLCBjb25zdCBJZGVudGlmaWVy
JiBjYWxsZWVOYW1lLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBQYXJzaW5nQ29udGV4dCBw
YXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVy
c0VuZFBvc2l0aW9uLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVByaXZh
dGVOYW1lcywgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogaW5zdGFuY2VGaWVsZExvY2F0
aW9ucykKK3N0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2UoUGFyc2VyRXJyb3ImIGVycm9yLCBjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBTb3Vy
Y2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBQYXJzaW5nQ29udGV4dCBwYXJzaW5nQ29udGV4dCwgT3B0
aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uLCBjb25z
dCBQcml2YXRlTmFtZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVByaXZhdGVOYW1lcywgY29uc3Qg
VmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogaW5zdGFuY2VGaWVsZExvY2F0aW9ucykKIHsKICAgICBp
bnQgZXJyTGluZTsKICAgICBTdHJpbmcgZXJyTXNnOwpAQCAtMjA2OCw5ICsyMDg1LDkgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJF
cnJvciYgZXJyb3IsIGNvbnN0IEkKICAgICBBU1NFUlQobV9zb3VyY2UtPnN0YXJ0Q29sdW1uKCkg
PiBPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpKTsKICAgICB1bnNpZ25lZCBzdGFydENvbHVt
biA9IG1fc291cmNlLT5zdGFydENvbHVtbigpLnplcm9CYXNlZEludCgpOwogCi0gICAgaWYgKGlz
RXZhbE5vZGU8UGFyc2VkTm9kZT4oKSAmJiBwYXJlbnRTY29wZVByaXZhdGVOYW1lcyAmJiBwYXJl
bnRTY29wZVByaXZhdGVOYW1lcy0+cHJpdmF0ZU5hbWVzU2l6ZSgpKSB7CisgICAgaWYgKGlzRXZh
bE5vZGU8UGFyc2VkTm9kZT4oKSAmJiBwYXJlbnRTY29wZVByaXZhdGVOYW1lcyAmJiBwYXJlbnRT
Y29wZVByaXZhdGVOYW1lcy0+c2l6ZSgpKSB7CiAgICAgICAgIGN1cnJlbnRTY29wZSgpLT5zZXRJ
c1ByaXZhdGVOYW1lU2NvcGUoKTsKLSAgICAgICAgcGFyZW50U2NvcGVQcml2YXRlTmFtZXMtPmNv
cHlQcml2YXRlTmFtZXNUbyhjdXJyZW50U2NvcGUoKS0+bGV4aWNhbFZhcmlhYmxlcygpKTsKKyAg
ICAgICAgY3VycmVudFNjb3BlKCktPmxleGljYWxWYXJpYWJsZXMoKS5hZGRQcml2YXRlTmFtZXNG
cm9tKHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzKTsKICAgICB9CiAKICAgICBhdXRvIHBhcnNlUmVz
dWx0ID0gcGFyc2VJbm5lcihjYWxsZWVOYW1lLCBwYXJzZU1vZGUsIHBhcnNpbmdDb250ZXh0LCBm
dW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uLCBpbnN0YW5jZUZpZWxkTG9j
YXRpb25zKTsKQEAgLTIxNTcsNyArMjE3NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2Rl
PiBwYXJzZSgKICAgICBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlID0gRGVy
aXZlZENvbnRleHRUeXBlOjpOb25lLAogICAgIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5
cGUgPSBFdmFsQ29udGV4dFR5cGU6Ok5vbmUsCiAgICAgRGVidWdnZXJQYXJzZURhdGEqIGRlYnVn
Z2VyUGFyc2VEYXRhID0gbnVsbHB0ciwKLSAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBw
YXJlbnRTY29wZVByaXZhdGVOYW1lcyA9IG51bGxwdHIsCisgICAgY29uc3QgUHJpdmF0ZU5hbWVF
bnZpcm9ubWVudCogcGFyZW50U2NvcGVQcml2YXRlTmFtZXMgPSBudWxscHRyLAogICAgIGNvbnN0
IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qIGluc3RhbmNlRmllbGRMb2NhdGlvbnMgPSBudWxscHRy
LAogICAgIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uID0gZmFsc2UpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKaW5kZXggZWFmZmRlMjFjMTU5Li45
ZDlhMTg5Yjc2YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyTW9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVz
LmgKQEAgLTM3LDYgKzM3LDggQEAgZW51bSBjbGFzcyBKU1BhcnNlclNjcmlwdE1vZGUgeyBDbGFz
c2ljLCBNb2R1bGUgfTsKIAogZW51bSBjbGFzcyBTdXBlckJpbmRpbmcgeyBOZWVkZWQsIE5vdE5l
ZWRlZCB9OwogCitlbnVtIGNsYXNzIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHsgTm9uZSwgTmVl
ZGVkIH07CisKIGVudW0gY2xhc3MgQ29kZUdlbmVyYXRpb25Nb2RlIDogdWludDhfdCB7CiAgICAg
RGVidWdnZXIgPSAxIDw8IDAsCiAgICAgVHlwZVByb2ZpbGVyID0gMSA8PCAxLApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAppbmRleCAxYTZkMGU0OGFjZWEu
LjYxOGNkYjNmYzFkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9T
eW50YXhDaGVja2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhD
aGVja2VyLmgKQEAgLTE3OSw3ICsxNzksNyBAQCBwdWJsaWM6CiAgICAgRXhwcmVzc2lvblR5cGUg
Y3JlYXRlQm9vbGVhbihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBib29sKSB7IHJldHVybiBCb29s
RXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU51bGwoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJikgeyByZXR1cm4gTnVsbEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCcmFj
a2V0QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNz
aW9uVHlwZSwgYm9vbCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gQnJhY2tldEV4cHI7IH0KLSAg
ICBFeHByZXNzaW9uVHlwZSBjcmVhdGVEb3RBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvblR5cGUsIGNvbnN0IElkZW50aWZpZXIqLCBEb3RUeXBlIHR5cGUsIGludCwgaW50
LCBpbnQpIHsgcmV0dXJuIHR5cGUgPT0gRG90VHlwZTo6UHJpdmF0ZUZpZWxkID8gUHJpdmF0ZURv
dEV4cHIgOiBEb3RFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRG90QWNjZXNzKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBjb25zdCBJZGVudGlmaWVyKiwg
RG90VHlwZSB0eXBlLCBpbnQsIGludCwgaW50KSB7IHJldHVybiB0eXBlID09IERvdFR5cGU6OlBy
aXZhdGVNZW1iZXIgPyBQcml2YXRlRG90RXhwciA6IERvdEV4cHI7IH0KICAgICBFeHByZXNzaW9u
VHlwZSBjcmVhdGVSZWdFeHAoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmll
ciYgcGF0dGVybiwgY29uc3QgSWRlbnRpZmllciYgZmxhZ3MsIGludCkgeyByZXR1cm4gWWFycjo6
aGFzRXJyb3IoWWFycjo6Y2hlY2tTeW50YXgocGF0dGVybi5zdHJpbmcoKSwgZmxhZ3Muc3RyaW5n
KCkpKSA/IDAgOiBSZWdFeHBFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTmV3RXhw
cihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQsIGludCwg
aW50KSB7IHJldHVybiBOZXdFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTmV3RXhw
cihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQpIHsgcmV0
dXJuIE5ld0V4cHI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
VmFyaWFibGVFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Zh
cmlhYmxlRW52aXJvbm1lbnQuY3BwCmluZGV4IDgxYTljOTM4ZGMxMS4uM2VjNTdjM2UyYWJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1l
bnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9u
bWVudC5jcHAKQEAgLTEwNCw2ICsxMDQsNDAgQEAgdm9pZCBWYXJpYWJsZUVudmlyb25tZW50Ojpt
YXJrVmFyaWFibGVBc0V4cG9ydGVkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4KICAg
ICBmaW5kUmVzdWx0LT52YWx1ZS5zZXRJc0V4cG9ydGVkKCk7CiB9CiAKK2Jvb2wgVmFyaWFibGVF
bnZpcm9ubWVudDo6ZGVjbGFyZVByaXZhdGVNZXRob2QoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJp
bmdJbXBsPiYgaWRlbnRpZmllcikKK3sKKyAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgIG1f
cmFyZURhdGEgPSBtYWtlVW5pcXVlPFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhPigpOwor
CisgICAgYXV0byBmaW5kUmVzdWx0ID0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZmluZChp
ZGVudGlmaWVyKTsKKworICAgIGlmIChmaW5kUmVzdWx0ID09IG1fcmFyZURhdGEtPm1fcHJpdmF0
ZU5hbWVzLmVuZCgpKSB7CisgICAgICAgIFByaXZhdGVOYW1lRW50cnkgbWV0YShQcml2YXRlTmFt
ZUVudHJ5OjpUcmFpdHM6OklzRGVjbGFyZWQgfCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6Oklz
TWV0aG9kKTsKKworICAgICAgICBhdXRvIGVudHJ5ID0gVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5
KCk7CisgICAgICAgIGVudHJ5LnNldElzUHJpdmF0ZU1ldGhvZCgpOworICAgICAgICBlbnRyeS5z
ZXRJc0NvbnN0KCk7CisgICAgICAgIGVudHJ5LnNldElzQ2FwdHVyZWQoKTsKKyAgICAgICAgbV9t
YXAuYWRkKGlkZW50aWZpZXIsIGVudHJ5KTsKKworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1f
cmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChpZGVudGlmaWVyLCBtZXRhKTsKKyAgICAgICAg
cmV0dXJuIGFkZFJlc3VsdC5pc05ld0VudHJ5OworICAgIH0KKworICAgIGlmIChmaW5kUmVzdWx0
LT52YWx1ZS5pc0RlY2xhcmVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsgLy8gRXJyb3I6IGRl
Y2xhcmluZyBhIGR1cGxpY2F0ZSBwcml2YXRlIG5hbWUuCisKKyAgICBhdXRvIGVudHJ5ID0gVmFy
aWFibGVFbnZpcm9ubWVudEVudHJ5KCk7CisgICAgZW50cnkuc2V0SXNQcml2YXRlTWV0aG9kKCk7
CisgICAgZW50cnkuc2V0SXNDb25zdCgpOworICAgIGVudHJ5LnNldElzQ2FwdHVyZWQoKTsKKyAg
ICBtX21hcC5hZGQoaWRlbnRpZmllciwgZW50cnkpOworCisgICAgLy8gaXQgd2FzIHByZXZpb3Vz
bHkgdXNlZCwgbWFyayBpdCBhcyBkZWNsYXJlZC4KKyAgICBQcml2YXRlTmFtZUVudHJ5IG1ldGEo
UHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc0RlY2xhcmVkIHwgUHJpdmF0ZU5hbWVFbnRyeTo6
VHJhaXRzOjpJc1VzZWQgfCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzTWV0aG9kKTsKKyAg
ICBhdXRvIGFkZFJlc3VsdCA9IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLnNldChpZGVudGlm
aWVyLCBtZXRhKTsKKyAgICByZXR1cm4gIWFkZFJlc3VsdC5pc05ld0VudHJ5OworfQogCiB2b2lk
IENvbXBhY3RURFpFbnZpcm9ubWVudDo6c29ydENvbXBhY3QoQ29tcGFjdCYgY29tcGFjdCkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9u
bWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50
LmgKaW5kZXggODNhYmExZDQ3YTY4Li5hODc0YzBiYWNlOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oCkBAIC00NSw3ICs0NSw4
IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNGdW5jdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fYml0cyAmIElzRnVuY3Rpb247IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQ
YXJhbWV0ZXIoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1BhcmFtZXRlcjsgfQogICAgIEFM
V0FZU19JTkxJTkUgYm9vbCBpc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYml0cyAmIElzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlOyB9Ci0gICAgQUxX
QVlTX0lOTElORSBib29sIGlzUHJpdmF0ZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJ
c1ByaXZhdGVOYW1lOyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzUHJpdmF0ZUZpZWxkKCkg
Y29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNQcml2YXRlRmllbGQ7IH0KKyAgICBBTFdBWVNfSU5M
SU5FIGJvb2wgaXNQcml2YXRlTWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNQcml2
YXRlTWV0aG9kOyB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNDYXB0dXJlZCgpIHsg
bV9iaXRzIHw9IElzQ2FwdHVyZWQ7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNDb25z
dCgpIHsgbV9iaXRzIHw9IElzQ29uc3Q7IH0KQEAgLTU3LDcgKzU4LDggQEAgcHVibGljOgogICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0Z1bmN0aW9uKCkgeyBtX2JpdHMgfD0gSXNGdW5jdGlv
bjsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1BhcmFtZXRlcigpIHsgbV9iaXRzIHw9
IElzUGFyYW1ldGVyOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzU2xvcHB5TW9kZUhv
aXN0aW5nQ2FuZGlkYXRlKCkgeyBtX2JpdHMgfD0gSXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRh
dGU7IH0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNQcml2YXRlTmFtZSgpIHsgbV9iaXRz
IHw9IElzUHJpdmF0ZU5hbWU7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNQcml2YXRl
RmllbGQoKSB7IG1fYml0cyB8PSBJc1ByaXZhdGVGaWVsZDsgfQorICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXRJc1ByaXZhdGVNZXRob2QoKSB7IG1fYml0cyB8PSBJc1ByaXZhdGVNZXRob2Q7IH0K
IAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjbGVhcklzVmFyKCkgeyBtX2JpdHMgJj0gfklzVmFy
OyB9CiAKQEAgLTgwLDcgKzgyLDggQEAgcHJpdmF0ZToKICAgICAgICAgSXNGdW5jdGlvbiA9IDEg
PDwgNywKICAgICAgICAgSXNQYXJhbWV0ZXIgPSAxIDw8IDgsCiAgICAgICAgIElzU2xvcHB5TW9k
ZUhvaXN0aW5nQ2FuZGlkYXRlID0gMSA8PCA5LAotICAgICAgICBJc1ByaXZhdGVOYW1lID0gMSA8
PCAxMCwKKyAgICAgICAgSXNQcml2YXRlRmllbGQgPSAxIDw8IDEwLAorICAgICAgICBJc1ByaXZh
dGVNZXRob2QgPSAxIDw8IDExLAogICAgIH07CiAgICAgdWludDE2X3QgbV9iaXRzIHsgMCB9Owog
fTsKQEAgLTkwLDExICs5MywxNiBAQCBzdHJ1Y3QgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5SGFz
aFRyYWl0cyA6IEhhc2hUcmFpdHM8VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5PgogfTsKIAogc3Ry
dWN0IFByaXZhdGVOYW1lRW50cnkgeworICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRQcml2YXRlTmFt
ZUVudHJ5OworCiBwdWJsaWM6CiAgICAgUHJpdmF0ZU5hbWVFbnRyeSh1aW50MTZfdCB0cmFpdHMg
PSAwKSB7IG1fYml0cyA9IHRyYWl0czsgfQogCiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzVXNl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzVXNlZDsgfQogICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBpc0RlY2xhcmVkKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNEZWNsYXJlZDsgfQor
ICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc01ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAm
IElzTWV0aG9kOyB9CisKKyAgICBib29sIGlzUHJpdmF0ZU1ldGhvZE9yQWNlc3NvcigpIGNvbnN0
IHsgcmV0dXJuIGlzTWV0aG9kKCk7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1Vz
ZWQoKSB7IG1fYml0cyB8PSBJc1VzZWQ7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNE
ZWNsYXJlZCgpIHsgbV9iaXRzIHw9IElzRGVjbGFyZWQ7IH0KQEAgLTEwNyw4ICsxMTUsMTAgQEAg
cHVibGljOgogICAgIH0KIAogICAgIGVudW0gVHJhaXRzIDogdWludDE2X3QgeworICAgICAgICBO
b25lID0gMCwKICAgICAgICAgSXNVc2VkID0gMSA8PCAwLAogICAgICAgICBJc0RlY2xhcmVkID0g
MSA8PCAxLAorICAgICAgICBJc01ldGhvZCA9IDEgPDwgMiwKICAgICB9OwogCiBwcml2YXRlOgpA
QCAtMTE2LDE1ICsxMjYsMTggQEAgcHJpdmF0ZToKIH07CiAKIHN0cnVjdCBQcml2YXRlTmFtZUVu
dHJ5SGFzaFRyYWl0cyA6IEhhc2hUcmFpdHM8UHJpdmF0ZU5hbWVFbnRyeT4gewotICAgIHN0YXRp
YyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IGZhbHNlOwogfTsKIAordHlwZWRlZiBIYXNoTWFw
PFBhY2tlZFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIFByaXZhdGVOYW1lRW50cnksIElkZW50
aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+LCBQcml2
YXRlTmFtZUVudHJ5SGFzaFRyYWl0cz4gUHJpdmF0ZU5hbWVFbnZpcm9ubWVudDsKKwogY2xhc3Mg
VmFyaWFibGVFbnZpcm9ubWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwcml2
YXRlOgogICAgIHR5cGVkZWYgSGFzaE1hcDxQYWNrZWRSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+
LCBWYXJpYWJsZUVudmlyb25tZW50RW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRz
PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+LCBWYXJpYWJsZUVudmlyb25tZW50RW50cnlIYXNo
VHJhaXRzPiBNYXA7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFBhY2tlZFJlZlB0cjxVbmlxdWVkU3Ry
aW5nSW1wbD4sIFByaXZhdGVOYW1lRW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRz
PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+LCBQcml2YXRlTmFtZUVudHJ5SGFzaFRyYWl0cz4g
UHJpdmF0ZU5hbWVzOworCiBwdWJsaWM6CisKICAgICBWYXJpYWJsZUVudmlyb25tZW50KCkgeyB9
CiAgICAgVmFyaWFibGVFbnZpcm9ubWVudChWYXJpYWJsZUVudmlyb25tZW50JiYgb3RoZXIpCiAg
ICAgICAgIDogbV9tYXAoV1RGTW92ZShvdGhlci5tX21hcCkpCkBAIC0xNDYsNiArMTU5LDE2IEBA
IHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29u
c3QgeyByZXR1cm4gbV9tYXAuZW5kKCk7IH0KICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6QWRkUmVz
dWx0IGFkZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKSB7IHJl
dHVybiBtX21hcC5hZGQoaWRlbnRpZmllciwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCkpOyB9
CiAgICAgQUxXQVlTX0lOTElORSBNYXA6OkFkZFJlc3VsdCBhZGQoY29uc3QgSWRlbnRpZmllciYg
aWRlbnRpZmllcikgeyByZXR1cm4gYWRkKGlkZW50aWZpZXIuaW1wbCgpKTsgfQorCisgICAgQUxX
QVlTX0lOTElORSBQcml2YXRlTmFtZUVudmlyb25tZW50OjpBZGRSZXN1bHQgYWRkUHJpdmF0ZU5h
bWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyByZXR1cm4gYWRkUHJpdmF0ZU5hbWUo
aWRlbnRpZmllci5pbXBsKCkpOyB9CisgICAgQUxXQVlTX0lOTElORSBQcml2YXRlTmFtZUVudmly
b25tZW50OjpBZGRSZXN1bHQgYWRkUHJpdmF0ZU5hbWUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJp
bmdJbXBsPiYgaWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIGlmICghbV9yYXJlRGF0YSkKKyAg
ICAgICAgICAgIG1fcmFyZURhdGEgPSBtYWtlVW5pcXVlPFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJh
cmVEYXRhPigpOworCisgICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5h
ZGQoaWRlbnRpZmllciwgUHJpdmF0ZU5hbWVFbnRyeSgpKTsKKyAgICB9CisKICAgICBBTFdBWVNf
SU5MSU5FIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX21hcC5zaXplKCkgKyBwcml2
YXRlTmFtZXNTaXplKCk7IH0KICAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIG1hcFNpemUoKSBj
b25zdCB7IHJldHVybiBtX21hcC5zaXplKCk7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgY29u
dGFpbnMoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikgY29uc3Qg
eyByZXR1cm4gbV9tYXAuY29udGFpbnMoaWRlbnRpZmllcik7IH0KQEAgLTE2NCwxNyArMTg3LDIw
IEBAIHB1YmxpYzoKICAgICBib29sIGlzRXZlcnl0aGluZ0NhcHR1cmVkKCkgY29uc3QgeyByZXR1
cm4gbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZDsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsg
cmV0dXJuICFtX21hcC5zaXplKCk7IH0KIAotICAgIHVzaW5nIFByaXZhdGVOYW1lc1JhbmdlID0g
V1RGOjpJdGVyYXRvclJhbmdlPFByaXZhdGVOYW1lczo6aXRlcmF0b3I+OworICAgIHVzaW5nIFBy
aXZhdGVOYW1lc1JhbmdlID0gV1RGOjpJdGVyYXRvclJhbmdlPFByaXZhdGVOYW1lRW52aXJvbm1l
bnQ6Oml0ZXJhdG9yPjsKIAotICAgIEFMV0FZU19JTkxJTkUgTWFwOjpBZGRSZXN1bHQgZGVjbGFy
ZVByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsgcmV0dXJuIGRlY2xh
cmVQcml2YXRlTmFtZShpZGVudGlmaWVyLmltcGwoKSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIE1h
cDo6QWRkUmVzdWx0IGRlY2xhcmVQcml2YXRlRmllbGQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRp
ZmllcikgeyByZXR1cm4gZGVjbGFyZVByaXZhdGVGaWVsZChpZGVudGlmaWVyLmltcGwoKSk7IH0K
ICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdXNlUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYg
aWRlbnRpZmllcikgeyB1c2VQcml2YXRlTmFtZShpZGVudGlmaWVyLmltcGwoKSk7IH0KIAotICAg
IE1hcDo6QWRkUmVzdWx0IGRlY2xhcmVQcml2YXRlTmFtZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0
cmluZ0ltcGw+JiBpZGVudGlmaWVyKQorICAgIGJvb2wgZGVjbGFyZVByaXZhdGVNZXRob2QoY29u
c3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyByZXR1cm4gZGVjbGFyZVByaXZhdGVNZXRob2Qo
aWRlbnRpZmllci5pbXBsKCkpOyB9CisgICAgYm9vbCBkZWNsYXJlUHJpdmF0ZU1ldGhvZChjb25z
dCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKTsKKworICAgIE1hcDo6QWRk
UmVzdWx0IGRlY2xhcmVQcml2YXRlRmllbGQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBs
PiYgaWRlbnRpZmllcikKICAgICB7CiAgICAgICAgIGF1dG8mIG1ldGEgPSBnZXRPckFkZFByaXZh
dGVOYW1lKGlkZW50aWZpZXIuZ2V0KCkpOwogICAgICAgICBtZXRhLnNldElzRGVjbGFyZWQoKTsK
ICAgICAgICAgYXV0byBlbnRyeSA9IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpOwotICAgICAg
ICBlbnRyeS5zZXRJc1ByaXZhdGVOYW1lKCk7CisgICAgICAgIGVudHJ5LnNldElzUHJpdmF0ZUZp
ZWxkKCk7CiAgICAgICAgIGVudHJ5LnNldElzQ29uc3QoKTsKICAgICAgICAgZW50cnkuc2V0SXND
YXB0dXJlZCgpOwogICAgICAgICByZXR1cm4gbV9tYXAuYWRkKGlkZW50aWZpZXIsIGVudHJ5KTsK
QEAgLTIwMSw2ICsyMjcsMjYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+
bV9wcml2YXRlTmFtZXMuc2l6ZSgpOwogICAgIH0KIAorICAgIEFMV0FZU19JTkxJTkUgY29uc3Qg
UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCgpIGNvbnN0Cisg
ICAgeworICAgICAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgcmV0dXJuICZtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lczsKKyAgICB9CisK
KyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaGFzUHJpdmF0ZU1ldGhvZE9yQWNjZXNzb3IoKSBjb25z
dAorICAgIHsKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgICAgIGZvciAoYXV0byBlbnRyeSA6IHByaXZhdGVOYW1lcygpKSB7CisgICAg
ICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNQcml2YXRlTWV0aG9kT3JBY2Vzc29yKCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCiAgICAgQUxXQVlTX0lOTElORSBib29sIGhhc1ByaXZhdGVOYW1lKGNvbnN0
IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiAgICAgewogICAgICAgICBpZiAoIW1fcmFyZURhdGEp
CkBAIC0yMjIsNiArMjY4LDIwIEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAorICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBhZGRQcml2YXRlTmFtZXNGcm9tKGNvbnN0IFByaXZhdGVOYW1lRW52
aXJvbm1lbnQqIHByaXZhdGVOYW1lRW52aXJvbm1lbnQpCisgICAgeworICAgICAgICBpZiAoIXBy
aXZhdGVOYW1lRW52aXJvbm1lbnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYg
KCFtX3JhcmVEYXRhKQorICAgICAgICAgICAgbV9yYXJlRGF0YSA9IG1ha2VVbmlxdWU8VmFyaWFi
bGVFbnZpcm9ubWVudDo6UmFyZURhdGE+KCk7CisKKyAgICAgICAgZm9yIChhdXRvIGVudHJ5IDog
KnByaXZhdGVOYW1lRW52aXJvbm1lbnQpIHsKKyAgICAgICAgICAgIEFTU0VSVChlbnRyeS52YWx1
ZS5pc0RlY2xhcmVkKCkpOworICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMu
YWRkKGVudHJ5LmtleSwgZW50cnkudmFsdWUpOworICAgICAgICB9CisgICAgfQorCiAgICAgQUxX
QVlTX0lOTElORSB2b2lkIGNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzVG8oVmFyaWFibGVFbnZp
cm9ubWVudCYgb3V0ZXIpIGNvbnN0IHsKICAgICAgICAgLy8gVXNlZCBieSB0aGUgUGFyc2VyIHRv
IHRyYW5zZmVyIHJlY29yZGVkIHVzZXMgb2YgUHJpdmF0ZU5hbWVzIGZyb20gYW4KICAgICAgICAg
Ly8gaW5uZXIgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCBpbnRvIGFuIG91dGVyIG9uZSwgaW4gY2Fz
ZSBhIFBORSBpcyB1c2VkCkBAIC0yNDQsNyArMzA0LDcgQEAgcHVibGljOgogICAgICAgICB9CiAg
ICAgICAgIFJhcmVEYXRhKGNvbnN0IFJhcmVEYXRhJikgPSBkZWZhdWx0OwogICAgICAgICBSYXJl
RGF0YSYgb3BlcmF0b3I9KGNvbnN0IFJhcmVEYXRhJikgPSBkZWZhdWx0OwotICAgICAgICBQcml2
YXRlTmFtZXMgbV9wcml2YXRlTmFtZXM7CisgICAgICAgIFByaXZhdGVOYW1lRW52aXJvbm1lbnQg
bV9wcml2YXRlTmFtZXM7CiAgICAgfTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAppbmRleCA4YWIwZjllMzk5OGEuLmQwY2RlNzQ1
YjI2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlw
ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNw
cApAQCAtOTgwLDYgKzk4MCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9iaXRWZWN0b3JzLmVuY29k
ZShlbmNvZGVyLCByYXJlRGF0YS5tX2JpdFZlY3RvcnMpOwogICAgICAgICBtX2NvbnN0YW50SWRl
bnRpZmllclNldHMuZW5jb2RlKGVuY29kZXIsIHJhcmVEYXRhLm1fY29uc3RhbnRJZGVudGlmaWVy
U2V0cyk7CiAgICAgICAgIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSByYXJlRGF0YS5t
X25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOworICAgICAgICBtX3ByaXZhdGVCcmFuZFJlcXVp
cmVtZW50ID0gcmFyZURhdGEubV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudDsKICAgICB9CiAKICAg
ICBVbmxpbmtlZENvZGVCbG9jazo6UmFyZURhdGEqIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKSBj
b25zdApAQCAtOTk0LDYgKzk5NSw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9iaXRWZWN0b3JzLmRl
Y29kZShkZWNvZGVyLCByYXJlRGF0YS0+bV9iaXRWZWN0b3JzKTsKICAgICAgICAgbV9jb25zdGFu
dElkZW50aWZpZXJTZXRzLmRlY29kZShkZWNvZGVyLCByYXJlRGF0YS0+bV9jb25zdGFudElkZW50
aWZpZXJTZXRzKTsKICAgICAgICAgcmFyZURhdGEtPm1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIgPSBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOworICAgICAgICByYXJlRGF0YS0+bV9w
cml2YXRlQnJhbmRSZXF1aXJlbWVudCA9IG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ7CiAgICAg
ICAgIHJldHVybiByYXJlRGF0YTsKICAgICB9CiAKQEAgLTEwMDcsOCArMTAwOSwxMSBAQCBwcml2
YXRlOgogICAgIENhY2hlZFZlY3RvcjxDYWNoZWRCaXRWZWN0b3I+IG1fYml0VmVjdG9yczsKICAg
ICBDYWNoZWRWZWN0b3I8Q2FjaGVkQ29uc3RhbnRJZGVudGlmaWVyU2V0RW50cnk+IG1fY29uc3Rh
bnRJZGVudGlmaWVyU2V0czsKICAgICB1bnNpZ25lZCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyIDogMTsKKyAgICB1bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsKIH07
CiAKK3R5cGVkZWYgQ2FjaGVkSGFzaE1hcDxDYWNoZWRSZWZQdHI8Q2FjaGVkVW5pcXVlZFN0cmlu
Z0ltcGwsIFVuaXF1ZWRTdHJpbmdJbXBsLCBXVEY6OlBhY2tlZFB0clRyYWl0czxVbmlxdWVkU3Ry
aW5nSW1wbD4+LCBQcml2YXRlTmFtZUVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0
czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiwgUHJpdmF0ZU5hbWVFbnRyeUhhc2hUcmFpdHM+
IENhY2hlZFByaXZhdGVOYW1lRW52aXJvbm1lbnQ7CisKIGNsYXNzIENhY2hlZFZhcmlhYmxlRW52
aXJvbm1lbnRSYXJlRGF0YSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8VmFyaWFibGVFbnZpcm9ubWVu
dDo6UmFyZURhdGE+IHsKIHB1YmxpYzoKICAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YSYgcmFyZURhdGEpCkBAIC0xMDIy
LDcgKzEwMjcsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIENhY2hlZEhhc2hN
YXA8Q2FjaGVkUmVmUHRyPENhY2hlZFVuaXF1ZWRTdHJpbmdJbXBsLCBVbmlxdWVkU3RyaW5nSW1w
bCwgV1RGOjpQYWNrZWRQdHJUcmFpdHM8VW5pcXVlZFN0cmluZ0ltcGw+PiwgUHJpdmF0ZU5hbWVF
bnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJ
bXBsPj4sIFByaXZhdGVOYW1lRW50cnlIYXNoVHJhaXRzPiBtX3ByaXZhdGVOYW1lczsKKyAgICBD
YWNoZWRQcml2YXRlTmFtZUVudmlyb25tZW50IG1fcHJpdmF0ZU5hbWVzOwogfTsKIAogY2xhc3Mg
Q2FjaGVkVmFyaWFibGVFbnZpcm9ubWVudCA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8VmFyaWFibGVF
bnZpcm9ubWVudD4gewpAQCAtMTE5OSw3ICsxMjA0LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJp
dmF0ZToKLSAgICBDYWNoZWRIYXNoU2V0PENhY2hlZFJlZlB0cjxDYWNoZWRVbmlxdWVkU3RyaW5n
SW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPiBtX3ByaXZhdGVOYW1lczsKKyAgICBDYWNoZWRIYXNo
TWFwPENhY2hlZFJlZlB0cjxDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbCwgVW5pcXVlZFN0cmluZ0lt
cGwsIFdURjo6UGFja2VkUHRyVHJhaXRzPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1l
RW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4+LCBQcml2YXRlTmFtZUVudHJ5SGFzaFRyYWl0cz4gbV9wcml2YXRlTmFtZXM7CiB9Owog
CiBjbGFzcyBDYWNoZWRTeW1ib2xUYWJsZSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8U3ltYm9sVGFi
bGU+IHsKQEAgLTE3NTYsNiArMTc2MSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fY2xh
c3NTb3VyY2UuZW5jb2RlKGVuY29kZXIsIHJhcmVEYXRhLm1fY2xhc3NTb3VyY2UpOwogICAgICAg
ICBtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzLmVuY29kZShlbmNvZGVyLCByYXJlRGF0YS5tX3Bh
cmVudFNjb3BlVERaVmFyaWFibGVzKTsKKyAgICAgICAgbV9wYXJlbnRQcml2YXRlTmFtZUVudmly
b25tZW50LmVuY29kZShlbmNvZGVyLCByYXJlRGF0YS5tX3BhcmVudFByaXZhdGVOYW1lRW52aXJv
bm1lbnQpOwogICAgIH0KIAogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpSYXJlRGF0
YSogZGVjb2RlKERlY29kZXImIGRlY29kZXIpIGNvbnN0CkBAIC0xNzYzLDEyICsxNzY5LDE0IEBA
IHB1YmxpYzoKICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlJhcmVEYXRhKiBy
YXJlRGF0YSA9IG5ldyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6UmFyZURhdGEgeyB9Owog
ICAgICAgICBtX2NsYXNzU291cmNlLmRlY29kZShkZWNvZGVyLCByYXJlRGF0YS0+bV9jbGFzc1Nv
dXJjZSk7CiAgICAgICAgIG1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXMuZGVjb2RlKGRlY29kZXIs
IHJhcmVEYXRhLT5tX3BhcmVudFNjb3BlVERaVmFyaWFibGVzKTsKKyAgICAgICAgbV9wYXJlbnRQ
cml2YXRlTmFtZUVudmlyb25tZW50LmRlY29kZShkZWNvZGVyLCByYXJlRGF0YS0+bV9wYXJlbnRQ
cml2YXRlTmFtZUVudmlyb25tZW50KTsKICAgICAgICAgcmV0dXJuIHJhcmVEYXRhOwogICAgIH0K
IAogcHJpdmF0ZToKICAgICBDYWNoZWRTb3VyY2VDb2RlV2l0aG91dFByb3ZpZGVyIG1fY2xhc3NT
b3VyY2U7CiAgICAgQ2FjaGVkVmVjdG9yPENhY2hlZENvbXBhY3RURFpFbnZpcm9ubWVudE1hcEhh
bmRsZT4gbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlczsKKyAgICBDYWNoZWRQcml2YXRlTmFtZUVu
dmlyb25tZW50IG1fcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudDsKIH07CiAKIGNsYXNzIENh
Y2hlZEZ1bmN0aW9uRXhlY3V0YWJsZSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU+IHsKQEAgLTE4MDQsNiArMTgxMiw3IEBAIHB1YmxpYzoKICAgICB1bnNp
Z25lZCBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX3N1cGVyQmluZGluZzsgfQogICAg
IHVuc2lnbmVkIGRlcml2ZWRDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVyaXZlZENv
bnRleHRUeXBlOyB9CiAgICAgdW5zaWduZWQgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSBj
b25zdCB7IHJldHVybiBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOyB9CisgICAgdW5zaWdu
ZWQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50OyB9CiAKICAgICBJZGVudGlmaWVyIG5hbWUoRGVjb2RlciYgZGVjb2Rlcikg
Y29uc3QgeyByZXR1cm4gbV9uYW1lLmRlY29kZShkZWNvZGVyKTsgfQogICAgIElkZW50aWZpZXIg
ZWNtYU5hbWUoRGVjb2RlciYgZGVjb2RlcikgY29uc3QgeyByZXR1cm4gbV9lY21hTmFtZS5kZWNv
ZGUoZGVjb2Rlcik7IH0KQEAgLTE4MzIsNyArMTg0MSw4IEBAIHByaXZhdGU6CiAgICAgdW5zaWdu
ZWQgbV9wYXJhbWV0ZXJzU3RhcnRPZmZzZXQgOiAzMTsKICAgICB1bnNpZ25lZCBtX3R5cGVQcm9m
aWxpbmdTdGFydE9mZnNldDsKICAgICB1bnNpZ25lZCBtX3R5cGVQcm9maWxpbmdFbmRPZmZzZXQ7
Ci0gICAgdW5zaWduZWQgbV9wYXJhbWV0ZXJDb3VudDsKKyAgICB1bnNpZ25lZCBtX3BhcmFtZXRl
ckNvdW50OjMxOworICAgIHVuc2lnbmVkIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgOiAxOwog
ICAgIFNvdXJjZVBhcnNlTW9kZSBtX3NvdXJjZVBhcnNlTW9kZTsKICAgICB1bnNpZ25lZCBtX2Nv
bnN0cnVjdG9yS2luZCA6IDI7CiAgICAgdW5zaWduZWQgbV9mdW5jdGlvbk1vZGUgOiAyOyAvLyBG
dW5jdGlvbk1vZGUKQEAgLTE4ODksNyArMTg5OSw2IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBp
c0NsYXNzQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDbGFzc0NvbnRleHQ7IH0KICAgICB1
bnNpZ25lZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBtX2NvbnN0cnVjdG9yS2lu
ZDsgfQogICAgIHVuc2lnbmVkIGRlcml2ZWRDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGVyaXZlZENvbnRleHRUeXBlOyB9Ci0gICAgdW5zaWduZWQgbmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIoKSBjb25zdCB7IHJldHVybiBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOyB9CiAg
ICAgdW5zaWduZWQgZXZhbENvbnRleHRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9ldmFsQ29udGV4
dFR5cGU7IH0KICAgICB1bnNpZ25lZCBoYXNUYWlsQ2FsbHMoKSBjb25zdCB7IHJldHVybiBtX2hh
c1RhaWxDYWxsczsgfQogICAgIHVuc2lnbmVkIGhhc0NoZWNrcG9pbnRzKCkgY29uc3QgeyByZXR1
cm4gbV9oYXNDaGVja3BvaW50czsgfQpAQCAtMTkyMSw3ICsxOTMwLDYgQEAgcHJpdmF0ZToKICAg
ICB1bnNpZ25lZCBtX2lzQ2xhc3NDb250ZXh0IDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVj
dG9yS2luZCA6IDI7CiAgICAgdW5zaWduZWQgbV9kZXJpdmVkQ29udGV4dFR5cGUgOiAyOwotICAg
IHVuc2lnbmVkIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgOiAxOwogICAgIHVuc2lnbmVk
IG1fZXZhbENvbnRleHRUeXBlIDogMjsKICAgICB1bnNpZ25lZCBtX2hhc1RhaWxDYWxscyA6IDE7
CiAgICAgdW5zaWduZWQgbV9jb2RlVHlwZSA6IDI7CkBAIC0yMjAyLDYgKzIyMTAsNyBAQCBBTFdB
WVNfSU5MSU5FIHZvaWQgQ2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlOjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgVW5saQogICAgIG1fc3VwZXJCaW5kaW5nID0gZXhlY3V0YWJsZS5tX3N1
cGVyQmluZGluZzsKICAgICBtX2Rlcml2ZWRDb250ZXh0VHlwZSA9IGV4ZWN1dGFibGUubV9kZXJp
dmVkQ29udGV4dFR5cGU7CiAgICAgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9IGV4ZWN1
dGFibGUubV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjsKKyAgICBtX3ByaXZhdGVCcmFuZFJl
cXVpcmVtZW50ID0gZXhlY3V0YWJsZS5tX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50OwogCiAgICAg
bV9yYXJlRGF0YS5lbmNvZGUoZW5jb2RlciwgZXhlY3V0YWJsZS5tX3JhcmVEYXRhLmdldCgpKTsK
IApAQCAtMjI0Myw2ICsyMjUyLDcgQEAgQUxXQVlTX0lOTElORSBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoRGVjb2RlciYgZGUKICAgICAsIG1f
dHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KGNhY2hlZEV4ZWN1dGFibGUudHlwZVByb2ZpbGluZ1N0
YXJ0T2Zmc2V0KCkpCiAgICAgLCBtX3R5cGVQcm9maWxpbmdFbmRPZmZzZXQoY2FjaGVkRXhlY3V0
YWJsZS50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkpCiAgICAgLCBtX3BhcmFtZXRlckNvdW50KGNh
Y2hlZEV4ZWN1dGFibGUucGFyYW1ldGVyQ291bnQoKSkKKyAgICAsIG1fcHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQoY2FjaGVkRXhlY3V0YWJsZS5wcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpKQogICAg
ICwgbV9mZWF0dXJlcyhjYWNoZWRFeGVjdXRhYmxlLmZlYXR1cmVzKCkpCiAgICAgLCBtX3NvdXJj
ZVBhcnNlTW9kZShjYWNoZWRFeGVjdXRhYmxlLnNvdXJjZVBhcnNlTW9kZSgpKQogICAgICwgbV9j
b25zdHJ1Y3RvcktpbmQoY2FjaGVkRXhlY3V0YWJsZS5jb25zdHJ1Y3RvcktpbmQoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCmluZGV4IGI5MWJjYTU5ZDQz
Yy4uNTYzODBlMmZkNDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVD
YWNoZS5jcHAKQEAgLTcxLDEzICs3MSwxMyBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZVVubGlua2Vk
Q29kZUJsb2NrRm9yRnVuY3Rpb25zKFZNJiB2bSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubAogfQog
CiB0ZW1wbGF0ZSA8Y2xhc3MgVW5saW5rZWRDb2RlQmxvY2tUeXBlLCBjbGFzcyBFeGVjdXRhYmxl
VHlwZSA9IFNjcmlwdEV4ZWN1dGFibGU+Ci1VbmxpbmtlZENvZGVCbG9ja1R5cGUqIGdlbmVyYXRl
VW5saW5rZWRDb2RlQmxvY2tJbXBsKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBK
U1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1v
ZGUsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgUGFy
c2VyRXJyb3ImIGVycm9yLCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlLCBEZXJpdmVk
Q29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQsIGNvbnN0IFREWkVudmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclREWiA9IG51bGxwdHIsIGNv
bnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzID0gbnVsbHB0
ciwgRXhlY3V0YWJsZVR5cGUqIGV4ZWN1dGFibGUgPSBudWxscHRyKQorVW5saW5rZWRDb2RlQmxv
Y2tUeXBlKiBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrSW1wbChWTSYgdm0sIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIEpTUGFyc2VyU2Ny
aXB0TW9kZSBzY3JpcHRNb2RlLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2Vu
ZXJhdGlvbk1vZGUsIFBhcnNlckVycm9yJiBlcnJvciwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250
ZXh0VHlwZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fy
cm93RnVuY3Rpb25Db250ZXh0LCBjb25zdCBURFpFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJU
RFogPSBudWxscHRyLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiBwcml2YXRlTmFtZUVu
dmlyb25tZW50ID0gbnVsbHB0ciwgRXhlY3V0YWJsZVR5cGUqIGV4ZWN1dGFibGUgPSBudWxscHRy
KQogewogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5
cGU+OjpSb290Tm9kZSBSb290Tm9kZTsKICAgICBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlv
biA9IGV4ZWN1dGFibGUgJiYgZXhlY3V0YWJsZS0+aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKCk7
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Um9vdE5vZGU+IHJvb3ROb2RlID0gcGFyc2U8Um9vdE5v
ZGU+KAotICAgICAgICB2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1v
ZGU6Ok5vdEJ1aWx0aW4sIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIENhY2hlVHlwZXM8VW5saW5r
ZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJy
b3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZGVyaXZlZENvbnRleHRUeXBlLCBl
dmFsQ29udGV4dFR5cGUsIG51bGxwdHIsIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzLCBudWxscHRy
LCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24pOworICAgICAgICB2bSwgc291cmNlLCBJZGVudGlm
aWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIHN0cmljdE1vZGUsIHNjcmlw
dE1vZGUsIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBTdXBl
ckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6Tm9u
ZSwgZGVyaXZlZENvbnRleHRUeXBlLCBldmFsQ29udGV4dFR5cGUsIG51bGxwdHIsIHByaXZhdGVO
YW1lRW52aXJvbm1lbnQsIG51bGxwdHIsIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbik7CiAKICAg
ICBpZiAoIXJvb3ROb2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTk0LDkgKzk0LDEy
IEBAIFVubGlua2VkQ29kZUJsb2NrVHlwZSogZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ltcGwo
Vk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzCiAgICAgYm9vbCB1c2VzRXZhbCA9IHJvb3ROb2Rl
LT5mZWF0dXJlcygpICYgRXZhbEZlYXR1cmU7CiAgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSByb290
Tm9kZS0+ZmVhdHVyZXMoKSAmIFN0cmljdE1vZGVGZWF0dXJlID8gRUNNQU1vZGU6OnN0cmljdCgp
IDogRUNNQU1vZGU6OnNsb3BweSgpOwogICAgIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyID0gTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5v
OwotICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19zYW1lX3Y8RXhlY3V0YWJsZVR5cGUsIERpcmVj
dEV2YWxFeGVjdXRhYmxlPikKKyAgICBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJh
bmRSZXF1aXJlbWVudCA9IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lOworICAgIGlmIGNv
bnN0ZXhwciAoc3RkOjppc19zYW1lX3Y8RXhlY3V0YWJsZVR5cGUsIERpcmVjdEV2YWxFeGVjdXRh
YmxlPikgewogICAgICAgICBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9IGV4ZWN1dGFibGUt
Pm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCk7Ci0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0
YWJsZUluZm8odXNlc0V2YWwsIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBz
Y3JpcHRNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgQ2FjaGVUeXBlczxVbmxpbmtlZENv
ZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGZhbHNlLCBldmFsQ29udGV4
dFR5cGUpOworICAgICAgICBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9IGV4ZWN1dGFibGUtPnBy
aXZhdGVCcmFuZFJlcXVpcmVtZW50KCk7CisgICAgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1
dGFibGVJbmZvKHVzZXNFdmFsLCBmYWxzZSwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGZhbHNl
LCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIHNjcmlwdE1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVl
ZGVkLCBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwgZGVyaXZl
ZENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgaXNBcnJvd0Z1bmN0aW9u
Q29udGV4dCwgZmFsc2UsIGV2YWxDb250ZXh0VHlwZSk7CiAKICAgICBVbmxpbmtlZENvZGVCbG9j
a1R5cGUqIHVubGlua2VkQ29kZUJsb2NrID0gVW5saW5rZWRDb2RlQmxvY2tUeXBlOjpjcmVhdGUo
dm0sIGV4ZWN1dGFibGVJbmZvLCBjb2RlR2VuZXJhdGlvbk1vZGUpOwogICAgIHVubGlua2VkQ29k
ZUJsb2NrLT5yZWNvcmRQYXJzZShyb290Tm9kZS0+ZmVhdHVyZXMoKSwgcm9vdE5vZGUtPmhhc0Nh
cHR1cmVkVmFyaWFibGVzKCksIGxpbmVDb3VudCwgdW5saW5rZWRFbmRDb2x1bW4pOwpAQCAtMTA4
LDcgKzExMSw3IEBAIFVubGlua2VkQ29kZUJsb2NrVHlwZSogZ2VuZXJhdGVVbmxpbmtlZENvZGVC
bG9ja0ltcGwoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzCiAgICAgVmVjdG9yPENvbXBhY3RU
RFpFbnZpcm9ubWVudE1hcDo6SGFuZGxlPiBwYXJlbnRWYXJpYWJsZXNVbmRlclREWjsKICAgICBp
ZiAodmFyaWFibGVzVW5kZXJURFopCiAgICAgICAgIHBhcmVudFZhcmlhYmxlc1VuZGVyVERaLmFw
cGVuZCh2bS5tX2NvbXBhY3RWYXJpYWJsZU1hcC0+Z2V0KCp2YXJpYWJsZXNVbmRlclREWikpOwot
ICAgIGVycm9yID0gQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKHZtLCByb290Tm9kZS5nZXQo
KSwgc291cmNlLCB1bmxpbmtlZENvZGVCbG9jaywgY29kZUdlbmVyYXRpb25Nb2RlLCBwYXJlbnRW
YXJpYWJsZXNVbmRlclREWiwgZWNtYU1vZGUpOworICAgIGVycm9yID0gQnl0ZWNvZGVHZW5lcmF0
b3I6OmdlbmVyYXRlKHZtLCByb290Tm9kZS5nZXQoKSwgc291cmNlLCB1bmxpbmtlZENvZGVCbG9j
aywgY29kZUdlbmVyYXRpb25Nb2RlLCBwYXJlbnRWYXJpYWJsZXNVbmRlclREWiwgcHJpdmF0ZU5h
bWVFbnZpcm9ubWVudCwgZWNtYU1vZGUpOwogCiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMTcsMTQgKzEyMCwxNCBAQCBVbmxpbmtlZENvZGVC
bG9ja1R5cGUqIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsKFZNJiB2bSwgY29uc3QgU291
cmNlQ29kZSYgcwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgVW5saW5rZWRDb2RlQmxvY2tUeXBlLCBj
bGFzcyBFeGVjdXRhYmxlVHlwZT4KLVVubGlua2VkQ29kZUJsb2NrVHlwZSogZ2VuZXJhdGVVbmxp
bmtlZENvZGVCbG9jayhWTSYgdm0sIEV4ZWN1dGFibGVUeXBlKiBleGVjdXRhYmxlLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2UsIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBKU1BhcnNl
clNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29k
ZUdlbmVyYXRpb25Nb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IsIEV2YWxDb250ZXh0VHlwZSBldmFs
Q29udGV4dFR5cGUsIGNvbnN0IFREWkVudmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclREWiA9IG51
bGxwdHIsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVz
ID0gbnVsbHB0cikKK1VubGlua2VkQ29kZUJsb2NrVHlwZSogZ2VuZXJhdGVVbmxpbmtlZENvZGVC
bG9jayhWTSYgdm0sIEV4ZWN1dGFibGVUeXBlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1v
ZGUgc2NyaXB0TW9kZSwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRp
b25Nb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5
cGUsIGNvbnN0IFREWkVudmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclREWiA9IG51bGxwdHIsIGNv
bnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHByaXZhdGVOYW1lRW52aXJvbm1lbnQgPSBudWxs
cHRyKQogewotICAgIHJldHVybiBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrSW1wbDxVbmxpbmtl
ZENvZGVCbG9ja1R5cGUsIEV4ZWN1dGFibGVUeXBlPih2bSwgc291cmNlLCBzdHJpY3RNb2RlLCBz
Y3JpcHRNb2RlLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVycm9yLCBldmFsQ29udGV4dFR5cGUsIGV4
ZWN1dGFibGUtPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBleGVjdXRhYmxlLT5pc0Fycm93RnVuY3Rp
b25Db250ZXh0KCksIHZhcmlhYmxlc1VuZGVyVERaLCBwYXJlbnRTY29wZVByaXZhdGVOYW1lcywg
ZXhlY3V0YWJsZSk7CisgICAgcmV0dXJuIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsPFVu
bGlua2VkQ29kZUJsb2NrVHlwZSwgRXhlY3V0YWJsZVR5cGU+KHZtLCBzb3VyY2UsIHN0cmljdE1v
ZGUsIHNjcmlwdE1vZGUsIGNvZGVHZW5lcmF0aW9uTW9kZSwgZXJyb3IsIGV2YWxDb250ZXh0VHlw
ZSwgZXhlY3V0YWJsZS0+ZGVyaXZlZENvbnRleHRUeXBlKCksIGV4ZWN1dGFibGUtPmlzQXJyb3dG
dW5jdGlvbkNvbnRleHQoKSwgdmFyaWFibGVzVW5kZXJURFosIHByaXZhdGVOYW1lRW52aXJvbm1l
bnQsIGV4ZWN1dGFibGUpOwogfQogCi1VbmxpbmtlZEV2YWxDb2RlQmxvY2sqIGdlbmVyYXRlVW5s
aW5rZWRDb2RlQmxvY2tGb3JEaXJlY3RFdmFsKFZNJiB2bSwgRGlyZWN0RXZhbEV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJTdHJpY3RNb2Rl
IHN0cmljdE1vZGUsIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBPcHRpb25TZXQ8Q29k
ZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIFBhcnNlckVycm9yJiBlcnJvciwg
RXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgY29uc3QgVERaRW52aXJvbm1lbnQqIHZh
cmlhYmxlc1VuZGVyVERaLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVBy
aXZhdGVOYW1lcykKK1VubGlua2VkRXZhbENvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZENvZGVC
bG9ja0ZvckRpcmVjdEV2YWwoVk0mIHZtLCBEaXJlY3RFdmFsRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9k
ZSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlv
bk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yLCBFdmFsQ29udGV4
dFR5cGUgZXZhbENvbnRleHRUeXBlLCBjb25zdCBURFpFbnZpcm9ubWVudCogdmFyaWFibGVzVW5k
ZXJURFosIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHByaXZhdGVOYW1lRW52aXJvbm1l
bnQpCiB7Ci0gICAgcmV0dXJuIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2s8VW5saW5rZWRFdmFs
Q29kZUJsb2NrPih2bSwgZXhlY3V0YWJsZSwgc291cmNlLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2Rl
LCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVycm9yLCBldmFsQ29udGV4dFR5cGUsIHZhcmlhYmxlc1Vu
ZGVyVERaLCBwYXJlbnRTY29wZVByaXZhdGVOYW1lcyk7CisgICAgcmV0dXJuIGdlbmVyYXRlVW5s
aW5rZWRDb2RlQmxvY2s8VW5saW5rZWRFdmFsQ29kZUJsb2NrPih2bSwgZXhlY3V0YWJsZSwgc291
cmNlLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2RlLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVycm9yLCBl
dmFsQ29udGV4dFR5cGUsIHZhcmlhYmxlc1VuZGVyVERaLCBwcml2YXRlTmFtZUVudmlyb25tZW50
KTsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFVubGlua2VkQ29kZUJsb2NrVHlwZT4KQEAgLTI0OCw3
ICsyNTEsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQ29kZUNhY2hlOjpnZXRVbmxp
bmtlZEdsb2JhbEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYgdgogICAgIC8vIFRoZSBGdW5jdGlvbiBj
b25zdHJ1Y3RvciBvbmx5IGhhcyBhY2Nlc3MgdG8gZ2xvYmFsIHZhcmlhYmxlcywgc28gbm8gdmFy
aWFibGVzIHdpbGwgYmUgdW5kZXIgVERaIHVubGVzcyB0aGV5J3JlCiAgICAgLy8gaW4gdGhlIGds
b2JhbCBsZXhpY2FsIGVudmlyb25tZW50LCB3aGljaCB3ZSBhbHdheXMgVERaIGNoZWNrIGFjY2Vz
c2VzIGZyb20uCiAgICAgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5ID0gY29uc3Ry
dWN0QWJpbGl0eUZvclBhcnNlTW9kZShtZXRhZGF0YS0+cGFyc2VNb2RlKCkpOwotICAgIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBzb3VyY2UsIG1ldGFkYXRhLCBVbmxpbmtlZE5vcm1h
bEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMs
IFdURjo6bnVsbG9wdCwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBOZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplcjo6Tm8pOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlv
bkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBzb3Vy
Y2UsIG1ldGFkYXRhLCBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCBK
U1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBE
ZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObywg
UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmUpOwogCiAgICAgaWYgKCFzb3VyY2UucHJvdmlk
ZXIoKS0+c291cmNlVVJMRGlyZWN0aXZlKCkuaXNOdWxsKCkpCiAgICAgICAgIGZ1bmN0aW9uRXhl
Y3V0YWJsZS0+c2V0U291cmNlVVJMRGlyZWN0aXZlKHNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2VV
UkxEaXJlY3RpdmUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db2RlQ2FjaGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5o
CmluZGV4IDljYzFjYTcwMDQ0Ny4uNjBhNzdkMmFmM2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db2RlQ2FjaGUuaApAQCAtMjU0LDcgKzI1NCw3IEBAIHRlbXBsYXRlIDw+IHN0
cnVjdCBDYWNoZVR5cGVzPFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaz4gewogICAgIHN0
YXRpYyBjb25zdGV4cHIgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9k
ZTo6TW9kdWxlRXZhbHVhdGVNb2RlOwogfTsKIAotVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBnZW5l
cmF0ZVVubGlua2VkQ29kZUJsb2NrRm9yRGlyZWN0RXZhbChWTSYsIERpcmVjdEV2YWxFeGVjdXRh
YmxlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyU3RyaWN0TW9kZSwgSlNQYXJzZXJTY3Jp
cHRNb2RlLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgUGFyc2VyRXJyb3ImLCBFdmFs
Q29udGV4dFR5cGUsIGNvbnN0IFREWkVudmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclREWiwgY29u
c3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVQcml2YXRlTmFtZXMpOworVW5saW5r
ZWRFdmFsQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrRm9yRGlyZWN0RXZhbChW
TSYsIERpcmVjdEV2YWxFeGVjdXRhYmxlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyU3Ry
aWN0TW9kZSwgSlNQYXJzZXJTY3JpcHRNb2RlLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2Rl
PiwgUGFyc2VyRXJyb3ImLCBFdmFsQ29udGV4dFR5cGUsIGNvbnN0IFREWkVudmlyb25tZW50KiB2
YXJpYWJsZXNVbmRlclREWiwgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCopOwogVW5saW5r
ZWRQcm9ncmFtQ29kZUJsb2NrKiByZWN1cnNpdmVseUdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tG
b3JQcm9ncmFtKFZNJiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyU3RyaWN0TW9kZSwgSlNQ
YXJzZXJTY3JpcHRNb2RlLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgUGFyc2VyRXJy
b3ImLCBFdmFsQ29udGV4dFR5cGUpOwogVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBy
ZWN1cnNpdmVseUdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tGb3JNb2R1bGVQcm9ncmFtKFZNJiwg
Y29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyU3RyaWN0TW9kZSwgSlNQYXJzZXJTY3JpcHRNb2Rl
LCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgUGFyc2VyRXJyb3ImLCBFdmFsQ29udGV4
dFR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJl
Y3RFdmFsRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJl
Y3RFdmFsRXhlY3V0YWJsZS5jcHAKaW5kZXggYzdjMjljMDUwMjk2Li5mNmY3OTMwN2RmZTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRh
YmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhl
Y3V0YWJsZS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLURpcmVj
dEV2YWxFeGVjdXRhYmxlKiBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRGVyaXZlZENvbnRl
eHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9v
bCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5
cGUsIGNvbnN0IFREWkVudmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclREWiwgY29uc3QgVmFyaWFi
bGVFbnZpcm9ubWVudCogcHJpdmF0ZU5hbWVzLCBFQ01BTW9kZSBlY21hTW9kZSkKK0RpcmVjdEV2
YWxFeGVjdXRhYmxlKiBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRGVyaXZlZENvbnRleHRU
eXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50LCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVP
cmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlLCBjb25zdCBU
RFpFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFosIGNvbnN0IFByaXZhdGVOYW1lRW52aXJv
bm1lbnQqIHByaXZhdGVOYW1lRW52aXJvbm1lbnQsIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CkBAIC00NCw3ICs0NCw3IEBAIERpcmVjdEV2YWxFeGVjdXRhYmxlKiBE
aXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8qIGV4ZWN1dGFibGUg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxEaXJlY3RFdmFsRXhlY3V0YWJsZT4odm0uaGVh
cCkpIERpcmVjdEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNlLCBlY21hTW9kZS5p
c1N0cmljdCgpLCBkZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
LCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxD
b250ZXh0VHlwZSk7CisgICAgYXV0byogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPERpcmVjdEV2YWxFeGVjdXRhYmxlPih2bS5oZWFwKSkgRGlyZWN0RXZhbEV4ZWN1dGFi
bGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGVjbWFNb2RlLmlzU3RyaWN0KCksIGRlcml2ZWRDb250
ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFuZFJlcXVpcmVt
ZW50LCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2
YWxDb250ZXh0VHlwZSk7CiAgICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogCiAg
ICAgUGFyc2VyRXJyb3IgZXJyb3I7CkBAIC01Miw3ICs1Miw3IEBAIERpcmVjdEV2YWxFeGVjdXRh
YmxlKiBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsCiAgICAgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25N
b2RlID0gZ2xvYmFsT2JqZWN0LT5kZWZhdWx0Q29kZUdlbmVyYXRpb25Nb2RlKCk7CiAKICAgICAv
LyBXZSBkb24ndCBib3RoZXIgd2l0aCBDb2RlQ2FjaGUgaGVyZSBiZWNhdXNlIGRpcmVjdCBldmFs
IHVzZXMgYSBzcGVjaWFsaXplZCBEaXJlY3RFdmFsQ29kZUNhY2hlLgotICAgIFVubGlua2VkRXZh
bENvZGVCbG9jayogdW5saW5rZWRFdmFsQ29kZSA9IGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tG
b3JEaXJlY3RFdmFsKHZtLCBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT5zb3VyY2UoKSwgc3RyaWN0
TW9kZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVy
cm9yLCBldmFsQ29udGV4dFR5cGUsIHZhcmlhYmxlc1VuZGVyVERaLCBwcml2YXRlTmFtZXMpOwor
ICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogdW5saW5rZWRFdmFsQ29kZSA9IGdlbmVyYXRlVW5s
aW5rZWRDb2RlQmxvY2tGb3JEaXJlY3RFdmFsKHZtLCBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT5z
b3VyY2UoKSwgc3RyaWN0TW9kZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBjb2RlR2Vu
ZXJhdGlvbk1vZGUsIGVycm9yLCBldmFsQ29udGV4dFR5cGUsIHZhcmlhYmxlc1VuZGVyVERaLCBw
cml2YXRlTmFtZUVudmlyb25tZW50KTsKIAogICAgIGlmIChnbG9iYWxPYmplY3QtPmhhc0RlYnVn
Z2VyKCkpCiAgICAgICAgIGdsb2JhbE9iamVjdC0+ZGVidWdnZXIoKS0+c291cmNlUGFyc2VkKGds
b2JhbE9iamVjdCwgZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKSwgZXJyb3IubGluZSgp
LCBlcnJvci5tZXNzYWdlKCkpOwpAQCAtNjcsMTAgKzY3LDEwIEBAIERpcmVjdEV2YWxFeGVjdXRh
YmxlKiBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsCiAgICAgcmV0dXJuIGV4ZWN1dGFibGU7CiB9CiAKLURpcmVjdEV2YWxFeGVjdXRhYmxl
OjpEaXJlY3RFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4
dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29s
IGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlw
ZSkKLSAgICA6IEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNlLCBpblN0cmljdENv
bnRleHQsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgaXNJbnNp
ZGVPcmRpbmFyeUZ1bmN0aW9uLCBldmFsQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyKQorRGlyZWN0RXZhbEV4ZWN1dGFibGU6OkRpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBp
blN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2
YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCwgYm9vbCBpc0Fycm93
RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZhbENvbnRl
eHRUeXBlIGV2YWxDb250ZXh0VHlwZSkKKyAgICA6IEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVj
dCwgc291cmNlLCBpblN0cmljdENvbnRleHQsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1
bmN0aW9uQ29udGV4dCwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBldmFsQ29udGV4dFR5cGUs
IG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCkKIHsK
LSAgICBBU1NFUlQobmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPT0gTmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXI6Ok5vIHx8IGRlcml2ZWRDb250ZXh0VHlwZSA9PSBEZXJpdmVkQ29udGV4dFR5
cGU6OkRlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQpOworICAgIEFTU0VSVCgobmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIgPT0gTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vICYmIHByaXZh
dGVCcmFuZFJlcXVpcmVtZW50ID09IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lKSB8fCBk
ZXJpdmVkQ29udGV4dFR5cGUgPT0gRGVyaXZlZENvbnRleHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0
b3JDb250ZXh0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuaAppbmRleCA4YzUyY2I2
ODFlOGQuLjM2MmNlZDhkN2IxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oCkBAIC0zMSw5ICszMSw5IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiBjbGFzcyBEaXJlY3RFdmFsRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBFdmFs
RXhlY3V0YWJsZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIERpcmVjdEV2YWxFeGVjdXRhYmxlKiBj
cmVhdGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgRGVyaXZlZENvbnRleHRU
eXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250
ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBlLCBjb25z
dCBURFpFbnZpcm9ubWVudCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIGNvbnN0IFZhcmlhYmxl
RW52aXJvbm1lbnQqIHByaXZhdGVOYW1lcywgRUNNQU1vZGUpOworICAgIHN0YXRpYyBEaXJlY3RF
dmFsRXhlY3V0YWJsZSogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYs
IERlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVC
cmFuZFJlcXVpcmVtZW50LCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNp
ZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUsIGNvbnN0IFREWkVudmlyb25tZW50
KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCos
IEVDTUFNb2RlKTsKIHByaXZhdGU6Ci0gICAgRGlyZWN0RXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxP
YmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRD
b250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0
aW9uQ29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlw
ZSk7CisgICAgRGlyZWN0RXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgYm9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29sIGlzQXJy
b3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29u
dGV4dFR5cGUpOwogfTsKIAogc3RhdGljX2Fzc2VydChzaXplb2YoRGlyZWN0RXZhbEV4ZWN1dGFi
bGUpID09IHNpemVvZihFdmFsRXhlY3V0YWJsZSksICIiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmNwcAppbmRleCAyZWMxMzdhNzM2MjIuLjBi
M2Q0MTY0YWE2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZh
bEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxF
eGVjdXRhYmxlLmNwcApAQCAtMzIsOSArMzIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0
IENsYXNzSW5mbyBFdmFsRXhlY3V0YWJsZTo6c19pbmZvID0geyAiRXZhbEV4ZWN1dGFibGUiLCAm
QmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEV2YWxF
eGVjdXRhYmxlKSB9OwogCi1FdmFsRXhlY3V0YWJsZTo6RXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGluU3Ry
aWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBp
c0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZh
bENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIg
bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpCitFdmFsRXhlY3V0YWJsZTo6RXZhbEV4ZWN1dGFi
bGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNl
LCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0
VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlG
dW5jdGlvbiwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVp
cmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KQogICAgIDogQmFzZShnbG9iYWxPYmplY3Qt
PnZtKCkuZXZhbEV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIGdsb2JhbE9iamVjdC0+dm0oKSwg
c291cmNlLCBpblN0cmljdENvbnRleHQsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0
aW9uQ29udGV4dCwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBldmFsQ29udGV4dFR5cGUsIE5v
SW50cmluc2ljKQogICAgICwgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcihzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4obmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpKQorICAgICwgbV9wcml2YXRl
QnJhbmRSZXF1aXJlbWVudChzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocHJpdmF0ZUJyYW5kUmVxdWly
ZW1lbnQpKQogewogICAgIEFTU0VSVChzb3VyY2UucHJvdmlkZXIoKS0+c291cmNlVHlwZSgpID09
IFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaAppbmRleCA2N2U2OWM4NjI5YmEuLjUy
NjAyNTFhY2VlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZh
bEV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhl
Y3V0YWJsZS5oCkBAIC02MiwxMyArNjIsMTQgQEAgcHVibGljOgogCiAgICAgREVDTEFSRV9JTkZP
OwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBF
eGVjdXRhYmxlSW5mbyh1c2VzRXZhbCgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6
Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRl
ZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIG5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgZmFs
c2UsIGV2YWxDb250ZXh0VHlwZSgpKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJ
bmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8odXNlc0V2YWwoKSwgZmFsc2UsIFBy
aXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25l
LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBT
b3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUoKSwgbmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwg
ZXZhbENvbnRleHRUeXBlKCkpOyB9CiAKICAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMoKSB7IHJl
dHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtVmFyaWFibGVzKCk7IH0KICAgICB1bnNp
Z25lZCBudW1GdW5jdGlvbkhvaXN0aW5nQ2FuZGlkYXRlcygpIHsgcmV0dXJuIG1fdW5saW5rZWRF
dmFsQ29kZUJsb2NrLT5udW1GdW5jdGlvbkhvaXN0aW5nQ2FuZGlkYXRlcygpOyB9CiAgICAgdW5z
aWduZWQgbnVtVG9wTGV2ZWxGdW5jdGlvbkRlY2xzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxD
b2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpOyB9CiAgICAgYm9vbCBhbGxvd0RpcmVj
dEV2YWxDYWNoZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5hbGxv
d0RpcmVjdEV2YWxDYWNoZSgpOyB9CiAgICAgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxOZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplcj4obV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcik7IH0K
KyAgICBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFByaXZhdGVCcmFuZFJlcXVpcmVtZW50PihtX3ByaXZh
dGVCcmFuZFJlcXVpcmVtZW50KTsgfQogICAgIFRlbXBsYXRlT2JqZWN0TWFwJiBlbnN1cmVUZW1w
bGF0ZU9iamVjdE1hcChWTSYpOwogCiBwcm90ZWN0ZWQ6CkBAIC03NiwxMSArNzcsMTIgQEAgcHJv
dGVjdGVkOgogICAgIGZyaWVuZCBjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOwogCiAgICAgdXNpbmcg
QmFzZTo6ZmluaXNoQ3JlYXRpb247Ci0gICAgRXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmplY3Qq
LCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0
VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlG
dW5jdGlvbiwgRXZhbENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcik7Cisg
ICAgRXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9v
bCBpblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rp
b25Db250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBl
LCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOwog
CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwog
CiAgICAgdW5zaWduZWQgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA6IDE7CisgICAgdW5z
aWduZWQgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA6IDE7CiAKICAgICBXcml0ZUJhcnJpZXI8
RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZT4gbV9ldmFsQ29kZUJsb2NrOwogICAgIFdyaXRlQmFy
cmllcjxVbmxpbmtlZEV2YWxDb2RlQmxvY2s+IG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcApp
bmRleCA0MTRlN2JkZjc3YWIuLjdhMjkxMGU4ODdmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKQEAgLTMyNiw3ICszMjYsNyBA
QCBKU09iamVjdCogY3JlYXRlVERaRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
IAogSlNPYmplY3QqIGNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIG1ha2VTdHJpbmcoIkNhbm5vdCBhY2Nlc3MgaW52YWxpZCBwcml2YXRlIGZpZWxkIiksIGRl
ZmF1bHRTb3VyY2VBcHBlbmRlciwgVHlwZU5vdGhpbmcpOworICAgIHJldHVybiBjcmVhdGVUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKCJJbnZhbGlkIHByaXZhdGUgbWVtYmVyIGFj
Y2VzcyIpLCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIFR5cGVOb3RoaW5nKTsKIH0KIAogSlNPYmpl
Y3QqIGNyZWF0ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGly
ZWN0RXZhbEV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5k
aXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKaW5kZXggOThkN2UyYjgzYTI3Li43NDk4MjA1MDE4Y2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4
ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0
RXZhbEV4ZWN1dGFibGUuY3BwCkBAIC02OSw3ICs2OSw3IEBAIEluZGlyZWN0RXZhbEV4ZWN1dGFi
bGUqIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqCiBjb25zdGV4cHIgYm9vbCBpblN0cmljdENvbnRleHQgPSBmYWxzZTsKIGNvbnN0ZXhwciBi
b29sIGluc2lkZU9yZGluYXJ5RnVuY3Rpb24gPSBmYWxzZTsKIEluZGlyZWN0RXZhbEV4ZWN1dGFi
bGU6OkluZGlyZWN0RXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRl
eHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFs
Q29udGV4dFR5cGUpCi0gICAgOiBFdmFsRXhlY3V0YWJsZShnbG9iYWxPYmplY3QsIHNvdXJjZSwg
aW5TdHJpY3RDb250ZXh0LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQsIGluc2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXI6Ok5vKQorICAgIDogRXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBz
b3VyY2UsIGluU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rp
b25Db250ZXh0LCBpbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBldmFsQ29udGV4dFR5cGUsIE5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyOjpObywgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmUp
CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2Nv
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKaW5kZXgg
NGZiMjRhMjgyNzMzLi5mYzc3NDJlMjMwODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU2NvcGUuY3BwCkBAIC0zMjEsNyArMzIxLDcgQEAgUmVzb2x2ZU9wIEpTU2NvcGU6OmFi
c3RyYWN0UmVzb2x2ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBzaXplX3QgZGVwdGhP
ZmYKICAgICByZXR1cm4gb3A7CiB9CiAKLXZvaWQgSlNTY29wZTo6Y29sbGVjdENsb3N1cmVWYXJp
YWJsZXNVbmRlclREWihKU1Njb3BlKiBzY29wZSwgVERaRW52aXJvbm1lbnQmIHJlc3VsdCwgVmFy
aWFibGVFbnZpcm9ubWVudCYgcHJpdmF0ZU5hbWVzKQordm9pZCBKU1Njb3BlOjpjb2xsZWN0Q2xv
c3VyZVZhcmlhYmxlc1VuZGVyVERaKEpTU2NvcGUqIHNjb3BlLCBURFpFbnZpcm9ubWVudCYgcmVz
dWx0LCBQcml2YXRlTmFtZUVudmlyb25tZW50JiBwcml2YXRlTmFtZUVudmlyb25tZW50KQogewog
ICAgIGZvciAoOyBzY29wZTsgc2NvcGUgPSBzY29wZS0+bmV4dCgpKSB7CiAgICAgICAgIGlmICgh
c2NvcGUtPmlzTGV4aWNhbFNjb3BlKCkgJiYgIXNjb3BlLT5pc0NhdGNoU2NvcGUoKSkKQEAgLTM0
MCw4ICszNDAsOSBAQCB2b2lkIEpTU2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJU
RFooSlNTY29wZSogc2NvcGUsIFREWkVudmlyb25tZW50JiByZQogICAgICAgICAgICAgcmVzdWx0
LmFkZChpdGVyLT5rZXkpOwogCiAgICAgICAgIGlmIChzeW1ib2xUYWJsZS0+aGFzUHJpdmF0ZU5h
bWVzKCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byBuYW1lIDogc3ltYm9sVGFibGUtPnByaXZh
dGVOYW1lcygpKQotICAgICAgICAgICAgICAgIHByaXZhdGVOYW1lcy51c2VQcml2YXRlTmFtZShu
YW1lKTsgICAgCisgICAgICAgICAgICBhdXRvIHByaXZhdGVOYW1lcyA9IHN5bWJvbFRhYmxlLT5w
cml2YXRlTmFtZXMoKTsKKyAgICAgICAgICAgIGZvciAoYXV0byBlbmQgPSBwcml2YXRlTmFtZXMu
ZW5kKCksIGl0ZXIgPSBwcml2YXRlTmFtZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikK
KyAgICAgICAgICAgICAgICBwcml2YXRlTmFtZUVudmlyb25tZW50LmFkZChpdGVyLT5rZXksIGl0
ZXItPnZhbHVlKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU2NvcGUuaAppbmRleCA3YTNjMjQxNTExYjguLmU0Y2QwYmIzMDk3ZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaApAQCAtMjcsMTIgKzI3LDEyIEBACiAKICNp
bmNsdWRlICJHZXRQdXRJbmZvLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJW
YXJpYWJsZUVudmlyb25tZW50LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBTY29wZUNo
YWluSXRlcmF0b3I7CiBjbGFzcyBTeW1ib2xUYWJsZTsKLWNsYXNzIFZhcmlhYmxlRW52aXJvbm1l
bnQ7CiBjbGFzcyBXYXRjaHBvaW50U2V0OwogCiB1c2luZyBURFpFbnZpcm9ubWVudCA9IEhhc2hT
ZXQ8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgSWRlbnRpZmllclJlcEhhc2g+OwpAQCAtNjIs
NyArNjIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaGFzQ29uc3RhbnRTY29wZShSZXNv
bHZlVHlwZSk7CiAgICAgc3RhdGljIEpTU2NvcGUqIGNvbnN0YW50U2NvcGVGb3JDb2RlQmxvY2so
UmVzb2x2ZVR5cGUsIENvZGVCbG9jayopOwogCi0gICAgc3RhdGljIHZvaWQgY29sbGVjdENsb3N1
cmVWYXJpYWJsZXNVbmRlclREWihKU1Njb3BlKiwgVERaRW52aXJvbm1lbnQmIHJlc3VsdCwgVmFy
aWFibGVFbnZpcm9ubWVudCYgcHJpdmF0ZU5hbWVzKTsKKyAgICBzdGF0aWMgdm9pZCBjb2xsZWN0
Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKEpTU2NvcGUqLCBURFpFbnZpcm9ubWVudCYgcmVzdWx0
LCBQcml2YXRlTmFtZUVudmlyb25tZW50Jik7CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxk
cmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oCmluZGV4IDA5OWQ4OTlh
ZDVlNi4uYjg1OTE0ZmY4ZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVi
bGljOgogCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJs
ZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1c2VzRXZhbCgpLCBmYWxzZSwg
ZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUs
IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUV2YWx1YXRl
TW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpO
bywgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25l
KTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4g
RXhlY3V0YWJsZUluZm8odXNlc0V2YWwoKSwgZmFsc2UsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50
OjpOb25lLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6
Ok1vZHVsZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxl
RXZhbHVhdGVNb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUoKSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXI6Ok5vLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlLCBFdmFsQ29udGV4dFR5
cGU6Ok5vbmUpOyB9CiAKICAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlu
a2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygpIHsgcmV0dXJuIG1fdW5saW5rZWRNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9ucy5jcHAKaW5kZXggOTU4OTg5YzkyM2E0Li41NmQ1ZmU0ZDhiYzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCkBAIC01MzcsNiArNTM3LDkgQEAgdm9pZCBP
cHRpb25zOjpyZWNvbXB1dGVEZXBlbmRlbnRPcHRpb25zKCkKICAgICAgICAgT3B0aW9uczo6cmFu
ZG9tSW50ZWdyaXR5QXVkaXRSYXRlKCkgPSAwOwogICAgIGVsc2UgaWYgKE9wdGlvbnM6OnJhbmRv
bUludGVncml0eUF1ZGl0UmF0ZSgpID4gMS4wKQogICAgICAgICBPcHRpb25zOjpyYW5kb21JbnRl
Z3JpdHlBdWRpdFJhdGUoKSA9IDEuMDsKKyAgICAKKyAgICBpZiAoT3B0aW9uczo6dXNlUHJpdmF0
ZU1ldGhvZHMoKSkKKyAgICAgICAgT3B0aW9uczo6dXNlUHJpdmF0ZUNsYXNzRmllbGRzKCkgPSB0
cnVlOwogCiAgICAgaWYgKCFPcHRpb25zOjphbGxvd1Vuc3VwcG9ydGVkVGllcnMoKSkgewogI2Rl
ZmluZSBESVNBQkxFX1RJRVJTKG9wdGlvbiwgZmxhZ3MsIC4uLikgZG8geyBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRleCAyMjVlMjI0ODNkMDkuLjhk
OGVhM2Q3ZmUzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlz
dC5oCkBAIC01MTYsNiArNTE2LDcgQEAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjYW5Vc2VKSVRD
YWdlKCk7CiAgICAgdihCb29sLCBleHBvc2VQcm9maWxlcnNPbkdsb2JhbE9iamVjdCwgZmFsc2Us
IE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgZXhwb3NlIGZ1bmN0aW9ucyB0byBlbmFibGUvZGlz
YWJsZSBib3RoIHRoZSBzYW1wbGluZyBwcm9maWxlciBhbmQgdGhlIHN1cGVyIHNhbXBsZXIiKSBc
CiAgICAgdihCb29sLCBhbGxvd1Vuc3VwcG9ydGVkVGllcnMsIGZhbHNlLCBOb3JtYWwsICJJZiB0
cnVlLCB3ZSB3aWxsIG5vdCBkaXNhYmxlIERGRyBvciBGVEwgd2hlbiBhbiBleHBlcmltZW50YWwg
ZmVhdHVyZSBpcyBlbmFibGVkLiIpIFwKICAgICB2KEJvb2wsIHVzZVByaXZhdGVDbGFzc0ZpZWxk
cywgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIHRoZSBwYXJzZXIgd2lsbCB1bmRlcnN0YW5kIHBy
aXZhdGUgZGF0YSBmaWVsZHMgaW5zaWRlIGNsYXNzZXMuIikgXAorICAgIHYoQm9vbCwgdXNlUHJp
dmF0ZU1ldGhvZHMsIGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCB0aGUgcGFyc2VyIHdpbGwgdW5k
ZXJzdGFuZCBwcml2YXRlIG1ldGhvZHMgaW5zaWRlIGNsYXNzZXMuIikgXAogICAgIHYoQm9vbCwg
cmV0dXJuRWFybHlGcm9tSW5maW5pdGVMb29wc0ZvckZ1enppbmcsIGZhbHNlLCBOb3JtYWwsIG51
bGxwdHIpIFwKICAgICB2KFNpemUsIGVhcmx5UmV0dXJuRnJvbUluZmluaXRlTG9vcHNMaW1pdCwg
MTMwMDAwMDAwMCwgTm9ybWFsLCAiV2hlbiByZXR1cm5FYXJseUZyb21JbmZpbml0ZUxvb3BzRm9y
RnV6emluZyBpcyB0cnVlLCB0aGlzIGRldGVybWluZXMgdGhlIG51bWJlciBvZiBleGVjdXRpb25z
IGEgbG9vcCBjYW4gcnVuIGZvciBiZWZvcmUganVzdCByZXR1cm5pbmcuIFRoaXMgaXMgaGVscGZ1
bCBmb3IgdGhlIGZ1enplciBzbyBpdCBkb2Vzbid0IGdldCBzdHVjayBpbiBpbmZpbml0ZSBsb29w
cy4iKSBcCiAgICAgdihCb29sLCB1c2VMSUNNRnV6emluZywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0
cikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4
ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRh
YmxlLmgKaW5kZXggYjg3MTVhYTcyYmJjLi45NDk3NjMxMjA1Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaApAQCAtNzEsNyArNzEs
NyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIEV4ZWN1dGFi
bGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8odXNl
c0V2YWwoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2Ny
aXB0TW9kZTo6Q2xhc3NpYywgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9k
ZTo6UHJvZ3JhbU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBOZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplcjo6Tm8sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgZmFsc2UsIEV2YWxDb250ZXh0
VHlwZTo6Tm9uZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0
IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGZhbHNlLCBQcml2YXRlQnJhbmRS
ZXF1aXJlbWVudDo6Tm9uZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJT
Y3JpcHRNb2RlOjpDbGFzc2ljLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VN
b2RlOjpQcm9ncmFtTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIE5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyOjpObywgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgRXZhbENvbnRl
eHRUeXBlOjpOb25lKTsgfQogCiAgICAgVGVtcGxhdGVPYmplY3RNYXAmIGVuc3VyZVRlbXBsYXRl
T2JqZWN0TWFwKFZNJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N5bWJvbFRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJv
bFRhYmxlLmNwcAppbmRleCAxNjRjYTZkNDMxMGUuLmZiNDYwMDFiYWVkMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcApAQCAtMTg0LDcgKzE4NCw3
IEBAIFN5bWJvbFRhYmxlKiBTeW1ib2xUYWJsZTo6Y2xvbmVTY29wZVBhcnQoVk0mIHZtKQogCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGZvciAoYXV0byBuYW1lIDogbV9yYXJlRGF0YS0+bV9wcml2
YXRlTmFtZXMpCi0gICAgICAgICAgICAgICAgcmVzdWx0LT5tX3JhcmVEYXRhLT5tX3ByaXZhdGVO
YW1lcy5hZGQobmFtZSk7CisgICAgICAgICAgICAgICAgcmVzdWx0LT5tX3JhcmVEYXRhLT5tX3By
aXZhdGVOYW1lcy5hZGQobmFtZS5rZXksIG5hbWUudmFsdWUpOwogICAgICAgICB9CiAgICAgfQog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFi
bGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKaW5kZXgg
NTlhNzIzMDVkM2E3Li5hNTM4MWNjYmVlMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3ltYm9sVGFibGUuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIlNjb3BlZEFy
Z3VtZW50c1RhYmxlLmgiCiAjaW5jbHVkZSAiVHlwZUxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiVmFy
T2Zmc2V0LmgiCisjaW5jbHVkZSAiVmFyaWFibGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIldh
dGNocG9pbnQuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMu
aD4KQEAgLTQ1MCw4ICs0NTEsNyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0
cjxVbmlxdWVkU3RyaW5nSW1wbD4sIFJlZlB0cjxUeXBlU2V0PiwgSWRlbnRpZmllclJlcEhhc2g+
IFVuaXF1ZVR5cGVTZXRNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFZhck9mZnNldCwgUmVmUHRy
PFVuaXF1ZWRTdHJpbmdJbXBsPj4gT2Zmc2V0VG9WYXJpYWJsZU1hcDsKICAgICB0eXBlZGVmIFZl
Y3RvcjxTeW1ib2xUYWJsZUVudHJ5Kj4gTG9jYWxUb0VudHJ5VmVjOwotICAgIHR5cGVkZWYgSGFz
aFNldDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBJZGVudGlmaWVyUmVwSGFzaD4gUHJpdmF0
ZU5hbWVTZXQ7Ci0gICAgdHlwZWRlZiBXVEY6Okl0ZXJhdG9yUmFuZ2U8dHlwZW5hbWUgUHJpdmF0
ZU5hbWVTZXQ6Oml0ZXJhdG9yPiBQcml2YXRlTmFtZUl0ZXJhdG9yUmFuZ2U7CisgICAgdHlwZWRl
ZiBXVEY6Okl0ZXJhdG9yUmFuZ2U8dHlwZW5hbWUgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudDo6aXRl
cmF0b3I+IFByaXZhdGVOYW1lSXRlcmF0b3JSYW5nZTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKQEAgLTYwNSwxNCArNjA1LDE0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIG1ha2VJdGVyYXRvclJhbmdlKG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmJlZ2luKCks
IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmVuZCgpKTsKICAgICB9CiAKLSAgICB2b2lkIGFk
ZFByaXZhdGVOYW1lKFVuaXF1ZWRTdHJpbmdJbXBsKiBrZXkpCisgICAgdm9pZCBhZGRQcml2YXRl
TmFtZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBrZXksIFByaXZhdGVOYW1lRW50
cnkgdmFsdWUpCiAgICAgewogICAgICAgICBBU1NFUlQoa2V5ICYmICFrZXktPmlzU3ltYm9sKCkp
OwogICAgICAgICBpZiAoIW1fcmFyZURhdGEpCiAgICAgICAgICAgICBtX3JhcmVEYXRhID0gV1RG
OjptYWtlVW5pcXVlPFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7CiAKLSAgICAgICAgQVNTRVJUKCFt
X3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5jb250YWlucyhrZXkpKTsKLSAgICAgICAgbV9yYXJl
RGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKGtleSk7CisgICAgICAgIEFTU0VSVChtX3JhcmVEYXRh
LT5tX3ByaXZhdGVOYW1lcy5maW5kKGtleSkgPT0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMu
ZW5kKCkpOworICAgICAgICBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoa2V5LCB2YWx1
ZSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW50cnk+CkBAIC03NTYsNyArNzU2
LDcgQEAgcHVibGljOgogICAgICAgICBPZmZzZXRUb1ZhcmlhYmxlTWFwIG1fb2Zmc2V0VG9WYXJp
YWJsZU1hcDsKICAgICAgICAgVW5pcXVlVHlwZVNldE1hcCBtX3VuaXF1ZVR5cGVTZXRNYXA7CiAg
ICAgICAgIFdyaXRlQmFycmllcjxDb2RlQmxvY2s+IG1fY29kZUJsb2NrOwotICAgICAgICBQcml2
YXRlTmFtZVNldCBtX3ByaXZhdGVOYW1lczsKKyAgICAgICAgUHJpdmF0ZU5hbWVFbnZpcm9ubWVu
dCBtX3ByaXZhdGVOYW1lczsKICAgICB9OwogCiBwcml2YXRlOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413857</attachid>
            <date>2020-11-11 13:15:41 -0800</date>
            <delta_ts>2020-12-09 11:45:36 -0800</delta_ts>
            <desc>WIP - Patch</desc>
            <filename>private-methods.diff</filename>
            <type>text/plain</type>
            <size>181311</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
MmE0ZjlhNjliN2Y4Li40N2UzYWU5OTdmYjggMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMTAtMjAgIENh
aW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgorCisgICAgICAgIFtFU05leHRdIEltcGxl
bWVudCBwcml2YXRlIG1ldGhvZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5NDQzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVy
LWNhbGwtZnJvbS1hcnJvdy1mdW5jdGlvbi5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3By
aXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVyLWNhbGwtZnJvbS1ldmFsLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2QtYnJhbmQtY2hlY2suanM6IEFkZGVk
LgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZC1jb21wYXJpc29uLmpzOiBBZGRlZC4K
KyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2QtZXh0ZW5kcy1icmFuZC1jaGVjay5qczog
QWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWdldC1hbmQtY2FsbC5qczog
QWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9kLW5lc3RlZC1jbGFzcy5qczog
QWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1vbi1wcm94eS5qczogQWRk
ZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWRpcmVjdC1l
dmFsLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1sOgorCiAyMDIwLTEx
LTAzICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBiYWNr
IHRoZSByZW1vdmVkIGFzc2VydGlvbiBmcm9tIHIyNjkzMzggYW5kIGFkZCBhIHRlc3QKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVy
LWNhbGwtZnJvbS1hcnJvdy1mdW5jdGlvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYnJh
bmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVyLWNhbGwtZnJvbS1hcnJvdy1mdW5jdGlvbi5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjdlMjljN2JjMTFjMwotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVy
LXN1cGVyLWNhbGwtZnJvbS1hcnJvdy1mdW5jdGlvbi5qcwpAQCAtMCwwICsxLDI3IEBACisvL0Ag
cmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFz
c2VydChhLCBlKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigi
RXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7Cit9CisKK2NsYXNzIEEge30KKwor
Y2xhc3MgQyBleHRlbmRzIEEgeworICAgICNtZXRob2QoKSB7CisgICAgICAgIHJldHVybiAiYmFz
ZSI7CisgICAgfQorCisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIGxldCBpbml0ID0gKCkg
PT4gc3VwZXIoKTsKKyAgICAgICAgaW5pdCgpOworICAgIH0KKworICAgIGJhc2VBY2Nlc3MoKSB7
CisgICAgICAgIHJldHVybiB0aGlzLiNtZXRob2QoKTsKKyAgICB9Cit9CisKK2xldCBjID0gbmV3
IEMoKTsKK2Fzc2VydChjLmJhc2VBY2Nlc3MoKSwgImJhc2UiKTsKKwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvcHJpdmF0ZS1icmFuZC1pbnN0YWxsZWQtYWZ0ZXItc3VwZXItY2FsbC1mcm9t
LWV2YWwuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLWJyYW5kLWluc3RhbGxlZC1hZnRlci1z
dXBlci1jYWxsLWZyb20tZXZhbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjllMTZlZTM4ZTM0MQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3By
aXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVyLWNhbGwtZnJvbS1ldmFsLmpzCkBAIC0w
LDAgKzEsMjYgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVl
IikKKworZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKK30K
KworY2xhc3MgQSB7fQorCitjbGFzcyBDIGV4dGVuZHMgQSB7CisgICAgI21ldGhvZCgpIHsKKyAg
ICAgICAgcmV0dXJuICJiYXNlIjsKKyAgICB9CisKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAg
ICAgZXZhbCgic3VwZXIoKSIpOworICAgIH0KKworICAgIGJhc2VBY2Nlc3MoKSB7CisgICAgICAg
IHJldHVybiB0aGlzLiNtZXRob2QoKTsKKyAgICB9Cit9CisKK2xldCBjID0gbmV3IEMoKTsKK2Fz
c2VydChjLmJhc2VBY2Nlc3MoKSwgImJhc2UiKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvcHJpdmF0ZS1tZXRob2QtYnJhbmQtY2hlY2suanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRl
LW1ldGhvZC1icmFuZC1jaGVjay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjZhNTE3NWEzZjViYwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3By
aXZhdGUtbWV0aG9kLWJyYW5kLWNoZWNrLmpzCkBAIC0wLDAgKzEsMzMgQEAKKy8vQCByZXF1aXJl
T3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGEs
IGUpIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKK30KKworY2xhc3MgQyB7CisgICAgI20oKSB7
CisgICAgICAgIHJldHVybiB0aGlzLiNmOworICAgIH0KKworICAgIG1ldGhvZCgpIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuI20oKTsKKyAgICB9CisKKyAgICAjZiA9IDQ7Cit9CisKK2xldCBjID0g
bmV3IEMoKTsKK2Fzc2VydChjLm1ldGhvZCgpLCA0KTsKKwordHJ5IHsKKyAgICBjbGFzcyBDIHsK
KyAgICAgICAgI20oKSB7IHJldHVybiAzOyB9CisgICAgfQorCisgICAgbGV0IG8gPSBuZXcgQygp
OworICAgIGMubWV0aG9kLmNhbGwobyk7Cit9IGNhdGNoIChlKSB7CisgICAgYXNzZXJ0KGUgaW5z
dGFuY2VvZiBUeXBlRXJyb3IsIHRydWUpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9wcml2YXRlLW1ldGhvZC1jaGVjay1zdHJ1Y3R1cmUtbWlzcy5qcyBiL0pTVGVzdHMvc3RyZXNz
L3ByaXZhdGUtbWV0aG9kLWNoZWNrLXN0cnVjdHVyZS1taXNzLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNTgwZDdmN2VlZTcwCi0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtY2hlY2stc3RydWN0dXJlLW1pc3MuanMKQEAg
LTAsMCArMSw1MSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRy
dWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsK
KyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6
ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfSwKKyAgICBzaG91bGRUaHJvdzogZnVu
Y3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsK
KyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3
RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhy
ZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0
aW9uKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6
ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQg
ZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2xldCBpID0gMDsKKwor
Y2xhc3MgQyB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIGlmIChpID49IDUwMDApCisg
ICAgICAgICAgICB0aGlzLnByb3BlcnR5ID0gaTsKKyAgICB9CisKKyAgICAjbWV0aG9kKHYpIHsK
KyAgICAgICAgdGhpcy5maWVsZCA9IHY7CisgICAgfQorCisgICAgYWNjZXNzKHYpIHsKKyAgICAg
ICAgdGhpcy4jbWV0aG9kKHYpOworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLmFjY2Vz
cyk7CisKK2xldCBjID0gbmV3IEMoKTsKK2ZvciAoOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGMu
YWNjZXNzKCdmb28nICsgaSk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmZpZWxkLCAnZm9vJyAr
IGkpOworfQorCithc3NlcnQuc2hvdWxkVGhyb3coVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAg
ICBjLmFjY2Vzcy5jYWxsKHt9LCAndGVzdCcpOworfSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL3ByaXZhdGUtbWV0aG9kLWNvbXBhcmlzb24uanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2
YXRlLW1ldGhvZC1jb21wYXJpc29uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uNDZkYTc4NjdiYTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
cHJpdmF0ZS1tZXRob2QtY29tcGFyaXNvbi5qcwpAQCAtMCwwICsxLDMxIEBACisvL0AgcmVxdWly
ZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7Cisg
ICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAobGhzLCByaHMpIHsKKyAgICAgICAgaWYgKGxocyAhPT0g
cmhzKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGxocyArICIg
YnVnIGdvdDogIiArIHJocyk7CisgICAgfSwKKworICAgIHRocm93czogZnVuY3Rpb24gKGV4cGVj
dGVkRXJyb3IsIG9wKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgb3AoKTsKKyAgICAgICAg
fSBjYXRjaChlKSB7CisgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgZXhwZWN0ZWRFcnJv
cikpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzog
IiArIGV4cGVjdGVkRXJyb3IgKyAiIGJ1dCB0aHJldzogIiArIGUpOworICAgICAgICB9CisgICAg
fQorfTsKKworY2xhc3MgQyB7CisgICAgI20oKSB7IHJldHVybiAndGVzdDI2Mic7IH0KKworICAg
IGdldFByaXZhdGVNZXRob2QoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtOworICAgIH0KK30K
KworbGV0IGMxID0gbmV3IEMoKTsKK2xldCBjMiA9IG5ldyBDKCk7CisKK2Fzc2VydC5zYW1lVmFs
dWUoYzEuZ2V0UHJpdmF0ZU1ldGhvZCgpLCBjMi5nZXRQcml2YXRlTWV0aG9kKCkpOworCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1leHRlbmRzLWJyYW5kLWNoZWNr
LmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtZXh0ZW5kcy1icmFuZC1jaGVjay5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjMyNjY0YjJmY2NjZgot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWV4dGVuZHMt
YnJhbmQtY2hlY2suanMKQEAgLTAsMCArMSw0MSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVz
ZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitmdW5jdGlvbiBhc3NlcnQoYSwgZSkgeworICAgIGlm
IChhICE9PSBlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIg
YnV0IGdvdDogIiArIGEpOworfQorCitjbGFzcyBCYXNlIHsKKyAgICAjbUJhc2UoKSB7CisgICAg
ICAgIHJldHVybiA0OworICAgIH0KKworICAgIG1ldGhvZEJhc2UoKSB7CisgICAgICAgIHJldHVy
biB0aGlzLiNtQmFzZSgpOworICAgIH0KK30KKworY2xhc3MgQyBleHRlbmRzIEJhc2UgeworICAg
ICNtKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZjsKKyAgICB9CisKKyAgICBtZXRob2QoKSB7
CisgICAgICAgIHJldHVybiB0aGlzLiNtKCk7CisgICAgfQorCisgICAgI2YgPSAxNTsKK30KKwor
bGV0IGMgPSBuZXcgQygpOworYXNzZXJ0KGMubWV0aG9kKCksIDE1KTsKK2Fzc2VydChjLm1ldGhv
ZEJhc2UoKSwgNCk7CisKK2xldCBiYXNlID0gbmV3IEJhc2UgKCk7Cithc3NlcnQoYmFzZS5tZXRo
b2RCYXNlKCksIDQpOwordHJ5IHsKKyAgICBjLm1ldGhvZC5jYWxsKGJhc2UpOworfSBjYXRjaCAo
ZSkgeworICAgIGFzc2VydChlIGluc3RhbmNlb2YgVHlwZUVycm9yLCB0cnVlKTsKK30KKwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtZ2V0LWFuZC1jYWxsLmpzIGIv
SlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtZ2V0LWFuZC1jYWxsLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTMxN2UxZTc3ZTQzCi0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtZ2V0LWFuZC1jYWxsLmpzCkBAIC0w
LDAgKzEsMjQgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVl
IikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChsaHMsIHJocykg
eworICAgICAgICBpZiAobGhzICE9PSByaHMpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IkV4cGVjdGVkOiAiICsgbGhzICsgIiBidWcgZ290OiAiICsgcmhzKTsKKyAgICB9Cit9OworCitj
bGFzcyBDIHsKKyAgICAjbSgpIHsgcmV0dXJuIHRoaXMuX3Y7IH0KKworICAgIGdldFByaXZhdGVN
ZXRob2QoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtOworICAgIH0KK30KKworbGV0IGMgPSBu
ZXcgQygpOworCitsZXQgbzEgPSB7X3Y6ICd0ZXN0MjYyJ307CitsZXQgbzIgPSB7X3Y6ICdmb28n
fTsKK2Fzc2VydC5zYW1lVmFsdWUoYy5nZXRQcml2YXRlTWV0aG9kKCkuY2FsbChvMSksICd0ZXN0
MjYyJyk7Cithc3NlcnQuc2FtZVZhbHVlKGMuZ2V0UHJpdmF0ZU1ldGhvZCgpLmNhbGwobzIpLCAn
Zm9vJyk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWludmFs
aWQtbXVsdGlwbGUtYnJhbmQtaW5zdGFsbGF0aW9uLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0
ZS1tZXRob2QtaW52YWxpZC1tdWx0aXBsZS1icmFuZC1pbnN0YWxsYXRpb24uanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43ZDc3NTA3OWYzMTQKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1pbnZhbGlkLW11bHRpcGxlLWJy
YW5kLWluc3RhbGxhdGlvbi5qcwpAQCAtMCwwICsxLDUxIEBACisvL0AgcmVxdWlyZU9wdGlvbnMo
Ii0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZh
bHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9
LAorICAgIHNob3VsZFRocm93OiBmdW5jdGlvbihleGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAgICAg
ICAgbGV0IHRocmV3RXhjZXB0aW9uOworICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3Rv
cigpOworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfSBjYXRj
aChlKSB7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICBp
ZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRpb24pCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgaXQgdGhy
b3dzOiAiICsgZS5uYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNlcHRp
b24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsg
ZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworICAg
IH0KK30KKworbGV0IGkgPSAwOworCitsZXQgbyA9IHt9OworY2xhc3MgQmFzZSB7CisgICAgY29u
c3RydWN0b3IoKSB7CisgICAgICAgIHJldHVybiBvOworICAgIH0KK30KKworY2xhc3MgQyBleHRl
bmRzIEJhc2UgeworICAgICNtZXRob2QodikgeworICAgICAgICB0aGlzLmZpZWxkID0gdjsKKyAg
ICB9CisKKyAgICBhY2Nlc3ModikgeworICAgICAgICB0aGlzLiNtZXRob2Qodik7CisgICAgfQor
fQorbm9JbmxpbmUoQy5wcm90b3R5cGUuYWNjZXNzKTsKKworbGV0IGMgPSBuZXcgQygpOworQy5w
cm90b3R5cGUuYWNjZXNzLmNhbGwoYywgJ2ZvbycpOworYXNzZXJ0LnNhbWVWYWx1ZShjLmZpZWxk
LCAnZm9vJyk7CisKK2Fzc2VydC5zaG91bGRUaHJvdyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgewor
ICAgIGMgPSBuZXcgQygpOworfSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZh
dGUtbWV0aG9kLWludmFsaWRhdGUtY29tcGlsZWQtd2l0aC1jb25zdGFudC1zeW1ib2wuanMgYi9K
U1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1pbnZhbGlkYXRlLWNvbXBpbGVkLXdpdGgtY29u
c3RhbnQtc3ltYm9sLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u
MjlkM2M3MmIwMzhiCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1t
ZXRob2QtaW52YWxpZGF0ZS1jb21waWxlZC13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpAQCAtMCww
ICsxLDYyIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIp
CisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAg
ICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiAr
IGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9LAorICAgIHRocm93czogZnVuY3Rpb24oZXhj
ZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAg
dHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9u
ID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRp
b24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAg
ICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNl
cHRpb24ubmFtZSArICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0ZWQg
d2l0aG91dCBleGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGZhY3RvcnlDbGFzcygp
IHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgI21ldGhvZCgpIHsKKyAgICAgICAgICAgIHJldHVy
biAndGVzdCc7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgYWNjZXNzKCkgeworICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuI21ldGhvZCgpOworICAgICAgICB9CisgICAgfQorICAgIG5vSW5saW5l
KEMucHJvdG90eXBlLmFjY2Vzcyk7CisKKyAgICByZXR1cm4gQzsKK30KKworbGV0IEMgPSBmYWN0
b3J5Q2xhc3MoKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0
IGMgPSBuZXcgQygpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5hY2Nlc3MoKSwgJ3Rlc3QnKTsK
KyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgKCkgPT4geworICAgICAgICBjLmFjY2Vzcy5j
YWxsKHt9KTsKKyAgICB9KTsKK30KKworbGV0IEMyID0gZmFjdG9yeUNsYXNzKCk7CisKK2xldCBj
MiA9IG5ldyBDMigpOworYXNzZXJ0LnNhbWVWYWx1ZShjMi5hY2Nlc3MoKSwgJ3Rlc3QnKTsKKwor
bGV0IGMgPSBuZXcgQygpOworCithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgKCkgPT4geworICAg
IGMuYWNjZXNzLmNhbGwoYzIpOworfSk7CisKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCAoKSA9
PiB7CisgICAgYzIuYWNjZXNzLmNhbGwoYyk7Cit9KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL3ByaXZhdGUtbWV0aG9kLW5lc3RlZC1jbGFzcy5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZh
dGUtbWV0aG9kLW5lc3RlZC1jbGFzcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLjhjZGY0ODk5YTQzZQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L3ByaXZhdGUtbWV0aG9kLW5lc3RlZC1jbGFzcy5qcwpAQCAtMCwwICsxLDY4IEBACisvL0AgcmVx
dWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2Vy
dChhLCBlKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhw
ZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7Cit9CisKKygoKSA9PiB7CisgICAgY2xh
c3MgQmFzZSB7CisgICAgICAgIEMgPSBjbGFzcyB7CisgICAgICAgICAgICBtZXRob2QoKSB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuI21CYXNlKCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICAjbUJhc2UoKSB7CisgICAgICAgICAgICByZXR1cm4gNDsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGxldCBiYXNlID0gbmV3IEJhc2UoKTsKKyAgICBsZXQgYyA9IG5l
dyBiYXNlLkMoKTsKKyAgICBhc3NlcnQoYy5tZXRob2QuY2FsbChiYXNlKSwgNCk7CisKKyAgICB0
cnkgeworICAgICAgICBjLm1ldGhvZCgpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgYXNz
ZXJ0KGUgaW5zdGFuY2VvZiBUeXBlRXJyb3IsIHRydWUpOworICAgIH0KK30pKCk7CisKKy8vIFRl
c3Qgc2hhZG93IG1ldGhvZHMKKworKCgpID0+IHsKKyAgICBjbGFzcyBCYXNlIHsKKyAgICAgICAg
bWV0aG9kKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI20oKTsKKyAgICAgICAgfQorCisg
ICAgICAgIEMgPSBjbGFzcyB7CisgICAgICAgICAgICBtZXRob2QobykgeworICAgICAgICAgICAg
ICAgIHJldHVybiBvLiNtKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICNtKCkgewor
ICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZvbzsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgZm9vID0gNDsKKyAgICAgICAgfTsKKworICAgICAgICAjbSgpIHsKKyAgICAgICAgICAg
IHJldHVybiAiZm9vIjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBiYXNlID0gbmV3IEJh
c2UoKTsKKyAgICBsZXQgYyA9IG5ldyBiYXNlLkMoKTsKKyAgICBhc3NlcnQoYy5tZXRob2QoYyks
IDQpOworICAgIGFzc2VydChiYXNlLm1ldGhvZCgpLCAiZm9vIik7CisKKyAgICB0cnkgeworICAg
ICAgICBjLm1ldGhvZChiYXNlKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGFzc2VydChl
IGluc3RhbmNlb2YgVHlwZUVycm9yLCB0cnVlKTsKKyAgICB9Cit9KSgpOworCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1wb2x5bW9ycGhpYy13aXRoLWNvbnN0YW50
LXN5bWJvbC5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLXBvbHltb3JwaGljLXdp
dGgtY29uc3RhbnQtc3ltYm9sLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uMDAxNzYyN2E1MzA5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJp
dmF0ZS1tZXRob2QtcG9seW1vcnBoaWMtd2l0aC1jb25zdGFudC1zeW1ib2wuanMKQEAgLTAsMCAr
MSw1MyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQor
CitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAg
ICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBl
ICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfSwKKyAgICBzaG91bGRUaHJvdzogZnVuY3Rpb24o
ZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAg
ICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0
aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNl
cHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQor
ICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBl
eGNlcHRpb24ubmFtZSArICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7CisgICAgICAgIH0K
KworICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0
ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2xldCBpID0gMDsKKworY2xhc3Mg
QmFzZSB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIGlmIChpICUgMikKKyAgICAgICAg
ICAgIHRoaXMuYW5vdGhlckZpZWxkID0gaTsKKyAgICB9Cit9CisKK2NsYXNzIEMgZXh0ZW5kcyBC
YXNlIHsKKyAgICAjbWV0aG9kKCkgeworICAgICAgICByZXR1cm4gJ3Rlc3QnOworICAgIH0KKwor
ICAgIGFjY2VzcygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI21ldGhvZCgpOworICAgIH0KK30K
K25vSW5saW5lKEMucHJvdG90eXBlLmFjY2Vzcyk7CisKK2ZvciAoOyBpIDwgMTAwMDA7IGkrKykg
eworICAgIGNvdW50ID0gaTsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVW
YWx1ZShjLmFjY2VzcygpLCAndGVzdCcpOworfQorCithc3NlcnQuc2hvdWxkVGhyb3coVHlwZUVy
cm9yLCAoKSA9PiB7CisgICAgYy5hY2Nlc3MuY2FsbCh7fSk7Cit9KTsKKwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtdW50eXBlZC11c2UuanMgYi9KU1Rlc3RzL3N0
cmVzcy9wcml2YXRlLW1ldGhvZC11bnR5cGVkLXVzZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLjhhY2I4YjQxMDJiZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLXVudHlwZWQtdXNlLmpzCkBAIC0wLDAgKzEsNTggQEAK
Ky8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIiwgIi0tdXNlQWNj
ZXNzSW5saW5pbmc9ZmFsc2UiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNob3VsZFRocm93OiBm
dW5jdGlvbihleGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9u
OworICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhy
ZXdFeGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0
aHJld0V4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNl
cHRpb24pCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJv
dzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1
dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworICAgIH0KK30KKworY2xhc3MgQyB7Cisg
ICNtZXRob2QoKSB7fQorCisgIGFjY2Vzcyh2KSB7CisgICAgICBsZXQgbyA9IHRoaXM7CisgICAg
ICAvLyBUaGlzIGJyYW5jaCBpcyBoZXJlIHRvIGF2b2lkIFB1dFByaXZhdGVOYW1lQnlJZCB0byBi
ZSBmb2xkZWQgYXMgCisgICAgICAvLyBQdXRCeU9mZnNldC4KKyAgICAgIGlmICh2ID4gMTAwKQor
ICAgICAgICAgIG8gPSB7fTsKKyAgICAgIG8uI21ldGhvZCgpOworICB9Cit9Citub0lubGluZShD
LnByb3RvdHlwZS5hY2Nlc3MpOworCitsZXQgYyA9IG5ldyBDKCk7CisKKy8vIExldCdzIHRyaWdn
ZXIgSklUIGNvbXBpbGF0aW9uIGZvciBgQy5wcm90b3R5cGUuYWNjZXNzYAorZm9yIChsZXQgaSA9
IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgYy5hY2Nlc3MoMTUpOworfQorCitmb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBhc3NlcnQuc2hvdWxkVGhyb3coVHlwZUVycm9y
LCAoKSA9PiB7CisgICAgICAgIGMuYWNjZXNzLmNhbGwoe30sIDApOworICAgIH0pOworCisgICAg
YXNzZXJ0LnNob3VsZFRocm93KFR5cGVFcnJvciwgKCkgPT4geworICAgICAgICBjLmFjY2Vzcy5j
YWxsKDE1LCAwKTsKKyAgICB9KTsKKworICAgIGFzc2VydC5zaG91bGRUaHJvdyhUeXBlRXJyb3Is
ICgpID0+IHsKKyAgICAgICAgYy5zZXRGaWVsZC5jYWxsKCdzdHJpbmcnLCAwKTsKKyAgICB9KTsK
KworICAgIGFzc2VydC5zaG91bGRUaHJvdyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICAgICAgYy5z
ZXRGaWVsZC5jYWxsKFN5bWJvbCgnc3ltYm9sJyksIDApOworICAgIH0pOworfQorCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZHMtb24tcHJveHkuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9wcml2YXRlLW1ldGhvZHMtb24tcHJveHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi5mYjVmZGZjYjYyMzQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZHMtb24tcHJveHkuanMKQEAgLTAsMCArMSw0MiBAQAor
Ly9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitmdW5jdGlv
biBhc3NlcnQoYSwgZSwgbSkgeworICAgIGlmIChhICE9PSBlKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IobSk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydEFycmF5Q29udGVudChhLCBlKSB7CisgICAg
YXNzZXJ0KGEubGVuZ3RoLCBlLmxlbmd0aCwgIlNpemUgb2YgYXJyYXlzIGRvZXNuJ3QgbWF0Y2gi
KTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspCisgICAgICAgIGFzc2Vy
dChhW2ldLCBlW2ldLCAiYVsiICsgaSArICJdID0gIiArIGFbaV0gKyAiIGJ1dCBlWyIgKyBpICsg
Il0gPSAiICsgZVtpXSk7Cit9CisKK2xldCBhcnIgPSBbXTsKKworY2xhc3MgUHJveHlCYXNlIHsK
KyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm94eSh0aGlzLCB7Cisg
ICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uIChvYmosIHByb3ApIHsKKyAgICAgICAgICAgICAgICBh
cnIucHVzaChwcm9wKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gb2JqW3Byb3BdOworICAgICAg
ICAgICAgfQorICAgICAgICB9KTsKKyAgICB9Cit9CisKK2NsYXNzIFRlc3QgZXh0ZW5kcyBQcm94
eUJhc2UgeworICAgICNtKCkgeworICAgICAgICByZXR1cm4gMzsKKyAgICB9CisKKyAgICBtZXRo
b2QoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtKCk7CisgICAgfQorfQorCitsZXQgdCA9IG5l
dyBUZXN0KCk7CitsZXQgciA9IHQubWV0aG9kKCk7Cithc3NlcnQociwgMywgIkV4cGVjdGVkOiAz
IGJ1dCBnb3Q6ICIgKyByKTsKKworYXNzZXJ0QXJyYXlDb250ZW50KGFyciwgWydtZXRob2QnXSk7
CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9u
LWRpcmVjdC1ldmFsLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1lcy1hdmFpbGFibGUt
b24tZGlyZWN0LWV2YWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li42NGNlMGUwYWY4MDUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRl
LW5hbWVzLWF2YWlsYWJsZS1vbi1kaXJlY3QtZXZhbC5qcwpAQCAtMCwwICsxLDIzIEBACisvL0Ag
cmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQg
PSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAobGhzLCByaHMpIHsKKyAgICAgICAgaWYgKGxo
cyAhPT0gcmhzKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIHJo
cyArICIgYnVnIGdvdDogIiArIGxocyk7CisgICAgfQorfTsKKworKGZ1bmN0aW9uICgpIHsKKyAg
ICBjbGFzcyBDIHsKKyAgICAgICAgI20oKSB7IHJldHVybiAndGVzdCc7IH0KKworICAgICAgICBj
YWxsTWV0aG9kRnJvbUV2YWwoKSB7CisgICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXM7CisgICAg
ICAgICAgICByZXR1cm4gZXZhbCgnc2VsZi4jbSgpJyk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmNhbGxNZXRob2RGcm9t
RXZhbCgpLCAndGVzdCcpOworfSkoKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2Nv
bmZpZy55YW1sIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCmluZGV4IGI5MTQ5NjdiZGI3
MC4uNmNlZmU0NGMxMDQ3IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwK
KysrIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCkBAIC01LDYgKzUsNyBAQCBmbGFnczoK
ICAgRmluYWxpemF0aW9uUmVnaXN0cnk6IHVzZVdlYWtSZWZzCiAgIGNsYXNzLWZpZWxkcy1wdWJs
aWM6IHVzZVB1YmxpY0NsYXNzRmllbGRzCiAgIGNsYXNzLWZpZWxkcy1wcml2YXRlOiB1c2VQcml2
YXRlQ2xhc3NGaWVsZHMKKyAgY2xhc3MtbWV0aG9kcy1wcml2YXRlOiB1c2VQcml2YXRlTWV0aG9k
cwogICBJbnRsLkRhdGVUaW1lRm9ybWF0LWRheVBlcmlvZDogdXNlSW50bERhdGVUaW1lRm9ybWF0
RGF5UGVyaW9kCiBza2lwOgogICBmZWF0dXJlczoKQEAgLTE2LDcgKzE3LDYgQEAgc2tpcDoKICAg
ICAtIGxlZ2FjeS1yZWdleHAKIAogICAgIC0gYXJiaXRyYXJ5LW1vZHVsZS1uYW1lc3BhY2UtbmFt
ZXMKLSAgICAtIGNsYXNzLW1ldGhvZHMtcHJpdmF0ZQogICAgIC0gY2xhc3Mtc3RhdGljLWZpZWxk
cy1wdWJsaWMKICAgICAtIGNsYXNzLXN0YXRpYy1maWVsZHMtcHJpdmF0ZQogICAgIC0gY2xhc3Mt
c3RhdGljLW1ldGhvZHMtcHJpdmF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggMDQ2OTQw
NTYwODE3Li4zYWE4YzBlY2VjN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI2NSBAQAorMjAyMC0xMC0yMCAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CisK
KyAgICAgICAgW0VTTmV4dF0gSW1wbGVtZW50IHByaXZhdGUgbWV0aG9kcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NDM0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBhZGRpbmcg
c3VwcG9ydCB0byBwcml2YXRlIG1ldGhvZHMgZm9sbG93aW5nIHRoZQorICAgICAgICBzcGVjaWZp
Y2F0aW9uIG9uIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1wcml2YXRlLW1ldGhvZHMvLgorICAg
ICAgICBUaGlzIGlzIGludHJvZHVjaW5nIGEgbmV3IHdheSB0byBkZWNsYXJlIHByaXZhdGUgbWV0
aG9kcyBvbgorICAgICAgICBjbGFzcyBzeW50YXguIFByaXZhdGUgbWV0aG9kcyBhcmUgb25seSBh
Y2Nlc3NpYmxlIHdpdGhpbgorICAgICAgICBjbGFzc2VzIHRoZXkgd2VyZSBkZWNsYXJlZCwgYW5k
IG9ubHkgY2FuIGJlIGNhbGxlZCBmcm9tCisgICAgICAgIG9iamVjdHMgdGhhdCBhcmUgaW5zdGFu
Y2Ugb2YgdGhlc2UgY2xhc3Nlcy4KKyAgICAgICAgVG8gZ3VhcmFudGVlIHN1Y2ggcnVsZXMsIHRo
ZSBwcm9wb3NhbCBwcmVzZW50cyB0aGUgY29uY2VwdCBvZgorICAgICAgICBCcmFuZCBDaGVjay4g
RHVyaW5nIGNsYXNzIGV2YWx1YXRpb24sIGlmIGEgcHJpdmF0ZSBtZXRob2QgaXMgcHJlc2VudCwK
KyAgICAgICAgYSBgYnJhbmRgIGlzIGluc3RhbGxlZCBpbiB0aGlzIGNsYXNzLiBFdmVyeSBpbnN0
YW5jZSBvZiBzdWNoIGNsYXNzCisgICAgICAgIHRoZW4gZ2V0cyB0aGlzIGJyYW5kIGluc3RhbGxl
ZCBkdXJpbmcgYFtbQ29uc3RydWN0XV1gIG9wZXJhdGlvbi4gSXQKKyAgICAgICAgbWVhbnMgdGhh
dCBhbiBvYmplY3QgY2FuIGhhdmUgbXVsdGlwbGUgYnJhbmRzIChlLmcgd2hlbiB0aGVyZSBpcyBh
bHNvCisgICAgICAgIHByaXZhdGUgbWV0aG9kcyBkZWNsYXJlZCBvbiBzdXBlciBjbGFzcykuIEJl
Zm9yZSBhY2Nlc3NpbmcgYSBwcml2YXRlCisgICAgICAgIG1ldGhvZCwgdGhlcmUgaXMgYSBjaGVj
ayB0byB2YWxpZGF0ZSBpZiB0aGUgdGFyZ2V0IG9mIHRoZSBjYWxsIGhhcyB0aGUKKyAgICAgICAg
YnJhbmQgb2YgY2FsbGVlIG1ldGhvZC4KKyAgICAgICAgVGhlIGJyYW5kIGNoZWNrIG1lY2hhbmlz
bSBpcyBpbXBsZW1lbnRlZCB1c2luZyBhIGBAcHJpdmF0ZUJyYW5kYAorICAgICAgICBzdG9yZWQg
b24gY2xhc3Mgc2NvcGUuIEhlcmUgaXMgYSByZXByZXNlbnRhdGlvbiBvZiBob3cgdGhpcyBtZWNo
YW5pc20KKyAgICAgICAgd29ya3M6CisKKyAgICAgICAgYGBgCisgICAgICAgIGNsYXNzIEMgewor
ICAgICAgICAgICAgI20oKSB7IHJldHVybiAzOyB9CisgICAgICAgICAgICBtZXRob2QoKSB7IHJl
dHVybiB0aGlzLiNtKCk7IH0KKyAgICAgICAgfQorCisgICAgICAgIGxldCBjID0gbmV3IEMoKTsK
KyAgICAgICAgY29uc29sZS5sb2coYy5tZXRob2QoKSk7IC8vIHByaW50cyAzCisgICAgICAgIGBg
YAorCisgICAgICAgIEdlbmVyYXRlZCBieXRlY29kZSBmb3IgdGhlIGZvbGxvd2luZyByZXByZXNl
bnRhdGlvbjoKKyAgICAgICAgYGBgCisgICAgICAgIHsgLy8gY2xhc3MgbGV4aWNhbCBzY29wZQor
ICAgICAgICAgICAgY29uc3QgQHByaXZhdGVCcmFuZCA9IEBjcmVhdGVQcml2YXRlU3ltYm9sKCk7
CisgICAgICAgICAgICBjb25zdCAjbSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDM7IH0KKyAgICAg
ICAgICAgIEMucHJvdG90eXBlLm1ldGhvZCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg
IEBnZXRfcHJpdmF0ZV9uYW1lKHRoaXMsIEBwcml2YXRlQnJhbmQpOworICAgICAgICAgICAgICAg
IHJldHVybiAjbS5jYWxsKHRoaXMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQyA9IGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIEBwdXRfcHJpdmF0ZV9uYW1lKHRoaXMsIEBwcml2
YXRlQnJhbmQsIEBwcml2YXRlQnJhbmQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgbGV0IGMgPSBuZXcgQygpOworICAgICAgICBjb25zb2xlLmxvZyhjLm1ldGhvZCgpKTsg
Ly8gcHJpbnRzIDMKKyAgICAgICAgYGBgCisKKyAgICAgICAgVGhlIGJyYW5kIGNoZWNrIGlzIHBl
cmZvcm1lZCBieSBgZ2V0X3ByaXZhdGVfbmFtZWAsIHdoZXJlIHdlIHJlLXVzZQorICAgICAgICB0
aGUgbWVjaGFuaXNtIGludHJvZHVjZWQgYnkgcHJpdmF0ZSBjbGFzcyBmaWVsZHMuIFdlIGNhbiBz
ZWUgdGhlCisgICAgICAgIHByaXZhdGUgYnJhbmQgYXMgYSBzcGVjaWFsIHByaXZhdGUgZmllbGQg
aW5zdGFsbGVkIGR1cmluZworICAgICAgICBgW1tDb25zdHJ1Y3RdXWAgb3BlcmF0aW9uLiBTaW5j
ZSB0aGUgcHJpdmF0ZSBicmFuZCBpcyBhIHByaXZhdGUgZmllbGQsCisgICAgICAgIHdlIHRocm93
IGBUeXBlRXJyb3JgIHdoZW4gdGhlIGxvb2t1cCBmYWlsLgorCisgICAgICAgIFRvIHByb3Blcmx5
IHN0b3JlIHRoZSBwcml2YXRlIGJyYW5kIG9mIGEgY2xhc3Mgb24gYWxsIG9iamVjdHMsCisgICAg
ICAgIGluY2x1ZGluZyBQcm94aWVzLCB3ZSB1c2UgYHB1dF9wcml2YXRlX25hbWVgLiBUaGlzIGlu
c3RydWN0aW9uIHB1dHMKKyAgICAgICAgdmFsdWUgb24gb2JqZWN0J3MgcHJvcGVydGllcyB3aXRo
b3V0IGV4ZWN1dGluZyBbW1B1dF1dIHNlbWFudGljcy4KKyAgICAgICAgV2l0aCB0aGlzIGRlc2ln
biwgd2UgYXZvaWQgYWxsb2NhdGluZyBhIGZpZWxkIGZvciBldmVyeSBpbnN0YW5jZQorICAgICAg
ICBvZiBhIGNsYXNzLCBzaW5jZSBwcml2YXRlIG1ldGhvZHMgYXJlIHN0b3JlZCBvbiBjbGFzcwor
ICAgICAgICBsZXhpY2FsIHNjb3BlLiBFdmVyeSBvYmplY3Qgd2lsbCBoYXZlIHRvIGFsbG9jYXRl
IGl0cyBwcml2YXRlCisgICAgICAgIGJyYW5kIGxpc3QuIFRoaXMgZGVzaWduIGluc2VydHMgbm8g
b3ZlcmhlYWQgb24gb2JqZWN0cyBhbmQgY2xhc3NlcworICAgICAgICB3aXRob3V0IHByaXZhdGUg
bWV0aG9kcy9hY2Nlc3Nvci4KKworICAgICAgICBSZXNvbHZpbmcgY29ycmVjdCBicmFuZCBjaGVj
azoKKworICAgICAgICBJbiB0aGUgY2FzZSBvZiBzaGFkb3dpbmcgb3IgbmVzdGVkIHNjb3BlLCB3
ZSBuZWVkIHRvIGVtaXQgYnJhbmQKKyAgICAgICAgY2hlY2tzIHRvIHRoZSByaWdodCBwcml2YXRl
IGJyYW5kLiBTZWUgY29kZSBiZWxvdzoKKworICAgICAgICBgYGAKKyAgICAgICAgY2xhc3MgQyB7
CisgICAgICAgICAgICAjbSgpIHsgcmV0dXJuIDM7IH0KKyAgICAgICAgICAgIG1ldGhvZCgpIHsg
cmV0dXJuIHRoaXMuI20oKTt9CisKKyAgICAgICAgICAgIEEgPSBjbGFzcyB7CisgICAgICAgICAg
ICAgICAgI20yKCkgeyByZXR1cm4gMzsgfQorICAgICAgICAgICAgICAgIGZvbyhvKSB7IHJldHVy
biB0aGlzLiNtKCk7IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBgYGAKKwor
ICAgICAgICBUaGUgY2FsbCBvZiAiI20iIGluIGBmb29gIHJlZmVycyB0byAiQzo6I20iLiBJbiBz
dWNoIGNhc2UsIHdlIG5lZWQgdG8KKyAgICAgICAgY2hlY2sgQydzIHByaXZhdGUgYnJhbmQsIGlu
c3RlYWQgb2YgQSdzIHByaXZhdGUgYnJhbmQuCisgICAgICAgIFRvIHBlcmZvcm0gdGhlIHByb3Bl
ciBjaGVjaywgd2UgZmlyc3QgcmVzb2x2ZSBzY29wZSBvZiAiI20iIGFuZCB0aGVuCisgICAgICAg
IGNoZWNrIHRoZSBwcml2YXRlIGJyYW5kIG9mIHRoaXMgc2NvcGUgKHRoZSBzY29wZSB3aGVyZSB0
aGUgcHJpdmF0ZQorICAgICAgICBtZXRob2QgYW5kIGJyYW5kIGFyZSBzdG9yZWQgaXMgdGhlIHNh
bWUpLgorICAgICAgICBTbyB0aGUgYnl0ZWNvZGUgdG8gbG9va3VwIHRoZSByaWdodCBicmFuZCBp
czoKKworICAgICAgICBgYGAKKyAgICAgICAgcmVzb2x2ZV9zY29wZSBsb2MxMCwgIiNtIgorICAg
ICAgICBnZXRfZnJvbV9zY29wZSBsb2MxMSwgbG9jMTAsICJAcHJpdmF0ZUJyYW5kIgorICAgICAg
ICBnZXRfcHJpdmF0ZV9uYW1lIGxvYzEyLCB0aGlzLCBsb2MxMQorICAgICAgICBnZXRfZnJvbV9z
Y29wZSBsb2MxMSwgbG9jMTAsICIjbSIKKyAgICAgICAgLy8gc2V0dXAgY2FsbCBmcmFtZQorICAg
ICAgICBjYWxsIGxvYzExLCAuLi4KKyAgICAgICAgLy8gLi4uCisgICAgICAgIGBgYAorCisgICAg
ICAgICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDoKKyAgICAgICAgKEpTQzo6QnVp
bHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IpOgorICAgICAgICAoSlND
OjpCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUpOgorICAgICAgICAqIGJ1aWx0
aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oOgorCisgICAgICAgIFdlIGFyZSBhZGRpbmcgYSBuZXcg
cGFyYW1ldGVyIGBQcml2YXRlQnJhbmRSZXF1aXJlbWVudGAgdG8gcHJvcGFnYXRlCisgICAgICAg
IHdoZW4gYSBkZWZhdWx0IGNvbnN0cnVjdG9yIG5lZWRzIHRvIGVtaXQgY29kZSB0byBzZXR1cCBw
cml2YXRlIGJyYW5kCisgICAgICAgIG9uIGluc3RhbmNlcy4KKworICAgICAgICAqIGJ1aWx0aW5z
L0J1aWx0aW5OYW1lcy5oOgorCisgICAgICAgIEFkZGluZyBgQHByaXZhdGVCcmFuZGAgdGhhdCAg
d2UgdXNlIHRvIHN0b3JlIHByaXZhdGUgYnJhbmQgb24KKyAgICAgICAgY2xhc3MncyBzY29wZS4K
KworICAgICAgICAqIGJ5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmg6CisgICAgICAgIChKU0M6OkV4
ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJ
bmZvOjpwcml2YXRlQnJhbmRSZXF1aXJlbWVudCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
VW5saW5rZWRDb2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
Lmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpwcml2YXRlQnJhbmRSZXF1aXJl
bWVudCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0
b3IuaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6OnByaXZhdGVC
cmFuZFJlcXVpcmVtZW50IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5l
cmF0b3IpOgorCisgICAgICAgIFdlIGNoYW5nZWQgQnl0ZWNvZGVHZW5lcmF0b3IgZm9yIEZ1bmN0
aW9uTm9kZSBhbmQgRXZhbE5vZGUgdG8KKyAgICAgICAgcHJvcGFnYXRlIHBhcmVudFNjb3BlIFZh
cmlhYmxlRW52aXJvbm1lbnQuIFRoZXNlIGVudmlyb25tZW50cyBzdG9yZXMKKyAgICAgICAgcHJp
dmF0ZSBuYW1lIGVudHJpZXMgdGhhdCBhcmUgdmlzaWJsZSBpbnRvIHRoZSBzY29wZSBvZiB0aGUK
KyAgICAgICAgZnVuY3Rpb24vZXZhbCBpbiBhZGRpdGlvbiB0byBURFogdmFyaWFibGVzLgorICAg
ICAgICBUaGlzIGlzIHJlcXVpcmVkIHRvIGlkZW50aWZ5IHRoZSBraW5kIG9mIGFjY2VzcyBhIHBy
aXZhdGUgbmFtZSBpcworICAgICAgICByZWZlcnJpbmcgdG8sIHNpbmNlIGl0IGNhbiBiZSBhIHBy
aXZhdGUgZmllbGQgb3IgYSBwcml2YXRlIG1ldGhvZC4KKyAgICAgICAgR2l2ZW4gdGhpcyBjaGFu
Z2UsIHdlIGNoYW5nZWQgdGhlIG5hbWUgb2YgVmFyaWFibGVFbnZpcm9ubWVudAorICAgICAgICBm
cm9tIGBwYXJlbnRTY29wZVREWlZhcmlhYmxlc2AgdG8gYHBhcmVudFNjb3BlVmFyaWFibGVFbnZp
cm9ubWVudGAuCisKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Omluc3RhbnRpYXRl
TGV4aWNhbFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
R2V0UHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENy
ZWF0ZVByaXZhdGVCcmFuZCk6CisKKyAgICAgICAgVGhlIHByb2Nlc3MgdG8gY3JlYXRlIGEgcHJp
dmF0ZSBicmFuZCBpcyBhcyBmb2xsb3dzOgorICAgICAgICAgICAgMS4gQ3JlYXRlIGEgUHJpdmF0
ZVN5bWJvbCB1c2luZyBgQGNyZWF0ZVByaXZhdGVTeW1ib2xgLgorICAgICAgICAgICAgMi4gU3Rv
cmUgdGhpcyBzeW1ib2wgaW50byBhIGdpdmVuIHNjb3BlIChpLmUgY2xhc3MgbGV4aWNhbCBzY29w
ZSkKKyAgICAgICAgICAgICAgIG9uIGBAcHJpdmF0ZUJyYW5kYCB2YXJpYWJsZS4KKworICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEluc3RhbGxQcml2YXRlQnJhbmQpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFByaXZhdGVCcmFuZCk6CisKKyAg
ICAgICAgV2UgYWRkZWQgYG1fcHJpdmF0ZU5hbWVzU3RhY2tgIHRvIEJ5dGVjb2RlR2VuZXJhdG9y
IHRvIHJlcHJlc2VudCB0aGUKKyAgICAgICAgc2NvcGUgY2hhaW4gb2YgYXZhaWxhYmxlIHByaXZh
dGUgbmFtZXMgd2hpbGUgZ2VuZXJhdGluZyBieXRlY29kZS4KKworICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdENoZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmlzUHJpdmF0ZU1ldGhvZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjpwdXNoUHJpdmF0ZUFjY2Vzc05hbWVzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OnBvcFByaXZhdGVBY2Nlc3NOYW1lcyk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjpnZXRBdmFpbGFibGVQcml2YXRlQWNjZXNzTmFtZXMpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2V0VmFyaWFibGVzVW5kZXJURFopOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3Rvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3SW5zdGFuY2VGaWVsZEluaXRpYWxp
emVyRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVj
dEdldEJ5VmFsKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnByaXZhdGVCcmFuZFJl
cXVpcmVtZW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Om1ha2VG
dW5jdGlvbik6CisKKyAgICAgICAgVGhpcyBjaGFuZ2UgaXMgcmVxdWlyZWQgdG8gcHJvcGVybHkg
cHJvcGFnYXRlIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50CisgICAgICAgIHRvIGFycm93IGZ1bmN0
aW9ucyB0aGF0IGNhbiBwb3RlbnRpYWxseSBjYWxsIGBzdXBlcigpYC4KKworICAgICAgICAqIGJ5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3RO
b2RlOjplbWl0RGVjbGFyZVByaXZhdGVGaWVsZE5hbWVzKToKKyAgICAgICAgKEpTQzo6UHJvcGVy
dHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlMaXN0Tm9k
ZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6
ZW1pdEdldFByb3BlcnR5VmFsdWUpOgorCisgICAgICAgIEFkZGluZyBzdXBwb3J0IHRvIHByb3Bl
cmx5IGFjY2VzcyBwcml2YXRlIG1ldGhvZC4gU2luY2Ugd2Ugc3RvcmUKKyAgICAgICAgcHJpdmF0
ZSBtZXRob2RzIG9uIGNsYXNzIGxleGljYWwgc2NvcGUsIHdlIG5lZWQgYSBkaWZmZXJlbnQgc2V0
IG9mCisgICAgICAgIGluc3RydWN0aW9ucyB0byBhY2Nlc3MgYSBwcml2YXRlIG1ldGhvZC4KKwor
ICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6ZW1pdFB1dFByb3BlcnR5KToKKworICAgICAgICBJ
biB0aGUgY2FzZSBvZiB3ZSB0cnlpbmcgdG8gd3JpdGUgaW4gYSBwcml2YXRlIG1ldGhvZCwgd2Ug
bmVlZCB0bworICAgICAgICB0aHJvdyBhIFR5cGVFcnJvciBhY2NvcmRpbmcgdG8gc3BlY2lmaWNh
dGlvbgorICAgICAgICAoaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXByaXZhdGUtbWV0aG9kcy8j
c2VjLXByaXZhdGVmaWVsZHNldCkuCisKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsVmFsdWVO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdERvdCk6
CisgICAgICAgIChKU0M6OlByZWZpeE5vZGU6OmVtaXREb3QpOgorICAgICAgICAoSlNDOjpDbGFz
c0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQ2Fs
bEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlV2l0
aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6
CisgICAgICAgIChKU0M6OmV2YWwpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAg
ICAgIChKU0M6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpGdW5jdGlvbk1ldGFkYXRhTm9kZSk6Cisg
ICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKToKKyAgICAgICAgKiBw
YXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlNjb3BlOjpkZWNsYXJlUHJpdmF0ZU1ldGhv
ZCk6CisgICAgICAgIChKU0M6OlNjb3BlOjpkZWNsYXJlUHJpdmF0ZUZpZWxkKToKKyAgICAgICAg
KEpTQzo6U2NvcGU6OmRlY2xhcmVQcml2YXRlTmFtZSk6IERlbGV0ZWQuCisgICAgICAgICogcGFy
c2VyL1BhcnNlck1vZGVzLmg6CisgICAgICAgICogcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQu
Y3BwOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZU1l
dGhvZCk6CisgICAgICAgIChKU0M6OkNvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50OjpDb21wYWN0
VmFyaWFibGVFbnZpcm9ubWVudCk6CisgICAgICAgIChKU0M6OkNvbXBhY3RWYXJpYWJsZUVudmly
b25tZW50OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q29tcGFjdFZhcmlhYmxl
RW52aXJvbm1lbnQ6OnRvVmFyaWFibGVFbnZpcm9ubWVudCBjb25zdCk6CisgICAgICAgICogcGFy
c2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9u
bWVudEVudHJ5Ojppc1ByaXZhdGVGaWVsZCBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxl
RW52aXJvbm1lbnRFbnRyeTo6aXNQcml2YXRlTWV0aG9kIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5OjpzZXRJc1ByaXZhdGVGaWVsZCk6CisgICAgICAgIChK
U0M6OlZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeTo6c2V0SXNQcml2YXRlTWV0aG9kKToKKyAgICAg
ICAgKEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6aXNNZXRob2QgY29uc3QpOgorICAgICAgICAoSlND
OjpQcml2YXRlTmFtZUVudHJ5Ojppc1ByaXZhdGVBY2Nlc3MgY29uc3QpOgorICAgICAgICAoSlND
OjpWYXJpYWJsZUVudmlyb25tZW50OjphZGRQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OlZh
cmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlRmllbGQpOgorICAgICAgICAoSlNDOjpW
YXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZU1ldGhvZCk6CisgICAgICAgIChKU0M6
OlZhcmlhYmxlRW52aXJvbm1lbnQ6Omhhc1ByaXZhdGVBY2Nlc3MgY29uc3QpOgorICAgICAgICAo
SlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OmlzUHJpdmF0ZU5hbWUgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OnNldElzUHJpdmF0
ZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNs
YXJlUHJpdmF0ZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMu
Y3BwOgorICAgICAgICAoSlNDOjpDYWNoZWRDb2RlQmxvY2tSYXJlRGF0YTo6ZW5jb2RlKToKKyAg
ICAgICAgKEpTQzo6Q2FjaGVkQ29kZUJsb2NrUmFyZURhdGE6OmRlY29kZSBjb25zdCk6CisgICAg
ICAgIChKU0M6OkNhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZVJhcmVEYXRhOjplbmNvZGUpOgorICAg
ICAgICAoSlNDOjpDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGVSYXJlRGF0YTo6ZGVjb2RlIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlOjpwcml2YXRlQnJhbmRS
ZXF1aXJlbWVudCBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZENvZGVCbG9jazo6ZGVyaXZl
ZENvbnRleHRUeXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkRnVuY3Rpb25FeGVjdXRh
YmxlOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRDb2RlQmxv
Y2s6Om5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRD
b2RlQmxvY2tJbXBsKToKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpnZXRVbmxpbmtlZEdsb2Jh
bEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgICogcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0
YWJsZS5jcHA6CisgICAgICAgIChKU0M6OkRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUpOgor
ICAgICAgICAoSlNDOjpEaXJlY3RFdmFsRXhlY3V0YWJsZTo6RGlyZWN0RXZhbEV4ZWN1dGFibGUp
OgorICAgICAgICAqIHJ1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBy
dW50aW1lL0V2YWxFeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6
OkV2YWxFeGVjdXRhYmxlKToKKyAgICAgICAgKiBydW50aW1lL0V2YWxFeGVjdXRhYmxlLmg6Cisg
ICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpleGVjdXRhYmxlSW5mbyBjb25zdCk6CisgICAg
ICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpwcml2YXRlQnJhbmRSZXF1aXJlbWVudCBjb25zdCk6
CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6
Y3JlYXRlSW52YWxpZFByaXZhdGVOYW1lRXJyb3IpOgorICAgICAgICAqIHJ1bnRpbWUvSW5kaXJl
Y3RFdmFsRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OkluZGlyZWN0RXZhbEV4ZWN1dGFi
bGU6OkluZGlyZWN0RXZhbEV4ZWN1dGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5j
cHA6CisgICAgICAgIChKU0M6OkpTU2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJU
RFopOgorICAgICAgICAqIHJ1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaDoKKyAgICAg
ICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpPcHRpb25zOjpyZWNvbXB1
dGVEZXBlbmRlbnRPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnNMaXN0Lmg6Cisg
ICAgICAgICogcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
U3ltYm9sVGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZTo6Y2xvbmVTY29wZVBh
cnQpOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuaDoKKwogMjAyMC0xMS0wMyAgWXVz
dWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGJ1
aWxkIGZpeCBmb3IgQVJNNjRFIGRlYnVnIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCmluZGV4IDgzMDQ5NDRiYWM0
My4uNGUxZDk5MjNhNWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcApAQCAtNTksNyArNTksNyBAQCBTb3VyY2VDb2Rl
IEJ1aWx0aW5FeGVjdXRhYmxlczo6ZGVmYXVsdENvbnN0cnVjdG9yU291cmNlQ29kZShDb25zdHJ1
Y3RvcktpbmQgY29ucwogICAgIHJldHVybiBTb3VyY2VDb2RlKCk7CiB9CiAKLVVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZURlZmF1bHRDb25zdHJ1
Y3RvcihDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBu
YW1lLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
cikKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0
ZURlZmF1bHRDb25zdHJ1Y3RvcihDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBjb25z
dCBJZGVudGlmaWVyJiBuYW1lLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQpCiB7CiAgICAgc3dpdGNoIChjb25zdHJ1Y3RvcktpbmQpIHsKICAgICBjYXNlIENv
bnN0cnVjdG9yS2luZDo6Tm9uZToKQEAgLTY3LDcgKzY3LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yKENv
bnN0cnUKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb25zdHJ1Y3RvcktpbmQ6OkJhc2U6CiAg
ICAgY2FzZSBDb25zdHJ1Y3RvcktpbmQ6OkV4dGVuZHM6Ci0gICAgICAgIHJldHVybiBjcmVhdGVF
eGVjdXRhYmxlKG1fdm0sIGRlZmF1bHRDb25zdHJ1Y3RvclNvdXJjZUNvZGUoY29uc3RydWN0b3JL
aW5kKSwgbmFtZSwgY29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1
Y3QsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUV4
ZWN1dGFibGUobV92bSwgZGVmYXVsdENvbnN0cnVjdG9yU291cmNlQ29kZShjb25zdHJ1Y3Rvcktp
bmQpLCBuYW1lLCBjb25zdHJ1Y3RvcktpbmQsIENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVj
dCwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KTsK
ICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC03OCw3ICs3OCw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0
YWJsZXM6OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKGNvbnN0IFNvCiAgICAgcmV0dXJuIGNyZWF0
ZUV4ZWN1dGFibGUobV92bSwgY29kZSwgbmFtZSwgY29uc3RydWN0b3JLaW5kLCBjb25zdHJ1Y3RB
YmlsaXR5LCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8pOwogfQogCi1VbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKFZN
JiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBD
b25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVj
dEFiaWxpdHksIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyKQorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6
Y3JlYXRlRXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgY29uc3Qg
SWRlbnRpZmllciYgbmFtZSwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgQ29uc3Ry
dWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBu
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQpCiB7CiAgICAgLy8gRklYTUU6IENhbiB3ZSBqdXN0IG1ha2UgTWV0
YURhdGEgY29tcHV0YXRpb24gYmUgY29uc3RleHByIGFuZCBoYXZlIHRoZSBjb21waWxlciBkbyB0
aGlzIGZvciB1cz8KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTkzMjcyCkBAIC0yNTEsNyArMjUxLDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0IFMKICAg
ICAgICAgfQogICAgIH0KIAotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlv
bkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBzb3Vy
Y2UsICZtZXRhZGF0YSwga2luZCwgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2Rl
OjpDbGFzc2ljLCBXVEY6Om51bGxvcHQsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgbmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKTsK
KyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSh2bSwgc291cmNlLCAmbWV0YWRhdGEsIGtp
bmQsIGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgV1RGOjpu
dWxsb3B0LCBXVEY6Om51bGxvcHQsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgbmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBpc0J1aWx0aW5EZWZh
dWx0Q2xhc3NDb25zdHJ1Y3Rvcik7CiAgICAgcmV0dXJuIGZ1bmN0aW9uRXhlY3V0YWJsZTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRh
Ymxlcy5oCmluZGV4IDQ1MTYzOGU4NzNmNy4uNDNlMzgyNzViMWI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCkBAIC01OCw5
ICs1OCw5IEBAIFNvdXJjZUNvZGUgbmFtZSMjU291cmNlKCk7CiAjdW5kZWYgRVhQT1NFX0JVSUxU
SU5fRVhFQ1VUQUJMRVMKIAogICAgIHN0YXRpYyBTb3VyY2VDb2RlIGRlZmF1bHRDb25zdHJ1Y3Rv
clNvdXJjZUNvZGUoQ29uc3RydWN0b3JLaW5kKTsKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSogY3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yKENvbnN0cnVjdG9yS2luZCwgY29uc3QgSWRl
bnRpZmllciYgbmFtZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpOworICAgIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoQ29uc3RydWN0b3JL
aW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwg
UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOwogCi0gICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiBjcmVhdGVFeGVjdXRhYmxlKFZNJiwgY29uc3QgU291cmNlQ29kZSYsIGNvbnN0
IElkZW50aWZpZXImLCBDb25zdHJ1Y3RvcktpbmQsIENvbnN0cnVjdEFiaWxpdHksIE5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyKTsKKyAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqIGNyZWF0ZUV4ZWN1dGFibGUoVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgY29uc3QgSWRlbnRp
ZmllciYsIENvbnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJpbGl0eSwgTmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID0gUHJpdmF0ZUJyYW5kUmVxdWly
ZW1lbnQ6Ok5vbmUpOwogCiAgICAgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXggOWI5
YjY0ODgyMGFjLi5kOWNiNDk3MGIwM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAgLTE3MSw2ICsxNzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBtYWNybyh3ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbCkgXAogICAgIG1h
Y3JvKHdlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbCkgXAogICAgIG1hY3Jv
KGluc3RhbmNlRmllbGRJbml0aWFsaXplcikgXAorICAgIG1hY3JvKHByaXZhdGVCcmFuZCkgXAog
ICAgIG1hY3JvKGhhc093blByb3BlcnR5RnVuY3Rpb24pIFwKICAgICBtYWNybyhjcmVhdGVQcml2
YXRlU3ltYm9sKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5yYgppbmRleCAwNTdiMzA3OGMyYjcuLmFlOGRhNmUwOWJlYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC01ODgsNiArNTg4LDI2
IEBAIG9wIDpwdXRfcHJpdmF0ZV9uYW1lLAogICAgICAgICBuZXdTdHJ1Y3R1cmVJRDogU3RydWN0
dXJlSUQsCiAgICAgfQogCitvcCA6c2V0X3ByaXZhdGVfYnJhbmQsCisgICAgYXJnczogeworICAg
ICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIGJyYW5kOiBWaXJ0dWFsUmVnaXN0
ZXIsCisgICAgfSwKKyAgICBtZXRhZGF0YTogeworICAgICAgICBvbGRTdHJ1Y3R1cmVJRDogU3Ry
dWN0dXJlSUQsCisgICAgICAgIG5ld1N0cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJRCwKKyAgICB9CisK
K29wIDpjaGVja19wcml2YXRlX2JyYW5kLAorICAgIGFyZ3M6IHsKKyAgICAgICAgYmFzZTogVmly
dHVhbFJlZ2lzdGVyLAorICAgICAgICBicmFuZDogVmlydHVhbFJlZ2lzdGVyLAorICAgIH0sCisg
ICAgbWV0YWRhdGE6IHsKKyAgICAgICAgc3RydWN0dXJlSUQ6IFN0cnVjdHVyZUlELAorICAgIH0K
KyAgICAKKwogb3AgOnB1dF9ieV92YWwsCiAgICAgYXJnczogewogICAgICAgICBiYXNlOiBWaXJ0
dWFsUmVnaXN0ZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVVc2VEZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlVXNlRGVmLmNwcAppbmRleCA0NjBlOTczMDE2NjkuLjI3ZjE5MjQ4YzhjYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCkBAIC0y
MjgsNiArMjI4LDggQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKFZpcnR1
YWxSZWdpc3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJbnN0cnUKICAgICBVU0VTKE9wR2V0QnlW
YWwsIGJhc2UsIHByb3BlcnR5KQogICAgIFVTRVMoT3BHZXRQcml2YXRlTmFtZSwgYmFzZSwgcHJv
cGVydHkpCiAgICAgVVNFUyhPcFB1dFByaXZhdGVOYW1lLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUp
CisgICAgVVNFUyhPcFNldFByaXZhdGVCcmFuZCwgYmFzZSwgYnJhbmQpCisgICAgVVNFUyhPcENo
ZWNrUHJpdmF0ZUJyYW5kLCBiYXNlLCBicmFuZCkKICAgICBVU0VTKE9wSW5CeVZhbCwgYmFzZSwg
cHJvcGVydHkpCiAgICAgVVNFUyhPcE92ZXJyaWRlc0hhc0luc3RhbmNlLCBjb25zdHJ1Y3Rvciwg
aGFzSW5zdGFuY2VWYWx1ZSkKICAgICBVU0VTKE9wSW5zdGFuY2VvZiwgdmFsdWUsIHByb3RvdHlw
ZSkKQEAgLTM5Nyw2ICszOTksOCBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleElt
cGwodW5zaWduZWQgbnVtVmFycywgY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydQogICAgIGNhc2Ug
b3BfcHV0X2J5X3ZhbDoKICAgICBjYXNlIG9wX3B1dF9ieV92YWxfZGlyZWN0OgogICAgIGNhc2Ug
b3BfcHV0X3ByaXZhdGVfbmFtZToKKyAgICBjYXNlIG9wX3NldF9wcml2YXRlX2JyYW5kOgorICAg
IGNhc2Ugb3BfY2hlY2tfcHJpdmF0ZV9icmFuZDoKICAgICBjYXNlIG9wX3B1dF9pbnRlcm5hbF9m
aWVsZDoKICAgICBjYXNlIG9wX2RlZmluZV9kYXRhX3Byb3BlcnR5OgogICAgIGNhc2Ugb3BfZGVm
aW5lX2FjY2Vzc29yX3Byb3BlcnR5OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAppbmRleCA5MTc1NWVkZTZhYzguLjdmNzQ4MDA1YTBjOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTU0NCw2ICs1NDQs
OSBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRh
YmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICBMSU5LKE9wUHV0QnlWYWxEaXJl
Y3QpCiAgICAgICAgIExJTksoT3BQdXRQcml2YXRlTmFtZSkKIAorICAgICAgICBMSU5LKE9wU2V0
UHJpdmF0ZUJyYW5kKQorICAgICAgICBMSU5LKE9wQ2hlY2tQcml2YXRlQnJhbmQpCisKICAgICAg
ICAgTElOSyhPcE5ld0FycmF5KQogICAgICAgICBMSU5LKE9wTmV3QXJyYXlXaXRoU2l6ZSkKICAg
ICAgICAgTElOSyhPcE5ld0FycmF5QnVmZmVyLCBhcnJheUFsbG9jYXRpb25Qcm9maWxlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAppbmRleCA0
OWVkZDUyODVkNWMuLmNkNTlmYjRhNzMzZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKQEAgLTM2LDkgKzM2LDEwIEBAIGVudW0gY2xhc3Mg
TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgOiB1aW50OF90IHsgTm8sIFllcyB9OwogLy8gRklY
TUU6IFRoZXNlIGZsYWdzLCBQYXJzZXJNb2RlcyBhbmQgcHJvcGFnYXRpb24gdG8gWFhYQ29kZUJs
b2NrcyBzaG91bGQgYmUgcmVvcmdhbml6ZWQuCiAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTUxNTQ3CiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1
dGFibGVJbmZvKGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0
aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgSlNQYXJzZXJTY3Jp
cHRNb2RlIHNjcmlwdE1vZGUsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIFNvdXJjZVBhcnNl
TW9kZSBwYXJzZU1vZGUsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29s
IGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNDbGFzc0NvbnRleHQsIEV2YWxDb250ZXh0
VHlwZSBldmFsQ29udGV4dFR5cGUpCisgICAgRXhlY3V0YWJsZUluZm8oYm9vbCB1c2VzRXZhbCwg
Ym9vbCBpc0NvbnN0cnVjdG9yLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRS
ZXF1aXJlbWVudCwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JLaW5kIGNvbnN0
cnVjdG9yS2luZCwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIFN1cGVyQmluZGluZyBz
dXBlckJpbmRpbmcsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIERlcml2ZWRDb250ZXh0VHlw
ZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXND
bGFzc0NvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUpCiAgICAgICAgIDog
bV91c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzQ29uc3RydWN0b3IoaXNDb25zdHJ1
Y3RvcikKKyAgICAgICAgLCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50KHN0YXRpY19jYXN0PHVu
c2lnbmVkPihwcml2YXRlQnJhbmRSZXF1aXJlbWVudCkpCiAgICAgICAgICwgbV9pc0J1aWx0aW5G
dW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikKICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkKICAgICAgICAgLCBtX3N1cGVy
QmluZGluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3VwZXJCaW5kaW5nKSkKQEAgLTU3LDYgKzU4
LDcgQEAgc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKIAogICAgIGJvb2wgdXNlc0V2YWwoKSBjb25z
dCB7IHJldHVybiBtX3VzZXNFdmFsOyB9CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0NvbnN0cnVjdG9yOyB9CisgICAgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQg
cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxQcml2
YXRlQnJhbmRSZXF1aXJlbWVudD4obV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7IH0KICAgICBi
b29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlv
bjsgfQogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQogICAg
IFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxT
dXBlckJpbmRpbmc+KG1fc3VwZXJCaW5kaW5nKTsgfQpAQCAtNzEsNiArNzMsNyBAQCBzdHJ1Y3Qg
RXhlY3V0YWJsZUluZm8gewogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX3VzZXNFdmFsIDogMTsK
ICAgICB1bnNpZ25lZCBtX2lzQ29uc3RydWN0b3IgOiAxOworICAgIHVuc2lnbmVkIG1fcHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQgOiAxOwogICAgIHVuc2lnbmVkIG1faXNCdWlsdGluRnVuY3Rpb24g
OiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKICAgICB1bnNpZ25lZCBt
X3N1cGVyQmluZGluZyA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCBiM2FkYzBiNzdlYjcuLjkzZGZmNzc0MmQz
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suY3BwCkBAIC02OSw2ICs2OSwxMCBAQCBVbmxpbmtlZENvZGVCbG9jazo6VW5saW5r
ZWRDb2RlQmxvY2soVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29kZVR5cGUgY29kZQog
ICAgICAgICBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KGhvbGRMb2NrKGNlbGxMb2NrKCkpKTsK
ICAgICAgICAgbV9yYXJlRGF0YS0+bV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6WWVzKTsKICAgICB9
CisgICAgaWYgKGluZm8ucHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSA9PSBQcml2YXRlQnJhbmRS
ZXF1aXJlbWVudDo6TmVlZGVkKSB7CisgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3Nhcnko
aG9sZExvY2soY2VsbExvY2soKSkpOworICAgICAgICBtX3JhcmVEYXRhLT5tX3ByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByaXZhdGVCcmFuZFJlcXVpcmVt
ZW50OjpOZWVkZWQpOworICAgIH0KIH0KIAogdm9pZCBVbmxpbmtlZENvZGVCbG9jazo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCAwMGRj
NjE2MzM1ZmQuLjFmNTFlY2U1ZDZmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTI2Niw2ICsyNjYsMTMgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vOwogICAgIH0K
IAorICAgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkg
Y29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX3JhcmVEYXRhKQorICAgICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PFByaXZhdGVCcmFuZFJlcXVpcmVtZW50PihtX3JhcmVEYXRhLT5tX3ByaXZh
dGVCcmFuZFJlcXVpcmVtZW50KTsKKyAgICAgICAgcmV0dXJuIFByaXZhdGVCcmFuZFJlcXVpcmVt
ZW50OjpOb25lOworICAgIH0KKwogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0Owog
CiAgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBsaXZlbmVzc0FuYWx5c2lzKENvZGVCbG9j
ayogY29kZUJsb2NrKQpAQCAtNDA3LDYgKzQxNCw3IEBAIHB1YmxpYzoKICAgICAgICAgUmVmQ291
bnRlZEFycmF5PENvbnN0YW50SWRlbnRpZmllclNldEVudHJ5PiBtX2NvbnN0YW50SWRlbnRpZmll
clNldHM7CiAKICAgICAgICAgdW5zaWduZWQgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA6
IDE7CisgICAgICAgIHVuc2lnbmVkIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgOiAxOwogICAg
IH07CiAKICAgICBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNldChJbnN0cnVjdGlvblN0cmVhbTo6T2Zm
c2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9ja0dlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmgKaW5kZXggMmViOTg0YzFiMDVhLi45NGM2ODcwZTk5
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9ja0dlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5oCkBAIC01MCw2ICs1MCw3IEBAIHB1YmxpYzoKICAg
ICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2st
PnN1cGVyQmluZGluZygpOyB9CiAgICAgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUoKSBj
b25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+c2NyaXB0TW9kZSgpOyB9CiAgICAgTmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSBjb25zdCB7IHJl
dHVybiBtX2NvZGVCbG9jay0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKTsgfQorICAgIFBy
aXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9jb2RlQmxvY2stPnByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCk7IH0KICAgICBib29s
IHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnVzZXNFdmFsKCk7IH0KICAg
ICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2st
PnBhcnNlTW9kZSgpOyB9CiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSB7IHJldHVybiBtX2Nv
ZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9uKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCmlu
ZGV4IDZiMzcxZjUzOTU3YS4uNjgyMTQxMDEwNDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5j
cHAKQEAgLTcwLDExICs3MCwxMiBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayog
Z2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogCiAgICAgYm9vbCBpc0NsYXNzQ29u
dGV4dCA9IGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpID09IFN1cGVyQmluZGluZzo6TmVlZGVk
OwogCi0gICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jazo6Y3JlYXRlKHZtLCBGdW5jdGlvbkNvZGUsIEV4ZWN1dGFibGVJbmZvKGZ1
bmN0aW9uLT51c2VzRXZhbCgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0aW9uS2lu
ZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwgZXhlY3V0YWJsZS0+Y29uc3RydWN0b3JLaW5k
KCksIHNjcmlwdE1vZGUsIGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpLCBwYXJzZU1vZGUsIGV4
ZWN1dGFibGUtPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBleGVjdXRhYmxlLT5uZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplcigpLCBmYWxzZSwgaXNDbGFzc0NvbnRleHQsIEV2YWxDb250ZXh0VHlwZTo6
RnVuY3Rpb25FdmFsQ29udGV4dCksIGNvZGVHZW5lcmF0aW9uTW9kZSk7CisgICAgVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3Jl
YXRlKHZtLCBGdW5jdGlvbkNvZGUsIEV4ZWN1dGFibGVJbmZvKGZ1bmN0aW9uLT51c2VzRXZhbCgp
LCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGV4ZWN1dGFibGUtPnByaXZhdGVCcmFuZFJlcXVp
cmVtZW50KCksIGZ1bmN0aW9uS2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwgZXhlY3V0
YWJsZS0+Y29uc3RydWN0b3JLaW5kKCksIHNjcmlwdE1vZGUsIGV4ZWN1dGFibGUtPnN1cGVyQmlu
ZGluZygpLCBwYXJzZU1vZGUsIGV4ZWN1dGFibGUtPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBleGVj
dXRhYmxlLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBmYWxzZSwgaXNDbGFzc0NvbnRl
eHQsIEV2YWxDb250ZXh0VHlwZTo6RnVuY3Rpb25FdmFsQ29udGV4dCksIGNvZGVHZW5lcmF0aW9u
TW9kZSk7CiAKICAgICBhdXRvIHBhcmVudFNjb3BlVERaVmFyaWFibGVzID0gZXhlY3V0YWJsZS0+
cGFyZW50U2NvcGVURFpWYXJpYWJsZXMoKTsKKyAgICBQcml2YXRlTmFtZUVudmlyb25tZW50IHBh
cmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQgPSBleGVjdXRhYmxlLT5wYXJlbnRQcml2YXRlTmFt
ZUVudmlyb25tZW50KCk7CiAgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBleGVjdXRhYmxlLT5pc0lu
U3RyaWN0Q29udGV4dCgpID8gRUNNQU1vZGU6OnN0cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgp
OwotICAgIGVycm9yID0gQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKHZtLCBmdW5jdGlvbi5n
ZXQoKSwgc291cmNlLCByZXN1bHQsIGNvZGVHZW5lcmF0aW9uTW9kZSwgcGFyZW50U2NvcGVURFpW
YXJpYWJsZXMsIGVjbWFNb2RlKTsKKyAgICBlcnJvciA9IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5l
cmF0ZSh2bSwgZnVuY3Rpb24uZ2V0KCksIHNvdXJjZSwgcmVzdWx0LCBjb2RlR2VuZXJhdGlvbk1v
ZGUsIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCAmcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVu
dCwgZWNtYU1vZGUpOwogCiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC04Miw3ICs4Myw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHBh
cmVudFNvdXJjZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25L
aW5kIGtpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3Jp
cHRNb2RlIHNjcmlwdE1vZGUsIE9wdGlvbmFsPFZlY3RvcjxDb21wYWN0VERaRW52aXJvbm1lbnRN
YXA6OkhhbmRsZT4+IHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBEZXJpdmVkQ29udGV4dFR5cGUg
ZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplciwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvcikK
K1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBwYXJlbnRTb3Vy
Y2UsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBraW5k
LCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZSBz
Y3JpcHRNb2RlLCBPcHRpb25hbDxWZWN0b3I8Q29tcGFjdFREWkVudmlyb25tZW50TWFwOjpIYW5k
bGU+PiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgT3B0aW9uYWw8UHJpdmF0ZU5hbWVFbnZpcm9u
bWVudD4gcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgRGVyaXZlZENvbnRleHRUeXBlIGRl
cml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIsICBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1
aXJlbWVudCwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvcikKICAgICA6IEJh
c2Uodm0sIHN0cnVjdHVyZSkKICAgICAsIG1fZmlyc3RMaW5lT2Zmc2V0KG5vZGUtPmZpcnN0TGlu
ZSgpIC0gcGFyZW50U291cmNlLmZpcnN0TGluZSgpLm9uZUJhc2VkSW50KCkpCiAgICAgLCBtX2lz
SW5TdHJpY3RDb250ZXh0KG5vZGUtPmlzSW5TdHJpY3RDb250ZXh0KCkpCkBAIC0xMDMsNiArMTA0
LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3QKICAgICAsIG1fdHlwZVByb2ZpbGluZ1N0YXJ0
T2Zmc2V0KG5vZGUtPmZ1bmN0aW9uS2V5d29yZFN0YXJ0KCkpCiAgICAgLCBtX3R5cGVQcm9maWxp
bmdFbmRPZmZzZXQobm9kZS0+c3RhcnRTdGFydE9mZnNldCgpICsgbm9kZS0+c291cmNlKCkubGVu
Z3RoKCkgLSAxKQogICAgICwgbV9wYXJhbWV0ZXJDb3VudChub2RlLT5wYXJhbWV0ZXJDb3VudCgp
KQorICAgICwgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpKQogICAgICwgbV9mZWF0dXJlcygwKQogICAgICwgbV9z
b3VyY2VQYXJzZU1vZGUobm9kZS0+cGFyc2VNb2RlKCkpCiAgICAgLCBtX2NvbnN0cnVjdG9yS2lu
ZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5kKCkpKQpAQCAtMTIy
LDEyICsxMjQsMTUgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3QKICAgICBBU1NFUlQobV9zY3Jp
cHRNb2RlID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzY3JpcHRNb2RlKSk7CiAgICAgQVNTRVJU
KG1fc3VwZXJCaW5kaW5nID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihub2RlLT5zdXBlckJpbmRp
bmcoKSkpOwogICAgIEFTU0VSVChtX2Rlcml2ZWRDb250ZXh0VHlwZSA9PSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oZGVyaXZlZENvbnRleHRUeXBlKSk7CisgICAgQVNTRVJUKG1fcHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHByaXZhdGVCcmFuZFJlcXVpcmVt
ZW50KSk7CiAgICAgQVNTRVJUKCEobV9pc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvciAm
JiBjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpKTsKICAgICBBU1NF
UlQoIW1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgfHwgKGlzQ2xhc3NDb25zdHJ1Y3RvckZ1
bmN0aW9uKCkgfHwgZGVyaXZlZENvbnRleHRUeXBlID09IERlcml2ZWRDb250ZXh0VHlwZTo6RGVy
aXZlZENvbnN0cnVjdG9yQ29udGV4dCkpOwogICAgIGlmICghbm9kZS0+Y2xhc3NTb3VyY2UoKS5p
c051bGwoKSkKICAgICAgICAgc2V0Q2xhc3NTb3VyY2Uobm9kZS0+Y2xhc3NTb3VyY2UoKSk7CiAg
ICAgaWYgKHBhcmVudFNjb3BlVERaVmFyaWFibGVzKQogICAgICAgICBlbnN1cmVSYXJlRGF0YSgp
Lm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXMgPSBXVEZNb3ZlKCpwYXJlbnRTY29wZVREWlZhcmlh
Ymxlcyk7CisgICAgaWYgKHBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQpCisgICAgICAgIGVu
c3VyZVJhcmVEYXRhKCkubV9wYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50ID0gV1RGTW92ZSgq
cGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCk7CiB9CiAKIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlOjp+VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUu
aAppbmRleCBiNjI3ZWFiN2M2ZGIuLjk1YWFlODZiMzU3MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
LmgKQEAgLTcwLDEwICs3MCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAmdm0udW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5zcGFjZTsKICAgICB9CiAKLSAgICBzdGF0aWMgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5k
IHVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHks
IEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBPcHRpb25hbDxWZWN0b3I8Q29tcGFjdFRE
WkVudmlyb25tZW50TWFwOjpIYW5kbGU+PiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRGVyaXZl
ZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNCdWlsdGluRGVmYXVsdENsYXNz
Q29uc3RydWN0b3IgPSBmYWxzZSkKKyAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqIGNyZWF0ZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25NZXRh
ZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIHVubGlua2VkRnVuY3Rpb25LaW5k
LCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZSBz
Y3JpcHRNb2RlLCBPcHRpb25hbDxWZWN0b3I8Q29tcGFjdFREWkVudmlyb25tZW50TWFwOjpIYW5k
bGU+PiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgT3B0aW9uYWw8UHJpdmF0ZU5hbWVFbnZpcm9u
bWVudD4gcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgRGVyaXZlZENvbnRleHRUeXBlIGRl
cml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVp
cmVtZW50LCBib29sIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yID0gZmFsc2UpCiAg
ICAgewogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0uaGVh
cCkpCi0gICAgICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0udW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgbm9kZSwgdW5saW5r
ZWRGdW5jdGlvbktpbmQsIGNvbnN0cnVjdEFiaWxpdHksIHNjcmlwdE1vZGUsIFdURk1vdmUocGFy
ZW50U2NvcGVURFpWYXJpYWJsZXMpLCBkZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyLCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3Rvcik7CisgICAgICAg
ICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0udW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgbm9kZSwgdW5saW5rZWRGdW5jdGlvbktp
bmQsIGNvbnN0cnVjdEFiaWxpdHksIHNjcmlwdE1vZGUsIFdURk1vdmUocGFyZW50U2NvcGVURFpW
YXJpYWJsZXMpLCBXVEZNb3ZlKHBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQpLCBkZXJpdmVk
Q29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBwcml2YXRlQnJhbmRSZXF1
aXJlbWVudCwgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IpOwogICAgICAgICBpbnN0
YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAg
fQpAQCAtMTQzLDYgKzE0Myw4IEBAIHB1YmxpYzoKICAgICBDb2RlRmVhdHVyZXMgZmVhdHVyZXMo
KSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzOyB9CiAgICAgYm9vbCBoYXNDYXB0dXJlZFZhcmlh
YmxlcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXM7IH0KIAorICAgIFBy
aXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ+KG1fcHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQpOyB9CisKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVj
dGlvbiA9IHRydWU7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIApAQCAtMTc0
LDYgKzE3NiwxMyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICBy
ZXR1cm4gbV9yYXJlRGF0YS0+bV9wYXJlbnRTY29wZVREWlZhcmlhYmxlczsKICAgICB9CisKKyAg
ICBQcml2YXRlTmFtZUVudmlyb25tZW50IHBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQoKSBj
b25zdAorICAgIHsKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICAgICAgcmV0dXJu
IFByaXZhdGVOYW1lRW52aXJvbm1lbnQoKTsKKyAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1f
cGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudDsKKyAgICB9CiAgICAgCiAgICAgYm9vbCBpc0Fy
cm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBpc0Fycm93RnVuY3Rpb25QYXJzZU1vZGUocGFy
c2VNb2RlKCkpOyB9CiAKQEAgLTIwOSw2ICsyMTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmlu
ZyBtX3NvdXJjZVVSTERpcmVjdGl2ZTsKICAgICAgICAgU3RyaW5nIG1fc291cmNlTWFwcGluZ1VS
TERpcmVjdGl2ZTsKICAgICAgICAgVmVjdG9yPENvbXBhY3RURFpFbnZpcm9ubWVudE1hcDo6SGFu
ZGxlPiBtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzOworICAgICAgICBQcml2YXRlTmFtZUVudmly
b25tZW50IG1fcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudDsKICAgICAgICAgVmVjdG9yPEpT
VGV4dFBvc2l0aW9uPiBtX2luc3RhbmNlRmllbGRMb2NhdGlvbnM7CiAgICAgfTsKIApAQCAtMjI5
LDcgKzIzOSw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUoVk0mLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgRnVuY3Rp
b25NZXRhZGF0YU5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSwg
SlNQYXJzZXJTY3JpcHRNb2RlLCBPcHRpb25hbDxWZWN0b3I8Q29tcGFjdFREWkVudmlyb25tZW50
TWFwOjpIYW5kbGU+PiwgIEpTQzo6RGVyaXZlZENvbnRleHRUeXBlLCBKU0M6Ok5lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyLCBib29sIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKTsK
KyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYsIFN0cnVjdHVyZSosIGNvbnN0IFNv
dXJjZUNvZGUmLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBD
b25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUsIE9wdGlvbmFsPFZlY3RvcjxDb21w
YWN0VERaRW52aXJvbm1lbnRNYXA6OkhhbmRsZT4+LCBPcHRpb25hbDxQcml2YXRlTmFtZUVudmly
b25tZW50PiwgIEpTQzo6RGVyaXZlZENvbnRleHRUeXBlLCBKU0M6Ok5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0
Q2xhc3NDb25zdHJ1Y3Rvcik7CiAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoRGVjb2Rl
ciYsIGNvbnN0IENhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZSYpOwogCiAgICAgc3RhdGljIHZvaWQg
dmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwpAQCAtMjYxLDcgKzI3MSw4IEBA
IHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9pc0NhY2hlZCA6IDE7CiAgICAgdW5zaWduZWQgbV90
eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQ7CiAgICAgdW5zaWduZWQgbV90eXBlUHJvZmlsaW5nRW5k
T2Zmc2V0OwotICAgIHVuc2lnbmVkIG1fcGFyYW1ldGVyQ291bnQ7CisgICAgdW5zaWduZWQgbV9w
YXJhbWV0ZXJDb3VudCA6IDMxOworICAgIHVuc2lnbmVkIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQgOiAxOwogICAgIENvZGVGZWF0dXJlcyBtX2ZlYXR1cmVzOwogICAgIFNvdXJjZVBhcnNlTW9k
ZSBtX3NvdXJjZVBhcnNlTW9kZTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCmluZGV4IGM5ZTVlYTY2ZjkyYS4uNzY5ZTg3ZjhiOWY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcApAQCAtMjg5LDcgKzI4OSw3IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJh
dG9yOjpnZW5lcmF0ZSgpCiAgICAgcmV0dXJuIFBhcnNlckVycm9yKFBhcnNlckVycm9yOjpFcnJv
ck5vbmUpOwogfQogCi1CeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZt
LCBQcm9ncmFtTm9kZSogcHJvZ3JhbU5vZGUsIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogY29k
ZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUs
IGNvbnN0IENhY2hlZFREWlN0YWNrJiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRUNNQU1vZGUg
ZWNtYU1vZGUpCitCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBQ
cm9ncmFtTm9kZSogcHJvZ3JhbU5vZGUsIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogY29kZUJs
b2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNv
bnN0IENhY2hlZFREWlN0YWNrJiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgY29uc3QgUHJpdmF0
ZU5hbWVFbnZpcm9ubWVudCosIEVDTUFNb2RlIGVjbWFNb2RlKQogICAgIDogQnl0ZWNvZGVHZW5l
cmF0b3JCYXNlKG1ha2VVbmlxdWU8VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I+KHZtLCBjb2Rl
QmxvY2spLCBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxS
ZWdpc3RlcnMoKSkKICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2RlKGNvZGVHZW5lcmF0aW9uTW9k
ZSkKICAgICAsIG1fc2NvcGVOb2RlKHByb2dyYW1Ob2RlKQpAQCAtMzM2LDcgKzMzNiw3IEBAIEJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBw
cm9ncmFtTm9kZSwgVW5saW5rZWRQCiAgICAgfQogfQogCi1CeXRlY29kZUdlbmVyYXRvcjo6Qnl0
ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5r
ZWRGdW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25N
b2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IENhY2hlZFREWlN0YWNrJiBwYXJlbnRTY29w
ZVREWlZhcmlhYmxlcywgRUNNQU1vZGUgZWNtYU1vZGUpCitCeXRlY29kZUdlbmVyYXRvcjo6Qnl0
ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5r
ZWRGdW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25N
b2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IENhY2hlZFREWlN0YWNrJiBwYXJlbnRTY29w
ZVREWlZhcmlhYmxlcywgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogcGFyZW50UHJpdmF0
ZU5hbWVFbnZpcm9ubWVudCwgRUNNQU1vZGUgZWNtYU1vZGUpCiAgICAgOiBCeXRlY29kZUdlbmVy
YXRvckJhc2UobWFrZVVuaXF1ZTxVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcj4odm0sIGNvZGVC
bG9jayksIENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJl
Z2lzdGVycygpKQogICAgICwgbV9jb2RlR2VuZXJhdGlvbk1vZGUoY29kZUdlbmVyYXRpb25Nb2Rl
KQogICAgICwgbV9zY29wZU5vZGUoZnVuY3Rpb25Ob2RlKQpAQCAtMzU5LDYgKzM1OSw4IEBAIEJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSog
ZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQogICAgICwg
bV9kZXJpdmVkQ29udGV4dFR5cGUoY29kZUJsb2NrLT5kZXJpdmVkQ29udGV4dFR5cGUoKSkKIHsK
KyAgICBwdXNoUHJpdmF0ZUFjY2Vzc05hbWVzKHBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQp
OworCiAgICAgU3ltYm9sVGFibGUqIGZ1bmN0aW9uU3ltYm9sVGFibGUgPSBTeW1ib2xUYWJsZTo6
Y3JlYXRlKG1fdm0pOwogICAgIGZ1bmN0aW9uU3ltYm9sVGFibGUtPnNldFVzZXNOb25TdHJpY3RF
dmFsKG1fdXNlc05vblN0cmljdEV2YWwpOwogICAgIGludCBzeW1ib2xUYWJsZUNvbnN0YW50SW5k
ZXggPSAwOwpAQCAtNzA4LDggKzcxMCwxMiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVH
ZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAg
ICAgICAgICAgICAgIGNhc2UgQ29uc3RydWN0b3JLaW5kOjpOb25lOgogICAgICAgICAgICAgICAg
IGNhc2UgQ29uc3RydWN0b3JLaW5kOjpCYXNlOgogICAgICAgICAgICAgICAgICAgICBlbWl0Q3Jl
YXRlVGhpcygmbV90aGlzUmVnaXN0ZXIpOworICAgICAgICAgICAgICAgICAgICBpZiAoT3B0aW9u
czo6dXNlUHJpdmF0ZU1ldGhvZHMoKSAmJiBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpID09IFBy
aXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOZWVkZWQpCisgICAgICAgICAgICAgICAgICAgICAgICBl
bWl0SW5zdGFsbFByaXZhdGVCcmFuZCgmbV90aGlzUmVnaXN0ZXIpOworCiAgICAgICAgICAgICAg
ICAgICAgIGlmIChPcHRpb25zOjp1c2VQdWJsaWNDbGFzc0ZpZWxkcygpKQogICAgICAgICAgICAg
ICAgICAgICAgICAgZW1pdEluc3RhbmNlRmllbGRJbml0aWFsaXphdGlvbklmTmVlZGVkKCZtX3Ro
aXNSZWdpc3RlciwgJm1fY2FsbGVlUmVnaXN0ZXIsIG1fc2NvcGVOb2RlLT5wb3NpdGlvbigpLCBt
X3Njb3BlTm9kZS0+cG9zaXRpb24oKSwgbV9zY29wZU5vZGUtPnBvc2l0aW9uKCkpOworCiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgQ29uc3RydWN0b3JL
aW5kOjpFeHRlbmRzOgogICAgICAgICAgICAgICAgICAgICBtb3ZlRW1wdHlWYWx1ZSgmbV90aGlz
UmVnaXN0ZXIpOwpAQCAtODQwLDcgKzg0Niw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29k
ZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAg
ICAgcHVzaExleGljYWxTY29wZShtX3Njb3BlTm9kZSwgVERaQ2hlY2tPcHRpbWl6YXRpb246Ok9w
dGltaXplLCBOZXN0ZWRTY29wZVR5cGU6OklzTm90TmVzdGVkLCBudWxscHRyLCBzaG91bGRJbml0
aWFsaXplQmxvY2tTY29wZWRGdW5jdGlvbnMpOwogfQogCi1CeXRlY29kZUdlbmVyYXRvcjo6Qnl0
ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2VkRXZhbENv
ZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2Vu
ZXJhdGlvbk1vZGUsIGNvbnN0IENhY2hlZFREWlN0YWNrJiBwYXJlbnRTY29wZVREWlZhcmlhYmxl
cywgRUNNQU1vZGUgZWNtYU1vZGUpCitCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0
b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2VkRXZhbENvZGVCbG9jayogY29k
ZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUs
IGNvbnN0IENhY2hlZFREWlN0YWNrJiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgY29uc3QgUHJp
dmF0ZU5hbWVFbnZpcm9ubWVudCogcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgRUNNQU1v
ZGUgZWNtYU1vZGUpCiAgICAgOiBCeXRlY29kZUdlbmVyYXRvckJhc2UobWFrZVVuaXF1ZTxVbmxp
bmtlZENvZGVCbG9ja0dlbmVyYXRvcj4odm0sIGNvZGVCbG9jayksIENvZGVCbG9jazo6bGxpbnRC
YXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKQogICAgICwgbV9jb2Rl
R2VuZXJhdGlvbk1vZGUoY29kZUdlbmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5vZGUoZXZh
bE5vZGUpCkBAIC04NTgsNiArODY0LDggQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2Vu
ZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2QKIHsKICAg
ICBtX2NvZGVCbG9jay0+c2V0TnVtUGFyYW1ldGVycygxKTsKIAorICAgIHB1c2hQcml2YXRlQWNj
ZXNzTmFtZXMocGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCk7CisgICAgCiAgICAgbV9wYXJl
bnRTY29wZVREWlN0YWNrU2l6ZSA9IHBhcmVudFNjb3BlVERaVmFyaWFibGVzLnNpemUoKTsKICAg
ICBtX2NhY2hlZFZhcmlhYmxlc1VuZGVyVERaID0gcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7CiAK
QEAgLTkwNCw3ICs5MTIsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3Io
Vk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2VkRXZhbENvZAogICAgIHB1c2hMZXhp
Y2FsU2NvcGUobV9zY29wZU5vZGUsIFREWkNoZWNrT3B0aW1pemF0aW9uOjpPcHRpbWl6ZSwgTmVz
dGVkU2NvcGVUeXBlOjpJc05vdE5lc3RlZCwgbnVsbHB0ciwgc2hvdWxkSW5pdGlhbGl6ZUJsb2Nr
U2NvcGVkRnVuY3Rpb25zKTsKIH0KIAotQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJh
dG9yKFZNJiB2bSwgTW9kdWxlUHJvZ3JhbU5vZGUqIG1vZHVsZVByb2dyYW1Ob2RlLCBVbmxpbmtl
ZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0
aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBDYWNoZWRURFpTdGFjayYgcGFyZW50
U2NvcGVURFpWYXJpYWJsZXMsIEVDTUFNb2RlIGVjbWFNb2RlKQorQnl0ZWNvZGVHZW5lcmF0b3I6
OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgTW9kdWxlUHJvZ3JhbU5vZGUqIG1vZHVsZVByb2dy
YW1Ob2RlLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9u
U2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBDYWNoZWRU
RFpTdGFjayYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIGNvbnN0IFByaXZhdGVOYW1lRW52aXJv
bm1lbnQqLCBFQ01BTW9kZSBlY21hTW9kZSkKICAgICA6IEJ5dGVjb2RlR2VuZXJhdG9yQmFzZSht
YWtlVW5pcXVlPFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yPih2bSwgY29kZUJsb2NrKSwgQ29k
ZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkp
CiAgICAgLCBtX2NvZGVHZW5lcmF0aW9uTW9kZShjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAgLCBt
X3Njb3BlTm9kZShtb2R1bGVQcm9ncmFtTm9kZSkKQEAgLTE4OTYsOCArMTkwNCwxMCBAQCBib29s
IEJ5dGVjb2RlR2VuZXJhdG9yOjppbnN0YW50aWF0ZUxleGljYWxWYXJpYWJsZXMoY29uc3QgVmFy
aWFibGVFbnZpcm9ubWVudCYgbAogCiAgICAgICAgICAgICAvLyBGSVhNRTogb25seSBkbyB0aGlz
IGlmIHRoZXJlIGlzIGFuIGV2YWwoKSB3aXRoaW4gYSBuZXN0ZWQgc2NvcGUgLS0tIG90aGVyd2lz
ZSBpdCBpc24ndCBuZWVkZWQuCiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NjYzCi0gICAgICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNQ
cml2YXRlTmFtZSgpKQotICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5hZGRQcml2YXRlTmFt
ZShlbnRyeS5rZXkuZ2V0KCkpOworICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVlLmlzUHJpdmF0
ZUZpZWxkKCkpCisgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUtPmFkZFByaXZhdGVOYW1lKGVu
dHJ5LmtleS5nZXQoKSwgUHJpdmF0ZU5hbWVFbnRyeShQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6
OklzRGVjbGFyZWQpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGVudHJ5LnZhbHVlLmlzUHJpdmF0
ZU1ldGhvZCgpKQorICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5hZGRQcml2YXRlTmFtZShl
bnRyeS5rZXkuZ2V0KCksIFByaXZhdGVOYW1lRW50cnkoUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRz
OjpJc0RlY2xhcmVkIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc01ldGhvZCkpOwogICAg
ICAgICB9CiAgICAgfQogICAgIHJldHVybiBoYXNDYXB0dXJlZFZhcmlhYmxlczsKQEAgLTI3MTgs
NyArMjcyOCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlWYWwo
UmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdGhpc1ZhCiAgICAgcmV0dXJuIHZhbHVlOwog
fQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdEdldEJ5VmFsKFJl
Z2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpCitS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFByaXZhdGVOYW1lKFJlZ2lzdGVy
SUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpCiB7CiAgICAg
T3BHZXRQcml2YXRlTmFtZTo6ZW1pdCh0aGlzLCBkc3QsIGJhc2UsIHByb3BlcnR5KTsKICAgICBy
ZXR1cm4gZHN0OwpAQCAtMjc1NCwxMiArMjc2NCw0NCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdERlZmluZVByaXZhdGVGaWVsZChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3Rl
cgogICAgIHJldHVybiB2YWx1ZTsKIH0KIAordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENy
ZWF0ZVByaXZhdGVCcmFuZChSZWdpc3RlcklEKiBzY29wZSwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90RW5kKQoreworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjcmVhdGVQcml2YXRl
U3ltYm9sID0gbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6
Y3JlYXRlUHJpdmF0ZVN5bWJvbCk7CisKKyAgICBDYWxsQXJndW1lbnRzIGFyZ3VtZW50cygqdGhp
cywgbnVsbHB0ciwgMCk7CisgICAgZW1pdExvYWQoYXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBq
c1VuZGVmaW5lZCgpKTsKKyAgICBSZWdpc3RlcklEKiBuZXdTeW1ib2wgPSBlbWl0Q2FsbChmaW5h
bERlc3RpbmF0aW9uKG51bGxwdHIsIGNyZWF0ZVByaXZhdGVTeW1ib2wuZ2V0KCkpLCBjcmVhdGVQ
cml2YXRlU3ltYm9sLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGFyZ3VtZW50cywgZGl2b3Qs
IGRpdm90U3RhcnQsIGRpdm90RW5kLCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOworCisgICAgVmFyaWFi
bGUgcHJpdmF0ZUJyYW5kVmFyID0gdmFyaWFibGUocHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1l
cygpLnByaXZhdGVCcmFuZFByaXZhdGVOYW1lKCkpOworCisgICAgZW1pdFB1dFRvU2NvcGUoc2Nv
cGUsIHByaXZhdGVCcmFuZFZhciwgbmV3U3ltYm9sLCBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5p
dGlhbGl6YXRpb25Nb2RlOjpJbml0aWFsaXphdGlvbik7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRJbnN0YWxsUHJpdmF0ZUJyYW5kKFJlZ2lzdGVySUQqIHRhcmdldCkKK3sKKyAg
ICBWYXJpYWJsZSBwcml2YXRlQnJhbmRWYXIgPSB2YXJpYWJsZShwcm9wZXJ0eU5hbWVzKCkuYnVp
bHRpbk5hbWVzKCkucHJpdmF0ZUJyYW5kUHJpdmF0ZU5hbWUoKSk7CisgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHByaXZhdGVCcmFuZFZhclNjb3BlID0gZW1pdFJlc29sdmVTY29wZShudWxscHRyLCBw
cml2YXRlQnJhbmRWYXIpOworICAgIFJlZ2lzdGVySUQqIHByaXZhdGVCcmFuZFN5bWJvbCA9IGVt
aXRHZXRQcml2YXRlQnJhbmQobmV3VGVtcG9yYXJ5KCksIHByaXZhdGVCcmFuZFZhclNjb3BlLmdl
dCgpKTsKKyAgICBPcFNldFByaXZhdGVCcmFuZDo6ZW1pdCh0aGlzLCB0YXJnZXQsIHByaXZhdGVC
cmFuZFN5bWJvbCk7Cit9CisKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0
UHJpdmF0ZUJyYW5kKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc2NvcGUpCit7CisgICAg
VmFyaWFibGUgcHJpdmF0ZUJyYW5kVmFyID0gdmFyaWFibGUocHJvcGVydHlOYW1lcygpLmJ1aWx0
aW5OYW1lcygpLnByaXZhdGVCcmFuZFByaXZhdGVOYW1lKCkpOworICAgIHJldHVybiBlbWl0R2V0
RnJvbVNjb3BlKGRzdCwgc2NvcGUsIHByaXZhdGVCcmFuZFZhciwgVGhyb3dJZk5vdEZvdW5kKTsK
K30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcml2YXRlRmllbGRQdXQo
UmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVl
KQogewogICAgIE9wUHV0UHJpdmF0ZU5hbWU6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZh
bHVlLCBQcml2YXRlRmllbGRQdXRLaW5kOjpzZXQoKSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQog
Cit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2hlY2tQcml2YXRlQnJhbmQoUmVnaXN0ZXJJ
RCogYmFzZSwgUmVnaXN0ZXJJRCogYnJhbmRTeW1ib2wpCit7CisgICAgT3BDaGVja1ByaXZhdGVC
cmFuZDo6ZW1pdCh0aGlzLCBiYXNlLCBicmFuZFN5bWJvbCk7Cit9CisKIHZvaWQgQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRTdXBlclNhbXBsZXJCZWdpbigpCiB7CiAgICAgT3BTdXBlclNhbXBsZXJC
ZWdpbjo6ZW1pdCh0aGlzKTsKQEAgLTI4OTEsNiArMjkzMywzMiBAQCB2b2lkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpsaWZ0VERaQ2hlY2tJZlBvc3NpYmxlKGNvbnN0IFZhcmlhYmxlJiB2YXJpYWJsZSkK
ICAgICB9CiB9CiAKK2Jvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmlzUHJpdmF0ZU1ldGhvZChjb25z
dCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3ByaXZhdGVO
YW1lc1N0YWNrLnNpemUoKTsgaS0tOyApIHsKKyAgICAgICAgYXV0byYgbWFwID0gbV9wcml2YXRl
TmFtZXNTdGFja1tpXTsKKyAgICAgICAgYXV0byBpdCA9IG1hcC5maW5kKGlkZW50LmltcGwoKSk7
CisgICAgICAgIGlmIChpdCAhPSBtYXAuZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gaXQtPnZh
bHVlLmlzTWV0aG9kKCk7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjpwdXNoUHJpdmF0ZUFjY2Vzc05hbWVzKGNvbnN0IFByaXZhdGVOYW1l
RW52aXJvbm1lbnQqIGVudmlyb25tZW50KQoreworICAgIGlmICghZW52aXJvbm1lbnQgfHwgIWVu
dmlyb25tZW50LT5zaXplKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcHJpdmF0ZU5hbWVz
U3RhY2suYXBwZW5kKCplbnZpcm9ubWVudCk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OnBvcFByaXZhdGVBY2Nlc3NOYW1lcygpCit7CisgICAgQVNTRVJUKG1fcHJpdmF0ZU5hbWVzU3Rh
Y2suc2l6ZSgpKTsKKyAgICBtX3ByaXZhdGVOYW1lc1N0YWNrLnJlbW92ZUxhc3QoKTsKK30KKwog
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cHVzaFREWlZhcmlhYmxlcyhjb25zdCBWYXJpYWJsZUVu
dmlyb25tZW50JiBlbnZpcm9ubWVudCwgVERaQ2hlY2tPcHRpbWl6YXRpb24gb3B0aW1pemF0aW9u
LCBURFpSZXF1aXJlbWVudCByZXF1aXJlbWVudCkKIHsKICAgICBpZiAoIWVudmlyb25tZW50LnNp
emUoKSkKQEAgLTI5MTMsNiArMjk4MSwyOCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNo
VERaVmFyaWFibGVzKGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGVudmlyb25tZW50LAogICAg
IG1fY2FjaGVkVmFyaWFibGVzVW5kZXJURFouYXBwZW5kKHsgfSk7CiB9CiAKK09wdGlvbmFsPFBy
aXZhdGVOYW1lRW52aXJvbm1lbnQ+IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZXRBdmFpbGFibGVQcml2
YXRlQWNjZXNzTmFtZXMoKQoreworICAgIFByaXZhdGVOYW1lRW52aXJvbm1lbnQgcmVzdWx0Owor
ICAgIFNtYWxsUHRyU2V0PFVuaXF1ZWRTdHJpbmdJbXBsKiwgMTY+IGV4Y2x1ZGVkTmFtZXM7Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gbV9wcml2YXRlTmFtZXNTdGFjay5zaXplKCk7IGktLTsgKSB7
CisgICAgICAgIGF1dG8mIG1hcCA9IG1fcHJpdmF0ZU5hbWVzU3RhY2tbaV07CisgICAgICAgIGZv
ciAoYXV0byYgZW50cnkgOiBtYXApICB7CisgICAgICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNQ
cml2YXRlTWV0aG9kT3JBY2Vzc29yKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWV4Y2x1ZGVk
TmFtZXMuY29udGFpbnMoZW50cnkua2V5LmdldCgpKSkgeworICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQuYWRkKGVudHJ5LmtleSwgZW50cnkudmFsdWUpOworICAgICAgICAgICAgICAgICAgICBl
eGNsdWRlZE5hbWVzLmFkZChlbnRyeS5rZXkuZ2V0KCkpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGV4Y2x1ZGVkTmFtZXMuYWRkKGVudHJ5
LmtleS5nZXQoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIXJlc3VsdC5zaXplKCkp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwog
T3B0aW9uYWw8Qnl0ZWNvZGVHZW5lcmF0b3I6OkNhY2hlZFREWlN0YWNrPiBCeXRlY29kZUdlbmVy
YXRvcjo6Z2V0VmFyaWFibGVzVW5kZXJURFooKQogewogICAgIGF1dG8gYXNzZXJ0Q2FjaGVJc0Nv
aGVyZW50ID0gWyZdIHsKQEAgLTMxMjAsOSArMzIxMCw5IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0TmV3TWV0aG9kRGVmaW5pdGlvbihSZWdpc3RlcklEKiBkc3QsIE1ldGhv
ZERlCiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RGVmYXVsdENv
bnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2lu
ZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwKLSAgICBjb25zdCBJZGVudGlmaWVyJiBlY21hTmFt
ZSwgY29uc3QgU291cmNlQ29kZSYgY2xhc3NTb3VyY2UsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKQorICAgIGNvbnN0IElkZW50aWZpZXImIGVj
bWFOYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBjbGFzc1NvdXJjZSwgTmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVt
ZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KQogewotICAgIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBleGVjdXRhYmxlID0gbV92bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y3JlYXRlRGVm
YXVsdENvbnN0cnVjdG9yKGNvbnN0cnVjdG9yS2luZCwgbmFtZSwgbmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0g
bV92bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yKGNvbnN0
cnVjdG9yS2luZCwgbmFtZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50KTsKICAgICBleGVjdXRhYmxlLT5zZXRJbnZhbGlkVHlwZVByb2ZpbGluZ09m
ZnNldHMoKTsKICAgICBleGVjdXRhYmxlLT5zZXRFY21hTmFtZShlY21hTmFtZSk7CiAgICAgZXhl
Y3V0YWJsZS0+c2V0Q2xhc3NTb3VyY2UoY2xhc3NTb3VyY2UpOwpAQCAtMzE0NiwxMyArMzIzNiwx
NCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0luc3RhbmNlRmllbGRJ
bml0aWFsaXplckZ1bmN0aW9uKFJlZ2lzdGVySQogICAgIH0KIAogICAgIGF1dG8gdmFyaWFibGVz
VW5kZXJURFogPSBnZXRWYXJpYWJsZXNVbmRlclREWigpOworICAgIE9wdGlvbmFsPFByaXZhdGVO
YW1lRW52aXJvbm1lbnQ+IHBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQgPSBnZXRBdmFpbGFi
bGVQcml2YXRlQWNjZXNzTmFtZXMoKTsKICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0g
U291cmNlUGFyc2VNb2RlOjpJbnN0YW5jZUZpZWxkSW5pdGlhbGl6ZXJNb2RlOwogICAgIENvbnN0
cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSA9IENvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENv
bnN0cnVjdDsKIAogICAgIGNvbnN0IGJvb2wgYWx3YXlzU3RyaWN0SW5DbGFzcyA9IHRydWU7CiAg
ICAgRnVuY3Rpb25NZXRhZGF0YU5vZGUgbWV0YWRhdGEocGFyc2VyQXJlbmEoKSwgSlNUb2tlbkxv
Y2F0aW9uKCksIEpTVG9rZW5Mb2NhdGlvbigpLCAwLCAwLCAwLCAwLCAwLCBhbHdheXNTdHJpY3RJ
bkNsYXNzLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIHN1cGVyQmluZGluZywgMCwgcGFyc2VNb2Rl
LCBmYWxzZSk7CiAgICAgbWV0YWRhdGEuZmluaXNoUGFyc2luZyhtX3Njb3BlTm9kZS0+c291cmNl
KCksIElkZW50aWZpZXIoKSwgRnVuY3Rpb25Nb2RlOjpNZXRob2REZWZpbml0aW9uKTsKLSAgICBh
dXRvIGluaXRpYWxpemVyID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3Zt
LCBtX3Njb3BlTm9kZS0+c291cmNlKCksICZtZXRhZGF0YSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/
IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3Ry
dWN0QWJpbGl0eSwgc2NyaXB0TW9kZSgpLCBXVEZNb3ZlKHZhcmlhYmxlc1VuZGVyVERaKSwgbmV3
RGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8pOworICAg
IGF1dG8gaW5pdGlhbGl6ZXIgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1f
dm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgJm1ldGFkYXRhLCBpc0J1aWx0aW5GdW5jdGlvbigp
ID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBjb25z
dHJ1Y3RBYmlsaXR5LCBzY3JpcHRNb2RlKCksIFdURk1vdmUodmFyaWFibGVzVW5kZXJURFopLCBX
VEZNb3ZlKHBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQpLCBuZXdEZXJpdmVkQ29udGV4dFR5
cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObywgUHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQ6Ok5vbmUpOwogICAgIGluaXRpYWxpemVyLT5zZXRJbnN0YW5jZUZpZWxkTG9jYXRpb25zKFdU
Rk1vdmUoaW5zdGFuY2VGaWVsZExvY2F0aW9ucykpOwogCiAgICAgdW5zaWduZWQgaW5kZXggPSBt
X2NvZGVCbG9jay0+YWRkRnVuY3Rpb25FeHByKGluaXRpYWxpemVyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRl
eCA0YTU3YTRmYTkyYjQuLmZjMjM0ZmMyYWU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNDA5LDEwICs0
MDksMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHR5cGVkZWYgRGVjbGFyYXRpb25TdGFj
a3M6OkZ1bmN0aW9uU3RhY2sgRnVuY3Rpb25TdGFjazsKICAgICAgICAgdXNpbmcgQ2FjaGVkVERa
U3RhY2sgPSBWZWN0b3I8Q29tcGFjdFREWkVudmlyb25tZW50TWFwOjpIYW5kbGU+OwogCi0gICAg
ICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgUHJvZ3JhbU5vZGUqLCBVbmxpbmtlZFByb2dyYW1D
b2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgQ2FjaGVkVERa
U3RhY2smLCBFQ01BTW9kZSk7Ci0gICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgRnVuY3Rp
b25Ob2RlKiwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayosIE9wdGlvblNldDxDb2RlR2VuZXJh
dGlvbk1vZGU+LCBjb25zdCBDYWNoZWRURFpTdGFjayYsIEVDTUFNb2RlKTsKLSAgICAgICAgQnl0
ZWNvZGVHZW5lcmF0b3IoVk0mLCBFdmFsTm9kZSosIFVubGlua2VkRXZhbENvZGVCbG9jayosIE9w
dGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBjb25zdCBDYWNoZWRURFpTdGFjayYsIEVDTUFN
b2RlKTsKLSAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBNb2R1bGVQcm9ncmFtTm9kZSos
IFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayosIE9wdGlvblNldDxDb2RlR2VuZXJhdGlv
bk1vZGU+LCBjb25zdCBDYWNoZWRURFpTdGFjayYsIEVDTUFNb2RlKTsKKyAgICAgICAgQnl0ZWNv
ZGVHZW5lcmF0b3IoVk0mLCBQcm9ncmFtTm9kZSosIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayos
IE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBjb25zdCBDYWNoZWRURFpTdGFjayYsIGNv
bnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqLCBFQ01BTW9kZSk7CisgICAgICAgIEJ5dGVjb2Rl
R2VuZXJhdG9yKFZNJiwgRnVuY3Rpb25Ob2RlKiwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayos
IE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBjb25zdCBDYWNoZWRURFpTdGFjayYsIGNv
bnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqLCBFQ01BTW9kZSk7CisgICAgICAgIEJ5dGVjb2Rl
R2VuZXJhdG9yKFZNJiwgRXZhbE5vZGUqLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqLCBPcHRpb25T
ZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgQ2FjaGVkVERaU3RhY2smLCBjb25zdCBQcml2
YXRlTmFtZUVudmlyb25tZW50KiwgRUNNQU1vZGUpOworICAgICAgICBCeXRlY29kZUdlbmVyYXRv
cihWTSYsIE1vZHVsZVByb2dyYW1Ob2RlKiwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
KiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IENhY2hlZFREWlN0YWNrJiwg
Y29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCosIEVDTUFNb2RlKTsKIAogICAgICAgICB+Qnl0
ZWNvZGVHZW5lcmF0b3IoKTsKICAgICAgICAgCkBAIC00MjYsMjAgKzQyNiwyMSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgYm9vbCBuZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQo
KSBjb25zdCB7IHJldHVybiBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dDsgfQog
ICAgICAgICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV9zY29wZU5vZGUtPnVzZXNF
dmFsKCk7IH0KICAgICAgICAgYm9vbCB1c2VzVGhpcygpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVO
b2RlLT51c2VzVGhpcygpOyB9CisgICAgICAgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZh
dGVCcmFuZFJlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnByaXZhdGVC
cmFuZFJlcXVpcmVtZW50KCk7IH0KICAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9y
S2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5jb25zdHJ1Y3RvcktpbmQoKTsgfQog
ICAgICAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9jb2Rl
QmxvY2stPnN1cGVyQmluZGluZygpOyB9CiAgICAgICAgIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3Jp
cHRNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnNjcmlwdE1vZGUoKTsgfQogICAg
ICAgICBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
cigpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
cigpOyB9CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTm9kZSwgdHlwZW5hbWUgVW5saW5r
ZWRDb2RlQmxvY2s+Ci0gICAgICAgIHN0YXRpYyBQYXJzZXJFcnJvciBnZW5lcmF0ZShWTSYgdm0s
IE5vZGUqIG5vZGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIFVubGlua2VkQ29kZUJs
b2NrKiB1bmxpbmtlZENvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29k
ZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBDYWNoZWRURFpTdGFjayYgcGFyZW50U2NvcGVURFpWYXJp
YWJsZXMsIEVDTUFNb2RlIGVjbWFNb2RlKQorICAgICAgICBzdGF0aWMgUGFyc2VyRXJyb3IgZ2Vu
ZXJhdGUoVk0mIHZtLCBOb2RlKiBub2RlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBV
bmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJh
dGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgQ2FjaGVkVERaU3RhY2smIHBhcmVu
dFNjb3BlVERaVmFyaWFibGVzLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiBwcml2YXRl
TmFtZUVudmlyb25tZW50LCBFQ01BTW9kZSBlY21hTW9kZSkKICAgICAgICAgewogICAgICAgICAg
ICAgTW9ub3RvbmljVGltZSBiZWZvcmU7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9u
czo6cmVwb3J0Qnl0ZWNvZGVDb21waWxlVGltZXMoKSkpCiAgICAgICAgICAgICAgICAgYmVmb3Jl
ID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAKICAgICAgICAgICAgIERlZmVyR0MgZGVmZXJHQyh2
bS5oZWFwKTsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGVHZW5lcmF0b3IgPSBtYWtlVW5pcXVl
PEJ5dGVjb2RlR2VuZXJhdG9yPih2bSwgbm9kZSwgdW5saW5rZWRDb2RlQmxvY2ssIGNvZGVHZW5l
cmF0aW9uTW9kZSwgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIGVjbWFNb2RlKTsKKyAgICAgICAg
ICAgIGF1dG8gYnl0ZWNvZGVHZW5lcmF0b3IgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlR2VuZXJhdG9y
Pih2bSwgbm9kZSwgdW5saW5rZWRDb2RlQmxvY2ssIGNvZGVHZW5lcmF0aW9uTW9kZSwgcGFyZW50
U2NvcGVURFpWYXJpYWJsZXMsIHByaXZhdGVOYW1lRW52aXJvbm1lbnQsIGVjbWFNb2RlKTsKICAg
ICAgICAgICAgIGF1dG8gcmVzdWx0ID0gYnl0ZWNvZGVHZW5lcmF0b3ItPmdlbmVyYXRlKCk7CiAK
ICAgICAgICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpyZXBvcnRCeXRlY29kZUNvbXBpbGVU
aW1lcygpKSkgewpAQCAtNzc1LDcgKzc3Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXROZXdGdW5jdGlvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmN0aW9uTWV0
YWRhdGFOb2RlKik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5jdGlvbkV4cHJlc3Np
b24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqKTsKLSAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3RvcihSZWdpc3RlcklEKiBkc3QsIENvbnN0cnVjdG9yS2lu
ZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3QgSWRlbnRpZmllciYgZWNtYU5hbWUsIGNv
bnN0IFNvdXJjZUNvZGUmIGNsYXNzU291cmNlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcik7
CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJ
RCogZHN0LCBDb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIGNvbnN0IElk
ZW50aWZpZXImIGVjbWFOYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBjbGFzc1NvdXJjZSwgTmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50KTsKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdE5ld0luc3RhbmNlRmllbGRJbml0aWFsaXplckZ1bmN0aW9uKFJlZ2lz
dGVySUQqIGRzdCwgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiYmIGluc3RhbmNlRmllbGRMb2NhdGlv
bnMsIGJvb2wgaXNEZXJpdmVkKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Fycm93RnVu
Y3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqLCBBcnJvd0Z1bmNFeHByTm9kZSopOwogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0TmV3TWV0aG9kRGVmaW5pdGlvbihSZWdpc3RlcklEKiBkc3QsIE1l
dGhvZERlZmluaXRpb25Ob2RlKik7CkBAIC04MTYsNyArODE3LDYgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREaXJlY3RTZXRQcm90b3R5cGVPZihSZWdpc3RlcklE
KiBiYXNlLCBSZWdpc3RlcklEKiBwcm90b3R5cGUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVy
SUQqIHZhbHVlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dEJ5VmFsKFJlZ2lzdGVySUQq
IGJhc2UsIFJlZ2lzdGVySUQqIHRoaXNWYWx1ZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lz
dGVySUQqIHZhbHVlKTsKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERpcmVjdEdldEJ5VmFsKFJl
Z2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpOwog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGlyZWN0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwg
UmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKICAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdERlbGV0ZUJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwg
UmVnaXN0ZXJJRCogcHJvcGVydHkpOwogCkBAIC04MjQsNiArODI0LDEyIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0SW50ZXJuYWxGaWVsZChSZWdpc3RlcklE
KiBiYXNlLCB1bnNpZ25lZCBpbmRleCwgUmVnaXN0ZXJJRCogdmFsdWUpOwogICAgICAgICBSZWdp
c3RlcklEKiBlbWl0RGVmaW5lUHJpdmF0ZUZpZWxkKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVy
SUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRQcml2YXRlRmllbGRQdXQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHks
IFJlZ2lzdGVySUQqIHZhbHVlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldFByaXZhdGVO
YW1lKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVy
dHkpOworCisgICAgICAgIHZvaWQgZW1pdENyZWF0ZVByaXZhdGVCcmFuZChSZWdpc3RlcklEKiBk
c3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CisgICAgICAgIHZvaWQg
ZW1pdEluc3RhbGxQcml2YXRlQnJhbmQoUmVnaXN0ZXJJRCogdGFyZ2V0KTsKKyAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdEdldFByaXZhdGVCcmFuZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IHNjb3BlKTsKKyAgICAgICAgdm9pZCBlbWl0Q2hlY2tQcml2YXRlQnJhbmQoUmVnaXN0ZXJJRCog
YmFzZSwgUmVnaXN0ZXJJRCogYnJhbmQpOwogCiAgICAgICAgIHZvaWQgZW1pdFN1cGVyU2FtcGxl
ckJlZ2luKCk7CiAgICAgICAgIHZvaWQgZW1pdFN1cGVyU2FtcGxlckVuZCgpOwpAQCAtMTE3Nywx
NiArMTE4MywxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIERlcml2ZWRDb250ZXh0
VHlwZSBuZXdEZXJpdmVkQ29udGV4dFR5cGUgPSBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmU7CiAK
ICAgICAgICAgICAgIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyID0gbWV0YWRhdGEtPmlzQ29uc3RydWN0b3JBbmROZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplcigpID8gTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6OlllcyA6IE5lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyOjpObzsKKyAgICAgICAgICAgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50
IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID0gbWV0YWRhdGEtPnByaXZhdGVCcmFuZFJlcXVpcmVt
ZW50KCk7CiAgICAgICAgICAgICBpZiAoU291cmNlUGFyc2VNb2RlU2V0KFNvdXJjZVBhcnNlTW9k
ZTo6QXJyb3dGdW5jdGlvbk1vZGUsIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9u
TW9kZSwgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Cb2R5TW9kZSkuY29udGFp
bnMobWV0YWRhdGEtPnBhcnNlTW9kZSgpKSkgewogICAgICAgICAgICAgICAgIGlmIChjb25zdHJ1
Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkV4dGVuZHMgfHwgaXNEZXJpdmVkQ29uc3Ry
dWN0b3JDb250ZXh0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgbmV3RGVyaXZlZENvbnRleHRU
eXBlID0gRGVyaXZlZENvbnRleHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0OwogICAg
ICAgICAgICAgICAgICAgICBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9IG1fY29kZUJsb2Nr
LT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpOworICAgICAgICAgICAgICAgICAgICBwcml2
YXRlQnJhbmRSZXF1aXJlbWVudCA9IG1fY29kZUJsb2NrLT5wcml2YXRlQnJhbmRSZXF1aXJlbWVu
dCgpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlIGlmIChtX2NvZGVC
bG9jay0+aXNDbGFzc0NvbnRleHQoKSB8fCBpc0Rlcml2ZWRDbGFzc0NvbnRleHQoKSkKICAgICAg
ICAgICAgICAgICAgICAgbmV3RGVyaXZlZENvbnRleHRUeXBlID0gRGVyaXZlZENvbnRleHRUeXBl
OjpEZXJpdmVkTWV0aG9kQ29udGV4dDsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgYXV0
byBvcHRpb25hbFZhcmlhYmxlc1VuZGVyVERaID0gZ2V0VmFyaWFibGVzVW5kZXJURFooKTsKKyAg
ICAgICAgICAgIE9wdGlvbmFsPFByaXZhdGVOYW1lRW52aXJvbm1lbnQ+IHBhcmVudFByaXZhdGVO
YW1lRW52aXJvbm1lbnQgPSBnZXRBdmFpbGFibGVQcml2YXRlQWNjZXNzTmFtZXMoKTsKIAogICAg
ICAgICAgICAgLy8gRklYTUU6IFRoZXNlIGZsYWdzLCBQYXJzZXJNb2RlcyBhbmQgcHJvcGFnYXRp
b24gdG8gWFhYQ29kZUJsb2NrcyBzaG91bGQgYmUgcmVvcmdhbml6ZWQuCiAgICAgICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ3CkBAIC0xMTk1
LDEwICsxMjA0LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgaWYgKHBhcnNlTW9k
ZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUgJiYgbWV0YWRhdGEtPmNvbnN0cnVjdG9y
S2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSkKICAgICAgICAgICAgICAgICBjb25zdHJ1
Y3RBYmlsaXR5ID0gQ29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0OwogCi0gICAgICAgICAg
ICByZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3Bl
Tm9kZS0+c291cmNlKCksIG1ldGFkYXRhLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRC
dWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5
LCBzY3JpcHRNb2RlKCksIFdURk1vdmUob3B0aW9uYWxWYXJpYWJsZXNVbmRlclREWiksIG5ld0Rl
cml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpOworICAgICAgICAg
ICAgcmV0dXJuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29w
ZU5vZGUtPnNvdXJjZSgpLCBtZXRhZGF0YSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2Vk
QnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0
eSwgc2NyaXB0TW9kZSgpLCBXVEZNb3ZlKG9wdGlvbmFsVmFyaWFibGVzVW5kZXJURFopLCBXVEZN
b3ZlKHBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQpLCBuZXdEZXJpdmVkQ29udGV4dFR5cGUs
IG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7CiAg
ICAgICAgIH0KIAogICAgICAgICBPcHRpb25hbDxDYWNoZWRURFpTdGFjaz4gZ2V0VmFyaWFibGVz
VW5kZXJURFooKTsKKyAgICAgICAgT3B0aW9uYWw8UHJpdmF0ZU5hbWVFbnZpcm9ubWVudD4gZ2V0
QXZhaWxhYmxlUHJpdmF0ZUFjY2Vzc05hbWVzKCk7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dENvbnN0cnVjdFZhcmFyZ3MoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBSZWdp
c3RlcklEKiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGFyZ3VtZW50cywgUmVnaXN0ZXJJRCog
Zmlyc3RGcmVlUmVnaXN0ZXIsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgRGVidWdnYWJsZUNhbGwpOwogICAgICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDYWxsT3A+CkBAIC0xMjUzLDYgKzEyNjMsMTEgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICBtX2xhc3RJbnN0cnVjdGlvbiA9IHByZXZMYXN0SW5zdHJ1Y3Rpb247
CiAgICAgICAgIH0KIAorICAgICAgICBib29sIGlzUHJpdmF0ZU1ldGhvZChjb25zdCBJZGVudGlm
aWVyJik7CisKKyAgICAgICAgdm9pZCBwdXNoUHJpdmF0ZUFjY2Vzc05hbWVzKGNvbnN0IFByaXZh
dGVOYW1lRW52aXJvbm1lbnQqKTsKKyAgICAgICAgdm9pZCBwb3BQcml2YXRlQWNjZXNzTmFtZXMo
KTsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+
IG1fY29kZUdlbmVyYXRpb25Nb2RlOwogCkBAIC0xMjY3LDYgKzEyODIsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgc2l6ZV90IG1fcGFyZW50U2NvcGVURFpTdGFja1NpemUgeyAwIH07CiAg
ICAgICAgIFZlY3RvcjxURFpNYXA+IG1fVERaU3RhY2s7CiAgICAgICAgIENhY2hlZFREWlN0YWNr
IG1fY2FjaGVkVmFyaWFibGVzVW5kZXJURFo7CisgICAgICAgIFZlY3RvcjxQcml2YXRlTmFtZUVu
dmlyb25tZW50PiBtX3ByaXZhdGVOYW1lc1N0YWNrOwogICAgICAgICBPcHRpb25hbDxzaXplX3Q+
IG1fdmFyU2NvcGVMZXhpY2FsU2NvcGVTdGFja0luZGV4OwogICAgICAgICB2b2lkIHB1c2hURFpW
YXJpYWJsZXMoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYsIFREWkNoZWNrT3B0aW1pemF0aW9u
LCBURFpSZXF1aXJlbWVudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA1YWQ4NDk4MDg2NGIuLmUxMmFhMDAxNzJi
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcApAQCAtNTYzLDcgKzU2Myw3IEBAIHZvaWQgUHJvcGVydHlMaXN0Tm9kZTo6ZW1p
dERlY2xhcmVQcml2YXRlRmllbGROYW1lcyhCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yCiAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNyZWF0ZVByaXZhdGVTeW1ib2w7CiAgICAgZm9yIChQcm9w
ZXJ0eUxpc3ROb2RlKiBwID0gdGhpczsgcDsgcCA9IHAtPm1fbmV4dCkgewogICAgICAgICBjb25z
dCBQcm9wZXJ0eU5vZGUmIG5vZGUgPSAqcC0+bV9ub2RlOwotICAgICAgICBpZiAobm9kZS50eXBl
KCkgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGUpIHsKKyAgICAgICAgaWYgKG5vZGUudHlwZSgpICYg
UHJvcGVydHlOb2RlOjpQcml2YXRlRmllbGQpIHsKICAgICAgICAgICAgIGlmICghY3JlYXRlUHJp
dmF0ZVN5bWJvbCkKICAgICAgICAgICAgICAgICBjcmVhdGVQcml2YXRlU3ltYm9sID0gZ2VuZXJh
dG9yLm1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OmNyZWF0
ZVByaXZhdGVTeW1ib2wpOwogCkBAIC01ODksNyArNTg5LDcgQEAgUmVnaXN0ZXJJRCogUHJvcGVy
dHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGUKICAgICAgICAgaWYgKHAtPmlzQ29tcHV0ZWRDbGFzc0ZpZWxkKCkpCiAgICAgICAgICAg
ICBlbWl0U2F2ZUNvbXB1dGVkRmllbGROYW1lKGdlbmVyYXRvciwgKnAtPm1fbm9kZSk7CiAKLSAg
ICAgICAgaWYgKHAtPmlzSW5zdGFuY2VDbGFzc0ZpZWxkKCkpIHsKKyAgICAgICAgaWYgKHAtPmlz
SW5zdGFuY2VDbGFzc0ZpZWxkKCkgJiYgIShwLT5tX25vZGUtPnR5cGUoKSAmIFByb3BlcnR5Tm9k
ZTo6UHJpdmF0ZU1ldGhvZCkpIHsKICAgICAgICAgICAgIEFTU0VSVChpbnN0YW5jZUZpZWxkTG9j
YXRpb25zKTsKICAgICAgICAgICAgIGluc3RhbmNlRmllbGRMb2NhdGlvbnMtPmFwcGVuZChwLT5w
b3NpdGlvbigpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNzQ1LDcgKzc0NSw3IEBAIFJl
Z2lzdGVySUQqIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlCiB2b2lkIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRQdXRDb25z
dGFudFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIG5l
d09iaiwgUHJvcGVydHlOb2RlJiBub2RlKQogewogICAgIC8vIFByaXZhdGUgZmllbGRzIGFyZSBo
YW5kbGVkIGluIHRoZSBzeW50aGV0aWMgaW5zdGFuY2VGaWVsZEluaXRpYWxpemVyIGZ1bmN0aW9u
LCBub3QgaGVyZS4KLSAgICBBU1NFUlQoIShub2RlLnR5cGUoKSAmIFByb3BlcnR5Tm9kZTo6UHJp
dmF0ZSkpOworICAgIEFTU0VSVCghKG5vZGUudHlwZSgpICYgUHJvcGVydHlOb2RlOjpQcml2YXRl
RmllbGQpKTsKIAogICAgIGlmIChQcm9wZXJ0eU5vZGU6OmlzVW5kZXJzY29yZVByb3RvU2V0dGVy
KGdlbmVyYXRvci52bSgpLCBub2RlKSkgewogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJv
dG90eXBlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUubV9hc3NpZ24pOwpAQCAtNzcwLDYgKzc3
MCwxNCBAQCB2b2lkIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRQdXRDb25zdGFudFByb3BlcnR5KEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZwogCiAgICAgaWYgKG5vZGUuaXNDbGFzc1By
b3BlcnR5KCkpIHsKICAgICAgICAgQVNTRVJUKG5vZGUubmVlZHNTdXBlckJpbmRpbmcoKSk7CisK
KyAgICAgICAgaWYgKG5vZGUudHlwZSgpICYgUHJvcGVydHlOb2RlOjpQcml2YXRlTWV0aG9kKSB7
CisgICAgICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoKm5vZGUubmFt
ZSgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShnZW5lcmF0b3Iuc2Nv
cGVSZWdpc3RlcigpLCB2YXIsIHZhbHVlLmdldCgpLCBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5p
dGlhbGl6YXRpb25Nb2RlOjpDb25zdEluaXRpYWxpemF0aW9uKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eU5hbWVS
ZWdpc3RlcjsKICAgICAgICAgaWYgKG5vZGUubmFtZSgpKQogICAgICAgICAgICAgcHJvcGVydHlO
YW1lID0gZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsICpub2RlLm5hbWUoKSk7CiAKQEAgLTg5
MSwxNCArODk5LDI0IEBAIFJlZ2lzdGVySUQqIERvdEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVyCiAKIFJlZ2lzdGVySUQqIEJh
c2VEb3ROb2RlOjplbWl0R2V0UHJvcGVydHlWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZlB0cjxSZWdpc3RlcklE
PiYgdGhpc1ZhbHVlKQogewotICAgIGlmIChpc1ByaXZhdGVGaWVsZCgpKSB7CisgICAgaWYgKGlz
UHJpdmF0ZU1lbWJlcigpKSB7CisgICAgICAgIGlmIChnZW5lcmF0b3IuaXNQcml2YXRlTWV0aG9k
KGlkZW50aWZpZXIoKSkpIHsKKyAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52
YXJpYWJsZShpZGVudGlmaWVyKCkpOworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNj
b3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKKworICAgICAg
ICAgICAgUmVnaXN0ZXJJRCogcHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQ
cml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSk7CisgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdENoZWNrUHJpdmF0ZUJyYW5kKGJhc2UsIHByaXZhdGVCcmFu
ZFN5bWJvbCk7CisKKyAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29w
ZShkc3QsIHNjb3BlLmdldCgpLCB2YXIsIFRocm93SWZOb3RGb3VuZCk7CisgICAgICAgIH0KKwog
ICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUobV9pZGVudCk7CiAgICAg
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXZhci5sb2NhbCgpLCAiUHJpdmF0ZSBGaWVsZCBuYW1l
cyBtdXN0IGJlIHN0b3JlZCBpbiBjYXB0dXJlZCB2YXJpYWJsZXMiKTsKIAogICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRy
LCB2YXIpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHBy
aXZhdGVOYW1lLmdldCgpLCBzY29wZS5nZXQoKSwgdmFyLCBEb05vdFRocm93SWZOb3RGb3VuZCk7
Ci0gICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdERpcmVjdEdldEJ5VmFsKGRzdCwgYmFzZSwg
cHJpdmF0ZU5hbWUuZ2V0KCkpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRQcml2
YXRlTmFtZShkc3QsIGJhc2UsIHByaXZhdGVOYW1lLmdldCgpKTsKICAgICB9CiAKICAgICBpZiAo
bV9iYXNlLT5pc1N1cGVyTm9kZSgpKSB7CkBAIC05MTgsNyArOTM2LDE4IEBAIFJlZ2lzdGVySUQq
IEJhc2VEb3ROb2RlOjplbWl0R2V0UHJvcGVydHlWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpCiAKIFJlZ2lzdGVySUQqIEJhc2VEb3ROb2RlOjplbWl0UHV0UHJvcGVydHko
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJ
RCogdmFsdWUsIFJlZlB0cjxSZWdpc3RlcklEPiYgdGhpc1ZhbHVlKQogewotICAgIGlmIChpc1By
aXZhdGVGaWVsZCgpKSB7CisgICAgaWYgKGlzUHJpdmF0ZU1lbWJlcigpKSB7CisgICAgICAgIGF1
dG8gaWRlbnRpZmllck5hbWUgPSBpZGVudGlmaWVyKCk7CisgICAgICAgIGlmIChnZW5lcmF0b3Iu
aXNQcml2YXRlTWV0aG9kKGlkZW50aWZpZXJOYW1lKSkgeworICAgICAgICAgICAgVmFyaWFibGUg
dmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGlkZW50aWZpZXJOYW1lKTsKKyAgICAgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxw
dHIsIHZhcik7CisKKyAgICAgICAgICAgIFJlZ2lzdGVySUQqIHByaXZhdGVCcmFuZFN5bWJvbCA9
IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZUJyYW5kKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwg
c2NvcGUuZ2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDaGVja1ByaXZhdGVCcmFu
ZChiYXNlLCBwcml2YXRlQnJhbmRTeW1ib2wpOworCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dFRocm93VHlwZUVycm9yKCJUcnlpbmcgdG8gYWNjZXNzIGEgbm90IGRlZmluZWQgcHJpdmF0ZSBz
ZXR0ZXIiKTsKKyAgICAgICAgfQorCiAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52
YXJpYWJsZShtX2lkZW50KTsKICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghdmFyLmxvY2Fs
KCksICJQcml2YXRlIEZpZWxkIG5hbWVzIG11c3QgYmUgc3RvcmVkIGluIGNhcHR1cmVkIHZhcmlh
YmxlcyIpOwogCkBAIC0xMDcyLDEyICsxMTAxLDE0IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2Fs
bFZhbHVlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFRoaXNUb0Fycm93RnVuY3Rpb25Db250ZXh0
U2NvcGUoKTsKIAogICAgICAgICAvLyBJbml0aWFsaXplIGluc3RhbmNlIGZpZWxkcyBhZnRlciBz
dXBlci1jYWxsLgorICAgICAgICBpZiAoT3B0aW9uczo6dXNlUHJpdmF0ZU1ldGhvZHMoKSAmJiBn
ZW5lcmF0b3IucHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSA9PSBQcml2YXRlQnJhbmRSZXF1aXJl
bWVudDo6TmVlZGVkKQorICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRJbnN0YWxsUHJpdmF0ZUJy
YW5kKGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSk7CisKICAgICAgICAgaWYgKE9wdGlvbnM6OnVz
ZVB1YmxpY0NsYXNzRmllbGRzKCkgJiYgZ2VuZXJhdG9yLm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyKCkgPT0gTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6OlllcykgewogICAgICAgICAgICAg
QVNTRVJUKGdlbmVyYXRvci5pc0NvbnN0cnVjdG9yKCkgfHwgZ2VuZXJhdG9yLmlzRGVyaXZlZENv
bnN0cnVjdG9yQ29udGV4dCgpKTsKICAgICAgICAgICAgIGZ1bmMgPSBnZW5lcmF0b3IuZW1pdExv
YWREZXJpdmVkQ29uc3RydWN0b3IoKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SW5zdGFu
Y2VGaWVsZEluaXRpYWxpemF0aW9uSWZOZWVkZWQoZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBm
dW5jLmdldCgpLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICB9
Ci0KICAgICAgICAgcmV0dXJuIHJldDsKICAgICB9CiAKQEAgLTIyNDIsMTQgKzIyNzMsMTQgQEAg
UmVnaXN0ZXJJRCogUG9zdGZpeE5vZGU6OmVtaXREb3QoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0KQogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5m
byhkb3RBY2Nlc3Nvci0+ZGl2b3QoKSwgZG90QWNjZXNzb3ItPmRpdm90U3RhcnQoKSwgZG90QWNj
ZXNzb3ItPmRpdm90RW5kKCkpOwogCi0gICAgaWYgKGRvdEFjY2Vzc29yLT5pc1ByaXZhdGVGaWVs
ZCgpKSB7CisgICAgaWYgKGRvdEFjY2Vzc29yLT5pc1ByaXZhdGVNZW1iZXIoKSkgewogICAgICAg
ICBBU1NFUlQoIWJhc2VJc1N1cGVyKTsKICAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9y
LnZhcmlhYmxlKGlkZW50KTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2Vu
ZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAg
ICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShwcml2YXRlTmFtZS5nZXQoKSwgc2NvcGUuZ2V0
KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQpOwogCi0gICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0RGlyZWN0R2V0QnlWYWwoZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpLCBiYXNlLmdldCgpLCBwcml2YXRlTmFtZS5nZXQoKSk7CisgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZU5hbWUoZ2VuZXJh
dG9yLm5ld1RlbXBvcmFyeSgpLCBiYXNlLmdldCgpLCBwcml2YXRlTmFtZS5nZXQoKSk7CiAgICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBvbGRWYWx1ZSA9IGVtaXRQb3N0SW5jT3JEZWMoZ2VuZXJh
dG9yLCBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIHZhbHVlLmdldCgpLCBtX29wZXJh
dG9yKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZv
dFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdFByaXZhdGVGaWVs
ZFB1dChiYXNlLmdldCgpLCBwcml2YXRlTmFtZS5nZXQoKSwgdmFsdWUuZ2V0KCkpOwpAQCAtMjQ4
MSwxNCArMjUxMiwxNCBAQCBSZWdpc3RlcklEKiBQcmVmaXhOb2RlOjplbWl0RG90KEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIAogICAgIGdlbmVyYXRvci5l
bWl0RXhwcmVzc2lvbkluZm8oZG90QWNjZXNzb3ItPmRpdm90KCksIGRvdEFjY2Vzc29yLT5kaXZv
dFN0YXJ0KCksIGRvdEFjY2Vzc29yLT5kaXZvdEVuZCgpKTsKICAgICBSZWdpc3RlcklEKiB2YWx1
ZTsKLSAgICBpZiAoZG90QWNjZXNzb3ItPmlzUHJpdmF0ZUZpZWxkKCkpIHsKKyAgICBpZiAoZG90
QWNjZXNzb3ItPmlzUHJpdmF0ZU1lbWJlcigpKSB7CiAgICAgICAgIEFTU0VSVCghYmFzZU5vZGUt
PmlzU3VwZXJOb2RlKCkpOwogICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFi
bGUoaWRlbnQpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3Iu
ZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gcHJpdmF0ZU5hbWUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgICAgIGdlbmVy
YXRvci5lbWl0R2V0RnJvbVNjb3BlKHByaXZhdGVOYW1lLmdldCgpLCBzY29wZS5nZXQoKSwgdmFy
LCBEb05vdFRocm93SWZOb3RGb3VuZCk7CiAKLSAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuZW1p
dERpcmVjdEdldEJ5VmFsKHByb3BEc3QuZ2V0KCksIGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdl
dCgpKTsKKyAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldFByaXZhdGVOYW1lKHByb3BE
c3QuZ2V0KCksIGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpKTsKICAgICAgICAgZW1pdElu
Y09yRGVjKGdlbmVyYXRvciwgdmFsdWUsIG1fb3BlcmF0b3IpOwogICAgICAgICBnZW5lcmF0b3Iu
ZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAg
ICAgICAgIGdlbmVyYXRvci5lbWl0UHJpdmF0ZUZpZWxkUHV0KGJhc2UuZ2V0KCksIHByaXZhdGVO
YW1lLmdldCgpLCB2YWx1ZSk7CkBAIC00ODgxLDYgKzQ5MTIsMTMgQEAgUmVnaXN0ZXJJRCogQ2xh
c3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQKICAgICBpZiAobV9uZWVkc0xleGljYWxTY29wZSkKICAgICAgICAgZ2VuZXJhdG9y
LnB1c2hMZXhpY2FsU2NvcGUodGhpcywgQnl0ZWNvZGVHZW5lcmF0b3I6OlREWkNoZWNrT3B0aW1p
emF0aW9uOjpPcHRpbWl6ZSwgQnl0ZWNvZGVHZW5lcmF0b3I6Ok5lc3RlZFNjb3BlVHlwZTo6SXNO
ZXN0ZWQpOwogCisgICAgYm9vbCBoYXNQcml2YXRlTmFtZXMgPSAhIW1fbGV4aWNhbFZhcmlhYmxl
cy5wcml2YXRlTmFtZXNTaXplKCk7CisgICAgYm9vbCBzaG91bGRFbWl0UHJpdmF0ZUJyYW5kID0g
bV9sZXhpY2FsVmFyaWFibGVzLmhhc1ByaXZhdGVNZXRob2RPckFjY2Vzc29yKCk7CisgICAgaWYg
KGhhc1ByaXZhdGVOYW1lcykKKyAgICAgICAgZ2VuZXJhdG9yLnB1c2hQcml2YXRlQWNjZXNzTmFt
ZXMobV9sZXhpY2FsVmFyaWFibGVzLnByaXZhdGVOYW1lRW52aXJvbm1lbnQoKSk7CisgICAgaWYg
KHNob3VsZEVtaXRQcml2YXRlQnJhbmQpCisgICAgICAgIGdlbmVyYXRvci5lbWl0Q3JlYXRlUHJp
dmF0ZUJyYW5kKGdlbmVyYXRvci5zY29wZVJlZ2lzdGVyKCksIG1fcG9zaXRpb24sIG1fcG9zaXRp
b24sIG1fcG9zaXRpb24pOworCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHN1cGVyY2xhc3M7CiAg
ICAgaWYgKG1fY2xhc3NIZXJpdGFnZSkgewogICAgICAgICBzdXBlcmNsYXNzID0gZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpOwpAQCAtNDg5MSwxNyArNDkyOSwxOCBAQCBSZWdpc3RlcklEKiBDbGFz
c0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRAogICAgIGJvb2wgbmVlZHNIb21lT2JqZWN0ID0gZmFsc2U7CiAKICAgICBhdXRvIG5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyID0gdGhpcy0+aGFzSW5zdGFuY2VGaWVsZHMoKSA/IE5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpZZXMgOiBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
cjo6Tm87Ci0KKyAgICBhdXRvIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID0gc2hvdWxkRW1pdFBy
aXZhdGVCcmFuZCA/IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOZWVkZWQgOiBQcml2YXRlQnJh
bmRSZXF1aXJlbWVudDo6Tm9uZTsKICAgICBpZiAobV9jb25zdHJ1Y3RvckV4cHJlc3Npb24pIHsK
ICAgICAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JFeHByZXNzaW9uLT5pc0Z1bmNFeHByTm9kZSgp
KTsKICAgICAgICAgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1ldGFkYXRhID0gc3RhdGljX2Nhc3Q8
RnVuY0V4cHJOb2RlKj4obV9jb25zdHJ1Y3RvckV4cHJlc3Npb24pLT5tZXRhZGF0YSgpOwogICAg
ICAgICBtZXRhZGF0YS0+c2V0RWNtYU5hbWUoZWNtYU5hbWUoKSk7CiAgICAgICAgIG1ldGFkYXRh
LT5zZXRDbGFzc1NvdXJjZShtX2NsYXNzU291cmNlKTsKICAgICAgICAgbWV0YWRhdGEtPnNldE5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyID09IE5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpZZXMpOworICAgICAgICBtZXRhZGF0YS0+c2V0UHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQocHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOwogICAgICAgICBj
b25zdHJ1Y3RvciA9IGdlbmVyYXRvci5lbWl0Tm9kZShjb25zdHJ1Y3Rvci5nZXQoKSwgbV9jb25z
dHJ1Y3RvckV4cHJlc3Npb24pOwogICAgICAgICBuZWVkc0hvbWVPYmplY3QgPSBtX2NsYXNzSGVy
aXRhZ2UgfHwgbWV0YWRhdGEtPnN1cGVyQmluZGluZygpID09IFN1cGVyQmluZGluZzo6TmVlZGVk
OwogICAgIH0gZWxzZQotICAgICAgICBjb25zdHJ1Y3RvciA9IGdlbmVyYXRvci5lbWl0TmV3RGVm
YXVsdENvbnN0cnVjdG9yKGNvbnN0cnVjdG9yLmdldCgpLCBtX2NsYXNzSGVyaXRhZ2UgPyBDb25z
dHJ1Y3RvcktpbmQ6OkV4dGVuZHMgOiBDb25zdHJ1Y3RvcktpbmQ6OkJhc2UsIG1fbmFtZSwgZWNt
YU5hbWUoKSwgbV9jbGFzc1NvdXJjZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpOworICAg
ICAgICBjb25zdHJ1Y3RvciA9IGdlbmVyYXRvci5lbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKGNv
bnN0cnVjdG9yLmdldCgpLCBtX2NsYXNzSGVyaXRhZ2UgPyBDb25zdHJ1Y3RvcktpbmQ6OkV4dGVu
ZHMgOiBDb25zdHJ1Y3RvcktpbmQ6OkJhc2UsIG1fbmFtZSwgZWNtYU5hbWUoKSwgbV9jbGFzc1Nv
dXJjZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50
KTsKIAogICAgIGNvbnN0IGF1dG8mIHByb3BlcnR5TmFtZXMgPSBnZW5lcmF0b3IucHJvcGVydHlO
YW1lcygpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm90b3R5cGUgPSBnZW5lcmF0b3IuZW1p
dE5ld09iamVjdChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCkpOwpAQCAtNDk2OCw2ICs1MDA3LDkg
QEAgUmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKICAgICAgICAgZ2VuZXJhdG9yLnBvcExleGljYWxT
Y29wZSh0aGlzKTsKICAgICB9CiAKKyAgICBpZiAoaGFzUHJpdmF0ZU5hbWVzKQorICAgICAgICBn
ZW5lcmF0b3IucG9wUHJpdmF0ZUFjY2Vzc05hbWVzKCk7CisKICAgICByZXR1cm4gZ2VuZXJhdG9y
Lm1vdmUoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBjb25zdHJ1Y3Rvci5nZXQoKSks
IGNvbnN0cnVjdG9yLmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKaW5kZXggODc3ZTYzMjU1MGJjLi43NDBh
ZDgyYzc5NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1
Z2dlckNhbGxGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyQ2FsbEZyYW1lLmNwcApAQCAtMjU5LDExICsyNTksMTEgQEAgSlNWYWx1ZSBEZWJ1Z2dl
ckNhbGxGcmFtZTo6ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBzY3Jp
cHQsIEpTT2IKICAgICAgICAgZXZhbENvbnRleHRUeXBlID0gRXZhbENvbnRleHRUeXBlOjpOb25l
OwogCiAgICAgVERaRW52aXJvbm1lbnQgdmFyaWFibGVzVW5kZXJURFo7Ci0gICAgVmFyaWFibGVF
bnZpcm9ubWVudCBwcml2YXRlTmFtZXM7Ci0gICAgSlNTY29wZTo6Y29sbGVjdENsb3N1cmVWYXJp
YWJsZXNVbmRlclREWihzY29wZSgpLT5qc1Njb3BlKCksIHZhcmlhYmxlc1VuZGVyVERaLCBwcml2
YXRlTmFtZXMpOworICAgIFByaXZhdGVOYW1lRW52aXJvbm1lbnQgcHJpdmF0ZU5hbWVFbnZpcm9u
bWVudDsKKyAgICBKU1Njb3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKHNjb3Bl
KCktPmpzU2NvcGUoKSwgdmFyaWFibGVzVW5kZXJURFosIHByaXZhdGVOYW1lRW52aXJvbm1lbnQp
OwogCiAgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgp
LT5pc0luU3RyaWN0Q29udGV4dCgpID8gRUNNQU1vZGU6OnN0cmljdCgpIDogRUNNQU1vZGU6OnNs
b3BweSgpOwotICAgIGF1dG8qIGV2YWwgPSBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGds
b2JhbE9iamVjdCwgbWFrZVNvdXJjZShzY3JpcHQsIGNhbGxGcmFtZS0+Y2FsbGVyU291cmNlT3Jp
Z2luKHZtKSksIGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+ZGVyaXZlZENvbnRleHRU
eXBlKCksIGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+bmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIoKSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5pc0Fycm93RnVuY3Rp
b24oKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJbnNpZGVPcmRpbmFyeUZ1bmN0
aW9uKCksIGV2YWxDb250ZXh0VHlwZSwgJnZhcmlhYmxlc1VuZGVyVERaLCAmcHJpdmF0ZU5hbWVz
LCBlY21hTW9kZSk7CisgICAgYXV0byogZXZhbCA9IERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVh
dGUoZ2xvYmFsT2JqZWN0LCBtYWtlU291cmNlKHNjcmlwdCwgY2FsbEZyYW1lLT5jYWxsZXJTb3Vy
Y2VPcmlnaW4odm0pKSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5kZXJpdmVkQ29u
dGV4dFR5cGUoKSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5uZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplcigpLCBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPnByaXZhdGVC
cmFuZFJlcXVpcmVtZW50KCksIGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+aXNBcnJv
d0Z1bmN0aW9uKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5zaWRlT3JkaW5h
cnlGdW5jdGlvbigpLCBldmFsQ29udGV4dFR5cGUsICZ2YXJpYWJsZXNVbmRlclREWiwgJnByaXZh
dGVOYW1lRW52aXJvbm1lbnQsIGVjbWFNb2RlKTsKICAgICBpZiAoVU5MSUtFTFkoY2F0Y2hTY29w
ZS5leGNlcHRpb24oKSkpIHsKICAgICAgICAgZXhjZXB0aW9uID0gY2F0Y2hTY29wZS5leGNlcHRp
b24oKTsKICAgICAgICAgY2F0Y2hTY29wZS5jbGVhckV4Y2VwdGlvbigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBmZDg3MTRhMjUw
OTIuLjAzN2JmYThhNGNkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKQEAgLTQ3MzMsOCArNDczMyw5IEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUdldFByaXZhdGVOYW1lQnlJZCgKICAgICBBU1NFUlQoIWdldEJ5U3RhdHVzLmlz
Q3VzdG9tKCkpOwogICAgIEFTU0VSVCghZ2V0QnlTdGF0dXMubWFrZXNDYWxscygpKTsKICAgICBp
ZiAoIWdldEJ5U3RhdHVzLmlzU2ltcGxlKCkgfHwgIWdldEJ5U3RhdHVzLm51bVZhcmlhbnRzKCkg
fHwgIU9wdGlvbnM6OnVzZUFjY2Vzc0lubGluaW5nKCkpIHsKLSAgICAgICAgc2V0KGRlc3RpbmF0
aW9uLAotICAgICAgICAgICAgYWRkVG9HcmFwaChHZXRQcml2YXRlTmFtZUJ5SWQsIE9wSW5mbyhp
ZGVudGlmaWVyKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBiYXNlLCBudWxscHRyKSk7CisgICAgICAg
IE5vZGUqIG5vZGUgPSBhZGRUb0dyYXBoKEdldFByaXZhdGVOYW1lQnlJZCwgT3BJbmZvKGlkZW50
aWZpZXIpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UsIG51bGxwdHIpOworICAgICAgICBpZiAo
ZGVzdGluYXRpb24uaXNWYWxpZCgpKQorICAgICAgICAgICAgc2V0KGRlc3RpbmF0aW9uLCBub2Rl
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDc0Miw4ICs0NzQzLDkgQEAgdm9pZCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0UHJpdmF0ZU5hbWVCeUlkKAogICAgICAgICBpZiAoIW1f
Z3JhcGgubV9wbGFuLmlzRlRMKCkKICAgICAgICAgICAgIHx8ICFPcHRpb25zOjp1c2VQb2x5bW9y
cGhpY0FjY2Vzc0lubGluaW5nKCkKICAgICAgICAgICAgIHx8IGdldEJ5U3RhdHVzLm51bVZhcmlh
bnRzKCkgPiBPcHRpb25zOjptYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlzdFNpemUoKSkg
ewotICAgICAgICAgICAgc2V0KGRlc3RpbmF0aW9uLAotICAgICAgICAgICAgICAgIGFkZFRvR3Jh
cGgoR2V0UHJpdmF0ZU5hbWVCeUlkLCBPcEluZm8oaWRlbnRpZmllciksIE9wSW5mbyhwcmVkaWN0
aW9uKSwgYmFzZSwgbnVsbHB0cikpOworICAgICAgICAgICAgTm9kZSogbm9kZSA9IGFkZFRvR3Jh
cGgoR2V0UHJpdmF0ZU5hbWVCeUlkLCBPcEluZm8oaWRlbnRpZmllciksIE9wSW5mbyhwcmVkaWN0
aW9uKSwgYmFzZSwgbnVsbHB0cik7CisgICAgICAgICAgICBpZiAoZGVzdGluYXRpb24uaXNWYWxp
ZCgpKQorICAgICAgICAgICAgICAgIHNldChkZXN0aW5hdGlvbiwgbm9kZSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtNDc2Niw4ICs0NzY4LDkgQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlR2V0UHJpdmF0ZU5hbWVCeUlkKAogICAgICAgICBNdWx0aUdldEJ5T2Zm
c2V0RGF0YSogZGF0YSA9IG1fZ3JhcGgubV9tdWx0aUdldEJ5T2Zmc2V0RGF0YS5hZGQoKTsKICAg
ICAgICAgZGF0YS0+Y2FzZXMgPSBjYXNlczsKICAgICAgICAgZGF0YS0+aWRlbnRpZmllck51bWJl
ciA9IGlkZW50aWZpZXJOdW1iZXI7Ci0gICAgICAgIHNldChkZXN0aW5hdGlvbiwKLSAgICAgICAg
ICAgIGFkZFRvR3JhcGgoTXVsdGlHZXRCeU9mZnNldCwgT3BJbmZvKGRhdGEpLCBPcEluZm8ocHJl
ZGljdGlvbiksIGJhc2UpKTsKKyAgICAgICAgTm9kZSogbm9kZSA9IGFkZFRvR3JhcGgoTXVsdGlH
ZXRCeU9mZnNldCwgT3BJbmZvKGRhdGEpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UpOworICAg
ICAgICBpZiAoZGVzdGluYXRpb24uaXNWYWxpZCgpKQorICAgICAgICAgICAgc2V0KGRlc3RpbmF0
aW9uLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDc4MSw4ICs0Nzg0LDkg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0UHJpdmF0ZU5hbWVCeUlkKAogCiAgICAg
Tm9kZSogbG9hZGVkVmFsdWUgPSBsb2FkKHByZWRpY3Rpb24sIGJhc2UsIGlkZW50aWZpZXJOdW1i
ZXIsIHZhcmlhbnQpOwogICAgIGlmICghbG9hZGVkVmFsdWUpIHsKLSAgICAgICAgc2V0KGRlc3Rp
bmF0aW9uLAotICAgICAgICAgICAgYWRkVG9HcmFwaChHZXRQcml2YXRlTmFtZUJ5SWQsIE9wSW5m
byhpZGVudGlmaWVyKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBiYXNlLCBudWxscHRyKSk7CisgICAg
ICAgIE5vZGUqIG5vZGUgPSBhZGRUb0dyYXBoKEdldFByaXZhdGVOYW1lQnlJZCwgT3BJbmZvKGlk
ZW50aWZpZXIpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UsIG51bGxwdHIpOworICAgICAgICBp
ZiAoZGVzdGluYXRpb24uaXNWYWxpZCgpKQorICAgICAgICAgICAgc2V0KGRlc3RpbmF0aW9uLCBu
b2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDc5MCw3ICs0Nzk0LDcgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0UHJpdmF0ZU5hbWVCeUlkKAogICAgICAgICBtX2dy
YXBoLmNvbXBpbGF0aW9uKCktPm5vdGljZUlubGluZWRHZXRCeUlkKCk7CiAKICAgICBBU1NFUlQo
IXZhcmlhbnQuY2FsbExpbmtTdGF0dXMoKSk7Ci0gICAgaWYgKHZhcmlhbnQuaW50cmluc2ljKCkg
PT0gTm9JbnRyaW5zaWMpCisgICAgaWYgKHZhcmlhbnQuaW50cmluc2ljKCkgPT0gTm9JbnRyaW5z
aWMgJiYgZGVzdGluYXRpb24uaXNWYWxpZCgpKQogICAgICAgICBzZXQoZGVzdGluYXRpb24sIGxv
YWRlZFZhbHVlKTsKIH0KIApAQCAtNjQ0OCwxMiArNjQ1MiwxNiBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KIAorICAgICAgICAgICAgLy8gU2luY2Ugd2UgZG9uJ3QgdXNlIHRoZSByZXR1cm4g
b2YgcHJpdmF0ZSBicmFuZCBjaGVjaywgd2UgZG9uJ3QgbmVlZCB0byBzZXQgcmVzdWx0IGhlcmUu
CisgICAgICAgICAgICAvLyBUaGlzIGhlbHBzIHVzIERDRSBHZXRCeU9mZnNldCBmb3IgdGhpcyBj
YXNlLgorICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGRlc3RpbmF0aW9uID0gbV9ncmFwaC5t
X3ByaXZhdGVCcmFuZEFjY2Vzcy5jb250YWlucyhwcm9wZXJ0eSkgPyBWaXJ0dWFsUmVnaXN0ZXIo
KSA6IGJ5dGVjb2RlLm1fZHN0OwogICAgICAgICAgICAgaWYgKGNvbXBpbGVTaW5nbGVJZGVudGlm
aWVyKQotICAgICAgICAgICAgICAgIGhhbmRsZUdldFByaXZhdGVOYW1lQnlJZChieXRlY29kZS5t
X2RzdCwgcHJlZGljdGlvbiwgYmFzZSwgaWRlbnRpZmllciwgaWRlbnRpZmllck51bWJlciwgZ2V0
QnlTdGF0dXMpOworICAgICAgICAgICAgICAgIGhhbmRsZUdldFByaXZhdGVOYW1lQnlJZChkZXN0
aW5hdGlvbiwgcHJlZGljdGlvbiwgYmFzZSwgaWRlbnRpZmllciwgaWRlbnRpZmllck51bWJlciwg
Z2V0QnlTdGF0dXMpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgTm9kZSog
bm9kZSA9IGFkZFRvR3JhcGgoR2V0UHJpdmF0ZU5hbWUsIE9wSW5mbygpLCBPcEluZm8ocHJlZGlj
dGlvbiksIGJhc2UsIHByb3BlcnR5KTsKICAgICAgICAgICAgICAgICBtX2V4aXRPSyA9IGZhbHNl
OwotICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgbm9kZSk7CisgICAgICAgICAg
ICAgICAgaWYgKGRlc3RpbmF0aW9uLmlzVmFsaWQoKSkKKyAgICAgICAgICAgICAgICAgICAgc2V0
KGRlc3RpbmF0aW9uLCBub2RlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIE5FWFRfT1BD
T0RFKG9wX2dldF9wcml2YXRlX25hbWUpOwogICAgICAgICB9CkBAIC03NzI5LDEyICs3NzM3LDIx
IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAg
ICAgICAgICAgICAgLy8gcHJlZGljdGlvbiwgd2UnZCBvdGhlcndpc2UgdGhpbmsgdGhhdCBpdCBo
YXMgdG8gZXhpdC4gVGhlbiB3aGVuIGl0IGRpZCBleGVjdXRlLCB3ZQogICAgICAgICAgICAgICAg
IC8vIHdvdWxkIHJlY29tcGlsZS4gQnV0IGlmIHdlIGNhbiBmb2xkIGl0IGhlcmUsIHdlIGF2b2lk
IHRoZSBleGl0LgogICAgICAgICAgICAgICAgIGlmIChKU1ZhbHVlIHZhbHVlID0gbV9ncmFwaC50
cnlHZXRDb25zdGFudENsb3N1cmVWYXIoc2NvcGVOb2RlLCBTY29wZU9mZnNldChvcGVyYW5kKSkp
IHsKLSAgICAgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCB3ZWFrSlNDb25zdGFu
dCh2YWx1ZSkpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gd2Vha0pTQ29uc3Rh
bnQodmFsdWUpOworICAgICAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIG5vZGUp
OworCisgICAgICAgICAgICAgICAgICAgIGlmICh1aWQgJiYgdWlkID09IG1fZ3JhcGgubV92bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5wcml2YXRlQnJhbmRQcml2YXRlTmFtZSgpLmlt
cGwoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9wcml2YXRlQnJhbmRBY2Nl
c3MuYWRkKG5vZGUpOworCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gZ2V0UHJl
ZGljdGlvbigpOwotICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwKLSAgICAgICAg
ICAgICAgICAgICAgYWRkVG9HcmFwaChHZXRDbG9zdXJlVmFyLCBPcEluZm8ob3BlcmFuZCksIE9w
SW5mbyhwcmVkaWN0aW9uKSwgc2NvcGVOb2RlKSk7CisgICAgICAgICAgICAgICAgTm9kZSogbm9k
ZSA9IGFkZFRvR3JhcGgoR2V0Q2xvc3VyZVZhciwgT3BJbmZvKG9wZXJhbmQpLCBPcEluZm8ocHJl
ZGljdGlvbiksIHNjb3BlTm9kZSk7CisgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0
LCBub2RlKTsKKworICAgICAgICAgICAgICAgIGlmICh1aWQgJiYgdWlkID09IG1fZ3JhcGgubV92
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5wcml2YXRlQnJhbmRQcml2YXRlTmFtZSgp
LmltcGwoKSkKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ByaXZhdGVCcmFuZEFjY2Vz
cy5hZGQobm9kZSk7CisKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGNhc2UgVW5yZXNvbHZlZFByb3BlcnR5OgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGIwNjE1MGZjY2Y0Yy4uYWExOTQ1YWM3
NjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGll
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3Bw
CkBAIC0yOTQsNiArMjk0LDggQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNv
ZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKICAgICBjYXNlIG9w
X3N1cGVyX3NhbXBsZXJfZW5kOgogICAgIGNhc2Ugb3BfZ2V0X3ByaXZhdGVfbmFtZToKICAgICBj
YXNlIG9wX3B1dF9wcml2YXRlX25hbWU6CisgICAgY2FzZSBvcF9zZXRfcHJpdmF0ZV9icmFuZDoK
KyAgICBjYXNlIG9wX2NoZWNrX3ByaXZhdGVfYnJhbmQ6CiAgICAgICAgIHJldHVybiBDYW5Db21w
aWxlQW5kSW5saW5lOwogCiAgICAgY2FzZSBvcF9zd2l0Y2hfc3RyaW5nOiAvLyBEb24ndCBpbmxp
bmUgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGNvcHkgc3RyaW5nIHRhYmxlcyBpbiB0aGUgY29u
Y3VycmVudCBKSVQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggYjNhOWJm
ZjVjZDJhLi45NzRmZmZjMmVlZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgK
QEAgLTExODIsNiArMTE4Miw3IEBAIHB1YmxpYzoKICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN5
bWJvbFN0cnVjdHVyZTsKIAogICAgIEhhc2hTZXQ8Tm9kZSo+IG1fc2xvd0dldEJ5VmFsOworICAg
IEhhc2hTZXQ8Tm9kZSo+IG1fcHJpdmF0ZUJyYW5kQWNjZXNzOwogCiBwcml2YXRlOgogICAgIGJv
b2wgaXNTdHJpbmdQcm90b3R5cGVNZXRob2RTYW5lKEpTR2xvYmFsT2JqZWN0KiwgVW5pcXVlZFN0
cmluZ0ltcGwqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCmluZGV4IGMwN2ZkZTA3OTkwYi4uMjlhN2E3MTg1OWUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTE0
NCw5ICsxNDQsOSBAQCBKU1ZhbHVlIGV2YWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIEVDTUFNb2RlIGVjbWFNbwogICAgICAgICB9CiAgICAgICAg
IAogICAgICAgICBURFpFbnZpcm9ubWVudCB2YXJpYWJsZXNVbmRlclREWjsKLSAgICAgICAgVmFy
aWFibGVFbnZpcm9ubWVudCBwcml2YXRlTmFtZXM7Ci0gICAgICAgIEpTU2NvcGU6OmNvbGxlY3RD
bG9zdXJlVmFyaWFibGVzVW5kZXJURFooY2FsbGVyU2NvcGVDaGFpbiwgdmFyaWFibGVzVW5kZXJU
RFosIHByaXZhdGVOYW1lcyk7Ci0gICAgICAgIGV2YWwgPSBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6
Y3JlYXRlKGdsb2JhbE9iamVjdCwgbWFrZVNvdXJjZShwcm9ncmFtU291cmNlLCBjYWxsZXJDb2Rl
QmxvY2stPnNvdXJjZSgpLnByb3ZpZGVyKCktPnNvdXJjZU9yaWdpbigpKSwgZGVyaXZlZENvbnRl
eHRUeXBlLCBjYWxsZXJVbmxpbmtlZENvZGVCbG9jay0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIoKSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgY2FsbGVyQ29kZUJsb2NrLT5vd25lckV4ZWN1
dGFibGUoKS0+aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKCksIGV2YWxDb250ZXh0VHlwZSwgJnZh
cmlhYmxlc1VuZGVyVERaLCAmcHJpdmF0ZU5hbWVzLCBlY21hTW9kZSk7CisgICAgICAgIFByaXZh
dGVOYW1lRW52aXJvbm1lbnQgcHJpdmF0ZU5hbWVFbnZpcm9ubWVudDsKKyAgICAgICAgSlNTY29w
ZTo6Y29sbGVjdENsb3N1cmVWYXJpYWJsZXNVbmRlclREWihjYWxsZXJTY29wZUNoYWluLCB2YXJp
YWJsZXNVbmRlclREWiwgcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCk7CisgICAgICAgIGV2YWwgPSBE
aXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgbWFrZVNvdXJjZShwcm9n
cmFtU291cmNlLCBjYWxsZXJDb2RlQmxvY2stPnNvdXJjZSgpLnByb3ZpZGVyKCktPnNvdXJjZU9y
aWdpbigpKSwgZGVyaXZlZENvbnRleHRUeXBlLCBjYWxsZXJVbmxpbmtlZENvZGVCbG9jay0+bmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgY2FsbGVyVW5saW5rZWRDb2RlQmxvY2stPnByaXZh
dGVCcmFuZFJlcXVpcmVtZW50KCksIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGNhbGxlckNvZGVC
bG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbigpLCBldmFs
Q29udGV4dFR5cGUsICZ2YXJpYWJsZXNVbmRlclREWiwgJnByaXZhdGVOYW1lRW52aXJvbm1lbnQs
IGVjbWFNb2RlKTsKICAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigp
ID09ICFldmFsKTsKICAgICAgICAgaWYgKCFldmFsKQogICAgICAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggY2U4N2M4NzY0Nzc1Li5k
MzllYmY3YzMzNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTM1OCw2ICszNTgs
OCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9P
UChvcF9nZXRfYnlfaWRfZGlyZWN0KQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X3ZhbCkK
ICAgICAgICAgREVGSU5FX09QKG9wX2dldF9wcml2YXRlX25hbWUpCisgICAgICAgIERFRklORV9P
UChvcF9zZXRfcHJpdmF0ZV9icmFuZCkKKyAgICAgICAgREVGSU5FX09QKG9wX2NoZWNrX3ByaXZh
dGVfYnJhbmQpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfcHJvdG90eXBlX29mKQogICAgICAg
ICBERUZJTkVfT1Aob3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZSkKICAgICAgICAgREVGSU5FX09Q
KG9wX2luc3RhbmNlb2YpCkBAIC01NjQsNiArNTY2LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2dldF9ieV9pZF9k
aXJlY3QpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9nZXRfYnlfdmFsKQogICAgICAg
ICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZ2V0X3ByaXZhdGVfbmFtZSkKKyAgICAgICAgREVGSU5F
X1NMT1dDQVNFX09QKG9wX3NldF9wcml2YXRlX2JyYW5kKQorICAgICAgICBERUZJTkVfU0xPV0NB
U0VfT1Aob3BfY2hlY2tfcHJpdmF0ZV9icmFuZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09Q
KG9wX2luc3RhbmNlb2YpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9pbnN0YW5jZW9m
X2N1c3RvbSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2psZXNzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgKaW5kZXggNzhlNzkxODRlYTNkLi5kNDRiY2RiZTUzNmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaApAQCAtNTU1LDYgKzU1NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB2b2lkIGVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiopOwogICAg
ICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAg
ICB2b2lkIGVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiopOworICAg
ICAgICB2b2lkIGVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
KyAgICAgICAgdm9pZCBlbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9hcmd1bWVudF9ieV92YWwoY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9wcm90b3R5cGVfb2YoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2luX2J5X2lkKGNvbnN0IEluc3Ry
dWN0aW9uKik7CkBAIC02ODcsNiArNjg5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZv
aWQgZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9n
ZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9wcml2YXRlX25hbWUoY29uc3Qg
SW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAg
IHZvaWQgZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3df
b3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYXJndW1l
bnRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVt
aXRTbG93X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAppbmRleCAyMzY2OTJjODUyOGYuLjY5NTI5YzE2NDNkNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0yMjcyLDYgKzIyNzIsOCBAQCBB
TFdBWVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIGdldFByaXZhdGVOYW1lKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcgogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpT
VmFsdWUoKSk7CiAKICAgICBKU09iamVjdCogYmFzZSA9IGJhc2VWYWx1ZS50b09iamVjdChnbG9i
YWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CisK
ICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9k
VHlwZTo6R2V0T3duUHJvcGVydHkpOwogICAgIGJhc2UtPmdldFByaXZhdGVGaWVsZChnbG9iYWxP
YmplY3QsIGZpZWxkTmFtZSwgc2xvdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
SlNWYWx1ZSgpKTsKQEAgLTIzNzgsNyArMjM4MCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWRPcHRpbWl6ZSwgRW5jb2RlZEpTVmFsdWUsIChK
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2xvdC5nZXRWYWx1ZShnbG9iYWxPYmpl
Y3QsIGZpZWxkTmFtZSkpOwogICAgIH0KIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2V0
UHJpdmF0ZU5hbWUoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VWYWx1ZSwgZmllbGROYW1l
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZ2V0UHJp
dmF0ZU5hbWUoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VWYWx1ZSwgZmllbGROYW1lKSkp
OwogfQogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVC
eUlkR2VuZXJpYywgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmllcikp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmlu
ZGV4IDYxMmM0OGZmYTJiOC4uNjFkMjcwNzgyNzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtMTM4LDYgKzEzOCwzMCBAQCB2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZQogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhC
ZWdpbiwgY2FsbCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5kKGNv
bnN0IEluc3RydWN0aW9uKikKK3sKKyAgICAvLyBPT1BTOiBJbXBsZW1lbnQgdGhpcworICAgIENS
QVNIKCk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25z
dCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKQoreworICAg
IC8vIE9PUFM6IEltcGxlbWVudCB0aGlzCisgICAgQ1JBU0goKTsKK30KKwordm9pZCBKSVQ6OmVt
aXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiopCit7CisgICAgLy8g
T09QUzogSW1wbGVtZW50IHRoaXMKKyAgICBDUkFTSCgpOworfQorCit2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKQoreworICAgIC8vIE9PUFM6IEltcGxlbWVudCB0aGlzCisg
ICAgQ1JBU0goKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbF9kaXJlY3QoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0X29wX3B1dF9i
eV92YWw8T3BQdXRCeVZhbERpcmVjdD4oY3VycmVudEluc3RydWN0aW9uKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDc3Mjg5NzU3NWRj
ZS4uOThlOWVhNTBlMDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAKQEAgLTEzMDAsNiArMTMwMCw0NiBAQCBMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfcHV0X3ByaXZhdGVfbmFtZSkKICAgICBMTElOVF9FTkQoKTsgICAgCiB9CiAK
K0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zZXRfcHJpdmF0ZV9icmFuZCkKK3sKKyAg
ICBMTElOVF9CRUdJTigpOworCisgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcFNldFByaXZh
dGVCcmFuZD4oKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1l
LCBieXRlY29kZS5tX2Jhc2UpOworICAgIEpTVmFsdWUgYnJhbmQgPSBnZXRPcGVyYW5kKGNhbGxG
cmFtZSwgYnl0ZWNvZGUubV9icmFuZCk7CisKKyAgICAvLyBPT1BTOiBDaGVjayBvbiBzcGVjIGlm
IHRoaXMgc2hvdWxkIGJlIGFuIGFzc2VydCBpbnN0ZWFkCisgICAgSlNPYmplY3QqIGJhc2VPYmpl
Y3QgPSBiYXNlVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBMTElOVF9DSEVDS19F
WENFUFRJT04oKTsKKworICAgIEFTU0VSVChicmFuZC5pc1N5bWJvbCgpKTsKKworICAgIGJhc2VP
YmplY3QtPnNldFByaXZhdGVCcmFuZChnbG9iYWxPYmplY3QsIGJyYW5kKTsKKyAgICBMTElOVF9D
SEVDS19FWENFUFRJT04oKTsKKworICAgIExMSU5UX0VORCgpOyAgICAKK30KKworTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2NoZWNrX3ByaXZhdGVfYnJhbmQpCit7CisgICAgTExJTlRf
QkVHSU4oKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BDaGVja1ByaXZhdGVCcmFu
ZD4oKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRl
Y29kZS5tX2Jhc2UpOworICAgIEpTVmFsdWUgYnJhbmQgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwg
Ynl0ZWNvZGUubV9icmFuZCk7CisKKyAgICAvLyBPT1BTOiBDaGVjayBvbiBzcGVjIGlmIHRoaXMg
c2hvdWxkIGJlIGFuIGFzc2VydCBpbnN0ZWFkCisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBi
YXNlVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJ
T04oKTsKKworICAgIEFTU0VSVChicmFuZC5pc1N5bWJvbCgpKTsKKworICAgIGJhc2VPYmplY3Qt
PmNoZWNrUHJpdmF0ZUJyYW5kKGdsb2JhbE9iamVjdCwgYnJhbmQpOworICAgIExMSU5UX0NIRUNL
X0VYQ0VQVElPTigpOworCisgICAgTExJTlRfRU5EKCk7ICAgIAorfQorCiBMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0
LmFzbQppbmRleCA1MzRlMGRmM2RlMzAuLjhkNGEwZDlmM2M3MSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTE4
MjYsNiArMTgyNiwxNiBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF9wcml2YXRlX25hbWUs
IE9wUHV0UHJpdmF0ZU5hbWUsIG1hY3JvIChzaXplLCBnZXQsIGRpcwogICAgIGRpc3BhdGNoKCkK
IGVuZCkKIAorbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9zZXRfcHJpdmF0ZV9icmFuZCwgT3BTZXRQ
cml2YXRlQnJhbmQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJu
KQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3NldF9wcml2YXRlX2JyYW5kKQor
ICAgIGRpc3BhdGNoKCkKK2VuZCkKKworbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9jaGVja19wcml2
YXRlX2JyYW5kLCBPcENoZWNrUHJpdmF0ZUJyYW5kLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRj
aCwgbWV0YWRhdGEsIHJldHVybikKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9j
aGVja19wcml2YXRlX2JyYW5kKQorICAgIGRpc3BhdGNoKCkKK2VuZCkKKwogbWFjcm8gcHV0QnlW
YWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIG9zckV4aXRQb2ludCkKICAgICBsbGludE9w
V2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKICAgICAgICAgbWFjcm8gY29udGlndW91
c1B1dEJ5VmFsKHN0b3JlQ2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMu
Y3BwCmluZGV4IDY0YTY2Zjc2NWM4Zi4uMDJiNzg3NWNjYWY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzLmNwcApAQCAtMjAyLDYgKzIwMiw3IEBAIEZ1bmN0aW9uTWV0YWRhdGFO
b2RlOjpGdW5jdGlvbk1ldGFkYXRhTm9kZSgKICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkKICAgICAgICAgLCBtX25lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihOZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplcjo6Tm8pKQogICAgICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJl
c3Npb24oaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCisgICAgICAgICwgbV9wcml2YXRl
QnJhbmRSZXF1aXJlbWVudChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJpdmF0ZUJyYW5kUmVxdWly
ZW1lbnQ6Ok5vbmUpKQogICAgICAgICAsIG1fcGFyc2VNb2RlKG1vZGUpCiAgICAgICAgICwgbV9z
dGFydENvbHVtbihzdGFydENvbHVtbikKICAgICAgICAgLCBtX2VuZENvbHVtbihlbmRDb2x1bW4p
CkBAIC0yMjYsNiArMjI3LDcgQEAgRnVuY3Rpb25NZXRhZGF0YU5vZGU6OkZ1bmN0aW9uTWV0YWRh
dGFOb2RlKAogICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVk
Pihjb25zdHJ1Y3RvcktpbmQpKQogICAgICAgICAsIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObykp
CiAgICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbihpc0Fycm93RnVuY3Rp
b25Cb2R5RXhwcmVzc2lvbikKKyAgICAgICAgLCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50KHN0
YXRpY19jYXN0PHVuc2lnbmVkPihQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZSkpCiAgICAg
ICAgICwgbV9wYXJzZU1vZGUobW9kZSkKICAgICAgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29s
dW1uKQogICAgICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuaAppbmRleCA3MzU4YmIzMjUyN2UuLjFmZDNmMjQ3NjAwNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtNzIxLDcgKzcyMSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIGVudW0gY2xhc3MgQ2xhc3NFbGVtZW50VGFnIDogdWludDhfdCB7IE5vLCBJbnN0
YW5jZSwgU3RhdGljLCBMYXN0VGFnIH07CiAgICAgY2xhc3MgUHJvcGVydHlOb2RlIGZpbmFsIDog
cHVibGljIFBhcnNlckFyZW5hRnJlZWFibGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgZW51bSBU
eXBlIDogdWludDhfdCB7IENvbnN0YW50ID0gMSwgR2V0dGVyID0gMiwgU2V0dGVyID0gNCwgQ29t
cHV0ZWQgPSA4LCBTaG9ydGhhbmQgPSAxNiwgU3ByZWFkID0gMzIsIFByaXZhdGUgPSA2NCB9Owor
ICAgICAgICBlbnVtIFR5cGUgOiB1aW50OF90IHsgQ29uc3RhbnQgPSAxLCBHZXR0ZXIgPSAyLCBT
ZXR0ZXIgPSA0LCBDb21wdXRlZCA9IDgsIFNob3J0aGFuZCA9IDE2LCBTcHJlYWQgPSAzMiwgUHJp
dmF0ZUZpZWxkID0gNjQsIFByaXZhdGVNZXRob2QgPSAxMjggfTsKIAogICAgICAgICBQcm9wZXJ0
eU5vZGUoY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiwgVHlwZSwgU3VwZXJCaW5k
aW5nLCBDbGFzc0VsZW1lbnRUYWcpOwogICAgICAgICBQcm9wZXJ0eU5vZGUoRXhwcmVzc2lvbk5v
ZGUqLCBUeXBlLCBTdXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZyk7CkBAIC03MzksNyArNzM5
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgaXNDbGFzc0ZpZWxkKCkgY29uc3Qg
eyByZXR1cm4gaXNDbGFzc1Byb3BlcnR5KCkgJiYgIW5lZWRzU3VwZXJCaW5kaW5nKCk7IH0KICAg
ICAgICAgYm9vbCBpc0luc3RhbmNlQ2xhc3NGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGlzSW5zdGFu
Y2VDbGFzc1Byb3BlcnR5KCkgJiYgIW5lZWRzU3VwZXJCaW5kaW5nKCk7IH0KICAgICAgICAgYm9v
bCBpc092ZXJyaWRkZW5CeUR1cGxpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNPdmVycmlkZGVu
QnlEdXBsaWNhdGU7IH0KLSAgICAgICAgYm9vbCBpc1ByaXZhdGUoKSBjb25zdCB7IHJldHVybiBt
X3R5cGUgJiBQcml2YXRlOyB9CisgICAgICAgIGJvb2wgaXNQcml2YXRlKCkgY29uc3QgeyByZXR1
cm4gbV90eXBlICYgKFByaXZhdGVGaWVsZCB8IFByaXZhdGVNZXRob2QpOyB9CiAgICAgICAgIGJv
b2wgaGFzQ29tcHV0ZWROYW1lKCkgY29uc3QgeyByZXR1cm4gbV9leHByZXNzaW9uOyB9CiAgICAg
ICAgIGJvb2wgaXNDb21wdXRlZENsYXNzRmllbGQoKSBjb25zdCB7IHJldHVybiBpc0NsYXNzRmll
bGQoKSAmJiBoYXNDb21wdXRlZE5hbWUoKTsgfQogICAgICAgICB2b2lkIHNldElzT3ZlcnJpZGRl
bkJ5RHVwbGljYXRlKCkgeyBtX2lzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlID0gdHJ1ZTsgfQpAQCAt
NzU5LDcgKzc1OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdCBJZGVudGlmaWVy
KiBtX25hbWU7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHJlc3Npb247CiAgICAgICAg
IEV4cHJlc3Npb25Ob2RlKiBtX2Fzc2lnbjsKLSAgICAgICAgdW5zaWduZWQgbV90eXBlIDogNzsK
KyAgICAgICAgdW5zaWduZWQgbV90eXBlOwogICAgICAgICB1bnNpZ25lZCBtX25lZWRzU3VwZXJC
aW5kaW5nIDogMTsKICAgICAgICAgc3RhdGljX2Fzc2VydCgxIDw8IDIgPiBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oQ2xhc3NFbGVtZW50VGFnOjpMYXN0VGFnKSwgIkNsYXNzRWxlbWVudFRhZyBzaG91
bGRuJ3QgdXNlIG1vcmUgdGhhbiB0d28gYml0cyIpOwogICAgICAgICB1bnNpZ25lZCBtX2NsYXNz
RWxlbWVudFRhZyA6IDI7CkBAIC04MzIsNyArODMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIGJvb2wgbV9zdWJzY3JpcHRIYXNBc3NpZ25tZW50czsKICAgICB9OwogCi0gICAgZW51bSBj
bGFzcyBEb3RUeXBlIHsgTmFtZSwgUHJpdmF0ZUZpZWxkIH07CisgICAgZW51bSBjbGFzcyBEb3RU
eXBlIHsgTmFtZSwgUHJpdmF0ZU1lbWJlciB9OwogICAgIGNsYXNzIEJhc2VEb3ROb2RlIDogcHVi
bGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIEJhc2VEb3ROb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlm
aWVyJiwgRG90VHlwZSk7CkBAIC04NDAsNyArODQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIEV4cHJlc3Npb25Ob2RlKiBiYXNlKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlOyB9CiAgICAg
ICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50
OyB9CiAgICAgICAgIERvdFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQotICAg
ICAgICBib29sIGlzUHJpdmF0ZUZpZWxkKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IERvdFR5
cGU6OlByaXZhdGVGaWVsZDsgfQorICAgICAgICBib29sIGlzUHJpdmF0ZU1lbWJlcigpIGNvbnN0
IHsgcmV0dXJuIG1fdHlwZSA9PSBEb3RUeXBlOjpQcml2YXRlTWVtYmVyOyB9CiAKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdEdldFByb3BlcnR5VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZlB0cjxSZWdpc3RlcklEPiYgdGhpc1Zh
bHVlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldFByb3BlcnR5VmFsdWUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UpOwpAQCAtODY0LDcg
Kzg2NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51bGxwdHIpIGZpbmFsOwogCiAg
ICAgICAgIGJvb2wgaXNMb2NhdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAg
ICAgICAgYm9vbCBpc1ByaXZhdGVMb2NhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
dHlwZSA9PSBEb3RUeXBlOjpQcml2YXRlRmllbGQ7IH0KKyAgICAgICAgYm9vbCBpc1ByaXZhdGVM
b2NhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fdHlwZSA9PSBEb3RUeXBlOjpQcml2
YXRlTWVtYmVyOyB9CiAgICAgICAgIGJvb2wgaXNEb3RBY2Nlc3Nvck5vZGUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiB0cnVlOyB9CiAgICAgfTsKIApAQCAtMjE1MSw2ICsyMTUxLDkgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHZvaWQgc2V0RWNtYU5hbWUoY29uc3QgSWRlbnRpZmllciYgZWNt
YU5hbWUpIHsgbV9lY21hTmFtZSA9IGVjbWFOYW1lOyB9CiAgICAgICAgIGNvbnN0IElkZW50aWZp
ZXImIGVjbWFOYW1lKCkgeyByZXR1cm4gbV9pZGVudC5pc0VtcHR5KCkgPyBtX2VjbWFOYW1lIDog
bV9pZGVudDsgfQogCisgICAgICAgIHZvaWQgc2V0UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoUHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpIHsgbV9wcml2YXRl
QnJhbmRSZXF1aXJlbWVudCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihwcml2YXRlQnJhbmRSZXF1
aXJlbWVudCk7IH0KKyAgICAgICAgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxQcml2YXRlQnJhbmRSZXF1aXJlbWVu
dD4obV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7IH0KKwogICAgICAgICBGdW5jdGlvbk1vZGUg
ZnVuY3Rpb25Nb2RlKCkgeyByZXR1cm4gbV9mdW5jdGlvbk1vZGU7IH0KIAogICAgICAgICBpbnQg
ZnVuY3Rpb25OYW1lU3RhcnQoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uTmFtZVN0YXJ0OyB9
CkBAIC0yMTk5LDYgKzIyMDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQg
bV9jb25zdHJ1Y3RvcktpbmQgOiAyOwogICAgICAgICB1bnNpZ25lZCBtX25lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyIDogMTsKICAgICAgICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb25Cb2R5
RXhwcmVzc2lvbiA6IDE7CisgICAgICAgIHVuc2lnbmVkIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQgOiAxOwogICAgICAgICBTb3VyY2VQYXJzZU1vZGUgbV9wYXJzZU1vZGU7CiAgICAgICAgIEZ1
bmN0aW9uTW9kZSBtX2Z1bmN0aW9uTW9kZTsKICAgICAgICAgSWRlbnRpZmllciBtX2lkZW50Owpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IGUxOTBlNjkzNjk5NS4u
OGFhOGZkNGE5Y2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBA
IC0yODUxLDYgKzI4NTEsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVDbGFz
c0V4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MoVAogICAgIGNsYXNzU2Nv
cGUtPnNldElzTGV4aWNhbFNjb3BlKCk7CiAgICAgY2xhc3NTY29wZS0+cHJldmVudFZhckRlY2xh
cmF0aW9ucygpOwogICAgIGNsYXNzU2NvcGUtPnNldFN0cmljdE1vZGUoKTsKKyAgICBib29sIGRl
Y2xhcmVzUHJpdmF0ZU1ldGhvZCA9IGZhbHNlOwogCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShy
ZXF1aXJlbWVudHMgIT0gRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzOjpVbm5hbWVkLCAiQ3VycmVu
dGx5LCB0aGVyZSBpcyBubyBjYWxsZXIgdGhhdCB1c2VzIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50
czo6VW5uYW1lZCBmb3IgY2xhc3Mgc3ludGF4LiIpOwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
IShyZXF1aXJlbWVudHMgPT0gRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzOjpOb25lICYmICFpbmZv
LmNsYXNzTmFtZSksICJXaGVuIHNwZWNpZnlpbmcgRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzOjpO
b25lLCB3ZSBuZWVkIHRvIGluaXRpYWxpemUgaW5mby5jbGFzc05hbWUgd2l0aCB0aGUgZGVmYXVs
dCB2YWx1ZSBpbiB0aGUgY2FsbGVyIHNpZGUuIik7CkBAIC0yOTY1LDE1ICsyOTY2LDIxIEBAIHBh
cnNlTWV0aG9kOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUFJJVkFURU5BTUU6
IHsKICAgICAgICAgICAgIEFTU0VSVChPcHRpb25zOjp1c2VQcml2YXRlQ2xhc3NGaWVsZHMoKSk7
Ci0gICAgICAgICAgICBKU1Rva2VuIHRva2VuID0gbV90b2tlbjsKICAgICAgICAgICAgIGlkZW50
ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CiAgICAgICAgICAgICBmYWlsSWZUcnVlKHRhZyA9PSBD
bGFzc0VsZW1lbnRUYWc6OlN0YXRpYywgIlN0YXRpYyBjbGFzcyBlbGVtZW50IGNhbm5vdCBiZSBw
cml2YXRlIik7CiAgICAgICAgICAgICBmYWlsSWZUcnVlKGlzR2V0dGVyIHx8IGlzU2V0dGVyLCAi
Q2Fubm90IHBhcnNlIGNsYXNzIG1ldGhvZCB3aXRoIHByaXZhdGUgbmFtZSIpOwogICAgICAgICAg
ICAgQVNTRVJUKGlkZW50KTsKICAgICAgICAgICAgIG5leHQoKTsKLSAgICAgICAgICAgIGZhaWxJ
ZlRydWUobWF0Y2hBbmRVcGRhdGUoT1BFTlBBUkVOLCB0b2tlbiksICJDYW5ub3QgcGFyc2UgY2xh
c3MgbWV0aG9kIHdpdGggcHJpdmF0ZSBuYW1lIik7Ci0gICAgICAgICAgICBzZW1hbnRpY0ZhaWxJ
ZlRydWUoY2xhc3NTY29wZS0+ZGVjbGFyZVByaXZhdGVOYW1lKCppZGVudCkgJiBEZWNsYXJhdGlv
blJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uLCAiQ2Fubm90IGRlY2xhcmUgcHJp
dmF0ZSBmaWVsZCB0d2ljZSIpOwotICAgICAgICAgICAgdHlwZSA9IHN0YXRpY19jYXN0PFByb3Bl
cnR5Tm9kZTo6VHlwZT4odHlwZSB8IFByb3BlcnR5Tm9kZTo6UHJpdmF0ZSk7CisgICAgICAgICAg
ICBpZiAoT3B0aW9uczo6dXNlUHJpdmF0ZU1ldGhvZHMoKSAmJiBtYXRjaChPUEVOUEFSRU4pKSB7
CisgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGNsYXNzU2NvcGUtPmRlY2xhcmVQ
cml2YXRlTWV0aG9kKCppZGVudCkgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0
ZURlY2xhcmF0aW9uLCAiQ2Fubm90IGRlY2xhcmUgcHJpdmF0ZSBtZXRob2QgdHdpY2UiKTsKKyAg
ICAgICAgICAgICAgICBkZWNsYXJlc1ByaXZhdGVNZXRob2QgPSB0cnVlOworICAgICAgICAgICAg
ICAgIHR5cGUgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KHR5cGUgfCBQcm9wZXJ0
eU5vZGU6OlByaXZhdGVNZXRob2QpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBmYWlsSWZUcnVlKG1hdGNoKE9QRU5QQVJFTiksICJDYW5ub3Qg
cGFyc2UgY2xhc3MgbWV0aG9kIHdpdGggcHJpdmF0ZSBuYW1lIik7CisgICAgICAgICAgICBzZW1h
bnRpY0ZhaWxJZlRydWUoY2xhc3NTY29wZS0+ZGVjbGFyZVByaXZhdGVGaWVsZCgqaWRlbnQpICYg
RGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbiwgIkNhbm5vdCBk
ZWNsYXJlIHByaXZhdGUgZmllbGQgdHdpY2UiKTsKKyAgICAgICAgICAgIHR5cGUgPSBzdGF0aWNf
Y2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KHR5cGUgfCBQcm9wZXJ0eU5vZGU6OlByaXZhdGVGaWVs
ZCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgpAQCAt
MzA1MywxMCArMzA2MCwxOSBAQCBwYXJzZU1ldGhvZDoKICAgICBpbmZvLmVuZE9mZnNldCA9IHRv
a2VuTG9jYXRpb24oKS5lbmRPZmZzZXQgLSAxOwogICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VCUkFD
RSwgIkV4cGVjdGVkIGEgY2xvc2luZyAnfScgYWZ0ZXIgYSBjbGFzcyBib2R5Iik7CiAKKyAgICBp
ZiAoZGVjbGFyZXNQcml2YXRlTWV0aG9kKSB7CisgICAgICAgIElkZW50aWZpZXIgcHJpdmF0ZUJy
YW5kSWRlbnRpZmllciA9IG1fdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucHJpdmF0
ZUJyYW5kUHJpdmF0ZU5hbWUoKTsKKyAgICAgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xh
cmF0aW9uUmVzdWx0ID0gY2xhc3NTY29wZS0+ZGVjbGFyZUxleGljYWxWYXJpYWJsZSgmcHJpdmF0
ZUJyYW5kSWRlbnRpZmllciwgdHJ1ZSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoZGVjbGFyYXRp
b25SZXN1bHQsIGRlY2xhcmF0aW9uUmVzdWx0ID09IERlY2xhcmF0aW9uUmVzdWx0OjpWYWxpZCk7
CisgICAgICAgIGNsYXNzU2NvcGUtPnVzZVZhcmlhYmxlKCZwcml2YXRlQnJhbmRJZGVudGlmaWVy
LCBmYWxzZSk7CisgICAgICAgIGNsYXNzU2NvcGUtPmFkZENsb3NlZFZhcmlhYmxlQ2FuZGlkYXRl
VW5jb25kaXRpb25hbGx5KHByaXZhdGVCcmFuZElkZW50aWZpZXIuaW1wbCgpKTsKKyAgICB9CisK
ICAgICBpZiAoT3B0aW9uczo6dXNlUHJpdmF0ZUNsYXNzRmllbGRzKCkpIHsKICAgICAgICAgLy8g
RmFpbCBpZiB0aGVyZSBhcmUgbm8gcGFyZW50IHByaXZhdGUgbmFtZSBzY29wZXMgYW5kIGFueSB1
c2VkLWJ1dC11bmRlY2xhcmVkIHByaXZhdGUgbmFtZXMuCiAgICAgICAgIHNlbWFudGljRmFpbElm
RmFsc2UoY29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXNUb091dGVyU2NvcGUoKSwgIkNhbm5vdCBy
ZWZlcmVuY2UgdW5kZWNsYXJlZCBwcml2YXRlIG5hbWVzIik7CiAgICAgfQorCiAgICAgYXV0byBj
bGFzc0V4cHJlc3Npb24gPSBjb250ZXh0LmNyZWF0ZUNsYXNzRXhwcihsb2NhdGlvbiwgaW5mbywg
Y2xhc3NTY29wZS0+ZmluYWxpemVMZXhpY2FsRW52aXJvbm1lbnQoKSwgY29uc3RydWN0b3IsIHBh
cmVudENsYXNzLCBjbGFzc0VsZW1lbnRzKTsKICAgICBwb3BTY29wZShjbGFzc1Njb3BlLCBUcmVl
QnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsKICAgICByZXR1cm4gY2xhc3NFeHByZXNz
aW9uOwpAQCAtNTA3Myw3ICs1MDg5LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXMKICAgICAg
ICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxzZSh1c2VQcml2YXRlTmFtZShpZGVudCks
ICJDYW5ub3QgcmVmZXJlbmNlIHByaXZhdGUgbmFtZXMgb3V0c2lkZSBvZiBjbGFzcyIpOwogICAg
ICAgICAgICAgICAgICAgICBtX3BhcnNlclN0YXRlLmxhc3RQcml2YXRlTmFtZSA9IGlkZW50Owog
ICAgICAgICAgICAgICAgICAgICBjdXJyZW50U2NvcGUoKS0+dXNlVmFyaWFibGUoaWRlbnQsIGZh
bHNlKTsKLSAgICAgICAgICAgICAgICAgICAgdHlwZSA9IERvdFR5cGU6OlByaXZhdGVGaWVsZDsK
KyAgICAgICAgICAgICAgICAgICAgdHlwZSA9IERvdFR5cGU6OlByaXZhdGVNZW1iZXI7CiAgICAg
ICAgICAgICAgICAgICAgIG1fdG9rZW4ubV90eXBlID0gSURFTlQ7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIG1hdGNoT3JGYWlsKElERU5ULCAiRXhwZWN0ZWQgYSBwcm9wZXJ0
eSBuYW1lIGFmdGVyICIsIG9wdGlvbmFsQ2hhaW5CYXNlID8gIic/LiciIDogIicuJyIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggY2VjY2Y4MTYzMjhkLi4wNDkyNzVl
YjAyYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtNTExLDExICs1
MTEsMjggQEAgcHVibGljOgogICAgICAgICBtX2xleGljYWxWYXJpYWJsZXMudXNlUHJpdmF0ZU5h
bWUoaWRlbnQpOwogICAgIH0KIAotICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJlUHJp
dmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgRGVjbGFyYXRpb25SZXN1bHRN
YXNrIGRlY2xhcmVQcml2YXRlTWV0aG9kKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKG1fYWxsb3dzTGV4aWNhbERlY2xhcmF0aW9ucyk7CiAgICAgICAgIERl
Y2xhcmF0aW9uUmVzdWx0TWFzayByZXN1bHQgPSBEZWNsYXJhdGlvblJlc3VsdDo6VmFsaWQ7Ci0g
ICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9sZXhpY2FsVmFyaWFibGVzLmRlY2xhcmVQcml2YXRl
TmFtZShpZGVudCk7CisgICAgICAgIGJvb2wgYWRkUmVzdWx0ID0gbV9sZXhpY2FsVmFyaWFibGVz
LmRlY2xhcmVQcml2YXRlTWV0aG9kKGlkZW50KTsKKworICAgICAgICBpZiAoIWFkZFJlc3VsdCkg
eworICAgICAgICAgICAgcmVzdWx0IHw9IERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGlj
YXRlRGVjbGFyYXRpb247CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisK
KyAgICAgICAgdXNlVmFyaWFibGUoJmlkZW50LCBmYWxzZSk7CisgICAgICAgIGFkZENsb3NlZFZh
cmlhYmxlQ2FuZGlkYXRlVW5jb25kaXRpb25hbGx5KGlkZW50LmltcGwoKSk7CisKKyAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFy
ZVByaXZhdGVGaWVsZChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICB7CisgICAgICAgIEFT
U0VSVChtX2FsbG93c0xleGljYWxEZWNsYXJhdGlvbnMpOworICAgICAgICBEZWNsYXJhdGlvblJl
c3VsdE1hc2sgcmVzdWx0ID0gRGVjbGFyYXRpb25SZXN1bHQ6OlZhbGlkOworICAgICAgICBhdXRv
IGFkZFJlc3VsdCA9IG1fbGV4aWNhbFZhcmlhYmxlcy5kZWNsYXJlUHJpdmF0ZUZpZWxkKGlkZW50
KTsKICAgICAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgIHJlc3Vs
dCB8PSBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uOwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwpAQCAtOTU1LDcgKzk3Miw3IEBAIHB1YmxpYzoKICAgICB+UGFy
c2VyKCk7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4KLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFyc2VyRXJyb3ImLCBjb25zdCBJZGVudGlmaWVyJiwg
U291cmNlUGFyc2VNb2RlLCBQYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNv
bnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gV1RGOjpudWxsb3B0LCBjb25zdCBWYXJp
YWJsZUVudmlyb25tZW50KiA9IG51bGxwdHIsIGNvbnN0IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4q
ID0gbnVsbHB0cik7CisgICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKFBhcnNl
ckVycm9yJiwgY29uc3QgSWRlbnRpZmllciYsIFNvdXJjZVBhcnNlTW9kZSwgUGFyc2luZ0NvbnRl
eHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlv
biA9IFdURjo6bnVsbG9wdCwgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogPSBudWxscHRy
LCBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiA9IG51bGxwdHIpOwogCiAgICAgSlNUZXh0
UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGV4
ZXItPnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsgfQogICAgIEpTVG9rZW5Mb2NhdGlvbiBs
b2NhdGlvbkJlZm9yZUxhc3RUb2tlbigpIGNvbnN0IHsgcmV0dXJuIG1fbGV4ZXItPmxhc3RUb2tl
bkxvY2F0aW9uKCk7IH0KQEAgLTIwNTMsNyArMjA3MCw3IEBAIHByaXZhdGU6CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4KLXN0ZDo6
dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UoUGFyc2VyRXJy
b3ImIGVycm9yLCBjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBTb3VyY2VQYXJzZU1vZGUg
cGFyc2VNb2RlLCBQYXJzaW5nQ29udGV4dCBwYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBm
dW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uLCBjb25zdCBWYXJpYWJsZUVu
dmlyb25tZW50KiBwYXJlbnRTY29wZVByaXZhdGVOYW1lcywgY29uc3QgVmVjdG9yPEpTVGV4dFBv
c2l0aW9uPiogaW5zdGFuY2VGaWVsZExvY2F0aW9ucykKK3N0ZDo6dW5pcXVlX3B0cjxQYXJzZWRO
b2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UoUGFyc2VyRXJyb3ImIGVycm9yLCBjb25zdCBJ
ZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBQYXJzaW5n
Q29udGV4dCBwYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9y
UGFyYW1ldGVyc0VuZFBvc2l0aW9uLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiBwYXJl
bnRTY29wZVByaXZhdGVOYW1lcywgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogaW5zdGFu
Y2VGaWVsZExvY2F0aW9ucykKIHsKICAgICBpbnQgZXJyTGluZTsKICAgICBTdHJpbmcgZXJyTXNn
OwpAQCAtMjA2OCw5ICsyMDg1LDkgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IEkKICAgICBBU1NF
UlQobV9zb3VyY2UtPnN0YXJ0Q29sdW1uKCkgPiBPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgp
KTsKICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IG1fc291cmNlLT5zdGFydENvbHVtbigpLnpl
cm9CYXNlZEludCgpOwogCi0gICAgaWYgKGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSAmJiBwYXJl
bnRTY29wZVByaXZhdGVOYW1lcyAmJiBwYXJlbnRTY29wZVByaXZhdGVOYW1lcy0+cHJpdmF0ZU5h
bWVzU2l6ZSgpKSB7CisgICAgaWYgKGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSAmJiBwYXJlbnRT
Y29wZVByaXZhdGVOYW1lcyAmJiBwYXJlbnRTY29wZVByaXZhdGVOYW1lcy0+c2l6ZSgpKSB7CiAg
ICAgICAgIGN1cnJlbnRTY29wZSgpLT5zZXRJc1ByaXZhdGVOYW1lU2NvcGUoKTsKLSAgICAgICAg
cGFyZW50U2NvcGVQcml2YXRlTmFtZXMtPmNvcHlQcml2YXRlTmFtZXNUbyhjdXJyZW50U2NvcGUo
KS0+bGV4aWNhbFZhcmlhYmxlcygpKTsKKyAgICAgICAgY3VycmVudFNjb3BlKCktPmxleGljYWxW
YXJpYWJsZXMoKS5hZGRQcml2YXRlTmFtZXNGcm9tKHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzKTsK
ICAgICB9CiAKICAgICBhdXRvIHBhcnNlUmVzdWx0ID0gcGFyc2VJbm5lcihjYWxsZWVOYW1lLCBw
YXJzZU1vZGUsIHBhcnNpbmdDb250ZXh0LCBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0Vu
ZFBvc2l0aW9uLCBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKTsKQEAgLTIxNTcsNyArMjE3NCw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgKICAgICBEZXJpdmVkQ29udGV4dFR5
cGUgZGVyaXZlZENvbnRleHRUeXBlID0gRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLAogICAgIEV2
YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUgPSBFdmFsQ29udGV4dFR5cGU6Ok5vbmUsCiAg
ICAgRGVidWdnZXJQYXJzZURhdGEqIGRlYnVnZ2VyUGFyc2VEYXRhID0gbnVsbHB0ciwKLSAgICBj
b25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVByaXZhdGVOYW1lcyA9IG51bGxw
dHIsCisgICAgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVQcml2YXRl
TmFtZXMgPSBudWxscHRyLAogICAgIGNvbnN0IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qIGluc3Rh
bmNlRmllbGRMb2NhdGlvbnMgPSBudWxscHRyLAogICAgIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1
bmN0aW9uID0gZmFsc2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlck1vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1v
ZGVzLmgKaW5kZXggZWFmZmRlMjFjMTU5Li45ZDlhMTg5Yjc2YmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKQEAgLTM3LDYgKzM3LDggQEAgZW51bSBjbGFz
cyBKU1BhcnNlclNjcmlwdE1vZGUgeyBDbGFzc2ljLCBNb2R1bGUgfTsKIAogZW51bSBjbGFzcyBT
dXBlckJpbmRpbmcgeyBOZWVkZWQsIE5vdE5lZWRlZCB9OwogCitlbnVtIGNsYXNzIFByaXZhdGVC
cmFuZFJlcXVpcmVtZW50IHsgTm9uZSwgTmVlZGVkIH07CisKIGVudW0gY2xhc3MgQ29kZUdlbmVy
YXRpb25Nb2RlIDogdWludDhfdCB7CiAgICAgRGVidWdnZXIgPSAxIDw8IDAsCiAgICAgVHlwZVBy
b2ZpbGVyID0gMSA8PCAxLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9TeW50YXhDaGVja2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENo
ZWNrZXIuaAppbmRleCAxYTZkMGU0OGFjZWEuLjYxOGNkYjNmYzFkMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKQEAgLTE3OSw3ICsxNzksNyBAQCBw
dWJsaWM6CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQm9vbGVhbihjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBib29sKSB7IHJldHVybiBCb29sRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNy
ZWF0ZU51bGwoY29uc3QgSlNUb2tlbkxvY2F0aW9uJikgeyByZXR1cm4gTnVsbEV4cHI7IH0KICAg
ICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCcmFja2V0QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgYm9vbCwgaW50LCBpbnQsIGludCkg
eyByZXR1cm4gQnJhY2tldEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVEb3RBY2Nl
c3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIGNvbnN0IElkZW50aWZp
ZXIqLCBEb3RUeXBlIHR5cGUsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIHR5cGUgPT0gRG90VHlw
ZTo6UHJpdmF0ZUZpZWxkID8gUHJpdmF0ZURvdEV4cHIgOiBEb3RFeHByOyB9CisgICAgRXhwcmVz
c2lvblR5cGUgY3JlYXRlRG90QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25UeXBlLCBjb25zdCBJZGVudGlmaWVyKiwgRG90VHlwZSB0eXBlLCBpbnQsIGludCwgaW50KSB7
IHJldHVybiB0eXBlID09IERvdFR5cGU6OlByaXZhdGVNZW1iZXIgPyBQcml2YXRlRG90RXhwciA6
IERvdEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVSZWdFeHAoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYgcGF0dGVybiwgY29uc3QgSWRlbnRpZmllciYg
ZmxhZ3MsIGludCkgeyByZXR1cm4gWWFycjo6aGFzRXJyb3IoWWFycjo6Y2hlY2tTeW50YXgocGF0
dGVybi5zdHJpbmcoKSwgZmxhZ3Muc3RyaW5nKCkpKSA/IDAgOiBSZWdFeHBFeHByOyB9CiAgICAg
RXhwcmVzc2lvblR5cGUgY3JlYXRlTmV3RXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uVHlwZSwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBOZXdFeHByOyB9CiAgICAg
RXhwcmVzc2lvblR5cGUgY3JlYXRlTmV3RXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uVHlwZSwgaW50LCBpbnQpIHsgcmV0dXJuIE5ld0V4cHI7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwCmluZGV4IDgx
YTljOTM4ZGMxMS4uM2VjNTdjM2UyYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAKQEAgLTEwNCw2ICsxMDQsNDAgQEAg
dm9pZCBWYXJpYWJsZUVudmlyb25tZW50OjptYXJrVmFyaWFibGVBc0V4cG9ydGVkKGNvbnN0IFJl
ZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4KICAgICBmaW5kUmVzdWx0LT52YWx1ZS5zZXRJc0V4cG9y
dGVkKCk7CiB9CiAKK2Jvb2wgVmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVByaXZhdGVNZXRo
b2QoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikKK3sKKyAgICBp
ZiAoIW1fcmFyZURhdGEpCisgICAgICAgIG1fcmFyZURhdGEgPSBtYWtlVW5pcXVlPFZhcmlhYmxl
RW52aXJvbm1lbnQ6OlJhcmVEYXRhPigpOworCisgICAgYXV0byBmaW5kUmVzdWx0ID0gbV9yYXJl
RGF0YS0+bV9wcml2YXRlTmFtZXMuZmluZChpZGVudGlmaWVyKTsKKworICAgIGlmIChmaW5kUmVz
dWx0ID09IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmVuZCgpKSB7CisgICAgICAgIFByaXZh
dGVOYW1lRW50cnkgbWV0YShQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzRGVjbGFyZWQgfCBQ
cml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzTWV0aG9kKTsKKworICAgICAgICBhdXRvIGVudHJ5
ID0gVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCk7CisgICAgICAgIGVudHJ5LnNldElzUHJpdmF0
ZU1ldGhvZCgpOworICAgICAgICBlbnRyeS5zZXRJc0NvbnN0KCk7CisgICAgICAgIGVudHJ5LnNl
dElzQ2FwdHVyZWQoKTsKKyAgICAgICAgbV9tYXAuYWRkKGlkZW50aWZpZXIsIGVudHJ5KTsKKwor
ICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChp
ZGVudGlmaWVyLCBtZXRhKTsKKyAgICAgICAgcmV0dXJuIGFkZFJlc3VsdC5pc05ld0VudHJ5Owor
ICAgIH0KKworICAgIGlmIChmaW5kUmVzdWx0LT52YWx1ZS5pc0RlY2xhcmVkKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsgLy8gRXJyb3I6IGRlY2xhcmluZyBhIGR1cGxpY2F0ZSBwcml2YXRlIG5h
bWUuCisKKyAgICBhdXRvIGVudHJ5ID0gVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCk7CisgICAg
ZW50cnkuc2V0SXNQcml2YXRlTWV0aG9kKCk7CisgICAgZW50cnkuc2V0SXNDb25zdCgpOworICAg
IGVudHJ5LnNldElzQ2FwdHVyZWQoKTsKKyAgICBtX21hcC5hZGQoaWRlbnRpZmllciwgZW50cnkp
OworCisgICAgLy8gaXQgd2FzIHByZXZpb3VzbHkgdXNlZCwgbWFyayBpdCBhcyBkZWNsYXJlZC4K
KyAgICBQcml2YXRlTmFtZUVudHJ5IG1ldGEoUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc0Rl
Y2xhcmVkIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc1VzZWQgfCBQcml2YXRlTmFtZUVu
dHJ5OjpUcmFpdHM6OklzTWV0aG9kKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmFyZURhdGEt
Pm1fcHJpdmF0ZU5hbWVzLnNldChpZGVudGlmaWVyLCBtZXRhKTsKKyAgICByZXR1cm4gIWFkZFJl
c3VsdC5pc05ld0VudHJ5OworfQogCiB2b2lkIENvbXBhY3RURFpFbnZpcm9ubWVudDo6c29ydENv
bXBhY3QoQ29tcGFjdCYgY29tcGFjdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKaW5kZXggODNhYmExZDQ3YTY4Li5hODc0YzBi
YWNlOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVF
bnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVF
bnZpcm9ubWVudC5oCkBAIC00NSw3ICs0NSw4IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5F
IGJvb2wgaXNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzRnVuY3Rpb247IH0K
ICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQYXJhbWV0ZXIoKSBjb25zdCB7IHJldHVybiBtX2Jp
dHMgJiBJc1BhcmFtZXRlcjsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1Nsb3BweU1vZGVI
b2lzdGluZ0NhbmRpZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzU2xvcHB5TW9kZUhv
aXN0aW5nQ2FuZGlkYXRlOyB9Ci0gICAgQUxXQVlTX0lOTElORSBib29sIGlzUHJpdmF0ZU5hbWUo
KSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1ByaXZhdGVOYW1lOyB9CisgICAgQUxXQVlTX0lO
TElORSBib29sIGlzUHJpdmF0ZUZpZWxkKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNQcml2
YXRlRmllbGQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQcml2YXRlTWV0aG9kKCkgY29u
c3QgeyByZXR1cm4gbV9iaXRzICYgSXNQcml2YXRlTWV0aG9kOyB9CiAKICAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0SXNDYXB0dXJlZCgpIHsgbV9iaXRzIHw9IElzQ2FwdHVyZWQ7IH0KICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNDb25zdCgpIHsgbV9iaXRzIHw9IElzQ29uc3Q7IH0KQEAg
LTU3LDcgKzU4LDggQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0Z1bmN0
aW9uKCkgeyBtX2JpdHMgfD0gSXNGdW5jdGlvbjsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXRJc1BhcmFtZXRlcigpIHsgbV9iaXRzIHw9IElzUGFyYW1ldGVyOyB9CiAgICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldElzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlKCkgeyBtX2JpdHMgfD0g
SXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGU7IH0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0SXNQcml2YXRlTmFtZSgpIHsgbV9iaXRzIHw9IElzUHJpdmF0ZU5hbWU7IH0KKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0SXNQcml2YXRlRmllbGQoKSB7IG1fYml0cyB8PSBJc1ByaXZhdGVG
aWVsZDsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1ByaXZhdGVNZXRob2QoKSB7IG1f
Yml0cyB8PSBJc1ByaXZhdGVNZXRob2Q7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjbGVh
cklzVmFyKCkgeyBtX2JpdHMgJj0gfklzVmFyOyB9CiAKQEAgLTgwLDcgKzgyLDggQEAgcHJpdmF0
ZToKICAgICAgICAgSXNGdW5jdGlvbiA9IDEgPDwgNywKICAgICAgICAgSXNQYXJhbWV0ZXIgPSAx
IDw8IDgsCiAgICAgICAgIElzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlID0gMSA8PCA5LAot
ICAgICAgICBJc1ByaXZhdGVOYW1lID0gMSA8PCAxMCwKKyAgICAgICAgSXNQcml2YXRlRmllbGQg
PSAxIDw8IDEwLAorICAgICAgICBJc1ByaXZhdGVNZXRob2QgPSAxIDw8IDExLAogICAgIH07CiAg
ICAgdWludDE2X3QgbV9iaXRzIHsgMCB9OwogfTsKQEAgLTkwLDExICs5MywxNiBAQCBzdHJ1Y3Qg
VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5SGFzaFRyYWl0cyA6IEhhc2hUcmFpdHM8VmFyaWFibGVF
bnZpcm9ubWVudEVudHJ5PgogfTsKIAogc3RydWN0IFByaXZhdGVOYW1lRW50cnkgeworICAgIGZy
aWVuZCBjbGFzcyBDYWNoZWRQcml2YXRlTmFtZUVudHJ5OworCiBwdWJsaWM6CiAgICAgUHJpdmF0
ZU5hbWVFbnRyeSh1aW50MTZfdCB0cmFpdHMgPSAwKSB7IG1fYml0cyA9IHRyYWl0czsgfQogCiAg
ICAgQUxXQVlTX0lOTElORSBib29sIGlzVXNlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElz
VXNlZDsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0RlY2xhcmVkKCkgY29uc3QgeyByZXR1
cm4gbV9iaXRzICYgSXNEZWNsYXJlZDsgfQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc01ldGhv
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzTWV0aG9kOyB9CisKKyAgICBib29sIGlzUHJp
dmF0ZU1ldGhvZE9yQWNlc3NvcigpIGNvbnN0IHsgcmV0dXJuIGlzTWV0aG9kKCk7IH0KIAogICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1VzZWQoKSB7IG1fYml0cyB8PSBJc1VzZWQ7IH0KICAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNEZWNsYXJlZCgpIHsgbV9iaXRzIHw9IElzRGVjbGFy
ZWQ7IH0KQEAgLTEwNyw4ICsxMTUsMTAgQEAgcHVibGljOgogICAgIH0KIAogICAgIGVudW0gVHJh
aXRzIDogdWludDE2X3QgeworICAgICAgICBOb25lID0gMCwKICAgICAgICAgSXNVc2VkID0gMSA8
PCAwLAogICAgICAgICBJc0RlY2xhcmVkID0gMSA8PCAxLAorICAgICAgICBJc01ldGhvZCA9IDEg
PDwgMiwKICAgICB9OwogCiBwcml2YXRlOgpAQCAtMTE2LDE1ICsxMjYsMTggQEAgcHJpdmF0ZToK
IH07CiAKIHN0cnVjdCBQcml2YXRlTmFtZUVudHJ5SGFzaFRyYWl0cyA6IEhhc2hUcmFpdHM8UHJp
dmF0ZU5hbWVFbnRyeT4gewotICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24g
PSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IGZh
bHNlOwogfTsKIAordHlwZWRlZiBIYXNoTWFwPFBhY2tlZFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1w
bD4sIFByaXZhdGVOYW1lRW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0
cjxVbmlxdWVkU3RyaW5nSW1wbD4+LCBQcml2YXRlTmFtZUVudHJ5SGFzaFRyYWl0cz4gUHJpdmF0
ZU5hbWVFbnZpcm9ubWVudDsKKwogY2xhc3MgVmFyaWFibGVFbnZpcm9ubWVudCB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaE1hcDxQYWNr
ZWRSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBWYXJpYWJsZUVudmlyb25tZW50RW50cnksIElk
ZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+LCBW
YXJpYWJsZUVudmlyb25tZW50RW50cnlIYXNoVHJhaXRzPiBNYXA7Ci0gICAgdHlwZWRlZiBIYXNo
TWFwPFBhY2tlZFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIFByaXZhdGVOYW1lRW50cnksIElk
ZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+LCBQ
cml2YXRlTmFtZUVudHJ5SGFzaFRyYWl0cz4gUHJpdmF0ZU5hbWVzOworCiBwdWJsaWM6CisKICAg
ICBWYXJpYWJsZUVudmlyb25tZW50KCkgeyB9CiAgICAgVmFyaWFibGVFbnZpcm9ubWVudChWYXJp
YWJsZUVudmlyb25tZW50JiYgb3RoZXIpCiAgICAgICAgIDogbV9tYXAoV1RGTW92ZShvdGhlci5t
X21hcCkpCkBAIC0xNDYsNiArMTU5LDE2IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIE1h
cDo6Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuZW5kKCk7IH0KICAg
ICBBTFdBWVNfSU5MSU5FIE1hcDo6QWRkUmVzdWx0IGFkZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0
cmluZ0ltcGw+JiBpZGVudGlmaWVyKSB7IHJldHVybiBtX21hcC5hZGQoaWRlbnRpZmllciwgVmFy
aWFibGVFbnZpcm9ubWVudEVudHJ5KCkpOyB9CiAgICAgQUxXQVlTX0lOTElORSBNYXA6OkFkZFJl
c3VsdCBhZGQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyByZXR1cm4gYWRkKGlkZW50
aWZpZXIuaW1wbCgpKTsgfQorCisgICAgQUxXQVlTX0lOTElORSBQcml2YXRlTmFtZUVudmlyb25t
ZW50OjpBZGRSZXN1bHQgYWRkUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmll
cikgeyByZXR1cm4gYWRkUHJpdmF0ZU5hbWUoaWRlbnRpZmllci5pbXBsKCkpOyB9CisgICAgQUxX
QVlTX0lOTElORSBQcml2YXRlTmFtZUVudmlyb25tZW50OjpBZGRSZXN1bHQgYWRkUHJpdmF0ZU5h
bWUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikKKyAgICB7Cisg
ICAgICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgICAgIG1fcmFyZURhdGEgPSBtYWtlVW5p
cXVlPFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhPigpOworCisgICAgICAgIHJldHVybiBt
X3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoaWRlbnRpZmllciwgUHJpdmF0ZU5hbWVFbnRy
eSgpKTsKKyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7
IHJldHVybiBtX21hcC5zaXplKCkgKyBwcml2YXRlTmFtZXNTaXplKCk7IH0KICAgICBBTFdBWVNf
SU5MSU5FIHVuc2lnbmVkIG1hcFNpemUoKSBjb25zdCB7IHJldHVybiBtX21hcC5zaXplKCk7IH0K
ICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgY29udGFpbnMoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJp
bmdJbXBsPiYgaWRlbnRpZmllcikgY29uc3QgeyByZXR1cm4gbV9tYXAuY29udGFpbnMoaWRlbnRp
Zmllcik7IH0KQEAgLTE2NCwxNyArMTg3LDIwIEBAIHB1YmxpYzoKICAgICBib29sIGlzRXZlcnl0
aGluZ0NhcHR1cmVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZDsgfQog
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX21hcC5zaXplKCk7IH0KIAotICAg
IHVzaW5nIFByaXZhdGVOYW1lc1JhbmdlID0gV1RGOjpJdGVyYXRvclJhbmdlPFByaXZhdGVOYW1l
czo6aXRlcmF0b3I+OworICAgIHVzaW5nIFByaXZhdGVOYW1lc1JhbmdlID0gV1RGOjpJdGVyYXRv
clJhbmdlPFByaXZhdGVOYW1lRW52aXJvbm1lbnQ6Oml0ZXJhdG9yPjsKIAotICAgIEFMV0FZU19J
TkxJTkUgTWFwOjpBZGRSZXN1bHQgZGVjbGFyZVByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXIm
IGlkZW50aWZpZXIpIHsgcmV0dXJuIGRlY2xhcmVQcml2YXRlTmFtZShpZGVudGlmaWVyLmltcGwo
KSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIE1hcDo6QWRkUmVzdWx0IGRlY2xhcmVQcml2YXRlRmll
bGQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyByZXR1cm4gZGVjbGFyZVByaXZhdGVG
aWVsZChpZGVudGlmaWVyLmltcGwoKSk7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdXNlUHJp
dmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyB1c2VQcml2YXRlTmFtZShp
ZGVudGlmaWVyLmltcGwoKSk7IH0KIAotICAgIE1hcDo6QWRkUmVzdWx0IGRlY2xhcmVQcml2YXRl
TmFtZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQorICAgIGJv
b2wgZGVjbGFyZVByaXZhdGVNZXRob2QoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyBy
ZXR1cm4gZGVjbGFyZVByaXZhdGVNZXRob2QoaWRlbnRpZmllci5pbXBsKCkpOyB9CisgICAgYm9v
bCBkZWNsYXJlUHJpdmF0ZU1ldGhvZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBp
ZGVudGlmaWVyKTsKKworICAgIE1hcDo6QWRkUmVzdWx0IGRlY2xhcmVQcml2YXRlRmllbGQoY29u
c3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikKICAgICB7CiAgICAgICAg
IGF1dG8mIG1ldGEgPSBnZXRPckFkZFByaXZhdGVOYW1lKGlkZW50aWZpZXIuZ2V0KCkpOwogICAg
ICAgICBtZXRhLnNldElzRGVjbGFyZWQoKTsKICAgICAgICAgYXV0byBlbnRyeSA9IFZhcmlhYmxl
RW52aXJvbm1lbnRFbnRyeSgpOwotICAgICAgICBlbnRyeS5zZXRJc1ByaXZhdGVOYW1lKCk7Cisg
ICAgICAgIGVudHJ5LnNldElzUHJpdmF0ZUZpZWxkKCk7CiAgICAgICAgIGVudHJ5LnNldElzQ29u
c3QoKTsKICAgICAgICAgZW50cnkuc2V0SXNDYXB0dXJlZCgpOwogICAgICAgICByZXR1cm4gbV9t
YXAuYWRkKGlkZW50aWZpZXIsIGVudHJ5KTsKQEAgLTIwMSw2ICsyMjcsMjYgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuc2l6ZSgpOwogICAgIH0K
IAorICAgIEFMV0FZU19JTkxJTkUgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogcHJpdmF0
ZU5hbWVFbnZpcm9ubWVudCgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIW1fcmFyZURhdGEp
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuICZtX3JhcmVEYXRh
LT5tX3ByaXZhdGVOYW1lczsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaGFzUHJp
dmF0ZU1ldGhvZE9yQWNjZXNzb3IoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKCFtX3JhcmVE
YXRhKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGZvciAoYXV0byBlbnRy
eSA6IHByaXZhdGVOYW1lcygpKSB7CisgICAgICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNQcml2
YXRlTWV0aG9kT3JBY2Vzc29yKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIH0KKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgQUxXQVlTX0lOTElO
RSBib29sIGhhc1ByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiAgICAg
ewogICAgICAgICBpZiAoIW1fcmFyZURhdGEpCkBAIC0yMjIsNiArMjY4LDIwIEBAIHB1YmxpYzoK
ICAgICAgICAgfQogICAgIH0KIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBhZGRQcml2YXRlTmFt
ZXNGcm9tKGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHByaXZhdGVOYW1lRW52aXJvbm1l
bnQpCisgICAgeworICAgICAgICBpZiAoIXByaXZhdGVOYW1lRW52aXJvbm1lbnQpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICAgICAgbV9y
YXJlRGF0YSA9IG1ha2VVbmlxdWU8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+KCk7CisK
KyAgICAgICAgZm9yIChhdXRvIGVudHJ5IDogKnByaXZhdGVOYW1lRW52aXJvbm1lbnQpIHsKKyAg
ICAgICAgICAgIEFTU0VSVChlbnRyeS52YWx1ZS5pc0RlY2xhcmVkKCkpOworICAgICAgICAgICAg
bV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKGVudHJ5LmtleSwgZW50cnkudmFsdWUpOwor
ICAgICAgICB9CisgICAgfQorCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGNvcHlVbmRlY2xhcmVk
UHJpdmF0ZU5hbWVzVG8oVmFyaWFibGVFbnZpcm9ubWVudCYgb3V0ZXIpIGNvbnN0IHsKICAgICAg
ICAgLy8gVXNlZCBieSB0aGUgUGFyc2VyIHRvIHRyYW5zZmVyIHJlY29yZGVkIHVzZXMgb2YgUHJp
dmF0ZU5hbWVzIGZyb20gYW4KICAgICAgICAgLy8gaW5uZXIgUHJpdmF0ZU5hbWVFbnZpcm9ubWVu
dCBpbnRvIGFuIG91dGVyIG9uZSwgaW4gY2FzZSBhIFBORSBpcyB1c2VkCkBAIC0yNDQsNyArMzA0
LDcgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgICAgIFJhcmVEYXRhKGNvbnN0IFJhcmVEYXRh
JikgPSBkZWZhdWx0OwogICAgICAgICBSYXJlRGF0YSYgb3BlcmF0b3I9KGNvbnN0IFJhcmVEYXRh
JikgPSBkZWZhdWx0OwotICAgICAgICBQcml2YXRlTmFtZXMgbV9wcml2YXRlTmFtZXM7CisgICAg
ICAgIFByaXZhdGVOYW1lRW52aXJvbm1lbnQgbV9wcml2YXRlTmFtZXM7CiAgICAgfTsKIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5
cGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcApp
bmRleCA4YWIwZjllMzk5OGEuLmQwY2RlNzQ1YjI2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcApAQCAtOTgwLDYgKzk4MCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgbV9iaXRWZWN0b3JzLmVuY29kZShlbmNvZGVyLCByYXJlRGF0YS5tX2JpdFZlY3Rv
cnMpOwogICAgICAgICBtX2NvbnN0YW50SWRlbnRpZmllclNldHMuZW5jb2RlKGVuY29kZXIsIHJh
cmVEYXRhLm1fY29uc3RhbnRJZGVudGlmaWVyU2V0cyk7CiAgICAgICAgIG1fbmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIgPSByYXJlRGF0YS5tX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOwor
ICAgICAgICBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID0gcmFyZURhdGEubV9wcml2YXRlQnJh
bmRSZXF1aXJlbWVudDsKICAgICB9CiAKICAgICBVbmxpbmtlZENvZGVCbG9jazo6UmFyZURhdGEq
IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKSBjb25zdApAQCAtOTk0LDYgKzk5NSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgbV9iaXRWZWN0b3JzLmRlY29kZShkZWNvZGVyLCByYXJlRGF0YS0+bV9iaXRW
ZWN0b3JzKTsKICAgICAgICAgbV9jb25zdGFudElkZW50aWZpZXJTZXRzLmRlY29kZShkZWNvZGVy
LCByYXJlRGF0YS0+bV9jb25zdGFudElkZW50aWZpZXJTZXRzKTsKICAgICAgICAgcmFyZURhdGEt
Pm1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyOworICAgICAgICByYXJlRGF0YS0+bV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9IG1fcHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQ7CiAgICAgICAgIHJldHVybiByYXJlRGF0YTsKICAgICB9CiAK
QEAgLTEwMDcsOCArMTAwOSwxMSBAQCBwcml2YXRlOgogICAgIENhY2hlZFZlY3RvcjxDYWNoZWRC
aXRWZWN0b3I+IG1fYml0VmVjdG9yczsKICAgICBDYWNoZWRWZWN0b3I8Q2FjaGVkQ29uc3RhbnRJ
ZGVudGlmaWVyU2V0RW50cnk+IG1fY29uc3RhbnRJZGVudGlmaWVyU2V0czsKICAgICB1bnNpZ25l
ZCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIDogMTsKKyAgICB1bnNpZ25lZCBtX3ByaXZh
dGVCcmFuZFJlcXVpcmVtZW50IDogMTsKIH07CiAKK3R5cGVkZWYgQ2FjaGVkSGFzaE1hcDxDYWNo
ZWRSZWZQdHI8Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGwsIFVuaXF1ZWRTdHJpbmdJbXBsLCBXVEY6
OlBhY2tlZFB0clRyYWl0czxVbmlxdWVkU3RyaW5nSW1wbD4+LCBQcml2YXRlTmFtZUVudHJ5LCBJ
ZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+Piwg
UHJpdmF0ZU5hbWVFbnRyeUhhc2hUcmFpdHM+IENhY2hlZFByaXZhdGVOYW1lRW52aXJvbm1lbnQ7
CisKIGNsYXNzIENhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnRSYXJlRGF0YSA6IHB1YmxpYyBDYWNo
ZWRPYmplY3Q8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+IHsKIHB1YmxpYzoKICAgICB2
b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50OjpS
YXJlRGF0YSYgcmFyZURhdGEpCkBAIC0xMDIyLDcgKzEwMjcsNyBAQCBwdWJsaWM6CiAgICAgfQog
CiBwcml2YXRlOgotICAgIENhY2hlZEhhc2hNYXA8Q2FjaGVkUmVmUHRyPENhY2hlZFVuaXF1ZWRT
dHJpbmdJbXBsLCBVbmlxdWVkU3RyaW5nSW1wbCwgV1RGOjpQYWNrZWRQdHJUcmFpdHM8VW5pcXVl
ZFN0cmluZ0ltcGw+PiwgUHJpdmF0ZU5hbWVFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hU
cmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnlIYXNoVHJh
aXRzPiBtX3ByaXZhdGVOYW1lczsKKyAgICBDYWNoZWRQcml2YXRlTmFtZUVudmlyb25tZW50IG1f
cHJpdmF0ZU5hbWVzOwogfTsKIAogY2xhc3MgQ2FjaGVkVmFyaWFibGVFbnZpcm9ubWVudCA6IHB1
YmxpYyBDYWNoZWRPYmplY3Q8VmFyaWFibGVFbnZpcm9ubWVudD4gewpAQCAtMTE5OSw3ICsxMjA0
LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBDYWNoZWRIYXNoU2V0PENhY2hl
ZFJlZlB0cjxDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPiBtX3By
aXZhdGVOYW1lczsKKyAgICBDYWNoZWRIYXNoTWFwPENhY2hlZFJlZlB0cjxDYWNoZWRVbmlxdWVk
U3RyaW5nSW1wbCwgVW5pcXVlZFN0cmluZ0ltcGwsIFdURjo6UGFja2VkUHRyVHJhaXRzPFVuaXF1
ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNo
VHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+LCBQcml2YXRlTmFtZUVudHJ5SGFzaFRy
YWl0cz4gbV9wcml2YXRlTmFtZXM7CiB9OwogCiBjbGFzcyBDYWNoZWRTeW1ib2xUYWJsZSA6IHB1
YmxpYyBDYWNoZWRPYmplY3Q8U3ltYm9sVGFibGU+IHsKQEAgLTE3NTYsNiArMTc2MSw3IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgICAgIG1fY2xhc3NTb3VyY2UuZW5jb2RlKGVuY29kZXIsIHJhcmVE
YXRhLm1fY2xhc3NTb3VyY2UpOwogICAgICAgICBtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzLmVu
Y29kZShlbmNvZGVyLCByYXJlRGF0YS5tX3BhcmVudFNjb3BlVERaVmFyaWFibGVzKTsKKyAgICAg
ICAgbV9wYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50LmVuY29kZShlbmNvZGVyLCByYXJlRGF0
YS5tX3BhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQpOwogICAgIH0KIAogICAgIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpSYXJlRGF0YSogZGVjb2RlKERlY29kZXImIGRlY29kZXIpIGNv
bnN0CkBAIC0xNzYzLDEyICsxNzY5LDE0IEBAIHB1YmxpYzoKICAgICAgICAgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OlJhcmVEYXRhKiByYXJlRGF0YSA9IG5ldyBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6UmFyZURhdGEgeyB9OwogICAgICAgICBtX2NsYXNzU291cmNlLmRlY29kZShk
ZWNvZGVyLCByYXJlRGF0YS0+bV9jbGFzc1NvdXJjZSk7CiAgICAgICAgIG1fcGFyZW50U2NvcGVU
RFpWYXJpYWJsZXMuZGVjb2RlKGRlY29kZXIsIHJhcmVEYXRhLT5tX3BhcmVudFNjb3BlVERaVmFy
aWFibGVzKTsKKyAgICAgICAgbV9wYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50LmRlY29kZShk
ZWNvZGVyLCByYXJlRGF0YS0+bV9wYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50KTsKICAgICAg
ICAgcmV0dXJuIHJhcmVEYXRhOwogICAgIH0KIAogcHJpdmF0ZToKICAgICBDYWNoZWRTb3VyY2VD
b2RlV2l0aG91dFByb3ZpZGVyIG1fY2xhc3NTb3VyY2U7CiAgICAgQ2FjaGVkVmVjdG9yPENhY2hl
ZENvbXBhY3RURFpFbnZpcm9ubWVudE1hcEhhbmRsZT4gbV9wYXJlbnRTY29wZVREWlZhcmlhYmxl
czsKKyAgICBDYWNoZWRQcml2YXRlTmFtZUVudmlyb25tZW50IG1fcGFyZW50UHJpdmF0ZU5hbWVF
bnZpcm9ubWVudDsKIH07CiAKIGNsYXNzIENhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZSA6IHB1Ymxp
YyBDYWNoZWRPYmplY3Q8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+IHsKQEAgLTE4MDQsNiAr
MTgxMiw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJl
dHVybiBtX3N1cGVyQmluZGluZzsgfQogICAgIHVuc2lnbmVkIGRlcml2ZWRDb250ZXh0VHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGVyaXZlZENvbnRleHRUeXBlOyB9CiAgICAgdW5zaWduZWQgbmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSBjb25zdCB7IHJldHVybiBtX25lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyOyB9CisgICAgdW5zaWduZWQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSBj
b25zdCB7IHJldHVybiBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50OyB9CiAKICAgICBJZGVudGlm
aWVyIG5hbWUoRGVjb2RlciYgZGVjb2RlcikgY29uc3QgeyByZXR1cm4gbV9uYW1lLmRlY29kZShk
ZWNvZGVyKTsgfQogICAgIElkZW50aWZpZXIgZWNtYU5hbWUoRGVjb2RlciYgZGVjb2RlcikgY29u
c3QgeyByZXR1cm4gbV9lY21hTmFtZS5kZWNvZGUoZGVjb2Rlcik7IH0KQEAgLTE4MzIsNyArMTg0
MSw4IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9wYXJhbWV0ZXJzU3RhcnRPZmZzZXQgOiAz
MTsKICAgICB1bnNpZ25lZCBtX3R5cGVQcm9maWxpbmdTdGFydE9mZnNldDsKICAgICB1bnNpZ25l
ZCBtX3R5cGVQcm9maWxpbmdFbmRPZmZzZXQ7Ci0gICAgdW5zaWduZWQgbV9wYXJhbWV0ZXJDb3Vu
dDsKKyAgICB1bnNpZ25lZCBtX3BhcmFtZXRlckNvdW50OjMxOworICAgIHVuc2lnbmVkIG1fcHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQgOiAxOwogICAgIFNvdXJjZVBhcnNlTW9kZSBtX3NvdXJjZVBh
cnNlTW9kZTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CiAgICAgdW5zaWdu
ZWQgbV9mdW5jdGlvbk1vZGUgOiAyOyAvLyBGdW5jdGlvbk1vZGUKQEAgLTE4ODksNyArMTg5OSw2
IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBpc0NsYXNzQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNDbGFzc0NvbnRleHQ7IH0KICAgICB1bnNpZ25lZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25z
dCB7IHJldHVybiBtX2NvbnN0cnVjdG9yS2luZDsgfQogICAgIHVuc2lnbmVkIGRlcml2ZWRDb250
ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVyaXZlZENvbnRleHRUeXBlOyB9Ci0gICAgdW5z
aWduZWQgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSBjb25zdCB7IHJldHVybiBtX25lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyOyB9CiAgICAgdW5zaWduZWQgZXZhbENvbnRleHRUeXBlKCkg
Y29uc3QgeyByZXR1cm4gbV9ldmFsQ29udGV4dFR5cGU7IH0KICAgICB1bnNpZ25lZCBoYXNUYWls
Q2FsbHMoKSBjb25zdCB7IHJldHVybiBtX2hhc1RhaWxDYWxsczsgfQogICAgIHVuc2lnbmVkIGhh
c0NoZWNrcG9pbnRzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNDaGVja3BvaW50czsgfQpAQCAtMTky
MSw3ICsxOTMwLDYgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2lzQ2xhc3NDb250ZXh0IDog
MTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CiAgICAgdW5zaWduZWQgbV9k
ZXJpdmVkQ29udGV4dFR5cGUgOiAyOwotICAgIHVuc2lnbmVkIG1fbmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIgOiAxOwogICAgIHVuc2lnbmVkIG1fZXZhbENvbnRleHRUeXBlIDogMjsKICAgICB1
bnNpZ25lZCBtX2hhc1RhaWxDYWxscyA6IDE7CiAgICAgdW5zaWduZWQgbV9jb2RlVHlwZSA6IDI7
CkBAIC0yMjAyLDYgKzIyMTAsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgQ2FjaGVkRnVuY3Rpb25F
eGVjdXRhYmxlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVW5saQogICAgIG1fc3Vw
ZXJCaW5kaW5nID0gZXhlY3V0YWJsZS5tX3N1cGVyQmluZGluZzsKICAgICBtX2Rlcml2ZWRDb250
ZXh0VHlwZSA9IGV4ZWN1dGFibGUubV9kZXJpdmVkQ29udGV4dFR5cGU7CiAgICAgbV9uZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplciA9IGV4ZWN1dGFibGUubV9uZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplcjsKKyAgICBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID0gZXhlY3V0YWJsZS5tX3ByaXZh
dGVCcmFuZFJlcXVpcmVtZW50OwogCiAgICAgbV9yYXJlRGF0YS5lbmNvZGUoZW5jb2RlciwgZXhl
Y3V0YWJsZS5tX3JhcmVEYXRhLmdldCgpKTsKIApAQCAtMjI0Myw2ICsyMjUyLDcgQEAgQUxXQVlT
X0lOTElORSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUoRGVjb2RlciYgZGUKICAgICAsIG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KGNhY2hl
ZEV4ZWN1dGFibGUudHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KCkpCiAgICAgLCBtX3R5cGVQcm9m
aWxpbmdFbmRPZmZzZXQoY2FjaGVkRXhlY3V0YWJsZS50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkp
CiAgICAgLCBtX3BhcmFtZXRlckNvdW50KGNhY2hlZEV4ZWN1dGFibGUucGFyYW1ldGVyQ291bnQo
KSkKKyAgICAsIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoY2FjaGVkRXhlY3V0YWJsZS5wcml2
YXRlQnJhbmRSZXF1aXJlbWVudCgpKQogICAgICwgbV9mZWF0dXJlcyhjYWNoZWRFeGVjdXRhYmxl
LmZlYXR1cmVzKCkpCiAgICAgLCBtX3NvdXJjZVBhcnNlTW9kZShjYWNoZWRFeGVjdXRhYmxlLnNv
dXJjZVBhcnNlTW9kZSgpKQogICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoY2FjaGVkRXhlY3V0YWJs
ZS5jb25zdHJ1Y3RvcktpbmQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2Rl
Q2FjaGUuY3BwCmluZGV4IGI5MWJjYTU5ZDQzYy4uNTYzODBlMmZkNDZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKQEAgLTcxLDEzICs3MSwxMyBAQCBz
dGF0aWMgdm9pZCBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrRm9yRnVuY3Rpb25zKFZNJiB2bSwg
VW5saW5rZWRDb2RlQmxvY2sqIHVubAogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgVW5saW5rZWRDb2Rl
QmxvY2tUeXBlLCBjbGFzcyBFeGVjdXRhYmxlVHlwZSA9IFNjcmlwdEV4ZWN1dGFibGU+Ci1Vbmxp
bmtlZENvZGVCbG9ja1R5cGUqIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsKFZNJiB2bSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwg
SlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1v
ZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yLCBFdmFsQ29udGV4dFR5
cGUgZXZhbENvbnRleHRUeXBlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBl
LCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGNvbnN0IFREWkVudmlyb25tZW50KiB2YXJp
YWJsZXNVbmRlclREWiA9IG51bGxwdHIsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVu
dFNjb3BlUHJpdmF0ZU5hbWVzID0gbnVsbHB0ciwgRXhlY3V0YWJsZVR5cGUqIGV4ZWN1dGFibGUg
PSBudWxscHRyKQorVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBnZW5lcmF0ZVVubGlua2VkQ29kZUJs
b2NrSW1wbChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJTdHJpY3RN
b2RlIHN0cmljdE1vZGUsIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBPcHRpb25TZXQ8
Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIFBhcnNlckVycm9yJiBlcnJv
ciwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgRGVyaXZlZENvbnRleHRUeXBlIGRl
cml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBjb25zdCBURFpF
bnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFogPSBudWxscHRyLCBjb25zdCBQcml2YXRlTmFt
ZUVudmlyb25tZW50KiBwcml2YXRlTmFtZUVudmlyb25tZW50ID0gbnVsbHB0ciwgRXhlY3V0YWJs
ZVR5cGUqIGV4ZWN1dGFibGUgPSBudWxscHRyKQogewogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ2Fj
aGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpSb290Tm9kZSBSb290Tm9kZTsKICAgICBi
b29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiA9IGV4ZWN1dGFibGUgJiYgZXhlY3V0YWJsZS0+
aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Um9vdE5v
ZGU+IHJvb3ROb2RlID0gcGFyc2U8Um9vdE5vZGU+KAotICAgICAgICB2bSwgc291cmNlLCBJZGVu
dGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIHN0cmljdE1vZGUsIHNj
cmlwdE1vZGUsIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBT
dXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6
Tm9uZSwgZGVyaXZlZENvbnRleHRUeXBlLCBldmFsQ29udGV4dFR5cGUsIG51bGxwdHIsIHBhcmVu
dFNjb3BlUHJpdmF0ZU5hbWVzLCBudWxscHRyLCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24pOwor
ICAgICAgICB2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5v
dEJ1aWx0aW4sIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIENhY2hlVHlwZXM8VW5saW5rZWRDb2Rl
QmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IsIG51
bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZGVyaXZlZENvbnRleHRUeXBlLCBldmFsQ29u
dGV4dFR5cGUsIG51bGxwdHIsIHByaXZhdGVOYW1lRW52aXJvbm1lbnQsIG51bGxwdHIsIGlzSW5z
aWRlT3JkaW5hcnlGdW5jdGlvbik7CiAKICAgICBpZiAoIXJvb3ROb2RlKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTk0LDkgKzk0LDEyIEBAIFVubGlua2VkQ29kZUJsb2NrVHlwZSogZ2Vu
ZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ltcGwoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzCiAg
ICAgYm9vbCB1c2VzRXZhbCA9IHJvb3ROb2RlLT5mZWF0dXJlcygpICYgRXZhbEZlYXR1cmU7CiAg
ICAgRUNNQU1vZGUgZWNtYU1vZGUgPSByb290Tm9kZS0+ZmVhdHVyZXMoKSAmIFN0cmljdE1vZGVG
ZWF0dXJlID8gRUNNQU1vZGU6OnN0cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgpOwogICAgIE5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyID0gTmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vOwotICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19z
YW1lX3Y8RXhlY3V0YWJsZVR5cGUsIERpcmVjdEV2YWxFeGVjdXRhYmxlPikKKyAgICBQcml2YXRl
QnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9IFByaXZhdGVCcmFuZFJl
cXVpcmVtZW50OjpOb25lOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19zYW1lX3Y8RXhlY3V0
YWJsZVR5cGUsIERpcmVjdEV2YWxFeGVjdXRhYmxlPikgewogICAgICAgICBuZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplciA9IGV4ZWN1dGFibGUtPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCk7
Ci0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8odXNlc0V2YWwsIGZhbHNlLCBmYWxz
ZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBzY3JpcHRNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5l
ZWRlZCwgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIGRlcml2
ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGlzQXJyb3dGdW5jdGlv
bkNvbnRleHQsIGZhbHNlLCBldmFsQ29udGV4dFR5cGUpOworICAgICAgICBwcml2YXRlQnJhbmRS
ZXF1aXJlbWVudCA9IGV4ZWN1dGFibGUtPnByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCk7CisgICAg
fQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsLCBmYWxzZSwgcHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIHNjcmlw
dE1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJs
b2NrVHlwZT46OnBhcnNlTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplciwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgZmFsc2UsIGV2YWxDb250ZXh0VHlw
ZSk7CiAKICAgICBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIHVubGlua2VkQ29kZUJsb2NrID0gVW5s
aW5rZWRDb2RlQmxvY2tUeXBlOjpjcmVhdGUodm0sIGV4ZWN1dGFibGVJbmZvLCBjb2RlR2VuZXJh
dGlvbk1vZGUpOwogICAgIHVubGlua2VkQ29kZUJsb2NrLT5yZWNvcmRQYXJzZShyb290Tm9kZS0+
ZmVhdHVyZXMoKSwgcm9vdE5vZGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCksIGxpbmVDb3VudCwg
dW5saW5rZWRFbmRDb2x1bW4pOwpAQCAtMTA4LDcgKzExMSw3IEBAIFVubGlua2VkQ29kZUJsb2Nr
VHlwZSogZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ltcGwoVk0mIHZtLCBjb25zdCBTb3VyY2VD
b2RlJiBzCiAgICAgVmVjdG9yPENvbXBhY3RURFpFbnZpcm9ubWVudE1hcDo6SGFuZGxlPiBwYXJl
bnRWYXJpYWJsZXNVbmRlclREWjsKICAgICBpZiAodmFyaWFibGVzVW5kZXJURFopCiAgICAgICAg
IHBhcmVudFZhcmlhYmxlc1VuZGVyVERaLmFwcGVuZCh2bS5tX2NvbXBhY3RWYXJpYWJsZU1hcC0+
Z2V0KCp2YXJpYWJsZXNVbmRlclREWikpOwotICAgIGVycm9yID0gQnl0ZWNvZGVHZW5lcmF0b3I6
OmdlbmVyYXRlKHZtLCByb290Tm9kZS5nZXQoKSwgc291cmNlLCB1bmxpbmtlZENvZGVCbG9jaywg
Y29kZUdlbmVyYXRpb25Nb2RlLCBwYXJlbnRWYXJpYWJsZXNVbmRlclREWiwgZWNtYU1vZGUpOwor
ICAgIGVycm9yID0gQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKHZtLCByb290Tm9kZS5nZXQo
KSwgc291cmNlLCB1bmxpbmtlZENvZGVCbG9jaywgY29kZUdlbmVyYXRpb25Nb2RlLCBwYXJlbnRW
YXJpYWJsZXNVbmRlclREWiwgcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgZWNtYU1vZGUpOwogCiAg
ICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMTcs
MTQgKzEyMCwxNCBAQCBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIGdlbmVyYXRlVW5saW5rZWRDb2Rl
QmxvY2tJbXBsKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgcwogfQogCiB0ZW1wbGF0ZSA8Y2xh
c3MgVW5saW5rZWRDb2RlQmxvY2tUeXBlLCBjbGFzcyBFeGVjdXRhYmxlVHlwZT4KLVVubGlua2Vk
Q29kZUJsb2NrVHlwZSogZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9jayhWTSYgdm0sIEV4ZWN1dGFi
bGVUeXBlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTUGFyc2VyU3Ry
aWN0TW9kZSBzdHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgT3B0aW9u
U2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBQYXJzZXJFcnJvciYg
ZXJyb3IsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIGNvbnN0IFREWkVudmlyb25t
ZW50KiB2YXJpYWJsZXNVbmRlclREWiA9IG51bGxwdHIsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1l
bnQqIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzID0gbnVsbHB0cikKK1VubGlua2VkQ29kZUJsb2Nr
VHlwZSogZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9jayhWTSYgdm0sIEV4ZWN1dGFibGVUeXBlKiBl
eGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTUGFyc2VyU3RyaWN0TW9kZSBz
dHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgT3B0aW9uU2V0PENvZGVH
ZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IsIEV2
YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIGNvbnN0IFREWkVudmlyb25tZW50KiB2YXJp
YWJsZXNVbmRlclREWiA9IG51bGxwdHIsIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHBy
aXZhdGVOYW1lRW52aXJvbm1lbnQgPSBudWxscHRyKQogewotICAgIHJldHVybiBnZW5lcmF0ZVVu
bGlua2VkQ29kZUJsb2NrSW1wbDxVbmxpbmtlZENvZGVCbG9ja1R5cGUsIEV4ZWN1dGFibGVUeXBl
Pih2bSwgc291cmNlLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2RlLCBjb2RlR2VuZXJhdGlvbk1vZGUs
IGVycm9yLCBldmFsQ29udGV4dFR5cGUsIGV4ZWN1dGFibGUtPmRlcml2ZWRDb250ZXh0VHlwZSgp
LCBleGVjdXRhYmxlLT5pc0Fycm93RnVuY3Rpb25Db250ZXh0KCksIHZhcmlhYmxlc1VuZGVyVERa
LCBwYXJlbnRTY29wZVByaXZhdGVOYW1lcywgZXhlY3V0YWJsZSk7CisgICAgcmV0dXJuIGdlbmVy
YXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsPFVubGlua2VkQ29kZUJsb2NrVHlwZSwgRXhlY3V0YWJs
ZVR5cGU+KHZtLCBzb3VyY2UsIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIGNvZGVHZW5lcmF0aW9u
TW9kZSwgZXJyb3IsIGV2YWxDb250ZXh0VHlwZSwgZXhlY3V0YWJsZS0+ZGVyaXZlZENvbnRleHRU
eXBlKCksIGV4ZWN1dGFibGUtPmlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgdmFyaWFibGVzVW5k
ZXJURFosIHByaXZhdGVOYW1lRW52aXJvbm1lbnQsIGV4ZWN1dGFibGUpOwogfQogCi1Vbmxpbmtl
ZEV2YWxDb2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tGb3JEaXJlY3RFdmFsKFZN
JiB2bSwgRGlyZWN0RXZhbEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIEpTUGFyc2VyU2NyaXB0TW9k
ZSBzY3JpcHRNb2RlLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlv
bk1vZGUsIFBhcnNlckVycm9yJiBlcnJvciwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlw
ZSwgY29uc3QgVERaRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaLCBjb25zdCBWYXJpYWJs
ZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVByaXZhdGVOYW1lcykKK1VubGlua2VkRXZhbENvZGVC
bG9jayogZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ZvckRpcmVjdEV2YWwoVk0mIHZtLCBEaXJl
Y3RFdmFsRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBK
U1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1v
ZGUsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgUGFy
c2VyRXJyb3ImIGVycm9yLCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlLCBjb25zdCBU
RFpFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFosIGNvbnN0IFByaXZhdGVOYW1lRW52aXJv
bm1lbnQqIHByaXZhdGVOYW1lRW52aXJvbm1lbnQpCiB7Ci0gICAgcmV0dXJuIGdlbmVyYXRlVW5s
aW5rZWRDb2RlQmxvY2s8VW5saW5rZWRFdmFsQ29kZUJsb2NrPih2bSwgZXhlY3V0YWJsZSwgc291
cmNlLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2RlLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVycm9yLCBl
dmFsQ29udGV4dFR5cGUsIHZhcmlhYmxlc1VuZGVyVERaLCBwYXJlbnRTY29wZVByaXZhdGVOYW1l
cyk7CisgICAgcmV0dXJuIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2s8VW5saW5rZWRFdmFsQ29k
ZUJsb2NrPih2bSwgZXhlY3V0YWJsZSwgc291cmNlLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2RlLCBj
b2RlR2VuZXJhdGlvbk1vZGUsIGVycm9yLCBldmFsQ29udGV4dFR5cGUsIHZhcmlhYmxlc1VuZGVy
VERaLCBwcml2YXRlTmFtZUVudmlyb25tZW50KTsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFVubGlu
a2VkQ29kZUJsb2NrVHlwZT4KQEAgLTI0OCw3ICsyNTEsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogQ29kZUNhY2hlOjpnZXRVbmxpbmtlZEdsb2JhbEZ1bmN0aW9uRXhlY3V0YWJsZShW
TSYgdgogICAgIC8vIFRoZSBGdW5jdGlvbiBjb25zdHJ1Y3RvciBvbmx5IGhhcyBhY2Nlc3MgdG8g
Z2xvYmFsIHZhcmlhYmxlcywgc28gbm8gdmFyaWFibGVzIHdpbGwgYmUgdW5kZXIgVERaIHVubGVz
cyB0aGV5J3JlCiAgICAgLy8gaW4gdGhlIGdsb2JhbCBsZXhpY2FsIGVudmlyb25tZW50LCB3aGlj
aCB3ZSBhbHdheXMgVERaIGNoZWNrIGFjY2Vzc2VzIGZyb20uCiAgICAgQ29uc3RydWN0QWJpbGl0
eSBjb25zdHJ1Y3RBYmlsaXR5ID0gY29uc3RydWN0QWJpbGl0eUZvclBhcnNlTW9kZShtZXRhZGF0
YS0+cGFyc2VNb2RlKCkpOwotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlv
bkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBzb3Vy
Y2UsIG1ldGFkYXRhLCBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCBK
U1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIFdURjo6bnVsbG9wdCwgRGVyaXZlZENvbnRleHRU
eXBlOjpOb25lLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8pOworICAgIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBzb3VyY2UsIG1ldGFkYXRhLCBVbmxpbmtlZE5vcm1hbEZ1
bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIFdU
Rjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIE5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyOjpObywgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmUp
OwogCiAgICAgaWYgKCFzb3VyY2UucHJvdmlkZXIoKS0+c291cmNlVVJMRGlyZWN0aXZlKCkuaXNO
dWxsKCkpCiAgICAgICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+c2V0U291cmNlVVJMRGlyZWN0aXZl
KHNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2VVUkxEaXJlY3RpdmUoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCmluZGV4IDljYzFjYTcwMDQ0Ny4uNjBhNzdkMmFm
M2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaApAQCAtMjU0
LDcgKzI1NCw3IEBAIHRlbXBsYXRlIDw+IHN0cnVjdCBDYWNoZVR5cGVzPFVubGlua2VkTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jaz4gewogICAgIHN0YXRpYyBjb25zdGV4cHIgU291cmNlUGFyc2VNb2Rl
IHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVNb2RlOwogfTsKIAot
VW5saW5rZWRFdmFsQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrRm9yRGlyZWN0
RXZhbChWTSYsIERpcmVjdEV2YWxFeGVjdXRhYmxlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFy
c2VyU3RyaWN0TW9kZSwgSlNQYXJzZXJTY3JpcHRNb2RlLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRp
b25Nb2RlPiwgUGFyc2VyRXJyb3ImLCBFdmFsQ29udGV4dFR5cGUsIGNvbnN0IFREWkVudmlyb25t
ZW50KiB2YXJpYWJsZXNVbmRlclREWiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50
U2NvcGVQcml2YXRlTmFtZXMpOworVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlu
a2VkQ29kZUJsb2NrRm9yRGlyZWN0RXZhbChWTSYsIERpcmVjdEV2YWxFeGVjdXRhYmxlKiwgY29u
c3QgU291cmNlQ29kZSYsIEpTUGFyc2VyU3RyaWN0TW9kZSwgSlNQYXJzZXJTY3JpcHRNb2RlLCBP
cHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgUGFyc2VyRXJyb3ImLCBFdmFsQ29udGV4dFR5
cGUsIGNvbnN0IFREWkVudmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclREWiwgY29uc3QgUHJpdmF0
ZU5hbWVFbnZpcm9ubWVudCopOwogVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiByZWN1cnNpdmVs
eUdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tGb3JQcm9ncmFtKFZNJiwgY29uc3QgU291cmNlQ29k
ZSYsIEpTUGFyc2VyU3RyaWN0TW9kZSwgSlNQYXJzZXJTY3JpcHRNb2RlLCBPcHRpb25TZXQ8Q29k
ZUdlbmVyYXRpb25Nb2RlPiwgUGFyc2VyRXJyb3ImLCBFdmFsQ29udGV4dFR5cGUpOwogVW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiByZWN1cnNpdmVseUdlbmVyYXRlVW5saW5rZWRDb2Rl
QmxvY2tGb3JNb2R1bGVQcm9ncmFtKFZNJiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyU3Ry
aWN0TW9kZSwgSlNQYXJzZXJTY3JpcHRNb2RlLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2Rl
PiwgUGFyc2VyRXJyb3ImLCBFdmFsQ29udGV4dFR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKaW5kZXggYzdj
MjljMDUwMjk2Li5mNmY3OTMwN2RmZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKLURpcmVjdEV2YWxFeGVjdXRhYmxlKiBEaXJlY3RFdmFsRXhl
Y3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2
YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIGNvbnN0IFREWkVudmlyb25tZW50KiB2YXJp
YWJsZXNVbmRlclREWiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcHJpdmF0ZU5hbWVzLCBF
Q01BTW9kZSBlY21hTW9kZSkKK0RpcmVjdEV2YWxFeGVjdXRhYmxlKiBEaXJlY3RFdmFsRXhlY3V0
YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVC
cmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29sIGlzQXJyb3dGdW5j
dGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5
cGUgZXZhbENvbnRleHRUeXBlLCBjb25zdCBURFpFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJU
RFosIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHByaXZhdGVOYW1lRW52aXJvbm1lbnQs
IEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC00NCw3ICs0NCw3
IEBAIERpcmVjdEV2YWxFeGVjdXRhYmxlKiBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIAotICAgIGF1dG8qIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxE
aXJlY3RFdmFsRXhlY3V0YWJsZT4odm0uaGVhcCkpIERpcmVjdEV2YWxFeGVjdXRhYmxlKGdsb2Jh
bE9iamVjdCwgc291cmNlLCBlY21hTW9kZS5pc1N0cmljdCgpLCBkZXJpdmVkQ29udGV4dFR5cGUs
IG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBpc0lu
c2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250ZXh0VHlwZSk7CisgICAgYXV0byogZXhlY3V0
YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERpcmVjdEV2YWxFeGVjdXRhYmxlPih2
bS5oZWFwKSkgRGlyZWN0RXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGVjbWFN
b2RlLmlzU3RyaWN0KCksIGRlcml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIsIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBp
c0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250ZXh0VHlwZSk7CiAgICAgZXhlY3V0YWJs
ZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogCiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7CkBAIC01Miw3
ICs1Miw3IEBAIERpcmVjdEV2YWxFeGVjdXRhYmxlKiBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3Jl
YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgT3B0aW9uU2V0PENvZGVHZW5l
cmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlID0gZ2xvYmFsT2JqZWN0LT5kZWZhdWx0Q29k
ZUdlbmVyYXRpb25Nb2RlKCk7CiAKICAgICAvLyBXZSBkb24ndCBib3RoZXIgd2l0aCBDb2RlQ2Fj
aGUgaGVyZSBiZWNhdXNlIGRpcmVjdCBldmFsIHVzZXMgYSBzcGVjaWFsaXplZCBEaXJlY3RFdmFs
Q29kZUNhY2hlLgotICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogdW5saW5rZWRFdmFsQ29kZSA9
IGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tGb3JEaXJlY3RFdmFsKHZtLCBleGVjdXRhYmxlLCBl
eGVjdXRhYmxlLT5zb3VyY2UoKSwgc3RyaWN0TW9kZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFz
c2ljLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVycm9yLCBldmFsQ29udGV4dFR5cGUsIHZhcmlhYmxl
c1VuZGVyVERaLCBwcml2YXRlTmFtZXMpOworICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogdW5s
aW5rZWRFdmFsQ29kZSA9IGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tGb3JEaXJlY3RFdmFsKHZt
LCBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT5zb3VyY2UoKSwgc3RyaWN0TW9kZSwgSlNQYXJzZXJT
Y3JpcHRNb2RlOjpDbGFzc2ljLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVycm9yLCBldmFsQ29udGV4
dFR5cGUsIHZhcmlhYmxlc1VuZGVyVERaLCBwcml2YXRlTmFtZUVudmlyb25tZW50KTsKIAogICAg
IGlmIChnbG9iYWxPYmplY3QtPmhhc0RlYnVnZ2VyKCkpCiAgICAgICAgIGdsb2JhbE9iamVjdC0+
ZGVidWdnZXIoKS0+c291cmNlUGFyc2VkKGdsb2JhbE9iamVjdCwgZXhlY3V0YWJsZS0+c291cmNl
KCkucHJvdmlkZXIoKSwgZXJyb3IubGluZSgpLCBlcnJvci5tZXNzYWdlKCkpOwpAQCAtNjcsMTAg
KzY3LDEwIEBAIERpcmVjdEV2YWxFeGVjdXRhYmxlKiBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3Jl
YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgcmV0dXJuIGV4ZWN1dGFibGU7
CiB9CiAKLURpcmVjdEV2YWxFeGVjdXRhYmxlOjpEaXJlY3RFdmFsRXhlY3V0YWJsZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaW5T
dHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBp
c0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZh
bENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSkKLSAgICA6IEV2YWxFeGVjdXRhYmxlKGdsb2Jh
bE9iamVjdCwgc291cmNlLCBpblN0cmljdENvbnRleHQsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNB
cnJvd0Z1bmN0aW9uQ29udGV4dCwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBldmFsQ29udGV4
dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKQorRGlyZWN0RXZhbEV4ZWN1dGFibGU6
OkRpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0
VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJh
bmRSZXF1aXJlbWVudCwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRl
T3JkaW5hcnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSkKKyAgICA6
IEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNlLCBpblN0cmljdENvbnRleHQsIGRl
cml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgaXNJbnNpZGVPcmRpbmFy
eUZ1bmN0aW9uLCBldmFsQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBw
cml2YXRlQnJhbmRSZXF1aXJlbWVudCkKIHsKLSAgICBBU1NFUlQobmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIgPT0gTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vIHx8IGRlcml2ZWRDb250
ZXh0VHlwZSA9PSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQp
OworICAgIEFTU0VSVCgobmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPT0gTmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXI6Ok5vICYmIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID09IFByaXZhdGVC
cmFuZFJlcXVpcmVtZW50OjpOb25lKSB8fCBkZXJpdmVkQ29udGV4dFR5cGUgPT0gRGVyaXZlZENv
bnRleHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RF
dmFsRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZh
bEV4ZWN1dGFibGUuaAppbmRleCA4YzUyY2I2ODFlOGQuLjM2MmNlZDhkN2IxNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5o
CkBAIC0zMSw5ICszMSw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBEaXJlY3RFdmFsRXhl
Y3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBFdmFsRXhlY3V0YWJsZSB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIERpcmVjdEV2YWxFeGVjdXRhYmxlKiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBT
b3VyY2VDb2RlJiwgRGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
ciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5j
dGlvbiwgRXZhbENvbnRleHRUeXBlLCBjb25zdCBURFpFbnZpcm9ubWVudCogcGFyZW50U2NvcGVU
RFpWYXJpYWJsZXMsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHByaXZhdGVOYW1lcywgRUNN
QU1vZGUpOworICAgIHN0YXRpYyBEaXJlY3RFdmFsRXhlY3V0YWJsZSogY3JlYXRlKEpTR2xvYmFs
T2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIERlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29sIGlzQXJyb3dG
dW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4
dFR5cGUsIGNvbnN0IFREWkVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgY29u
c3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCosIEVDTUFNb2RlKTsKIHByaXZhdGU6Ci0gICAgRGly
ZWN0RXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9v
bCBpblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGlu
YXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSk7CisgICAgRGlyZWN0RXZhbEV4ZWN1dGFibGUo
SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBpblN0cmljdENvbnRleHQs
IERlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVC
cmFuZFJlcXVpcmVtZW50LCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNp
ZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUpOwogfTsKIAogc3RhdGljX2Fzc2Vy
dChzaXplb2YoRGlyZWN0RXZhbEV4ZWN1dGFibGUpID09IHNpemVvZihFdmFsRXhlY3V0YWJsZSks
ICIiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVj
dXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxl
LmNwcAppbmRleCAyZWMxMzdhNzM2MjIuLjBiM2Q0MTY0YWE2NSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmNwcApAQCAtMzIsOSArMzIsMTAg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBFdmFsRXhlY3V0YWJsZTo6c19p
bmZvID0geyAiRXZhbEV4ZWN1dGFibGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEV2YWxFeGVjdXRhYmxlKSB9OwogCi1FdmFsRXhlY3V0YWJs
ZTo6RXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291
cmNlQ29kZSYgc291cmNlLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBl
IGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlz
SW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwg
TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpCitF
dmFsRXhlY3V0YWJsZTo6RXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZl
ZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250
ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBlIGV2YWxD
b250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50
KQogICAgIDogQmFzZShnbG9iYWxPYmplY3QtPnZtKCkuZXZhbEV4ZWN1dGFibGVTdHJ1Y3R1cmUu
Z2V0KCksIGdsb2JhbE9iamVjdC0+dm0oKSwgc291cmNlLCBpblN0cmljdENvbnRleHQsIGRlcml2
ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgaXNJbnNpZGVPcmRpbmFyeUZ1
bmN0aW9uLCBldmFsQ29udGV4dFR5cGUsIE5vSW50cmluc2ljKQogICAgICwgbV9uZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4obmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIpKQorICAgICwgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudChzdGF0aWNfY2FzdDx1
bnNpZ25lZD4ocHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpKQogewogICAgIEFTU0VSVChzb3VyY2Uu
cHJvdmlkZXIoKS0+c291cmNlVHlwZSgpID09IFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJv
Z3JhbSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFs
RXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFi
bGUuaAppbmRleCA2N2U2OWM4NjI5YmEuLjUyNjAyNTFhY2VlMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oCkBAIC02MiwxMyArNjIsMTQgQEAg
cHVibGljOgogCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0
YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1c2VzRXZhbCgpLCBmYWxz
ZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFz
c2ljLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9k
ZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGlz
QXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgZmFsc2UsIGV2YWxDb250ZXh0VHlwZSgpKTsgfQorICAg
IEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJs
ZUluZm8odXNlc0V2YWwoKSwgZmFsc2UsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lLCBm
YWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMs
IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBk
ZXJpdmVkQ29udGV4dFR5cGUoKSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgaXNBcnJv
d0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgZXZhbENvbnRleHRUeXBlKCkpOyB9CiAKICAgICB1
bnNpZ25lZCBudW1WYXJpYWJsZXMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+
bnVtVmFyaWFibGVzKCk7IH0KICAgICB1bnNpZ25lZCBudW1GdW5jdGlvbkhvaXN0aW5nQ2FuZGlk
YXRlcygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1GdW5jdGlvbkhvaXN0
aW5nQ2FuZGlkYXRlcygpOyB9CiAgICAgdW5zaWduZWQgbnVtVG9wTGV2ZWxGdW5jdGlvbkRlY2xz
KCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNs
cygpOyB9CiAgICAgYm9vbCBhbGxvd0RpcmVjdEV2YWxDYWNoZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dW5saW5rZWRFdmFsQ29kZUJsb2NrLT5hbGxvd0RpcmVjdEV2YWxDYWNoZSgpOyB9CiAgICAgTmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcj4obV9uZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplcik7IH0KKyAgICBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBw
cml2YXRlQnJhbmRSZXF1aXJlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFByaXZh
dGVCcmFuZFJlcXVpcmVtZW50PihtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50KTsgfQogICAgIFRl
bXBsYXRlT2JqZWN0TWFwJiBlbnN1cmVUZW1wbGF0ZU9iamVjdE1hcChWTSYpOwogCiBwcm90ZWN0
ZWQ6CkBAIC03NiwxMSArNzcsMTIgQEAgcHJvdGVjdGVkOgogICAgIGZyaWVuZCBjbGFzcyBTY3Jp
cHRFeGVjdXRhYmxlOwogCiAgICAgdXNpbmcgQmFzZTo6ZmluaXNoQ3JlYXRpb247Ci0gICAgRXZh
bEV4ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBpblN0
cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250
ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBlLCBOZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplcik7CisgICAgRXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmpl
Y3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRDb250
ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5h
cnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwg
UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOwogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJl
bihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgdW5zaWduZWQgbV9uZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplciA6IDE7CisgICAgdW5zaWduZWQgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVu
dCA6IDE7CiAKICAgICBXcml0ZUJhcnJpZXI8RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZT4gbV9l
dmFsQ29kZUJsb2NrOwogICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZEV2YWxDb2RlQmxvY2s+IG1f
dW5saW5rZWRFdmFsQ29kZUJsb2NrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAppbmRleCA0MTRlN2JkZjc3YWIuLjdhMjkxMGU4ODdm
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVs
cGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVs
cGVycy5jcHAKQEAgLTMyNiw3ICszMjYsNyBAQCBKU09iamVjdCogY3JlYXRlVERaRXJyb3IoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogSlNPYmplY3QqIGNyZWF0ZUludmFsaWRQcml2
YXRlTmFtZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJu
IGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoIkNhbm5vdCBhY2Nlc3Mg
aW52YWxpZCBwcml2YXRlIGZpZWxkIiksIGRlZmF1bHRTb3VyY2VBcHBlbmRlciwgVHlwZU5vdGhp
bmcpOworICAgIHJldHVybiBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5n
KCJJbnZhbGlkIHByaXZhdGUgbWVtYmVyIGFjY2VzcyIpLCBkZWZhdWx0U291cmNlQXBwZW5kZXIs
IFR5cGVOb3RoaW5nKTsKIH0KIAogSlNPYmplY3QqIGNyZWF0ZVJlZGVmaW5lZFByaXZhdGVOYW1l
RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKaW5kZXgg
OThkN2UyYjgzYTI3Li43NDk4MjA1MDE4Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCkBAIC02OSw3ICs2
OSw3IEBAIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUqIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNy
ZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiBjb25zdGV4cHIgYm9vbCBpblN0cmljdENv
bnRleHQgPSBmYWxzZTsKIGNvbnN0ZXhwciBib29sIGluc2lkZU9yZGluYXJ5RnVuY3Rpb24gPSBm
YWxzZTsKIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OkluZGlyZWN0RXZhbEV4ZWN1dGFibGUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBEZXJp
dmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNv
bnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUpCi0gICAgOiBFdmFsRXhlY3V0
YWJsZShnbG9iYWxPYmplY3QsIHNvdXJjZSwgaW5TdHJpY3RDb250ZXh0LCBkZXJpdmVkQ29udGV4
dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGluc2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2
YWxDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vKQorICAgIDogRXZh
bEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGluU3RyaWN0Q29udGV4dCwgZGVyaXZl
ZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBpbnNpZGVPcmRpbmFyeUZ1bmN0
aW9uLCBldmFsQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObywgUHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmUpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCmluZGV4IDY1N2JmY2QxYTZiMi4uNTYxNGE0YWI4ZGVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTE4NCw2ICsxODQsOCBA
QCBwdWJsaWM6CiAgICAgaW5saW5lIGJvb2wgZ2V0UHJpdmF0ZUZpZWxkKEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBpbmxpbmUgdm9pZCBzZXRQcml2
YXRlRmllbGQoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYpOwogICAgIGlubGluZSB2b2lkIGRlZmluZVByaXZhdGVGaWVsZChKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgaW5s
aW5lIGJvb2wgY2hlY2tQcml2YXRlQnJhbmQoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGJyYW5k
KTsKKyAgICBpbmxpbmUgdm9pZCBzZXRQcml2YXRlQnJhbmQoSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlIGJyYW5kKTsKIAogICAgIHVuc2lnbmVkIGdldEFycmF5TGVuZ3RoKCkgY29uc3QKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCmlu
ZGV4IDMxZTAwZjk4MzhkYy4uYWMzMGZkMmE3NmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaApAQCAtNjUxLDQgKzY1MSw0NSBAQCBpbmxp
bmUgdm9pZCBKU09iamVjdDo6ZGVmaW5lUHJpdmF0ZUZpZWxkKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFByb3BlcnR5TgogICAgIHB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgcHV0U2xvdCk7CiB9CiAKK2lubGluZSBib29sIEpTT2JqZWN0OjpjaGVja1ByaXZhdGVCcmFu
ZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJyYW5kKQoreworICAgIEFT
U0VSVChicmFuZC5pc1N5bWJvbCgpKTsKKyAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3Qp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZtKTsKKyAgICBpZiAoIXN0cnVjdHVy
ZS0+aXNCcmFuZGVkU3RydWN0dXJlKCkgfHwgIWpzQ2FzdDxCcmFuZGVkU3RydWN0dXJlKj4oc3Ry
dWN0dXJlKS0+Y2hlY2tCcmFuZChhc1N5bWJvbChicmFuZCkpKSB7CisgICAgICAgIHRocm93RXhj
ZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9y
KGdsb2JhbE9iamVjdCkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGZhbHNl
KTsKKyAgICB9CisgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkpOworCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRQcml2YXRlQnJh
bmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBicmFuZCkKK3sKKyAgICBB
U1NFUlQoYnJhbmQuaXNTeW1ib2woKSk7CisgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSh2bSk7CisgICAgaWYgKHN0cnVjdHVy
ZS0+aXNCcmFuZGVkU3RydWN0dXJlKCkgJiYganNDYXN0PEJyYW5kZWRTdHJ1Y3R1cmUqPihzdHJ1
Y3R1cmUpLT5jaGVja0JyYW5kKGFzU3ltYm9sKGJyYW5kKSkpIHsKKyAgICAgICAgLy8gV2UgYXJl
IHRyeWluZyB0byBpbnN0YWxsIGEgYnJhbmQgYWxyZWFkeSBpbnN0YWxsZWQKKyAgICAgICAgdGhy
b3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlSW52YWxpZFByaXZhdGVOYW1l
RXJyb3IoZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
dm9pZCgpKTsKKyAgICB9CisgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkp
OworCisgICAgc2NvcGUucmVsZWFzZSgpOworCisgICAgLy8gTm93IHdlIGtub3cgcHJvZXBydHkg
aXMgbm90IHNldCwgd2UgbmVlZCB0byBkbyBzbworICAgIERlZmVycmVkU3RydWN0dXJlVHJhbnNp
dGlvbldhdGNocG9pbnRGaXJlIGRlZmVycmVkV2F0Y2hwb2ludEZpcmUodm0sIHN0cnVjdHVyZSk7
CisKKyAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6c2V0QnJhbmRUcmFu
c2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIGFzU3ltYm9sKGJyYW5kKSwgJmRlZmVycmVkV2F0Y2hwb2lu
dEZpcmUpOworICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUtPmlzQnJhbmRlZFN0cnVjdHVyZSgpKTsK
KyAgICBBU1NFUlQobmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpIHx8ICF0aGlzLT5z
dHJ1Y3R1cmUodm0pLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKKyAgICB0aGlzLT5zZXRTdHJ1Y3R1
cmUodm0sIG5ld1N0cnVjdHVyZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAppbmRleCA0ZmIyNGEyODI3MzMuLmZjNzc0
MmUyMzA4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29w
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKQEAg
LTMyMSw3ICszMjEsNyBAQCBSZXNvbHZlT3AgSlNTY29wZTo6YWJzdHJhY3RSZXNvbHZlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHNpemVfdCBkZXB0aE9mZgogICAgIHJldHVybiBvcDsK
IH0KIAotdm9pZCBKU1Njb3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKEpTU2Nv
cGUqIHNjb3BlLCBURFpFbnZpcm9ubWVudCYgcmVzdWx0LCBWYXJpYWJsZUVudmlyb25tZW50JiBw
cml2YXRlTmFtZXMpCit2b2lkIEpTU2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJU
RFooSlNTY29wZSogc2NvcGUsIFREWkVudmlyb25tZW50JiByZXN1bHQsIFByaXZhdGVOYW1lRW52
aXJvbm1lbnQmIHByaXZhdGVOYW1lRW52aXJvbm1lbnQpCiB7CiAgICAgZm9yICg7IHNjb3BlOyBz
Y29wZSA9IHNjb3BlLT5uZXh0KCkpIHsKICAgICAgICAgaWYgKCFzY29wZS0+aXNMZXhpY2FsU2Nv
cGUoKSAmJiAhc2NvcGUtPmlzQ2F0Y2hTY29wZSgpKQpAQCAtMzQwLDggKzM0MCw5IEBAIHZvaWQg
SlNTY29wZTo6Y29sbGVjdENsb3N1cmVWYXJpYWJsZXNVbmRlclREWihKU1Njb3BlKiBzY29wZSwg
VERaRW52aXJvbm1lbnQmIHJlCiAgICAgICAgICAgICByZXN1bHQuYWRkKGl0ZXItPmtleSk7CiAK
ICAgICAgICAgaWYgKHN5bWJvbFRhYmxlLT5oYXNQcml2YXRlTmFtZXMoKSkgewotICAgICAgICAg
ICAgZm9yIChhdXRvIG5hbWUgOiBzeW1ib2xUYWJsZS0+cHJpdmF0ZU5hbWVzKCkpCi0gICAgICAg
ICAgICAgICAgcHJpdmF0ZU5hbWVzLnVzZVByaXZhdGVOYW1lKG5hbWUpOyAgICAKKyAgICAgICAg
ICAgIGF1dG8gcHJpdmF0ZU5hbWVzID0gc3ltYm9sVGFibGUtPnByaXZhdGVOYW1lcygpOworICAg
ICAgICAgICAgZm9yIChhdXRvIGVuZCA9IHByaXZhdGVOYW1lcy5lbmQoKSwgaXRlciA9IHByaXZh
dGVOYW1lcy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKQorICAgICAgICAgICAgICAgIHBy
aXZhdGVOYW1lRW52aXJvbm1lbnQuYWRkKGl0ZXItPmtleSwgaXRlci0+dmFsdWUpOwogICAgICAg
ICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTY29wZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCmluZGV4
IDdhM2MyNDE1MTFiOC4uZTRjZDBiYjMwOTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Njb3BlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTY29wZS5oCkBAIC0yNywxMiArMjcsMTIgQEAKIAogI2luY2x1ZGUgIkdldFB1dEluZm8u
aCIKICNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIlZhcmlhYmxlRW52aXJvbm1lbnQu
aCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIFNjb3BlQ2hhaW5JdGVyYXRvcjsKIGNsYXNz
IFN5bWJvbFRhYmxlOwotY2xhc3MgVmFyaWFibGVFbnZpcm9ubWVudDsKIGNsYXNzIFdhdGNocG9p
bnRTZXQ7CiAKIHVzaW5nIFREWkVudmlyb25tZW50ID0gSGFzaFNldDxSZWZQdHI8VW5pcXVlZFN0
cmluZ0ltcGw+LCBJZGVudGlmaWVyUmVwSGFzaD47CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgYm9vbCBoYXNDb25zdGFudFNjb3BlKFJlc29sdmVUeXBlKTsKICAgICBzdGF0
aWMgSlNTY29wZSogY29uc3RhbnRTY29wZUZvckNvZGVCbG9jayhSZXNvbHZlVHlwZSwgQ29kZUJs
b2NrKik7CiAKLSAgICBzdGF0aWMgdm9pZCBjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERa
KEpTU2NvcGUqLCBURFpFbnZpcm9ubWVudCYgcmVzdWx0LCBWYXJpYWJsZUVudmlyb25tZW50JiBw
cml2YXRlTmFtZXMpOworICAgIHN0YXRpYyB2b2lkIGNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5k
ZXJURFooSlNTY29wZSosIFREWkVudmlyb25tZW50JiByZXN1bHQsIFByaXZhdGVOYW1lRW52aXJv
bm1lbnQmKTsKIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZp
c2l0b3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgKaW5kZXggMDk5ZDg5OWFkNWU2Li5iODU5MTRmZjhlYTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1F
eGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUuaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAKICAgICBERUNMQVJF
X0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0
dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JL
aW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6Ok1vZHVsZSwgU3VwZXJCaW5kaW5nOjpOb3RO
ZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVNb2RlLCBkZXJpdmVkQ29udGV4
dFR5cGUoKSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vLCBpc0Fycm93RnVuY3Rpb25D
b250ZXh0KCksIGZhbHNlLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUpOyB9CisgICAgRXhlY3V0YWJs
ZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1c2Vz
RXZhbCgpLCBmYWxzZSwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmUsIGZhbHNlLCBDb25z
dHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6TW9kdWxlLCBTdXBlckJpbmRp
bmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFsdWF0ZU1vZGUsIGRlcml2
ZWRDb250ZXh0VHlwZSgpLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8sIGlzQXJyb3dG
dW5jdGlvbkNvbnRleHQoKSwgZmFsc2UsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSk7IH0KIAogICAg
IFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrKCkgeyByZXR1cm4gbV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suZ2V0KCk7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAppbmRleCA5NTg5
ODljOTIzYTQuLjU2ZDVmZTRkOGJjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3B0aW9ucy5jcHAKQEAgLTUzNyw2ICs1MzcsOSBAQCB2b2lkIE9wdGlvbnM6OnJlY29tcHV0ZURl
cGVuZGVudE9wdGlvbnMoKQogICAgICAgICBPcHRpb25zOjpyYW5kb21JbnRlZ3JpdHlBdWRpdFJh
dGUoKSA9IDA7CiAgICAgZWxzZSBpZiAoT3B0aW9uczo6cmFuZG9tSW50ZWdyaXR5QXVkaXRSYXRl
KCkgPiAxLjApCiAgICAgICAgIE9wdGlvbnM6OnJhbmRvbUludGVncml0eUF1ZGl0UmF0ZSgpID0g
MS4wOworICAgIAorICAgIGlmIChPcHRpb25zOjp1c2VQcml2YXRlTWV0aG9kcygpKQorICAgICAg
ICBPcHRpb25zOjp1c2VQcml2YXRlQ2xhc3NGaWVsZHMoKSA9IHRydWU7CiAKICAgICBpZiAoIU9w
dGlvbnM6OmFsbG93VW5zdXBwb3J0ZWRUaWVycygpKSB7CiAjZGVmaW5lIERJU0FCTEVfVElFUlMo
b3B0aW9uLCBmbGFncywgLi4uKSBkbyB7IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zTGlzdC5oCmluZGV4IDIyNWUyMjQ4M2QwOS4uOGQ4ZWEzZDdmZTNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAgLTUxNiw2ICs1MTYs
NyBAQCBKU19FWFBPUlRfUFJJVkFURSBib29sIGNhblVzZUpJVENhZ2UoKTsKICAgICB2KEJvb2ws
IGV4cG9zZVByb2ZpbGVyc09uR2xvYmFsT2JqZWN0LCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwg
d2Ugd2lsbCBleHBvc2UgZnVuY3Rpb25zIHRvIGVuYWJsZS9kaXNhYmxlIGJvdGggdGhlIHNhbXBs
aW5nIHByb2ZpbGVyIGFuZCB0aGUgc3VwZXIgc2FtcGxlciIpIFwKICAgICB2KEJvb2wsIGFsbG93
VW5zdXBwb3J0ZWRUaWVycywgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgbm90IGRp
c2FibGUgREZHIG9yIEZUTCB3aGVuIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlIGlzIGVuYWJsZWQu
IikgXAogICAgIHYoQm9vbCwgdXNlUHJpdmF0ZUNsYXNzRmllbGRzLCBmYWxzZSwgTm9ybWFsLCAi
SWYgdHJ1ZSwgdGhlIHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHJpdmF0ZSBkYXRhIGZpZWxkcyBp
bnNpZGUgY2xhc3Nlcy4iKSBcCisgICAgdihCb29sLCB1c2VQcml2YXRlTWV0aG9kcywgZmFsc2Us
IE5vcm1hbCwgIklmIHRydWUsIHRoZSBwYXJzZXIgd2lsbCB1bmRlcnN0YW5kIHByaXZhdGUgbWV0
aG9kcyBpbnNpZGUgY2xhc3Nlcy4iKSBcCiAgICAgdihCb29sLCByZXR1cm5FYXJseUZyb21JbmZp
bml0ZUxvb3BzRm9yRnV6emluZywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoU2l6
ZSwgZWFybHlSZXR1cm5Gcm9tSW5maW5pdGVMb29wc0xpbWl0LCAxMzAwMDAwMDAwLCBOb3JtYWws
ICJXaGVuIHJldHVybkVhcmx5RnJvbUluZmluaXRlTG9vcHNGb3JGdXp6aW5nIGlzIHRydWUsIHRo
aXMgZGV0ZXJtaW5lcyB0aGUgbnVtYmVyIG9mIGV4ZWN1dGlvbnMgYSBsb29wIGNhbiBydW4gZm9y
IGJlZm9yZSBqdXN0IHJldHVybmluZy4gVGhpcyBpcyBoZWxwZnVsIGZvciB0aGUgZnV6emVyIHNv
IGl0IGRvZXNuJ3QgZ2V0IHN0dWNrIGluIGluZmluaXRlIGxvb3BzLiIpIFwKICAgICB2KEJvb2ws
IHVzZUxJQ01GdXp6aW5nLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaAppbmRleCBiODcxNWFh
NzJiYmMuLjk0OTc2MzEyMDVjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUlu
Zm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1c2VzRXZhbCgpLCBmYWxzZSwgZmFs
c2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBT
dXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZGVy
aXZlZENvbnRleHRUeXBlKCksIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObywgaXNBcnJv
d0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsgfQorICAg
IEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJs
ZUluZm8odXNlc0V2YWwoKSwgZmFsc2UsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lLCBm
YWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMs
IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBk
ZXJpdmVkQ29udGV4dFR5cGUoKSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vLCBpc0Fy
cm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUpOyB9CiAK
ICAgICBUZW1wbGF0ZU9iamVjdE1hcCYgZW5zdXJlVGVtcGxhdGVPYmplY3RNYXAoVk0mKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggMGNjNjY3
MGVjOTgzLi5hMWQyOWQ5ZTYxMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmNwcApAQCAtNDM2LDcgKzQzNiw3IEBAIFByb3BlcnR5VGFibGUqIFN0cnVjdHVy
ZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eVRhYmxlKFZNJiB2bSwgYm9vbCBzZXRQcm9wZXJ0eVRhYmxl
CiAKICAgICBmb3IgKHNpemVfdCBpID0gc3RydWN0dXJlcy5zaXplKCk7IGktLTspIHsKICAgICAg
ICAgc3RydWN0dXJlID0gc3RydWN0dXJlc1tpXTsKLSAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPm1f
dHJhbnNpdGlvblByb3BlcnR5TmFtZSkKKyAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPm1fdHJhbnNp
dGlvblByb3BlcnR5TmFtZSB8fCBzdHJ1Y3R1cmUtPnRyYW5zaXRpb25LaW5kKCkgPT0gVHJhbnNp
dGlvbktpbmQ6OlNldEJyYW5kKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIHN3aXRj
aCAoc3RydWN0dXJlLT50cmFuc2l0aW9uS2luZCgpKSB7CiAgICAgICAgIGNhc2UgVHJhbnNpdGlv
bktpbmQ6OlByb3BlcnR5QWRkaXRpb246IHsKQEAgLTE1MDMsNCArMTUwMywxMDIgQEAgYXV0byBT
dHJ1Y3R1cmU6OmZpbmRQcm9wZXJ0eUhhc2hFbnRyeShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KSBjb25zdCAtPiBPcHRpb24KICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCitCcmFuZGVk
U3RydWN0dXJlOjpCcmFuZGVkU3RydWN0dXJlKFZNJiB2bSwgU3RydWN0dXJlKiBwcmV2aW91cywg
U3ltYm9sKiBicmFuZFN5bWJvbCwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2lu
dEZpcmUqIGRlZmVycmVkKQorICAgIDogU3RydWN0dXJlKHZtLCBwcmV2aW91cywgZGVmZXJyZWQp
CisgICAgLCBtX2JyYW5kKHZtLCB0aGlzLCBicmFuZFN5bWJvbCkKK3sKKyAgICBpZiAocHJldmlv
dXMtPmlzQnJhbmRlZFN0cnVjdHVyZSgpKQorICAgICAgICBtX3BhcmVudEJyYW5kLnNldCh2bSwg
dGhpcywganNDYXN0PEJyYW5kZWRTdHJ1Y3R1cmUqPihwcmV2aW91cykpOworICAgIHRoaXMtPnNl
dElzQnJhbmRlZFN0cnVjdHVyZSh0cnVlKTsKK30KKworQnJhbmRlZFN0cnVjdHVyZTo6QnJhbmRl
ZFN0cnVjdHVyZShWTSYgdm0sIEJyYW5kZWRTdHJ1Y3R1cmUqIHByZXZpb3VzLCBEZWZlcnJlZFN0
cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogZGVmZXJyZWQpCisgICAgOiBTdHJ1Y3R1
cmUodm0sIHByZXZpb3VzLCBkZWZlcnJlZCkKKyAgICAsIG1fYnJhbmQodm0sIHRoaXMsIHByZXZp
b3VzLT5icmFuZCgpKQorICAgICwgbV9wYXJlbnRCcmFuZCh2bSwgdGhpcywgcHJldmlvdXMtPnBh
cmVudEJyYW5kKCkpCit7CisgICAgdGhpcy0+c2V0SXNCcmFuZGVkU3RydWN0dXJlKHRydWUpOwor
fQorCit2b2lkIEJyYW5kZWRTdHJ1Y3R1cmU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBCcmFuZGVkU3RydWN0dXJlKiB0aGlzT2JqZWN0
ID0ganNDYXN0PEJyYW5kZWRTdHJ1Y3R1cmUqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVu
KHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIAorICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmpl
Y3QtPm1fYnJhbmQpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcGFyZW50QnJh
bmQpOworfQorCitTdHJ1Y3R1cmUqIEJyYW5kZWRTdHJ1Y3R1cmU6OmNyZWF0ZShWTSYgdm0sIFN0
cnVjdHVyZSogcHJldmlvdXMsIFN5bWJvbCogYnJhbmQsIERlZmVycmVkU3RydWN0dXJlVHJhbnNp
dGlvbldhdGNocG9pbnRGaXJlKiBkZWZlcnJlZCkKK3sKKyAgICBBU1NFUlQodm0uc3RydWN0dXJl
U3RydWN0dXJlKTsKKyAgICBCcmFuZGVkU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxCcmFuZGVkU3RydWN0dXJlPih2bS5oZWFwKSkgQnJhbmRlZFN0
cnVjdHVyZSh2bSwgcHJldmlvdXMsIGJyYW5kLCBkZWZlcnJlZCk7CisgICAgbmV3U3RydWN0dXJl
LT5maW5pc2hDcmVhdGlvbih2bSwgcHJldmlvdXMpOworICAgIHJldHVybiBuZXdTdHJ1Y3R1cmU7
Cit9CisKK2Jvb2wgQnJhbmRlZFN0cnVjdHVyZTo6Y2hlY2tCcmFuZChTeW1ib2wqIGJyYW5kKQor
eworICAgIGZvciAoQnJhbmRlZFN0cnVjdHVyZSogY3VycmVudFN0cnVjdHVyZSA9IHRoaXM7IGN1
cnJlbnRTdHJ1Y3R1cmU7IGN1cnJlbnRTdHJ1Y3R1cmUgPSBjdXJyZW50U3RydWN0dXJlLT5tX3Bh
cmVudEJyYW5kLmdldCgpKSB7CisgICAgICAgIGlmIChicmFuZCA9PSBjdXJyZW50U3RydWN0dXJl
LT5tX2JyYW5kLmdldCgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJl
dHVybiBmYWxzZTsKK30KKworU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnNldEJyYW5kVHJhbnNpdGlv
bihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTeW1ib2wqIGJyYW5kLCBEZWZlcnJlZFN0
cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogZGVmZXJyZWQpCit7CisgICAgaWYgKCFz
dHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7CisgICAgICAgIGlmIChTdHJ1Y3R1cmUqIGV4aXN0
aW5nVHJhbnNpdGlvbiA9IHN0cnVjdHVyZS0+bV90cmFuc2l0aW9uVGFibGUuZ2V0KCZicmFuZC0+
dWlkKCksIDAsIFRyYW5zaXRpb25LaW5kOjpTZXRCcmFuZCkpIHsKKyAgICAgICAgICAgIEFTU0VS
VChleGlzdGluZ1RyYW5zaXRpb24tPnRyYW5zaXRpb25LaW5kKCkgPT0gVHJhbnNpdGlvbktpbmQ6
OlNldEJyYW5kKTsKKyAgICAgICAgICAgIHJldHVybiBleGlzdGluZ1RyYW5zaXRpb247CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBTdHJ1Y3R1cmUqIHRyYW5zaXRpb24gPSBCcmFuZGVkU3RydWN0
dXJlOjpjcmVhdGUodm0sIHN0cnVjdHVyZSwgYnJhbmQsIGRlZmVycmVkKTsKKworICAgIHRyYW5z
aXRpb24tPm1fY2FjaGVkUHJvdG90eXBlQ2hhaW4uc2V0TWF5QmVOdWxsKHZtLCB0cmFuc2l0aW9u
LCBzdHJ1Y3R1cmUtPm1fY2FjaGVkUHJvdG90eXBlQ2hhaW4uZ2V0KCkpOworICAgIAorICAgIC8v
IC8vIFdoaWxlIHdlIGFyZSBhZGRpbmcgdGhlIHByb3BlcnR5LCByZW1hdGVyaWFsaXppbmcgdGhl
IHByb3BlcnR5IHRhYmxlIGlzIHN1cGVyIHdlaXJkOiB3ZSBhbHJlYWR5CisgICAgLy8gLy8gaGF2
ZSBhIG1fdHJhbnNpdGlvblByb3BlcnR5TmFtZSBhbmQgdHJhbnNpdGlvblByb3BlcnR5QXR0cmli
dXRlcyBidXQgdGhlIG1fdHJhbnNpdGlvbk9mZnNldCBpcyBzdGlsbCB3cm9uZy4gSWYgdGhlCisg
ICAgLy8gLy8gbWF0ZXJpYWxpemF0aW9uIGFsZ29yaXRobSBydW5zLCBpdCdsbCBidWlsZCBhIHBy
b3BlcnR5IHRhYmxlIHRoYXQgYWxyZWFkeSBoYXMgdGhlIHByb3BlcnR5IGJ1dAorICAgIC8vIC8v
IGF0IGEgYm9ndXMgb2Zmc2V0LiBSYXRoZXIgdGhhbiB0cnkgdG8gdGVhY2ggdGhlIG1hdGVyaWFs
aXphdGlvbiBjb2RlIGhvdyB0byBjcmVhdGUgYSB0YWJsZSB1bmRlcgorICAgIC8vIC8vIHRob3Nl
IGNvbmRpdGlvbnMsIHdlIGp1c3QgdGVsbCB0aGUgR0Mgbm90IHRvIGJsb3cgdGhlIHRhYmxlIGF3
YXkgZHVyaW5nIHRoaXMgcGVyaW9kIG9mIHRpbWUuCisgICAgLy8gLy8gSG9sZGluZyB0aGUgbG9j
ayBlbnN1cmVzIHRoYXQgd2UgZWl0aGVyIGRvIHRoaXMgYmVmb3JlIHRoZSBHQyBzdGFydHMgc2Nh
bm5pbmcgdGhlIHN0cnVjdHVyZSwgaW4KKyAgICAvLyAvLyB3aGljaCBjYXNlIHRoZSBHQyB3aWxs
IG5vdCBibG93IHRoZSB0YWJsZSBhd2F5LCBvciB3ZSBkbyBpdCBhZnRlciB0aGUgR0MgYWxyZWFk
eSByYW4gaW4gd2hpY2gKKyAgICAvLyAvLyBjYXNlIGFsbCBpcyB3ZWxsLiAgSWYgaXQgd2Fzbid0
IGZvciB0aGUgbG9jaywgdGhlIEdDIHdvdWxkIGhhdmUgVE9DVE9VOiBpZiBjb3VsZCByZWFkCisg
ICAgLy8gLy8gcHJvdGVjdFByb3BlcnR5VGFibGVXaGlsZVRyYW5zaXRpb25pbmcgYmVmb3JlIHdl
IHNldCBpdCB0byB0cnVlLCBhbmQgdGhlbiBibG93IHRoZSB0YWJsZSBhd2F5IGFmdGVyLgorICAg
IC8vIHsKKyAgICAvLyAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcih0cmFuc2l0aW9uLT5s
b2NrKCkpOworICAgIC8vICAgICB0cmFuc2l0aW9uLT5zZXRQcm90ZWN0UHJvcGVydHlUYWJsZVdo
aWxlVHJhbnNpdGlvbmluZyh0cnVlKTsKKyAgICAvLyB9CisKKyAgICB0cmFuc2l0aW9uLT5tX2Js
b2Iuc2V0SW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeShzdHJ1Y3R1cmUtPmluZGV4aW5nTW9k
ZUluY2x1ZGluZ0hpc3RvcnkoKSk7CisgICAgdHJhbnNpdGlvbi0+bV90cmFuc2l0aW9uUHJvcGVy
dHlOYW1lID0gJmJyYW5kLT51aWQoKTsKKyAgICB0cmFuc2l0aW9uLT5zZXRUcmFuc2l0aW9uUHJv
cGVydHlBdHRyaWJ1dGVzKDApOworICAgIHRyYW5zaXRpb24tPnNldFRyYW5zaXRpb25LaW5kKFRy
YW5zaXRpb25LaW5kOjpTZXRCcmFuZCk7CisgICAgdHJhbnNpdGlvbi0+c2V0UHJvcGVydHlUYWJs
ZSh2bSwgc3RydWN0dXJlLT50YWtlUHJvcGVydHlUYWJsZU9yQ2xvbmVJZlBpbm5lZCh2bSkpOwor
ICAgIHRyYW5zaXRpb24tPnNldE1heE9mZnNldCh2bSwgc3RydWN0dXJlLT5tYXhPZmZzZXQoKSk7
CisKKyAgICAvLyAvLyBOb3cgdGhhdCBldmVyeXRoaW5nIGlzIGZpbmUgd2l0aCB0aGUgbmV3IHN0
cnVjdHVyZSdzIGJvb2trZWVwaW5nLCB0aGUgR0MgaXMgZnJlZSB0byBibG93IHRoZQorICAgIC8v
IC8vIHRhYmxlIGF3YXkgaWYgaXQgd2FudHMuIFdlIGNhbiBub3cgcmVidWlsZCBpdCBmaW5lLgor
ICAgIC8vIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CisgICAgLy8gdHJhbnNpdGlvbi0+c2V0UHJv
dGVjdFByb3BlcnR5VGFibGVXaGlsZVRyYW5zaXRpb25pbmcoZmFsc2UpOworCisgICAgLy8gY2hl
Y2tPZmZzZXQodHJhbnNpdGlvbi0+dHJhbnNpdGlvbk9mZnNldCgpLCB0cmFuc2l0aW9uLT5pbmxp
bmVDYXBhY2l0eSgpKTsKKyAgICAKKyAgICBpZiAoc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkg
eworICAgICAgICBQcm9wZXJ0eVRhYmxlKiB0YWJsZSA9IHRyYW5zaXRpb24tPmVuc3VyZVByb3Bl
cnR5VGFibGUodm0pOworICAgICAgICB0cmFuc2l0aW9uLT5waW4oaG9sZExvY2sodHJhbnNpdGlv
bi0+bV9sb2NrKSwgdm0sIHRhYmxlKTsKKyAgICB9IGVsc2UgeworICAgICAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKHN0cnVjdHVyZS0+bV9sb2NrKTsKKyAgICAgICAgc3RydWN0dXJlLT5tX3Ry
YW5zaXRpb25UYWJsZS5hZGQodm0sIHRyYW5zaXRpb24pOworICAgIH0KKworICAgIHRyYW5zaXRp
b24tPmNoZWNrT2Zmc2V0Q29uc2lzdGVuY3koKTsKKyAgICByZXR1cm4gdHJhbnNpdGlvbjsKK30K
KwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5oCmluZGV4IDAwMGJiOTgwZDdjYS4uMmNmODNlZDExZDc2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaApAQCAtMTIzLDcgKzEyMyw3IEBAIHByaXZhdGU6
CiAgICAgY29uc3QgU3RydWN0dXJlKiBtX3N0cnVjdHVyZTsKIH07CiAKLWNsYXNzIFN0cnVjdHVy
ZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgeworY2xhc3MgU3RydWN0dXJlIDogcHVibGljIEpTQ2Vs
bCB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MTZfdCBzaG9ydEludmFsaWRPZmZzZXQgPSBz
dGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkgLSAxOwogICAgIHN0YXRpYyBjb25z
dGV4cHIgdWludDE2X3QgdXNlUmFyZURhdGFGbGFnID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50
MTZfdD46Om1heCgpOwogcHVibGljOgpAQCAtMTQ2LDEzICsxNDYsNyBAQCBwdWJsaWM6CiAKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBpc1ZhbGlkUHJvdG90eXBlKEpTVmFsdWUp
OwogCi1wcml2YXRlOgotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtKQotICAgIHsKLSAg
ICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgICAgICBBU1NFUlQobV9wcm90b3R5
cGUuZ2V0KCkuaXNFbXB0eSgpIHx8IGlzVmFsaWRQcm90b3R5cGUobV9wcm90b3R5cGUuZ2V0KCkp
KTsKLSAgICB9Ci0KK3Byb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
Y29uc3QgU3RydWN0dXJlKiBwcmV2aW91cykKICAgICB7CiAgICAgICAgIHRoaXMtPmZpbmlzaENy
ZWF0aW9uKHZtKTsKQEAgLTE2NSw2ICsxNTksMTMgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAg
IH0KIAorcHJpdmF0ZToKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSkKKyAgICB7Cisg
ICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgQVNTRVJUKG1fcHJvdG90
eXBlLmdldCgpLmlzRW1wdHkoKSB8fCBpc1ZhbGlkUHJvdG90eXBlKG1fcHJvdG90eXBlLmdldCgp
KSk7CisgICAgfQorCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0sIENyZWF0aW5nRWFy
bHlDZWxsVGFnKQogICAgIHsKICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIHRoaXMs
IENyZWF0aW5nRWFybHlDZWxsKTsKQEAgLTIwNiw2ICsyMDcsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIFN0cnVjdHVyZSogcHJldmVudEV4dGVuc2lvbnNUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJl
Kik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogbm9uUHJvcGVydHlUcmFuc2l0aW9uKFZNJiwgU3Ry
dWN0dXJlKiwgVHJhbnNpdGlvbktpbmQpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBT
dHJ1Y3R1cmUqIG5vblByb3BlcnR5VHJhbnNpdGlvblNsb3coVk0mLCBTdHJ1Y3R1cmUqLCBUcmFu
c2l0aW9uS2luZCk7CisgICAgc3RhdGljIFN0cnVjdHVyZSogc2V0QnJhbmRUcmFuc2l0aW9uKFZN
JiwgU3RydWN0dXJlKiwgU3ltYm9sKiBicmFuZCwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9u
V2F0Y2hwb2ludEZpcmUqID0gbnVsbHB0cik7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29s
IGlzU2VhbGVkKFZNJik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0Zyb3plbihWTSYp
OwpAQCAtNzE1LDE2ICs3MTcsMTkgQEAgcHVibGljOgogICAgIERFRklORV9CSVRGSUVMRChib29s
LCBoYXNCZWVuRGljdGlvbmFyeSwgSGFzQmVlbkRpY3Rpb25hcnksIDEsIDI3KTsKICAgICBERUZJ
TkVfQklURklFTEQoYm9vbCwgcHJvdGVjdFByb3BlcnR5VGFibGVXaGlsZVRyYW5zaXRpb25pbmcs
IFByb3RlY3RQcm9wZXJ0eVRhYmxlV2hpbGVUcmFuc2l0aW9uaW5nLCAxLCAyOCk7CiAgICAgREVG
SU5FX0JJVEZJRUxEKGJvb2wsIGhhc1VuZGVyc2NvcmVQcm90b1Byb3BlcnR5RXhjbHVkaW5nT3Jp
Z2luYWxQcm90bywgSGFzVW5kZXJzY29yZVByb3RvUHJvcGVydHlFeGNsdWRpbmdPcmlnaW5hbFBy
b3RvLCAxLCAyOSk7CisgICAgREVGSU5FX0JJVEZJRUxEKGJvb2wsIGlzQnJhbmRlZFN0cnVjdHVy
ZSwgSXNCcmFuZGVkU3RydWN0dXJlLCAxLCAzMCk7CiAKICAgICBzdGF0aWNfYXNzZXJ0KHNfYml0
V2lkdGhPZlRyYW5zaXRpb25Qcm9wZXJ0eUF0dHJpYnV0ZXMgPD0gc2l6ZW9mKFRyYW5zaXRpb25Q
cm9wZXJ0eUF0dHJpYnV0ZXMpICogOCk7CiAgICAgc3RhdGljX2Fzc2VydChzX2JpdFdpZHRoT2ZU
cmFuc2l0aW9uS2luZCA8PSBzaXplb2YoVHJhbnNpdGlvbktpbmQpICogOCk7CiAKK3Byb3RlY3Rl
ZDoKKyAgICBTdHJ1Y3R1cmUoVk0mLCBTdHJ1Y3R1cmUqLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5z
aXRpb25XYXRjaHBvaW50RmlyZSopOworCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJ1Y3R1cmUoVk0m
LCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNv
bnN0IENsYXNzSW5mbyosIEluZGV4aW5nVHlwZSwgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkpOwog
ICAgIFN0cnVjdHVyZShWTSYpOwotICAgIFN0cnVjdHVyZShWTSYsIFN0cnVjdHVyZSosIERlZmVy
cmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKik7CiAKICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRp
b25XYXRjaHBvaW50RmlyZSogPSBudWxscHRyKTsKICAgICAKQEAgLTg3NCw0ICs4NzksNDEgQEAg
cHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgSlNEb2xsYXJWTUhlbHBlcjsKIH07CiAKK2NsYXNz
IEJyYW5kZWRTdHJ1Y3R1cmUgZmluYWwgOiBwdWJsaWMgU3RydWN0dXJlIHsKKyAgICB0eXBlZGVm
IFN0cnVjdHVyZSBCYXNlOworCitwdWJsaWM6CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxs
VHlwZSwgU3Vic3BhY2VBY2Nlc3M+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gJnZtLmJyYW5kZWRTdHJ1Y3R1cmVTcGFj
ZTsKKyAgICB9CisKKyAgICBTeW1ib2wqIGJyYW5kKCkKKyAgICB7CisgICAgICAgIHJldHVybiBt
X2JyYW5kLmdldCgpOworICAgIH0KKworICAgIEJyYW5kZWRTdHJ1Y3R1cmUqIHBhcmVudEJyYW5k
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX3BhcmVudEJyYW5kLmdldCgpOworICAgIH0KKwor
ICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKwor
ICAgIGJvb2wgY2hlY2tCcmFuZChTeW1ib2wqIGJyYW5kKTsKKworcHJpdmF0ZTogCisgICAgQnJh
bmRlZFN0cnVjdHVyZShWTSYsIFN0cnVjdHVyZSosIFN5bWJvbCogYnJhbmQsIERlZmVycmVkU3Ry
dWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKik7CisgICAgQnJhbmRlZFN0cnVjdHVyZShW
TSYsIEJyYW5kZWRTdHJ1Y3R1cmUqLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBv
aW50RmlyZSopOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlKFZNJiwgU3RydWN0dXJl
KiwgU3ltYm9sKiBicmFuZCwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZp
cmUqID0gbnVsbHB0cik7CisKKyAgICBXcml0ZUJhcnJpZXI8U3ltYm9sPiBtX2JyYW5kOworICAg
IFdyaXRlQmFycmllcjxCcmFuZGVkU3RydWN0dXJlPiBtX3BhcmVudEJyYW5kOworCisgICAgZnJp
ZW5kIGNsYXNzIFN0cnVjdHVyZTsKK307CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCmluZGV4IDczMDcz
NWY5OTZkZC4uYWM0MGQ5MjE2NGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCkBAIC02MSw3ICs2MSwxMiBAQCBpbmxpbmUgU3RydWN0
dXJlKiBTdHJ1Y3R1cmU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0pCiBpbmxpbmUgU3RydWN0dXJl
KiBTdHJ1Y3R1cmU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogcHJldmlvdXMsIERlZmVycmVk
U3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiBkZWZlcnJlZCkKIHsKICAgICBBU1NF
UlQodm0uc3RydWN0dXJlU3RydWN0dXJlKTsKLSAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cnVjdHVyZT4odm0uaGVhcCkpIFN0cnVjdHVy
ZSh2bSwgcHJldmlvdXMsIGRlZmVycmVkKTsKKyAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZTsK
KyAgICBpZiAocHJldmlvdXMtPmlzQnJhbmRlZFN0cnVjdHVyZSgpKQorICAgICAgICBuZXdTdHJ1
Y3R1cmUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxCcmFuZGVkU3RydWN0dXJlPih2bS5o
ZWFwKSkgQnJhbmRlZFN0cnVjdHVyZSh2bSwganNDYXN0PEJyYW5kZWRTdHJ1Y3R1cmUqPihwcmV2
aW91cyksIGRlZmVycmVkKTsKKyAgICBlbHNlCisgICAgICAgIG5ld1N0cnVjdHVyZSA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cnVjdHVyZT4odm0uaGVhcCkpIFN0cnVjdHVyZSh2bSwg
cHJldmlvdXMsIGRlZmVycmVkKTsKKwogICAgIG5ld1N0cnVjdHVyZS0+ZmluaXNoQ3JlYXRpb24o
dm0sIHByZXZpb3VzKTsKICAgICByZXR1cm4gbmV3U3RydWN0dXJlOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUu
aAppbmRleCA2M2NmOGUwMjEyMjEuLmI5ODFmODQyZGU1MSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgKQEAg
LTU0LDYgKzU0LDcgQEAgZW51bSBjbGFzcyBUcmFuc2l0aW9uS2luZCA6IHVpbnQ4X3QgewogICAg
IFN3aXRjaFRvU2xvd1B1dEFycmF5U3RvcmFnZSwKICAgICBBZGRJbmRleGVkQWNjZXNzb3JzLAog
ICAgIFByZXZlbnRFeHRlbnNpb25zLAorICAgIFNldEJyYW5kLAogICAgIFNlYWwsCiAgICAgRnJl
ZXplCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9s
VGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3Bw
CmluZGV4IDE2NGNhNmQ0MzEwZS4uZmI0NjAwMWJhZWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCkBAIC0xODQsNyArMTg0LDcgQEAgU3ltYm9s
VGFibGUqIFN5bWJvbFRhYmxlOjpjbG9uZVNjb3BlUGFydChWTSYgdm0pCiAKICAgICAgICAgewog
ICAgICAgICAgICAgZm9yIChhdXRvIG5hbWUgOiBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcykK
LSAgICAgICAgICAgICAgICByZXN1bHQtPm1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChu
YW1lKTsKKyAgICAgICAgICAgICAgICByZXN1bHQtPm1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVz
LmFkZChuYW1lLmtleSwgbmFtZS52YWx1ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAppbmRleCA1OWE3MjMwNWQz
YTcuLmE1MzgxY2NiZWUxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3ltYm9sVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1i
b2xUYWJsZS5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzVGFi
bGUuaCIKICNpbmNsdWRlICJUeXBlTG9jYXRpb24uaCIKICNpbmNsdWRlICJWYXJPZmZzZXQuaCIK
KyNpbmNsdWRlICJWYXJpYWJsZUVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiV2F0Y2hwb2ludC5o
IgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgpAQCAtNDUw
LDggKzQ1MSw3IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRT
dHJpbmdJbXBsPiwgUmVmUHRyPFR5cGVTZXQ+LCBJZGVudGlmaWVyUmVwSGFzaD4gVW5pcXVlVHlw
ZVNldE1hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8VmFyT2Zmc2V0LCBSZWZQdHI8VW5pcXVlZFN0
cmluZ0ltcGw+PiBPZmZzZXRUb1ZhcmlhYmxlTWFwOwogICAgIHR5cGVkZWYgVmVjdG9yPFN5bWJv
bFRhYmxlRW50cnkqPiBMb2NhbFRvRW50cnlWZWM7Ci0gICAgdHlwZWRlZiBIYXNoU2V0PFJlZlB0
cjxVbmlxdWVkU3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPiBQcml2YXRlTmFtZVNldDsK
LSAgICB0eXBlZGVmIFdURjo6SXRlcmF0b3JSYW5nZTx0eXBlbmFtZSBQcml2YXRlTmFtZVNldDo6
aXRlcmF0b3I+IFByaXZhdGVOYW1lSXRlcmF0b3JSYW5nZTsKKyAgICB0eXBlZGVmIFdURjo6SXRl
cmF0b3JSYW5nZTx0eXBlbmFtZSBQcml2YXRlTmFtZUVudmlyb25tZW50OjppdGVyYXRvcj4gUHJp
dmF0ZU5hbWVJdGVyYXRvclJhbmdlOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUs
IFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQpAQCAtNjA1LDE0ICs2MDUsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbWFrZUl0
ZXJhdG9yUmFuZ2UobV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYmVnaW4oKSwgbV9yYXJlRGF0
YS0+bV9wcml2YXRlTmFtZXMuZW5kKCkpOwogICAgIH0KIAotICAgIHZvaWQgYWRkUHJpdmF0ZU5h
bWUoVW5pcXVlZFN0cmluZ0ltcGwqIGtleSkKKyAgICB2b2lkIGFkZFByaXZhdGVOYW1lKGNvbnN0
IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGtleSwgUHJpdmF0ZU5hbWVFbnRyeSB2YWx1ZSkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChrZXkgJiYgIWtleS0+aXNTeW1ib2woKSk7CiAgICAgICAg
IGlmICghbV9yYXJlRGF0YSkKICAgICAgICAgICAgIG1fcmFyZURhdGEgPSBXVEY6Om1ha2VVbmlx
dWU8U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKIAotICAgICAgICBBU1NFUlQoIW1fcmFyZURhdGEt
Pm1fcHJpdmF0ZU5hbWVzLmNvbnRhaW5zKGtleSkpOwotICAgICAgICBtX3JhcmVEYXRhLT5tX3By
aXZhdGVOYW1lcy5hZGQoa2V5KTsKKyAgICAgICAgQVNTRVJUKG1fcmFyZURhdGEtPm1fcHJpdmF0
ZU5hbWVzLmZpbmQoa2V5KSA9PSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5lbmQoKSk7Cisg
ICAgICAgIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChrZXksIHZhbHVlKTsKICAgICB9
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbnRyeT4KQEAgLTc1Niw3ICs3NTYsNyBAQCBwdWJs
aWM6CiAgICAgICAgIE9mZnNldFRvVmFyaWFibGVNYXAgbV9vZmZzZXRUb1ZhcmlhYmxlTWFwOwog
ICAgICAgICBVbmlxdWVUeXBlU2V0TWFwIG1fdW5pcXVlVHlwZVNldE1hcDsKICAgICAgICAgV3Jp
dGVCYXJyaWVyPENvZGVCbG9jaz4gbV9jb2RlQmxvY2s7Ci0gICAgICAgIFByaXZhdGVOYW1lU2V0
IG1fcHJpdmF0ZU5hbWVzOworICAgICAgICBQcml2YXRlTmFtZUVudmlyb25tZW50IG1fcHJpdmF0
ZU5hbWVzOwogICAgIH07CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAKaW5kZXggYWQ4ZmIwOTI2MDExLi4yN2FjZmQ3ZTc2NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAKQEAgLTM2OSw2ICszNjksNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwg
SGVhcFR5cGUgaGVhcFR5cGUsIFdURjo6UnVuTG9vcCogcnVuTG9vcCwgYm9vbCogc3VjY2VzcykK
ICAgICAsIHN0cnVjdHVyZUNoYWluU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgY2VsbEhl
YXBDZWxsVHlwZS5nZXQoKSwgU3RydWN0dXJlQ2hhaW4pCiAgICAgLCBzdHJ1Y3R1cmVSYXJlRGF0
YVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5
cGUuZ2V0KCksIFN0cnVjdHVyZVJhcmVEYXRhKSAvLyBIYXNoOjB4YWNhNGU2MmQKICAgICAsIHN0
cnVjdHVyZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFw
Q2VsbFR5cGUuZ2V0KCksIFN0cnVjdHVyZSkgLy8gSGFzaDoweDFmMWJjZGNhCisgICAgLCBicmFu
ZGVkU3RydWN0dXJlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2Vs
bEhlYXBDZWxsVHlwZS5nZXQoKSwgQnJhbmRlZFN0cnVjdHVyZSkKICAgICAsIHN5bWJvbFRhYmxl
U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlw
ZS5nZXQoKSwgU3ltYm9sVGFibGUpIC8vIEhhc2g6MHhjNTIxNWFmZAogICAgICwgZXhlY3V0YWJs
ZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMoZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZVNwYWNlKQogICAgICwgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycyhl
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAppbmRleCA1NTJkNTgxOTBlOGIuLmFhNmJkNWI2MGUwNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCkBAIC00ODcsNiArNDg3LDcgQEAgcHVibGljOgogICAgIElzb1N1YnNwYWNlIHN0
cnVjdHVyZUNoYWluU3BhY2U7CiAgICAgSXNvU3Vic3BhY2Ugc3RydWN0dXJlUmFyZURhdGFTcGFj
ZTsKICAgICBJc29TdWJzcGFjZSBzdHJ1Y3R1cmVTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBicmFu
ZGVkU3RydWN0dXJlU3BhY2U7CiAgICAgSXNvU3Vic3BhY2Ugc3ltYm9sVGFibGVTcGFjZTsKIAog
I2RlZmluZSBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKG5hbWUpIFwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415781</attachid>
            <date>2020-12-09 11:45:36 -0800</date>
            <delta_ts>2021-01-11 08:13:54 -0800</delta_ts>
            <desc>WIP - Patch</desc>
            <filename>private-methods.diff</filename>
            <type>text/plain</type>
            <size>197282</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
MmE0ZjlhNjliN2Y4Li40N2UzYWU5OTdmYjggMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMTAtMjAgIENh
aW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgorCisgICAgICAgIFtFU05leHRdIEltcGxl
bWVudCBwcml2YXRlIG1ldGhvZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5NDQzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVy
LWNhbGwtZnJvbS1hcnJvdy1mdW5jdGlvbi5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3By
aXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVyLWNhbGwtZnJvbS1ldmFsLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2QtYnJhbmQtY2hlY2suanM6IEFkZGVk
LgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZC1jb21wYXJpc29uLmpzOiBBZGRlZC4K
KyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2QtZXh0ZW5kcy1icmFuZC1jaGVjay5qczog
QWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWdldC1hbmQtY2FsbC5qczog
QWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9kLW5lc3RlZC1jbGFzcy5qczog
QWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1vbi1wcm94eS5qczogQWRk
ZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWRpcmVjdC1l
dmFsLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1sOgorCiAyMDIwLTEx
LTAzICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBiYWNr
IHRoZSByZW1vdmVkIGFzc2VydGlvbiBmcm9tIHIyNjkzMzggYW5kIGFkZCBhIHRlc3QKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVy
LWNhbGwtZnJvbS1hcnJvdy1mdW5jdGlvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYnJh
bmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVyLWNhbGwtZnJvbS1hcnJvdy1mdW5jdGlvbi5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjdlMjljN2JjMTFjMwotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVy
LXN1cGVyLWNhbGwtZnJvbS1hcnJvdy1mdW5jdGlvbi5qcwpAQCAtMCwwICsxLDI3IEBACisvL0Ag
cmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFz
c2VydChhLCBlKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigi
RXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7Cit9CisKK2NsYXNzIEEge30KKwor
Y2xhc3MgQyBleHRlbmRzIEEgeworICAgICNtZXRob2QoKSB7CisgICAgICAgIHJldHVybiAiYmFz
ZSI7CisgICAgfQorCisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIGxldCBpbml0ID0gKCkg
PT4gc3VwZXIoKTsKKyAgICAgICAgaW5pdCgpOworICAgIH0KKworICAgIGJhc2VBY2Nlc3MoKSB7
CisgICAgICAgIHJldHVybiB0aGlzLiNtZXRob2QoKTsKKyAgICB9Cit9CisKK2xldCBjID0gbmV3
IEMoKTsKK2Fzc2VydChjLmJhc2VBY2Nlc3MoKSwgImJhc2UiKTsKKwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvcHJpdmF0ZS1icmFuZC1pbnN0YWxsZWQtYWZ0ZXItc3VwZXItY2FsbC1mcm9t
LWV2YWwuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLWJyYW5kLWluc3RhbGxlZC1hZnRlci1z
dXBlci1jYWxsLWZyb20tZXZhbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjllMTZlZTM4ZTM0MQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3By
aXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVyLWNhbGwtZnJvbS1ldmFsLmpzCkBAIC0w
LDAgKzEsMjYgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVl
IikKKworZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKK30K
KworY2xhc3MgQSB7fQorCitjbGFzcyBDIGV4dGVuZHMgQSB7CisgICAgI21ldGhvZCgpIHsKKyAg
ICAgICAgcmV0dXJuICJiYXNlIjsKKyAgICB9CisKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAg
ICAgZXZhbCgic3VwZXIoKSIpOworICAgIH0KKworICAgIGJhc2VBY2Nlc3MoKSB7CisgICAgICAg
IHJldHVybiB0aGlzLiNtZXRob2QoKTsKKyAgICB9Cit9CisKK2xldCBjID0gbmV3IEMoKTsKK2Fz
c2VydChjLmJhc2VBY2Nlc3MoKSwgImJhc2UiKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvcHJpdmF0ZS1tZXRob2QtYnJhbmQtY2hlY2suanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRl
LW1ldGhvZC1icmFuZC1jaGVjay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjZhNTE3NWEzZjViYwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3By
aXZhdGUtbWV0aG9kLWJyYW5kLWNoZWNrLmpzCkBAIC0wLDAgKzEsMzMgQEAKKy8vQCByZXF1aXJl
T3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGEs
IGUpIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKK30KKworY2xhc3MgQyB7CisgICAgI20oKSB7
CisgICAgICAgIHJldHVybiB0aGlzLiNmOworICAgIH0KKworICAgIG1ldGhvZCgpIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuI20oKTsKKyAgICB9CisKKyAgICAjZiA9IDQ7Cit9CisKK2xldCBjID0g
bmV3IEMoKTsKK2Fzc2VydChjLm1ldGhvZCgpLCA0KTsKKwordHJ5IHsKKyAgICBjbGFzcyBDIHsK
KyAgICAgICAgI20oKSB7IHJldHVybiAzOyB9CisgICAgfQorCisgICAgbGV0IG8gPSBuZXcgQygp
OworICAgIGMubWV0aG9kLmNhbGwobyk7Cit9IGNhdGNoIChlKSB7CisgICAgYXNzZXJ0KGUgaW5z
dGFuY2VvZiBUeXBlRXJyb3IsIHRydWUpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9wcml2YXRlLW1ldGhvZC1jaGFuZ2UtYXR0cmlidXRlLWZyb20tYnJhbmRlZC1zdHJ1Y3R1cmUu
anMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1jaGFuZ2UtYXR0cmlidXRlLWZyb20t
YnJhbmRlZC1zdHJ1Y3R1cmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi5kNzkwYzQwMzU5YzkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2
YXRlLW1ldGhvZC1jaGFuZ2UtYXR0cmlidXRlLWZyb20tYnJhbmRlZC1zdHJ1Y3R1cmUuanMKQEAg
LTAsMCArMSw1MCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRy
dWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGFjdHVhbCwg
ZXhwZWN0ZWQpIHsKKyAgICAgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZXhwZWN0ZWQgKyAiIGJ1dCBnb3Q6ICIg
KyBhY3R1YWwpOworICAgIH0sCisKKyAgICB0aHJvd3M6IGZ1bmN0aW9uIChleHBlY3RlZEVycm9y
LCBvcCkgeworICAgICAgICB0cnkgeworICAgICAgICAgIG9wKCk7CisgICAgICAgIH0gY2F0Y2go
ZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVkRXJyb3IpKQorICAg
ICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleHBl
Y3RlZEVycm9yICsgIiBidXQgdGhyZXc6ICIgKyBlKTsKKyAgICAgICAgfQorICAgIH0KK307CisK
K2NsYXNzIEMgeworICAgICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisKKyAgICBhY2Nlc3MoKSB7
CisgICAgICAgIHJldHVybiB0aGlzLiNtKCk7CisgICAgfQorfQorCitsZXQgYzEgPSBuZXcgQygp
OworYzEuZm9vID0gJ3Rlc3QnOworYXNzZXJ0LnNhbWVWYWx1ZShjMS5hY2Nlc3MoKSwgJ3Rlc3Qn
KTsKK2Fzc2VydC5zYW1lVmFsdWUoYzEuZm9vLCAndGVzdCcpOworYXNzZXJ0LnRocm93cyhUeXBl
RXJyb3IsIGZ1bmN0aW9uICgpIHsKKyAgICBjMS5hY2Nlc3MuY2FsbCh7fSk7Cit9KTsKKworT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KGMxLCAnZm9vJywgeworICAgIHdyaXRhYmxlOiBmYWxzZSwKKyAg
ICBlbnVtZXJhYmxlOiBmYWxzZQorfSk7CisKK2Fzc2VydC5zYW1lVmFsdWUoYzEuYWNjZXNzKCks
ICd0ZXN0Jyk7Cithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgIGMx
LmFjY2Vzcy5jYWxsKHt9KTsKK30pOworCitsZXQgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoYzEsICdmb28nKTsKKworYXNzZXJ0LnNhbWVWYWx1ZShkZXNjcmlw
dG9yLnZhbHVlLCAndGVzdCcpOworYXNzZXJ0LnNhbWVWYWx1ZShkZXNjcmlwdG9yLmVudW1lcmFi
bGUsIGZhbHNlKTsKK2Fzc2VydC5zYW1lVmFsdWUoZGVzY3JpcHRvci53cml0YWJsZSwgZmFsc2Up
OworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1jaGFuZ2UtcHJv
dG90eXBlLWZyb20tYnJhbmRlZC1zdHJ1Y3R1cmUuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRl
LW1ldGhvZC1jaGFuZ2UtcHJvdG90eXBlLWZyb20tYnJhbmRlZC1zdHJ1Y3R1cmUuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lZGIxZjY2OWNhMDIKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1jaGFuZ2UtcHJvdG90eXBl
LWZyb20tYnJhbmRlZC1zdHJ1Y3R1cmUuanMKQEAgLTAsMCArMSw0MCBAQAorLy9AIHJlcXVpcmVP
cHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAg
IHNhbWVWYWx1ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7CisgICAgICAgIGlmIChsaHMgIT09IHJo
cykKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBsaHMgKyAiIGJ1
ZyBnb3Q6ICIgKyByaHMpOworICAgIH0sCisKKyAgICB0aHJvd3M6IGZ1bmN0aW9uIChleHBlY3Rl
ZEVycm9yLCBvcCkgeworICAgICAgICB0cnkgeworICAgICAgICAgIG9wKCk7CisgICAgICAgIH0g
Y2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVkRXJyb3Ip
KQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIg
KyBleHBlY3RlZEVycm9yICsgIiBidXQgdGhyZXc6ICIgKyBlKTsKKyAgICAgICAgfQorICAgIH0K
K307CisKK2NsYXNzIEMgeworICAgICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisKKyAgICBhY2Nl
c3MoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtKCk7CisgICAgfQorfQorCitsZXQgYzEgPSBu
ZXcgQygpOworYXNzZXJ0LnNhbWVWYWx1ZShjMS5hY2Nlc3MoKSwgJ3Rlc3QnKTsKK2Fzc2VydC50
aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgYzEuYWNjZXNzLmNhbGwoe30pOwor
fSk7CisKK09iamVjdC5zZXRQcm90b3R5cGVPZihjMSwgbnVsbCk7CisKK2Fzc2VydC5zYW1lVmFs
dWUoYzEuYWNjZXNzLCB1bmRlZmluZWQpOworYXNzZXJ0LnNhbWVWYWx1ZShDLnByb3RvdHlwZS5h
Y2Nlc3MuY2FsbChjMSksICd0ZXN0Jyk7Cithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rp
b24gKCkgeworICAgIGMxLmFjY2Vzcy5jYWxsKHt9KTsKK30pOworCmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1jaGVjay1zdHJ1Y3R1cmUtbWlzcy5qcyBiL0pTVGVz
dHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWNoZWNrLXN0cnVjdHVyZS1taXNzLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNTgwZDdmN2VlZTcwCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtY2hlY2stc3RydWN0dXJlLW1p
c3MuanMKQEAgLTAsMCArMSw1MSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVN
ZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24g
KGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigi
RXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfSwKKyAgICBzaG91bGRU
aHJvdzogZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4
Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAg
ICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAg
ICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNl
b2YgZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQg
dG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGl0IHRocm93czogIiArIGUubmFt
ZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1l
ICsgIiBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2xldCBp
ID0gMDsKKworY2xhc3MgQyB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIGlmIChpID49
IDUwMDApCisgICAgICAgICAgICB0aGlzLnByb3BlcnR5ID0gaTsKKyAgICB9CisKKyAgICAjbWV0
aG9kKHYpIHsKKyAgICAgICAgdGhpcy5maWVsZCA9IHY7CisgICAgfQorCisgICAgYWNjZXNzKHYp
IHsKKyAgICAgICAgdGhpcy4jbWV0aG9kKHYpOworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90
eXBlLmFjY2Vzcyk7CisKK2xldCBjID0gbmV3IEMoKTsKK2ZvciAoOyBpIDwgMTAwMDA7IGkrKykg
eworICAgIGMuYWNjZXNzKCdmb28nICsgaSk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmZpZWxk
LCAnZm9vJyArIGkpOworfQorCithc3NlcnQuc2hvdWxkVGhyb3coVHlwZUVycm9yLCBmdW5jdGlv
bigpIHsKKyAgICBjLmFjY2Vzcy5jYWxsKHt9LCAndGVzdCcpOworfSk7CisKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWNvbXBhcmlzb24uanMgYi9KU1Rlc3RzL3N0
cmVzcy9wcml2YXRlLW1ldGhvZC1jb21wYXJpc29uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uNDZkYTc4NjdiYTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtY29tcGFyaXNvbi5qcwpAQCAtMCwwICsxLDMxIEBACisv
L0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3Nl
cnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAobGhzLCByaHMpIHsKKyAgICAgICAgaWYg
KGxocyAhPT0gcmhzKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiAr
IGxocyArICIgYnVnIGdvdDogIiArIHJocyk7CisgICAgfSwKKworICAgIHRocm93czogZnVuY3Rp
b24gKGV4cGVjdGVkRXJyb3IsIG9wKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgb3AoKTsK
KyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgZXhw
ZWN0ZWRFcnJvcikpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0
byB0aHJvdzogIiArIGV4cGVjdGVkRXJyb3IgKyAiIGJ1dCB0aHJldzogIiArIGUpOworICAgICAg
ICB9CisgICAgfQorfTsKKworY2xhc3MgQyB7CisgICAgI20oKSB7IHJldHVybiAndGVzdDI2Mic7
IH0KKworICAgIGdldFByaXZhdGVNZXRob2QoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtOwor
ICAgIH0KK30KKworbGV0IGMxID0gbmV3IEMoKTsKK2xldCBjMiA9IG5ldyBDKCk7CisKK2Fzc2Vy
dC5zYW1lVmFsdWUoYzEuZ2V0UHJpdmF0ZU1ldGhvZCgpLCBjMi5nZXRQcml2YXRlTWV0aG9kKCkp
OworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1kZWxldGUtcHJv
cGVydHktZnJvbS1icmFuZGVkLXN0cnVjdHVyZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUt
bWV0aG9kLWRlbGV0ZS1wcm9wZXJ0eS1mcm9tLWJyYW5kZWQtc3RydWN0dXJlLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZmVmYWU1ZjIxY2NkCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtZGVsZXRlLXByb3BlcnR5LWZy
b20tYnJhbmRlZC1zdHJ1Y3R1cmUuanMKQEAgLTAsMCArMSw0MiBAQAorLy9AIHJlcXVpcmVPcHRp
b25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNh
bWVWYWx1ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7CisgICAgICAgIGlmIChsaHMgIT09IHJocykK
KyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBsaHMgKyAiIGJ1ZyBn
b3Q6ICIgKyByaHMpOworICAgIH0sCisKKyAgICB0aHJvd3M6IGZ1bmN0aW9uIChleHBlY3RlZEVy
cm9yLCBvcCkgeworICAgICAgICB0cnkgeworICAgICAgICAgIG9wKCk7CisgICAgICAgIH0gY2F0
Y2goZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVkRXJyb3IpKQor
ICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBl
eHBlY3RlZEVycm9yICsgIiBidXQgdGhyZXc6ICIgKyBlKTsKKyAgICAgICAgfQorICAgIH0KK307
CisKK2NsYXNzIEMgeworICAgICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisKKyAgICBhY2Nlc3Mo
KSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtKCk7CisgICAgfQorfQorCitsZXQgYzEgPSBuZXcg
QygpOworYzEuZm9vID0gJ3Rlc3QnOworYXNzZXJ0LnNhbWVWYWx1ZShjMS5hY2Nlc3MoKSwgJ3Rl
c3QnKTsKK2Fzc2VydC5zYW1lVmFsdWUoYzEuZm9vLCAndGVzdCcpOworYXNzZXJ0LnRocm93cyhU
eXBlRXJyb3IsIGZ1bmN0aW9uICgpIHsKKyAgICBjMS5hY2Nlc3MuY2FsbCh7fSk7Cit9KTsKKwor
ZGVsZXRlIGMxLmZvbzsKKworYXNzZXJ0LnNhbWVWYWx1ZShjMS5hY2Nlc3MoKSwgJ3Rlc3QnKTsK
K2Fzc2VydC5zYW1lVmFsdWUoYzEuZm9vLCB1bmRlZmluZWQpOworYXNzZXJ0LnRocm93cyhUeXBl
RXJyb3IsIGZ1bmN0aW9uICgpIHsKKyAgICBjMS5hY2Nlc3MuY2FsbCh7fSk7Cit9KTsKKwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtZXh0ZW5kcy1icmFuZC1jaGVj
ay5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWV4dGVuZHMtYnJhbmQtY2hlY2su
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zMjY2NGIyZmNjY2YK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1leHRlbmRz
LWJyYW5kLWNoZWNrLmpzCkBAIC0wLDAgKzEsNDEgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11
c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsKKyAgICBp
ZiAoYSAhPT0gZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAi
IGJ1dCBnb3Q6ICIgKyBhKTsKK30KKworY2xhc3MgQmFzZSB7CisgICAgI21CYXNlKCkgeworICAg
ICAgICByZXR1cm4gNDsKKyAgICB9CisKKyAgICBtZXRob2RCYXNlKCkgeworICAgICAgICByZXR1
cm4gdGhpcy4jbUJhc2UoKTsKKyAgICB9Cit9CisKK2NsYXNzIEMgZXh0ZW5kcyBCYXNlIHsKKyAg
ICAjbSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI2Y7CisgICAgfQorCisgICAgbWV0aG9kKCkg
eworICAgICAgICByZXR1cm4gdGhpcy4jbSgpOworICAgIH0KKworICAgICNmID0gMTU7Cit9CisK
K2xldCBjID0gbmV3IEMoKTsKK2Fzc2VydChjLm1ldGhvZCgpLCAxNSk7Cithc3NlcnQoYy5tZXRo
b2RCYXNlKCksIDQpOworCitsZXQgYmFzZSA9IG5ldyBCYXNlICgpOworYXNzZXJ0KGJhc2UubWV0
aG9kQmFzZSgpLCA0KTsKK3RyeSB7CisgICAgYy5tZXRob2QuY2FsbChiYXNlKTsKK30gY2F0Y2gg
KGUpIHsKKyAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIFR5cGVFcnJvciwgdHJ1ZSk7Cit9CisKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWdldC1hbmQtY2FsbC5qcyBi
L0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWdldC1hbmQtY2FsbC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjEzMTdlMWU3N2U0MwotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWdldC1hbmQtY2FsbC5qcwpAQCAt
MCwwICsxLDI0IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1
ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAobGhzLCByaHMp
IHsKKyAgICAgICAgaWYgKGxocyAhPT0gcmhzKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJFeHBlY3RlZDogIiArIGxocyArICIgYnVnIGdvdDogIiArIHJocyk7CisgICAgfQorfTsKKwor
Y2xhc3MgQyB7CisgICAgI20oKSB7IHJldHVybiB0aGlzLl92OyB9CisKKyAgICBnZXRQcml2YXRl
TWV0aG9kKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jbTsKKyAgICB9Cit9CisKK2xldCBjID0g
bmV3IEMoKTsKKworbGV0IG8xID0ge192OiAndGVzdDI2Mid9OworbGV0IG8yID0ge192OiAnZm9v
J307Cithc3NlcnQuc2FtZVZhbHVlKGMuZ2V0UHJpdmF0ZU1ldGhvZCgpLmNhbGwobzEpLCAndGVz
dDI2MicpOworYXNzZXJ0LnNhbWVWYWx1ZShjLmdldFByaXZhdGVNZXRob2QoKS5jYWxsKG8yKSwg
J2ZvbycpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1pbnZh
bGlkLW11bHRpcGxlLWJyYW5kLWluc3RhbGxhdGlvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZh
dGUtbWV0aG9kLWludmFsaWQtbXVsdGlwbGUtYnJhbmQtaW5zdGFsbGF0aW9uLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uN2Q3NzUwNzlmMzE0Ci0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtaW52YWxpZC1tdWx0aXBsZS1i
cmFuZC1pbnN0YWxsYXRpb24uanMKQEAgLTAsMCArMSw1MSBAQAorLy9AIHJlcXVpcmVPcHRpb25z
KCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVW
YWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAg
fSwKKyAgICBzaG91bGRUaHJvdzogZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAg
ICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0
b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0
Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAg
aWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGl0IHRo
cm93czogIiArIGUubmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRocmV3RXhjZXB0
aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiAr
IGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKKyAg
ICB9Cit9CisKK2xldCBpID0gMDsKKworbGV0IG8gPSB7fTsKK2NsYXNzIEJhc2UgeworICAgIGNv
bnN0cnVjdG9yKCkgeworICAgICAgICByZXR1cm4gbzsKKyAgICB9Cit9CisKK2NsYXNzIEMgZXh0
ZW5kcyBCYXNlIHsKKyAgICAjbWV0aG9kKHYpIHsKKyAgICAgICAgdGhpcy5maWVsZCA9IHY7Cisg
ICAgfQorCisgICAgYWNjZXNzKHYpIHsKKyAgICAgICAgdGhpcy4jbWV0aG9kKHYpOworICAgIH0K
K30KK25vSW5saW5lKEMucHJvdG90eXBlLmFjY2Vzcyk7CisKK2xldCBjID0gbmV3IEMoKTsKK0Mu
cHJvdG90eXBlLmFjY2Vzcy5jYWxsKGMsICdmb28nKTsKK2Fzc2VydC5zYW1lVmFsdWUoYy5maWVs
ZCwgJ2ZvbycpOworCithc3NlcnQuc2hvdWxkVGhyb3coVHlwZUVycm9yLCBmdW5jdGlvbigpIHsK
KyAgICBjID0gbmV3IEMoKTsKK30pOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2
YXRlLW1ldGhvZC1pbnZhbGlkYXRlLWNvbXBpbGVkLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzIGIv
SlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtaW52YWxpZGF0ZS1jb21waWxlZC13aXRoLWNv
bnN0YW50LXN5bWJvbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LjI5ZDNjNzJiMDM4YgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUt
bWV0aG9kLWludmFsaWRhdGUtY29tcGlsZWQtd2l0aC1jb25zdGFudC1zeW1ib2wuanMKQEAgLTAs
MCArMSw2MiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUi
KQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAg
ICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIg
KyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfSwKKyAgICB0aHJvd3M6IGZ1bmN0aW9uKGV4
Y2VwdGlvbiwgZnVuY3RvcikgeworICAgICAgICBsZXQgdGhyZXdFeGNlcHRpb247CisgICAgICAg
IHRyeSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlv
biA9IGZhbHNlOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0
aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICghZSBpbnN0YW5jZW9mIGV4Y2VwdGlvbikKKyAg
ICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhj
ZXB0aW9uLm5hbWUgKyAiIGJ1dCBpdCB0aHJvd3M6ICIgKyBlLm5hbWUpOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKCF0aHJld0V4Y2VwdGlvbikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGV4ZWN1dGVk
IHdpdGhvdXQgZXhjZXB0aW9uIik7CisgICAgfQorfQorCitmdW5jdGlvbiBmYWN0b3J5Q2xhc3Mo
KSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgICNtZXRob2QoKSB7CisgICAgICAgICAgICByZXR1
cm4gJ3Rlc3QnOworICAgICAgICB9CisgICAgCisgICAgICAgIGFjY2VzcygpIHsKKyAgICAgICAg
ICAgIHJldHVybiB0aGlzLiNtZXRob2QoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBub0lubGlu
ZShDLnByb3RvdHlwZS5hY2Nlc3MpOworCisgICAgcmV0dXJuIEM7Cit9CisKK2xldCBDID0gZmFj
dG9yeUNsYXNzKCk7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxl
dCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuYWNjZXNzKCksICd0ZXN0Jyk7
CisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICAgICAgYy5hY2Nlc3Mu
Y2FsbCh7fSk7CisgICAgfSk7Cit9CisKK2xldCBDMiA9IGZhY3RvcnlDbGFzcygpOworCitsZXQg
YzIgPSBuZXcgQzIoKTsKK2Fzc2VydC5zYW1lVmFsdWUoYzIuYWNjZXNzKCksICd0ZXN0Jyk7CisK
K2xldCBjID0gbmV3IEMoKTsKKworYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsICgpID0+IHsKKyAg
ICBjLmFjY2Vzcy5jYWxsKGMyKTsKK30pOworCithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgKCkg
PT4geworICAgIGMyLmFjY2Vzcy5jYWxsKGMpOworfSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9wcml2YXRlLW1ldGhvZC1uZXN0ZWQtY2xhc3MuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2
YXRlLW1ldGhvZC1uZXN0ZWQtY2xhc3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi44Y2RmNDg5OWE0M2UKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9wcml2YXRlLW1ldGhvZC1uZXN0ZWQtY2xhc3MuanMKQEAgLTAsMCArMSw2OCBAQAorLy9AIHJl
cXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitmdW5jdGlvbiBhc3Nl
cnQoYSwgZSkgeworICAgIGlmIChhICE9PSBlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4
cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworfQorCisoKCkgPT4geworICAgIGNs
YXNzIEJhc2UgeworICAgICAgICBDID0gY2xhc3MgeworICAgICAgICAgICAgbWV0aG9kKCkgewor
ICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiNtQmFzZSgpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgI21CYXNlKCkgeworICAgICAgICAgICAgcmV0dXJuIDQ7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBsZXQgYmFzZSA9IG5ldyBCYXNlKCk7CisgICAgbGV0IGMgPSBu
ZXcgYmFzZS5DKCk7CisgICAgYXNzZXJ0KGMubWV0aG9kLmNhbGwoYmFzZSksIDQpOworCisgICAg
dHJ5IHsKKyAgICAgICAgYy5tZXRob2QoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGFz
c2VydChlIGluc3RhbmNlb2YgVHlwZUVycm9yLCB0cnVlKTsKKyAgICB9Cit9KSgpOworCisvLyBU
ZXN0IHNoYWRvdyBtZXRob2RzCisKKygoKSA9PiB7CisgICAgY2xhc3MgQmFzZSB7CisgICAgICAg
IG1ldGhvZCgpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLiNtKCk7CisgICAgICAgIH0KKwor
ICAgICAgICBDID0gY2xhc3MgeworICAgICAgICAgICAgbWV0aG9kKG8pIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gby4jbSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjbSgpIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mb287CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGZvbyA9IDQ7CisgICAgICAgIH07CisKKyAgICAgICAgI20oKSB7CisgICAgICAgICAg
ICByZXR1cm4gImZvbyI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYmFzZSA9IG5ldyBC
YXNlKCk7CisgICAgbGV0IGMgPSBuZXcgYmFzZS5DKCk7CisgICAgYXNzZXJ0KGMubWV0aG9kKGMp
LCA0KTsKKyAgICBhc3NlcnQoYmFzZS5tZXRob2QoKSwgImZvbyIpOworCisgICAgdHJ5IHsKKyAg
ICAgICAgYy5tZXRob2QoYmFzZSk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBhc3NlcnQo
ZSBpbnN0YW5jZW9mIFR5cGVFcnJvciwgdHJ1ZSk7CisgICAgfQorfSkoKTsKKwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2Qtb24tc2VhbGVkLW9iamVjdHMuanMgYi9K
U1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1vbi1zZWFsZWQtb2JqZWN0cy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmE2MmYwOTk0MzEyMgotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLW9uLXNlYWxlZC1vYmplY3Rz
LmpzCkBAIC0wLDAgKzEsNjQgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0
aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChh
Y3R1YWwsIGV4cGVjdGVkKSB7CisgICAgICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGFjdHVhbCArICIgYnVnIGdv
dDogIiArIGV4cGVjdGVkKTsKKyAgICB9LAorCisgICAgdGhyb3dzOiBmdW5jdGlvbiAoZXhwZWN0
ZWRFcnJvciwgb3ApIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICBvcCgpOworICAgICAgICB9
IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEVycm9y
KSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAi
ICsgZXhwZWN0ZWRFcnJvciArICIgYnV0IHRocmV3OiAiICsgZSk7CisgICAgICAgIH0KKyAgICB9
Cit9OworCitjbGFzcyBDIHsKKyAgICAjbSgpIHsgcmV0dXJuICd0ZXN0JzsgfQorCisgICAgYWNj
ZXNzKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jbSgpOworICAgIH0KK30KKworbGV0IGMxID0g
bmV3IEMoKTsKK2Fzc2VydC5zYW1lVmFsdWUoYzEuYWNjZXNzKCksICd0ZXN0Jyk7Cithc3NlcnQu
dGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgIGMxLmFjY2Vzcy5jYWxsKHt9KTsK
K30pOworCitPYmplY3Quc2VhbChjMSk7CisKK2Fzc2VydC5zYW1lVmFsdWUoYzEuYWNjZXNzKCks
ICd0ZXN0Jyk7Cithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgIGMx
LmFjY2Vzcy5jYWxsKHt9KTsKK30pOworCisvLyBQZXJmb3JtIGEgc2V0IGJyYW5kIHRyYW5zaXRp
b24gb24gZnJvemVuIG9iamVjdAorbGV0IHNlYWxlZE9iamVjdCA9IHt9OworT2JqZWN0LmZyZWV6
ZShzZWFsZWRPYmplY3QpOworCitjbGFzcyBCYXNlIHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAg
ICAgICAgcmV0dXJuIHNlYWxlZE9iamVjdDsKKyAgICB9Cit9CisKK2NsYXNzIEQgZXh0ZW5kcyBC
YXNlIHsKKyAgICAjbSgpIHsgcmV0dXJuICd0ZXN0IEQnOyB9CisKKyAgICBzdGF0aWMgYWNjZXNz
KG8pIHsKKyAgICAgICAgcmV0dXJuIG8uI20oKTsKKyAgICB9Cit9CisKK2xldCBkID0gbmV3IEQo
KTsKKworYXNzZXJ0LnNhbWVWYWx1ZShELmFjY2VzcyhkKSwgJ3Rlc3QgRCcpOworYXNzZXJ0LnRo
cm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgpIHsKKyAgICBELmFjY2Vzcyh7fSk7Cit9KTsKKwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2Qtb24tdW5jYWNoZWFibGUt
ZGljdGlvbmFyeS5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLW9uLXVuY2FjaGVh
YmxlLWRpY3Rpb25hcnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li5hMDU1MTUwZWQ3NDUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRl
LW1ldGhvZC1vbi11bmNhY2hlYWJsZS1kaWN0aW9uYXJ5LmpzCkBAIC0wLDAgKzEsNjQgQEAKKy8v
QCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2Vy
dCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAg
ICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJFeHBlY3RlZDogIiArIGFjdHVhbCArICIgYnVnIGdvdDogIiArIGV4cGVjdGVkKTsKKyAgICB9
LAorCisgICAgdGhyb3dzOiBmdW5jdGlvbiAoZXhwZWN0ZWRFcnJvciwgb3ApIHsKKyAgICAgICAg
dHJ5IHsKKyAgICAgICAgICBvcCgpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAg
IGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEVycm9yKSkKKyAgICAgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhwZWN0ZWRFcnJvciArICIgYnV0
IHRocmV3OiAiICsgZSk7CisgICAgICAgIH0KKyAgICB9Cit9OworCitjbGFzcyBDIHsKKyAgICAj
bSgpIHsgcmV0dXJuICd0ZXN0JzsgfQorCisgICAgYWNjZXNzKCkgeworICAgICAgICByZXR1cm4g
dGhpcy4jbSgpOworICAgIH0KK30KKworbGV0IGMxID0gbmV3IEMoKTsKK2Fzc2VydC5zYW1lVmFs
dWUoYzEuYWNjZXNzKCksICd0ZXN0Jyk7Cithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rp
b24gKCkgeworICAgIGMxLmFjY2Vzcy5jYWxsKHt9KTsKK30pOworCitPYmplY3QuZnJlZXplKGMx
KTsKKworYXNzZXJ0LnNhbWVWYWx1ZShjMS5hY2Nlc3MoKSwgJ3Rlc3QnKTsKK2Fzc2VydC50aHJv
d3MoVHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgYzEuYWNjZXNzLmNhbGwoe30pOworfSk7
CisKKy8vIFBlcmZvcm0gYSBzZXQgYnJhbmQgdHJhbnNpdGlvbiBvbiBmcm96ZW4gb2JqZWN0Cits
ZXQgZnJvemVuT2JqZWN0ID0ge307CitPYmplY3QuZnJlZXplKGZyb3plbk9iamVjdCk7CisKK2Ns
YXNzIEJhc2UgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICByZXR1cm4gZnJvemVuT2Jq
ZWN0OworICAgIH0KK30KKworY2xhc3MgRCBleHRlbmRzIEJhc2UgeworICAgICNtKCkgeyByZXR1
cm4gJ3Rlc3QgRCc7IH0KKworICAgIHN0YXRpYyBhY2Nlc3MobykgeworICAgICAgICByZXR1cm4g
by4jbSgpOworICAgIH0KK30KKworbGV0IGQgPSBuZXcgRCgpOworCithc3NlcnQuc2FtZVZhbHVl
KEQuYWNjZXNzKGQpLCAndGVzdCBEJyk7Cithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rp
b24gKCkgeworICAgIEQuYWNjZXNzKHt9KTsKK30pOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9wcml2YXRlLW1ldGhvZC1wb2x5bW9ycGhpYy13aXRoLWNvbnN0YW50LXN5bWJvbC5qcyBi
L0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLXBvbHltb3JwaGljLXdpdGgtY29uc3RhbnQt
c3ltYm9sLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDAxNzYy
N2E1MzA5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2Qt
cG9seW1vcnBoaWMtd2l0aC1jb25zdGFudC1zeW1ib2wuanMKQEAgLTAsMCArMSw1MyBAQAorLy9A
IHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0
ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0g
ZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290
OiAiICsgYSk7CisgICAgfSwKKyAgICBzaG91bGRUaHJvdzogZnVuY3Rpb24oZXhjZXB0aW9uLCBm
dW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAg
ICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7
CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVl
OworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFt
ZSArICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0ZWQgd2l0aG91dCBl
eGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2xldCBpID0gMDsKKworY2xhc3MgQmFzZSB7CisgICAg
Y29uc3RydWN0b3IoKSB7CisgICAgICAgIGlmIChpICUgMikKKyAgICAgICAgICAgIHRoaXMuYW5v
dGhlckZpZWxkID0gaTsKKyAgICB9Cit9CisKK2NsYXNzIEMgZXh0ZW5kcyBCYXNlIHsKKyAgICAj
bWV0aG9kKCkgeworICAgICAgICByZXR1cm4gJ3Rlc3QnOworICAgIH0KKworICAgIGFjY2Vzcygp
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI21ldGhvZCgpOworICAgIH0KK30KK25vSW5saW5lKEMu
cHJvdG90eXBlLmFjY2Vzcyk7CisKK2ZvciAoOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGNvdW50
ID0gaTsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmFjY2Vz
cygpLCAndGVzdCcpOworfQorCithc3NlcnQuc2hvdWxkVGhyb3coVHlwZUVycm9yLCAoKSA9PiB7
CisgICAgYy5hY2Nlc3MuY2FsbCh7fSk7Cit9KTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvcHJpdmF0ZS1tZXRob2QtdW50eXBlZC11c2UuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRl
LW1ldGhvZC11bnR5cGVkLXVzZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjhhY2I4YjQxMDJiZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3By
aXZhdGUtbWV0aG9kLXVudHlwZWQtdXNlLmpzCkBAIC0wLDAgKzEsNTggQEAKKy8vQCByZXF1aXJl
T3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIiwgIi0tdXNlQWNjZXNzSW5saW5pbmc9
ZmFsc2UiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNob3VsZFRocm93OiBmdW5jdGlvbihleGNl
cHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9uOworICAgICAgICB0
cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24g
PSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlv
biA9IHRydWU7CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRpb24pCisgICAg
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2Vw
dGlvbi5uYW1lICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBleGVjdXRlZCB3
aXRob3V0IGV4Y2VwdGlvbiIpOworICAgIH0KK30KKworY2xhc3MgQyB7CisgICNtZXRob2QoKSB7
fQorCisgIGFjY2Vzcyh2KSB7CisgICAgICBsZXQgbyA9IHRoaXM7CisgICAgICAvLyBUaGlzIGJy
YW5jaCBpcyBoZXJlIHRvIGF2b2lkIFB1dFByaXZhdGVOYW1lQnlJZCB0byBiZSBmb2xkZWQgYXMg
CisgICAgICAvLyBQdXRCeU9mZnNldC4KKyAgICAgIGlmICh2ID4gMTAwKQorICAgICAgICAgIG8g
PSB7fTsKKyAgICAgIG8uI21ldGhvZCgpOworICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5h
Y2Nlc3MpOworCitsZXQgYyA9IG5ldyBDKCk7CisKKy8vIExldCdzIHRyaWdnZXIgSklUIGNvbXBp
bGF0aW9uIGZvciBgQy5wcm90b3R5cGUuYWNjZXNzYAorZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAw
MDsgaSsrKSB7CisgICAgYy5hY2Nlc3MoMTUpOworfQorCitmb3IgKGxldCBpID0gMDsgaSA8IDEw
MDAwOyBpKyspIHsKKyAgICBhc3NlcnQuc2hvdWxkVGhyb3coVHlwZUVycm9yLCAoKSA9PiB7Cisg
ICAgICAgIGMuYWNjZXNzLmNhbGwoe30sIDApOworICAgIH0pOworCisgICAgYXNzZXJ0LnNob3Vs
ZFRocm93KFR5cGVFcnJvciwgKCkgPT4geworICAgICAgICBjLmFjY2Vzcy5jYWxsKDE1LCAwKTsK
KyAgICB9KTsKKworICAgIGFzc2VydC5zaG91bGRUaHJvdyhUeXBlRXJyb3IsICgpID0+IHsKKyAg
ICAgICAgYy5zZXRGaWVsZC5jYWxsKCdzdHJpbmcnLCAwKTsKKyAgICB9KTsKKworICAgIGFzc2Vy
dC5zaG91bGRUaHJvdyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICAgICAgYy5zZXRGaWVsZC5jYWxs
KFN5bWJvbCgnc3ltYm9sJyksIDApOworICAgIH0pOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9wcml2YXRlLW1ldGhvZC13aXRoLXVuY2FjaGVhYmxlLWRpY3Rpb25hcnktdHJhbnNp
dGlvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLXdpdGgtdW5jYWNoZWFibGUt
ZGljdGlvbmFyeS10cmFuc2l0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uZjIxMjg4ZWJlNmQ4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
cHJpdmF0ZS1tZXRob2Qtd2l0aC11bmNhY2hlYWJsZS1kaWN0aW9uYXJ5LXRyYW5zaXRpb24uanMK
QEAgLTAsMCArMSwzOSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2Rz
PXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGFjdHVh
bCwgZXhwZWN0ZWQpIHsKKyAgICAgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgYWN0dWFsICsgIiBidWcgZ290OiAi
ICsgZXhwZWN0ZWQpOworICAgIH0sCisKKyAgICB0aHJvd3M6IGZ1bmN0aW9uIChleHBlY3RlZEVy
cm9yLCBvcCkgeworICAgICAgICB0cnkgeworICAgICAgICAgIG9wKCk7CisgICAgICAgIH0gY2F0
Y2goZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVkRXJyb3IpKQor
ICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBl
eHBlY3RlZEVycm9yICsgIiBidXQgdGhyZXc6ICIgKyBlKTsKKyAgICAgICAgfQorICAgIH0KK307
CisKK2NsYXNzIEMgeworICAgICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisKKyAgICBhY2Nlc3Mo
KSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtKCk7CisgICAgfQorfQorCitsZXQgYzEgPSBuZXcg
QygpOworYXNzZXJ0LnNhbWVWYWx1ZShjMS5hY2Nlc3MoKSwgJ3Rlc3QnKTsKK2Fzc2VydC50aHJv
d3MoVHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgYzEuYWNjZXNzLmNhbGwoe30pOworfSk7
CisKKyR2bS50b1VuY2FjaGVhYmxlRGljdGlvbmFyeShjMSk7CisKK2Fzc2VydC5zYW1lVmFsdWUo
YzEuYWNjZXNzKCksICd0ZXN0Jyk7Cithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24g
KCkgeworICAgIGMxLmFjY2Vzcy5jYWxsKHt9KTsKK30pOworCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9wcml2YXRlLW1ldGhvZHMtb24tcHJveHkuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2
YXRlLW1ldGhvZHMtb24tcHJveHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi5mYjVmZGZjYjYyMzQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9w
cml2YXRlLW1ldGhvZHMtb24tcHJveHkuanMKQEAgLTAsMCArMSw0MiBAQAorLy9AIHJlcXVpcmVP
cHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitmdW5jdGlvbiBhc3NlcnQoYSwg
ZSwgbSkgeworICAgIGlmIChhICE9PSBlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IobSk7Cit9
CisKK2Z1bmN0aW9uIGFzc2VydEFycmF5Q29udGVudChhLCBlKSB7CisgICAgYXNzZXJ0KGEubGVu
Z3RoLCBlLmxlbmd0aCwgIlNpemUgb2YgYXJyYXlzIGRvZXNuJ3QgbWF0Y2giKTsKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspCisgICAgICAgIGFzc2VydChhW2ldLCBlW2ld
LCAiYVsiICsgaSArICJdID0gIiArIGFbaV0gKyAiIGJ1dCBlWyIgKyBpICsgIl0gPSAiICsgZVtp
XSk7Cit9CisKK2xldCBhcnIgPSBbXTsKKworY2xhc3MgUHJveHlCYXNlIHsKKyAgICBjb25zdHJ1
Y3RvcigpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm94eSh0aGlzLCB7CisgICAgICAgICAgICBn
ZXQ6IGZ1bmN0aW9uIChvYmosIHByb3ApIHsKKyAgICAgICAgICAgICAgICBhcnIucHVzaChwcm9w
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gb2JqW3Byb3BdOworICAgICAgICAgICAgfQorICAg
ICAgICB9KTsKKyAgICB9Cit9CisKK2NsYXNzIFRlc3QgZXh0ZW5kcyBQcm94eUJhc2UgeworICAg
ICNtKCkgeworICAgICAgICByZXR1cm4gMzsKKyAgICB9CisKKyAgICBtZXRob2QoKSB7CisgICAg
ICAgIHJldHVybiB0aGlzLiNtKCk7CisgICAgfQorfQorCitsZXQgdCA9IG5ldyBUZXN0KCk7Cits
ZXQgciA9IHQubWV0aG9kKCk7Cithc3NlcnQociwgMywgIkV4cGVjdGVkOiAzIGJ1dCBnb3Q6ICIg
KyByKTsKKworYXNzZXJ0QXJyYXlDb250ZW50KGFyciwgWydtZXRob2QnXSk7CisKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWRpcmVjdC1ldmFs
LmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1lcy1hdmFpbGFibGUtb24tZGlyZWN0LWV2
YWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42NGNlMGUwYWY4
MDUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5hbWVzLWF2YWls
YWJsZS1vbi1kaXJlY3QtZXZhbC5qcwpAQCAtMCwwICsxLDIzIEBACisvL0AgcmVxdWlyZU9wdGlv
bnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2Ft
ZVZhbHVlOiBmdW5jdGlvbiAobGhzLCByaHMpIHsKKyAgICAgICAgaWYgKGxocyAhPT0gcmhzKQor
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIHJocyArICIgYnVnIGdv
dDogIiArIGxocyk7CisgICAgfQorfTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsK
KyAgICAgICAgI20oKSB7IHJldHVybiAndGVzdCc7IH0KKworICAgICAgICBjYWxsTWV0aG9kRnJv
bUV2YWwoKSB7CisgICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXM7CisgICAgICAgICAgICByZXR1
cm4gZXZhbCgnc2VsZi4jbSgpJyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5l
dyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmNhbGxNZXRob2RGcm9tRXZhbCgpLCAndGVz
dCcpOworfSkoKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sIGIv
SlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCmluZGV4IGI5MTQ5NjdiZGI3MC4uNmNlZmU0NGMx
MDQ3IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKKysrIGIvSlNUZXN0
cy90ZXN0MjYyL2NvbmZpZy55YW1sCkBAIC01LDYgKzUsNyBAQCBmbGFnczoKICAgRmluYWxpemF0
aW9uUmVnaXN0cnk6IHVzZVdlYWtSZWZzCiAgIGNsYXNzLWZpZWxkcy1wdWJsaWM6IHVzZVB1Ymxp
Y0NsYXNzRmllbGRzCiAgIGNsYXNzLWZpZWxkcy1wcml2YXRlOiB1c2VQcml2YXRlQ2xhc3NGaWVs
ZHMKKyAgY2xhc3MtbWV0aG9kcy1wcml2YXRlOiB1c2VQcml2YXRlTWV0aG9kcwogICBJbnRsLkRh
dGVUaW1lRm9ybWF0LWRheVBlcmlvZDogdXNlSW50bERhdGVUaW1lRm9ybWF0RGF5UGVyaW9kCiBz
a2lwOgogICBmZWF0dXJlczoKQEAgLTE2LDcgKzE3LDYgQEAgc2tpcDoKICAgICAtIGxlZ2FjeS1y
ZWdleHAKIAogICAgIC0gYXJiaXRyYXJ5LW1vZHVsZS1uYW1lc3BhY2UtbmFtZXMKLSAgICAtIGNs
YXNzLW1ldGhvZHMtcHJpdmF0ZQogICAgIC0gY2xhc3Mtc3RhdGljLWZpZWxkcy1wdWJsaWMKICAg
ICAtIGNsYXNzLXN0YXRpYy1maWVsZHMtcHJpdmF0ZQogICAgIC0gY2xhc3Mtc3RhdGljLW1ldGhv
ZHMtcHJpdmF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggMDQ2OTQwNTYwODE3Li4zYWE4
YzBlY2VjN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2NSBAQAorMjAy
MC0xMC0yMCAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VT
TmV4dF0gSW1wbGVtZW50IHByaXZhdGUgbWV0aG9kcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NDM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBhZGRpbmcgc3VwcG9ydCB0byBw
cml2YXRlIG1ldGhvZHMgZm9sbG93aW5nIHRoZQorICAgICAgICBzcGVjaWZpY2F0aW9uIG9uIGh0
dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1wcml2YXRlLW1ldGhvZHMvLgorICAgICAgICBUaGlzIGlz
IGludHJvZHVjaW5nIGEgbmV3IHdheSB0byBkZWNsYXJlIHByaXZhdGUgbWV0aG9kcyBvbgorICAg
ICAgICBjbGFzcyBzeW50YXguIFByaXZhdGUgbWV0aG9kcyBhcmUgb25seSBhY2Nlc3NpYmxlIHdp
dGhpbgorICAgICAgICBjbGFzc2VzIHRoZXkgd2VyZSBkZWNsYXJlZCwgYW5kIG9ubHkgY2FuIGJl
IGNhbGxlZCBmcm9tCisgICAgICAgIG9iamVjdHMgdGhhdCBhcmUgaW5zdGFuY2Ugb2YgdGhlc2Ug
Y2xhc3Nlcy4KKyAgICAgICAgVG8gZ3VhcmFudGVlIHN1Y2ggcnVsZXMsIHRoZSBwcm9wb3NhbCBw
cmVzZW50cyB0aGUgY29uY2VwdCBvZgorICAgICAgICBCcmFuZCBDaGVjay4gRHVyaW5nIGNsYXNz
IGV2YWx1YXRpb24sIGlmIGEgcHJpdmF0ZSBtZXRob2QgaXMgcHJlc2VudCwKKyAgICAgICAgYSBg
YnJhbmRgIGlzIGluc3RhbGxlZCBpbiB0aGlzIGNsYXNzLiBFdmVyeSBpbnN0YW5jZSBvZiBzdWNo
IGNsYXNzCisgICAgICAgIHRoZW4gZ2V0cyB0aGlzIGJyYW5kIGluc3RhbGxlZCBkdXJpbmcgYFtb
Q29uc3RydWN0XV1gIG9wZXJhdGlvbi4gSXQKKyAgICAgICAgbWVhbnMgdGhhdCBhbiBvYmplY3Qg
Y2FuIGhhdmUgbXVsdGlwbGUgYnJhbmRzIChlLmcgd2hlbiB0aGVyZSBpcyBhbHNvCisgICAgICAg
IHByaXZhdGUgbWV0aG9kcyBkZWNsYXJlZCBvbiBzdXBlciBjbGFzcykuIEJlZm9yZSBhY2Nlc3Np
bmcgYSBwcml2YXRlCisgICAgICAgIG1ldGhvZCwgdGhlcmUgaXMgYSBjaGVjayB0byB2YWxpZGF0
ZSBpZiB0aGUgdGFyZ2V0IG9mIHRoZSBjYWxsIGhhcyB0aGUKKyAgICAgICAgYnJhbmQgb2YgY2Fs
bGVlIG1ldGhvZC4KKyAgICAgICAgVGhlIGJyYW5kIGNoZWNrIG1lY2hhbmlzbSBpcyBpbXBsZW1l
bnRlZCB1c2luZyBhIGBAcHJpdmF0ZUJyYW5kYAorICAgICAgICBzdG9yZWQgb24gY2xhc3Mgc2Nv
cGUuIEhlcmUgaXMgYSByZXByZXNlbnRhdGlvbiBvZiBob3cgdGhpcyBtZWNoYW5pc20KKyAgICAg
ICAgd29ya3M6CisKKyAgICAgICAgYGBgCisgICAgICAgIGNsYXNzIEMgeworICAgICAgICAgICAg
I20oKSB7IHJldHVybiAzOyB9CisgICAgICAgICAgICBtZXRob2QoKSB7IHJldHVybiB0aGlzLiNt
KCk7IH0KKyAgICAgICAgfQorCisgICAgICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICAgICAgY29u
c29sZS5sb2coYy5tZXRob2QoKSk7IC8vIHByaW50cyAzCisgICAgICAgIGBgYAorCisgICAgICAg
IEdlbmVyYXRlZCBieXRlY29kZSBmb3IgdGhlIGZvbGxvd2luZyByZXByZXNlbnRhdGlvbjoKKyAg
ICAgICAgYGBgCisgICAgICAgIHsgLy8gY2xhc3MgbGV4aWNhbCBzY29wZQorICAgICAgICAgICAg
Y29uc3QgQHByaXZhdGVCcmFuZCA9IEBjcmVhdGVQcml2YXRlU3ltYm9sKCk7CisgICAgICAgICAg
ICBjb25zdCAjbSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDM7IH0KKyAgICAgICAgICAgIEMucHJv
dG90eXBlLm1ldGhvZCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIEBnZXRfcHJpdmF0
ZV9uYW1lKHRoaXMsIEBwcml2YXRlQnJhbmQpOworICAgICAgICAgICAgICAgIHJldHVybiAjbS5j
YWxsKHRoaXMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQyA9IGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgICAgIEBwdXRfcHJpdmF0ZV9uYW1lKHRoaXMsIEBwcml2YXRlQnJhbmQsIEBw
cml2YXRlQnJhbmQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgbGV0IGMg
PSBuZXcgQygpOworICAgICAgICBjb25zb2xlLmxvZyhjLm1ldGhvZCgpKTsgLy8gcHJpbnRzIDMK
KyAgICAgICAgYGBgCisKKyAgICAgICAgVGhlIGJyYW5kIGNoZWNrIGlzIHBlcmZvcm1lZCBieSBg
Z2V0X3ByaXZhdGVfbmFtZWAsIHdoZXJlIHdlIHJlLXVzZQorICAgICAgICB0aGUgbWVjaGFuaXNt
IGludHJvZHVjZWQgYnkgcHJpdmF0ZSBjbGFzcyBmaWVsZHMuIFdlIGNhbiBzZWUgdGhlCisgICAg
ICAgIHByaXZhdGUgYnJhbmQgYXMgYSBzcGVjaWFsIHByaXZhdGUgZmllbGQgaW5zdGFsbGVkIGR1
cmluZworICAgICAgICBgW1tDb25zdHJ1Y3RdXWAgb3BlcmF0aW9uLiBTaW5jZSB0aGUgcHJpdmF0
ZSBicmFuZCBpcyBhIHByaXZhdGUgZmllbGQsCisgICAgICAgIHdlIHRocm93IGBUeXBlRXJyb3Jg
IHdoZW4gdGhlIGxvb2t1cCBmYWlsLgorCisgICAgICAgIFRvIHByb3Blcmx5IHN0b3JlIHRoZSBw
cml2YXRlIGJyYW5kIG9mIGEgY2xhc3Mgb24gYWxsIG9iamVjdHMsCisgICAgICAgIGluY2x1ZGlu
ZyBQcm94aWVzLCB3ZSB1c2UgYHB1dF9wcml2YXRlX25hbWVgLiBUaGlzIGluc3RydWN0aW9uIHB1
dHMKKyAgICAgICAgdmFsdWUgb24gb2JqZWN0J3MgcHJvcGVydGllcyB3aXRob3V0IGV4ZWN1dGlu
ZyBbW1B1dF1dIHNlbWFudGljcy4KKyAgICAgICAgV2l0aCB0aGlzIGRlc2lnbiwgd2UgYXZvaWQg
YWxsb2NhdGluZyBhIGZpZWxkIGZvciBldmVyeSBpbnN0YW5jZQorICAgICAgICBvZiBhIGNsYXNz
LCBzaW5jZSBwcml2YXRlIG1ldGhvZHMgYXJlIHN0b3JlZCBvbiBjbGFzcworICAgICAgICBsZXhp
Y2FsIHNjb3BlLiBFdmVyeSBvYmplY3Qgd2lsbCBoYXZlIHRvIGFsbG9jYXRlIGl0cyBwcml2YXRl
CisgICAgICAgIGJyYW5kIGxpc3QuIFRoaXMgZGVzaWduIGluc2VydHMgbm8gb3ZlcmhlYWQgb24g
b2JqZWN0cyBhbmQgY2xhc3NlcworICAgICAgICB3aXRob3V0IHByaXZhdGUgbWV0aG9kcy9hY2Nl
c3Nvci4KKworICAgICAgICBSZXNvbHZpbmcgY29ycmVjdCBicmFuZCBjaGVjazoKKworICAgICAg
ICBJbiB0aGUgY2FzZSBvZiBzaGFkb3dpbmcgb3IgbmVzdGVkIHNjb3BlLCB3ZSBuZWVkIHRvIGVt
aXQgYnJhbmQKKyAgICAgICAgY2hlY2tzIHRvIHRoZSByaWdodCBwcml2YXRlIGJyYW5kLiBTZWUg
Y29kZSBiZWxvdzoKKworICAgICAgICBgYGAKKyAgICAgICAgY2xhc3MgQyB7CisgICAgICAgICAg
ICAjbSgpIHsgcmV0dXJuIDM7IH0KKyAgICAgICAgICAgIG1ldGhvZCgpIHsgcmV0dXJuIHRoaXMu
I20oKTt9CisKKyAgICAgICAgICAgIEEgPSBjbGFzcyB7CisgICAgICAgICAgICAgICAgI20yKCkg
eyByZXR1cm4gMzsgfQorICAgICAgICAgICAgICAgIGZvbyhvKSB7IHJldHVybiB0aGlzLiNtKCk7
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBgYGAKKworICAgICAgICBUaGUg
Y2FsbCBvZiAiI20iIGluIGBmb29gIHJlZmVycyB0byAiQzo6I20iLiBJbiBzdWNoIGNhc2UsIHdl
IG5lZWQgdG8KKyAgICAgICAgY2hlY2sgQydzIHByaXZhdGUgYnJhbmQsIGluc3RlYWQgb2YgQSdz
IHByaXZhdGUgYnJhbmQuCisgICAgICAgIFRvIHBlcmZvcm0gdGhlIHByb3BlciBjaGVjaywgd2Ug
Zmlyc3QgcmVzb2x2ZSBzY29wZSBvZiAiI20iIGFuZCB0aGVuCisgICAgICAgIGNoZWNrIHRoZSBw
cml2YXRlIGJyYW5kIG9mIHRoaXMgc2NvcGUgKHRoZSBzY29wZSB3aGVyZSB0aGUgcHJpdmF0ZQor
ICAgICAgICBtZXRob2QgYW5kIGJyYW5kIGFyZSBzdG9yZWQgaXMgdGhlIHNhbWUpLgorICAgICAg
ICBTbyB0aGUgYnl0ZWNvZGUgdG8gbG9va3VwIHRoZSByaWdodCBicmFuZCBpczoKKworICAgICAg
ICBgYGAKKyAgICAgICAgcmVzb2x2ZV9zY29wZSBsb2MxMCwgIiNtIgorICAgICAgICBnZXRfZnJv
bV9zY29wZSBsb2MxMSwgbG9jMTAsICJAcHJpdmF0ZUJyYW5kIgorICAgICAgICBnZXRfcHJpdmF0
ZV9uYW1lIGxvYzEyLCB0aGlzLCBsb2MxMQorICAgICAgICBnZXRfZnJvbV9zY29wZSBsb2MxMSwg
bG9jMTAsICIjbSIKKyAgICAgICAgLy8gc2V0dXAgY2FsbCBmcmFtZQorICAgICAgICBjYWxsIGxv
YzExLCAuLi4KKyAgICAgICAgLy8gLi4uCisgICAgICAgIGBgYAorCisgICAgICAgICogYnVpbHRp
bnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDoKKyAgICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFi
bGVzOjpjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpCdWlsdGluRXhl
Y3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUpOgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5F
eGVjdXRhYmxlcy5oOgorCisgICAgICAgIFdlIGFyZSBhZGRpbmcgYSBuZXcgcGFyYW1ldGVyIGBQ
cml2YXRlQnJhbmRSZXF1aXJlbWVudGAgdG8gcHJvcGFnYXRlCisgICAgICAgIHdoZW4gYSBkZWZh
dWx0IGNvbnN0cnVjdG9yIG5lZWRzIHRvIGVtaXQgY29kZSB0byBzZXR1cCBwcml2YXRlIGJyYW5k
CisgICAgICAgIG9uIGluc3RhbmNlcy4KKworICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1l
cy5oOgorCisgICAgICAgIEFkZGluZyBgQHByaXZhdGVCcmFuZGAgdGhhdCAgd2UgdXNlIHRvIHN0
b3JlIHByaXZhdGUgYnJhbmQgb24KKyAgICAgICAgY2xhc3MncyBzY29wZS4KKworICAgICAgICAq
IGJ5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZv
OjpFeGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjpwcml2YXRl
QnJhbmRSZXF1aXJlbWVudCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2Rl
QmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAg
IChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpwcml2YXRlQnJhbmRSZXF1aXJlbWVudCBjb25zdCk6
CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaDoKKyAgICAg
ICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6OnByaXZhdGVCcmFuZFJlcXVpcmVt
ZW50IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayk6
CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorCisg
ICAgICAgIFdlIGNoYW5nZWQgQnl0ZWNvZGVHZW5lcmF0b3IgZm9yIEZ1bmN0aW9uTm9kZSBhbmQg
RXZhbE5vZGUgdG8KKyAgICAgICAgcHJvcGFnYXRlIHBhcmVudFNjb3BlIFZhcmlhYmxlRW52aXJv
bm1lbnQuIFRoZXNlIGVudmlyb25tZW50cyBzdG9yZXMKKyAgICAgICAgcHJpdmF0ZSBuYW1lIGVu
dHJpZXMgdGhhdCBhcmUgdmlzaWJsZSBpbnRvIHRoZSBzY29wZSBvZiB0aGUKKyAgICAgICAgZnVu
Y3Rpb24vZXZhbCBpbiBhZGRpdGlvbiB0byBURFogdmFyaWFibGVzLgorICAgICAgICBUaGlzIGlz
IHJlcXVpcmVkIHRvIGlkZW50aWZ5IHRoZSBraW5kIG9mIGFjY2VzcyBhIHByaXZhdGUgbmFtZSBp
cworICAgICAgICByZWZlcnJpbmcgdG8sIHNpbmNlIGl0IGNhbiBiZSBhIHByaXZhdGUgZmllbGQg
b3IgYSBwcml2YXRlIG1ldGhvZC4KKyAgICAgICAgR2l2ZW4gdGhpcyBjaGFuZ2UsIHdlIGNoYW5n
ZWQgdGhlIG5hbWUgb2YgVmFyaWFibGVFbnZpcm9ubWVudAorICAgICAgICBmcm9tIGBwYXJlbnRT
Y29wZVREWlZhcmlhYmxlc2AgdG8gYHBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudGAuCisK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Omluc3RhbnRpYXRlTGV4aWNhbFZhcmlh
Ymxlcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0UHJpdmF0ZU5h
bWUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZVByaXZhdGVC
cmFuZCk6CisKKyAgICAgICAgVGhlIHByb2Nlc3MgdG8gY3JlYXRlIGEgcHJpdmF0ZSBicmFuZCBp
cyBhcyBmb2xsb3dzOgorICAgICAgICAgICAgMS4gQ3JlYXRlIGEgUHJpdmF0ZVN5bWJvbCB1c2lu
ZyBgQGNyZWF0ZVByaXZhdGVTeW1ib2xgLgorICAgICAgICAgICAgMi4gU3RvcmUgdGhpcyBzeW1i
b2wgaW50byBhIGdpdmVuIHNjb3BlIChpLmUgY2xhc3MgbGV4aWNhbCBzY29wZSkKKyAgICAgICAg
ICAgICAgIG9uIGBAcHJpdmF0ZUJyYW5kYCB2YXJpYWJsZS4KKworICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdEluc3RhbGxQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFByaXZhdGVCcmFuZCk6CisKKyAgICAgICAgV2UgYWRk
ZWQgYG1fcHJpdmF0ZU5hbWVzU3RhY2tgIHRvIEJ5dGVjb2RlR2VuZXJhdG9yIHRvIHJlcHJlc2Vu
dCB0aGUKKyAgICAgICAgc2NvcGUgY2hhaW4gb2YgYXZhaWxhYmxlIHByaXZhdGUgbmFtZXMgd2hp
bGUgZ2VuZXJhdGluZyBieXRlY29kZS4KKworICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdENoZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmlzUHJpdmF0ZU1ldGhvZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpw
dXNoUHJpdmF0ZUFjY2Vzc05hbWVzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OnBvcFByaXZhdGVBY2Nlc3NOYW1lcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjpnZXRBdmFpbGFibGVQcml2YXRlQWNjZXNzTmFtZXMpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6Z2V0VmFyaWFibGVzVW5kZXJURFopOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3SW5zdGFuY2VGaWVsZEluaXRpYWxpemVyRnVuY3Rpb24p
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdEdldEJ5VmFsKTog
RGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnByaXZhdGVCcmFuZFJlcXVpcmVtZW50IGNv
bnN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Om1ha2VGdW5jdGlvbik6CisK
KyAgICAgICAgVGhpcyBjaGFuZ2UgaXMgcmVxdWlyZWQgdG8gcHJvcGVybHkgcHJvcGFnYXRlIFBy
aXZhdGVCcmFuZFJlcXVpcmVtZW50CisgICAgICAgIHRvIGFycm93IGZ1bmN0aW9ucyB0aGF0IGNh
biBwb3RlbnRpYWxseSBjYWxsIGBzdXBlcigpYC4KKworICAgICAgICAqIGJ5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjplbWl0RGVj
bGFyZVByaXZhdGVGaWVsZE5hbWVzKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6
ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1dENv
bnN0YW50UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6ZW1pdEdldFByb3Bl
cnR5VmFsdWUpOgorCisgICAgICAgIEFkZGluZyBzdXBwb3J0IHRvIHByb3Blcmx5IGFjY2VzcyBw
cml2YXRlIG1ldGhvZC4gU2luY2Ugd2Ugc3RvcmUKKyAgICAgICAgcHJpdmF0ZSBtZXRob2RzIG9u
IGNsYXNzIGxleGljYWwgc2NvcGUsIHdlIG5lZWQgYSBkaWZmZXJlbnQgc2V0IG9mCisgICAgICAg
IGluc3RydWN0aW9ucyB0byBhY2Nlc3MgYSBwcml2YXRlIG1ldGhvZC4KKworICAgICAgICAoSlND
OjpCYXNlRG90Tm9kZTo6ZW1pdFB1dFByb3BlcnR5KToKKworICAgICAgICBJbiB0aGUgY2FzZSBv
ZiB3ZSB0cnlpbmcgdG8gd3JpdGUgaW4gYSBwcml2YXRlIG1ldGhvZCwgd2UgbmVlZCB0bworICAg
ICAgICB0aHJvdyBhIFR5cGVFcnJvciBhY2NvcmRpbmcgdG8gc3BlY2lmaWNhdGlvbgorICAgICAg
ICAoaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXByaXZhdGUtbWV0aG9kcy8jc2VjLXByaXZhdGVm
aWVsZHNldCkuCisKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsVmFsdWVOb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdERvdCk6CisgICAgICAgIChK
U0M6OlByZWZpeE5vZGU6OmVtaXREb3QpOgorICAgICAgICAoSlNDOjpDbGFzc0V4cHJOb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcDoK
KyAgICAgICAgKEpTQzo6RGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5z
aW9uKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChK
U0M6OmV2YWwpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkZ1
bmN0aW9uTWV0YWRhdGFOb2RlOjpGdW5jdGlvbk1ldGFkYXRhTm9kZSk6CisgICAgICAgICogcGFy
c2VyL05vZGVzLmg6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2Vy
Lmg6CisgICAgICAgIChKU0M6OlNjb3BlOjpkZWNsYXJlUHJpdmF0ZU1ldGhvZCk6CisgICAgICAg
IChKU0M6OlNjb3BlOjpkZWNsYXJlUHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKEpTQzo6U2NvcGU6
OmRlY2xhcmVQcml2YXRlTmFtZSk6IERlbGV0ZWQuCisgICAgICAgICogcGFyc2VyL1BhcnNlck1v
ZGVzLmg6CisgICAgICAgICogcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwOgorICAgICAg
ICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZU1ldGhvZCk6CisgICAg
ICAgIChKU0M6OkNvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50OjpDb21wYWN0VmFyaWFibGVFbnZp
cm9ubWVudCk6CisgICAgICAgIChKU0M6OkNvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50OjpvcGVy
YXRvcj09IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQ6
OnRvVmFyaWFibGVFbnZpcm9ubWVudCBjb25zdCk6CisgICAgICAgICogcGFyc2VyL1ZhcmlhYmxl
RW52aXJvbm1lbnQuaDoKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5Ojpp
c1ByaXZhdGVGaWVsZCBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnRF
bnRyeTo6aXNQcml2YXRlTWV0aG9kIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZp
cm9ubWVudEVudHJ5OjpzZXRJc1ByaXZhdGVGaWVsZCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxl
RW52aXJvbm1lbnRFbnRyeTo6c2V0SXNQcml2YXRlTWV0aG9kKToKKyAgICAgICAgKEpTQzo6UHJp
dmF0ZU5hbWVFbnRyeTo6aXNNZXRob2QgY29uc3QpOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFt
ZUVudHJ5Ojppc1ByaXZhdGVBY2Nlc3MgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVu
dmlyb25tZW50OjphZGRQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJv
bm1lbnQ6OmRlY2xhcmVQcml2YXRlRmllbGQpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmly
b25tZW50OjpkZWNsYXJlUHJpdmF0ZU1ldGhvZCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52
aXJvbm1lbnQ6Omhhc1ByaXZhdGVBY2Nlc3MgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJs
ZUVudmlyb25tZW50RW50cnk6OmlzUHJpdmF0ZU5hbWUgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OnNldElzUHJpdmF0ZU5hbWUpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZU5h
bWUpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAg
ICAoSlNDOjpDYWNoZWRDb2RlQmxvY2tSYXJlRGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6
Q2FjaGVkQ29kZUJsb2NrUmFyZURhdGE6OmRlY29kZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNh
Y2hlZEZ1bmN0aW9uRXhlY3V0YWJsZVJhcmVEYXRhOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpD
YWNoZWRGdW5jdGlvbkV4ZWN1dGFibGVSYXJlRGF0YTo6ZGVjb2RlIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6Q2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlOjpwcml2YXRlQnJhbmRSZXF1aXJlbWVudCBj
b25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZENvZGVCbG9jazo6ZGVyaXZlZENvbnRleHRUeXBl
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlOjplbmNvZGUp
OgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRDb2RlQmxvY2s6Om5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0Nv
ZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBs
KToKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpnZXRVbmxpbmtlZEdsb2JhbEZ1bmN0aW9uRXhl
Y3V0YWJsZSk6CisgICAgICAgICogcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHA6Cisg
ICAgICAgIChKU0M6OkRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlND
OjpEaXJlY3RFdmFsRXhlY3V0YWJsZTo6RGlyZWN0RXZhbEV4ZWN1dGFibGUpOgorICAgICAgICAq
IHJ1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0V2YWxF
eGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OkV2YWxFeGVjdXRh
YmxlKToKKyAgICAgICAgKiBydW50aW1lL0V2YWxFeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6
OkV2YWxFeGVjdXRhYmxlOjpleGVjdXRhYmxlSW5mbyBjb25zdCk6CisgICAgICAgIChKU0M6OkV2
YWxFeGVjdXRhYmxlOjpwcml2YXRlQnJhbmRSZXF1aXJlbWVudCBjb25zdCk6CisgICAgICAgICog
cnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlSW52YWxp
ZFByaXZhdGVOYW1lRXJyb3IpOgorICAgICAgICAqIHJ1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0
YWJsZS5jcHA6CisgICAgICAgIChKU0M6OkluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OkluZGlyZWN0
RXZhbEV4ZWN1dGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5jcHA6CisgICAgICAg
IChKU0M6OkpTU2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFopOgorICAgICAg
ICAqIHJ1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1l
L09wdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpPcHRpb25zOjpyZWNvbXB1dGVEZXBlbmRlbnRP
cHRpb25zKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnNMaXN0Lmg6CisgICAgICAgICogcnVu
dGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUu
Y3BwOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZTo6Y2xvbmVTY29wZVBhcnQpOgorICAgICAg
ICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuaDoKKwogMjAyMC0xMS0wMyAgWXVzdWtlIFN1enVraSAg
PHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGJ1aWxkIGZpeCBmb3Ig
QVJNNjRFIGRlYnVnIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCmluZGV4IDgzMDQ5NDRiYWM0My4uNGUxZDk5MjNh
NWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4
ZWN1dGFibGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bkV4ZWN1dGFibGVzLmNwcApAQCAtNTksNyArNTksNyBAQCBTb3VyY2VDb2RlIEJ1aWx0aW5FeGVj
dXRhYmxlczo6ZGVmYXVsdENvbnN0cnVjdG9yU291cmNlQ29kZShDb25zdHJ1Y3RvcktpbmQgY29u
cwogICAgIHJldHVybiBTb3VyY2VDb2RlKCk7CiB9CiAKLVVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZURlZmF1bHRDb25zdHJ1Y3RvcihDb25zdHJ1
Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcikKK1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZURlZmF1bHRDb25z
dHJ1Y3RvcihDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVy
JiBuYW1lLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpCiB7
CiAgICAgc3dpdGNoIChjb25zdHJ1Y3RvcktpbmQpIHsKICAgICBjYXNlIENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZToKQEAgLTY3LDcgKzY3LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1
aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yKENvbnN0cnUKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBDb25zdHJ1Y3RvcktpbmQ6OkJhc2U6CiAgICAgY2FzZSBDb25z
dHJ1Y3RvcktpbmQ6OkV4dGVuZHM6Ci0gICAgICAgIHJldHVybiBjcmVhdGVFeGVjdXRhYmxlKG1f
dm0sIGRlZmF1bHRDb25zdHJ1Y3RvclNvdXJjZUNvZGUoY29uc3RydWN0b3JLaW5kKSwgbmFtZSwg
Y29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3QsIG5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUV4ZWN1dGFibGUobV92
bSwgZGVmYXVsdENvbnN0cnVjdG9yU291cmNlQ29kZShjb25zdHJ1Y3RvcktpbmQpLCBuYW1lLCBj
b25zdHJ1Y3RvcktpbmQsIENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdCwgbmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KTsKICAgICB9CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC03OCw3ICs3OCw3
IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0
ZUJ1aWx0aW5FeGVjdXRhYmxlKGNvbnN0IFNvCiAgICAgcmV0dXJuIGNyZWF0ZUV4ZWN1dGFibGUo
bV92bSwgY29kZSwgbmFtZSwgY29uc3RydWN0b3JLaW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBOZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8pOwogfQogCi1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKFZNJiB2bSwgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBDb25zdHJ1Y3Rvcktp
bmQgY29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIE5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKQorVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0
YWJsZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgY29uc3QgSWRlbnRpZmllciYg
bmFtZSwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJpbGl0eSBj
b25zdHJ1Y3RBYmlsaXR5LCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWly
ZW1lbnQpCiB7CiAgICAgLy8gRklYTUU6IENhbiB3ZSBqdXN0IG1ha2UgTWV0YURhdGEgY29tcHV0
YXRpb24gYmUgY29uc3RleHByIGFuZCBoYXZlIHRoZSBjb21waWxlciBkbyB0aGlzIGZvciB1cz8K
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzMjcyCkBA
IC0yNTEsNyArMjUxLDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVj
dXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0IFMKICAgICAgICAgfQogICAg
IH0KIAotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUg
PSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBzb3VyY2UsICZtZXRhZGF0
YSwga2luZCwgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBX
VEY6Om51bGxvcHQsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgbmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIsIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKTsKKyAgICBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OmNyZWF0ZSh2bSwgc291cmNlLCAmbWV0YWRhdGEsIGtpbmQsIGNvbnN0cnVj
dEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgV1RGOjpudWxsb3B0LCBXVEY6
Om51bGxvcHQsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIsIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25z
dHJ1Y3Rvcik7CiAgICAgcmV0dXJuIGZ1bmN0aW9uRXhlY3V0YWJsZTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCmluZGV4
IDQ1MTYzOGU4NzNmNy4uNDNlMzgyNzViMWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCkBAIC01OCw5ICs1OCw5IEBAIFNv
dXJjZUNvZGUgbmFtZSMjU291cmNlKCk7CiAjdW5kZWYgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJM
RVMKIAogICAgIHN0YXRpYyBTb3VyY2VDb2RlIGRlZmF1bHRDb25zdHJ1Y3RvclNvdXJjZUNvZGUo
Q29uc3RydWN0b3JLaW5kKTsKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRl
RGVmYXVsdENvbnN0cnVjdG9yKENvbnN0cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFt
ZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoQ29uc3RydWN0b3JLaW5kLCBjb25zdCBJ
ZGVudGlmaWVyJiBuYW1lLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQpOwogCi0gICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBj
cmVhdGVFeGVjdXRhYmxlKFZNJiwgY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXIm
LCBDb25zdHJ1Y3RvcktpbmQsIENvbnN0cnVjdEFiaWxpdHksIE5lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyKTsKKyAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUV4
ZWN1dGFibGUoVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYsIENvbnN0
cnVjdG9yS2luZCwgQ29uc3RydWN0QWJpbGl0eSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIs
IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID0gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmUp
OwogCiAgICAgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXggOWI5YjY0ODgyMGFjLi5k
OWNiNDk3MGIwM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9C
dWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bk5hbWVzLmgKQEAgLTE3MSw2ICsxNzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyh3
ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbCkgXAogICAgIG1hY3JvKHdlYkFzc2Vt
Ymx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbCkgXAogICAgIG1hY3JvKGluc3RhbmNlRmll
bGRJbml0aWFsaXplcikgXAorICAgIG1hY3JvKHByaXZhdGVCcmFuZCkgXAogICAgIG1hY3JvKGhh
c093blByb3BlcnR5RnVuY3Rpb24pIFwKICAgICBtYWNybyhjcmVhdGVQcml2YXRlU3ltYm9sKQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRl
eCAwNTdiMzA3OGMyYjcuLjc2YzUxNzYwNjNhYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC01ODgsNiArNTg4LDI3IEBAIG9wIDpwdXRf
cHJpdmF0ZV9uYW1lLAogICAgICAgICBuZXdTdHJ1Y3R1cmVJRDogU3RydWN0dXJlSUQsCiAgICAg
fQogCitvcCA6c2V0X3ByaXZhdGVfYnJhbmQsCisgICAgYXJnczogeworICAgICAgICBiYXNlOiBW
aXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIGJyYW5kOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgfSwK
KyAgICBtZXRhZGF0YTogeworICAgICAgICBvbGRTdHJ1Y3R1cmVJRDogU3RydWN0dXJlSUQsCisg
ICAgICAgIG5ld1N0cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJRCwKKyAgICAgICAgYnJhbmQ6IFdyaXRl
QmFycmllcltKU0NlbGxdLAorICAgIH0KKworb3AgOmNoZWNrX3ByaXZhdGVfYnJhbmQsCisgICAg
YXJnczogeworICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIGJyYW5kOiBW
aXJ0dWFsUmVnaXN0ZXIsCisgICAgfSwKKyAgICBtZXRhZGF0YTogeworICAgICAgICBzdHJ1Y3R1
cmVJRDogU3RydWN0dXJlSUQsCisgICAgfQorICAgIAorCiBvcCA6cHV0X2J5X3ZhbCwKICAgICBh
cmdzOiB7CiAgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCmluZGV4IDQ2MGU5NzMwMTY2
OS4uMjdmMTkyNDhjOGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5jcHAKQEAgLTIyOCw2ICsyMjgsOCBAQCB2b2lkIGNvbXB1dGVVc2Vz
Rm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0
IEluc3RydQogICAgIFVTRVMoT3BHZXRCeVZhbCwgYmFzZSwgcHJvcGVydHkpCiAgICAgVVNFUyhP
cEdldFByaXZhdGVOYW1lLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wUHV0UHJpdmF0ZU5h
bWUsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSkKKyAgICBVU0VTKE9wU2V0UHJpdmF0ZUJyYW5kLCBi
YXNlLCBicmFuZCkKKyAgICBVU0VTKE9wQ2hlY2tQcml2YXRlQnJhbmQsIGJhc2UsIGJyYW5kKQog
ICAgIFVTRVMoT3BJbkJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wT3ZlcnJpZGVz
SGFzSW5zdGFuY2UsIGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZVZhbHVlKQogICAgIFVTRVMoT3BJ
bnN0YW5jZW9mLCB2YWx1ZSwgcHJvdG90eXBlKQpAQCAtMzk3LDYgKzM5OSw4IEBAIHZvaWQgY29t
cHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJzLCBjb25zdCBJbnN0
cnVjdGlvbiogaW5zdHJ1CiAgICAgY2FzZSBvcF9wdXRfYnlfdmFsOgogICAgIGNhc2Ugb3BfcHV0
X2J5X3ZhbF9kaXJlY3Q6CiAgICAgY2FzZSBvcF9wdXRfcHJpdmF0ZV9uYW1lOgorICAgIGNhc2Ug
b3Bfc2V0X3ByaXZhdGVfYnJhbmQ6CisgICAgY2FzZSBvcF9jaGVja19wcml2YXRlX2JyYW5kOgog
ICAgIGNhc2Ugb3BfcHV0X2ludGVybmFsX2ZpZWxkOgogICAgIGNhc2Ugb3BfZGVmaW5lX2RhdGFf
cHJvcGVydHk6CiAgICAgY2FzZSBvcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHk6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDkxNzU1ZWRlNmFj
OC4uMzc3MWIwMTg1ZWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcApAQCAtNTQ0LDYgKzU0NCw5IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAg
ICAgICAgIExJTksoT3BQdXRCeVZhbERpcmVjdCkKICAgICAgICAgTElOSyhPcFB1dFByaXZhdGVO
YW1lKQogCisgICAgICAgIExJTksoT3BTZXRQcml2YXRlQnJhbmQpCisgICAgICAgIExJTksoT3BD
aGVja1ByaXZhdGVCcmFuZCkKKwogICAgICAgICBMSU5LKE9wTmV3QXJyYXkpCiAgICAgICAgIExJ
TksoT3BOZXdBcnJheVdpdGhTaXplKQogICAgICAgICBMSU5LKE9wTmV3QXJyYXlCdWZmZXIsIGFy
cmF5QWxsb2NhdGlvblByb2ZpbGUpCkBAIC0xMzM4LDYgKzEzNDEsMzAgQEAgdm9pZCBDb2RlQmxv
Y2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQogICAgICAgICAgICAgbWV0YWRhdGEubV9w
cm9wZXJ0eS5jbGVhcigpOwogICAgICAgICB9KTsKIAorICAgICAgICBtX21ldGFkYXRhLT5mb3JF
YWNoPE9wU2V0UHJpdmF0ZUJyYW5kPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAg
ICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQ7
CisgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBuZXdTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbmV3
U3RydWN0dXJlSUQ7CisgICAgICAgICAgICBKU0NlbGwqIGJyYW5kID0gbWV0YWRhdGEubV9icmFu
ZC5nZXQoKTsKKyAgICAgICAgICAgIGlmICgoIW9sZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNN
YXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKSkpCisg
ICAgICAgICAgICAgICAgJiYgKCFicmFuZCB8fCB2bS5oZWFwLmlzTWFya2VkKGJyYW5kKSkKKyAg
ICAgICAgICAgICAgICAmJiAoIW5ld1N0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0u
aGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG5ld1N0cnVjdHVyZUlEKSkpKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9z
ZU9TUigpLCAiQ2xlYXJpbmcgTExJbnQgc2V0X3ByaXZhdGVfYnJhbmQgdHJhbnNpdGlvbi4iKTsK
KyAgICAgICAgICAgIG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQgPSAwOworICAgICAgICAgICAg
bWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgICAgICBtZXRhZGF0YS5tX2Jy
YW5kLmNsZWFyKCk7CisgICAgICAgIH0pOworCisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8
T3BDaGVja1ByaXZhdGVCcmFuZD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeworICAgICAgICAgICAg
U3RydWN0dXJlSUQgc3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX3N0cnVjdHVyZUlEOworICAgICAg
ICAgICAgaWYgKCFzdHJ1Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAuc3RydWN0
dXJlSURUYWJsZSgpLmdldChzdHJ1Y3R1cmVJRCkpKQorICAgICAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiQ2xlYXJp
bmcgTExJbnQgc2V0X3ByaXZhdGVfYnJhbmQgdHJhbnNpdGlvbi4iKTsKKyAgICAgICAgICAgIG1l
dGFkYXRhLm1fc3RydWN0dXJlSUQgPSAwOworICAgICAgICB9KTsKKwogICAgICAgICBtX21ldGFk
YXRhLT5mb3JFYWNoPE9wVG9UaGlzPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CiAgICAgICAgICAg
ICBpZiAoIW1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2
bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJ
RCkpKQogICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKaW5kZXggNDllZGQ1Mjg1ZDVjLi5jZDU5ZmI0YTcz
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxl
SW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5m
by5oCkBAIC0zNiw5ICszNiwxMCBAQCBlbnVtIGNsYXNzIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyIDogdWludDhfdCB7IE5vLCBZZXMgfTsKIC8vIEZJWE1FOiBUaGVzZSBmbGFncywgUGFyc2Vy
TW9kZXMgYW5kIHByb3BhZ2F0aW9uIHRvIFhYWENvZGVCbG9ja3Mgc2hvdWxkIGJlIHJlb3JnYW5p
emVkLgogLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0Nwog
c3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKLSAgICBFeGVjdXRhYmxlSW5mbyhib29sIHVzZXNFdmFs
LCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24sIENvbnN0cnVjdG9y
S2luZCBjb25zdHJ1Y3RvcktpbmQsIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBTdXBl
ckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBEZXJpdmVk
Q29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
ciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0
LCBib29sIGlzQ2xhc3NDb250ZXh0LCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKQor
ICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNDb25zdHJ1Y3RvciwgUHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGJvb2wgaXNCdWls
dGluRnVuY3Rpb24sIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIEpTUGFyc2VyU2Ny
aXB0TW9kZSBzY3JpcHRNb2RlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBTb3VyY2VQYXJz
ZU1vZGUgcGFyc2VNb2RlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBO
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9v
bCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzQ2xhc3NDb250ZXh0LCBFdmFsQ29udGV4
dFR5cGUgZXZhbENvbnRleHRUeXBlKQogICAgICAgICA6IG1fdXNlc0V2YWwodXNlc0V2YWwpCiAg
ICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3RydWN0b3IpCisgICAgICAgICwgbV9wcml2
YXRlQnJhbmRSZXF1aXJlbWVudChzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQpKQogICAgICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oaXNCdWlsdGluRnVuY3Rp
b24pCiAgICAgICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNv
bnN0cnVjdG9yS2luZCkpCiAgICAgICAgICwgbV9zdXBlckJpbmRpbmcoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHN1cGVyQmluZGluZykpCkBAIC01Nyw2ICs1OCw3IEBAIHN0cnVjdCBFeGVjdXRhYmxl
SW5mbyB7CiAKICAgICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV91c2VzRXZhbDsg
fQogICAgIGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNDb25zdHJ1Y3Rv
cjsgfQorICAgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ+KG1f
cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOyB9CiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KICAgICBDb25zdHJ1Y3Rvcktp
bmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0
b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KICAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5k
aW5nKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1cGVyQmlu
ZGluZyk7IH0KQEAgLTcxLDYgKzczLDcgQEAgc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKIHByaXZh
dGU6CiAgICAgdW5zaWduZWQgbV91c2VzRXZhbCA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0NvbnN0
cnVjdG9yIDogMTsKKyAgICB1bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsK
ICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2Nv
bnN0cnVjdG9yS2luZCA6IDI7CiAgICAgdW5zaWduZWQgbV9zdXBlckJpbmRpbmcgOiAxOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5j
cHAKaW5kZXggYjNhZGMwYjc3ZWI3Li45M2RmZjc3NDJkMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtNjksNiAr
NjksMTAgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUKICAgICAgICAgY3JlYXRlUmFyZURhdGFJ
Zk5lY2Vzc2FyeShob2xkTG9jayhjZWxsTG9jaygpKSk7CiAgICAgICAgIG1fcmFyZURhdGEtPm1f
bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Olllcyk7CiAgICAgfQorICAgIGlmIChpbmZvLnByaXZhdGVC
cmFuZFJlcXVpcmVtZW50KCkgPT0gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5lZWRlZCkgewor
ICAgICAgICBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KGhvbGRMb2NrKGNlbGxMb2NrKCkpKTsK
KyAgICAgICAgbV9yYXJlRGF0YS0+bV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6TmVlZGVkKTsKKyAgICB9CiB9
CiAKIHZvaWQgVW5saW5rZWRDb2RlQmxvY2s6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggMDBkYzYxNjMzNWZkLi4xZjUxZWNlNWQ2Zjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5oCkBAIC0yNjYsNiArMjY2LDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIE5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyOjpObzsKICAgICB9CiAKKyAgICBQcml2YXRlQnJhbmRSZXF1
aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpIGNvbnN0CisgICAgeworICAgICAgICBp
ZiAobV9yYXJlRGF0YSkKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxQcml2YXRlQnJh
bmRSZXF1aXJlbWVudD4obV9yYXJlRGF0YS0+bV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7Cisg
ICAgICAgIHJldHVybiBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZTsKKyAgICB9CisKICAg
ICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKIAogICAgIEJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpcyYgbGl2ZW5lc3NBbmFseXNpcyhDb2RlQmxvY2sqIGNvZGVCbG9jaykKQEAgLTQwNyw2
ICs0MTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJlZkNvdW50ZWRBcnJheTxDb25zdGFudElkZW50
aWZpZXJTZXRFbnRyeT4gbV9jb25zdGFudElkZW50aWZpZXJTZXRzOwogCiAgICAgICAgIHVuc2ln
bmVkIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgOiAxOworICAgICAgICB1bnNpZ25lZCBt
X3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsKICAgICB9OwogCiAgICAgaW50IG91dE9mTGlu
ZUp1bXBPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRv
ci5oCmluZGV4IDJlYjk4NGMxYjA1YS4uOTRjNjg3MGU5OTRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0
b3IuaApAQCAtNTAsNiArNTAsNyBAQCBwdWJsaWM6CiAgICAgU3VwZXJCaW5kaW5nIHN1cGVyQmlu
ZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5zdXBlckJpbmRpbmcoKTsgfQogICAg
IEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxv
Y2stPnNjcmlwdE1vZGUoKTsgfQogICAgIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPm5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyKCk7IH0KKyAgICBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBw
cml2YXRlQnJhbmRSZXF1aXJlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5wcml2
YXRlQnJhbmRSZXF1aXJlbWVudCgpOyB9CiAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0
dXJuIG1fY29kZUJsb2NrLT51c2VzRXZhbCgpOyB9CiAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNl
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5wYXJzZU1vZGUoKTsgfQogICAgIGJv
b2wgaXNBcnJvd0Z1bmN0aW9uKCkgeyByZXR1cm4gbV9jb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlv
bigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCA2YjM3MWY1Mzk1N2EuLjY4MjE0
MTAxMDQzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC03MCwxMSArNzAsMTIgQEAg
c3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jaygKIAogICAgIGJvb2wgaXNDbGFzc0NvbnRleHQgPSBleGVjdXRhYmxlLT5zdXBl
ckJpbmRpbmcoKSA9PSBTdXBlckJpbmRpbmc6Ok5lZWRlZDsKIAotICAgIFVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2sqIHJlc3VsdCA9IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSh2
bSwgRnVuY3Rpb25Db2RlLCBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+dXNlc0V2YWwoKSwga2lu
ZCA9PSBDb2RlRm9yQ29uc3RydWN0LCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVu
Y3Rpb24sIGV4ZWN1dGFibGUtPmNvbnN0cnVjdG9yS2luZCgpLCBzY3JpcHRNb2RlLCBleGVjdXRh
YmxlLT5zdXBlckJpbmRpbmcoKSwgcGFyc2VNb2RlLCBleGVjdXRhYmxlLT5kZXJpdmVkQ29udGV4
dFR5cGUoKSwgZXhlY3V0YWJsZS0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgZmFsc2Us
IGlzQ2xhc3NDb250ZXh0LCBFdmFsQ29udGV4dFR5cGU6OkZ1bmN0aW9uRXZhbENvbnRleHQpLCBj
b2RlR2VuZXJhdGlvbk1vZGUpOworICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3Vs
dCA9IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSh2bSwgRnVuY3Rpb25Db2RlLCBF
eGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+dXNlc0V2YWwoKSwga2luZCA9PSBDb2RlRm9yQ29uc3Ry
dWN0LCBleGVjdXRhYmxlLT5wcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpLCBmdW5jdGlvbktpbmQg
PT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24sIGV4ZWN1dGFibGUtPmNvbnN0cnVjdG9yS2luZCgp
LCBzY3JpcHRNb2RlLCBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSwgcGFyc2VNb2RlLCBleGVj
dXRhYmxlLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgZXhlY3V0YWJsZS0+bmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIoKSwgZmFsc2UsIGlzQ2xhc3NDb250ZXh0LCBFdmFsQ29udGV4dFR5cGU6OkZ1
bmN0aW9uRXZhbENvbnRleHQpLCBjb2RlR2VuZXJhdGlvbk1vZGUpOwogCiAgICAgYXV0byBwYXJl
bnRTY29wZVREWlZhcmlhYmxlcyA9IGV4ZWN1dGFibGUtPnBhcmVudFNjb3BlVERaVmFyaWFibGVz
KCk7CisgICAgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCBwYXJlbnRQcml2YXRlTmFtZUVudmlyb25t
ZW50ID0gZXhlY3V0YWJsZS0+cGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCgpOwogICAgIEVD
TUFNb2RlIGVjbWFNb2RlID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEVDTUFN
b2RlOjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpzbG9wcHkoKTsKLSAgICBlcnJvciA9IEJ5dGVjb2Rl
R2VuZXJhdG9yOjpnZW5lcmF0ZSh2bSwgZnVuY3Rpb24uZ2V0KCksIHNvdXJjZSwgcmVzdWx0LCBj
b2RlR2VuZXJhdGlvbk1vZGUsIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBlY21hTW9kZSk7Cisg
ICAgZXJyb3IgPSBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUodm0sIGZ1bmN0aW9uLmdldCgp
LCBzb3VyY2UsIHJlc3VsdCwgY29kZUdlbmVyYXRpb25Nb2RlLCBwYXJlbnRTY29wZVREWlZhcmlh
YmxlcywgJnBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQsIGVjbWFNb2RlKTsKIAogICAgIGlm
IChlcnJvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtODIsNyArODMs
NyBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrKAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBwYXJlbnRTb3VyY2UsIEZ1bmN0aW9uTWV0
YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBraW5kLCBDb25zdHJ1Y3RBYmls
aXR5IGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBPcHRp
b25hbDxWZWN0b3I8Q29tcGFjdFREWkVudmlyb25tZW50TWFwOjpIYW5kbGU+PiBwYXJlbnRTY29w
ZVREWlZhcmlhYmxlcywgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wg
aXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IpCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgY29uc3QgU291cmNlQ29kZSYgcGFyZW50U291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9k
ZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQga2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25z
dHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgT3B0aW9uYWw8VmVj
dG9yPENvbXBhY3RURFpFbnZpcm9ubWVudE1hcDo6SGFuZGxlPj4gcGFyZW50U2NvcGVURFpWYXJp
YWJsZXMsIE9wdGlvbmFsPFByaXZhdGVOYW1lRW52aXJvbm1lbnQ+IHBhcmVudFByaXZhdGVOYW1l
RW52aXJvbm1lbnQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCAgUHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGJvb2wgaXNCdWlsdGlu
RGVmYXVsdENsYXNzQ29uc3RydWN0b3IpCiAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCiAgICAg
LCBtX2ZpcnN0TGluZU9mZnNldChub2RlLT5maXJzdExpbmUoKSAtIHBhcmVudFNvdXJjZS5maXJz
dExpbmUoKS5vbmVCYXNlZEludCgpKQogICAgICwgbV9pc0luU3RyaWN0Q29udGV4dChub2RlLT5p
c0luU3RyaWN0Q29udGV4dCgpKQpAQCAtMTAzLDYgKzEwNCw3IEBAIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0CiAgICAgLCBtX3R5cGVQcm9maWxpbmdTdGFydE9mZnNldChub2RlLT5mdW5jdGlvbktl
eXdvcmRTdGFydCgpKQogICAgICwgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KG5vZGUtPnN0YXJ0
U3RhcnRPZmZzZXQoKSArIG5vZGUtPnNvdXJjZSgpLmxlbmd0aCgpIC0gMSkKICAgICAsIG1fcGFy
YW1ldGVyQ291bnQobm9kZS0+cGFyYW1ldGVyQ291bnQoKSkKKyAgICAsIG1fcHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHByaXZhdGVCcmFuZFJlcXVpcmVtZW50
KSkKICAgICAsIG1fZmVhdHVyZXMoMCkKICAgICAsIG1fc291cmNlUGFyc2VNb2RlKG5vZGUtPnBh
cnNlTW9kZSgpKQogICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSkKQEAgLTEyMiwxMiArMTI0LDE1IEBAIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0CiAgICAgQVNTRVJUKG1fc2NyaXB0TW9kZSA9PSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oc2NyaXB0TW9kZSkpOwogICAgIEFTU0VSVChtX3N1cGVyQmluZGluZyA9PSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+c3VwZXJCaW5kaW5nKCkpKTsKICAgICBBU1NFUlQobV9k
ZXJpdmVkQ29udGV4dFR5cGUgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlcml2ZWRDb250ZXh0
VHlwZSkpOworICAgIEFTU0VSVChtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID09IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihwcml2YXRlQnJhbmRSZXF1aXJlbWVudCkpOwogICAgIEFTU0VSVCghKG1f
aXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IgJiYgY29uc3RydWN0b3JLaW5kKCkgPT0g
Q29uc3RydWN0b3JLaW5kOjpOb25lKSk7CiAgICAgQVNTRVJUKCFtX25lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyIHx8IChpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIHx8IGRlcml2ZWRDb250
ZXh0VHlwZSA9PSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQp
KTsKICAgICBpZiAoIW5vZGUtPmNsYXNzU291cmNlKCkuaXNOdWxsKCkpCiAgICAgICAgIHNldENs
YXNzU291cmNlKG5vZGUtPmNsYXNzU291cmNlKCkpOwogICAgIGlmIChwYXJlbnRTY29wZVREWlZh
cmlhYmxlcykKICAgICAgICAgZW5zdXJlUmFyZURhdGEoKS5tX3BhcmVudFNjb3BlVERaVmFyaWFi
bGVzID0gV1RGTW92ZSgqcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOworICAgIGlmIChwYXJlbnRQ
cml2YXRlTmFtZUVudmlyb25tZW50KQorICAgICAgICBlbnN1cmVSYXJlRGF0YSgpLm1fcGFyZW50
UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCA9IFdURk1vdmUoKnBhcmVudFByaXZhdGVOYW1lRW52aXJv
bm1lbnQpOwogfQogCiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6flVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKaW5kZXggYjYyN2VhYjdjNmRiLi45
NWFhZTg2YjM1NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCkBAIC03MCwxMCArNzAsMTAgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gJnZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3Bh
Y2Uuc3BhY2U7CiAgICAgfQogCi0gICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiBjcmVhdGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uTWV0YWRh
dGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwg
Q29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUgc2Ny
aXB0TW9kZSwgT3B0aW9uYWw8VmVjdG9yPENvbXBhY3RURFpFbnZpcm9ubWVudE1hcDo6SGFuZGxl
Pj4gcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29u
dGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyLCBib29sIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yID0gZmFsc2UpCisg
ICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0mIHZtLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtl
ZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25z
dHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgT3B0aW9uYWw8VmVj
dG9yPENvbXBhY3RURFpFbnZpcm9ubWVudE1hcDo6SGFuZGxlPj4gcGFyZW50U2NvcGVURFpWYXJp
YWJsZXMsIE9wdGlvbmFsPFByaXZhdGVOYW1lRW52aXJvbm1lbnQ+IHBhcmVudFByaXZhdGVOYW1l
RW52aXJvbm1lbnQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRl
QnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCwgYm9vbCBpc0J1aWx0aW5E
ZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvciA9IGZhbHNlKQogICAgIHsKICAgICAgICAgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLmhlYXApKQotICAgICAgICAgICAgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3Ry
dWN0dXJlLmdldCgpLCBzb3VyY2UsIG5vZGUsIHVubGlua2VkRnVuY3Rpb25LaW5kLCBjb25zdHJ1
Y3RBYmlsaXR5LCBzY3JpcHRNb2RlLCBXVEZNb3ZlKHBhcmVudFNjb3BlVERaVmFyaWFibGVzKSwg
ZGVyaXZlZENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgaXNCdWlsdGlu
RGVmYXVsdENsYXNzQ29uc3RydWN0b3IpOworICAgICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUodm0sIHZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgp
LCBzb3VyY2UsIG5vZGUsIHVubGlua2VkRnVuY3Rpb25LaW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBz
Y3JpcHRNb2RlLCBXVEZNb3ZlKHBhcmVudFNjb3BlVERaVmFyaWFibGVzKSwgV1RGTW92ZShwYXJl
bnRQcml2YXRlTmFtZUVudmlyb25tZW50KSwgZGVyaXZlZENvbnRleHRUeXBlLCBuZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplciwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGlzQnVpbHRpbkRlZmF1
bHRDbGFzc0NvbnN0cnVjdG9yKTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZt
KTsKICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KQEAgLTE0Myw2ICsxNDMsOCBAQCBw
dWJsaWM6CiAgICAgQ29kZUZlYXR1cmVzIGZlYXR1cmVzKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0
dXJlczsgfQogICAgIGJvb2wgaGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiBt
X2hhc0NhcHR1cmVkVmFyaWFibGVzOyB9CiAKKyAgICBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBw
cml2YXRlQnJhbmRSZXF1aXJlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFByaXZh
dGVCcmFuZFJlcXVpcmVtZW50PihtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50KTsgfQorCiAgICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwogICAgIHN0YXRp
YyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKQEAgLTE3NCw2ICsxNzYsMTMgQEAgcHVibGljOgog
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fcGFy
ZW50U2NvcGVURFpWYXJpYWJsZXM7CiAgICAgfQorCisgICAgUHJpdmF0ZU5hbWVFbnZpcm9ubWVu
dCBwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIGlm
ICghbV9yYXJlRGF0YSkKKyAgICAgICAgICAgIHJldHVybiBQcml2YXRlTmFtZUVudmlyb25tZW50
KCk7CisgICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX3BhcmVudFByaXZhdGVOYW1lRW52aXJv
bm1lbnQ7CisgICAgfQogICAgIAogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gaXNBcnJvd0Z1bmN0aW9uUGFyc2VNb2RlKHBhcnNlTW9kZSgpKTsgfQogCkBAIC0yMDks
NiArMjE4LDcgQEAgcHVibGljOgogICAgICAgICBTdHJpbmcgbV9zb3VyY2VVUkxEaXJlY3RpdmU7
CiAgICAgICAgIFN0cmluZyBtX3NvdXJjZU1hcHBpbmdVUkxEaXJlY3RpdmU7CiAgICAgICAgIFZl
Y3RvcjxDb21wYWN0VERaRW52aXJvbm1lbnRNYXA6OkhhbmRsZT4gbV9wYXJlbnRTY29wZVREWlZh
cmlhYmxlczsKKyAgICAgICAgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCBtX3BhcmVudFByaXZhdGVO
YW1lRW52aXJvbm1lbnQ7CiAgICAgICAgIFZlY3RvcjxKU1RleHRQb3NpdGlvbj4gbV9pbnN0YW5j
ZUZpZWxkTG9jYXRpb25zOwogICAgIH07CiAKQEAgLTIyOSw3ICsyMzksNyBAQCBwdWJsaWM6CiAg
ICAgfQogCiBwcml2YXRlOgotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNJiwgU3Ry
dWN0dXJlKiwgY29uc3QgU291cmNlQ29kZSYsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgVW5saW5r
ZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZSwgT3B0
aW9uYWw8VmVjdG9yPENvbXBhY3RURFpFbnZpcm9ubWVudE1hcDo6SGFuZGxlPj4sICBKU0M6OkRl
cml2ZWRDb250ZXh0VHlwZSwgSlNDOjpOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBp
c0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3Rvcik7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUoVk0mLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgRnVuY3Rpb25NZXRh
ZGF0YU5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSwgSlNQYXJz
ZXJTY3JpcHRNb2RlLCBPcHRpb25hbDxWZWN0b3I8Q29tcGFjdFREWkVudmlyb25tZW50TWFwOjpI
YW5kbGU+PiwgT3B0aW9uYWw8UHJpdmF0ZU5hbWVFbnZpcm9ubWVudD4sICBKU0M6OkRlcml2ZWRD
b250ZXh0VHlwZSwgSlNDOjpOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQsIGJvb2wgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IpOwogICAg
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKERlY29kZXImLCBjb25zdCBDYWNoZWRGdW5jdGlv
bkV4ZWN1dGFibGUmKTsKIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwg
U2xvdFZpc2l0b3ImKTsKQEAgLTI2MSw3ICsyNzEsOCBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVk
IG1faXNDYWNoZWQgOiAxOwogICAgIHVuc2lnbmVkIG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0
OwogICAgIHVuc2lnbmVkIG1fdHlwZVByb2ZpbGluZ0VuZE9mZnNldDsKLSAgICB1bnNpZ25lZCBt
X3BhcmFtZXRlckNvdW50OworICAgIHVuc2lnbmVkIG1fcGFyYW1ldGVyQ291bnQgOiAzMTsKKyAg
ICB1bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsKICAgICBDb2RlRmVhdHVy
ZXMgbV9mZWF0dXJlczsKICAgICBTb3VyY2VQYXJzZU1vZGUgbV9zb3VyY2VQYXJzZU1vZGU7CiAg
ICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBj
OWU1ZWE2NmY5MmEuLjc2OWU4N2Y4YjlmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTI4OSw3ICsy
ODksNyBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgIHJl
dHVybiBQYXJzZXJFcnJvcihQYXJzZXJFcnJvcjo6RXJyb3JOb25lKTsKIH0KIAotQnl0ZWNvZGVH
ZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1O
b2RlLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVH
ZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBDYWNoZWRURFpTdGFjayYg
cGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIEVDTUFNb2RlIGVjbWFNb2RlKQorQnl0ZWNvZGVHZW5l
cmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2Rl
LCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5l
cmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBDYWNoZWRURFpTdGFjayYgcGFy
ZW50U2NvcGVURFpWYXJpYWJsZXMsIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqLCBFQ01B
TW9kZSBlY21hTW9kZSkKICAgICA6IEJ5dGVjb2RlR2VuZXJhdG9yQmFzZShtYWtlVW5pcXVlPFVu
bGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yPih2bSwgY29kZUJsb2NrKSwgQ29kZUJsb2NrOjpsbGlu
dEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkpCiAgICAgLCBtX2Nv
ZGVHZW5lcmF0aW9uTW9kZShjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAgLCBtX3Njb3BlTm9kZShw
cm9ncmFtTm9kZSkKQEAgLTMzNiw3ICszMzYsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IoVk0mIHZtLCBQcm9ncmFtTm9kZSogcHJvZ3JhbU5vZGUsIFVubGlua2VkUAog
ICAgIH0KIH0KIAotQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwg
RnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGNv
ZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2Rl
LCBjb25zdCBDYWNoZWRURFpTdGFjayYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIEVDTUFNb2Rl
IGVjbWFNb2RlKQorQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwg
RnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGNv
ZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2Rl
LCBjb25zdCBDYWNoZWRURFpTdGFjayYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIGNvbnN0IFBy
aXZhdGVOYW1lRW52aXJvbm1lbnQqIHBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQsIEVDTUFN
b2RlIGVjbWFNb2RlKQogICAgIDogQnl0ZWNvZGVHZW5lcmF0b3JCYXNlKG1ha2VVbmlxdWU8VW5s
aW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I+KHZtLCBjb2RlQmxvY2spLCBDb2RlQmxvY2s6OmxsaW50
QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSkKICAgICAsIG1fY29k
ZUdlbmVyYXRpb25Nb2RlKGNvZGVHZW5lcmF0aW9uTW9kZSkKICAgICAsIG1fc2NvcGVOb2RlKGZ1
bmN0aW9uTm9kZSkKQEAgLTM1OSw2ICszNTksOCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQog
ICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKICAgICAsIG1fZGVyaXZlZENvbnRleHRUeXBlKGNv
ZGVCbG9jay0+ZGVyaXZlZENvbnRleHRUeXBlKCkpCiB7CisgICAgcHVzaFByaXZhdGVBY2Nlc3NO
YW1lcyhwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50KTsKKwogICAgIFN5bWJvbFRhYmxlKiBm
dW5jdGlvblN5bWJvbFRhYmxlID0gU3ltYm9sVGFibGU6OmNyZWF0ZShtX3ZtKTsKICAgICBmdW5j
dGlvblN5bWJvbFRhYmxlLT5zZXRVc2VzTm9uU3RyaWN0RXZhbChtX3VzZXNOb25TdHJpY3RFdmFs
KTsKICAgICBpbnQgc3ltYm9sVGFibGVDb25zdGFudEluZGV4ID0gMDsKQEAgLTcwOCw4ICs3MTAs
MTIgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rp
b25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAgICAgICAgICAgICBjYXNlIENvbnN0
cnVjdG9yS2luZDo6Tm9uZToKICAgICAgICAgICAgICAgICBjYXNlIENvbnN0cnVjdG9yS2luZDo6
QmFzZToKICAgICAgICAgICAgICAgICAgICAgZW1pdENyZWF0ZVRoaXMoJm1fdGhpc1JlZ2lzdGVy
KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVByaXZhdGVNZXRob2RzKCkg
JiYgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSA9PSBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6
TmVlZGVkKQorICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEluc3RhbGxQcml2YXRlQnJhbmQo
Jm1fdGhpc1JlZ2lzdGVyKTsKKwogICAgICAgICAgICAgICAgICAgICBpZiAoT3B0aW9uczo6dXNl
UHVibGljQ2xhc3NGaWVsZHMoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRJbnN0YW5j
ZUZpZWxkSW5pdGlhbGl6YXRpb25JZk5lZWRlZCgmbV90aGlzUmVnaXN0ZXIsICZtX2NhbGxlZVJl
Z2lzdGVyLCBtX3Njb3BlTm9kZS0+cG9zaXRpb24oKSwgbV9zY29wZU5vZGUtPnBvc2l0aW9uKCks
IG1fc2NvcGVOb2RlLT5wb3NpdGlvbigpKTsKKwogICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICBjYXNlIENvbnN0cnVjdG9yS2luZDo6RXh0ZW5kczoKICAgICAgICAg
ICAgICAgICAgICAgbW92ZUVtcHR5VmFsdWUoJm1fdGhpc1JlZ2lzdGVyKTsKQEAgLTg0MCw3ICs4
NDYsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5j
dGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIHB1c2hMZXhpY2FsU2NvcGUobV9z
Y29wZU5vZGUsIFREWkNoZWNrT3B0aW1pemF0aW9uOjpPcHRpbWl6ZSwgTmVzdGVkU2NvcGVUeXBl
OjpJc05vdE5lc3RlZCwgbnVsbHB0ciwgc2hvdWxkSW5pdGlhbGl6ZUJsb2NrU2NvcGVkRnVuY3Rp
b25zKTsKIH0KIAotQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwg
RXZhbE5vZGUqIGV2YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0
aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBDYWNo
ZWRURFpTdGFjayYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIEVDTUFNb2RlIGVjbWFNb2RlKQor
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2
YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVH
ZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBDYWNoZWRURFpTdGFjayYg
cGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHBh
cmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQsIEVDTUFNb2RlIGVjbWFNb2RlKQogICAgIDogQnl0
ZWNvZGVHZW5lcmF0b3JCYXNlKG1ha2VVbmlxdWU8VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I+
KHZtLCBjb2RlQmxvY2spLCBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VB
c1ZpcnR1YWxSZWdpc3RlcnMoKSkKICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2RlKGNvZGVHZW5l
cmF0aW9uTW9kZSkKICAgICAsIG1fc2NvcGVOb2RlKGV2YWxOb2RlKQpAQCAtODU4LDYgKzg2NCw4
IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEV2YWxOb2Rl
KiBldmFsTm9kZSwgVW5saW5rZWRFdmFsQ29kCiB7CiAgICAgbV9jb2RlQmxvY2stPnNldE51bVBh
cmFtZXRlcnMoMSk7CiAKKyAgICBwdXNoUHJpdmF0ZUFjY2Vzc05hbWVzKHBhcmVudFByaXZhdGVO
YW1lRW52aXJvbm1lbnQpOworICAgIAogICAgIG1fcGFyZW50U2NvcGVURFpTdGFja1NpemUgPSBw
YXJlbnRTY29wZVREWlZhcmlhYmxlcy5zaXplKCk7CiAgICAgbV9jYWNoZWRWYXJpYWJsZXNVbmRl
clREWiA9IHBhcmVudFNjb3BlVERaVmFyaWFibGVzOwogCkBAIC05MDQsNyArOTEyLDcgQEAgQnl0
ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2YWxO
b2RlLCBVbmxpbmtlZEV2YWxDb2QKICAgICBwdXNoTGV4aWNhbFNjb3BlKG1fc2NvcGVOb2RlLCBU
RFpDaGVja09wdGltaXphdGlvbjo6T3B0aW1pemUsIE5lc3RlZFNjb3BlVHlwZTo6SXNOb3ROZXN0
ZWQsIG51bGxwdHIsIHNob3VsZEluaXRpYWxpemVCbG9ja1Njb3BlZEZ1bmN0aW9ucyk7CiB9CiAK
LUJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIE1vZHVsZVByb2dy
YW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9kZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9u
TW9kZSwgY29uc3QgQ2FjaGVkVERaU3RhY2smIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBFQ01B
TW9kZSBlY21hTW9kZSkKK0J5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYg
dm0sIE1vZHVsZVByb2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9kZSwgVW5saW5rZWRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+
IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgQ2FjaGVkVERaU3RhY2smIHBhcmVudFNjb3BlVERa
VmFyaWFibGVzLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiwgRUNNQU1vZGUgZWNtYU1v
ZGUpCiAgICAgOiBCeXRlY29kZUdlbmVyYXRvckJhc2UobWFrZVVuaXF1ZTxVbmxpbmtlZENvZGVC
bG9ja0dlbmVyYXRvcj4odm0sIGNvZGVCbG9jayksIENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNh
bGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKQogICAgICwgbV9jb2RlR2VuZXJhdGlv
bk1vZGUoY29kZUdlbmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5vZGUobW9kdWxlUHJvZ3Jh
bU5vZGUpCkBAIC0xODk2LDggKzE5MDQsMTAgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6aW5z
dGFudGlhdGVMZXhpY2FsVmFyaWFibGVzKGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGwKIAog
ICAgICAgICAgICAgLy8gRklYTUU6IG9ubHkgZG8gdGhpcyBpZiB0aGVyZSBpcyBhbiBldmFsKCkg
d2l0aGluIGEgbmVzdGVkIHNjb3BlIC0tLSBvdGhlcndpc2UgaXQgaXNuJ3QgbmVlZGVkLgogICAg
ICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjY2
MwotICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVlLmlzUHJpdmF0ZU5hbWUoKSkKLSAgICAgICAg
ICAgICAgICBzeW1ib2xUYWJsZS0+YWRkUHJpdmF0ZU5hbWUoZW50cnkua2V5LmdldCgpKTsKKyAg
ICAgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc1ByaXZhdGVGaWVsZCgpKQorICAgICAgICAgICAg
ICAgIHN5bWJvbFRhYmxlLT5hZGRQcml2YXRlTmFtZShlbnRyeS5rZXkuZ2V0KCksIFByaXZhdGVO
YW1lRW50cnkoUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc0RlY2xhcmVkKSk7CisgICAgICAg
ICAgICBlbHNlIGlmIChlbnRyeS52YWx1ZS5pc1ByaXZhdGVNZXRob2QoKSkKKyAgICAgICAgICAg
ICAgICBzeW1ib2xUYWJsZS0+YWRkUHJpdmF0ZU5hbWUoZW50cnkua2V5LmdldCgpLCBQcml2YXRl
TmFtZUVudHJ5KFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNEZWNsYXJlZCB8IFByaXZhdGVO
YW1lRW50cnk6OlRyYWl0czo6SXNNZXRob2QpKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1
cm4gaGFzQ2FwdHVyZWRWYXJpYWJsZXM7CkBAIC0yNzE4LDcgKzI3MjgsNyBAQCBSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lz
dGVySUQqIHRoaXNWYQogICAgIHJldHVybiB2YWx1ZTsKIH0KIAotUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RHZXRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVy
SUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5KQorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRHZXRQcml2YXRlTmFtZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJh
c2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5KQogewogICAgIE9wR2V0UHJpdmF0ZU5hbWU6OmVtaXQo
dGhpcywgZHN0LCBiYXNlLCBwcm9wZXJ0eSk7CiAgICAgcmV0dXJuIGRzdDsKQEAgLTI3NTQsMTIg
KzI3NjQsNDQgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWZpbmVQcml2
YXRlRmllbGQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXIKICAgICByZXR1cm4gdmFsdWU7CiB9
CiAKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDcmVhdGVQcml2YXRlQnJhbmQoUmVnaXN0
ZXJJRCogc2NvcGUsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKK3sKKyAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gY3JlYXRlUHJpdmF0ZVN5bWJvbCA9IG1vdmVMaW5rVGltZUNv
bnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OmNyZWF0ZVByaXZhdGVTeW1ib2wpOwor
CisgICAgQ2FsbEFyZ3VtZW50cyBhcmd1bWVudHMoKnRoaXMsIG51bGxwdHIsIDApOworICAgIGVt
aXRMb2FkKGFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CisgICAgUmVn
aXN0ZXJJRCogbmV3U3ltYm9sID0gZW1pdENhbGwoZmluYWxEZXN0aW5hdGlvbihudWxscHRyLCBj
cmVhdGVQcml2YXRlU3ltYm9sLmdldCgpKSwgY3JlYXRlUHJpdmF0ZVN5bWJvbC5nZXQoKSwgTm9F
eHBlY3RlZEZ1bmN0aW9uLCBhcmd1bWVudHMsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCwg
RGVidWdnYWJsZUNhbGw6Ok5vKTsKKworICAgIFZhcmlhYmxlIHByaXZhdGVCcmFuZFZhciA9IHZh
cmlhYmxlKHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5wcml2YXRlQnJhbmRQcml2YXRl
TmFtZSgpKTsKKworICAgIGVtaXRQdXRUb1Njb3BlKHNjb3BlLCBwcml2YXRlQnJhbmRWYXIsIG5l
d1N5bWJvbCwgRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6SW5pdGlh
bGl6YXRpb24pOworfQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SW5zdGFsbFByaXZh
dGVCcmFuZChSZWdpc3RlcklEKiB0YXJnZXQpCit7CisgICAgVmFyaWFibGUgcHJpdmF0ZUJyYW5k
VmFyID0gdmFyaWFibGUocHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLnByaXZhdGVCcmFu
ZFByaXZhdGVOYW1lKCkpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlQnJhbmRWYXJT
Y29wZSA9IGVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgcHJpdmF0ZUJyYW5kVmFyKTsKKyAgICBS
ZWdpc3RlcklEKiBwcml2YXRlQnJhbmRTeW1ib2wgPSBlbWl0R2V0UHJpdmF0ZUJyYW5kKG5ld1Rl
bXBvcmFyeSgpLCBwcml2YXRlQnJhbmRWYXJTY29wZS5nZXQoKSk7CisgICAgT3BTZXRQcml2YXRl
QnJhbmQ6OmVtaXQodGhpcywgdGFyZ2V0LCBwcml2YXRlQnJhbmRTeW1ib2wpOworfQorCitSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFByaXZhdGVCcmFuZChSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIHNjb3BlKQoreworICAgIFZhcmlhYmxlIHByaXZhdGVCcmFuZFZh
ciA9IHZhcmlhYmxlKHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5wcml2YXRlQnJhbmRQ
cml2YXRlTmFtZSgpKTsKKyAgICByZXR1cm4gZW1pdEdldEZyb21TY29wZShkc3QsIHNjb3BlLCBw
cml2YXRlQnJhbmRWYXIsIFRocm93SWZOb3RGb3VuZCk7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0UHJpdmF0ZUZpZWxkUHV0KFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lz
dGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKICAgICBPcFB1dFByaXZhdGVO
YW1lOjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHJpdmF0ZUZpZWxkUHV0S2lu
ZDo6c2V0KCkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIAordm9pZCBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdENoZWNrUHJpdmF0ZUJyYW5kKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIGJy
YW5kU3ltYm9sKQoreworICAgIE9wQ2hlY2tQcml2YXRlQnJhbmQ6OmVtaXQodGhpcywgYmFzZSwg
YnJhbmRTeW1ib2wpOworfQorCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0U3VwZXJTYW1w
bGVyQmVnaW4oKQogewogICAgIE9wU3VwZXJTYW1wbGVyQmVnaW46OmVtaXQodGhpcyk7CkBAIC0y
ODkxLDYgKzI5MzMsMzIgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6bGlmdFREWkNoZWNrSWZQ
b3NzaWJsZShjb25zdCBWYXJpYWJsZSYgdmFyaWFibGUpCiAgICAgfQogfQogCitib29sIEJ5dGVj
b2RlR2VuZXJhdG9yOjppc1ByaXZhdGVNZXRob2QoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCit7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gbV9wcml2YXRlTmFtZXNTdGFjay5zaXplKCk7IGktLTsg
KSB7CisgICAgICAgIGF1dG8mIG1hcCA9IG1fcHJpdmF0ZU5hbWVzU3RhY2tbaV07CisgICAgICAg
IGF1dG8gaXQgPSBtYXAuZmluZChpZGVudC5pbXBsKCkpOworICAgICAgICBpZiAoaXQgIT0gbWFw
LmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGl0LT52YWx1ZS5pc01ldGhvZCgpOworICAgIH0K
KworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cHVzaFBy
aXZhdGVBY2Nlc3NOYW1lcyhjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiBlbnZpcm9ubWVu
dCkKK3sKKyAgICBpZiAoIWVudmlyb25tZW50IHx8ICFlbnZpcm9ubWVudC0+c2l6ZSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX3ByaXZhdGVOYW1lc1N0YWNrLmFwcGVuZCgqZW52aXJvbm1l
bnQpOworfQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwb3BQcml2YXRlQWNjZXNzTmFtZXMo
KQoreworICAgIEFTU0VSVChtX3ByaXZhdGVOYW1lc1N0YWNrLnNpemUoKSk7CisgICAgbV9wcml2
YXRlTmFtZXNTdGFjay5yZW1vdmVMYXN0KCk7Cit9CisKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OnB1c2hURFpWYXJpYWJsZXMoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgZW52aXJvbm1lbnQs
IFREWkNoZWNrT3B0aW1pemF0aW9uIG9wdGltaXphdGlvbiwgVERaUmVxdWlyZW1lbnQgcmVxdWly
ZW1lbnQpCiB7CiAgICAgaWYgKCFlbnZpcm9ubWVudC5zaXplKCkpCkBAIC0yOTEzLDYgKzI5ODEs
MjggQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cHVzaFREWlZhcmlhYmxlcyhjb25zdCBWYXJp
YWJsZUVudmlyb25tZW50JiBlbnZpcm9ubWVudCwKICAgICBtX2NhY2hlZFZhcmlhYmxlc1VuZGVy
VERaLmFwcGVuZCh7IH0pOwogfQogCitPcHRpb25hbDxQcml2YXRlTmFtZUVudmlyb25tZW50PiBC
eXRlY29kZUdlbmVyYXRvcjo6Z2V0QXZhaWxhYmxlUHJpdmF0ZUFjY2Vzc05hbWVzKCkKK3sKKyAg
ICBQcml2YXRlTmFtZUVudmlyb25tZW50IHJlc3VsdDsKKyAgICBTbWFsbFB0clNldDxVbmlxdWVk
U3RyaW5nSW1wbCosIDE2PiBleGNsdWRlZE5hbWVzOworICAgIGZvciAodW5zaWduZWQgaSA9IG1f
cHJpdmF0ZU5hbWVzU3RhY2suc2l6ZSgpOyBpLS07ICkgeworICAgICAgICBhdXRvJiBtYXAgPSBt
X3ByaXZhdGVOYW1lc1N0YWNrW2ldOworICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbWFwKSAg
eworICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVlLmlzUHJpdmF0ZU1ldGhvZE9yQWNlc3Nvcigp
KSB7CisgICAgICAgICAgICAgICAgaWYgKCFleGNsdWRlZE5hbWVzLmNvbnRhaW5zKGVudHJ5Lmtl
eS5nZXQoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFkZChlbnRyeS5rZXksIGVu
dHJ5LnZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgZXhjbHVkZWROYW1lcy5hZGQoZW50cnku
a2V5LmdldCgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgICAgICBleGNsdWRlZE5hbWVzLmFkZChlbnRyeS5rZXkuZ2V0KCkpOworICAgICAgICB9
CisgICAgfQorCisgICAgaWYgKCFyZXN1bHQuc2l6ZSgpKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIE9wdGlvbmFsPEJ5dGVjb2RlR2VuZXJh
dG9yOjpDYWNoZWRURFpTdGFjaz4gQnl0ZWNvZGVHZW5lcmF0b3I6OmdldFZhcmlhYmxlc1VuZGVy
VERaKCkKIHsKICAgICBhdXRvIGFzc2VydENhY2hlSXNDb2hlcmVudCA9IFsmXSB7CkBAIC0zMTIw
LDkgKzMyMTAsOSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld01ldGhv
ZERlZmluaXRpb24oUmVnaXN0ZXJJRCogZHN0LCBNZXRob2REZQogfQogCiBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3RvcihSZWdpc3RlcklEKiBk
c3QsIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5h
bWUsCi0gICAgY29uc3QgSWRlbnRpZmllciYgZWNtYU5hbWUsIGNvbnN0IFNvdXJjZUNvZGUmIGNs
YXNzU291cmNlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplcikKKyAgICBjb25zdCBJZGVudGlmaWVyJiBlY21hTmFtZSwgY29uc3QgU291cmNlQ29k
ZSYgY2xhc3NTb3VyY2UsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJl
bWVudCkKIHsKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG1f
dm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNyZWF0ZURlZmF1bHRDb25zdHJ1Y3Rvcihjb25zdHJ1
Y3RvcktpbmQsIG5hbWUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsKKyAgICBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG1fdm0uYnVpbHRpbkV4ZWN1dGFibGVz
KCktPmNyZWF0ZURlZmF1bHRDb25zdHJ1Y3Rvcihjb25zdHJ1Y3RvcktpbmQsIG5hbWUsIG5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyLCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7CiAgICAgZXhl
Y3V0YWJsZS0+c2V0SW52YWxpZFR5cGVQcm9maWxpbmdPZmZzZXRzKCk7CiAgICAgZXhlY3V0YWJs
ZS0+c2V0RWNtYU5hbWUoZWNtYU5hbWUpOwogICAgIGV4ZWN1dGFibGUtPnNldENsYXNzU291cmNl
KGNsYXNzU291cmNlKTsKQEAgLTMxNDYsMTMgKzMyMzYsMTQgQEAgUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXROZXdJbnN0YW5jZUZpZWxkSW5pdGlhbGl6ZXJGdW5jdGlvbihSZWdp
c3RlckkKICAgICB9CiAKICAgICBhdXRvIHZhcmlhYmxlc1VuZGVyVERaID0gZ2V0VmFyaWFibGVz
VW5kZXJURFooKTsKKyAgICBPcHRpb25hbDxQcml2YXRlTmFtZUVudmlyb25tZW50PiBwYXJlbnRQ
cml2YXRlTmFtZUVudmlyb25tZW50ID0gZ2V0QXZhaWxhYmxlUHJpdmF0ZUFjY2Vzc05hbWVzKCk7
CiAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6SW5zdGFu
Y2VGaWVsZEluaXRpYWxpemVyTW9kZTsKICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFi
aWxpdHkgPSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7CiAKICAgICBjb25zdCBi
b29sIGFsd2F5c1N0cmljdEluQ2xhc3MgPSB0cnVlOwogICAgIEZ1bmN0aW9uTWV0YWRhdGFOb2Rl
IG1ldGFkYXRhKHBhcnNlckFyZW5hKCksIEpTVG9rZW5Mb2NhdGlvbigpLCBKU1Rva2VuTG9jYXRp
b24oKSwgMCwgMCwgMCwgMCwgMCwgYWx3YXlzU3RyaWN0SW5DbGFzcywgQ29uc3RydWN0b3JLaW5k
OjpOb25lLCBzdXBlckJpbmRpbmcsIDAsIHBhcnNlTW9kZSwgZmFsc2UpOwogICAgIG1ldGFkYXRh
LmZpbmlzaFBhcnNpbmcobV9zY29wZU5vZGUtPnNvdXJjZSgpLCBJZGVudGlmaWVyKCksIEZ1bmN0
aW9uTW9kZTo6TWV0aG9kRGVmaW5pdGlvbik7Ci0gICAgYXV0byBpbml0aWFsaXplciA9IFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgp
LCAmbWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlv
biA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIHNjcmlwdE1vZGUo
KSwgV1RGTW92ZSh2YXJpYWJsZXNVbmRlclREWiksIG5ld0Rlcml2ZWRDb250ZXh0VHlwZSwgTmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vKTsKKyAgICBhdXRvIGluaXRpYWxpemVyID0gVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNl
KCksICZtZXRhZGF0YSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0
aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwgc2NyaXB0TW9k
ZSgpLCBXVEZNb3ZlKHZhcmlhYmxlc1VuZGVyVERaKSwgV1RGTW92ZShwYXJlbnRQcml2YXRlTmFt
ZUVudmlyb25tZW50KSwgbmV3RGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplcjo6Tm8sIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lKTsKICAgICBpbml0aWFs
aXplci0+c2V0SW5zdGFuY2VGaWVsZExvY2F0aW9ucyhXVEZNb3ZlKGluc3RhbmNlRmllbGRMb2Nh
dGlvbnMpKTsKIAogICAgIHVuc2lnbmVkIGluZGV4ID0gbV9jb2RlQmxvY2stPmFkZEZ1bmN0aW9u
RXhwcihpbml0aWFsaXplcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggNGE1N2E0ZmE5MmI0Li5mYzIzNGZj
MmFlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTQwOSwxMCArNDA5LDEwIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB0eXBlZGVmIERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrIEZ1bmN0
aW9uU3RhY2s7CiAgICAgICAgIHVzaW5nIENhY2hlZFREWlN0YWNrID0gVmVjdG9yPENvbXBhY3RU
RFpFbnZpcm9ubWVudE1hcDo6SGFuZGxlPjsKIAotICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihW
TSYsIFByb2dyYW1Ob2RlKiwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENv
ZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IENhY2hlZFREWlN0YWNrJiwgRUNNQU1vZGUpOwotICAg
ICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIEZ1bmN0aW9uTm9kZSosIFVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgQ2FjaGVk
VERaU3RhY2smLCBFQ01BTW9kZSk7Ci0gICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgRXZh
bE5vZGUqLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25N
b2RlPiwgY29uc3QgQ2FjaGVkVERaU3RhY2smLCBFQ01BTW9kZSk7Ci0gICAgICAgIEJ5dGVjb2Rl
R2VuZXJhdG9yKFZNJiwgTW9kdWxlUHJvZ3JhbU5vZGUqLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1D
b2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgQ2FjaGVkVERa
U3RhY2smLCBFQ01BTW9kZSk7CisgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgUHJvZ3Jh
bU5vZGUqLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRp
b25Nb2RlPiwgY29uc3QgQ2FjaGVkVERaU3RhY2smLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25t
ZW50KiwgRUNNQU1vZGUpOworICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIEZ1bmN0aW9u
Tm9kZSosIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRp
b25Nb2RlPiwgY29uc3QgQ2FjaGVkVERaU3RhY2smLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25t
ZW50KiwgRUNNQU1vZGUpOworICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIEV2YWxOb2Rl
KiwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4s
IGNvbnN0IENhY2hlZFREWlN0YWNrJiwgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCosIEVD
TUFNb2RlKTsKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBNb2R1bGVQcm9ncmFtTm9k
ZSosIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayosIE9wdGlvblNldDxDb2RlR2VuZXJh
dGlvbk1vZGU+LCBjb25zdCBDYWNoZWRURFpTdGFjayYsIGNvbnN0IFByaXZhdGVOYW1lRW52aXJv
bm1lbnQqLCBFQ01BTW9kZSk7CiAKICAgICAgICAgfkJ5dGVjb2RlR2VuZXJhdG9yKCk7CiAgICAg
ICAgIApAQCAtNDI2LDIwICs0MjYsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wg
bmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9uZWVk
c1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQ7IH0KICAgICAgICAgYm9vbCB1c2VzRXZhbCgp
IGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVOb2RlLT51c2VzRXZhbCgpOyB9CiAgICAgICAgIGJvb2wg
dXNlc1RoaXMoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlTm9kZS0+dXNlc1RoaXMoKTsgfQorICAg
ICAgICBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5wcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpOyB9CiAg
ICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBt
X2NvZGVCbG9jay0+Y29uc3RydWN0b3JLaW5kKCk7IH0KICAgICAgICAgU3VwZXJCaW5kaW5nIHN1
cGVyQmluZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5zdXBlckJpbmRpbmcoKTsg
fQogICAgICAgICBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY29kZUJsb2NrLT5zY3JpcHRNb2RlKCk7IH0KICAgICAgICAgTmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSBjb25zdCB7IHJldHVybiBtX2Nv
ZGVCbG9jay0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKTsgfQogCiAgICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE5vZGUsIHR5cGVuYW1lIFVubGlua2VkQ29kZUJsb2NrPgotICAgICAgICBz
dGF0aWMgUGFyc2VyRXJyb3IgZ2VuZXJhdGUoVk0mIHZtLCBOb2RlKiBub2RlLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2VDb2RlLCBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ss
IE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3Qg
Q2FjaGVkVERaU3RhY2smIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBFQ01BTW9kZSBlY21hTW9k
ZSkKKyAgICAgICAgc3RhdGljIFBhcnNlckVycm9yIGdlbmVyYXRlKFZNJiB2bSwgTm9kZSogbm9k
ZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlu
a2VkQ29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlv
bk1vZGUsIGNvbnN0IENhY2hlZFREWlN0YWNrJiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgY29u
c3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgRUNNQU1v
ZGUgZWNtYU1vZGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIE1vbm90b25pY1RpbWUgYmVmb3Jl
OwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnJlcG9ydEJ5dGVjb2RlQ29tcGls
ZVRpbWVzKCkpKQogICAgICAgICAgICAgICAgIGJlZm9yZSA9IE1vbm90b25pY1RpbWU6Om5vdygp
OwogCiAgICAgICAgICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7Ci0gICAgICAgICAgICBh
dXRvIGJ5dGVjb2RlR2VuZXJhdG9yID0gbWFrZVVuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0s
IG5vZGUsIHVubGlua2VkQ29kZUJsb2NrLCBjb2RlR2VuZXJhdGlvbk1vZGUsIHBhcmVudFNjb3Bl
VERaVmFyaWFibGVzLCBlY21hTW9kZSk7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlR2VuZXJh
dG9yID0gbWFrZVVuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIG5vZGUsIHVubGlua2VkQ29k
ZUJsb2NrLCBjb2RlR2VuZXJhdGlvbk1vZGUsIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBwcml2
YXRlTmFtZUVudmlyb25tZW50LCBlY21hTW9kZSk7CiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9
IGJ5dGVjb2RlR2VuZXJhdG9yLT5nZW5lcmF0ZSgpOwogCiAgICAgICAgICAgICBpZiAoVU5MSUtF
TFkoT3B0aW9uczo6cmVwb3J0Qnl0ZWNvZGVDb21waWxlVGltZXMoKSkpIHsKQEAgLTc3NSw3ICs3
NzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3RnVu
Y3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSopOwogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVu
Y0V4cHJOb2RlKik7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdEZWZhdWx0Q29uc3RydWN0
b3IoUmVnaXN0ZXJJRCogZHN0LCBDb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5h
bWUsIGNvbnN0IElkZW50aWZpZXImIGVjbWFOYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBjbGFzc1Nv
dXJjZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpOworICAgICAgICBSZWdpc3RlcklEKiBl
bWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29uc3RydWN0b3JLaW5k
LCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBJZGVudGlmaWVyJiBlY21hTmFtZSwgY29u
c3QgU291cmNlQ29kZSYgY2xhc3NTb3VyY2UsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQ
cml2YXRlQnJhbmRSZXF1aXJlbWVudCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdJbnN0
YW5jZUZpZWxkSW5pdGlhbGl6ZXJGdW5jdGlvbihSZWdpc3RlcklEKiBkc3QsIFZlY3RvcjxKU1Rl
eHRQb3NpdGlvbj4mJiBpbnN0YW5jZUZpZWxkTG9jYXRpb25zLCBib29sIGlzRGVyaXZlZCk7CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3Rl
cklEKiwgQXJyb3dGdW5jRXhwck5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld01l
dGhvZERlZmluaXRpb24oUmVnaXN0ZXJJRCogZHN0LCBNZXRob2REZWZpbml0aW9uTm9kZSopOwpA
QCAtODE2LDcgKzgxNyw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBl
bWl0RGlyZWN0U2V0UHJvdG90eXBlT2YoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJv
dG90eXBlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJh
c2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlz
VmFsdWUsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7Ci0gICAgICAg
IFJlZ2lzdGVySUQqIGVtaXREaXJlY3RHZXRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVy
SUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dERpcmVjdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBS
ZWdpc3RlcklEKiB2YWx1ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREZWxldGVCeVZhbChS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5KTsK
IApAQCAtODI0LDYgKzgyNCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdFB1dEludGVybmFsRmllbGQoUmVnaXN0ZXJJRCogYmFzZSwgdW5zaWduZWQgaW5kZXgs
IFJlZ2lzdGVySUQqIHZhbHVlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlZmluZVByaXZh
dGVGaWVsZChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJ
RCogdmFsdWUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHJpdmF0ZUZpZWxkUHV0KFJlZ2lz
dGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7Cisg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRQcml2YXRlTmFtZShSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5KTsKKworICAgICAgICB2b2lkIGVt
aXRDcmVhdGVQcml2YXRlQnJhbmQoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3RFbmQpOworICAgICAgICB2b2lkIGVtaXRJbnN0YWxsUHJpdmF0ZUJyYW5k
KFJlZ2lzdGVySUQqIHRhcmdldCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRQcml2YXRl
QnJhbmQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzY29wZSk7CisgICAgICAgIHZvaWQg
ZW1pdENoZWNrUHJpdmF0ZUJyYW5kKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIGJyYW5k
KTsKIAogICAgICAgICB2b2lkIGVtaXRTdXBlclNhbXBsZXJCZWdpbigpOwogICAgICAgICB2b2lk
IGVtaXRTdXBlclNhbXBsZXJFbmQoKTsKQEAgLTExNzcsMTYgKzExODMsMTkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICBEZXJpdmVkQ29udGV4dFR5cGUgbmV3RGVyaXZlZENvbnRleHRU
eXBlID0gRGVyaXZlZENvbnRleHRUeXBlOjpOb25lOwogCiAgICAgICAgICAgICBOZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9IG1ldGFkYXRhLT5p
c0NvbnN0cnVjdG9yQW5kTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSA/IE5lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyOjpZZXMgOiBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm87Cisg
ICAgICAgICAgICBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVu
dCA9IG1ldGFkYXRhLT5wcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpOwogICAgICAgICAgICAgaWYg
KFNvdXJjZVBhcnNlTW9kZVNldChTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlLCBT
b3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGUsIFNvdXJjZVBhcnNlTW9kZTo6
QXN5bmNBcnJvd0Z1bmN0aW9uQm9keU1vZGUpLmNvbnRhaW5zKG1ldGFkYXRhLT5wYXJzZU1vZGUo
KSkpIHsKICAgICAgICAgICAgICAgICBpZiAoY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0
b3JLaW5kOjpFeHRlbmRzIHx8IGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIG5ld0Rlcml2ZWRDb250ZXh0VHlwZSA9IERlcml2ZWRDb250ZXh0VHlw
ZTo6RGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dDsKICAgICAgICAgICAgICAgICAgICAgbmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSBtX2NvZGVCbG9jay0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBt
X2NvZGVCbG9jay0+cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAobV9jb2RlQmxvY2stPmlzQ2xhc3NDb250ZXh0KCkg
fHwgaXNEZXJpdmVkQ2xhc3NDb250ZXh0KCkpCiAgICAgICAgICAgICAgICAgICAgIG5ld0Rlcml2
ZWRDb250ZXh0VHlwZSA9IERlcml2ZWRDb250ZXh0VHlwZTo6RGVyaXZlZE1ldGhvZENvbnRleHQ7
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGF1dG8gb3B0aW9uYWxWYXJpYWJsZXNVbmRl
clREWiA9IGdldFZhcmlhYmxlc1VuZGVyVERaKCk7CisgICAgICAgICAgICBPcHRpb25hbDxQcml2
YXRlTmFtZUVudmlyb25tZW50PiBwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50ID0gZ2V0QXZh
aWxhYmxlUHJpdmF0ZUFjY2Vzc05hbWVzKCk7CiAKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGVz
ZSBmbGFncywgUGFyc2VyTW9kZXMgYW5kIHByb3BhZ2F0aW9uIHRvIFhYWENvZGVCbG9ja3Mgc2hv
dWxkIGJlIHJlb3JnYW5pemVkLgogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NwpAQCAtMTE5NSwxMCArMTIwNCwxMSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpN
ZXRob2RNb2RlICYmIG1ldGFkYXRhLT5jb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3Rvcktp
bmQ6Ok5vbmUpCiAgICAgICAgICAgICAgICAgY29uc3RydWN0QWJpbGl0eSA9IENvbnN0cnVjdEFi
aWxpdHk6OkNhbkNvbnN0cnVjdDsKIAotICAgICAgICAgICAgcmV0dXJuIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgpLCBtZXRhZGF0
YSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5r
ZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwgc2NyaXB0TW9kZSgpLCBXVEZNb3Zl
KG9wdGlvbmFsVmFyaWFibGVzVW5kZXJURFopLCBuZXdEZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyKTsKKyAgICAgICAgICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgbWV0YWRh
dGEsIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlu
a2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIHNjcmlwdE1vZGUoKSwgV1RGTW92
ZShvcHRpb25hbFZhcmlhYmxlc1VuZGVyVERaKSwgV1RGTW92ZShwYXJlbnRQcml2YXRlTmFtZUVu
dmlyb25tZW50KSwgbmV3RGVyaXZlZENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplciwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOwogICAgICAgICB9CiAKICAgICAgICAgT3B0
aW9uYWw8Q2FjaGVkVERaU3RhY2s+IGdldFZhcmlhYmxlc1VuZGVyVERaKCk7CisgICAgICAgIE9w
dGlvbmFsPFByaXZhdGVOYW1lRW52aXJvbm1lbnQ+IGdldEF2YWlsYWJsZVByaXZhdGVBY2Nlc3NO
YW1lcygpOwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDb25zdHJ1Y3RWYXJhcmdzKFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgUmVnaXN0ZXJJRCogdGhpc1JlZ2lzdGVyLCBS
ZWdpc3RlcklEKiBhcmd1bWVudHMsIFJlZ2lzdGVySUQqIGZpcnN0RnJlZVJlZ2lzdGVyLCBpbnQz
Ml90IGZpcnN0VmFyQXJnT2Zmc2V0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RF
bmQsIERlYnVnZ2FibGVDYWxsKTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbE9wPgpA
QCAtMTI1Myw2ICsxMjYzLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgbV9sYXN0
SW5zdHJ1Y3Rpb24gPSBwcmV2TGFzdEluc3RydWN0aW9uOwogICAgICAgICB9CiAKKyAgICAgICAg
Ym9vbCBpc1ByaXZhdGVNZXRob2QoY29uc3QgSWRlbnRpZmllciYpOworCisgICAgICAgIHZvaWQg
cHVzaFByaXZhdGVBY2Nlc3NOYW1lcyhjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50Kik7Cisg
ICAgICAgIHZvaWQgcG9wUHJpdmF0ZUFjY2Vzc05hbWVzKCk7CisKICAgICBwcml2YXRlOgogICAg
ICAgICBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBtX2NvZGVHZW5lcmF0aW9uTW9kZTsK
IApAQCAtMTI2Nyw2ICsxMjgyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHNpemVfdCBt
X3BhcmVudFNjb3BlVERaU3RhY2tTaXplIHsgMCB9OwogICAgICAgICBWZWN0b3I8VERaTWFwPiBt
X1REWlN0YWNrOwogICAgICAgICBDYWNoZWRURFpTdGFjayBtX2NhY2hlZFZhcmlhYmxlc1VuZGVy
VERaOworICAgICAgICBWZWN0b3I8UHJpdmF0ZU5hbWVFbnZpcm9ubWVudD4gbV9wcml2YXRlTmFt
ZXNTdGFjazsKICAgICAgICAgT3B0aW9uYWw8c2l6ZV90PiBtX3ZhclNjb3BlTGV4aWNhbFNjb3Bl
U3RhY2tJbmRleDsKICAgICAgICAgdm9pZCBwdXNoVERaVmFyaWFibGVzKGNvbnN0IFZhcmlhYmxl
RW52aXJvbm1lbnQmLCBURFpDaGVja09wdGltaXphdGlvbiwgVERaUmVxdWlyZW1lbnQpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKaW5kZXggNWFkODQ5ODA4NjRiLi5lMTJhYTAwMTcyYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTU2Myw3ICs1
NjMsNyBAQCB2b2lkIFByb3BlcnR5TGlzdE5vZGU6OmVtaXREZWNsYXJlUHJpdmF0ZUZpZWxkTmFt
ZXMoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvcgogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBj
cmVhdGVQcml2YXRlU3ltYm9sOwogICAgIGZvciAoUHJvcGVydHlMaXN0Tm9kZSogcCA9IHRoaXM7
IHA7IHAgPSBwLT5tX25leHQpIHsKICAgICAgICAgY29uc3QgUHJvcGVydHlOb2RlJiBub2RlID0g
KnAtPm1fbm9kZTsKLSAgICAgICAgaWYgKG5vZGUudHlwZSgpICYgUHJvcGVydHlOb2RlOjpQcml2
YXRlKSB7CisgICAgICAgIGlmIChub2RlLnR5cGUoKSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0ZUZp
ZWxkKSB7CiAgICAgICAgICAgICBpZiAoIWNyZWF0ZVByaXZhdGVTeW1ib2wpCiAgICAgICAgICAg
ICAgICAgY3JlYXRlUHJpdmF0ZVN5bWJvbCA9IGdlbmVyYXRvci5tb3ZlTGlua1RpbWVDb25zdGFu
dChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50OjpjcmVhdGVQcml2YXRlU3ltYm9sKTsKIApAQCAt
NTg5LDcgKzU4OSw3IEBAIFJlZ2lzdGVySUQqIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlCiAgICAgICAgIGlmIChwLT5p
c0NvbXB1dGVkQ2xhc3NGaWVsZCgpKQogICAgICAgICAgICAgZW1pdFNhdmVDb21wdXRlZEZpZWxk
TmFtZShnZW5lcmF0b3IsICpwLT5tX25vZGUpOwogCi0gICAgICAgIGlmIChwLT5pc0luc3RhbmNl
Q2xhc3NGaWVsZCgpKSB7CisgICAgICAgIGlmIChwLT5pc0luc3RhbmNlQ2xhc3NGaWVsZCgpICYm
ICEocC0+bV9ub2RlLT50eXBlKCkgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGVNZXRob2QpKSB7CiAg
ICAgICAgICAgICBBU1NFUlQoaW5zdGFuY2VGaWVsZExvY2F0aW9ucyk7CiAgICAgICAgICAgICBp
bnN0YW5jZUZpZWxkTG9jYXRpb25zLT5hcHBlbmQocC0+cG9zaXRpb24oKSk7CiAgICAgICAgICAg
ICBjb250aW51ZTsKQEAgLTc0NSw3ICs3NDUsNyBAQCBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3RO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZQog
dm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBuZXdPYmosIFByb3BlcnR5Tm9kZSYgbm9k
ZSkKIHsKICAgICAvLyBQcml2YXRlIGZpZWxkcyBhcmUgaGFuZGxlZCBpbiB0aGUgc3ludGhldGlj
IGluc3RhbmNlRmllbGRJbml0aWFsaXplciBmdW5jdGlvbiwgbm90IGhlcmUuCi0gICAgQVNTRVJU
KCEobm9kZS50eXBlKCkgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGUpKTsKKyAgICBBU1NFUlQoIShu
b2RlLnR5cGUoKSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0ZUZpZWxkKSk7CiAKICAgICBpZiAoUHJv
cGVydHlOb2RlOjppc1VuZGVyc2NvcmVQcm90b1NldHRlcihnZW5lcmF0b3Iudm0oKSwgbm9kZSkp
IHsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3RvdHlwZSA9IGdlbmVyYXRvci5lbWl0
Tm9kZShub2RlLm1fYXNzaWduKTsKQEAgLTc3MCw2ICs3NzAsMTQgQEAgdm9pZCBQcm9wZXJ0eUxp
c3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWcKIAogICAgIGlmIChub2RlLmlzQ2xhc3NQcm9wZXJ0eSgpKSB7CiAgICAgICAgIEFT
U0VSVChub2RlLm5lZWRzU3VwZXJCaW5kaW5nKCkpOworCisgICAgICAgIGlmIChub2RlLnR5cGUo
KSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0ZU1ldGhvZCkgeworICAgICAgICAgICAgVmFyaWFibGUg
dmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKCpub2RlLm5hbWUoKSk7CisgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdFB1dFRvU2NvcGUoZ2VuZXJhdG9yLnNjb3BlUmVnaXN0ZXIoKSwgdmFyLCB2YWx1
ZS5nZXQoKSwgRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6Q29uc3RJ
bml0aWFsaXphdGlvbik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcGVydHlOYW1lUmVnaXN0ZXI7CiAgICAgICAgIGlmIChu
b2RlLm5hbWUoKSkKICAgICAgICAgICAgIHByb3BlcnR5TmFtZSA9IGdlbmVyYXRvci5lbWl0TG9h
ZChudWxscHRyLCAqbm9kZS5uYW1lKCkpOwogCkBAIC04OTEsMTQgKzg5OSwyNCBAQCBSZWdpc3Rl
cklEKiBEb3RBY2Nlc3Nvck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcgogCiBSZWdpc3RlcklEKiBCYXNlRG90Tm9kZTo6ZW1pdEdldFByb3Bl
cnR5VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBiYXNlLCBSZWZQdHI8UmVnaXN0ZXJJRD4mIHRoaXNWYWx1ZSkKIHsKLSAgICBp
ZiAoaXNQcml2YXRlRmllbGQoKSkgeworICAgIGlmIChpc1ByaXZhdGVNZW1iZXIoKSkgeworICAg
ICAgICBpZiAoZ2VuZXJhdG9yLmlzUHJpdmF0ZU1ldGhvZChpZGVudGlmaWVyKCkpKSB7CisgICAg
ICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnRpZmllcigpKTsK
KyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVz
b2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CisKKyAgICAgICAgICAgIFJlZ2lzdGVySUQqIHByaXZh
dGVCcmFuZFN5bWJvbCA9IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZUJyYW5kKGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRD
aGVja1ByaXZhdGVCcmFuZChiYXNlLCBwcml2YXRlQnJhbmRTeW1ib2wpOworCisgICAgICAgICAg
ICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZHN0LCBzY29wZS5nZXQoKSwgdmFy
LCBUaHJvd0lmTm90Rm91bmQpOworICAgICAgICB9CisKICAgICAgICAgVmFyaWFibGUgdmFyID0g
Z2VuZXJhdG9yLnZhcmlhYmxlKG1faWRlbnQpOwogICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KCF2YXIubG9jYWwoKSwgIlByaXZhdGUgRmllbGQgbmFtZXMgbXVzdCBiZSBzdG9yZWQgaW4gY2Fw
dHVyZWQgdmFyaWFibGVzIik7CiAKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0g
Z2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKICAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAg
ICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShwcml2YXRlTmFtZS5nZXQoKSwgc2NvcGUu
Z2V0KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQpOwotICAgICAgICByZXR1cm4gZ2VuZXJh
dG9yLmVtaXREaXJlY3RHZXRCeVZhbChkc3QsIGJhc2UsIHByaXZhdGVOYW1lLmdldCgpKTsKKyAg
ICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZU5hbWUoZHN0LCBiYXNlLCBwcml2
YXRlTmFtZS5nZXQoKSk7CiAgICAgfQogCiAgICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkg
ewpAQCAtOTE4LDcgKzkzNiwxOCBAQCBSZWdpc3RlcklEKiBCYXNlRG90Tm9kZTo6ZW1pdEdldFBy
b3BlcnR5VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaQogCiBSZWdpc3Rl
cklEKiBCYXNlRG90Tm9kZTo6ZW1pdFB1dFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZWZQdHI8UmVnaXN0
ZXJJRD4mIHRoaXNWYWx1ZSkKIHsKLSAgICBpZiAoaXNQcml2YXRlRmllbGQoKSkgeworICAgIGlm
IChpc1ByaXZhdGVNZW1iZXIoKSkgeworICAgICAgICBhdXRvIGlkZW50aWZpZXJOYW1lID0gaWRl
bnRpZmllcigpOworICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzUHJpdmF0ZU1ldGhvZChpZGVudGlm
aWVyTmFtZSkpIHsKKyAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJs
ZShpZGVudGlmaWVyTmFtZSk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUg
PSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOworCisgICAgICAgICAg
ICBSZWdpc3RlcklEKiBwcml2YXRlQnJhbmRTeW1ib2wgPSBnZW5lcmF0b3IuZW1pdEdldFByaXZh
dGVCcmFuZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpKTsKKyAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0Q2hlY2tQcml2YXRlQnJhbmQoYmFzZSwgcHJpdmF0ZUJyYW5kU3lt
Ym9sKTsKKworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvd1R5cGVFcnJvcigiVHJ5aW5n
IHRvIGFjY2VzcyBhIG5vdCBkZWZpbmVkIHByaXZhdGUgc2V0dGVyIik7CisgICAgICAgIH0KKwog
ICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUobV9pZGVudCk7CiAgICAg
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXZhci5sb2NhbCgpLCAiUHJpdmF0ZSBGaWVsZCBuYW1l
cyBtdXN0IGJlIHN0b3JlZCBpbiBjYXB0dXJlZCB2YXJpYWJsZXMiKTsKIApAQCAtMTA3MiwxMiAr
MTEwMSwxNCBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZQogICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRQdXRUaGlzVG9BcnJvd0Z1bmN0aW9uQ29udGV4dFNjb3BlKCk7CiAKICAgICAgICAgLy8g
SW5pdGlhbGl6ZSBpbnN0YW5jZSBmaWVsZHMgYWZ0ZXIgc3VwZXItY2FsbC4KKyAgICAgICAgaWYg
KE9wdGlvbnM6OnVzZVByaXZhdGVNZXRob2RzKCkgJiYgZ2VuZXJhdG9yLnByaXZhdGVCcmFuZFJl
cXVpcmVtZW50KCkgPT0gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5lZWRlZCkKKyAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0SW5zdGFsbFByaXZhdGVCcmFuZChnZW5lcmF0b3IudGhpc1JlZ2lz
dGVyKCkpOworCiAgICAgICAgIGlmIChPcHRpb25zOjp1c2VQdWJsaWNDbGFzc0ZpZWxkcygpICYm
IGdlbmVyYXRvci5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpID09IE5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyOjpZZXMpIHsKICAgICAgICAgICAgIEFTU0VSVChnZW5lcmF0b3IuaXNDb25z
dHJ1Y3RvcigpIHx8IGdlbmVyYXRvci5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSk7CiAg
ICAgICAgICAgICBmdW5jID0gZ2VuZXJhdG9yLmVtaXRMb2FkRGVyaXZlZENvbnN0cnVjdG9yKCk7
CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEluc3RhbmNlRmllbGRJbml0aWFsaXphdGlvbklm
TmVlZGVkKGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSwgZnVuYy5nZXQoKSwgZGl2b3QoKSwgZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgfQotCiAgICAgICAgIHJldHVybiByZXQ7
CiAgICAgfQogCkBAIC0yMjQyLDE0ICsyMjczLDE0IEBAIFJlZ2lzdGVySUQqIFBvc3RmaXhOb2Rl
OjplbWl0RG90KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkK
IAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZG90QWNjZXNzb3ItPmRpdm90KCks
IGRvdEFjY2Vzc29yLT5kaXZvdFN0YXJ0KCksIGRvdEFjY2Vzc29yLT5kaXZvdEVuZCgpKTsKIAot
ICAgIGlmIChkb3RBY2Nlc3Nvci0+aXNQcml2YXRlRmllbGQoKSkgeworICAgIGlmIChkb3RBY2Nl
c3Nvci0+aXNQcml2YXRlTWVtYmVyKCkpIHsKICAgICAgICAgQVNTRVJUKCFiYXNlSXNTdXBlcik7
CiAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudCk7CiAgICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3Bl
KG51bGxwdHIsIHZhcik7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9
IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9t
U2NvcGUocHJpdmF0ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5v
dEZvdW5kKTsKIAotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3Iu
ZW1pdERpcmVjdEdldEJ5VmFsKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgYmFzZS5nZXQoKSwg
cHJpdmF0ZU5hbWUuZ2V0KCkpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBn
ZW5lcmF0b3IuZW1pdEdldFByaXZhdGVOYW1lKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgYmFz
ZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCkpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
b2xkVmFsdWUgPSBlbWl0UG9zdEluY09yRGVjKGdlbmVyYXRvciwgZ2VuZXJhdG9yLnRlbXBEZXN0
aW5hdGlvbihkc3QpLCB2YWx1ZS5nZXQoKSwgbV9vcGVyYXRvcik7CiAgICAgICAgIGdlbmVyYXRv
ci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsK
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcml2YXRlRmllbGRQdXQoYmFzZS5nZXQoKSwgcHJpdmF0
ZU5hbWUuZ2V0KCksIHZhbHVlLmdldCgpKTsKQEAgLTI0ODEsMTQgKzI1MTIsMTQgQEAgUmVnaXN0
ZXJJRCogUHJlZml4Tm9kZTo6ZW1pdERvdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkc3QpCiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRvdEFj
Y2Vzc29yLT5kaXZvdCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RTdGFydCgpLCBkb3RBY2Nlc3Nvci0+
ZGl2b3RFbmQoKSk7CiAgICAgUmVnaXN0ZXJJRCogdmFsdWU7Ci0gICAgaWYgKGRvdEFjY2Vzc29y
LT5pc1ByaXZhdGVGaWVsZCgpKSB7CisgICAgaWYgKGRvdEFjY2Vzc29yLT5pc1ByaXZhdGVNZW1i
ZXIoKSkgewogICAgICAgICBBU1NFUlQoIWJhc2VOb2RlLT5pc1N1cGVyTm9kZSgpKTsKICAgICAg
ICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGlkZW50KTsKICAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0
ciwgdmFyKTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJh
dG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShw
cml2YXRlTmFtZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQp
OwogCi0gICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXREaXJlY3RHZXRCeVZhbChwcm9wRHN0
LmdldCgpLCBiYXNlLmdldCgpLCBwcml2YXRlTmFtZS5nZXQoKSk7CisgICAgICAgIHZhbHVlID0g
Z2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlTmFtZShwcm9wRHN0LmdldCgpLCBiYXNlLmdldCgpLCBw
cml2YXRlTmFtZS5nZXQoKSk7CiAgICAgICAgIGVtaXRJbmNPckRlYyhnZW5lcmF0b3IsIHZhbHVl
LCBtX29wZXJhdG9yKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZv
dCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdFBy
aXZhdGVGaWVsZFB1dChiYXNlLmdldCgpLCBwcml2YXRlTmFtZS5nZXQoKSwgdmFsdWUpOwpAQCAt
NDg4MSw2ICs0OTEyLDEzIEBAIFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAgICAgaWYgKG1fbmVl
ZHNMZXhpY2FsU2NvcGUpCiAgICAgICAgIGdlbmVyYXRvci5wdXNoTGV4aWNhbFNjb3BlKHRoaXMs
IEJ5dGVjb2RlR2VuZXJhdG9yOjpURFpDaGVja09wdGltaXphdGlvbjo6T3B0aW1pemUsIEJ5dGVj
b2RlR2VuZXJhdG9yOjpOZXN0ZWRTY29wZVR5cGU6OklzTmVzdGVkKTsKIAorICAgIGJvb2wgaGFz
UHJpdmF0ZU5hbWVzID0gISFtX2xleGljYWxWYXJpYWJsZXMucHJpdmF0ZU5hbWVzU2l6ZSgpOwor
ICAgIGJvb2wgc2hvdWxkRW1pdFByaXZhdGVCcmFuZCA9IG1fbGV4aWNhbFZhcmlhYmxlcy5oYXNQ
cml2YXRlTWV0aG9kT3JBY2Nlc3NvcigpOworICAgIGlmIChoYXNQcml2YXRlTmFtZXMpCisgICAg
ICAgIGdlbmVyYXRvci5wdXNoUHJpdmF0ZUFjY2Vzc05hbWVzKG1fbGV4aWNhbFZhcmlhYmxlcy5w
cml2YXRlTmFtZUVudmlyb25tZW50KCkpOworICAgIGlmIChzaG91bGRFbWl0UHJpdmF0ZUJyYW5k
KQorICAgICAgICBnZW5lcmF0b3IuZW1pdENyZWF0ZVByaXZhdGVCcmFuZChnZW5lcmF0b3Iuc2Nv
cGVSZWdpc3RlcigpLCBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uKTsKKwogICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBzdXBlcmNsYXNzOwogICAgIGlmIChtX2NsYXNzSGVyaXRhZ2Up
IHsKICAgICAgICAgc3VwZXJjbGFzcyA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKQEAgLTQ4
OTEsMTcgKzQ5MjksMTggQEAgUmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKICAgICBib29sIG5lZWRz
SG9tZU9iamVjdCA9IGZhbHNlOwogCiAgICAgYXV0byBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
ciA9IHRoaXMtPmhhc0luc3RhbmNlRmllbGRzKCkgPyBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
cjo6WWVzIDogTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vOwotCisgICAgYXV0byBwcml2
YXRlQnJhbmRSZXF1aXJlbWVudCA9IHNob3VsZEVtaXRQcml2YXRlQnJhbmQgPyBQcml2YXRlQnJh
bmRSZXF1aXJlbWVudDo6TmVlZGVkIDogUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmU7CiAg
ICAgaWYgKG1fY29uc3RydWN0b3JFeHByZXNzaW9uKSB7CiAgICAgICAgIEFTU0VSVChtX2NvbnN0
cnVjdG9yRXhwcmVzc2lvbi0+aXNGdW5jRXhwck5vZGUoKSk7CiAgICAgICAgIEZ1bmN0aW9uTWV0
YWRhdGFOb2RlKiBtZXRhZGF0YSA9IHN0YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+KG1fY29uc3Ry
dWN0b3JFeHByZXNzaW9uKS0+bWV0YWRhdGEoKTsKICAgICAgICAgbWV0YWRhdGEtPnNldEVjbWFO
YW1lKGVjbWFOYW1lKCkpOwogICAgICAgICBtZXRhZGF0YS0+c2V0Q2xhc3NTb3VyY2UobV9jbGFz
c1NvdXJjZSk7CiAgICAgICAgIG1ldGFkYXRhLT5zZXROZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
cihuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9PSBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
cjo6WWVzKTsKKyAgICAgICAgbWV0YWRhdGEtPnNldFByaXZhdGVCcmFuZFJlcXVpcmVtZW50KHBy
aXZhdGVCcmFuZFJlcXVpcmVtZW50KTsKICAgICAgICAgY29uc3RydWN0b3IgPSBnZW5lcmF0b3Iu
ZW1pdE5vZGUoY29uc3RydWN0b3IuZ2V0KCksIG1fY29uc3RydWN0b3JFeHByZXNzaW9uKTsKICAg
ICAgICAgbmVlZHNIb21lT2JqZWN0ID0gbV9jbGFzc0hlcml0YWdlIHx8IG1ldGFkYXRhLT5zdXBl
ckJpbmRpbmcoKSA9PSBTdXBlckJpbmRpbmc6Ok5lZWRlZDsKICAgICB9IGVsc2UKLSAgICAgICAg
Y29uc3RydWN0b3IgPSBnZW5lcmF0b3IuZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3Rvcihjb25zdHJ1
Y3Rvci5nZXQoKSwgbV9jbGFzc0hlcml0YWdlID8gQ29uc3RydWN0b3JLaW5kOjpFeHRlbmRzIDog
Q29uc3RydWN0b3JLaW5kOjpCYXNlLCBtX25hbWUsIGVjbWFOYW1lKCksIG1fY2xhc3NTb3VyY2Us
IG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsKKyAgICAgICAgY29uc3RydWN0b3IgPSBnZW5l
cmF0b3IuZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3Rvcihjb25zdHJ1Y3Rvci5nZXQoKSwgbV9jbGFz
c0hlcml0YWdlID8gQ29uc3RydWN0b3JLaW5kOjpFeHRlbmRzIDogQ29uc3RydWN0b3JLaW5kOjpC
YXNlLCBtX25hbWUsIGVjbWFOYW1lKCksIG1fY2xhc3NTb3VyY2UsIG5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyLCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7CiAKICAgICBjb25zdCBhdXRvJiBw
cm9wZXJ0eU5hbWVzID0gZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKTsKICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gcHJvdG90eXBlID0gZ2VuZXJhdG9yLmVtaXROZXdPYmplY3QoZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpKTsKQEAgLTQ5NjgsNiArNTAwNyw5IEBAIFJlZ2lzdGVySUQqIENsYXNzRXhw
ck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklECiAgICAgICAgIGdlbmVyYXRvci5wb3BMZXhpY2FsU2NvcGUodGhpcyk7CiAgICAgfQogCisg
ICAgaWYgKGhhc1ByaXZhdGVOYW1lcykKKyAgICAgICAgZ2VuZXJhdG9yLnBvcFByaXZhdGVBY2Nl
c3NOYW1lcygpOworCiAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGdlbmVyYXRvci5maW5hbERl
c3RpbmF0aW9uKGRzdCwgY29uc3RydWN0b3IuZ2V0KCkpLCBjb25zdHJ1Y3Rvci5nZXQoKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNh
bGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxs
RnJhbWUuY3BwCmluZGV4IDg3N2U2MzI1NTBiYy4uNzQwYWQ4MmM3OTU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKQEAg
LTI1OSwxMSArMjU5LDExIEBAIEpTVmFsdWUgRGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlV2l0
aFNjb3BlRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBKU09iCiAgICAgICAgIGV2YWxD
b250ZXh0VHlwZSA9IEV2YWxDb250ZXh0VHlwZTo6Tm9uZTsKIAogICAgIFREWkVudmlyb25tZW50
IHZhcmlhYmxlc1VuZGVyVERaOwotICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgcHJpdmF0ZU5hbWVz
OwotICAgIEpTU2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFooc2NvcGUoKS0+
anNTY29wZSgpLCB2YXJpYWJsZXNVbmRlclREWiwgcHJpdmF0ZU5hbWVzKTsKKyAgICBQcml2YXRl
TmFtZUVudmlyb25tZW50IHByaXZhdGVOYW1lRW52aXJvbm1lbnQ7CisgICAgSlNTY29wZTo6Y29s
bGVjdENsb3N1cmVWYXJpYWJsZXNVbmRlclREWihzY29wZSgpLT5qc1Njb3BlKCksIHZhcmlhYmxl
c1VuZGVyVERaLCBwcml2YXRlTmFtZUVudmlyb25tZW50KTsKIAogICAgIEVDTUFNb2RlIGVjbWFN
b2RlID0gY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJblN0cmljdENvbnRleHQoKSA/
IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpzbG9wcHkoKTsKLSAgICBhdXRvKiBldmFs
ID0gRGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShnbG9iYWxPYmplY3QsIG1ha2VTb3VyY2Uo
c2NyaXB0LCBjYWxsRnJhbWUtPmNhbGxlclNvdXJjZU9yaWdpbih2bSkpLCBjb2RlQmxvY2stPnVu
bGlua2VkQ29kZUJsb2NrKCktPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBjb2RlQmxvY2stPnVubGlu
a2VkQ29kZUJsb2NrKCktPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGNvZGVCbG9jay0+
dW5saW5rZWRDb2RlQmxvY2soKS0+aXNBcnJvd0Z1bmN0aW9uKCksIGNvZGVCbG9jay0+b3duZXJF
eGVjdXRhYmxlKCktPmlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbigpLCBldmFsQ29udGV4dFR5cGUs
ICZ2YXJpYWJsZXNVbmRlclREWiwgJnByaXZhdGVOYW1lcywgZWNtYU1vZGUpOworICAgIGF1dG8q
IGV2YWwgPSBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgbWFrZVNv
dXJjZShzY3JpcHQsIGNhbGxGcmFtZS0+Y2FsbGVyU291cmNlT3JpZ2luKHZtKSksIGNvZGVCbG9j
ay0+dW5saW5rZWRDb2RlQmxvY2soKS0+ZGVyaXZlZENvbnRleHRUeXBlKCksIGNvZGVCbG9jay0+
dW5saW5rZWRDb2RlQmxvY2soKS0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgY29kZUJs
b2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5wcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpLCBjb2Rl
QmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmlzQXJyb3dGdW5jdGlvbigpLCBjb2RlQmxvY2st
Pm93bmVyRXhlY3V0YWJsZSgpLT5pc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24oKSwgZXZhbENvbnRl
eHRUeXBlLCAmdmFyaWFibGVzVW5kZXJURFosICZwcml2YXRlTmFtZUVudmlyb25tZW50LCBlY21h
TW9kZSk7CiAgICAgaWYgKFVOTElLRUxZKGNhdGNoU2NvcGUuZXhjZXB0aW9uKCkpKSB7CiAgICAg
ICAgIGV4Y2VwdGlvbiA9IGNhdGNoU2NvcGUuZXhjZXB0aW9uKCk7CiAgICAgICAgIGNhdGNoU2Nv
cGUuY2xlYXJFeGNlcHRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKaW5kZXggZmQ4NzE0YTI1MDkyLi4wMzdiZmE4YTRjZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC00
NzMzLDggKzQ3MzMsOSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRQcml2YXRlTmFt
ZUJ5SWQoCiAgICAgQVNTRVJUKCFnZXRCeVN0YXR1cy5pc0N1c3RvbSgpKTsKICAgICBBU1NFUlQo
IWdldEJ5U3RhdHVzLm1ha2VzQ2FsbHMoKSk7CiAgICAgaWYgKCFnZXRCeVN0YXR1cy5pc1NpbXBs
ZSgpIHx8ICFnZXRCeVN0YXR1cy5udW1WYXJpYW50cygpIHx8ICFPcHRpb25zOjp1c2VBY2Nlc3NJ
bmxpbmluZygpKSB7Ci0gICAgICAgIHNldChkZXN0aW5hdGlvbiwKLSAgICAgICAgICAgIGFkZFRv
R3JhcGgoR2V0UHJpdmF0ZU5hbWVCeUlkLCBPcEluZm8oaWRlbnRpZmllciksIE9wSW5mbyhwcmVk
aWN0aW9uKSwgYmFzZSwgbnVsbHB0cikpOworICAgICAgICBOb2RlKiBub2RlID0gYWRkVG9HcmFw
aChHZXRQcml2YXRlTmFtZUJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKHByZWRpY3Rp
b24pLCBiYXNlLCBudWxscHRyKTsKKyAgICAgICAgaWYgKGRlc3RpbmF0aW9uLmlzVmFsaWQoKSkK
KyAgICAgICAgICAgIHNldChkZXN0aW5hdGlvbiwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTQ3NDIsOCArNDc0Myw5IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdl
dFByaXZhdGVOYW1lQnlJZCgKICAgICAgICAgaWYgKCFtX2dyYXBoLm1fcGxhbi5pc0ZUTCgpCiAg
ICAgICAgICAgICB8fCAhT3B0aW9uczo6dXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZygpCiAg
ICAgICAgICAgICB8fCBnZXRCeVN0YXR1cy5udW1WYXJpYW50cygpID4gT3B0aW9uczo6bWF4UG9s
eW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXplKCkpIHsKLSAgICAgICAgICAgIHNldChkZXN0
aW5hdGlvbiwKLSAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEdldFByaXZhdGVOYW1lQnlJZCwg
T3BJbmZvKGlkZW50aWZpZXIpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UsIG51bGxwdHIpKTsK
KyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBhZGRUb0dyYXBoKEdldFByaXZhdGVOYW1lQnlJZCwg
T3BJbmZvKGlkZW50aWZpZXIpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UsIG51bGxwdHIpOwor
ICAgICAgICAgICAgaWYgKGRlc3RpbmF0aW9uLmlzVmFsaWQoKSkKKyAgICAgICAgICAgICAgICBz
ZXQoZGVzdGluYXRpb24sIG5vZGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
QEAgLTQ3NjYsOCArNDc2OCw5IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldFByaXZh
dGVOYW1lQnlJZCgKICAgICAgICAgTXVsdGlHZXRCeU9mZnNldERhdGEqIGRhdGEgPSBtX2dyYXBo
Lm1fbXVsdGlHZXRCeU9mZnNldERhdGEuYWRkKCk7CiAgICAgICAgIGRhdGEtPmNhc2VzID0gY2Fz
ZXM7CiAgICAgICAgIGRhdGEtPmlkZW50aWZpZXJOdW1iZXIgPSBpZGVudGlmaWVyTnVtYmVyOwot
ICAgICAgICBzZXQoZGVzdGluYXRpb24sCi0gICAgICAgICAgICBhZGRUb0dyYXBoKE11bHRpR2V0
QnlPZmZzZXQsIE9wSW5mbyhkYXRhKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBiYXNlKSk7CisgICAg
ICAgIE5vZGUqIG5vZGUgPSBhZGRUb0dyYXBoKE11bHRpR2V0QnlPZmZzZXQsIE9wSW5mbyhkYXRh
KSwgT3BJbmZvKHByZWRpY3Rpb24pLCBiYXNlKTsKKyAgICAgICAgaWYgKGRlc3RpbmF0aW9uLmlz
VmFsaWQoKSkKKyAgICAgICAgICAgIHNldChkZXN0aW5hdGlvbiwgbm9kZSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTQ3ODEsOCArNDc4NCw5IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUdldFByaXZhdGVOYW1lQnlJZCgKIAogICAgIE5vZGUqIGxvYWRlZFZhbHVlID0gbG9h
ZChwcmVkaWN0aW9uLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YXJpYW50KTsKICAgICBpZiAo
IWxvYWRlZFZhbHVlKSB7Ci0gICAgICAgIHNldChkZXN0aW5hdGlvbiwKLSAgICAgICAgICAgIGFk
ZFRvR3JhcGgoR2V0UHJpdmF0ZU5hbWVCeUlkLCBPcEluZm8oaWRlbnRpZmllciksIE9wSW5mbyhw
cmVkaWN0aW9uKSwgYmFzZSwgbnVsbHB0cikpOworICAgICAgICBOb2RlKiBub2RlID0gYWRkVG9H
cmFwaChHZXRQcml2YXRlTmFtZUJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKHByZWRp
Y3Rpb24pLCBiYXNlLCBudWxscHRyKTsKKyAgICAgICAgaWYgKGRlc3RpbmF0aW9uLmlzVmFsaWQo
KSkKKyAgICAgICAgICAgIHNldChkZXN0aW5hdGlvbiwgbm9kZSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTQ3OTAsNyArNDc5NCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUdldFByaXZhdGVOYW1lQnlJZCgKICAgICAgICAgbV9ncmFwaC5jb21waWxhdGlvbigpLT5ub3Rp
Y2VJbmxpbmVkR2V0QnlJZCgpOwogCiAgICAgQVNTRVJUKCF2YXJpYW50LmNhbGxMaW5rU3RhdHVz
KCkpOwotICAgIGlmICh2YXJpYW50LmludHJpbnNpYygpID09IE5vSW50cmluc2ljKQorICAgIGlm
ICh2YXJpYW50LmludHJpbnNpYygpID09IE5vSW50cmluc2ljICYmIGRlc3RpbmF0aW9uLmlzVmFs
aWQoKSkKICAgICAgICAgc2V0KGRlc3RpbmF0aW9uLCBsb2FkZWRWYWx1ZSk7CiB9CiAKQEAgLTY0
NDgsMTIgKzY0NTIsMTYgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25l
ZCBsaW1pdCkKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAg
IC8vIFNpbmNlIHdlIGRvbid0IHVzZSB0aGUgcmV0dXJuIG9mIHByaXZhdGUgYnJhbmQgY2hlY2ss
IHdlIGRvbid0IG5lZWQgdG8gc2V0IHJlc3VsdCBoZXJlLgorICAgICAgICAgICAgLy8gVGhpcyBo
ZWxwcyB1cyBEQ0UgR2V0QnlPZmZzZXQgZm9yIHRoaXMgY2FzZS4KKyAgICAgICAgICAgIFZpcnR1
YWxSZWdpc3RlciBkZXN0aW5hdGlvbiA9IG1fZ3JhcGgubV9wcml2YXRlQnJhbmRBY2Nlc3MuY29u
dGFpbnMocHJvcGVydHkpID8gVmlydHVhbFJlZ2lzdGVyKCkgOiBieXRlY29kZS5tX2RzdDsKICAg
ICAgICAgICAgIGlmIChjb21waWxlU2luZ2xlSWRlbnRpZmllcikKLSAgICAgICAgICAgICAgICBo
YW5kbGVHZXRQcml2YXRlTmFtZUJ5SWQoYnl0ZWNvZGUubV9kc3QsIHByZWRpY3Rpb24sIGJhc2Us
IGlkZW50aWZpZXIsIGlkZW50aWZpZXJOdW1iZXIsIGdldEJ5U3RhdHVzKTsKKyAgICAgICAgICAg
ICAgICBoYW5kbGVHZXRQcml2YXRlTmFtZUJ5SWQoZGVzdGluYXRpb24sIHByZWRpY3Rpb24sIGJh
c2UsIGlkZW50aWZpZXIsIGlkZW50aWZpZXJOdW1iZXIsIGdldEJ5U3RhdHVzKTsKICAgICAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBhZGRUb0dyYXBoKEdldFBy
aXZhdGVOYW1lLCBPcEluZm8oKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBiYXNlLCBwcm9wZXJ0eSk7
CiAgICAgICAgICAgICAgICAgbV9leGl0T0sgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBzZXQo
Ynl0ZWNvZGUubV9kc3QsIG5vZGUpOworICAgICAgICAgICAgICAgIGlmIChkZXN0aW5hdGlvbi5p
c1ZhbGlkKCkpCisgICAgICAgICAgICAgICAgICAgIHNldChkZXN0aW5hdGlvbiwgbm9kZSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfcHJpdmF0ZV9uYW1l
KTsKICAgICAgICAgfQpAQCAtNzcyOSwxMiArNzczNywyMSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgICAgIC8vIHByZWRpY3Rp
b24sIHdlJ2Qgb3RoZXJ3aXNlIHRoaW5rIHRoYXQgaXQgaGFzIHRvIGV4aXQuIFRoZW4gd2hlbiBp
dCBkaWQgZXhlY3V0ZSwgd2UKICAgICAgICAgICAgICAgICAvLyB3b3VsZCByZWNvbXBpbGUuIEJ1
dCBpZiB3ZSBjYW4gZm9sZCBpdCBoZXJlLCB3ZSBhdm9pZCB0aGUgZXhpdC4KICAgICAgICAgICAg
ICAgICBpZiAoSlNWYWx1ZSB2YWx1ZSA9IG1fZ3JhcGgudHJ5R2V0Q29uc3RhbnRDbG9zdXJlVmFy
KHNjb3BlTm9kZSwgU2NvcGVPZmZzZXQob3BlcmFuZCkpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHNldChieXRlY29kZS5tX2RzdCwgd2Vha0pTQ29uc3RhbnQodmFsdWUpKTsKKyAgICAgICAgICAg
ICAgICAgICAgTm9kZSogbm9kZSA9IHdlYWtKU0NvbnN0YW50KHZhbHVlKTsKKyAgICAgICAgICAg
ICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBub2RlKTsKKworICAgICAgICAgICAgICAgICAg
ICBpZiAodWlkICYmIHVpZCA9PSBtX2dyYXBoLm1fdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkucHJpdmF0ZUJyYW5kUHJpdmF0ZU5hbWUoKS5pbXBsKCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICBtX2dyYXBoLm1fcHJpdmF0ZUJyYW5kQWNjZXNzLmFkZChub2RlKTsKKwogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
U3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb24oKTsKLSAgICAgICAgICAg
ICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsCi0gICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgo
R2V0Q2xvc3VyZVZhciwgT3BJbmZvKG9wZXJhbmQpLCBPcEluZm8ocHJlZGljdGlvbiksIHNjb3Bl
Tm9kZSkpOworICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBhZGRUb0dyYXBoKEdldENsb3N1
cmVWYXIsIE9wSW5mbyhvcGVyYW5kKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBzY29wZU5vZGUpOwor
ICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgbm9kZSk7CisKKyAgICAgICAgICAg
ICAgICBpZiAodWlkICYmIHVpZCA9PSBtX2dyYXBoLm1fdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkucHJpdmF0ZUJyYW5kUHJpdmF0ZU5hbWUoKS5pbXBsKCkpCisgICAgICAgICAgICAg
ICAgICAgIG1fZ3JhcGgubV9wcml2YXRlQnJhbmRBY2Nlc3MuYWRkKG5vZGUpOworCiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIFVucmVzb2x2
ZWRQcm9wZXJ0eToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2Fw
YWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVz
LmNwcAppbmRleCBiMDYxNTBmY2NmNGMuLmFhMTk0NWFjNzY2YSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjk0LDYgKzI5NCw4IEBAIENh
cGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9j
ayogY29kZUJsb2NrLCBjb25zdCBJCiAgICAgY2FzZSBvcF9zdXBlcl9zYW1wbGVyX2VuZDoKICAg
ICBjYXNlIG9wX2dldF9wcml2YXRlX25hbWU6CiAgICAgY2FzZSBvcF9wdXRfcHJpdmF0ZV9uYW1l
OgorICAgIGNhc2Ugb3Bfc2V0X3ByaXZhdGVfYnJhbmQ6CisgICAgY2FzZSBvcF9jaGVja19wcml2
YXRlX2JyYW5kOgogICAgICAgICByZXR1cm4gQ2FuQ29tcGlsZUFuZElubGluZTsKIAogICAgIGNh
c2Ugb3Bfc3dpdGNoX3N0cmluZzogLy8gRG9uJ3QgaW5saW5lIGJlY2F1c2Ugd2UgZG9uJ3Qgd2Fu
dCB0byBjb3B5IHN0cmluZyB0YWJsZXMgaW4gdGhlIGNvbmN1cnJlbnQgSklULgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5oCmluZGV4IGIzYTliZmY1Y2QyYS4uOTc0ZmZmYzJlZWYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBAIC0xMTgyLDYgKzExODIsNyBAQCBw
dWJsaWM6CiAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzeW1ib2xTdHJ1Y3R1cmU7CiAKICAgICBI
YXNoU2V0PE5vZGUqPiBtX3Nsb3dHZXRCeVZhbDsKKyAgICBIYXNoU2V0PE5vZGUqPiBtX3ByaXZh
dGVCcmFuZEFjY2VzczsKIAogcHJpdmF0ZToKICAgICBib29sIGlzU3RyaW5nUHJvdG90eXBlTWV0
aG9kU2FuZShKU0dsb2JhbE9iamVjdCosIFVuaXF1ZWRTdHJpbmdJbXBsKik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCBjMDdm
ZGUwNzk5MGIuLjI5YTdhNzE4NTllMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC0xNDQsOSArMTQ0LDkgQEAgSlNWYWx1ZSBl
dmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBF
Q01BTW9kZSBlY21hTW8KICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgVERaRW52aXJvbm1l
bnQgdmFyaWFibGVzVW5kZXJURFo7Ci0gICAgICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgcHJpdmF0
ZU5hbWVzOwotICAgICAgICBKU1Njb3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERa
KGNhbGxlclNjb3BlQ2hhaW4sIHZhcmlhYmxlc1VuZGVyVERaLCBwcml2YXRlTmFtZXMpOwotICAg
ICAgICBldmFsID0gRGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShnbG9iYWxPYmplY3QsIG1h
a2VTb3VyY2UocHJvZ3JhbVNvdXJjZSwgY2FsbGVyQ29kZUJsb2NrLT5zb3VyY2UoKS5wcm92aWRl
cigpLT5zb3VyY2VPcmlnaW4oKSksIGRlcml2ZWRDb250ZXh0VHlwZSwgY2FsbGVyVW5saW5rZWRD
b2RlQmxvY2stPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGlzQXJyb3dGdW5jdGlvbkNv
bnRleHQsIGNhbGxlckNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5zaWRlT3JkaW5h
cnlGdW5jdGlvbigpLCBldmFsQ29udGV4dFR5cGUsICZ2YXJpYWJsZXNVbmRlclREWiwgJnByaXZh
dGVOYW1lcywgZWNtYU1vZGUpOworICAgICAgICBQcml2YXRlTmFtZUVudmlyb25tZW50IHByaXZh
dGVOYW1lRW52aXJvbm1lbnQ7CisgICAgICAgIEpTU2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFi
bGVzVW5kZXJURFooY2FsbGVyU2NvcGVDaGFpbiwgdmFyaWFibGVzVW5kZXJURFosIHByaXZhdGVO
YW1lRW52aXJvbm1lbnQpOworICAgICAgICBldmFsID0gRGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNy
ZWF0ZShnbG9iYWxPYmplY3QsIG1ha2VTb3VyY2UocHJvZ3JhbVNvdXJjZSwgY2FsbGVyQ29kZUJs
b2NrLT5zb3VyY2UoKS5wcm92aWRlcigpLT5zb3VyY2VPcmlnaW4oKSksIGRlcml2ZWRDb250ZXh0
VHlwZSwgY2FsbGVyVW5saW5rZWRDb2RlQmxvY2stPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
KCksIGNhbGxlclVubGlua2VkQ29kZUJsb2NrLT5wcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpLCBp
c0Fycm93RnVuY3Rpb25Db250ZXh0LCBjYWxsZXJDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgp
LT5pc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24oKSwgZXZhbENvbnRleHRUeXBlLCAmdmFyaWFibGVz
VW5kZXJURFosICZwcml2YXRlTmFtZUVudmlyb25tZW50LCBlY21hTW9kZSk7CiAgICAgICAgIEVY
Q0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhZXZhbCk7CiAgICAgICAgIGlm
ICghZXZhbCkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCmluZGV4IGNlODdjODc2NDc3NS4uZDM5ZWJmN2MzMzc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0zNTgsNiArMzU4LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X2lkX2RpcmVjdCkK
ICAgICAgICAgREVGSU5FX09QKG9wX2dldF9ieV92YWwpCiAgICAgICAgIERFRklORV9PUChvcF9n
ZXRfcHJpdmF0ZV9uYW1lKQorICAgICAgICBERUZJTkVfT1Aob3Bfc2V0X3ByaXZhdGVfYnJhbmQp
CisgICAgICAgIERFRklORV9PUChvcF9jaGVja19wcml2YXRlX2JyYW5kKQogICAgICAgICBERUZJ
TkVfT1Aob3BfZ2V0X3Byb3RvdHlwZV9vZikKICAgICAgICAgREVGSU5FX09QKG9wX292ZXJyaWRl
c19oYXNfaW5zdGFuY2UpCiAgICAgICAgIERFRklORV9PUChvcF9pbnN0YW5jZW9mKQpAQCAtNTY0
LDYgKzU2Niw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAg
IERFRklORV9TTE9XQ0FTRV9PUChvcF9nZXRfYnlfaWRfZGlyZWN0KQogICAgICAgICBERUZJTkVf
U0xPV0NBU0VfT1Aob3BfZ2V0X2J5X3ZhbCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9w
X2dldF9wcml2YXRlX25hbWUpCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9zZXRfcHJp
dmF0ZV9icmFuZCkKKyAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2NoZWNrX3ByaXZhdGVf
YnJhbmQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9pbnN0YW5jZW9mKQogICAgICAg
ICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfaW5zdGFuY2VvZl9jdXN0b20pCiAgICAgICAgIERFRklO
RV9TTE9XQ0FTRV9PUChvcF9qbGVzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDc4ZTc5
MTg0ZWEzZC4uZDQ0YmNkYmU1MzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTU1NSw2
ICs1NTUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9ieV9p
ZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9wcml2
YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3NldF9w
cml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9j
aGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9nZXRfYXJndW1lbnRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZv
aWQgZW1pdF9vcF9nZXRfcHJvdG90eXBlX29mKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAg
IHZvaWQgZW1pdF9vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOwpAQCAtNjg3LDYgKzY4
OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9ieV9p
ZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBl
bWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX3NldF9w
cml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQo
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAg
ICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbChjb25zdCBJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBl
bWl0U2xvd19vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pbnN0YW5jZW9mKGNv
bnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggMjM2NjkyYzg1
MjhmLi5lMmMxOTdmYzE5MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcApAQCAtMTA5Miw2ICsxMDkyLDQzIEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMsIHZvaWQsIChKU0dsb2JhbE9iamVjdCoK
ICAgICBkaXJlY3RQdXRCeVZhbChnbG9iYWxPYmplY3QsIGFzT2JqZWN0KGJhc2VWYWx1ZSksIHN1
YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbywgZWNtYU1vZGUpOwogfQogCitKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kR2VuZXJpYywgdm9pZCwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCcmFuZCkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2VWYWx1
ZSk7CisgICAgSlNWYWx1ZSBicmFuZCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQnJhbmQpOwor
CisgICAgQVNTRVJUKGJhc2VWYWx1ZS5pc09iamVjdCgpKTsKKyAgICBBU1NFUlQoYnJhbmQuaXNT
eW1ib2woKSk7CisKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1
ZSk7CisgICAgYmFzZU9iamVjdC0+c2V0UHJpdmF0ZUJyYW5kKGdsb2JhbE9iamVjdCwgYnJhbmQp
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Cit9CisKK0pTQ19ERUZJ
TkVfSklUX09QRVJBVElPTihvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZEdlbmVyaWMsIHZvaWQs
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQnJhbmQpKQoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRC
YXNlVmFsdWUpOworICAgIEpTVmFsdWUgYnJhbmQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJy
YW5kKTsKKworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYmFzZVZhbHVlLnRvT2JqZWN0KGds
b2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKwor
ICAgIEFTU0VSVChicmFuZC5pc1N5bWJvbCgpKTsKKworICAgIGJhc2VPYmplY3QtPmNoZWNrUHJp
dmF0ZUJyYW5kKGdsb2JhbE9iamVjdCwgYnJhbmQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHZvaWQoKSk7Cit9CisKIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Q
dXRQcml2YXRlTmFtZU9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFs
SW5mbywgUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRLaW5kKSkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CkBAIC0yMjcyLDYgKzIzMDksOCBAQCBBTFdBWVNfSU5MSU5FIHN0YXRp
YyBKU1ZhbHVlIGdldFByaXZhdGVOYW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcgogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CiAKICAgICBK
U09iamVjdCogYmFzZSA9IGJhc2VWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CisKICAgICBQcm9wZXJ0eVNsb3Qg
c2xvdChiYXNlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVy
dHkpOwogICAgIGJhc2UtPmdldFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIGZpZWxkTmFtZSwg
c2xvdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKQEAgLTIz
NzgsNyArMjQxNyw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRQcml2
YXRlTmFtZUJ5SWRPcHRpbWl6ZSwgRW5jb2RlZEpTVmFsdWUsIChKCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoc2xvdC5nZXRWYWx1ZShnbG9iYWxPYmplY3QsIGZpZWxkTmFtZSkpOwog
ICAgIH0KIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2V0UHJpdmF0ZU5hbWUoZ2xvYmFs
T2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VWYWx1ZSwgZmllbGROYW1lKSk7CisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZ2V0UHJpdmF0ZU5hbWUoZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUsIGJhc2VWYWx1ZSwgZmllbGROYW1lKSkpOwogfQogCiBKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVCeUlkR2VuZXJpYywgRW5jb2Rl
ZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBi
YXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmllcikpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IGI3NWE3YjEwZTY2YS4uNzMzZGM2MDFhMDIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMTkwLDYg
KzE5MCw5IEBAIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0QnlJZERlZmlu
ZVByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplLCB2b2lkCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvblB1dEJ5SWRTZXRQcml2YXRlRmllbGRTdHJpY3QsIHZvaWQsIChKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSk7CiBKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5SWRTZXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6
ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3Qp
KTsKIAorSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRH
ZW5lcmljLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUpKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ2hlY2tQcml2YXRl
QnJhbmRHZW5lcmljLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUpKTsKKwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRQ
cml2YXRlTmFtZU9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBQcml2YXRlRmll
bGRQdXRLaW5kKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dFByaXZh
dGVOYW1lR2VuZXJpYywgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgUHJpdmF0ZUZpZWxkUHV0
S2luZCkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeVZhbE9wdGlt
aXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCA2MTJjNDhmZmEy
YjguLjkyZTIzYTRlMTI3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTEzOCw2ICsxMzgsNTUgQEAgdm9pZCBKSVQ6OmVtaXRTbG93
X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmUKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwog
fQogCit2b2lkIEpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIC8vIE9PUFM6IEltcGxlbWVudCB0aGlzCisg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BTZXRQcml2YXRlQnJh
bmQ+KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAg
VmlydHVhbFJlZ2lzdGVyIGJyYW5kID0gYnl0ZWNvZGUubV9icmFuZDsKKyAgICBHUFJSZWcgYmFz
ZUdQUiA9IHJlZ1QwOworICAgIEdQUlJlZyBicmFuZEdQUiA9IHJlZ1QxOworICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUdQUik7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihicmFuZCwgYnJhbmRHUFIpOworCisgICAgYWRkU2xvd0Nhc2UoanVtcCgpKTsKK30KKwordm9p
ZCBKSVQ6OmVtaXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
Cit7CisgICAgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKKyAgICBHUFJSZWcgYnJhbmRHUFIgPSBy
ZWdUMTsKKworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisKKyAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvblNldFByaXZhdGVCcmFuZEdlbmVyaWMsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxv
Y2stPmdsb2JhbE9iamVjdCgpKSwgYmFzZUdQUiwgYnJhbmRHUFIpOworfQorCit2b2lkIEpJVDo6
ZW1pdF9vcF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCit7CisgICAgLy8gT09QUzogSW1wbGVtZW50IHRoaXMKKyAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcENoZWNrUHJpdmF0ZUJyYW5kPigpOworICAg
IFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOworICAgIFZpcnR1YWxSZWdp
c3RlciBicmFuZCA9IGJ5dGVjb2RlLm1fYnJhbmQ7CisgICAgR1BSUmVnIGJhc2VHUFIgPSByZWdU
MDsKKyAgICBHUFJSZWcgYnJhbmRHUFIgPSByZWdUMTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKGJhc2UsIGJhc2VHUFIpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnJhbmQsIGJy
YW5kR1BSKTsKKworICAgIGFkZFNsb3dDYXNlKGp1bXAoKSk7Cit9CisKK3ZvaWQgSklUOjplbWl0
U2xvd19vcF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAg
Ly8gT09QUzogSW1wbGVtZW50IHRoaXMKKyAgICBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOworICAg
IEdQUlJlZyBicmFuZEdQUiA9IHJlZ1QxOworCisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsK
KworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRHZW5lcmljLCBU
cnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGJhc2VHUFIsIGJyYW5k
R1BSKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbF9kaXJlY3QoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0X29wX3B1dF9ieV92YWw8
T3BQdXRCeVZhbERpcmVjdD4oY3VycmVudEluc3RydWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDc3Mjg5NzU3NWRjZS4uOWEy
N2JjZDgzYzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAKQEAgLTEzMDAsNiArMTMwMCw3NyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfcHV0X3ByaXZhdGVfbmFtZSkKICAgICBMTElOVF9FTkQoKTsgICAgCiB9CiAKK0xMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zZXRfcHJpdmF0ZV9icmFuZCkKK3sKKyAgICBMTElO
VF9CRUdJTigpOworCisgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcFNldFByaXZhdGVCcmFu
ZD4oKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRl
Y29kZS5tX2Jhc2UpOworICAgIEpTVmFsdWUgYnJhbmQgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwg
Ynl0ZWNvZGUubV9icmFuZCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0
YShjb2RlQmxvY2spOworICAgIEFTU0VSVChiYXNlVmFsdWUuaXNPYmplY3QoKSk7CisgICAgQVNT
RVJUKGJyYW5kLmlzU3ltYm9sKCkpOworCisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09i
amVjdChiYXNlVmFsdWUpOworICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gYmFzZU9iamVj
dC0+c3RydWN0dXJlKHZtKTsKKworICAgIGJhc2VPYmplY3QtPnNldFByaXZhdGVCcmFuZChnbG9i
YWxPYmplY3QsIGJyYW5kKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKworICAgIGlm
ICghTExJTlRfQUxXQVlTX0FDQ0VTU19TTE9XICYmICFvbGRTdHJ1Y3R1cmUtPmlzRGljdGlvbmFy
eSgpKSB7CisgICAgICAgIEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2Nr
LT5tX2xvY2ssIHZtLmhlYXApOworICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IGJh
c2VPYmplY3QtPnN0cnVjdHVyZSh2bSk7CisKKyAgICAgICAgQVNTRVJUKG9sZFN0cnVjdHVyZSA9
PSBuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7CisgICAgICAgIEFTU0VSVChvbGRTdHJ1Y3R1
cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpOworCisgICAg
ICAgIC8vIFN0YXJ0IG91dCBieSBjbGVhcmluZyBvdXQgdGhlIG9sZCBjYWNoZS4KKyAgICAgICAg
bWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgIG1ldGFkYXRhLm1fbmV3U3Ry
dWN0dXJlSUQgPSAwOworICAgICAgICBtZXRhZGF0YS5tX2JyYW5kLmNsZWFyKCk7CisKKyAgICAg
ICAgaWYgKCFuZXdTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7CisgICAgICAgICAgICBtZXRh
ZGF0YS5tX29sZFN0cnVjdHVyZUlEID0gb2xkU3RydWN0dXJlLT5pZCgpOworICAgICAgICAgICAg
bWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRCA9IG5ld1N0cnVjdHVyZS0+aWQoKTsKKyAgICAgICAg
ICAgIG1ldGFkYXRhLm1fYnJhbmQuc2V0KHZtLCBjb2RlQmxvY2ssIGJyYW5kLmFzQ2VsbCgpKTsK
KyAgICAgICAgfQorICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2spOworICAg
IH0KKworICAgIExMSU5UX0VORCgpOyAgICAKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2NoZWNrX3ByaXZhdGVfYnJhbmQpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKworICAg
IGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BDaGVja1ByaXZhdGVCcmFuZD4oKTsKKyAgICBhdXRv
JiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAgSlNWYWx1ZSBi
YXNlVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKTsKKyAgICBK
U1ZhbHVlIGJyYW5kID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYnJhbmQpOwor
CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBiYXNlVmFsdWUudG9PYmplY3QoZ2xvYmFsT2Jq
ZWN0KTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKworICAgIEFTU0VSVChicmFuZC5p
c1N5bWJvbCgpKTsKKworICAgIGJhc2VPYmplY3QtPmNoZWNrUHJpdmF0ZUJyYW5kKGdsb2JhbE9i
amVjdCwgYnJhbmQpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworCisgICAgLy8gT09Q
UzogSXMgdGhlcmUgcmVhbGx5IGEgY2FzZSB3aGVyZSB3ZSBkb24ndCB3YW50IHRvIGNhY2hlIGhl
cmU/CisgICAgLy8gU2luY2UgYSBicmFuZCBjYW4gbmV2ZXIgYmUgZGVsZXRlZCwgaXQncyBzYWZl
IHRvIHJlbHkgb24gU3RydWN0dXJlSUQKKyAgICAvLyBldmVuIGlmIGl0J3MgYW4gdW5jYWNoZWFi
bGUgZGljdGlvbmFyeS4KKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VPYmplY3QtPnN0
cnVjdHVyZSh2bSk7CisgICAgaWYgKCFMTElOVF9BTFdBWVNfQUNDRVNTX1NMT1cpIHsKKyAgICAg
ICAgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jaywgdm0u
aGVhcCk7CisKKyAgICAgICAgbWV0YWRhdGEubV9zdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQo
KTsKKyAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKKyAgICB9CisKKyAg
ICBMTElOVF9FTkQoKTsgICAgCit9CisKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9k
ZWxfYnlfdmFsKQogewogICAgIExMSU5UX0JFR0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IDUzNGUwZGYz
ZGUzMC4uYzljOGQxMDk3MTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMTgyNiw2ICsxODI2LDQyIEBAIGxs
aW50T3BXaXRoTWV0YWRhdGEob3BfcHV0X3ByaXZhdGVfbmFtZSwgT3BQdXRQcml2YXRlTmFtZSwg
bWFjcm8gKHNpemUsIGdldCwgZGlzCiAgICAgZGlzcGF0Y2goKQogZW5kKQogCitsbGludE9wV2l0
aE1ldGFkYXRhKG9wX3NldF9wcml2YXRlX2JyYW5kLCBPcFNldFByaXZhdGVCcmFuZCwgbWFjcm8g
KHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisgICAgZ2V0KG1fYmFzZSwg
dDMpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDMsIHQwLCAub3BTZXRQ
cml2YXRlQnJhbmRTbG93KQorICAgIGdldChtX2JyYW5kLCB0MykKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlQ2VsbChzaXplLCB0MywgdDEsIC5vcFNldFByaXZhdGVCcmFuZFNsb3cpCisgICAg
bWV0YWRhdGEodDUsIHQyKQorICAgIGxvYWRpIE9wU2V0UHJpdmF0ZUJyYW5kOjpNZXRhZGF0YTo6
bV9vbGRTdHJ1Y3R1cmVJRFt0NV0sIHQyCisgICAgYmluZXEgdDIsIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVJRFt0MF0sIC5vcFNldFByaXZhdGVCcmFuZFNsb3cKKworICAgIGxvYWRwIE9wU2V0UHJpdmF0
ZUJyYW5kOjpNZXRhZGF0YTo6bV9icmFuZFt0NV0sIHQzCisgICAgYnFuZXEgdDMsIHQxLCAub3BT
ZXRQcml2YXRlQnJhbmRTbG93CisKKyAgICBsb2FkaSBPcFNldFByaXZhdGVCcmFuZDo6TWV0YWRh
dGE6Om1fbmV3U3RydWN0dXJlSURbdDVdLCB0MQorICAgIHN0b3JlaSB0MSwgSlNDZWxsOjptX3N0
cnVjdHVyZUlEW3QwXQorICAgIGRpc3BhdGNoKCkKKworLm9wU2V0UHJpdmF0ZUJyYW5kU2xvdzoK
KyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9zZXRfcHJpdmF0ZV9icmFuZCkKKyAg
ICBkaXNwYXRjaCgpCitlbmQpCisKK2xsaW50T3BXaXRoTWV0YWRhdGEob3BfY2hlY2tfcHJpdmF0
ZV9icmFuZCwgT3BDaGVja1ByaXZhdGVCcmFuZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gs
IG1ldGFkYXRhLCByZXR1cm4pCisgICAgZ2V0KG1fYmFzZSwgdDMpCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDMsIHQwLCAub3BDaGVja1ByaXZhdGVCcmFuZFNsb3cpCisg
ICAgZ2V0KG1fYnJhbmQsIHQzKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUs
IHQzLCB0MSwgLm9wQ2hlY2tQcml2YXRlQnJhbmRTbG93KQorICAgIG1ldGFkYXRhKHQ1LCB0MikK
KyAgICBsb2FkaSBPcENoZWNrUHJpdmF0ZUJyYW5kOjpNZXRhZGF0YTo6bV9zdHJ1Y3R1cmVJRFt0
NV0sIHQyCisgICAgYmluZXEgdDIsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIC5vcENoZWNr
UHJpdmF0ZUJyYW5kU2xvdworICAgIGRpc3BhdGNoKCkKKworLm9wQ2hlY2tQcml2YXRlQnJhbmRT
bG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2NoZWNrX3ByaXZhdGVfYnJh
bmQpCisgICAgZGlzcGF0Y2goKQorZW5kKQorCiBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUs
IG9wY29kZVN0cnVjdCwgb3NyRXhpdFBvaW50KQogICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3Bf
JW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBt
ZXRhZGF0YSwgcmV0dXJuKQogICAgICAgICBtYWNybyBjb250aWd1b3VzUHV0QnlWYWwoc3RvcmVD
YWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKaW5kZXggNjRhNjZm
NzY1YzhmLi4wMmI3ODc1Y2NhZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMu
Y3BwCkBAIC0yMDIsNiArMjAyLDcgQEAgRnVuY3Rpb25NZXRhZGF0YU5vZGU6OkZ1bmN0aW9uTWV0
YWRhdGFOb2RlKAogICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihjb25zdHJ1Y3RvcktpbmQpKQogICAgICAgICAsIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpO
bykpCiAgICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbihpc0Fycm93RnVu
Y3Rpb25Cb2R5RXhwcmVzc2lvbikKKyAgICAgICAgLCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZSkpCiAg
ICAgICAgICwgbV9wYXJzZU1vZGUobW9kZSkKICAgICAgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0
Q29sdW1uKQogICAgICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikKQEAgLTIyNiw2ICsyMjcs
NyBAQCBGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUoCiAgICAgICAg
ICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2lu
ZCkpCiAgICAgICAgICwgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcihzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vKSkKICAgICAgICAgLCBtX2lz
QXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9u
KQorICAgICAgICAsIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lKSkKICAgICAgICAgLCBtX3BhcnNlTW9k
ZShtb2RlKQogICAgICAgICAsIG1fc3RhcnRDb2x1bW4oc3RhcnRDb2x1bW4pCiAgICAgICAgICwg
bV9lbmRDb2x1bW4oZW5kQ29sdW1uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmlu
ZGV4IDczNThiYjMyNTI3ZS4uMWZkM2YyNDc2MDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Ob2Rlcy5oCkBAIC03MjEsNyArNzIxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgZW51bSBj
bGFzcyBDbGFzc0VsZW1lbnRUYWcgOiB1aW50OF90IHsgTm8sIEluc3RhbmNlLCBTdGF0aWMsIExh
c3RUYWcgfTsKICAgICBjbGFzcyBQcm9wZXJ0eU5vZGUgZmluYWwgOiBwdWJsaWMgUGFyc2VyQXJl
bmFGcmVlYWJsZSB7CiAgICAgcHVibGljOgotICAgICAgICBlbnVtIFR5cGUgOiB1aW50OF90IHsg
Q29uc3RhbnQgPSAxLCBHZXR0ZXIgPSAyLCBTZXR0ZXIgPSA0LCBDb21wdXRlZCA9IDgsIFNob3J0
aGFuZCA9IDE2LCBTcHJlYWQgPSAzMiwgUHJpdmF0ZSA9IDY0IH07CisgICAgICAgIGVudW0gVHlw
ZSA6IHVpbnQ4X3QgeyBDb25zdGFudCA9IDEsIEdldHRlciA9IDIsIFNldHRlciA9IDQsIENvbXB1
dGVkID0gOCwgU2hvcnRoYW5kID0gMTYsIFNwcmVhZCA9IDMyLCBQcml2YXRlRmllbGQgPSA2NCwg
UHJpdmF0ZU1ldGhvZCA9IDEyOCB9OwogCiAgICAgICAgIFByb3BlcnR5Tm9kZShjb25zdCBJZGVu
dGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqLCBUeXBlLCBTdXBlckJpbmRpbmcsIENsYXNzRWxlbWVu
dFRhZyk7CiAgICAgICAgIFByb3BlcnR5Tm9kZShFeHByZXNzaW9uTm9kZSosIFR5cGUsIFN1cGVy
QmluZGluZywgQ2xhc3NFbGVtZW50VGFnKTsKQEAgLTczOSw3ICs3MzksNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgYm9vbCBpc0NsYXNzRmllbGQoKSBjb25zdCB7IHJldHVybiBpc0NsYXNz
UHJvcGVydHkoKSAmJiAhbmVlZHNTdXBlckJpbmRpbmcoKTsgfQogICAgICAgICBib29sIGlzSW5z
dGFuY2VDbGFzc0ZpZWxkKCkgY29uc3QgeyByZXR1cm4gaXNJbnN0YW5jZUNsYXNzUHJvcGVydHko
KSAmJiAhbmVlZHNTdXBlckJpbmRpbmcoKTsgfQogICAgICAgICBib29sIGlzT3ZlcnJpZGRlbkJ5
RHVwbGljYXRlKCkgY29uc3QgeyByZXR1cm4gbV9pc092ZXJyaWRkZW5CeUR1cGxpY2F0ZTsgfQot
ICAgICAgICBib29sIGlzUHJpdmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSAmIFByaXZhdGU7
IH0KKyAgICAgICAgYm9vbCBpc1ByaXZhdGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgJiAoUHJp
dmF0ZUZpZWxkIHwgUHJpdmF0ZU1ldGhvZCk7IH0KICAgICAgICAgYm9vbCBoYXNDb21wdXRlZE5h
bWUoKSBjb25zdCB7IHJldHVybiBtX2V4cHJlc3Npb247IH0KICAgICAgICAgYm9vbCBpc0NvbXB1
dGVkQ2xhc3NGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGlzQ2xhc3NGaWVsZCgpICYmIGhhc0NvbXB1
dGVkTmFtZSgpOyB9CiAgICAgICAgIHZvaWQgc2V0SXNPdmVycmlkZGVuQnlEdXBsaWNhdGUoKSB7
IG1faXNPdmVycmlkZGVuQnlEdXBsaWNhdGUgPSB0cnVlOyB9CkBAIC03NTksNyArNzU5LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIG1fbmFtZTsKICAgICAg
ICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcmVzc2lvbjsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUq
IG1fYXNzaWduOwotICAgICAgICB1bnNpZ25lZCBtX3R5cGUgOiA3OworICAgICAgICB1bnNpZ25l
ZCBtX3R5cGU7CiAgICAgICAgIHVuc2lnbmVkIG1fbmVlZHNTdXBlckJpbmRpbmcgOiAxOwogICAg
ICAgICBzdGF0aWNfYXNzZXJ0KDEgPDwgMiA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDbGFzc0Vs
ZW1lbnRUYWc6Okxhc3RUYWcpLCAiQ2xhc3NFbGVtZW50VGFnIHNob3VsZG4ndCB1c2UgbW9yZSB0
aGFuIHR3byBiaXRzIik7CiAgICAgICAgIHVuc2lnbmVkIG1fY2xhc3NFbGVtZW50VGFnIDogMjsK
QEAgLTgzMiw3ICs4MzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX3N1YnNj
cmlwdEhhc0Fzc2lnbm1lbnRzOwogICAgIH07CiAKLSAgICBlbnVtIGNsYXNzIERvdFR5cGUgeyBO
YW1lLCBQcml2YXRlRmllbGQgfTsKKyAgICBlbnVtIGNsYXNzIERvdFR5cGUgeyBOYW1lLCBQcml2
YXRlTWVtYmVyIH07CiAgICAgY2xhc3MgQmFzZURvdE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5v
ZGUgewogICAgIHB1YmxpYzoKICAgICAgICAgQmFzZURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBEb3RUeXBlKTsK
QEAgLTg0MCw3ICs4NDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRXhwcmVzc2lvbk5v
ZGUqIGJhc2UoKSBjb25zdCB7IHJldHVybiBtX2Jhc2U7IH0KICAgICAgICAgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnQ7IH0KICAgICAgICAgRG90
VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9Ci0gICAgICAgIGJvb2wgaXNQcml2
YXRlRmllbGQoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gRG90VHlwZTo6UHJpdmF0ZUZpZWxk
OyB9CisgICAgICAgIGJvb2wgaXNQcml2YXRlTWVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV90eXBl
ID09IERvdFR5cGU6OlByaXZhdGVNZW1iZXI7IH0KIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
R2V0UHJvcGVydHlWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRzdCwgUmVn
aXN0ZXJJRCogYmFzZSwgUmVmUHRyPFJlZ2lzdGVySUQ+JiB0aGlzVmFsdWUpOwogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0R2V0UHJvcGVydHlWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSk7CkBAIC04NjQsNyArODY0LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cikgZmluYWw7CiAKICAgICAgICAgYm9vbCBpc0xv
Y2F0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICBib29sIGlzUHJp
dmF0ZUxvY2F0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV90eXBlID09IERvdFR5cGU6
OlByaXZhdGVGaWVsZDsgfQorICAgICAgICBib29sIGlzUHJpdmF0ZUxvY2F0aW9uKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV90eXBlID09IERvdFR5cGU6OlByaXZhdGVNZW1iZXI7IH0KICAg
ICAgICAgYm9vbCBpc0RvdEFjY2Vzc29yTm9kZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7
IH0KICAgICB9OwogCkBAIC0yMTUxLDYgKzIxNTEsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdm9pZCBzZXRFY21hTmFtZShjb25zdCBJZGVudGlmaWVyJiBlY21hTmFtZSkgeyBtX2VjbWFO
YW1lID0gZWNtYU5hbWU7IH0KICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgZWNtYU5hbWUoKSB7
IHJldHVybiBtX2lkZW50LmlzRW1wdHkoKSA/IG1fZWNtYU5hbWUgOiBtX2lkZW50OyB9CiAKKyAg
ICAgICAgdm9pZCBzZXRQcml2YXRlQnJhbmRSZXF1aXJlbWVudChQcml2YXRlQnJhbmRSZXF1aXJl
bWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCkgeyBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KTsgfQorICAg
ICAgICBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpIHsg
cmV0dXJuIHN0YXRpY19jYXN0PFByaXZhdGVCcmFuZFJlcXVpcmVtZW50PihtX3ByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50KTsgfQorCiAgICAgICAgIEZ1bmN0aW9uTW9kZSBmdW5jdGlvbk1vZGUoKSB7
IHJldHVybiBtX2Z1bmN0aW9uTW9kZTsgfQogCiAgICAgICAgIGludCBmdW5jdGlvbk5hbWVTdGFy
dCgpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25OYW1lU3RhcnQ7IH0KQEAgLTIxOTksNiArMjIw
Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2lu
ZCA6IDI7CiAgICAgICAgIHVuc2lnbmVkIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgOiAx
OwogICAgICAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uIDogMTsK
KyAgICAgICAgdW5zaWduZWQgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA6IDE7CiAgICAgICAg
IFNvdXJjZVBhcnNlTW9kZSBtX3BhcnNlTW9kZTsKICAgICAgICAgRnVuY3Rpb25Nb2RlIG1fZnVu
Y3Rpb25Nb2RlOwogICAgICAgICBJZGVudGlmaWVyIG1faWRlbnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggZTE5MGU2OTM2OTk1Li44YWE4ZmQ0YTljZmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI4NTEsNiArMjg1MSw3
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNsYXNzRXhwcmVzc2lvbiBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyhUCiAgICAgY2xhc3NTY29wZS0+c2V0SXNMZXhpY2Fs
U2NvcGUoKTsKICAgICBjbGFzc1Njb3BlLT5wcmV2ZW50VmFyRGVjbGFyYXRpb25zKCk7CiAgICAg
Y2xhc3NTY29wZS0+c2V0U3RyaWN0TW9kZSgpOworICAgIGJvb2wgZGVjbGFyZXNQcml2YXRlTWV0
aG9kID0gZmFsc2U7CiAKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHJlcXVpcmVtZW50cyAhPSBG
dW5jdGlvbk5hbWVSZXF1aXJlbWVudHM6OlVubmFtZWQsICJDdXJyZW50bHksIHRoZXJlIGlzIG5v
IGNhbGxlciB0aGF0IHVzZXMgRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzOjpVbm5hbWVkIGZvciBj
bGFzcyBzeW50YXguIik7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghKHJlcXVpcmVtZW50cyA9
PSBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHM6Ok5vbmUgJiYgIWluZm8uY2xhc3NOYW1lKSwgIldo
ZW4gc3BlY2lmeWluZyBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHM6Ok5vbmUsIHdlIG5lZWQgdG8g
aW5pdGlhbGl6ZSBpbmZvLmNsYXNzTmFtZSB3aXRoIHRoZSBkZWZhdWx0IHZhbHVlIGluIHRoZSBj
YWxsZXIgc2lkZS4iKTsKQEAgLTI5NjUsMTUgKzI5NjYsMjEgQEAgcGFyc2VNZXRob2Q6CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQUklWQVRFTkFNRTogewogICAgICAgICAgICAg
QVNTRVJUKE9wdGlvbnM6OnVzZVByaXZhdGVDbGFzc0ZpZWxkcygpKTsKLSAgICAgICAgICAgIEpT
VG9rZW4gdG9rZW4gPSBtX3Rva2VuOwogICAgICAgICAgICAgaWRlbnQgPSBtX3Rva2VuLm1fZGF0
YS5pZGVudDsKICAgICAgICAgICAgIGZhaWxJZlRydWUodGFnID09IENsYXNzRWxlbWVudFRhZzo6
U3RhdGljLCAiU3RhdGljIGNsYXNzIGVsZW1lbnQgY2Fubm90IGJlIHByaXZhdGUiKTsKICAgICAg
ICAgICAgIGZhaWxJZlRydWUoaXNHZXR0ZXIgfHwgaXNTZXR0ZXIsICJDYW5ub3QgcGFyc2UgY2xh
c3MgbWV0aG9kIHdpdGggcHJpdmF0ZSBuYW1lIik7CiAgICAgICAgICAgICBBU1NFUlQoaWRlbnQp
OwogICAgICAgICAgICAgbmV4dCgpOwotICAgICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaEFuZFVw
ZGF0ZShPUEVOUEFSRU4sIHRva2VuKSwgIkNhbm5vdCBwYXJzZSBjbGFzcyBtZXRob2Qgd2l0aCBw
cml2YXRlIG5hbWUiKTsKLSAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShjbGFzc1Njb3Bl
LT5kZWNsYXJlUHJpdmF0ZU5hbWUoKmlkZW50KSAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlk
RHVwbGljYXRlRGVjbGFyYXRpb24sICJDYW5ub3QgZGVjbGFyZSBwcml2YXRlIGZpZWxkIHR3aWNl
Iik7Ci0gICAgICAgICAgICB0eXBlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0
eXBlIHwgUHJvcGVydHlOb2RlOjpQcml2YXRlKTsKKyAgICAgICAgICAgIGlmIChPcHRpb25zOjp1
c2VQcml2YXRlTWV0aG9kcygpICYmIG1hdGNoKE9QRU5QQVJFTikpIHsKKyAgICAgICAgICAgICAg
ICBzZW1hbnRpY0ZhaWxJZlRydWUoY2xhc3NTY29wZS0+ZGVjbGFyZVByaXZhdGVNZXRob2QoKmlk
ZW50KSAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb24sICJD
YW5ub3QgZGVjbGFyZSBwcml2YXRlIG1ldGhvZCB0d2ljZSIpOworICAgICAgICAgICAgICAgIGRl
Y2xhcmVzUHJpdmF0ZU1ldGhvZCA9IHRydWU7CisgICAgICAgICAgICAgICAgdHlwZSA9IHN0YXRp
Y19jYXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4odHlwZSB8IFByb3BlcnR5Tm9kZTo6UHJpdmF0ZU1l
dGhvZCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGZhaWxJZlRydWUobWF0Y2goT1BFTlBBUkVOKSwgIkNhbm5vdCBwYXJzZSBjbGFzcyBtZXRo
b2Qgd2l0aCBwcml2YXRlIG5hbWUiKTsKKyAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShj
bGFzc1Njb3BlLT5kZWNsYXJlUHJpdmF0ZUZpZWxkKCppZGVudCkgJiBEZWNsYXJhdGlvblJlc3Vs
dDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uLCAiQ2Fubm90IGRlY2xhcmUgcHJpdmF0ZSBm
aWVsZCB0d2ljZSIpOworICAgICAgICAgICAgdHlwZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5Tm9k
ZTo6VHlwZT4odHlwZSB8IFByb3BlcnR5Tm9kZTo6UHJpdmF0ZUZpZWxkKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0zMDUzLDEwICszMDYwLDE5
IEBAIHBhcnNlTWV0aG9kOgogICAgIGluZm8uZW5kT2Zmc2V0ID0gdG9rZW5Mb2NhdGlvbigpLmVu
ZE9mZnNldCAtIDE7CiAgICAgY29uc3VtZU9yRmFpbChDTE9TRUJSQUNFLCAiRXhwZWN0ZWQgYSBj
bG9zaW5nICd9JyBhZnRlciBhIGNsYXNzIGJvZHkiKTsKIAorICAgIGlmIChkZWNsYXJlc1ByaXZh
dGVNZXRob2QpIHsKKyAgICAgICAgSWRlbnRpZmllciBwcml2YXRlQnJhbmRJZGVudGlmaWVyID0g
bV92bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5wcml2YXRlQnJhbmRQcml2YXRlTmFt
ZSgpOworICAgICAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyYXRpb25SZXN1bHQgPSBj
bGFzc1Njb3BlLT5kZWNsYXJlTGV4aWNhbFZhcmlhYmxlKCZwcml2YXRlQnJhbmRJZGVudGlmaWVy
LCB0cnVlKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChkZWNsYXJhdGlvblJlc3VsdCwgZGVjbGFy
YXRpb25SZXN1bHQgPT0gRGVjbGFyYXRpb25SZXN1bHQ6OlZhbGlkKTsKKyAgICAgICAgY2xhc3NT
Y29wZS0+dXNlVmFyaWFibGUoJnByaXZhdGVCcmFuZElkZW50aWZpZXIsIGZhbHNlKTsKKyAgICAg
ICAgY2xhc3NTY29wZS0+YWRkQ2xvc2VkVmFyaWFibGVDYW5kaWRhdGVVbmNvbmRpdGlvbmFsbHko
cHJpdmF0ZUJyYW5kSWRlbnRpZmllci5pbXBsKCkpOworICAgIH0KKwogICAgIGlmIChPcHRpb25z
Ojp1c2VQcml2YXRlQ2xhc3NGaWVsZHMoKSkgewogICAgICAgICAvLyBGYWlsIGlmIHRoZXJlIGFy
ZSBubyBwYXJlbnQgcHJpdmF0ZSBuYW1lIHNjb3BlcyBhbmQgYW55IHVzZWQtYnV0LXVuZGVjbGFy
ZWQgcHJpdmF0ZSBuYW1lcy4KICAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxzZShjb3B5VW5kZWNs
YXJlZFByaXZhdGVOYW1lc1RvT3V0ZXJTY29wZSgpLCAiQ2Fubm90IHJlZmVyZW5jZSB1bmRlY2xh
cmVkIHByaXZhdGUgbmFtZXMiKTsKICAgICB9CisKICAgICBhdXRvIGNsYXNzRXhwcmVzc2lvbiA9
IGNvbnRleHQuY3JlYXRlQ2xhc3NFeHByKGxvY2F0aW9uLCBpbmZvLCBjbGFzc1Njb3BlLT5maW5h
bGl6ZUxleGljYWxFbnZpcm9ubWVudCgpLCBjb25zdHJ1Y3RvciwgcGFyZW50Q2xhc3MsIGNsYXNz
RWxlbWVudHMpOwogICAgIHBvcFNjb3BlKGNsYXNzU2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0Zy
ZWVWYXJpYWJsZUluZm8pOwogICAgIHJldHVybiBjbGFzc0V4cHJlc3Npb247CkBAIC01MDczLDcg
KzUwODksNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwogICAgICAgICAgICAgICAgICAgICBz
ZW1hbnRpY0ZhaWxJZkZhbHNlKHVzZVByaXZhdGVOYW1lKGlkZW50KSwgIkNhbm5vdCByZWZlcmVu
Y2UgcHJpdmF0ZSBuYW1lcyBvdXRzaWRlIG9mIGNsYXNzIik7CiAgICAgICAgICAgICAgICAgICAg
IG1fcGFyc2VyU3RhdGUubGFzdFByaXZhdGVOYW1lID0gaWRlbnQ7CiAgICAgICAgICAgICAgICAg
ICAgIGN1cnJlbnRTY29wZSgpLT51c2VWYXJpYWJsZShpZGVudCwgZmFsc2UpOwotICAgICAgICAg
ICAgICAgICAgICB0eXBlID0gRG90VHlwZTo6UHJpdmF0ZUZpZWxkOworICAgICAgICAgICAgICAg
ICAgICB0eXBlID0gRG90VHlwZTo6UHJpdmF0ZU1lbWJlcjsKICAgICAgICAgICAgICAgICAgICAg
bV90b2tlbi5tX3R5cGUgPSBJREVOVDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgbWF0Y2hPckZhaWwoSURFTlQsICJFeHBlY3RlZCBhIHByb3BlcnR5IG5hbWUgYWZ0ZXIgIiwg
b3B0aW9uYWxDaGFpbkJhc2UgPyAiJz8uJyIgOiAiJy4nIik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuaAppbmRleCBjZWNjZjgxNjMyOGQuLjA0OTI3NWViMDJiMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC01MTEsMTEgKzUxMSwyOCBAQCBwdWJsaWM6
CiAgICAgICAgIG1fbGV4aWNhbFZhcmlhYmxlcy51c2VQcml2YXRlTmFtZShpZGVudCk7CiAgICAg
fQogCi0gICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmVQcml2YXRlTmFtZShjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCkKKyAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyZVByaXZh
dGVNZXRob2QoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiAgICAgewogICAgICAgICBBU1NFUlQo
bV9hbGxvd3NMZXhpY2FsRGVjbGFyYXRpb25zKTsKICAgICAgICAgRGVjbGFyYXRpb25SZXN1bHRN
YXNrIHJlc3VsdCA9IERlY2xhcmF0aW9uUmVzdWx0OjpWYWxpZDsKLSAgICAgICAgYXV0byBhZGRS
ZXN1bHQgPSBtX2xleGljYWxWYXJpYWJsZXMuZGVjbGFyZVByaXZhdGVOYW1lKGlkZW50KTsKKyAg
ICAgICAgYm9vbCBhZGRSZXN1bHQgPSBtX2xleGljYWxWYXJpYWJsZXMuZGVjbGFyZVByaXZhdGVN
ZXRob2QoaWRlbnQpOworCisgICAgICAgIGlmICghYWRkUmVzdWx0KSB7CisgICAgICAgICAgICBy
ZXN1bHQgfD0gRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbjsK
KyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICB1c2VWYXJp
YWJsZSgmaWRlbnQsIGZhbHNlKTsKKyAgICAgICAgYWRkQ2xvc2VkVmFyaWFibGVDYW5kaWRhdGVV
bmNvbmRpdGlvbmFsbHkoaWRlbnQuaW1wbCgpKTsKKworICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH0KKworICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJlUHJpdmF0ZUZpZWxkKGNv
bnN0IElkZW50aWZpZXImIGlkZW50KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYWxsb3dzTGV4
aWNhbERlY2xhcmF0aW9ucyk7CisgICAgICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayByZXN1bHQg
PSBEZWNsYXJhdGlvblJlc3VsdDo6VmFsaWQ7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9s
ZXhpY2FsVmFyaWFibGVzLmRlY2xhcmVQcml2YXRlRmllbGQoaWRlbnQpOwogICAgICAgICBpZiAo
IWFkZFJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAgcmVzdWx0IHw9IERlY2xhcmF0aW9u
UmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb247CiAgICAgICAgIHJldHVybiByZXN1
bHQ7CkBAIC05NTUsNyArOTcyLDcgQEAgcHVibGljOgogICAgIH5QYXJzZXIoKTsKIAogICAgIHRl
bXBsYXRlIDxjbGFzcyBQYXJzZWROb2RlPgotICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2Rl
PiBwYXJzZShQYXJzZXJFcnJvciYsIGNvbnN0IElkZW50aWZpZXImLCBTb3VyY2VQYXJzZU1vZGUs
IFBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0
ZXJzRW5kUG9zaXRpb24gPSBXVEY6Om51bGxvcHQsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQq
ID0gbnVsbHB0ciwgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogPSBudWxscHRyKTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFyc2VyRXJyb3ImLCBjb25zdCBJ
ZGVudGlmaWVyJiwgU291cmNlUGFyc2VNb2RlLCBQYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50
PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gV1RGOjpudWxsb3B0
LCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiA9IG51bGxwdHIsIGNvbnN0IFZlY3RvcjxK
U1RleHRQb3NpdGlvbj4qID0gbnVsbHB0cik7CiAKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlv
bkJlZm9yZUxhc3ROZXdsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+cG9zaXRpb25CZWZv
cmVMYXN0TmV3bGluZSgpOyB9CiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uQmVmb3JlTGFz
dFRva2VuKCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+bGFzdFRva2VuTG9jYXRpb24oKTsgfQpA
QCAtMjA1Myw3ICsyMDcwLDcgQEAgcHJpdmF0ZToKIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVy
VHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWROb2RlPgotc3RkOjp1bmlxdWVfcHRyPFBhcnNl
ZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0
IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIFBhcnNp
bmdDb250ZXh0IHBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0
b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVu
dFNjb3BlUHJpdmF0ZU5hbWVzLCBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBpbnN0YW5j
ZUZpZWxkTG9jYXRpb25zKQorc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IElkZW50aWZpZXImIGNhbGxl
ZU5hbWUsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIFBhcnNpbmdDb250ZXh0IHBhcnNpbmdD
b250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9z
aXRpb24sIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlUHJpdmF0ZU5h
bWVzLCBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBpbnN0YW5jZUZpZWxkTG9jYXRpb25z
KQogewogICAgIGludCBlcnJMaW5lOwogICAgIFN0cmluZyBlcnJNc2c7CkBAIC0yMDY4LDkgKzIw
ODUsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlKFBhcnNlckVycm9yJiBlcnJvciwgY29uc3QgSQogICAgIEFTU0VSVChtX3NvdXJjZS0+c3Rh
cnRDb2x1bW4oKSA+IE9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCkpOwogICAgIHVuc2lnbmVk
IHN0YXJ0Q29sdW1uID0gbV9zb3VyY2UtPnN0YXJ0Q29sdW1uKCkuemVyb0Jhc2VkSW50KCk7CiAK
LSAgICBpZiAoaXNFdmFsTm9kZTxQYXJzZWROb2RlPigpICYmIHBhcmVudFNjb3BlUHJpdmF0ZU5h
bWVzICYmIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzLT5wcml2YXRlTmFtZXNTaXplKCkpIHsKKyAg
ICBpZiAoaXNFdmFsTm9kZTxQYXJzZWROb2RlPigpICYmIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVz
ICYmIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzLT5zaXplKCkpIHsKICAgICAgICAgY3VycmVudFNj
b3BlKCktPnNldElzUHJpdmF0ZU5hbWVTY29wZSgpOwotICAgICAgICBwYXJlbnRTY29wZVByaXZh
dGVOYW1lcy0+Y29weVByaXZhdGVOYW1lc1RvKGN1cnJlbnRTY29wZSgpLT5sZXhpY2FsVmFyaWFi
bGVzKCkpOworICAgICAgICBjdXJyZW50U2NvcGUoKS0+bGV4aWNhbFZhcmlhYmxlcygpLmFkZFBy
aXZhdGVOYW1lc0Zyb20ocGFyZW50U2NvcGVQcml2YXRlTmFtZXMpOwogICAgIH0KIAogICAgIGF1
dG8gcGFyc2VSZXN1bHQgPSBwYXJzZUlubmVyKGNhbGxlZU5hbWUsIHBhcnNlTW9kZSwgcGFyc2lu
Z0NvbnRleHQsIGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIGluc3Rh
bmNlRmllbGRMb2NhdGlvbnMpOwpAQCAtMjE1Nyw3ICsyMTc0LDcgQEAgc3RkOjp1bmlxdWVfcHRy
PFBhcnNlZE5vZGU+IHBhcnNlKAogICAgIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4
dFR5cGUgPSBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsCiAgICAgRXZhbENvbnRleHRUeXBlIGV2
YWxDb250ZXh0VHlwZSA9IEV2YWxDb250ZXh0VHlwZTo6Tm9uZSwKICAgICBEZWJ1Z2dlclBhcnNl
RGF0YSogZGVidWdnZXJQYXJzZURhdGEgPSBudWxscHRyLAotICAgIGNvbnN0IFZhcmlhYmxlRW52
aXJvbm1lbnQqIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzID0gbnVsbHB0ciwKKyAgICBjb25zdCBQ
cml2YXRlTmFtZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVByaXZhdGVOYW1lcyA9IG51bGxwdHIs
CiAgICAgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogaW5zdGFuY2VGaWVsZExvY2F0aW9u
cyA9IG51bGxwdHIsCiAgICAgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24gPSBmYWxzZSkK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAppbmRleCBlYWZm
ZGUyMWMxNTkuLjlkOWExODliNzZiZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXJNb2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyTW9kZXMuaApAQCAtMzcsNiArMzcsOCBAQCBlbnVtIGNsYXNzIEpTUGFyc2VyU2NyaXB0
TW9kZSB7IENsYXNzaWMsIE1vZHVsZSB9OwogCiBlbnVtIGNsYXNzIFN1cGVyQmluZGluZyB7IE5l
ZWRlZCwgTm90TmVlZGVkIH07CiAKK2VudW0gY2xhc3MgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQg
eyBOb25lLCBOZWVkZWQgfTsKKwogZW51bSBjbGFzcyBDb2RlR2VuZXJhdGlvbk1vZGUgOiB1aW50
OF90IHsKICAgICBEZWJ1Z2dlciA9IDEgPDwgMCwKICAgICBUeXBlUHJvZmlsZXIgPSAxIDw8IDEs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4IDFh
NmQwZTQ4YWNlYS4uNjE4Y2RiM2ZjMWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1N5bnRheENoZWNrZXIuaApAQCAtMTc5LDcgKzE3OSw3IEBAIHB1YmxpYzoKICAgICBFeHBy
ZXNzaW9uVHlwZSBjcmVhdGVCb29sZWFuKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGJvb2wpIHsg
cmV0dXJuIEJvb2xFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTnVsbChjb25zdCBK
U1Rva2VuTG9jYXRpb24mKSB7IHJldHVybiBOdWxsRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBl
IGNyZWF0ZUJyYWNrZXRBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5
cGUsIEV4cHJlc3Npb25UeXBlLCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBCcmFja2V0
RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZURvdEFjY2Vzcyhjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgY29uc3QgSWRlbnRpZmllciosIERvdFR5cGUgdHlw
ZSwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gdHlwZSA9PSBEb3RUeXBlOjpQcml2YXRlRmllbGQg
PyBQcml2YXRlRG90RXhwciA6IERvdEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVE
b3RBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIGNvbnN0IElk
ZW50aWZpZXIqLCBEb3RUeXBlIHR5cGUsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIHR5cGUgPT0g
RG90VHlwZTo6UHJpdmF0ZU1lbWJlciA/IFByaXZhdGVEb3RFeHByIDogRG90RXhwcjsgfQogICAg
IEV4cHJlc3Npb25UeXBlIGNyZWF0ZVJlZ0V4cChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25z
dCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25zdCBJZGVudGlmaWVyJiBmbGFncywgaW50KSB7IHJl
dHVybiBZYXJyOjpoYXNFcnJvcihZYXJyOjpjaGVja1N5bnRheChwYXR0ZXJuLnN0cmluZygpLCBm
bGFncy5zdHJpbmcoKSkpID8gMCA6IFJlZ0V4cEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBj
cmVhdGVOZXdFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQs
IGludCwgaW50LCBpbnQpIHsgcmV0dXJuIE5ld0V4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBj
cmVhdGVOZXdFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQs
IGludCkgeyByZXR1cm4gTmV3RXhwcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAKaW5kZXggODFhOWM5MzhkYzExLi4zZWM1
N2MzZTJhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFi
bGVFbnZpcm9ubWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJp
YWJsZUVudmlyb25tZW50LmNwcApAQCAtMTA0LDYgKzEwNCw0MCBAQCB2b2lkIFZhcmlhYmxlRW52
aXJvbm1lbnQ6Om1hcmtWYXJpYWJsZUFzRXhwb3J0ZWQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJp
bmdJbXBsPgogICAgIGZpbmRSZXN1bHQtPnZhbHVlLnNldElzRXhwb3J0ZWQoKTsKIH0KIAorYm9v
bCBWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZU1ldGhvZChjb25zdCBSZWZQdHI8
VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQoreworICAgIGlmICghbV9yYXJlRGF0YSkK
KyAgICAgICAgbV9yYXJlRGF0YSA9IG1ha2VVbmlxdWU8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFy
ZURhdGE+KCk7CisKKyAgICBhdXRvIGZpbmRSZXN1bHQgPSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVO
YW1lcy5maW5kKGlkZW50aWZpZXIpOworCisgICAgaWYgKGZpbmRSZXN1bHQgPT0gbV9yYXJlRGF0
YS0+bV9wcml2YXRlTmFtZXMuZW5kKCkpIHsKKyAgICAgICAgUHJpdmF0ZU5hbWVFbnRyeSBtZXRh
KFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNEZWNsYXJlZCB8IFByaXZhdGVOYW1lRW50cnk6
OlRyYWl0czo6SXNNZXRob2QpOworCisgICAgICAgIGF1dG8gZW50cnkgPSBWYXJpYWJsZUVudmly
b25tZW50RW50cnkoKTsKKyAgICAgICAgZW50cnkuc2V0SXNQcml2YXRlTWV0aG9kKCk7CisgICAg
ICAgIGVudHJ5LnNldElzQ29uc3QoKTsKKyAgICAgICAgZW50cnkuc2V0SXNDYXB0dXJlZCgpOwor
ICAgICAgICBtX21hcC5hZGQoaWRlbnRpZmllciwgZW50cnkpOworCisgICAgICAgIGF1dG8gYWRk
UmVzdWx0ID0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKGlkZW50aWZpZXIsIG1ldGEp
OworICAgICAgICByZXR1cm4gYWRkUmVzdWx0LmlzTmV3RW50cnk7CisgICAgfQorCisgICAgaWYg
KGZpbmRSZXN1bHQtPnZhbHVlLmlzRGVjbGFyZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOyAv
LyBFcnJvcjogZGVjbGFyaW5nIGEgZHVwbGljYXRlIHByaXZhdGUgbmFtZS4KKworICAgIGF1dG8g
ZW50cnkgPSBWYXJpYWJsZUVudmlyb25tZW50RW50cnkoKTsKKyAgICBlbnRyeS5zZXRJc1ByaXZh
dGVNZXRob2QoKTsKKyAgICBlbnRyeS5zZXRJc0NvbnN0KCk7CisgICAgZW50cnkuc2V0SXNDYXB0
dXJlZCgpOworICAgIG1fbWFwLmFkZChpZGVudGlmaWVyLCBlbnRyeSk7CisKKyAgICAvLyBpdCB3
YXMgcHJldmlvdXNseSB1c2VkLCBtYXJrIGl0IGFzIGRlY2xhcmVkLgorICAgIFByaXZhdGVOYW1l
RW50cnkgbWV0YShQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzRGVjbGFyZWQgfCBQcml2YXRl
TmFtZUVudHJ5OjpUcmFpdHM6OklzVXNlZCB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNN
ZXRob2QpOworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMu
c2V0KGlkZW50aWZpZXIsIG1ldGEpOworICAgIHJldHVybiAhYWRkUmVzdWx0LmlzTmV3RW50cnk7
Cit9CiAKIHZvaWQgQ29tcGFjdFREWkVudmlyb25tZW50Ojpzb3J0Q29tcGFjdChDb21wYWN0JiBj
b21wYWN0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJp
YWJsZUVudmlyb25tZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxl
RW52aXJvbm1lbnQuaAppbmRleCA4M2FiYTFkNDdhNjguLmE4NzRjMGJhY2U5MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKQEAg
LTQ1LDcgKzQ1LDggQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0Z1bmN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNGdW5jdGlvbjsgfQogICAgIEFMV0FZU19JTkxJ
TkUgYm9vbCBpc1BhcmFtZXRlcigpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzUGFyYW1ldGVy
OyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRl
KCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGU7
IH0KLSAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQcml2YXRlTmFtZSgpIGNvbnN0IHsgcmV0dXJu
IG1fYml0cyAmIElzUHJpdmF0ZU5hbWU7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQcml2
YXRlRmllbGQoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1ByaXZhdGVGaWVsZDsgfQorICAg
IEFMV0FZU19JTkxJTkUgYm9vbCBpc1ByaXZhdGVNZXRob2QoKSBjb25zdCB7IHJldHVybiBtX2Jp
dHMgJiBJc1ByaXZhdGVNZXRob2Q7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0Nh
cHR1cmVkKCkgeyBtX2JpdHMgfD0gSXNDYXB0dXJlZDsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXRJc0NvbnN0KCkgeyBtX2JpdHMgfD0gSXNDb25zdDsgfQpAQCAtNTcsNyArNTgsOCBAQCBw
dWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzRnVuY3Rpb24oKSB7IG1fYml0cyB8
PSBJc0Z1bmN0aW9uOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzUGFyYW1ldGVyKCkg
eyBtX2JpdHMgfD0gSXNQYXJhbWV0ZXI7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNT
bG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGUoKSB7IG1fYml0cyB8PSBJc1Nsb3BweU1vZGVIb2lz
dGluZ0NhbmRpZGF0ZTsgfQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1ByaXZhdGVOYW1l
KCkgeyBtX2JpdHMgfD0gSXNQcml2YXRlTmFtZTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXRJc1ByaXZhdGVGaWVsZCgpIHsgbV9iaXRzIHw9IElzUHJpdmF0ZUZpZWxkOyB9CisgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldElzUHJpdmF0ZU1ldGhvZCgpIHsgbV9iaXRzIHw9IElzUHJpdmF0
ZU1ldGhvZDsgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGNsZWFySXNWYXIoKSB7IG1fYml0
cyAmPSB+SXNWYXI7IH0KIApAQCAtODAsNyArODIsOCBAQCBwcml2YXRlOgogICAgICAgICBJc0Z1
bmN0aW9uID0gMSA8PCA3LAogICAgICAgICBJc1BhcmFtZXRlciA9IDEgPDwgOCwKICAgICAgICAg
SXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGUgPSAxIDw8IDksCi0gICAgICAgIElzUHJpdmF0
ZU5hbWUgPSAxIDw8IDEwLAorICAgICAgICBJc1ByaXZhdGVGaWVsZCA9IDEgPDwgMTAsCisgICAg
ICAgIElzUHJpdmF0ZU1ldGhvZCA9IDEgPDwgMTEsCiAgICAgfTsKICAgICB1aW50MTZfdCBtX2Jp
dHMgeyAwIH07CiB9OwpAQCAtOTAsMTEgKzkzLDE2IEBAIHN0cnVjdCBWYXJpYWJsZUVudmlyb25t
ZW50RW50cnlIYXNoVHJhaXRzIDogSGFzaFRyYWl0czxWYXJpYWJsZUVudmlyb25tZW50RW50cnk+
CiB9OwogCiBzdHJ1Y3QgUHJpdmF0ZU5hbWVFbnRyeSB7CisgICAgZnJpZW5kIGNsYXNzIENhY2hl
ZFByaXZhdGVOYW1lRW50cnk7CisKIHB1YmxpYzoKICAgICBQcml2YXRlTmFtZUVudHJ5KHVpbnQx
Nl90IHRyYWl0cyA9IDApIHsgbV9iaXRzID0gdHJhaXRzOyB9CiAKICAgICBBTFdBWVNfSU5MSU5F
IGJvb2wgaXNVc2VkKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNVc2VkOyB9CiAgICAgQUxX
QVlTX0lOTElORSBib29sIGlzRGVjbGFyZWQoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc0Rl
Y2xhcmVkOyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzTWV0aG9kKCkgY29uc3QgeyByZXR1
cm4gbV9iaXRzICYgSXNNZXRob2Q7IH0KKworICAgIGJvb2wgaXNQcml2YXRlTWV0aG9kT3JBY2Vz
c29yKCkgY29uc3QgeyByZXR1cm4gaXNNZXRob2QoKTsgfQogCiAgICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldElzVXNlZCgpIHsgbV9iaXRzIHw9IElzVXNlZDsgfQogICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXRJc0RlY2xhcmVkKCkgeyBtX2JpdHMgfD0gSXNEZWNsYXJlZDsgfQpAQCAtMTA3LDgg
KzExNSwxMCBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgZW51bSBUcmFpdHMgOiB1aW50MTZfdCB7
CisgICAgICAgIE5vbmUgPSAwLAogICAgICAgICBJc1VzZWQgPSAxIDw8IDAsCiAgICAgICAgIElz
RGVjbGFyZWQgPSAxIDw8IDEsCisgICAgICAgIElzTWV0aG9kID0gMSA8PCAyLAogICAgIH07CiAK
IHByaXZhdGU6CkBAIC0xMTYsMTUgKzEyNiwxOCBAQCBwcml2YXRlOgogfTsKIAogc3RydWN0IFBy
aXZhdGVOYW1lRW50cnlIYXNoVHJhaXRzIDogSGFzaFRyYWl0czxQcml2YXRlTmFtZUVudHJ5PiB7
Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IGZhbHNlOworICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFsc2U7CiB9OwogCit0eXBl
ZGVmIEhhc2hNYXA8UGFja2VkUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgUHJpdmF0ZU5hbWVF
bnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJ
bXBsPj4sIFByaXZhdGVOYW1lRW50cnlIYXNoVHJhaXRzPiBQcml2YXRlTmFtZUVudmlyb25tZW50
OworCiBjbGFzcyBWYXJpYWJsZUVudmlyb25tZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFBhY2tlZFJlZlB0cjxVbmlxdWVk
U3RyaW5nSW1wbD4sIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gs
IEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFZhcmlhYmxlRW52aXJvbm1l
bnRFbnRyeUhhc2hUcmFpdHM+IE1hcDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8UGFja2VkUmVmUHRy
PFVuaXF1ZWRTdHJpbmdJbXBsPiwgUHJpdmF0ZU5hbWVFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gs
IEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnlI
YXNoVHJhaXRzPiBQcml2YXRlTmFtZXM7CisKIHB1YmxpYzoKKwogICAgIFZhcmlhYmxlRW52aXJv
bm1lbnQoKSB7IH0KICAgICBWYXJpYWJsZUVudmlyb25tZW50KFZhcmlhYmxlRW52aXJvbm1lbnQm
JiBvdGhlcikKICAgICAgICAgOiBtX21hcChXVEZNb3ZlKG90aGVyLm1fbWFwKSkKQEAgLTE0Niw2
ICsxNTksMTYgQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgTWFwOjpjb25zdF9pdGVyYXRv
ciBlbmQoKSBjb25zdCB7IHJldHVybiBtX21hcC5lbmQoKTsgfQogICAgIEFMV0FZU19JTkxJTkUg
TWFwOjpBZGRSZXN1bHQgYWRkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50
aWZpZXIpIHsgcmV0dXJuIG1fbWFwLmFkZChpZGVudGlmaWVyLCBWYXJpYWJsZUVudmlyb25tZW50
RW50cnkoKSk7IH0KICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6QWRkUmVzdWx0IGFkZChjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBhZGQoaWRlbnRpZmllci5pbXBsKCkpOyB9
CisKKyAgICBBTFdBWVNfSU5MSU5FIFByaXZhdGVOYW1lRW52aXJvbm1lbnQ6OkFkZFJlc3VsdCBh
ZGRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBhZGRQ
cml2YXRlTmFtZShpZGVudGlmaWVyLmltcGwoKSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIFByaXZh
dGVOYW1lRW52aXJvbm1lbnQ6OkFkZFJlc3VsdCBhZGRQcml2YXRlTmFtZShjb25zdCBSZWZQdHI8
VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3Jh
cmVEYXRhKQorICAgICAgICAgICAgbV9yYXJlRGF0YSA9IG1ha2VVbmlxdWU8VmFyaWFibGVFbnZp
cm9ubWVudDo6UmFyZURhdGE+KCk7CisKKyAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fcHJp
dmF0ZU5hbWVzLmFkZChpZGVudGlmaWVyLCBQcml2YXRlTmFtZUVudHJ5KCkpOworICAgIH0KKwog
ICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNp
emUoKSArIHByaXZhdGVOYW1lc1NpemUoKTsgfQogICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQg
bWFwU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKTsgfQogICAgIEFMV0FZU19JTkxJ
TkUgYm9vbCBjb250YWlucyhjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlm
aWVyKSBjb25zdCB7IHJldHVybiBtX21hcC5jb250YWlucyhpZGVudGlmaWVyKTsgfQpAQCAtMTY0
LDE3ICsxODcsMjAgQEAgcHVibGljOgogICAgIGJvb2wgaXNFdmVyeXRoaW5nQ2FwdHVyZWQoKSBj
b25zdCB7IHJldHVybiBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkOyB9CiAgICAgYm9vbCBpc0VtcHR5
KCkgY29uc3QgeyByZXR1cm4gIW1fbWFwLnNpemUoKTsgfQogCi0gICAgdXNpbmcgUHJpdmF0ZU5h
bWVzUmFuZ2UgPSBXVEY6Okl0ZXJhdG9yUmFuZ2U8UHJpdmF0ZU5hbWVzOjppdGVyYXRvcj47Cisg
ICAgdXNpbmcgUHJpdmF0ZU5hbWVzUmFuZ2UgPSBXVEY6Okl0ZXJhdG9yUmFuZ2U8UHJpdmF0ZU5h
bWVFbnZpcm9ubWVudDo6aXRlcmF0b3I+OwogCi0gICAgQUxXQVlTX0lOTElORSBNYXA6OkFkZFJl
c3VsdCBkZWNsYXJlUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyBy
ZXR1cm4gZGVjbGFyZVByaXZhdGVOYW1lKGlkZW50aWZpZXIuaW1wbCgpKTsgfQorICAgIEFMV0FZ
U19JTkxJTkUgTWFwOjpBZGRSZXN1bHQgZGVjbGFyZVByaXZhdGVGaWVsZChjb25zdCBJZGVudGlm
aWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBkZWNsYXJlUHJpdmF0ZUZpZWxkKGlkZW50aWZpZXIu
aW1wbCgpKTsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1c2VQcml2YXRlTmFtZShjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHVzZVByaXZhdGVOYW1lKGlkZW50aWZpZXIuaW1wbCgp
KTsgfQogCi0gICAgTWFwOjpBZGRSZXN1bHQgZGVjbGFyZVByaXZhdGVOYW1lKGNvbnN0IFJlZlB0
cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCisgICAgYm9vbCBkZWNsYXJlUHJpdmF0
ZU1ldGhvZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBkZWNsYXJlUHJp
dmF0ZU1ldGhvZChpZGVudGlmaWVyLmltcGwoKSk7IH0KKyAgICBib29sIGRlY2xhcmVQcml2YXRl
TWV0aG9kKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpOworCisg
ICAgTWFwOjpBZGRSZXN1bHQgZGVjbGFyZVByaXZhdGVGaWVsZChjb25zdCBSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQogICAgIHsKICAgICAgICAgYXV0byYgbWV0YSA9IGdl
dE9yQWRkUHJpdmF0ZU5hbWUoaWRlbnRpZmllci5nZXQoKSk7CiAgICAgICAgIG1ldGEuc2V0SXNE
ZWNsYXJlZCgpOwogICAgICAgICBhdXRvIGVudHJ5ID0gVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5
KCk7Ci0gICAgICAgIGVudHJ5LnNldElzUHJpdmF0ZU5hbWUoKTsKKyAgICAgICAgZW50cnkuc2V0
SXNQcml2YXRlRmllbGQoKTsKICAgICAgICAgZW50cnkuc2V0SXNDb25zdCgpOwogICAgICAgICBl
bnRyeS5zZXRJc0NhcHR1cmVkKCk7CiAgICAgICAgIHJldHVybiBtX21hcC5hZGQoaWRlbnRpZmll
ciwgZW50cnkpOwpAQCAtMjAxLDYgKzIyNywyNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBt
X3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5zaXplKCk7CiAgICAgfQogCisgICAgQUxXQVlTX0lO
TElORSBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiBwcml2YXRlTmFtZUVudmlyb25tZW50
KCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gJm1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVz
OworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgYm9vbCBoYXNQcml2YXRlTWV0aG9kT3JBY2Nl
c3NvcigpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgZm9yIChhdXRvIGVudHJ5IDogcHJpdmF0ZU5hbWVz
KCkpIHsKKyAgICAgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc1ByaXZhdGVNZXRob2RPckFjZXNz
b3IoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaGFzUHJpdmF0
ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKICAgICB7CiAgICAgICAgIGlmICgh
bV9yYXJlRGF0YSkKQEAgLTIyMiw2ICsyNjgsMjAgQEAgcHVibGljOgogICAgICAgICB9CiAgICAg
fQogCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGFkZFByaXZhdGVOYW1lc0Zyb20oY29uc3QgUHJp
dmF0ZU5hbWVFbnZpcm9ubWVudCogcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCkKKyAgICB7CisgICAg
ICAgIGlmICghcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgICAgICBtX3JhcmVEYXRhID0gbWFrZVVu
aXF1ZTxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4oKTsKKworICAgICAgICBmb3IgKGF1
dG8gZW50cnkgOiAqcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCkgeworICAgICAgICAgICAgQVNTRVJU
KGVudHJ5LnZhbHVlLmlzRGVjbGFyZWQoKSk7CisgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3By
aXZhdGVOYW1lcy5hZGQoZW50cnkua2V5LCBlbnRyeS52YWx1ZSk7CisgICAgICAgIH0KKyAgICB9
CisKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXNUbyhW
YXJpYWJsZUVudmlyb25tZW50JiBvdXRlcikgY29uc3QgewogICAgICAgICAvLyBVc2VkIGJ5IHRo
ZSBQYXJzZXIgdG8gdHJhbnNmZXIgcmVjb3JkZWQgdXNlcyBvZiBQcml2YXRlTmFtZXMgZnJvbSBh
bgogICAgICAgICAvLyBpbm5lciBQcml2YXRlTmFtZUVudmlyb25tZW50IGludG8gYW4gb3V0ZXIg
b25lLCBpbiBjYXNlIGEgUE5FIGlzIHVzZWQKQEAgLTI0NCw3ICszMDQsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIH0KICAgICAgICAgUmFyZURhdGEoY29uc3QgUmFyZURhdGEmKSA9IGRlZmF1bHQ7CiAg
ICAgICAgIFJhcmVEYXRhJiBvcGVyYXRvcj0oY29uc3QgUmFyZURhdGEmKSA9IGRlZmF1bHQ7Ci0g
ICAgICAgIFByaXZhdGVOYW1lcyBtX3ByaXZhdGVOYW1lczsKKyAgICAgICAgUHJpdmF0ZU5hbWVF
bnZpcm9ubWVudCBtX3ByaXZhdGVOYW1lczsKICAgICB9OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCmluZGV4IDhhYjBmOWUzOTk4
YS4uZDBjZGU3NDViMjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DYWNoZWRUeXBlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2Fj
aGVkVHlwZXMuY3BwCkBAIC05ODAsNiArOTgwLDcgQEAgcHVibGljOgogICAgICAgICBtX2JpdFZl
Y3RvcnMuZW5jb2RlKGVuY29kZXIsIHJhcmVEYXRhLm1fYml0VmVjdG9ycyk7CiAgICAgICAgIG1f
Y29uc3RhbnRJZGVudGlmaWVyU2V0cy5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9jb25zdGFu
dElkZW50aWZpZXJTZXRzKTsKICAgICAgICAgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9
IHJhcmVEYXRhLm1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI7CisgICAgICAgIG1fcHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQgPSByYXJlRGF0YS5tX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50Owog
ICAgIH0KIAogICAgIFVubGlua2VkQ29kZUJsb2NrOjpSYXJlRGF0YSogZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpIGNvbnN0CkBAIC05OTQsNiArOTk1LDcgQEAgcHVibGljOgogICAgICAgICBtX2Jp
dFZlY3RvcnMuZGVjb2RlKGRlY29kZXIsIHJhcmVEYXRhLT5tX2JpdFZlY3RvcnMpOwogICAgICAg
ICBtX2NvbnN0YW50SWRlbnRpZmllclNldHMuZGVjb2RlKGRlY29kZXIsIHJhcmVEYXRhLT5tX2Nv
bnN0YW50SWRlbnRpZmllclNldHMpOwogICAgICAgICByYXJlRGF0YS0+bV9uZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplciA9IG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI7CisgICAgICAgIHJh
cmVEYXRhLT5tX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID0gbV9wcml2YXRlQnJhbmRSZXF1aXJl
bWVudDsKICAgICAgICAgcmV0dXJuIHJhcmVEYXRhOwogICAgIH0KIApAQCAtMTAwNyw4ICsxMDA5
LDExIEBAIHByaXZhdGU6CiAgICAgQ2FjaGVkVmVjdG9yPENhY2hlZEJpdFZlY3Rvcj4gbV9iaXRW
ZWN0b3JzOwogICAgIENhY2hlZFZlY3RvcjxDYWNoZWRDb25zdGFudElkZW50aWZpZXJTZXRFbnRy
eT4gbV9jb25zdGFudElkZW50aWZpZXJTZXRzOwogICAgIHVuc2lnbmVkIG1fbmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIgOiAxOworICAgIHVuc2lnbmVkIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQgOiAxOwogfTsKIAordHlwZWRlZiBDYWNoZWRIYXNoTWFwPENhY2hlZFJlZlB0cjxDYWNoZWRV
bmlxdWVkU3RyaW5nSW1wbCwgVW5pcXVlZFN0cmluZ0ltcGwsIFdURjo6UGFja2VkUHRyVHJhaXRz
PFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnksIElkZW50aWZpZXJSZXBIYXNo
LCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+LCBQcml2YXRlTmFtZUVudHJ5
SGFzaFRyYWl0cz4gQ2FjaGVkUHJpdmF0ZU5hbWVFbnZpcm9ubWVudDsKKwogY2xhc3MgQ2FjaGVk
VmFyaWFibGVFbnZpcm9ubWVudFJhcmVEYXRhIDogcHVibGljIENhY2hlZE9iamVjdDxWYXJpYWJs
ZUVudmlyb25tZW50OjpSYXJlRGF0YT4gewogcHVibGljOgogICAgIHZvaWQgZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhJiByYXJlRGF0
YSkKQEAgLTEwMjIsNyArMTAyNyw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAg
Q2FjaGVkSGFzaE1hcDxDYWNoZWRSZWZQdHI8Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGwsIFVuaXF1
ZWRTdHJpbmdJbXBsLCBXVEY6OlBhY2tlZFB0clRyYWl0czxVbmlxdWVkU3RyaW5nSW1wbD4+LCBQ
cml2YXRlTmFtZUVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5p
cXVlZFN0cmluZ0ltcGw+PiwgUHJpdmF0ZU5hbWVFbnRyeUhhc2hUcmFpdHM+IG1fcHJpdmF0ZU5h
bWVzOworICAgIENhY2hlZFByaXZhdGVOYW1lRW52aXJvbm1lbnQgbV9wcml2YXRlTmFtZXM7CiB9
OwogCiBjbGFzcyBDYWNoZWRWYXJpYWJsZUVudmlyb25tZW50IDogcHVibGljIENhY2hlZE9iamVj
dDxWYXJpYWJsZUVudmlyb25tZW50PiB7CkBAIC0xMTk5LDcgKzEyMDQsNyBAQCBwdWJsaWM6CiAg
ICAgfQogCiBwcml2YXRlOgotICAgIENhY2hlZEhhc2hTZXQ8Q2FjaGVkUmVmUHRyPENhY2hlZFVu
aXF1ZWRTdHJpbmdJbXBsPiwgSWRlbnRpZmllclJlcEhhc2g+IG1fcHJpdmF0ZU5hbWVzOworICAg
IENhY2hlZEhhc2hNYXA8Q2FjaGVkUmVmUHRyPENhY2hlZFVuaXF1ZWRTdHJpbmdJbXBsLCBVbmlx
dWVkU3RyaW5nSW1wbCwgV1RGOjpQYWNrZWRQdHJUcmFpdHM8VW5pcXVlZFN0cmluZ0ltcGw+Piwg
UHJpdmF0ZU5hbWVFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVu
aXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnlIYXNoVHJhaXRzPiBtX3ByaXZhdGVO
YW1lczsKIH07CiAKIGNsYXNzIENhY2hlZFN5bWJvbFRhYmxlIDogcHVibGljIENhY2hlZE9iamVj
dDxTeW1ib2xUYWJsZT4gewpAQCAtMTc1Niw2ICsxNzYxLDcgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgbV9jbGFzc1NvdXJjZS5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9jbGFzc1NvdXJj
ZSk7CiAgICAgICAgIG1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXMuZW5jb2RlKGVuY29kZXIsIHJh
cmVEYXRhLm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOworICAgICAgICBtX3BhcmVudFByaXZh
dGVOYW1lRW52aXJvbm1lbnQuZW5jb2RlKGVuY29kZXIsIHJhcmVEYXRhLm1fcGFyZW50UHJpdmF0
ZU5hbWVFbnZpcm9ubWVudCk7CiAgICAgfQogCiAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU6OlJhcmVEYXRhKiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikgY29uc3QKQEAgLTE3NjMsMTIg
KzE3NjksMTQgQEAgcHVibGljOgogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
UmFyZURhdGEqIHJhcmVEYXRhID0gbmV3IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpSYXJl
RGF0YSB7IH07CiAgICAgICAgIG1fY2xhc3NTb3VyY2UuZGVjb2RlKGRlY29kZXIsIHJhcmVEYXRh
LT5tX2NsYXNzU291cmNlKTsKICAgICAgICAgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5kZWNv
ZGUoZGVjb2RlciwgcmFyZURhdGEtPm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOworICAgICAg
ICBtX3BhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQuZGVjb2RlKGRlY29kZXIsIHJhcmVEYXRh
LT5tX3BhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQpOwogICAgICAgICByZXR1cm4gcmFyZURh
dGE7CiAgICAgfQogCiBwcml2YXRlOgogICAgIENhY2hlZFNvdXJjZUNvZGVXaXRob3V0UHJvdmlk
ZXIgbV9jbGFzc1NvdXJjZTsKICAgICBDYWNoZWRWZWN0b3I8Q2FjaGVkQ29tcGFjdFREWkVudmly
b25tZW50TWFwSGFuZGxlPiBtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzOworICAgIENhY2hlZFBy
aXZhdGVOYW1lRW52aXJvbm1lbnQgbV9wYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50OwogfTsK
IAogY2xhc3MgQ2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlIDogcHVibGljIENhY2hlZE9iamVjdDxV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4gewpAQCAtMTgwNCw2ICsxODEyLDcgQEAgcHVibGlj
OgogICAgIHVuc2lnbmVkIHN1cGVyQmluZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3VwZXJCaW5k
aW5nOyB9CiAgICAgdW5zaWduZWQgZGVyaXZlZENvbnRleHRUeXBlKCkgY29uc3QgeyByZXR1cm4g
bV9kZXJpdmVkQ29udGV4dFR5cGU7IH0KICAgICB1bnNpZ25lZCBuZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplcigpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI7IH0K
KyAgICB1bnNpZ25lZCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ7IH0KIAogICAgIElkZW50aWZpZXIgbmFtZShEZWNvZGVy
JiBkZWNvZGVyKSBjb25zdCB7IHJldHVybiBtX25hbWUuZGVjb2RlKGRlY29kZXIpOyB9CiAgICAg
SWRlbnRpZmllciBlY21hTmFtZShEZWNvZGVyJiBkZWNvZGVyKSBjb25zdCB7IHJldHVybiBtX2Vj
bWFOYW1lLmRlY29kZShkZWNvZGVyKTsgfQpAQCAtMTgzMiw3ICsxODQxLDggQEAgcHJpdmF0ZToK
ICAgICB1bnNpZ25lZCBtX3BhcmFtZXRlcnNTdGFydE9mZnNldCA6IDMxOwogICAgIHVuc2lnbmVk
IG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0OwogICAgIHVuc2lnbmVkIG1fdHlwZVByb2ZpbGlu
Z0VuZE9mZnNldDsKLSAgICB1bnNpZ25lZCBtX3BhcmFtZXRlckNvdW50OworICAgIHVuc2lnbmVk
IG1fcGFyYW1ldGVyQ291bnQ6MzE7CisgICAgdW5zaWduZWQgbV9wcml2YXRlQnJhbmRSZXF1aXJl
bWVudCA6IDE7CiAgICAgU291cmNlUGFyc2VNb2RlIG1fc291cmNlUGFyc2VNb2RlOwogICAgIHVu
c2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKICAgICB1bnNpZ25lZCBtX2Z1bmN0aW9uTW9k
ZSA6IDI7IC8vIEZ1bmN0aW9uTW9kZQpAQCAtMTg4OSw3ICsxODk5LDYgQEAgcHVibGljOgogICAg
IHVuc2lnbmVkIGlzQ2xhc3NDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0NsYXNzQ29udGV4
dDsgfQogICAgIHVuc2lnbmVkIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29u
c3RydWN0b3JLaW5kOyB9CiAgICAgdW5zaWduZWQgZGVyaXZlZENvbnRleHRUeXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9kZXJpdmVkQ29udGV4dFR5cGU7IH0KLSAgICB1bnNpZ25lZCBuZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplcigpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXI7IH0KICAgICB1bnNpZ25lZCBldmFsQ29udGV4dFR5cGUoKSBjb25zdCB7IHJldHVybiBt
X2V2YWxDb250ZXh0VHlwZTsgfQogICAgIHVuc2lnbmVkIGhhc1RhaWxDYWxscygpIGNvbnN0IHsg
cmV0dXJuIG1faGFzVGFpbENhbGxzOyB9CiAgICAgdW5zaWduZWQgaGFzQ2hlY2twb2ludHMoKSBj
b25zdCB7IHJldHVybiBtX2hhc0NoZWNrcG9pbnRzOyB9CkBAIC0xOTIxLDcgKzE5MzAsNiBAQCBw
cml2YXRlOgogICAgIHVuc2lnbmVkIG1faXNDbGFzc0NvbnRleHQgOiAxOwogICAgIHVuc2lnbmVk
IG1fY29uc3RydWN0b3JLaW5kIDogMjsKICAgICB1bnNpZ25lZCBtX2Rlcml2ZWRDb250ZXh0VHlw
ZSA6IDI7Ci0gICAgdW5zaWduZWQgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA6IDE7CiAg
ICAgdW5zaWduZWQgbV9ldmFsQ29udGV4dFR5cGUgOiAyOwogICAgIHVuc2lnbmVkIG1faGFzVGFp
bENhbGxzIDogMTsKICAgICB1bnNpZ25lZCBtX2NvZGVUeXBlIDogMjsKQEAgLTIyMDIsNiArMjIx
MCw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBVbmxpCiAgICAgbV9zdXBlckJpbmRpbmcgPSBleGVj
dXRhYmxlLm1fc3VwZXJCaW5kaW5nOwogICAgIG1fZGVyaXZlZENvbnRleHRUeXBlID0gZXhlY3V0
YWJsZS5tX2Rlcml2ZWRDb250ZXh0VHlwZTsKICAgICBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyID0gZXhlY3V0YWJsZS5tX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOworICAgIG1fcHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBleGVjdXRhYmxlLm1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQ7CiAKICAgICBtX3JhcmVEYXRhLmVuY29kZShlbmNvZGVyLCBleGVjdXRhYmxlLm1fcmFyZURh
dGEuZ2V0KCkpOwogCkBAIC0yMjQzLDYgKzIyNTIsNyBAQCBBTFdBWVNfSU5MSU5FIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShEZWNvZGVyJiBk
ZQogICAgICwgbV90eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQoY2FjaGVkRXhlY3V0YWJsZS50eXBl
UHJvZmlsaW5nU3RhcnRPZmZzZXQoKSkKICAgICAsIG1fdHlwZVByb2ZpbGluZ0VuZE9mZnNldChj
YWNoZWRFeGVjdXRhYmxlLnR5cGVQcm9maWxpbmdFbmRPZmZzZXQoKSkKICAgICAsIG1fcGFyYW1l
dGVyQ291bnQoY2FjaGVkRXhlY3V0YWJsZS5wYXJhbWV0ZXJDb3VudCgpKQorICAgICwgbV9wcml2
YXRlQnJhbmRSZXF1aXJlbWVudChjYWNoZWRFeGVjdXRhYmxlLnByaXZhdGVCcmFuZFJlcXVpcmVt
ZW50KCkpCiAgICAgLCBtX2ZlYXR1cmVzKGNhY2hlZEV4ZWN1dGFibGUuZmVhdHVyZXMoKSkKICAg
ICAsIG1fc291cmNlUGFyc2VNb2RlKGNhY2hlZEV4ZWN1dGFibGUuc291cmNlUGFyc2VNb2RlKCkp
CiAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChjYWNoZWRFeGVjdXRhYmxlLmNvbnN0cnVjdG9yS2lu
ZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXgg
YjkxYmNhNTlkNDNjLi41NjM4MGUyZmQ0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29kZUNhY2hlLmNwcApAQCAtNzEsMTMgKzcxLDEzIEBAIHN0YXRpYyB2b2lkIGdlbmVy
YXRlVW5saW5rZWRDb2RlQmxvY2tGb3JGdW5jdGlvbnMoVk0mIHZtLCBVbmxpbmtlZENvZGVCbG9j
ayogdW5sCiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBVbmxpbmtlZENvZGVCbG9ja1R5cGUsIGNsYXNz
IEV4ZWN1dGFibGVUeXBlID0gU2NyaXB0RXhlY3V0YWJsZT4KLVVubGlua2VkQ29kZUJsb2NrVHlw
ZSogZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ltcGwoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1v
ZGUgc2NyaXB0TW9kZSwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRp
b25Nb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5
cGUsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uQ29udGV4dCwgY29uc3QgVERaRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaID0g
bnVsbHB0ciwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVQcml2YXRlTmFt
ZXMgPSBudWxscHRyLCBFeGVjdXRhYmxlVHlwZSogZXhlY3V0YWJsZSA9IG51bGxwdHIpCitVbmxp
bmtlZENvZGVCbG9ja1R5cGUqIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsKFZNJiB2bSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwg
SlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1v
ZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yLCBFdmFsQ29udGV4dFR5
cGUgZXZhbENvbnRleHRUeXBlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBl
LCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGNvbnN0IFREWkVudmlyb25tZW50KiB2YXJp
YWJsZXNVbmRlclREWiA9IG51bGxwdHIsIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHBy
aXZhdGVOYW1lRW52aXJvbm1lbnQgPSBudWxscHRyLCBFeGVjdXRhYmxlVHlwZSogZXhlY3V0YWJs
ZSA9IG51bGxwdHIpCiB7CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBDYWNoZVR5cGVzPFVubGlua2Vk
Q29kZUJsb2NrVHlwZT46OlJvb3ROb2RlIFJvb3ROb2RlOwogICAgIGJvb2wgaXNJbnNpZGVPcmRp
bmFyeUZ1bmN0aW9uID0gZXhlY3V0YWJsZSAmJiBleGVjdXRhYmxlLT5pc0luc2lkZU9yZGluYXJ5
RnVuY3Rpb24oKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxSb290Tm9kZT4gcm9vdE5vZGUgPSBw
YXJzZTxSb290Tm9kZT4oCi0gICAgICAgIHZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJz
ZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgQ2FjaGVU
eXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90
TmVlZGVkLCBlcnJvciwgbnVsbHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBkZXJpdmVkQ29u
dGV4dFR5cGUsIGV2YWxDb250ZXh0VHlwZSwgbnVsbHB0ciwgcGFyZW50U2NvcGVQcml2YXRlTmFt
ZXMsIG51bGxwdHIsIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbik7CisgICAgICAgIHZtLCBzb3Vy
Y2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgc3RyaWN0
TW9kZSwgc2NyaXB0TW9kZSwgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpwYXJz
ZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvciwgbnVsbHB0ciwgQ29uc3RydWN0
b3JLaW5kOjpOb25lLCBkZXJpdmVkQ29udGV4dFR5cGUsIGV2YWxDb250ZXh0VHlwZSwgbnVsbHB0
ciwgcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgbnVsbHB0ciwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0
aW9uKTsKIAogICAgIGlmICghcm9vdE5vZGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAt
OTQsOSArOTQsMTIgQEAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBnZW5lcmF0ZVVubGlua2VkQ29k
ZUJsb2NrSW1wbChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHMKICAgICBib29sIHVzZXNFdmFs
ID0gcm9vdE5vZGUtPmZlYXR1cmVzKCkgJiBFdmFsRmVhdHVyZTsKICAgICBFQ01BTW9kZSBlY21h
TW9kZSA9IHJvb3ROb2RlLT5mZWF0dXJlcygpICYgU3RyaWN0TW9kZUZlYXR1cmUgPyBFQ01BTW9k
ZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCk7CiAgICAgTmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSBOZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplcjo6Tm87Ci0gICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWVfdjxFeGVjdXRhYmxl
VHlwZSwgRGlyZWN0RXZhbEV4ZWN1dGFibGU+KQorICAgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50
IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID0gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmU7
CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWVfdjxFeGVjdXRhYmxlVHlwZSwgRGlyZWN0
RXZhbEV4ZWN1dGFibGU+KSB7CiAgICAgICAgIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyID0g
ZXhlY3V0YWJsZS0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKTsKLSAgICBFeGVjdXRhYmxl
SW5mbyBleGVjdXRhYmxlSW5mbyh1c2VzRXZhbCwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3Rvcktp
bmQ6Ok5vbmUsIHNjcmlwdE1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBDYWNoZVR5cGVz
PFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlLCBu
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgZmFsc2Us
IGV2YWxDb250ZXh0VHlwZSk7CisgICAgICAgIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID0gZXhl
Y3V0YWJsZS0+cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKTsKKyAgICB9CisgICAgRXhlY3V0YWJs
ZUluZm8gZXhlY3V0YWJsZUluZm8odXNlc0V2YWwsIGZhbHNlLCBwcml2YXRlQnJhbmRSZXF1aXJl
bWVudCwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgc2NyaXB0TW9kZSwgU3VwZXJCaW5k
aW5nOjpOb3ROZWVkZWQsIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VN
b2RlLCBkZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBpc0Fy
cm93RnVuY3Rpb25Db250ZXh0LCBmYWxzZSwgZXZhbENvbnRleHRUeXBlKTsKIAogICAgIFVubGlu
a2VkQ29kZUJsb2NrVHlwZSogdW5saW5rZWRDb2RlQmxvY2sgPSBVbmxpbmtlZENvZGVCbG9ja1R5
cGU6OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZUluZm8sIGNvZGVHZW5lcmF0aW9uTW9kZSk7CiAgICAg
dW5saW5rZWRDb2RlQmxvY2stPnJlY29yZFBhcnNlKHJvb3ROb2RlLT5mZWF0dXJlcygpLCByb290
Tm9kZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwgbGluZUNvdW50LCB1bmxpbmtlZEVuZENvbHVt
bik7CkBAIC0xMDgsNyArMTExLDcgQEAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBnZW5lcmF0ZVVu
bGlua2VkQ29kZUJsb2NrSW1wbChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHMKICAgICBWZWN0
b3I8Q29tcGFjdFREWkVudmlyb25tZW50TWFwOjpIYW5kbGU+IHBhcmVudFZhcmlhYmxlc1VuZGVy
VERaOwogICAgIGlmICh2YXJpYWJsZXNVbmRlclREWikKICAgICAgICAgcGFyZW50VmFyaWFibGVz
VW5kZXJURFouYXBwZW5kKHZtLm1fY29tcGFjdFZhcmlhYmxlTWFwLT5nZXQoKnZhcmlhYmxlc1Vu
ZGVyVERaKSk7Ci0gICAgZXJyb3IgPSBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUodm0sIHJv
b3ROb2RlLmdldCgpLCBzb3VyY2UsIHVubGlua2VkQ29kZUJsb2NrLCBjb2RlR2VuZXJhdGlvbk1v
ZGUsIHBhcmVudFZhcmlhYmxlc1VuZGVyVERaLCBlY21hTW9kZSk7CisgICAgZXJyb3IgPSBCeXRl
Y29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUodm0sIHJvb3ROb2RlLmdldCgpLCBzb3VyY2UsIHVubGlu
a2VkQ29kZUJsb2NrLCBjb2RlR2VuZXJhdGlvbk1vZGUsIHBhcmVudFZhcmlhYmxlc1VuZGVyVERa
LCBwcml2YXRlTmFtZUVudmlyb25tZW50LCBlY21hTW9kZSk7CiAKICAgICBpZiAoZXJyb3IuaXNW
YWxpZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTExNywxNCArMTIwLDE0IEBAIFVu
bGlua2VkQ29kZUJsb2NrVHlwZSogZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ltcGwoVk0mIHZt
LCBjb25zdCBTb3VyY2VDb2RlJiBzCiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBVbmxpbmtlZENvZGVC
bG9ja1R5cGUsIGNsYXNzIEV4ZWN1dGFibGVUeXBlPgotVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBn
ZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrKFZNJiB2bSwgRXhlY3V0YWJsZVR5cGUqIGV4ZWN1dGFi
bGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1v
ZGUsIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRp
b25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIFBhcnNlckVycm9yJiBlcnJvciwgRXZhbENvbnRl
eHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgY29uc3QgVERaRW52aXJvbm1lbnQqIHZhcmlhYmxlc1Vu
ZGVyVERaID0gbnVsbHB0ciwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVQ
cml2YXRlTmFtZXMgPSBudWxscHRyKQorVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBnZW5lcmF0ZVVu
bGlua2VkQ29kZUJsb2NrKFZNJiB2bSwgRXhlY3V0YWJsZVR5cGUqIGV4ZWN1dGFibGUsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIEpTUGFy
c2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBj
b2RlR2VuZXJhdGlvbk1vZGUsIFBhcnNlckVycm9yJiBlcnJvciwgRXZhbENvbnRleHRUeXBlIGV2
YWxDb250ZXh0VHlwZSwgY29uc3QgVERaRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaID0g
bnVsbHB0ciwgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogcHJpdmF0ZU5hbWVFbnZpcm9u
bWVudCA9IG51bGxwdHIpCiB7Ci0gICAgcmV0dXJuIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJ
bXBsPFVubGlua2VkQ29kZUJsb2NrVHlwZSwgRXhlY3V0YWJsZVR5cGU+KHZtLCBzb3VyY2UsIHN0
cmljdE1vZGUsIHNjcmlwdE1vZGUsIGNvZGVHZW5lcmF0aW9uTW9kZSwgZXJyb3IsIGV2YWxDb250
ZXh0VHlwZSwgZXhlY3V0YWJsZS0+ZGVyaXZlZENvbnRleHRUeXBlKCksIGV4ZWN1dGFibGUtPmlz
QXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgdmFyaWFibGVzVW5kZXJURFosIHBhcmVudFNjb3BlUHJp
dmF0ZU5hbWVzLCBleGVjdXRhYmxlKTsKKyAgICByZXR1cm4gZ2VuZXJhdGVVbmxpbmtlZENvZGVC
bG9ja0ltcGw8VW5saW5rZWRDb2RlQmxvY2tUeXBlLCBFeGVjdXRhYmxlVHlwZT4odm0sIHNvdXJj
ZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgY29kZUdlbmVyYXRpb25Nb2RlLCBlcnJvciwgZXZh
bENvbnRleHRUeXBlLCBleGVjdXRhYmxlLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgZXhlY3V0YWJs
ZS0+aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCB2YXJpYWJsZXNVbmRlclREWiwgcHJpdmF0ZU5h
bWVFbnZpcm9ubWVudCwgZXhlY3V0YWJsZSk7CiB9CiAKLVVubGlua2VkRXZhbENvZGVCbG9jayog
Z2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ZvckRpcmVjdEV2YWwoVk0mIHZtLCBEaXJlY3RFdmFs
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNl
clN0cmljdE1vZGUgc3RyaWN0TW9kZSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIE9w
dGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgUGFyc2VyRXJy
b3ImIGVycm9yLCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlLCBjb25zdCBURFpFbnZp
cm9ubWVudCogdmFyaWFibGVzVW5kZXJURFosIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBh
cmVudFNjb3BlUHJpdmF0ZU5hbWVzKQorVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBnZW5lcmF0ZVVu
bGlua2VkQ29kZUJsb2NrRm9yRGlyZWN0RXZhbChWTSYgdm0sIERpcmVjdEV2YWxFeGVjdXRhYmxl
KiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTUGFyc2VyU3RyaWN0TW9k
ZSBzdHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgT3B0aW9uU2V0PENv
ZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBQYXJzZXJFcnJvciYgZXJyb3Is
IEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIGNvbnN0IFREWkVudmlyb25tZW50KiB2
YXJpYWJsZXNVbmRlclREWiwgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogcHJpdmF0ZU5h
bWVFbnZpcm9ubWVudCkKIHsKLSAgICByZXR1cm4gZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9jazxV
bmxpbmtlZEV2YWxDb2RlQmxvY2s+KHZtLCBleGVjdXRhYmxlLCBzb3VyY2UsIHN0cmljdE1vZGUs
IHNjcmlwdE1vZGUsIGNvZGVHZW5lcmF0aW9uTW9kZSwgZXJyb3IsIGV2YWxDb250ZXh0VHlwZSwg
dmFyaWFibGVzVW5kZXJURFosIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzKTsKKyAgICByZXR1cm4g
Z2VuZXJhdGVVbmxpbmtlZENvZGVCbG9jazxVbmxpbmtlZEV2YWxDb2RlQmxvY2s+KHZtLCBleGVj
dXRhYmxlLCBzb3VyY2UsIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIGNvZGVHZW5lcmF0aW9uTW9k
ZSwgZXJyb3IsIGV2YWxDb250ZXh0VHlwZSwgdmFyaWFibGVzVW5kZXJURFosIHByaXZhdGVOYW1l
RW52aXJvbm1lbnQpOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgVW5saW5rZWRDb2RlQmxvY2tUeXBl
PgpAQCAtMjQ4LDcgKzI1MSw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBDb2RlQ2Fj
aGU6OmdldFVubGlua2VkR2xvYmFsRnVuY3Rpb25FeGVjdXRhYmxlKFZNJiB2CiAgICAgLy8gVGhl
IEZ1bmN0aW9uIGNvbnN0cnVjdG9yIG9ubHkgaGFzIGFjY2VzcyB0byBnbG9iYWwgdmFyaWFibGVz
LCBzbyBubyB2YXJpYWJsZXMgd2lsbCBiZSB1bmRlciBURFogdW5sZXNzIHRoZXkncmUKICAgICAv
LyBpbiB0aGUgZ2xvYmFsIGxleGljYWwgZW52aXJvbm1lbnQsIHdoaWNoIHdlIGFsd2F5cyBURFog
Y2hlY2sgYWNjZXNzZXMgZnJvbS4KICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxp
dHkgPSBjb25zdHJ1Y3RBYmlsaXR5Rm9yUGFyc2VNb2RlKG1ldGFkYXRhLT5wYXJzZU1vZGUoKSk7
Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUodm0sIHNvdXJjZSwgbWV0YWRhdGEsIFVu
bGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9k
ZTo6Q2xhc3NpYywgV1RGOjpudWxsb3B0LCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIE5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyOjpObyk7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVh
dGUodm0sIHNvdXJjZSwgbWV0YWRhdGEsIFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVj
dEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgV1RGOjpudWxsb3B0LCBXVEY6
Om51bGxvcHQsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXI6Ok5vLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZSk7CiAKICAgICBpZiAoIXNv
dXJjZS5wcm92aWRlcigpLT5zb3VyY2VVUkxEaXJlY3RpdmUoKS5pc051bGwoKSkKICAgICAgICAg
ZnVuY3Rpb25FeGVjdXRhYmxlLT5zZXRTb3VyY2VVUkxEaXJlY3RpdmUoc291cmNlLnByb3ZpZGVy
KCktPnNvdXJjZVVSTERpcmVjdGl2ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29kZUNhY2hlLmgKaW5kZXggOWNjMWNhNzAwNDQ3Li42MGE3N2QyYWYzYWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCkBAIC0yNTQsNyArMjU0LDcgQEAgdGVt
cGxhdGUgPD4gc3RydWN0IENhY2hlVHlwZXM8VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
PiB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gU291
cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFsdWF0ZU1vZGU7CiB9OwogCi1VbmxpbmtlZEV2YWxDb2Rl
QmxvY2sqIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tGb3JEaXJlY3RFdmFsKFZNJiwgRGlyZWN0
RXZhbEV4ZWN1dGFibGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJTdHJpY3RNb2RlLCBK
U1BhcnNlclNjcmlwdE1vZGUsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBQYXJzZXJF
cnJvciYsIEV2YWxDb250ZXh0VHlwZSwgY29uc3QgVERaRW52aXJvbm1lbnQqIHZhcmlhYmxlc1Vu
ZGVyVERaLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVByaXZhdGVOYW1l
cyk7CitVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tGb3JE
aXJlY3RFdmFsKFZNJiwgRGlyZWN0RXZhbEV4ZWN1dGFibGUqLCBjb25zdCBTb3VyY2VDb2RlJiwg
SlNQYXJzZXJTdHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGUsIE9wdGlvblNldDxDb2RlR2Vu
ZXJhdGlvbk1vZGU+LCBQYXJzZXJFcnJvciYsIEV2YWxDb250ZXh0VHlwZSwgY29uc3QgVERaRW52
aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50
Kik7CiBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIHJlY3Vyc2l2ZWx5R2VuZXJhdGVVbmxpbmtl
ZENvZGVCbG9ja0ZvclByb2dyYW0oVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJTdHJp
Y3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGUsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+
LCBQYXJzZXJFcnJvciYsIEV2YWxDb250ZXh0VHlwZSk7CiBVbmxpbmtlZE1vZHVsZVByb2dyYW1D
b2RlQmxvY2sqIHJlY3Vyc2l2ZWx5R2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0Zvck1vZHVsZVBy
b2dyYW0oVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJTdHJpY3RNb2RlLCBKU1BhcnNl
clNjcmlwdE1vZGUsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBQYXJzZXJFcnJvciYs
IEV2YWxDb250ZXh0VHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcAppbmRleCBjN2MyOWMwNTAyOTYuLmY2Zjc5
MzA3ZGZlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0
RXZhbEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rp
cmVjdEV2YWxFeGVjdXRhYmxlLmNwcApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgSlND
IHsKIAotRGlyZWN0RXZhbEV4ZWN1dGFibGUqIERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBE
ZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25D
b250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBlIGV2
YWxDb250ZXh0VHlwZSwgY29uc3QgVERaRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaLCBj
b25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwcml2YXRlTmFtZXMsIEVDTUFNb2RlIGVjbWFNb2Rl
KQorRGlyZWN0RXZhbEV4ZWN1dGFibGUqIERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBEZXJp
dmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQg
cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9v
bCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5
cGUsIGNvbnN0IFREWkVudmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclREWiwgY29uc3QgUHJpdmF0
ZU5hbWVFbnZpcm9ubWVudCogcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgRUNNQU1vZGUgZWNtYU1v
ZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTQ0LDcgKzQ0LDcgQEAgRGlyZWN0RXZhbEV4
ZWN1dGFibGUqIERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byog
ZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERpcmVjdEV2YWxFeGVjdXRh
YmxlPih2bS5oZWFwKSkgRGlyZWN0RXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2Us
IGVjbWFNb2RlLmlzU3RyaWN0KCksIGRlcml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGlzSW5zaWRlT3JkaW5hcnlGdW5j
dGlvbiwgZXZhbENvbnRleHRUeXBlKTsKKyAgICBhdXRvKiBleGVjdXRhYmxlID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8RGlyZWN0RXZhbEV4ZWN1dGFibGU+KHZtLmhlYXApKSBEaXJlY3RF
dmFsRXhlY3V0YWJsZShnbG9iYWxPYmplY3QsIHNvdXJjZSwgZWNtYU1vZGUuaXNTdHJpY3QoKSwg
ZGVyaXZlZENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgcHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGlzSW5zaWRlT3JkaW5hcnlG
dW5jdGlvbiwgZXZhbENvbnRleHRUeXBlKTsKICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlv
bih2bSk7CiAKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKQEAgLTUyLDcgKzUyLDcgQEAgRGlyZWN0
RXZhbEV4ZWN1dGFibGUqIERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwKICAgICBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2Rl
R2VuZXJhdGlvbk1vZGUgPSBnbG9iYWxPYmplY3QtPmRlZmF1bHRDb2RlR2VuZXJhdGlvbk1vZGUo
KTsKIAogICAgIC8vIFdlIGRvbid0IGJvdGhlciB3aXRoIENvZGVDYWNoZSBoZXJlIGJlY2F1c2Ug
ZGlyZWN0IGV2YWwgdXNlcyBhIHNwZWNpYWxpemVkIERpcmVjdEV2YWxDb2RlQ2FjaGUuCi0gICAg
VW5saW5rZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZEV2YWxDb2RlID0gZ2VuZXJhdGVVbmxpbmtl
ZENvZGVCbG9ja0ZvckRpcmVjdEV2YWwodm0sIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPnNvdXJj
ZSgpLCBzdHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIGNvZGVHZW5lcmF0
aW9uTW9kZSwgZXJyb3IsIGV2YWxDb250ZXh0VHlwZSwgdmFyaWFibGVzVW5kZXJURFosIHByaXZh
dGVOYW1lcyk7CisgICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZEV2YWxDb2RlID0g
Z2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ZvckRpcmVjdEV2YWwodm0sIGV4ZWN1dGFibGUsIGV4
ZWN1dGFibGUtPnNvdXJjZSgpLCBzdHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNz
aWMsIGNvZGVHZW5lcmF0aW9uTW9kZSwgZXJyb3IsIGV2YWxDb250ZXh0VHlwZSwgdmFyaWFibGVz
VW5kZXJURFosIHByaXZhdGVOYW1lRW52aXJvbm1lbnQpOwogCiAgICAgaWYgKGdsb2JhbE9iamVj
dC0+aGFzRGVidWdnZXIoKSkKICAgICAgICAgZ2xvYmFsT2JqZWN0LT5kZWJ1Z2dlcigpLT5zb3Vy
Y2VQYXJzZWQoZ2xvYmFsT2JqZWN0LCBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLCBl
cnJvci5saW5lKCksIGVycm9yLm1lc3NhZ2UoKSk7CkBAIC02NywxMCArNjcsMTAgQEAgRGlyZWN0
RXZhbEV4ZWN1dGFibGUqIERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwKICAgICByZXR1cm4gZXhlY3V0YWJsZTsKIH0KIAotRGlyZWN0RXZh
bEV4ZWN1dGFibGU6OkRpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpblN0cmljdENvbnRleHQsIERl
cml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNv
bnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUgZXZh
bENvbnRleHRUeXBlKQotICAgIDogRXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2Us
IGluU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250
ZXh0LCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250ZXh0VHlwZSwgbmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIpCitEaXJlY3RFdmFsRXhlY3V0YWJsZTo6RGlyZWN0RXZhbEV4ZWN1
dGFibGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250
ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBi
b29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9u
LCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKQorICAgIDogRXZhbEV4ZWN1dGFibGUo
Z2xvYmFsT2JqZWN0LCBzb3VyY2UsIGluU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBl
LCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxD
b250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFuZFJlcXVp
cmVtZW50KQogewotICAgIEFTU0VSVChuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9PSBOZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8gfHwgZGVyaXZlZENvbnRleHRUeXBlID09IERlcml2
ZWRDb250ZXh0VHlwZTo6RGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCk7CisgICAgQVNTRVJUKChu
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9PSBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6
Tm8gJiYgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPT0gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6
Ok5vbmUpIHx8IGRlcml2ZWRDb250ZXh0VHlwZSA9PSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2
ZWRDb25zdHJ1Y3RvckNvbnRleHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oCmlu
ZGV4IDhjNTJjYjY4MWU4ZC4uMzYyY2VkOGQ3YjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmgKQEAgLTMxLDkgKzMxLDkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIERpcmVjdEV2YWxFeGVjdXRhYmxlIGZpbmFsIDog
cHVibGljIEV2YWxFeGVjdXRhYmxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgRGlyZWN0RXZhbEV4
ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBEZXJp
dmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dG
dW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4
dFR5cGUsIGNvbnN0IFREWkVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgY29u
c3QgVmFyaWFibGVFbnZpcm9ubWVudCogcHJpdmF0ZU5hbWVzLCBFQ01BTW9kZSk7CisgICAgc3Rh
dGljIERpcmVjdEV2YWxFeGVjdXRhYmxlKiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBT
b3VyY2VDb2RlJiwgRGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
ciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwg
Ym9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSwgY29uc3QgVERa
RW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBjb25zdCBQcml2YXRlTmFtZUVu
dmlyb25tZW50KiwgRUNNQU1vZGUpOwogcHJpdmF0ZToKLSAgICBEaXJlY3RFdmFsRXhlY3V0YWJs
ZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGluU3RyaWN0Q29udGV4
dCwgRGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBp
c0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZh
bENvbnRleHRUeXBlKTsKKyAgICBEaXJlY3RFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCos
IGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRU
eXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQs
IGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rp
b24sIEV2YWxDb250ZXh0VHlwZSk7CiB9OwogCiBzdGF0aWNfYXNzZXJ0KHNpemVvZihEaXJlY3RF
dmFsRXhlY3V0YWJsZSkgPT0gc2l6ZW9mKEV2YWxFeGVjdXRhYmxlKSwgIiIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuY3BwCmluZGV4IDJlYzEz
N2E3MzYyMi4uMGIzZDQxNjRhYTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FdmFsRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXZhbEV4ZWN1dGFibGUuY3BwCkBAIC0zMiw5ICszMiwxMCBAQCBuYW1lc3BhY2UgSlND
IHsKIAogY29uc3QgQ2xhc3NJbmZvIEV2YWxFeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJFdmFsRXhl
Y3V0YWJsZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoRXZhbEV4ZWN1dGFibGUpIH07CiAKLUV2YWxFeGVjdXRhYmxlOjpFdmFsRXhlY3V0YWJs
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IGJvb2wgaW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRU
eXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1
bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcikKK0V2YWxFeGVjdXRhYmxlOjpF
dmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVy
aXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNp
ZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlLCBOZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpCiAgICAgOiBCYXNlKGds
b2JhbE9iamVjdC0+dm0oKS5ldmFsRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgZ2xvYmFsT2Jq
ZWN0LT52bSgpLCBzb3VyY2UsIGluU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBp
c0Fycm93RnVuY3Rpb25Db250ZXh0LCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250
ZXh0VHlwZSwgTm9JbnRyaW5zaWMpCiAgICAgLCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcikpCisgICAg
LCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50KHN0YXRpY19jYXN0PHVuc2lnbmVkPihwcml2YXRl
QnJhbmRSZXF1aXJlbWVudCkpCiB7CiAgICAgQVNTRVJUKHNvdXJjZS5wcm92aWRlcigpLT5zb3Vy
Y2VUeXBlKCkgPT0gU291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFtKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oCmluZGV4IDY3ZTY5
Yzg2MjliYS4uNTI2MDI1MWFjZWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FdmFsRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V2YWxFeGVjdXRhYmxlLmgKQEAgLTYyLDEzICs2MiwxNCBAQCBwdWJsaWM6CiAKICAgICBE
RUNMQVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0
IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGZhbHNlLCBmYWxzZSwgQ29uc3Ry
dWN0b3JLaW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIFN1cGVyQmluZGlu
Zzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBkZXJpdmVkQ29udGV4
dFR5cGUoKSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgaXNBcnJvd0Z1bmN0aW9uQ29u
dGV4dCgpLCBmYWxzZSwgZXZhbENvbnRleHRUeXBlKCkpOyB9CisgICAgRXhlY3V0YWJsZUluZm8g
ZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1c2VzRXZhbCgp
LCBmYWxzZSwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmUsIGZhbHNlLCBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgU3VwZXJCaW5kaW5nOjpO
b3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGRlcml2ZWRDb250ZXh0VHlw
ZSgpLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0
KCksIGZhbHNlLCBldmFsQ29udGV4dFR5cGUoKSk7IH0KIAogICAgIHVuc2lnbmVkIG51bVZhcmlh
YmxlcygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJpYWJsZXMoKTsg
fQogICAgIHVuc2lnbmVkIG51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKCkgeyByZXR1cm4g
bV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKCk7
IH0KICAgICB1bnNpZ25lZCBudW1Ub3BMZXZlbEZ1bmN0aW9uRGVjbHMoKSB7IHJldHVybiBtX3Vu
bGlua2VkRXZhbENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KICAgICBib29s
IGFsbG93RGlyZWN0RXZhbENhY2hlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2Rl
QmxvY2stPmFsbG93RGlyZWN0RXZhbENhY2hlKCk7IH0KICAgICBOZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyPihtX25lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyKTsgfQorICAgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVp
cmVtZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQ+KG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOyB9CiAgICAgVGVtcGxhdGVPYmplY3RNYXAm
IGVuc3VyZVRlbXBsYXRlT2JqZWN0TWFwKFZNJik7CiAKIHByb3RlY3RlZDoKQEAgLTc2LDExICs3
NywxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgZnJpZW5kIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CiAK
ICAgICB1c2luZyBCYXNlOjpmaW5pc2hDcmVhdGlvbjsKLSAgICBFdmFsRXhlY3V0YWJsZShKU0ds
b2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVy
aXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNp
ZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyKTsKKyAgICBFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJj
ZUNvZGUmLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlz
QXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFs
Q29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1
aXJlbWVudCk7CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RW
aXNpdG9yJik7CiAKICAgICB1bnNpZ25lZCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIDog
MTsKKyAgICB1bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsKIAogICAgIFdy
aXRlQmFycmllcjxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPiBtX2V2YWxDb2RlQmxvY2s7CiAg
ICAgV3JpdGVCYXJyaWVyPFVubGlua2VkRXZhbENvZGVCbG9jaz4gbV91bmxpbmtlZEV2YWxDb2Rl
QmxvY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRp
b25IZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhl
bHBlcnMuY3BwCmluZGV4IDQxNGU3YmRmNzdhYi4uN2EyOTEwZTg4N2YyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcApAQCAtMzI2
LDcgKzMyNiw3IEBAIEpTT2JqZWN0KiBjcmVhdGVURFpFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogCiBKU09iamVjdCogY3JlYXRlSW52YWxpZFByaXZhdGVOYW1lRXJyb3IoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gY3JlYXRlVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygiQ2Fubm90IGFjY2VzcyBpbnZhbGlkIHByaXZhdGUg
ZmllbGQiKSwgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBUeXBlTm90aGluZyk7CisgICAgcmV0dXJu
IGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoIkludmFsaWQgcHJpdmF0
ZSBtZW1iZXIgYWNjZXNzIiksIGRlZmF1bHRTb3VyY2VBcHBlbmRlciwgVHlwZU5vdGhpbmcpOwog
fQogCiBKU09iamVjdCogY3JlYXRlUmVkZWZpbmVkUHJpdmF0ZU5hbWVFcnJvcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcAppbmRleCA5OGQ3ZTJiODNhMjcuLjc0
OTgyMDUwMThjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5k
aXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgSW5kaXJlY3RF
dmFsRXhlY3V0YWJsZSogSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmoKIGNvbnN0ZXhwciBib29sIGluU3RyaWN0Q29udGV4dCA9IGZhbHNlOwog
Y29uc3RleHByIGJvb2wgaW5zaWRlT3JkaW5hcnlGdW5jdGlvbiA9IGZhbHNlOwogSW5kaXJlY3RF
dmFsRXhlY3V0YWJsZTo6SW5kaXJlY3RFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIERlcml2ZWRDb250ZXh0VHlwZSBk
ZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRl
eHRUeXBlIGV2YWxDb250ZXh0VHlwZSkKLSAgICA6IEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVj
dCwgc291cmNlLCBpblN0cmljdENvbnRleHQsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1
bmN0aW9uQ29udGV4dCwgaW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgZXZhbENvbnRleHRUeXBlLCBO
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8pCisgICAgOiBFdmFsRXhlY3V0YWJsZShnbG9i
YWxPYmplY3QsIHNvdXJjZSwgaW5TdHJpY3RDb250ZXh0LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlz
QXJyb3dGdW5jdGlvbkNvbnRleHQsIGluc2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250ZXh0
VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vLCBQcml2YXRlQnJhbmRSZXF1aXJl
bWVudDo6Tm9uZSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmgKaW5kZXggNjU3YmZjZDFhNmIyLi41NjE0YTRhYjhkZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtMTg0LDYgKzE4NCw4IEBAIHB1YmxpYzoKICAgICBp
bmxpbmUgYm9vbCBnZXRQcml2YXRlRmllbGQoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpOwogICAgIGlubGluZSB2b2lkIHNldFByaXZhdGVGaWVsZChKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAg
aW5saW5lIHZvaWQgZGVmaW5lUHJpdmF0ZUZpZWxkKEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBpbmxpbmUgYm9vbCBjaGVja1By
aXZhdGVCcmFuZChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgYnJhbmQpOworICAgIGlubGluZSB2
b2lkIHNldFByaXZhdGVCcmFuZChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgYnJhbmQpOwogCiAg
ICAgdW5zaWduZWQgZ2V0QXJyYXlMZW5ndGgoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5kZXggMzFlMDBmOTgzOGRj
Li5kOWI0OWFlZWMzYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0SW5saW5lcy5oCkBAIC02NTEsNCArNjUxLDQ1IEBAIGlubGluZSB2b2lkIEpTT2JqZWN0
OjpkZWZpbmVQcml2YXRlRmllbGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVy
dHlOCiAgICAgcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBwdXRTbG90KTsKIH0K
IAoraW5saW5lIGJvb2wgSlNPYmplY3Q6OmNoZWNrUHJpdmF0ZUJyYW5kKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYnJhbmQpCit7CisgICAgQVNTRVJUKGJyYW5kLmlzU3lt
Ym9sKCkpOworICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSB0aGlzLT5zdHJ1Y3R1cmUodm0pOworICAgIGlmICghc3RydWN0dXJlLT5pc0JyYW5kZWRTdHJ1
Y3R1cmUoKSB8fCAhanNDYXN0PEJyYW5kZWRTdHJ1Y3R1cmUqPihzdHJ1Y3R1cmUpLT5jaGVja0Jy
YW5kKGFzU3ltYm9sKGJyYW5kKSkpIHsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgY3JlYXRlSW52YWxpZFByaXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2JqZWN0KSk7
CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgZmFsc2UpOworICAgIH0KKyAgICBF
WENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldFByaXZhdGVCcmFuZChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJyYW5kKQoreworICAgIEFTU0VSVChicmFuZC5pc1N5
bWJvbCgpKTsKKyAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gdGhpcy0+c3RydWN0dXJlKHZtKTsKKyAgICBpZiAoc3RydWN0dXJlLT5pc0JyYW5kZWRTdHJ1
Y3R1cmUoKSAmJiBqc0Nhc3Q8QnJhbmRlZFN0cnVjdHVyZSo+KHN0cnVjdHVyZSktPmNoZWNrQnJh
bmQoYXNTeW1ib2woYnJhbmQpKSkgeworICAgICAgICAvLyBXZSBhcmUgdHJ5aW5nIHRvIGluc3Rh
bGwgYSBicmFuZCBhbHJlYWR5IGluc3RhbGxlZAorICAgICAgICAvLyBGSVhNRTogUHV0IGEgYmV0
dGVyIGVycm9yIG1lc3NhZ2UKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgY3JlYXRlSW52YWxpZFByaXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2JqZWN0KSk7CisgICAg
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgdm9pZCgpKTsKKyAgICB9CisgICAgRVhDRVBU
SU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkpOworCisgICAgc2NvcGUucmVsZWFzZSgpOwor
CisgICAgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUgZGVmZXJyZWRX
YXRjaHBvaW50RmlyZSh2bSwgc3RydWN0dXJlKTsKKworICAgIFN0cnVjdHVyZSogbmV3U3RydWN0
dXJlID0gU3RydWN0dXJlOjpzZXRCcmFuZFRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSwgYXNTeW1i
b2woYnJhbmQpLCAmZGVmZXJyZWRXYXRjaHBvaW50RmlyZSk7CisgICAgQVNTRVJUKG5ld1N0cnVj
dHVyZS0+aXNCcmFuZGVkU3RydWN0dXJlKCkpOworICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUtPm91
dE9mTGluZUNhcGFjaXR5KCkgfHwgIXRoaXMtPnN0cnVjdHVyZSh2bSktPm91dE9mTGluZUNhcGFj
aXR5KCkpOworICAgIHRoaXMtPnNldFN0cnVjdHVyZSh2bSwgbmV3U3RydWN0dXJlKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Njb3BlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUu
Y3BwCmluZGV4IDRmYjI0YTI4MjczMy4uZmM3NzQyZTIzMDg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Njb3BlLmNwcApAQCAtMzIxLDcgKzMyMSw3IEBAIFJlc29sdmVPcCBK
U1Njb3BlOjphYnN0cmFjdFJlc29sdmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgc2l6
ZV90IGRlcHRoT2ZmCiAgICAgcmV0dXJuIG9wOwogfQogCi12b2lkIEpTU2NvcGU6OmNvbGxlY3RD
bG9zdXJlVmFyaWFibGVzVW5kZXJURFooSlNTY29wZSogc2NvcGUsIFREWkVudmlyb25tZW50JiBy
ZXN1bHQsIFZhcmlhYmxlRW52aXJvbm1lbnQmIHByaXZhdGVOYW1lcykKK3ZvaWQgSlNTY29wZTo6
Y29sbGVjdENsb3N1cmVWYXJpYWJsZXNVbmRlclREWihKU1Njb3BlKiBzY29wZSwgVERaRW52aXJv
bm1lbnQmIHJlc3VsdCwgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCYgcHJpdmF0ZU5hbWVFbnZpcm9u
bWVudCkKIHsKICAgICBmb3IgKDsgc2NvcGU7IHNjb3BlID0gc2NvcGUtPm5leHQoKSkgewogICAg
ICAgICBpZiAoIXNjb3BlLT5pc0xleGljYWxTY29wZSgpICYmICFzY29wZS0+aXNDYXRjaFNjb3Bl
KCkpCkBAIC0zNDAsOCArMzQwLDkgQEAgdm9pZCBKU1Njb3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlh
Ymxlc1VuZGVyVERaKEpTU2NvcGUqIHNjb3BlLCBURFpFbnZpcm9ubWVudCYgcmUKICAgICAgICAg
ICAgIHJlc3VsdC5hZGQoaXRlci0+a2V5KTsKIAogICAgICAgICBpZiAoc3ltYm9sVGFibGUtPmhh
c1ByaXZhdGVOYW1lcygpKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8gbmFtZSA6IHN5bWJvbFRh
YmxlLT5wcml2YXRlTmFtZXMoKSkKLSAgICAgICAgICAgICAgICBwcml2YXRlTmFtZXMudXNlUHJp
dmF0ZU5hbWUobmFtZSk7ICAgIAorICAgICAgICAgICAgYXV0byBwcml2YXRlTmFtZXMgPSBzeW1i
b2xUYWJsZS0+cHJpdmF0ZU5hbWVzKCk7CisgICAgICAgICAgICBmb3IgKGF1dG8gZW5kID0gcHJp
dmF0ZU5hbWVzLmVuZCgpLCBpdGVyID0gcHJpdmF0ZU5hbWVzLmJlZ2luKCk7IGl0ZXIgIT0gZW5k
OyArK2l0ZXIpCisgICAgICAgICAgICAgICAgcHJpdmF0ZU5hbWVFbnZpcm9ubWVudC5hZGQoaXRl
ci0+a2V5LCBpdGVyLT52YWx1ZSk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Njb3BlLmgKaW5kZXggN2EzYzI0MTUxMWI4Li5lNGNkMGJiMzA5N2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmgKQEAgLTI3LDEyICsyNywx
MiBAQAogCiAjaW5jbHVkZSAiR2V0UHV0SW5mby5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisj
aW5jbHVkZSAiVmFyaWFibGVFbnZpcm9ubWVudC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xh
c3MgU2NvcGVDaGFpbkl0ZXJhdG9yOwogY2xhc3MgU3ltYm9sVGFibGU7Ci1jbGFzcyBWYXJpYWJs
ZUVudmlyb25tZW50OwogY2xhc3MgV2F0Y2hwb2ludFNldDsKIAogdXNpbmcgVERaRW52aXJvbm1l
bnQgPSBIYXNoU2V0PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNo
PjsKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGhhc0NvbnN0YW50
U2NvcGUoUmVzb2x2ZVR5cGUpOwogICAgIHN0YXRpYyBKU1Njb3BlKiBjb25zdGFudFNjb3BlRm9y
Q29kZUJsb2NrKFJlc29sdmVUeXBlLCBDb2RlQmxvY2sqKTsKIAotICAgIHN0YXRpYyB2b2lkIGNv
bGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFooSlNTY29wZSosIFREWkVudmlyb25tZW50JiBy
ZXN1bHQsIFZhcmlhYmxlRW52aXJvbm1lbnQmIHByaXZhdGVOYW1lcyk7CisgICAgc3RhdGljIHZv
aWQgY29sbGVjdENsb3N1cmVWYXJpYWJsZXNVbmRlclREWihKU1Njb3BlKiwgVERaRW52aXJvbm1l
bnQmIHJlc3VsdCwgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCYpOwogCiAgICAgc3RhdGljIHZvaWQg
dmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaAppbmRl
eCAwOTlkODk5YWQ1ZTYuLmI4NTkxNGZmOGVhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oCkBAIC02Myw3ICs2
Myw3IEBAIHB1YmxpYzoKIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIEV4ZWN1dGFibGVJbmZv
IGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8odXNlc0V2YWwo
KSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9k
ZTo6TW9kdWxlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpNb2R1
bGVFdmFsdWF0ZU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBOZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplcjo6Tm8sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgZmFsc2UsIEV2YWxDb250ZXh0
VHlwZTo6Tm9uZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0
IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGZhbHNlLCBQcml2YXRlQnJhbmRS
ZXF1aXJlbWVudDo6Tm9uZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJT
Y3JpcHRNb2RlOjpNb2R1bGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1v
ZGU6Ok1vZHVsZUV2YWx1YXRlTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIE5lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyOjpObywgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgRXZh
bENvbnRleHRUeXBlOjpOb25lKTsgfQogCiAgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrKiB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2soKSB7IHJldHVybiBtX3VubGlua2Vk
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wdGlvbnMuY3BwCmluZGV4IDk1ODk4OWM5MjNhNC4uNTZkNWZlNGQ4YmMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcApAQCAtNTM3LDYgKzUzNyw5
IEBAIHZvaWQgT3B0aW9uczo6cmVjb21wdXRlRGVwZW5kZW50T3B0aW9ucygpCiAgICAgICAgIE9w
dGlvbnM6OnJhbmRvbUludGVncml0eUF1ZGl0UmF0ZSgpID0gMDsKICAgICBlbHNlIGlmIChPcHRp
b25zOjpyYW5kb21JbnRlZ3JpdHlBdWRpdFJhdGUoKSA+IDEuMCkKICAgICAgICAgT3B0aW9uczo6
cmFuZG9tSW50ZWdyaXR5QXVkaXRSYXRlKCkgPSAxLjA7CisgICAgCisgICAgaWYgKE9wdGlvbnM6
OnVzZVByaXZhdGVNZXRob2RzKCkpCisgICAgICAgIE9wdGlvbnM6OnVzZVByaXZhdGVDbGFzc0Zp
ZWxkcygpID0gdHJ1ZTsKIAogICAgIGlmICghT3B0aW9uczo6YWxsb3dVbnN1cHBvcnRlZFRpZXJz
KCkpIHsKICNkZWZpbmUgRElTQUJMRV9USUVSUyhvcHRpb24sIGZsYWdzLCAuLi4pIGRvIHsgXApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggMjI1ZTIy
NDgzZDA5Li40NWNlMDI5ZTYyOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wdGlvbnNMaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3B0aW9uc0xpc3QuaApAQCAtNTE2LDYgKzUxNiw3IEBAIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wg
Y2FuVXNlSklUQ2FnZSgpOwogICAgIHYoQm9vbCwgZXhwb3NlUHJvZmlsZXJzT25HbG9iYWxPYmpl
Y3QsIGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIGV4cG9zZSBmdW5jdGlvbnMgdG8g
ZW5hYmxlL2Rpc2FibGUgYm90aCB0aGUgc2FtcGxpbmcgcHJvZmlsZXIgYW5kIHRoZSBzdXBlciBz
YW1wbGVyIikgXAogICAgIHYoQm9vbCwgYWxsb3dVbnN1cHBvcnRlZFRpZXJzLCBmYWxzZSwgTm9y
bWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCBub3QgZGlzYWJsZSBERkcgb3IgRlRMIHdoZW4gYW4gZXhw
ZXJpbWVudGFsIGZlYXR1cmUgaXMgZW5hYmxlZC4iKSBcCiAgICAgdihCb29sLCB1c2VQcml2YXRl
Q2xhc3NGaWVsZHMsIGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCB0aGUgcGFyc2VyIHdpbGwgdW5k
ZXJzdGFuZCBwcml2YXRlIGRhdGEgZmllbGRzIGluc2lkZSBjbGFzc2VzLiIpIFwKKyAgICB2KEJv
b2wsIHVzZVByaXZhdGVNZXRob2RzLCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgdGhlIHBhcnNl
ciB3aWxsIHVuZGVyc3RhbmQgcHJpdmF0ZSBtZXRob2RzIGluc2lkZSBjbGFzc2VzLiIpIFwKICAg
ICB2KEJvb2wsIHJldHVybkVhcmx5RnJvbUluZmluaXRlTG9vcHNGb3JGdXp6aW5nLCBmYWxzZSwg
Tm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihTaXplLCBlYXJseVJldHVybkZyb21JbmZpbml0ZUxv
b3BzTGltaXQsIDEzMDAwMDAwMDAsIE5vcm1hbCwgIldoZW4gcmV0dXJuRWFybHlGcm9tSW5maW5p
dGVMb29wc0ZvckZ1enppbmcgaXMgdHJ1ZSwgdGhpcyBkZXRlcm1pbmVzIHRoZSBudW1iZXIgb2Yg
ZXhlY3V0aW9ucyBhIGxvb3AgY2FuIHJ1biBmb3IgYmVmb3JlIGp1c3QgcmV0dXJuaW5nLiBUaGlz
IGlzIGhlbHBmdWwgZm9yIHRoZSBmdXp6ZXIgc28gaXQgZG9lc24ndCBnZXQgc3R1Y2sgaW4gaW5m
aW5pdGUgbG9vcHMuIikgXAogICAgIHYoQm9vbCwgdXNlTElDTUZ1enppbmcsIGZhbHNlLCBOb3Jt
YWwsIG51bGxwdHIpIFwKQEAgLTU3NCw3ICs1NzUsOCBAQCBlbnVtIEV4cGVyaW1lbnRhbE9wdGlv
bkZsYWdzIHsKIH07CiAKICNkZWZpbmUgRk9SX0VBQ0hfSlNDX0VYUEVSSU1FTlRBTF9PUFRJT04o
dikgXAotICAgIHYodXNlUHJpdmF0ZUNsYXNzRmllbGRzLCAoU3VwcG9ydHNGVEwgfCBTdXBwb3J0
c0RGRyksICJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNzgxIiwg
Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI3ODQiKQorICAgIHYo
dXNlUHJpdmF0ZUNsYXNzRmllbGRzLCAoU3VwcG9ydHNGVEwgfCBTdXBwb3J0c0RGRyksICJodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNzgxIiwgImh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI3ODQiKSBcCisgICAgdih1c2VQcml2YXRl
TWV0aG9kcywgKExMSW50QW5kQmFzZWxpbmVPbmx5KSwgImh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTI3ODEiLCAiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMjc4NCIpCiAKIGNvbnN0ZXhwciBzaXplX3QgY291bnROdW1iZXJPZkpTQ09w
dGlvbnMoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
Z3JhbUV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1F
eGVjdXRhYmxlLmgKaW5kZXggYjg3MTVhYTcyYmJjLi45NDk3NjMxMjA1Y2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaApAQCAtNzEs
NyArNzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIEV4
ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUlu
Zm8odXNlc0V2YWwoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFy
c2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBh
cnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBOZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplcjo6Tm8sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgZmFsc2UsIEV2YWxD
b250ZXh0VHlwZTo6Tm9uZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygp
IGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGZhbHNlLCBQcml2YXRl
QnJhbmRSZXF1aXJlbWVudDo6Tm9uZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQ
YXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNl
UGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIE5lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyOjpObywgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgRXZh
bENvbnRleHRUeXBlOjpOb25lKTsgfQogCiAgICAgVGVtcGxhdGVPYmplY3RNYXAmIGVuc3VyZVRl
bXBsYXRlT2JqZWN0TWFwKFZNJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuY3BwCmluZGV4IDBjYzY2NzBlYzk4My4uM2M5ZGEyMTMyNWE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTQzNiw3ICs0MzYsNyBA
QCBQcm9wZXJ0eVRhYmxlKiBTdHJ1Y3R1cmU6Om1hdGVyaWFsaXplUHJvcGVydHlUYWJsZShWTSYg
dm0sIGJvb2wgc2V0UHJvcGVydHlUYWJsZQogCiAgICAgZm9yIChzaXplX3QgaSA9IHN0cnVjdHVy
ZXMuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgIHN0cnVjdHVyZSA9IHN0cnVjdHVyZXNbaV07Ci0g
ICAgICAgIGlmICghc3RydWN0dXJlLT5tX3RyYW5zaXRpb25Qcm9wZXJ0eU5hbWUpCisgICAgICAg
IGlmICghc3RydWN0dXJlLT5tX3RyYW5zaXRpb25Qcm9wZXJ0eU5hbWUgfHwgc3RydWN0dXJlLT50
cmFuc2l0aW9uS2luZCgpID09IFRyYW5zaXRpb25LaW5kOjpTZXRCcmFuZCkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICBzd2l0Y2ggKHN0cnVjdHVyZS0+dHJhbnNpdGlvbktpbmQoKSkg
ewogICAgICAgICBjYXNlIFRyYW5zaXRpb25LaW5kOjpQcm9wZXJ0eUFkZGl0aW9uOiB7CkBAIC0x
NTAzLDQgKzE1MDMsODMgQEAgYXV0byBTdHJ1Y3R1cmU6OmZpbmRQcm9wZXJ0eUhhc2hFbnRyeShQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdCAtPiBPcHRpb24KICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwogfQogCitCcmFuZGVkU3RydWN0dXJlOjpCcmFuZGVkU3RydWN0dXJlKFZNJiB2
bSwgU3RydWN0dXJlKiBwcmV2aW91cywgU3ltYm9sKiBicmFuZFN5bWJvbCwgRGVmZXJyZWRTdHJ1
Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqIGRlZmVycmVkKQorICAgIDogU3RydWN0dXJl
KHZtLCBwcmV2aW91cywgZGVmZXJyZWQpCisgICAgLCBtX2JyYW5kKHZtLCB0aGlzLCBicmFuZFN5
bWJvbCkKK3sKKyAgICBpZiAocHJldmlvdXMtPmlzQnJhbmRlZFN0cnVjdHVyZSgpKQorICAgICAg
ICBtX3BhcmVudEJyYW5kLnNldCh2bSwgdGhpcywganNDYXN0PEJyYW5kZWRTdHJ1Y3R1cmUqPihw
cmV2aW91cykpOworICAgIHRoaXMtPnNldElzQnJhbmRlZFN0cnVjdHVyZSh0cnVlKTsKK30KKwor
QnJhbmRlZFN0cnVjdHVyZTo6QnJhbmRlZFN0cnVjdHVyZShWTSYgdm0sIEJyYW5kZWRTdHJ1Y3R1
cmUqIHByZXZpb3VzLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSog
ZGVmZXJyZWQpCisgICAgOiBTdHJ1Y3R1cmUodm0sIHByZXZpb3VzLCBkZWZlcnJlZCkKKyAgICAs
IG1fYnJhbmQodm0sIHRoaXMsIHByZXZpb3VzLT5icmFuZCgpKQorICAgICwgbV9wYXJlbnRCcmFu
ZCh2bSwgdGhpcywgcHJldmlvdXMtPnBhcmVudEJyYW5kKCksIFdyaXRlQmFycmllcjxCcmFuZGVk
U3RydWN0dXJlPjo6TWF5QmVOdWxsKQoreworICAgIHRoaXMtPnNldElzQnJhbmRlZFN0cnVjdHVy
ZSh0cnVlKTsKK30KKwordm9pZCBCcmFuZGVkU3RydWN0dXJlOjp2aXNpdENoaWxkcmVuKEpTQ2Vs
bCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgQnJhbmRlZFN0cnVjdHVyZSog
dGhpc09iamVjdCA9IGpzQ2FzdDxCcmFuZGVkU3RydWN0dXJlKj4oY2VsbCk7CisgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworCisgICAgQmFzZTo6dmlz
aXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICAKKyAgICB2aXNpdG9yLmFwcGVu
ZCh0aGlzT2JqZWN0LT5tX2JyYW5kKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5t
X3BhcmVudEJyYW5kKTsKK30KKworU3RydWN0dXJlKiBCcmFuZGVkU3RydWN0dXJlOjpjcmVhdGUo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHByZXZpb3VzLCBTeW1ib2wqIGJyYW5kLCBEZWZlcnJlZFN0cnVj
dHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogZGVmZXJyZWQpCit7CisgICAgQVNTRVJUKHZt
LnN0cnVjdHVyZVN0cnVjdHVyZSk7CisgICAgQnJhbmRlZFN0cnVjdHVyZSogbmV3U3RydWN0dXJl
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QnJhbmRlZFN0cnVjdHVyZT4odm0uaGVhcCkp
IEJyYW5kZWRTdHJ1Y3R1cmUodm0sIHByZXZpb3VzLCBicmFuZCwgZGVmZXJyZWQpOworICAgIG5l
d1N0cnVjdHVyZS0+ZmluaXNoQ3JlYXRpb24odm0sIHByZXZpb3VzKTsKKyAgICByZXR1cm4gbmV3
U3RydWN0dXJlOworfQorCitib29sIEJyYW5kZWRTdHJ1Y3R1cmU6OmNoZWNrQnJhbmQoU3ltYm9s
KiBicmFuZCkKK3sKKyAgICBmb3IgKEJyYW5kZWRTdHJ1Y3R1cmUqIGN1cnJlbnRTdHJ1Y3R1cmUg
PSB0aGlzOyBjdXJyZW50U3RydWN0dXJlOyBjdXJyZW50U3RydWN0dXJlID0gY3VycmVudFN0cnVj
dHVyZS0+bV9wYXJlbnRCcmFuZC5nZXQoKSkgeworICAgICAgICBpZiAoYnJhbmQgPT0gY3VycmVu
dFN0cnVjdHVyZS0+bV9icmFuZC5nZXQoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1N0cnVjdHVyZSogU3RydWN0dXJlOjpzZXRCcmFu
ZFRyYW5zaXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3ltYm9sKiBicmFuZCwg
RGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqIGRlZmVycmVkKQorewor
ICAgIGlmICghc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkgeworICAgICAgICBpZiAoU3RydWN0
dXJlKiBleGlzdGluZ1RyYW5zaXRpb24gPSBzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblRhYmxlLmdl
dCgmYnJhbmQtPnVpZCgpLCAwLCBUcmFuc2l0aW9uS2luZDo6U2V0QnJhbmQpKSB7CisgICAgICAg
ICAgICBBU1NFUlQoZXhpc3RpbmdUcmFuc2l0aW9uLT50cmFuc2l0aW9uS2luZCgpID09IFRyYW5z
aXRpb25LaW5kOjpTZXRCcmFuZCk7CisgICAgICAgICAgICByZXR1cm4gZXhpc3RpbmdUcmFuc2l0
aW9uOworICAgICAgICB9CisgICAgfQorCisgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwor
CisgICAgU3RydWN0dXJlKiB0cmFuc2l0aW9uID0gQnJhbmRlZFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBzdHJ1Y3R1cmUsIGJyYW5kLCBkZWZlcnJlZCk7CisgICAgdHJhbnNpdGlvbi0+c2V0VHJhbnNp
dGlvbktpbmQoVHJhbnNpdGlvbktpbmQ6OlNldEJyYW5kKTsKKworICAgIHRyYW5zaXRpb24tPm1f
Y2FjaGVkUHJvdG90eXBlQ2hhaW4uc2V0TWF5QmVOdWxsKHZtLCB0cmFuc2l0aW9uLCBzdHJ1Y3R1
cmUtPm1fY2FjaGVkUHJvdG90eXBlQ2hhaW4uZ2V0KCkpOworICAgIHRyYW5zaXRpb24tPm1fYmxv
Yi5zZXRJbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5KHN0cnVjdHVyZS0+aW5kZXhpbmdNb2Rl
SW5jbHVkaW5nSGlzdG9yeSgpKTsKKyAgICB0cmFuc2l0aW9uLT5tX3RyYW5zaXRpb25Qcm9wZXJ0
eU5hbWUgPSAmYnJhbmQtPnVpZCgpOworICAgIHRyYW5zaXRpb24tPnNldFRyYW5zaXRpb25Qcm9w
ZXJ0eUF0dHJpYnV0ZXMoMCk7CisgICAgdHJhbnNpdGlvbi0+c2V0UHJvcGVydHlUYWJsZSh2bSwg
c3RydWN0dXJlLT50YWtlUHJvcGVydHlUYWJsZU9yQ2xvbmVJZlBpbm5lZCh2bSkpOworICAgIHRy
YW5zaXRpb24tPnNldE1heE9mZnNldCh2bSwgc3RydWN0dXJlLT5tYXhPZmZzZXQoKSk7CisgICAg
Y2hlY2tPZmZzZXQodHJhbnNpdGlvbi0+bWF4T2Zmc2V0KCksIHRyYW5zaXRpb24tPmlubGluZUNh
cGFjaXR5KCkpOworCisgICAgaWYgKHN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpIHsKKyAgICAg
ICAgUHJvcGVydHlUYWJsZSogdGFibGUgPSB0cmFuc2l0aW9uLT5lbnN1cmVQcm9wZXJ0eVRhYmxl
KHZtKTsKKyAgICAgICAgdHJhbnNpdGlvbi0+cGluKGhvbGRMb2NrKHRyYW5zaXRpb24tPm1fbG9j
ayksIHZtLCB0YWJsZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhzdHJ1Y3R1cmUtPm1fbG9jayk7CisgICAgICAgIHN0cnVjdHVyZS0+bV90cmFuc2l0aW9u
VGFibGUuYWRkKHZtLCB0cmFuc2l0aW9uKTsKKyAgICB9CisKKyAgICB0cmFuc2l0aW9uLT5jaGVj
a09mZnNldENvbnNpc3RlbmN5KCk7CisgICAgcmV0dXJuIHRyYW5zaXRpb247Cit9CisKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaApp
bmRleCAwMDBiYjk4MGQ3Y2EuLjJjZjgzZWQxMWQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmgKQEAgLTEyMyw3ICsxMjMsNyBAQCBwcml2YXRlOgogICAgIGNv
bnN0IFN0cnVjdHVyZSogbV9zdHJ1Y3R1cmU7CiB9OwogCi1jbGFzcyBTdHJ1Y3R1cmUgZmluYWwg
OiBwdWJsaWMgSlNDZWxsIHsKK2NsYXNzIFN0cnVjdHVyZSA6IHB1YmxpYyBKU0NlbGwgewogICAg
IHN0YXRpYyBjb25zdGV4cHIgdWludDE2X3Qgc2hvcnRJbnZhbGlkT2Zmc2V0ID0gc3RkOjpudW1l
cmljX2xpbWl0czx1aW50MTZfdD46Om1heCgpIC0gMTsKICAgICBzdGF0aWMgY29uc3RleHByIHVp
bnQxNl90IHVzZVJhcmVEYXRhRmxhZyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDE2X3Q+Ojpt
YXgoKTsKIHB1YmxpYzoKQEAgLTE0NiwxMyArMTQ2LDcgQEAgcHVibGljOgogCiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgaXNWYWxpZFByb3RvdHlwZShKU1ZhbHVlKTsKIAotcHJp
dmF0ZToKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSkKLSAgICB7Ci0gICAgICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICAgICAgQVNTRVJUKG1fcHJvdG90eXBlLmdldCgp
LmlzRW1wdHkoKSB8fCBpc1ZhbGlkUHJvdG90eXBlKG1fcHJvdG90eXBlLmdldCgpKSk7Ci0gICAg
fQotCitwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0sIGNvbnN0IFN0
cnVjdHVyZSogcHJldmlvdXMpCiAgICAgewogICAgICAgICB0aGlzLT5maW5pc2hDcmVhdGlvbih2
bSk7CkBAIC0xNjUsNiArMTU5LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKK3By
aXZhdGU6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCisgICAgeworICAgICAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIEFTU0VSVChtX3Byb3RvdHlwZS5nZXQo
KS5pc0VtcHR5KCkgfHwgaXNWYWxpZFByb3RvdHlwZShtX3Byb3RvdHlwZS5nZXQoKSkpOworICAg
IH0KKwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBDcmVhdGluZ0Vhcmx5Q2VsbFRh
ZykKICAgICB7CiAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCB0aGlzLCBDcmVhdGlu
Z0Vhcmx5Q2VsbCk7CkBAIC0yMDYsNiArMjA3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIHByZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSopOwogICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIG5vblByb3BlcnR5VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSos
IFRyYW5zaXRpb25LaW5kKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJl
KiBub25Qcm9wZXJ0eVRyYW5zaXRpb25TbG93KFZNJiwgU3RydWN0dXJlKiwgVHJhbnNpdGlvbktp
bmQpOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHNldEJyYW5kVHJhbnNpdGlvbihWTSYsIFN0cnVj
dHVyZSosIFN5bWJvbCogYnJhbmQsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9p
bnRGaXJlKiA9IG51bGxwdHIpOwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1NlYWxl
ZChWTSYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNGcm96ZW4oVk0mKTsKQEAgLTcx
NSwxNiArNzE3LDE5IEBAIHB1YmxpYzoKICAgICBERUZJTkVfQklURklFTEQoYm9vbCwgaGFzQmVl
bkRpY3Rpb25hcnksIEhhc0JlZW5EaWN0aW9uYXJ5LCAxLCAyNyk7CiAgICAgREVGSU5FX0JJVEZJ
RUxEKGJvb2wsIHByb3RlY3RQcm9wZXJ0eVRhYmxlV2hpbGVUcmFuc2l0aW9uaW5nLCBQcm90ZWN0
UHJvcGVydHlUYWJsZVdoaWxlVHJhbnNpdGlvbmluZywgMSwgMjgpOwogICAgIERFRklORV9CSVRG
SUVMRChib29sLCBoYXNVbmRlcnNjb3JlUHJvdG9Qcm9wZXJ0eUV4Y2x1ZGluZ09yaWdpbmFsUHJv
dG8sIEhhc1VuZGVyc2NvcmVQcm90b1Byb3BlcnR5RXhjbHVkaW5nT3JpZ2luYWxQcm90bywgMSwg
MjkpOworICAgIERFRklORV9CSVRGSUVMRChib29sLCBpc0JyYW5kZWRTdHJ1Y3R1cmUsIElzQnJh
bmRlZFN0cnVjdHVyZSwgMSwgMzApOwogCiAgICAgc3RhdGljX2Fzc2VydChzX2JpdFdpZHRoT2ZU
cmFuc2l0aW9uUHJvcGVydHlBdHRyaWJ1dGVzIDw9IHNpemVvZihUcmFuc2l0aW9uUHJvcGVydHlB
dHRyaWJ1dGVzKSAqIDgpOwogICAgIHN0YXRpY19hc3NlcnQoc19iaXRXaWR0aE9mVHJhbnNpdGlv
bktpbmQgPD0gc2l6ZW9mKFRyYW5zaXRpb25LaW5kKSAqIDgpOwogCitwcm90ZWN0ZWQ6CisgICAg
U3RydWN0dXJlKFZNJiwgU3RydWN0dXJlKiwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0
Y2hwb2ludEZpcmUqKTsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RydWN0dXJlKFZNJiwgSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCBjb25zdCBDbGFz
c0luZm8qLCBJbmRleGluZ1R5cGUsIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KTsKICAgICBTdHJ1
Y3R1cmUoVk0mKTsKLSAgICBTdHJ1Y3R1cmUoVk0mLCBTdHJ1Y3R1cmUqLCBEZWZlcnJlZFN0cnVj
dHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSopOwogCiAgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hw
b2ludEZpcmUqID0gbnVsbHB0cik7CiAgICAgCkBAIC04NzQsNCArODc5LDQxIEBAIHByaXZhdGU6
CiAgICAgZnJpZW5kIGNsYXNzIEpTRG9sbGFyVk1IZWxwZXI7CiB9OwogCitjbGFzcyBCcmFuZGVk
U3RydWN0dXJlIGZpbmFsIDogcHVibGljIFN0cnVjdHVyZSB7CisgICAgdHlwZWRlZiBTdHJ1Y3R1
cmUgQmFzZTsKKworcHVibGljOgorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1
YnNwYWNlQWNjZXNzPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQorICAgIHsKKyAgICAgICAgcmV0dXJuICZ2bS5icmFuZGVkU3RydWN0dXJlU3BhY2U7CisgICAg
fQorCisgICAgU3ltYm9sKiBicmFuZCgpCisgICAgeworICAgICAgICByZXR1cm4gbV9icmFuZC5n
ZXQoKTsKKyAgICB9CisKKyAgICBCcmFuZGVkU3RydWN0dXJlKiBwYXJlbnRCcmFuZCgpCisgICAg
eworICAgICAgICByZXR1cm4gbV9wYXJlbnRCcmFuZC5nZXQoKTsKKyAgICB9CisKKyAgICBzdGF0
aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKKyAgICBib29s
IGNoZWNrQnJhbmQoU3ltYm9sKiBicmFuZCk7CisKK3ByaXZhdGU6IAorICAgIEJyYW5kZWRTdHJ1
Y3R1cmUoVk0mLCBTdHJ1Y3R1cmUqLCBTeW1ib2wqIGJyYW5kLCBEZWZlcnJlZFN0cnVjdHVyZVRy
YW5zaXRpb25XYXRjaHBvaW50RmlyZSopOworICAgIEJyYW5kZWRTdHJ1Y3R1cmUoVk0mLCBCcmFu
ZGVkU3RydWN0dXJlKiwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUq
KTsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIFN5bWJv
bCogYnJhbmQsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiA9IG51
bGxwdHIpOworCisgICAgV3JpdGVCYXJyaWVyPFN5bWJvbD4gbV9icmFuZDsKKyAgICBXcml0ZUJh
cnJpZXI8QnJhbmRlZFN0cnVjdHVyZT4gbV9wYXJlbnRCcmFuZDsKKworICAgIGZyaWVuZCBjbGFz
cyBTdHJ1Y3R1cmU7Cit9OworCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAppbmRleCA3MzA3MzVmOTk2ZGQu
LmFjNDBkOTIxNjRlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZUlubGluZXMuaApAQCAtNjEsNyArNjEsMTIgQEAgaW5saW5lIFN0cnVjdHVyZSogU3Ry
dWN0dXJlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtKQogaW5saW5lIFN0cnVjdHVyZSogU3RydWN0
dXJlOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHByZXZpb3VzLCBEZWZlcnJlZFN0cnVjdHVy
ZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogZGVmZXJyZWQpCiB7CiAgICAgQVNTRVJUKHZtLnN0
cnVjdHVyZVN0cnVjdHVyZSk7Ci0gICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxTdHJ1Y3R1cmU+KHZtLmhlYXApKSBTdHJ1Y3R1cmUodm0sIHBy
ZXZpb3VzLCBkZWZlcnJlZCk7CisgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmU7CisgICAgaWYg
KHByZXZpb3VzLT5pc0JyYW5kZWRTdHJ1Y3R1cmUoKSkKKyAgICAgICAgbmV3U3RydWN0dXJlID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QnJhbmRlZFN0cnVjdHVyZT4odm0uaGVhcCkpIEJy
YW5kZWRTdHJ1Y3R1cmUodm0sIGpzQ2FzdDxCcmFuZGVkU3RydWN0dXJlKj4ocHJldmlvdXMpLCBk
ZWZlcnJlZCk7CisgICAgZWxzZQorICAgICAgICBuZXdTdHJ1Y3R1cmUgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxTdHJ1Y3R1cmU+KHZtLmhlYXApKSBTdHJ1Y3R1cmUodm0sIHByZXZpb3Vz
LCBkZWZlcnJlZCk7CisKICAgICBuZXdTdHJ1Y3R1cmUtPmZpbmlzaENyZWF0aW9uKHZtLCBwcmV2
aW91cyk7CiAgICAgcmV0dXJuIG5ld1N0cnVjdHVyZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgKaW5kZXgg
NjNjZjhlMDIxMjIxLi44MDYyYzJjNzg3YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oCkBAIC01NSw3ICs1
NSwxMCBAQCBlbnVtIGNsYXNzIFRyYW5zaXRpb25LaW5kIDogdWludDhfdCB7CiAgICAgQWRkSW5k
ZXhlZEFjY2Vzc29ycywKICAgICBQcmV2ZW50RXh0ZW5zaW9ucywKICAgICBTZWFsLAotICAgIEZy
ZWV6ZQorICAgIEZyZWV6ZSwKKworICAgIC8vIFN1cHBvcnQgZm9yIHRyYW5zaXRpb25zIHJlbGF0
ZWQgd2l0aCBwcml2YXRlIGJyYW5kCisgICAgU2V0QnJhbmQKIH07CiAKIHN0YXRpYyBjb25zdGV4
cHIgYXV0byBGaXJzdE5vblByb3BlcnR5VHJhbnNpdGlvbktpbmQgPSBUcmFuc2l0aW9uS2luZDo6
QWxsb2NhdGVVbmRlY2lkZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TeW1ib2xUYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1i
b2xUYWJsZS5jcHAKaW5kZXggMTY0Y2E2ZDQzMTBlLi5mYjQ2MDAxYmFlZDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKQEAgLTE4NCw3ICsxODQs
NyBAQCBTeW1ib2xUYWJsZSogU3ltYm9sVGFibGU6OmNsb25lU2NvcGVQYXJ0KFZNJiB2bSkKIAog
ICAgICAgICB7CiAgICAgICAgICAgICBmb3IgKGF1dG8gbmFtZSA6IG1fcmFyZURhdGEtPm1fcHJp
dmF0ZU5hbWVzKQotICAgICAgICAgICAgICAgIHJlc3VsdC0+bV9yYXJlRGF0YS0+bV9wcml2YXRl
TmFtZXMuYWRkKG5hbWUpOworICAgICAgICAgICAgICAgIHJlc3VsdC0+bV9yYXJlRGF0YS0+bV9w
cml2YXRlTmFtZXMuYWRkKG5hbWUua2V5LCBuYW1lLnZhbHVlKTsKICAgICAgICAgfQogICAgIH0K
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRh
YmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCmluZGV4
IDU5YTcyMzA1ZDNhNy4uYTUzODFjY2JlZTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N5bWJvbFRhYmxlLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJTY29wZWRB
cmd1bWVudHNUYWJsZS5oIgogI2luY2x1ZGUgIlR5cGVMb2NhdGlvbi5oIgogI2luY2x1ZGUgIlZh
ck9mZnNldC5oIgorI2luY2x1ZGUgIlZhcmlhYmxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJX
YXRjaHBvaW50LmgiCiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRz
Lmg+CkBAIC00NTAsOCArNDUxLDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQ
dHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBSZWZQdHI8VHlwZVNldD4sIElkZW50aWZpZXJSZXBIYXNo
PiBVbmlxdWVUeXBlU2V0TWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDxWYXJPZmZzZXQsIFJlZlB0
cjxVbmlxdWVkU3RyaW5nSW1wbD4+IE9mZnNldFRvVmFyaWFibGVNYXA7CiAgICAgdHlwZWRlZiBW
ZWN0b3I8U3ltYm9sVGFibGVFbnRyeSo+IExvY2FsVG9FbnRyeVZlYzsKLSAgICB0eXBlZGVmIEhh
c2hTZXQ8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgSWRlbnRpZmllclJlcEhhc2g+IFByaXZh
dGVOYW1lU2V0OwotICAgIHR5cGVkZWYgV1RGOjpJdGVyYXRvclJhbmdlPHR5cGVuYW1lIFByaXZh
dGVOYW1lU2V0OjppdGVyYXRvcj4gUHJpdmF0ZU5hbWVJdGVyYXRvclJhbmdlOworICAgIHR5cGVk
ZWYgV1RGOjpJdGVyYXRvclJhbmdlPHR5cGVuYW1lIFByaXZhdGVOYW1lRW52aXJvbm1lbnQ6Oml0
ZXJhdG9yPiBQcml2YXRlTmFtZUl0ZXJhdG9yUmFuZ2U7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihWTSYgdm0pCkBAIC02MDUsMTQgKzYwNSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBtYWtlSXRlcmF0b3JSYW5nZShtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5iZWdpbigp
LCBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5lbmQoKSk7CiAgICAgfQogCi0gICAgdm9pZCBh
ZGRQcml2YXRlTmFtZShVbmlxdWVkU3RyaW5nSW1wbCoga2V5KQorICAgIHZvaWQgYWRkUHJpdmF0
ZU5hbWUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYga2V5LCBQcml2YXRlTmFtZUVu
dHJ5IHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGtleSAmJiAha2V5LT5pc1N5bWJvbCgp
KTsKICAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQogICAgICAgICAgICAgbV9yYXJlRGF0YSA9IFdU
Rjo6bWFrZVVuaXF1ZTxTeW1ib2xUYWJsZVJhcmVEYXRhPigpOwogCi0gICAgICAgIEFTU0VSVCgh
bV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuY29udGFpbnMoa2V5KSk7Ci0gICAgICAgIG1fcmFy
ZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChrZXkpOworICAgICAgICBBU1NFUlQobV9yYXJlRGF0
YS0+bV9wcml2YXRlTmFtZXMuZmluZChrZXkpID09IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVz
LmVuZCgpKTsKKyAgICAgICAgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKGtleSwgdmFs
dWUpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVudHJ5PgpAQCAtNzU2LDcgKzc1
Niw3IEBAIHB1YmxpYzoKICAgICAgICAgT2Zmc2V0VG9WYXJpYWJsZU1hcCBtX29mZnNldFRvVmFy
aWFibGVNYXA7CiAgICAgICAgIFVuaXF1ZVR5cGVTZXRNYXAgbV91bmlxdWVUeXBlU2V0TWFwOwog
ICAgICAgICBXcml0ZUJhcnJpZXI8Q29kZUJsb2NrPiBtX2NvZGVCbG9jazsKLSAgICAgICAgUHJp
dmF0ZU5hbWVTZXQgbV9wcml2YXRlTmFtZXM7CisgICAgICAgIFByaXZhdGVOYW1lRW52aXJvbm1l
bnQgbV9wcml2YXRlTmFtZXM7CiAgICAgfTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcAppbmRleCBhZDhmYjA5MjYwMTEuLjI3YWNmZDdlNzY2MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMzY5LDYgKzM2OSw3IEBAIFZNOjpWTShWTVR5
cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSwgV1RGOjpSdW5Mb29wKiBydW5Mb29wLCBib29s
KiBzdWNjZXNzKQogICAgICwgc3RydWN0dXJlQ2hhaW5TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCho
ZWFwLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTdHJ1Y3R1cmVDaGFpbikKICAgICAsIHN0cnVj
dHVyZVJhcmVEYXRhU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2Vs
bEhlYXBDZWxsVHlwZS5nZXQoKSwgU3RydWN0dXJlUmFyZURhdGEpIC8vIEhhc2g6MHhhY2E0ZTYy
ZAogICAgICwgc3RydWN0dXJlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3Rp
YmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgU3RydWN0dXJlKSAvLyBIYXNoOjB4MWYxYmNkY2EK
KyAgICAsIGJyYW5kZWRTdHJ1Y3R1cmVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0
cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBCcmFuZGVkU3RydWN0dXJlKQogICAgICwg
c3ltYm9sVGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxs
SGVhcENlbGxUeXBlLmdldCgpLCBTeW1ib2xUYWJsZSkgLy8gSGFzaDoweGM1MjE1YWZkCiAgICAg
LCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cyhleGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlU3BhY2UpCiAgICAgLCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhG
aW5hbGl6ZXJzKGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oCmluZGV4IDU1MmQ1ODE5MGU4Yi4uYWE2YmQ1YjYwZTA0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTQ4Nyw2ICs0ODcsNyBAQCBwdWJsaWM6CiAgICAgSXNv
U3Vic3BhY2Ugc3RydWN0dXJlQ2hhaW5TcGFjZTsKICAgICBJc29TdWJzcGFjZSBzdHJ1Y3R1cmVS
YXJlRGF0YVNwYWNlOwogICAgIElzb1N1YnNwYWNlIHN0cnVjdHVyZVNwYWNlOworICAgIElzb1N1
YnNwYWNlIGJyYW5kZWRTdHJ1Y3R1cmVTcGFjZTsKICAgICBJc29TdWJzcGFjZSBzeW1ib2xUYWJs
ZVNwYWNlOwogCiAjZGVmaW5lIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIobmFt
ZSkgXAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417378</attachid>
            <date>2021-01-11 08:13:54 -0800</date>
            <delta_ts>2021-01-20 14:50:57 -0800</delta_ts>
            <desc>WIP - Patch</desc>
            <filename>private-methods.diff</filename>
            <type>text/plain</type>
            <size>193438</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
NzNjYTk0MDFlNzY3Li42Y2E0OGJmYjlkYTYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMTAtMjAgIENh
aW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgorCisgICAgICAgIFtFU05leHRdIEltcGxl
bWVudCBwcml2YXRlIG1ldGhvZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5NDQzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVy
LWNhbGwtZnJvbS1hcnJvdy1mdW5jdGlvbi5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3By
aXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVyLWNhbGwtZnJvbS1ldmFsLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2QtYnJhbmQtY2hlY2suanM6IEFkZGVk
LgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZC1jb21wYXJpc29uLmpzOiBBZGRlZC4K
KyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2QtZXh0ZW5kcy1icmFuZC1jaGVjay5qczog
QWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWdldC1hbmQtY2FsbC5qczog
QWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9kLW5lc3RlZC1jbGFzcy5qczog
QWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1vbi1wcm94eS5qczogQWRk
ZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWRpcmVjdC1l
dmFsLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1sOgorCiAyMDIxLTAx
LTA4ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICBJ
bXBsZW1lbnQgQGNvcHlEYXRhUHJvcGVydGllcyBpbiBDKysgdG8gb3B0aW1pemUgb2JqZWN0IHJl
c3QgLyBzcHJlYWQKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYnJhbmQtaW5z
dGFsbGVkLWFmdGVyLXN1cGVyLWNhbGwtZnJvbS1hcnJvdy1mdW5jdGlvbi5qcyBiL0pTVGVzdHMv
c3RyZXNzL3ByaXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVyLWNhbGwtZnJvbS1hcnJv
dy1mdW5jdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjdl
MjljN2JjMTFjMwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYnJh
bmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVyLWNhbGwtZnJvbS1hcnJvdy1mdW5jdGlvbi5qcwpAQCAt
MCwwICsxLDI3IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1
ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBlKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7Cit9
CisKK2NsYXNzIEEge30KKworY2xhc3MgQyBleHRlbmRzIEEgeworICAgICNtZXRob2QoKSB7Cisg
ICAgICAgIHJldHVybiAiYmFzZSI7CisgICAgfQorCisgICAgY29uc3RydWN0b3IoKSB7CisgICAg
ICAgIGxldCBpbml0ID0gKCkgPT4gc3VwZXIoKTsKKyAgICAgICAgaW5pdCgpOworICAgIH0KKwor
ICAgIGJhc2VBY2Nlc3MoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtZXRob2QoKTsKKyAgICB9
Cit9CisKK2xldCBjID0gbmV3IEMoKTsKK2Fzc2VydChjLmJhc2VBY2Nlc3MoKSwgImJhc2UiKTsK
KwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1icmFuZC1pbnN0YWxsZWQtYWZ0
ZXItc3VwZXItY2FsbC1mcm9tLWV2YWwuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLWJyYW5k
LWluc3RhbGxlZC1hZnRlci1zdXBlci1jYWxsLWZyb20tZXZhbC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjllMTZlZTM4ZTM0MQotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVyLWNhbGwt
ZnJvbS1ldmFsLmpzCkBAIC0wLDAgKzEsMjYgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQ
cml2YXRlTWV0aG9kcz10cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsKKyAgICBpZiAo
YSAhPT0gZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1
dCBnb3Q6ICIgKyBhKTsKK30KKworY2xhc3MgQSB7fQorCitjbGFzcyBDIGV4dGVuZHMgQSB7Cisg
ICAgI21ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuICJiYXNlIjsKKyAgICB9CisKKyAgICBjb25z
dHJ1Y3RvcigpIHsKKyAgICAgICAgZXZhbCgic3VwZXIoKSIpOworICAgIH0KKworICAgIGJhc2VB
Y2Nlc3MoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtZXRob2QoKTsKKyAgICB9Cit9CisKK2xl
dCBjID0gbmV3IEMoKTsKK2Fzc2VydChjLmJhc2VBY2Nlc3MoKSwgImJhc2UiKTsKKwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtYnJhbmQtY2hlY2suanMgYi9KU1Rl
c3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1icmFuZC1jaGVjay5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjZhNTE3NWEzZjViYwotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWJyYW5kLWNoZWNrLmpzCkBAIC0wLDAgKzEs
MzMgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKwor
ZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKK30KKworY2xh
c3MgQyB7CisgICAgI20oKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmOworICAgIH0KKworICAg
IG1ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI20oKTsKKyAgICB9CisKKyAgICAjZiA9
IDQ7Cit9CisKK2xldCBjID0gbmV3IEMoKTsKK2Fzc2VydChjLm1ldGhvZCgpLCA0KTsKKwordHJ5
IHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgI20oKSB7IHJldHVybiAzOyB9CisgICAgfQorCisg
ICAgbGV0IG8gPSBuZXcgQygpOworICAgIGMubWV0aG9kLmNhbGwobyk7Cit9IGNhdGNoIChlKSB7
CisgICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBUeXBlRXJyb3IsIHRydWUpOworfQorCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1jaGFuZ2UtYXR0cmlidXRlLWZyb20t
YnJhbmRlZC1zdHJ1Y3R1cmUuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1jaGFu
Z2UtYXR0cmlidXRlLWZyb20tYnJhbmRlZC1zdHJ1Y3R1cmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kNzkwYzQwMzU5YzkKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1jaGFuZ2UtYXR0cmlidXRlLWZyb20tYnJhbmRl
ZC1zdHJ1Y3R1cmUuanMKQEAgLTAsMCArMSw1MCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVz
ZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTog
ZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICAgICAgaWYgKGFjdHVhbCAhPT0gZXhw
ZWN0ZWQpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZXhwZWN0
ZWQgKyAiIGJ1dCBnb3Q6ICIgKyBhY3R1YWwpOworICAgIH0sCisKKyAgICB0aHJvd3M6IGZ1bmN0
aW9uIChleHBlY3RlZEVycm9yLCBvcCkgeworICAgICAgICB0cnkgeworICAgICAgICAgIG9wKCk7
CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIGV4
cGVjdGVkRXJyb3IpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQg
dG8gdGhyb3c6ICIgKyBleHBlY3RlZEVycm9yICsgIiBidXQgdGhyZXc6ICIgKyBlKTsKKyAgICAg
ICAgfQorICAgIH0KK307CisKK2NsYXNzIEMgeworICAgICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9
CisKKyAgICBhY2Nlc3MoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtKCk7CisgICAgfQorfQor
CitsZXQgYzEgPSBuZXcgQygpOworYzEuZm9vID0gJ3Rlc3QnOworYXNzZXJ0LnNhbWVWYWx1ZShj
MS5hY2Nlc3MoKSwgJ3Rlc3QnKTsKK2Fzc2VydC5zYW1lVmFsdWUoYzEuZm9vLCAndGVzdCcpOwor
YXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgpIHsKKyAgICBjMS5hY2Nlc3MuY2Fs
bCh7fSk7Cit9KTsKKworT2JqZWN0LmRlZmluZVByb3BlcnR5KGMxLCAnZm9vJywgeworICAgIHdy
aXRhYmxlOiBmYWxzZSwKKyAgICBlbnVtZXJhYmxlOiBmYWxzZQorfSk7CisKK2Fzc2VydC5zYW1l
VmFsdWUoYzEuYWNjZXNzKCksICd0ZXN0Jyk7Cithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVu
Y3Rpb24gKCkgeworICAgIGMxLmFjY2Vzcy5jYWxsKHt9KTsKK30pOworCitsZXQgZGVzY3JpcHRv
ciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYzEsICdmb28nKTsKKworYXNzZXJ0
LnNhbWVWYWx1ZShkZXNjcmlwdG9yLnZhbHVlLCAndGVzdCcpOworYXNzZXJ0LnNhbWVWYWx1ZShk
ZXNjcmlwdG9yLmVudW1lcmFibGUsIGZhbHNlKTsKK2Fzc2VydC5zYW1lVmFsdWUoZGVzY3JpcHRv
ci53cml0YWJsZSwgZmFsc2UpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRl
LW1ldGhvZC1jaGFuZ2UtcHJvdG90eXBlLWZyb20tYnJhbmRlZC1zdHJ1Y3R1cmUuanMgYi9KU1Rl
c3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1jaGFuZ2UtcHJvdG90eXBlLWZyb20tYnJhbmRlZC1z
dHJ1Y3R1cmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lZGIx
ZjY2OWNhMDIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhv
ZC1jaGFuZ2UtcHJvdG90eXBlLWZyb20tYnJhbmRlZC1zdHJ1Y3R1cmUuanMKQEAgLTAsMCArMSw0
MCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCits
ZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7CisgICAg
ICAgIGlmIChsaHMgIT09IHJocykKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0
ZWQ6ICIgKyBsaHMgKyAiIGJ1ZyBnb3Q6ICIgKyByaHMpOworICAgIH0sCisKKyAgICB0aHJvd3M6
IGZ1bmN0aW9uIChleHBlY3RlZEVycm9yLCBvcCkgeworICAgICAgICB0cnkgeworICAgICAgICAg
IG9wKCk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5j
ZW9mIGV4cGVjdGVkRXJyb3IpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhw
ZWN0ZWQgdG8gdGhyb3c6ICIgKyBleHBlY3RlZEVycm9yICsgIiBidXQgdGhyZXc6ICIgKyBlKTsK
KyAgICAgICAgfQorICAgIH0KK307CisKK2NsYXNzIEMgeworICAgICNtKCkgeyByZXR1cm4gJ3Rl
c3QnOyB9CisKKyAgICBhY2Nlc3MoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtKCk7CisgICAg
fQorfQorCitsZXQgYzEgPSBuZXcgQygpOworYXNzZXJ0LnNhbWVWYWx1ZShjMS5hY2Nlc3MoKSwg
J3Rlc3QnKTsKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgYzEu
YWNjZXNzLmNhbGwoe30pOworfSk7CisKK09iamVjdC5zZXRQcm90b3R5cGVPZihjMSwgbnVsbCk7
CisKK2Fzc2VydC5zYW1lVmFsdWUoYzEuYWNjZXNzLCB1bmRlZmluZWQpOworYXNzZXJ0LnNhbWVW
YWx1ZShDLnByb3RvdHlwZS5hY2Nlc3MuY2FsbChjMSksICd0ZXN0Jyk7Cithc3NlcnQudGhyb3dz
KFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgIGMxLmFjY2Vzcy5jYWxsKHt9KTsKK30pOwor
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1jaGVjay1zdHJ1Y3R1
cmUtbWlzcy5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWNoZWNrLXN0cnVjdHVy
ZS1taXNzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNTgwZDdm
N2VlZTcwCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2Qt
Y2hlY2stc3RydWN0dXJlLW1pc3MuanMKQEAgLTAsMCArMSw1MSBAQAorLy9AIHJlcXVpcmVPcHRp
b25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNh
bWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAg
IHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7Cisg
ICAgfSwKKyAgICBzaG91bGRUaHJvdzogZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7Cisg
ICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1
bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0g
Y2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAg
ICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGl0
IHRocm93czogIiArIGUubmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRocmV3RXhj
ZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzog
IiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsK
KyAgICB9Cit9CisKK2xldCBpID0gMDsKKworY2xhc3MgQyB7CisgICAgY29uc3RydWN0b3IoKSB7
CisgICAgICAgIGlmIChpID49IDUwMDApCisgICAgICAgICAgICB0aGlzLnByb3BlcnR5ID0gaTsK
KyAgICB9CisKKyAgICAjbWV0aG9kKHYpIHsKKyAgICAgICAgdGhpcy5maWVsZCA9IHY7CisgICAg
fQorCisgICAgYWNjZXNzKHYpIHsKKyAgICAgICAgdGhpcy4jbWV0aG9kKHYpOworICAgIH0KK30K
K25vSW5saW5lKEMucHJvdG90eXBlLmFjY2Vzcyk7CisKK2xldCBjID0gbmV3IEMoKTsKK2ZvciAo
OyBpIDwgMTAwMDA7IGkrKykgeworICAgIGMuYWNjZXNzKCdmb28nICsgaSk7CisgICAgYXNzZXJ0
LnNhbWVWYWx1ZShjLmZpZWxkLCAnZm9vJyArIGkpOworfQorCithc3NlcnQuc2hvdWxkVGhyb3co
VHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICBjLmFjY2Vzcy5jYWxsKHt9LCAndGVzdCcpOwor
fSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWNvbXBhcmlz
b24uanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1jb21wYXJpc29uLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDZkYTc4NjdiYTQ4Ci0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtY29tcGFyaXNvbi5qcwpA
QCAtMCwwICsxLDMxIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9
dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAobGhzLCBy
aHMpIHsKKyAgICAgICAgaWYgKGxocyAhPT0gcmhzKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJFeHBlY3RlZDogIiArIGxocyArICIgYnVnIGdvdDogIiArIHJocyk7CisgICAgfSwKKwor
ICAgIHRocm93czogZnVuY3Rpb24gKGV4cGVjdGVkRXJyb3IsIG9wKSB7CisgICAgICAgIHRyeSB7
CisgICAgICAgICAgb3AoKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBpZiAo
IShlIGluc3RhbmNlb2YgZXhwZWN0ZWRFcnJvcikpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4cGVjdGVkRXJyb3IgKyAiIGJ1dCB0aHJl
dzogIiArIGUpOworICAgICAgICB9CisgICAgfQorfTsKKworY2xhc3MgQyB7CisgICAgI20oKSB7
IHJldHVybiAndGVzdDI2Mic7IH0KKworICAgIGdldFByaXZhdGVNZXRob2QoKSB7CisgICAgICAg
IHJldHVybiB0aGlzLiNtOworICAgIH0KK30KKworbGV0IGMxID0gbmV3IEMoKTsKK2xldCBjMiA9
IG5ldyBDKCk7CisKK2Fzc2VydC5zYW1lVmFsdWUoYzEuZ2V0UHJpdmF0ZU1ldGhvZCgpLCBjMi5n
ZXRQcml2YXRlTWV0aG9kKCkpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRl
LW1ldGhvZC1kZWxldGUtcHJvcGVydHktZnJvbS1icmFuZGVkLXN0cnVjdHVyZS5qcyBiL0pTVGVz
dHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWRlbGV0ZS1wcm9wZXJ0eS1mcm9tLWJyYW5kZWQtc3Ry
dWN0dXJlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZmVmYWU1
ZjIxY2NkCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2Qt
ZGVsZXRlLXByb3BlcnR5LWZyb20tYnJhbmRlZC1zdHJ1Y3R1cmUuanMKQEAgLTAsMCArMSw0MiBA
QAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQg
YXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7CisgICAgICAg
IGlmIChsaHMgIT09IHJocykKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6
ICIgKyBsaHMgKyAiIGJ1ZyBnb3Q6ICIgKyByaHMpOworICAgIH0sCisKKyAgICB0aHJvd3M6IGZ1
bmN0aW9uIChleHBlY3RlZEVycm9yLCBvcCkgeworICAgICAgICB0cnkgeworICAgICAgICAgIG9w
KCk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9m
IGV4cGVjdGVkRXJyb3IpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0
ZWQgdG8gdGhyb3c6ICIgKyBleHBlY3RlZEVycm9yICsgIiBidXQgdGhyZXc6ICIgKyBlKTsKKyAg
ICAgICAgfQorICAgIH0KK307CisKK2NsYXNzIEMgeworICAgICNtKCkgeyByZXR1cm4gJ3Rlc3Qn
OyB9CisKKyAgICBhY2Nlc3MoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtKCk7CisgICAgfQor
fQorCitsZXQgYzEgPSBuZXcgQygpOworYzEuZm9vID0gJ3Rlc3QnOworYXNzZXJ0LnNhbWVWYWx1
ZShjMS5hY2Nlc3MoKSwgJ3Rlc3QnKTsKK2Fzc2VydC5zYW1lVmFsdWUoYzEuZm9vLCAndGVzdCcp
OworYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgpIHsKKyAgICBjMS5hY2Nlc3Mu
Y2FsbCh7fSk7Cit9KTsKKworZGVsZXRlIGMxLmZvbzsKKworYXNzZXJ0LnNhbWVWYWx1ZShjMS5h
Y2Nlc3MoKSwgJ3Rlc3QnKTsKK2Fzc2VydC5zYW1lVmFsdWUoYzEuZm9vLCB1bmRlZmluZWQpOwor
YXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgpIHsKKyAgICBjMS5hY2Nlc3MuY2Fs
bCh7fSk7Cit9KTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2Qt
ZXh0ZW5kcy1icmFuZC1jaGVjay5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWV4
dGVuZHMtYnJhbmQtY2hlY2suanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi4zMjY2NGIyZmNjY2YKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2
YXRlLW1ldGhvZC1leHRlbmRzLWJyYW5kLWNoZWNrLmpzCkBAIC0wLDAgKzEsNDEgQEAKKy8vQCBy
ZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworZnVuY3Rpb24gYXNz
ZXJ0KGEsIGUpIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJF
eHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKK30KKworY2xhc3MgQmFzZSB7Cisg
ICAgI21CYXNlKCkgeworICAgICAgICByZXR1cm4gNDsKKyAgICB9CisKKyAgICBtZXRob2RCYXNl
KCkgeworICAgICAgICByZXR1cm4gdGhpcy4jbUJhc2UoKTsKKyAgICB9Cit9CisKK2NsYXNzIEMg
ZXh0ZW5kcyBCYXNlIHsKKyAgICAjbSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI2Y7CisgICAg
fQorCisgICAgbWV0aG9kKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jbSgpOworICAgIH0KKwor
ICAgICNmID0gMTU7Cit9CisKK2xldCBjID0gbmV3IEMoKTsKK2Fzc2VydChjLm1ldGhvZCgpLCAx
NSk7Cithc3NlcnQoYy5tZXRob2RCYXNlKCksIDQpOworCitsZXQgYmFzZSA9IG5ldyBCYXNlICgp
OworYXNzZXJ0KGJhc2UubWV0aG9kQmFzZSgpLCA0KTsKK3RyeSB7CisgICAgYy5tZXRob2QuY2Fs
bChiYXNlKTsKK30gY2F0Y2ggKGUpIHsKKyAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIFR5cGVFcnJv
ciwgdHJ1ZSk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9k
LWdldC1hbmQtY2FsbC5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWdldC1hbmQt
Y2FsbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjEzMTdlMWU3
N2U0MwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWdl
dC1hbmQtY2FsbC5qcwpAQCAtMCwwICsxLDI0IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNl
UHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBm
dW5jdGlvbiAobGhzLCByaHMpIHsKKyAgICAgICAgaWYgKGxocyAhPT0gcmhzKQorICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGxocyArICIgYnVnIGdvdDogIiArIHJo
cyk7CisgICAgfQorfTsKKworY2xhc3MgQyB7CisgICAgI20oKSB7IHJldHVybiB0aGlzLl92OyB9
CisKKyAgICBnZXRQcml2YXRlTWV0aG9kKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jbTsKKyAg
ICB9Cit9CisKK2xldCBjID0gbmV3IEMoKTsKKworbGV0IG8xID0ge192OiAndGVzdDI2Mid9Owor
bGV0IG8yID0ge192OiAnZm9vJ307Cithc3NlcnQuc2FtZVZhbHVlKGMuZ2V0UHJpdmF0ZU1ldGhv
ZCgpLmNhbGwobzEpLCAndGVzdDI2MicpOworYXNzZXJ0LnNhbWVWYWx1ZShjLmdldFByaXZhdGVN
ZXRob2QoKS5jYWxsKG8yKSwgJ2ZvbycpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9w
cml2YXRlLW1ldGhvZC1pbnZhbGlkLW11bHRpcGxlLWJyYW5kLWluc3RhbGxhdGlvbi5qcyBiL0pT
VGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWludmFsaWQtbXVsdGlwbGUtYnJhbmQtaW5zdGFs
bGF0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uN2Q3NzUw
NzlmMzE0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2Qt
aW52YWxpZC1tdWx0aXBsZS1icmFuZC1pbnN0YWxsYXRpb24uanMKQEAgLTAsMCArMSw1MSBAQAor
Ly9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNz
ZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAh
PT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQg
Z290OiAiICsgYSk7CisgICAgfSwKKyAgICBzaG91bGRUaHJvdzogZnVuY3Rpb24oZXhjZXB0aW9u
LCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsK
KyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFs
c2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0
cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24u
bmFtZSArICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBl
Y3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0ZWQgd2l0aG91
dCBleGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2xldCBpID0gMDsKKworbGV0IG8gPSB7fTsKK2Ns
YXNzIEJhc2UgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICByZXR1cm4gbzsKKyAgICB9
Cit9CisKK2NsYXNzIEMgZXh0ZW5kcyBCYXNlIHsKKyAgICAjbWV0aG9kKHYpIHsKKyAgICAgICAg
dGhpcy5maWVsZCA9IHY7CisgICAgfQorCisgICAgYWNjZXNzKHYpIHsKKyAgICAgICAgdGhpcy4j
bWV0aG9kKHYpOworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLmFjY2Vzcyk7CisKK2xl
dCBjID0gbmV3IEMoKTsKK0MucHJvdG90eXBlLmFjY2Vzcy5jYWxsKGMsICdmb28nKTsKK2Fzc2Vy
dC5zYW1lVmFsdWUoYy5maWVsZCwgJ2ZvbycpOworCithc3NlcnQuc2hvdWxkVGhyb3coVHlwZUVy
cm9yLCBmdW5jdGlvbigpIHsKKyAgICBjID0gbmV3IEMoKTsKK30pOworCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1pbnZhbGlkYXRlLWNvbXBpbGVkLXdpdGgtY29u
c3RhbnQtc3ltYm9sLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtaW52YWxpZGF0
ZS1jb21waWxlZC13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLjI5ZDNjNzJiMDM4YgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWludmFsaWRhdGUtY29tcGlsZWQtd2l0aC1jb25zdGFu
dC1zeW1ib2wuanMKQEAgLTAsMCArMSw2MiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVBy
aXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVu
Y3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBF
cnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfSwKKyAgICB0
aHJvd3M6IGZ1bmN0aW9uKGV4Y2VwdGlvbiwgZnVuY3RvcikgeworICAgICAgICBsZXQgdGhyZXdF
eGNlcHRpb247CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7CisgICAgICAg
ICAgICB0aHJld0V4Y2VwdGlvbiA9IGZhbHNlOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAg
ICAgICAgIHRocmV3RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICghZSBpbnN0YW5j
ZW9mIGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVk
IHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBpdCB0aHJvd3M6ICIgKyBlLm5h
bWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aHJld0V4Y2VwdGlvbikKKyAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFt
ZSArICIgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7CisgICAgfQorfQorCitmdW5j
dGlvbiBmYWN0b3J5Q2xhc3MoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgICNtZXRob2QoKSB7
CisgICAgICAgICAgICByZXR1cm4gJ3Rlc3QnOworICAgICAgICB9CisgICAgCisgICAgICAgIGFj
Y2VzcygpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLiNtZXRob2QoKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBub0lubGluZShDLnByb3RvdHlwZS5hY2Nlc3MpOworCisgICAgcmV0dXJuIEM7
Cit9CisKK2xldCBDID0gZmFjdG9yeUNsYXNzKCk7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAw
MDA7IGkrKykgeworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMu
YWNjZXNzKCksICd0ZXN0Jyk7CisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsICgpID0+IHsK
KyAgICAgICAgYy5hY2Nlc3MuY2FsbCh7fSk7CisgICAgfSk7Cit9CisKK2xldCBDMiA9IGZhY3Rv
cnlDbGFzcygpOworCitsZXQgYzIgPSBuZXcgQzIoKTsKK2Fzc2VydC5zYW1lVmFsdWUoYzIuYWNj
ZXNzKCksICd0ZXN0Jyk7CisKK2xldCBjID0gbmV3IEMoKTsKKworYXNzZXJ0LnRocm93cyhUeXBl
RXJyb3IsICgpID0+IHsKKyAgICBjLmFjY2Vzcy5jYWxsKGMyKTsKK30pOworCithc3NlcnQudGhy
b3dzKFR5cGVFcnJvciwgKCkgPT4geworICAgIGMyLmFjY2Vzcy5jYWxsKGMpOworfSk7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1uZXN0ZWQtY2xhc3MuanMgYi9K
U1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1uZXN0ZWQtY2xhc3MuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44Y2RmNDg5OWE0M2UKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1uZXN0ZWQtY2xhc3MuanMKQEAgLTAs
MCArMSw2OCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUi
KQorCitmdW5jdGlvbiBhc3NlcnQoYSwgZSkgeworICAgIGlmIChhICE9PSBlKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworfQor
CisoKCkgPT4geworICAgIGNsYXNzIEJhc2UgeworICAgICAgICBDID0gY2xhc3MgeworICAgICAg
ICAgICAgbWV0aG9kKCkgeworICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiNtQmFzZSgpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgI21CYXNlKCkgeworICAgICAgICAg
ICAgcmV0dXJuIDQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYmFzZSA9IG5ldyBCYXNl
KCk7CisgICAgbGV0IGMgPSBuZXcgYmFzZS5DKCk7CisgICAgYXNzZXJ0KGMubWV0aG9kLmNhbGwo
YmFzZSksIDQpOworCisgICAgdHJ5IHsKKyAgICAgICAgYy5tZXRob2QoKTsKKyAgICB9IGNhdGNo
IChlKSB7CisgICAgICAgIGFzc2VydChlIGluc3RhbmNlb2YgVHlwZUVycm9yLCB0cnVlKTsKKyAg
ICB9Cit9KSgpOworCisvLyBUZXN0IHNoYWRvdyBtZXRob2RzCisKKygoKSA9PiB7CisgICAgY2xh
c3MgQmFzZSB7CisgICAgICAgIG1ldGhvZCgpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLiNt
KCk7CisgICAgICAgIH0KKworICAgICAgICBDID0gY2xhc3MgeworICAgICAgICAgICAgbWV0aG9k
KG8pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gby4jbSgpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAjbSgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mb287CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGZvbyA9IDQ7CisgICAgICAgIH07CisKKyAgICAgICAg
I20oKSB7CisgICAgICAgICAgICByZXR1cm4gImZvbyI7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBsZXQgYmFzZSA9IG5ldyBCYXNlKCk7CisgICAgbGV0IGMgPSBuZXcgYmFzZS5DKCk7CisgICAg
YXNzZXJ0KGMubWV0aG9kKGMpLCA0KTsKKyAgICBhc3NlcnQoYmFzZS5tZXRob2QoKSwgImZvbyIp
OworCisgICAgdHJ5IHsKKyAgICAgICAgYy5tZXRob2QoYmFzZSk7CisgICAgfSBjYXRjaCAoZSkg
eworICAgICAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIFR5cGVFcnJvciwgdHJ1ZSk7CisgICAgfQor
fSkoKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2Qtb24tc2Vh
bGVkLW9iamVjdHMuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1vbi1zZWFsZWQt
b2JqZWN0cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmE2MmYw
OTk0MzEyMgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9k
LW9uLXNlYWxlZC1vYmplY3RzLmpzCkBAIC0wLDAgKzEsNjQgQEAKKy8vQCByZXF1aXJlT3B0aW9u
cygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1l
VmFsdWU6IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgICAgIGlmIChhY3R1YWwg
IT09IGV4cGVjdGVkKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiAr
IGFjdHVhbCArICIgYnVnIGdvdDogIiArIGV4cGVjdGVkKTsKKyAgICB9LAorCisgICAgdGhyb3dz
OiBmdW5jdGlvbiAoZXhwZWN0ZWRFcnJvciwgb3ApIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICBvcCgpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGlmICghKGUgaW5zdGFu
Y2VvZiBleHBlY3RlZEVycm9yKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4
cGVjdGVkIHRvIHRocm93OiAiICsgZXhwZWN0ZWRFcnJvciArICIgYnV0IHRocmV3OiAiICsgZSk7
CisgICAgICAgIH0KKyAgICB9Cit9OworCitjbGFzcyBDIHsKKyAgICAjbSgpIHsgcmV0dXJuICd0
ZXN0JzsgfQorCisgICAgYWNjZXNzKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jbSgpOworICAg
IH0KK30KKworbGV0IGMxID0gbmV3IEMoKTsKK2Fzc2VydC5zYW1lVmFsdWUoYzEuYWNjZXNzKCks
ICd0ZXN0Jyk7Cithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgIGMx
LmFjY2Vzcy5jYWxsKHt9KTsKK30pOworCitPYmplY3Quc2VhbChjMSk7CisKK2Fzc2VydC5zYW1l
VmFsdWUoYzEuYWNjZXNzKCksICd0ZXN0Jyk7Cithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVu
Y3Rpb24gKCkgeworICAgIGMxLmFjY2Vzcy5jYWxsKHt9KTsKK30pOworCisvLyBQZXJmb3JtIGEg
c2V0IGJyYW5kIHRyYW5zaXRpb24gb24gZnJvemVuIG9iamVjdAorbGV0IHNlYWxlZE9iamVjdCA9
IHt9OworT2JqZWN0LmZyZWV6ZShzZWFsZWRPYmplY3QpOworCitjbGFzcyBCYXNlIHsKKyAgICBj
b25zdHJ1Y3RvcigpIHsKKyAgICAgICAgcmV0dXJuIHNlYWxlZE9iamVjdDsKKyAgICB9Cit9CisK
K2NsYXNzIEQgZXh0ZW5kcyBCYXNlIHsKKyAgICAjbSgpIHsgcmV0dXJuICd0ZXN0IEQnOyB9CisK
KyAgICBzdGF0aWMgYWNjZXNzKG8pIHsKKyAgICAgICAgcmV0dXJuIG8uI20oKTsKKyAgICB9Cit9
CisKK2xldCBkID0gbmV3IEQoKTsKKworYXNzZXJ0LnNhbWVWYWx1ZShELmFjY2VzcyhkKSwgJ3Rl
c3QgRCcpOworYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgpIHsKKyAgICBELmFj
Y2Vzcyh7fSk7Cit9KTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRo
b2Qtb24tdW5jYWNoZWFibGUtZGljdGlvbmFyeS5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUt
bWV0aG9kLW9uLXVuY2FjaGVhYmxlLWRpY3Rpb25hcnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi5hMDU1MTUwZWQ3NDUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1vbi11bmNhY2hlYWJsZS1kaWN0aW9uYXJ5LmpzCkBA
IC0wLDAgKzEsNjQgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10
cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhY3R1YWws
IGV4cGVjdGVkKSB7CisgICAgICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGFjdHVhbCArICIgYnVnIGdvdDogIiAr
IGV4cGVjdGVkKTsKKyAgICB9LAorCisgICAgdGhyb3dzOiBmdW5jdGlvbiAoZXhwZWN0ZWRFcnJv
ciwgb3ApIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICBvcCgpOworICAgICAgICB9IGNhdGNo
KGUpIHsKKyAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEVycm9yKSkKKyAg
ICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhw
ZWN0ZWRFcnJvciArICIgYnV0IHRocmV3OiAiICsgZSk7CisgICAgICAgIH0KKyAgICB9Cit9Owor
CitjbGFzcyBDIHsKKyAgICAjbSgpIHsgcmV0dXJuICd0ZXN0JzsgfQorCisgICAgYWNjZXNzKCkg
eworICAgICAgICByZXR1cm4gdGhpcy4jbSgpOworICAgIH0KK30KKworbGV0IGMxID0gbmV3IEMo
KTsKK2Fzc2VydC5zYW1lVmFsdWUoYzEuYWNjZXNzKCksICd0ZXN0Jyk7Cithc3NlcnQudGhyb3dz
KFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgIGMxLmFjY2Vzcy5jYWxsKHt9KTsKK30pOwor
CitPYmplY3QuZnJlZXplKGMxKTsKKworYXNzZXJ0LnNhbWVWYWx1ZShjMS5hY2Nlc3MoKSwgJ3Rl
c3QnKTsKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgYzEuYWNj
ZXNzLmNhbGwoe30pOworfSk7CisKKy8vIFBlcmZvcm0gYSBzZXQgYnJhbmQgdHJhbnNpdGlvbiBv
biBmcm96ZW4gb2JqZWN0CitsZXQgZnJvemVuT2JqZWN0ID0ge307CitPYmplY3QuZnJlZXplKGZy
b3plbk9iamVjdCk7CisKK2NsYXNzIEJhc2UgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAg
ICByZXR1cm4gZnJvemVuT2JqZWN0OworICAgIH0KK30KKworY2xhc3MgRCBleHRlbmRzIEJhc2Ug
eworICAgICNtKCkgeyByZXR1cm4gJ3Rlc3QgRCc7IH0KKworICAgIHN0YXRpYyBhY2Nlc3Mobykg
eworICAgICAgICByZXR1cm4gby4jbSgpOworICAgIH0KK30KKworbGV0IGQgPSBuZXcgRCgpOwor
Cithc3NlcnQuc2FtZVZhbHVlKEQuYWNjZXNzKGQpLCAndGVzdCBEJyk7Cithc3NlcnQudGhyb3dz
KFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgIEQuYWNjZXNzKHt9KTsKK30pOworCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1wb2x5bW9ycGhpYy13aXRoLWNv
bnN0YW50LXN5bWJvbC5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLXBvbHltb3Jw
aGljLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uMDAxNzYyN2E1MzA5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvcHJpdmF0ZS1tZXRob2QtcG9seW1vcnBoaWMtd2l0aC1jb25zdGFudC1zeW1ib2wuanMKQEAg
LTAsMCArMSw1MyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRy
dWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsK
KyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6
ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfSwKKyAgICBzaG91bGRUaHJvdzogZnVu
Y3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsK
KyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3
RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhy
ZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0
aW9uKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6
ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQg
ZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2xldCBpID0gMDsKKwor
Y2xhc3MgQmFzZSB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIGlmIChpICUgMikKKyAg
ICAgICAgICAgIHRoaXMuYW5vdGhlckZpZWxkID0gaTsKKyAgICB9Cit9CisKK2NsYXNzIEMgZXh0
ZW5kcyBCYXNlIHsKKyAgICAjbWV0aG9kKCkgeworICAgICAgICByZXR1cm4gJ3Rlc3QnOworICAg
IH0KKworICAgIGFjY2VzcygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI21ldGhvZCgpOworICAg
IH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLmFjY2Vzcyk7CisKK2ZvciAoOyBpIDwgMTAwMDA7
IGkrKykgeworICAgIGNvdW50ID0gaTsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0
LnNhbWVWYWx1ZShjLmFjY2VzcygpLCAndGVzdCcpOworfQorCithc3NlcnQuc2hvdWxkVGhyb3co
VHlwZUVycm9yLCAoKSA9PiB7CisgICAgYy5hY2Nlc3MuY2FsbCh7fSk7Cit9KTsKKwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtdW50eXBlZC11c2UuanMgYi9KU1Rl
c3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC11bnR5cGVkLXVzZS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjhhY2I4YjQxMDJiZAotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLXVudHlwZWQtdXNlLmpzCkBAIC0wLDAgKzEs
NTggQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIiwgIi0t
dXNlQWNjZXNzSW5saW5pbmc9ZmFsc2UiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNob3VsZFRo
cm93OiBmdW5jdGlvbihleGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhj
ZXB0aW9uOworICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICAg
ICAgdGhyZXdFeGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAg
ICAgICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2Vv
ZiBleGNlcHRpb24pCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0
byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5uYW1l
KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUg
KyAiIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworICAgIH0KK30KKworY2xhc3Mg
QyB7CisgICNtZXRob2QoKSB7fQorCisgIGFjY2Vzcyh2KSB7CisgICAgICBsZXQgbyA9IHRoaXM7
CisgICAgICAvLyBUaGlzIGJyYW5jaCBpcyBoZXJlIHRvIGF2b2lkIFB1dFByaXZhdGVOYW1lQnlJ
ZCB0byBiZSBmb2xkZWQgYXMgCisgICAgICAvLyBQdXRCeU9mZnNldC4KKyAgICAgIGlmICh2ID4g
MTAwKQorICAgICAgICAgIG8gPSB7fTsKKyAgICAgIG8uI21ldGhvZCgpOworICB9Cit9Citub0lu
bGluZShDLnByb3RvdHlwZS5hY2Nlc3MpOworCitsZXQgYyA9IG5ldyBDKCk7CisKKy8vIExldCdz
IHRyaWdnZXIgSklUIGNvbXBpbGF0aW9uIGZvciBgQy5wcm90b3R5cGUuYWNjZXNzYAorZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgYy5hY2Nlc3MoMTUpOworfQorCitmb3Ig
KGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBhc3NlcnQuc2hvdWxkVGhyb3coVHlw
ZUVycm9yLCAoKSA9PiB7CisgICAgICAgIGMuYWNjZXNzLmNhbGwoe30sIDApOworICAgIH0pOwor
CisgICAgYXNzZXJ0LnNob3VsZFRocm93KFR5cGVFcnJvciwgKCkgPT4geworICAgICAgICBjLmFj
Y2Vzcy5jYWxsKDE1LCAwKTsKKyAgICB9KTsKKworICAgIGFzc2VydC5zaG91bGRUaHJvdyhUeXBl
RXJyb3IsICgpID0+IHsKKyAgICAgICAgYy5zZXRGaWVsZC5jYWxsKCdzdHJpbmcnLCAwKTsKKyAg
ICB9KTsKKworICAgIGFzc2VydC5zaG91bGRUaHJvdyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICAg
ICAgYy5zZXRGaWVsZC5jYWxsKFN5bWJvbCgnc3ltYm9sJyksIDApOworICAgIH0pOworfQorCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC13aXRoLXVuY2FjaGVhYmxl
LWRpY3Rpb25hcnktdHJhbnNpdGlvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9k
LXdpdGgtdW5jYWNoZWFibGUtZGljdGlvbmFyeS10cmFuc2l0aW9uLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZjIxMjg4ZWJlNmQ4Ci0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2Qtd2l0aC11bmNhY2hlYWJsZS1kaWN0aW9u
YXJ5LXRyYW5zaXRpb24uanMKQEAgLTAsMCArMSwzOSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCIt
LXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1
ZTogZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICAgICAgaWYgKGFjdHVhbCAhPT0g
ZXhwZWN0ZWQpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgYWN0
dWFsICsgIiBidWcgZ290OiAiICsgZXhwZWN0ZWQpOworICAgIH0sCisKKyAgICB0aHJvd3M6IGZ1
bmN0aW9uIChleHBlY3RlZEVycm9yLCBvcCkgeworICAgICAgICB0cnkgeworICAgICAgICAgIG9w
KCk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9m
IGV4cGVjdGVkRXJyb3IpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0
ZWQgdG8gdGhyb3c6ICIgKyBleHBlY3RlZEVycm9yICsgIiBidXQgdGhyZXc6ICIgKyBlKTsKKyAg
ICAgICAgfQorICAgIH0KK307CisKK2NsYXNzIEMgeworICAgICNtKCkgeyByZXR1cm4gJ3Rlc3Qn
OyB9CisKKyAgICBhY2Nlc3MoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtKCk7CisgICAgfQor
fQorCitsZXQgYzEgPSBuZXcgQygpOworYXNzZXJ0LnNhbWVWYWx1ZShjMS5hY2Nlc3MoKSwgJ3Rl
c3QnKTsKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgYzEuYWNj
ZXNzLmNhbGwoe30pOworfSk7CisKKyR2bS50b1VuY2FjaGVhYmxlRGljdGlvbmFyeShjMSk7CisK
K2Fzc2VydC5zYW1lVmFsdWUoYzEuYWNjZXNzKCksICd0ZXN0Jyk7Cithc3NlcnQudGhyb3dzKFR5
cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgIGMxLmFjY2Vzcy5jYWxsKHt9KTsKK30pOworCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZHMtb24tcHJveHkuanMgYi9K
U1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZHMtb24tcHJveHkuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mYjVmZGZjYjYyMzQKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZHMtb24tcHJveHkuanMKQEAgLTAsMCArMSw0
MiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitm
dW5jdGlvbiBhc3NlcnQoYSwgZSwgbSkgeworICAgIGlmIChhICE9PSBlKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IobSk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydEFycmF5Q29udGVudChhLCBlKSB7
CisgICAgYXNzZXJ0KGEubGVuZ3RoLCBlLmxlbmd0aCwgIlNpemUgb2YgYXJyYXlzIGRvZXNuJ3Qg
bWF0Y2giKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspCisgICAgICAg
IGFzc2VydChhW2ldLCBlW2ldLCAiYVsiICsgaSArICJdID0gIiArIGFbaV0gKyAiIGJ1dCBlWyIg
KyBpICsgIl0gPSAiICsgZVtpXSk7Cit9CisKK2xldCBhcnIgPSBbXTsKKworY2xhc3MgUHJveHlC
YXNlIHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm94eSh0aGlz
LCB7CisgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uIChvYmosIHByb3ApIHsKKyAgICAgICAgICAg
ICAgICBhcnIucHVzaChwcm9wKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gb2JqW3Byb3BdOwor
ICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9Cit9CisKK2NsYXNzIFRlc3QgZXh0ZW5k
cyBQcm94eUJhc2UgeworICAgICNtKCkgeworICAgICAgICByZXR1cm4gMzsKKyAgICB9CisKKyAg
ICBtZXRob2QoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtKCk7CisgICAgfQorfQorCitsZXQg
dCA9IG5ldyBUZXN0KCk7CitsZXQgciA9IHQubWV0aG9kKCk7Cithc3NlcnQociwgMywgIkV4cGVj
dGVkOiAzIGJ1dCBnb3Q6ICIgKyByKTsKKworYXNzZXJ0QXJyYXlDb250ZW50KGFyciwgWydtZXRo
b2QnXSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxh
YmxlLW9uLWRpcmVjdC1ldmFsLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1lcy1hdmFp
bGFibGUtb24tZGlyZWN0LWV2YWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi42NGNlMGUwYWY4MDUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9w
cml2YXRlLW5hbWVzLWF2YWlsYWJsZS1vbi1kaXJlY3QtZXZhbC5qcwpAQCAtMCwwICsxLDIzIEBA
CisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBh
c3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAobGhzLCByaHMpIHsKKyAgICAgICAg
aWYgKGxocyAhPT0gcmhzKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDog
IiArIHJocyArICIgYnVnIGdvdDogIiArIGxocyk7CisgICAgfQorfTsKKworKGZ1bmN0aW9uICgp
IHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgI20oKSB7IHJldHVybiAndGVzdCc7IH0KKworICAg
ICAgICBjYWxsTWV0aG9kRnJvbUV2YWwoKSB7CisgICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXM7
CisgICAgICAgICAgICByZXR1cm4gZXZhbCgnc2VsZi4jbSgpJyk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmNhbGxNZXRo
b2RGcm9tRXZhbCgpLCAndGVzdCcpOworfSkoKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0
MjYyL2NvbmZpZy55YW1sIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCmluZGV4IGZkMWM2
YjU2ZGJhNy4uNDg0Y2FiN2IwNDYyIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmln
LnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCkBAIC00LDYgKzQsNyBAQCBm
bGFnczoKICAgV2Vha1JlZjogdXNlV2Vha1JlZnMKICAgRmluYWxpemF0aW9uUmVnaXN0cnk6IHVz
ZVdlYWtSZWZzCiAgIGNsYXNzLWZpZWxkcy1wcml2YXRlOiB1c2VQcml2YXRlQ2xhc3NGaWVsZHMK
KyAgY2xhc3MtbWV0aG9kcy1wcml2YXRlOiB1c2VQcml2YXRlTWV0aG9kcwogICBjbGFzcy1zdGF0
aWMtZmllbGRzLXB1YmxpYzogdXNlUHVibGljU3RhdGljQ2xhc3NGaWVsZHMKICAgY2xhc3Mtc3Rh
dGljLWZpZWxkcy1wcml2YXRlOiB1c2VQcml2YXRlU3RhdGljQ2xhc3NGaWVsZHMKICAgSW50bC5E
YXRlVGltZUZvcm1hdC1kYXlQZXJpb2Q6IHVzZUludGxEYXRlVGltZUZvcm1hdERheVBlcmlvZApA
QCAtMTksNyArMjAsNiBAQCBza2lwOgogICAgIC0gcmVnZXhwLWxvb2tiZWhpbmQKICAgICAtIGxl
Z2FjeS1yZWdleHAKIAotICAgIC0gY2xhc3MtbWV0aG9kcy1wcml2YXRlCiAgICAgLSBjbGFzcy1z
dGF0aWMtbWV0aG9kcy1wcml2YXRlCiAgICAgLSBjbGVhbnVwU29tZQogICAgIC0gaG9zdC1nYy1y
ZXF1aXJlZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggZjQ4OTFkYTNiMDU0Li40NjI3NGNh
ODJlMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4OSBAQAorMjAyMC0x
MC0yMCAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTTmV4
dF0gSW1wbGVtZW50IHByaXZhdGUgbWV0aG9kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NDM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBhZGRpbmcgc3VwcG9ydCB0byBwcml2
YXRlIG1ldGhvZHMgZm9sbG93aW5nIHRoZQorICAgICAgICBzcGVjaWZpY2F0aW9uIG9uIGh0dHBz
Oi8vdGMzOS5lcy9wcm9wb3NhbC1wcml2YXRlLW1ldGhvZHMvLgorICAgICAgICBUaGlzIGlzIGlu
dHJvZHVjaW5nIGEgbmV3IHdheSB0byBkZWNsYXJlIHByaXZhdGUgbWV0aG9kcyBvbgorICAgICAg
ICBjbGFzcyBzeW50YXguIFByaXZhdGUgbWV0aG9kcyBhcmUgb25seSBhY2Nlc3NpYmxlIHdpdGhp
bgorICAgICAgICBjbGFzc2VzIHRoZXkgd2VyZSBkZWNsYXJlZCwgYW5kIG9ubHkgY2FuIGJlIGNh
bGxlZCBmcm9tCisgICAgICAgIG9iamVjdHMgdGhhdCBhcmUgaW5zdGFuY2Ugb2YgdGhlc2UgY2xh
c3Nlcy4KKyAgICAgICAgVG8gZ3VhcmFudGVlIHN1Y2ggcnVsZXMsIHRoZSBwcm9wb3NhbCBwcmVz
ZW50cyB0aGUgY29uY2VwdCBvZgorICAgICAgICBCcmFuZCBDaGVjay4gRHVyaW5nIGNsYXNzIGV2
YWx1YXRpb24sIGlmIGEgcHJpdmF0ZSBtZXRob2QgaXMgcHJlc2VudCwKKyAgICAgICAgYSBgYnJh
bmRgIGlzIGluc3RhbGxlZCBpbiB0aGlzIGNsYXNzLiBFdmVyeSBpbnN0YW5jZSBvZiBzdWNoIGNs
YXNzCisgICAgICAgIHRoZW4gZ2V0cyB0aGlzIGJyYW5kIGluc3RhbGxlZCBkdXJpbmcgYFtbQ29u
c3RydWN0XV1gIG9wZXJhdGlvbi4gSXQKKyAgICAgICAgbWVhbnMgdGhhdCBhbiBvYmplY3QgY2Fu
IGhhdmUgbXVsdGlwbGUgYnJhbmRzIChlLmcgd2hlbiB0aGVyZSBpcyBhbHNvCisgICAgICAgIHBy
aXZhdGUgbWV0aG9kcyBkZWNsYXJlZCBvbiBzdXBlciBjbGFzcykuIEJlZm9yZSBhY2Nlc3Npbmcg
YSBwcml2YXRlCisgICAgICAgIG1ldGhvZCwgdGhlcmUgaXMgYSBjaGVjayB0byB2YWxpZGF0ZSBp
ZiB0aGUgdGFyZ2V0IG9mIHRoZSBjYWxsIGhhcyB0aGUKKyAgICAgICAgYnJhbmQgb2YgY2FsbGVl
IG1ldGhvZC4KKyAgICAgICAgVGhlIGJyYW5kIGNoZWNrIG1lY2hhbmlzbSBpcyBpbXBsZW1lbnRl
ZCB1c2luZyBhIGBAcHJpdmF0ZUJyYW5kYAorICAgICAgICBzdG9yZWQgb24gY2xhc3Mgc2NvcGUu
IEhlcmUgaXMgYSByZXByZXNlbnRhdGlvbiBvZiBob3cgdGhpcyBtZWNoYW5pc20KKyAgICAgICAg
d29ya3M6CisKKyAgICAgICAgYGBgCisgICAgICAgIGNsYXNzIEMgeworICAgICAgICAgICAgI20o
KSB7IHJldHVybiAzOyB9CisgICAgICAgICAgICBtZXRob2QoKSB7IHJldHVybiB0aGlzLiNtKCk7
IH0KKyAgICAgICAgfQorCisgICAgICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICAgICAgY29uc29s
ZS5sb2coYy5tZXRob2QoKSk7IC8vIHByaW50cyAzCisgICAgICAgIGBgYAorCisgICAgICAgIEdl
bmVyYXRlZCBieXRlY29kZSBmb3IgdGhlIGZvbGxvd2luZyByZXByZXNlbnRhdGlvbjoKKyAgICAg
ICAgYGBgCisgICAgICAgIHsgLy8gY2xhc3MgbGV4aWNhbCBzY29wZQorICAgICAgICAgICAgY29u
c3QgQHByaXZhdGVCcmFuZCA9IEBjcmVhdGVQcml2YXRlU3ltYm9sKCk7CisgICAgICAgICAgICBj
b25zdCAjbSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDM7IH0KKyAgICAgICAgICAgIEMucHJvdG90
eXBlLm1ldGhvZCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIEBjaGVja19wcml2YXRl
X2JyYW5kKHRoaXMsIEBwcml2YXRlQnJhbmQpOworICAgICAgICAgICAgICAgIHJldHVybiAjbS5j
YWxsKHRoaXMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQyA9IGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgICAgIEBzZXRfcHJpdmF0ZV9icmFuZCh0aGlzLCBAcHJpdmF0ZUJyYW5kLCBA
cHJpdmF0ZUJyYW5kKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGxldCBj
ID0gbmV3IEMoKTsKKyAgICAgICAgY29uc29sZS5sb2coYy5tZXRob2QoKSk7IC8vIHByaW50cyAz
CisgICAgICAgIGBgYAorCisgICAgICAgIFJlc29sdmluZyBjb3JyZWN0IGJyYW5kIHRvIGNoZWNr
OgorCisgICAgICAgIEluIHRoZSBjYXNlIG9mIHNoYWRvd2luZyBvciBuZXN0ZWQgc2NvcGUsIHdl
IG5lZWQgdG8gZW1pdCBicmFuZAorICAgICAgICBjaGVja3MgdG8gdGhlIHJpZ2h0IHByaXZhdGUg
YnJhbmQuIFNlZSBjb2RlIGJlbG93OgorCisgICAgICAgIGBgYAorICAgICAgICBjbGFzcyBDIHsK
KyAgICAgICAgICAgICNtKCkgeyByZXR1cm4gMzsgfQorICAgICAgICAgICAgbWV0aG9kKCkgeyBy
ZXR1cm4gdGhpcy4jbSgpO30KKworICAgICAgICAgICAgQSA9IGNsYXNzIHsKKyAgICAgICAgICAg
ICAgICAjbTIoKSB7IHJldHVybiAzOyB9CisgICAgICAgICAgICAgICAgZm9vKG8pIHsgcmV0dXJu
IHRoaXMuI20oKTsgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGBgYAorCisg
ICAgICAgIFRoZSBjYWxsIG9mICIjbSIgaW4gYGZvb2AgcmVmZXJzIHRvICJDOjojbSIuIEluIHN1
Y2ggY2FzZSwgd2UgbmVlZCB0bworICAgICAgICBjaGVjayBDJ3MgcHJpdmF0ZSBicmFuZCwgaW5z
dGVhZCBvZiBBJ3MgcHJpdmF0ZSBicmFuZC4KKyAgICAgICAgVG8gcGVyZm9ybSB0aGUgcHJvcGVy
IGNoZWNrLCB3ZSBmaXJzdCByZXNvbHZlIHNjb3BlIG9mICIjbSIgYW5kIHRoZW4KKyAgICAgICAg
Y2hlY2sgdGhlIHByaXZhdGUgYnJhbmQgb2YgdGhpcyBzY29wZSAodGhlIHNjb3BlIHdoZXJlIHRo
ZSBwcml2YXRlCisgICAgICAgIG1ldGhvZCBhbmQgYnJhbmQgYXJlIHN0b3JlZCBpcyB0aGUgc2Ft
ZSkuCisgICAgICAgIFNvIHRoZSBieXRlY29kZSB0byBsb29rdXAgdGhlIHJpZ2h0IGJyYW5kIGlz
OgorCisgICAgICAgIGBgYAorICAgICAgICByZXNvbHZlX3Njb3BlIGxvYzEwLCAiI20iCisgICAg
ICAgIGdldF9mcm9tX3Njb3BlIGxvYzExLCBsb2MxMCwgIkBwcml2YXRlQnJhbmQiCisgICAgICAg
IGNoZWNrX3ByaXZhdGVfYnJhbmQgdGhpcywgbG9jMTEKKyAgICAgICAgZ2V0X2Zyb21fc2NvcGUg
bG9jMTEsIGxvYzEwLCAiI20iCisgICAgICAgIC8vIHNldHVwIGNhbGwgZnJhbWUKKyAgICAgICAg
Y2FsbCBsb2MxMSwgLi4uCisgICAgICAgIC8vIC4uLgorICAgICAgICBgYGAKKworICAgICAgICBC
cmFuZCBjaGVjayBtZWNoYW5pc206CisKKyAgICAgICAgV2UgYXJlIGludHJvZHVjaW5nIGluIHRo
aXMgcGF0Y2ggMiBuZXcgYnl0ZWNvZGVzIHRvIGFsbG93ICBicmFuZCBjaGVjaworICAgICAgICBv
ZiBvYmplY3RzOiBgb3Bfc2V0X2JyYW5kYCBhbmQgYG9wX2NoZWNrX2JyYW5kYC4KKyAgICAgICAg
YG9wX3NldF9icmFuZGAgc2V0cyBhIG5ldyBicmFuZCBpbiBhbiBvYmplY3QsIHNvIHdlIGNhbiBw
ZXJmb3JtIHRoZSBicmFuZAorICAgICAgICBjaGVjayBsYXRlciB3aGVuIGFjY2Vzc2luZyBwcml2
YXRlIG1ldGhvZHMuIFRoaXMgb3BlcmF0aW9ucyB0aHJvd3Mgd2hlbgorICAgICAgICB0cnlpbmcg
dG8gYWRkIHRoZSBzYW1lIGJyYW5kIHR3aWNlIGluIGFuIE9iamVjdC4KKyAgICAgICAgYG9wX2No
ZWNrX2JyYW5kYCBjaGVja3MgaWYgdGhlIGdpdmVuIG9iamVjdCBjb250YWlucyB0aGUgYnJhbmQg
d2UgYXJlCisgICAgICAgIGxvb2tpbmcgZm9yLiBJdCB0cmF2ZXJzZXMgdGhlIGJyYW5kIGNoYWlu
IHRvIHZlcmlmeSBpZiB0aGUgYnJhbmQgaXMKKyAgICAgICAgcHJlc2VudCwgYW5kIHRocm93cyBg
VHlwZUVycm9yYCBvdGhlcndpc2UuCisKKyAgICAgICAgV2UgYXJlIGFsc28gaW50cm9kdWNpbmcg
YSBzdWJjbGFzcyBmb3IgU3RydWN0dXJlIGNhbGxlZCBCcmFuZGVkU3RydWN0dXJlLgorICAgICAg
ICBJdCBpcyB1c2VkIHRvIHN0b3JlIGJyYW5kcyBhbmQgdG8gYWxsb3cgYnJhbmQgY2hlY2sgbWVj
aGFuaXNtLiBCcmFuZGVkU3RydWN0dXJlCisgICAgICAgIHN0b3JlcyBhIGJyYW5kIGFuZCBhIHBh
cmVudCBwb2ludGVyIHRvIGFub3RoZXIgQnJhbmRlZFN0cnVjdHVyZSB0aGF0IGFsbG93CisgICAg
ICAgIHVzIHRyYXZlcnNlIHRoZSBicmFuZCBjaGFpbi4gV2l0aCBgQnJhbmRlZFN0cnVjdHVyZWAs
IHdlIGNhbiB0aGVuCisgICAgICAgIGluZmVyIHRoYXQgYSBnaXZlbiBvYmplY3QgaGFzIHRoZSBi
cmFuZCB3ZSBhcmUgbG9va2luZyBmb3IganVzdAorICAgICAgICBjaGVja2luZyBpdHMgc3RydWN0
dXJlSWQuIFRoaXMgaXMgdmVyeSBnb29kIG9wdGltaXphdGlvbiwgc2luY2Ugd2UgY2FuCisgICAg
ICAgIHJlZHVjZSBtb3N0IG9mIGJyYW5kIGNoZWNrcyB0byBzdHJ1Y3R1cmUgY2hlY2tzLgorCisg
ICAgICAgIFdlIGNyZWF0ZWQgYSBuZXcga2luZCBvZiB0cmFuc2l0aW9uIGNhbGxlZCBgU2V0QnJh
bmRgIHRoYXQgaGFwcGVucyB3aGVuCisgICAgICAgIGBvcF9zZXRfYnJhbmRgIGlzIGV4ZWN1dGVk
LiBUaGlzIGFsbG93IHVzIHRvIGNhY2hlIHN1Y2gga2luZCBvZgorICAgICAgICB0cmFzaXRpb25z
IG9uIHRyYXNpdGlvbiB0YWJsZSB1c2luZyB0aGUga2V5IGA8YnJhbmQtPnVpZCwgMCwKKyAgICAg
ICAgVHJhbnNpdGlvbktpbmQ6OlNldEJyYW5kPmAuIER1cmluZyB0aGlzIHRyYW5zaXRpb24sIHdl
IHRha2UgcHJldmlvdXMKKyAgICAgICAgc3RydWN0dXJlIGFuZCBhcHBseSBvbmUgb2YgdGhlIGZv
bGxvd2luZyBydWxlczoKKworICAgICAgICAgICAgMS4gSWYgaXTigJlzIGEgQnJhbmRlZFN0cnVj
dHVyZSwgd2UgdGhlbiBzZXQgaXQgdG8gYG1fcGFyZW50QnJhbmRgLAorICAgICAgICAgICAgdG8g
YWxsb3cgcHJvcGVyIGJyYW5kIGNoYWluIGNoZWNrLgorICAgICAgICAKKyAgICAgICAgICAgIDIu
IElmIGl04oCZcyBub3QgYSBCcmFuZGVkU3RydWN0dXJlLCB3ZSBzZXQgYG1fcGFyZW50QnJhbmRg
IHRvIG51bGxwdHIsCisgICAgICAgICAgICBtZWFuaW5nIHRoYXQgdGhpcyBpcyB0aGUgZmlyc3Qg
YnJhbmQgYmVpbmcgYWRkZWQgdG8gdGhlIG9iamVjdAorICAgICAgICAgICAgd2l0aCB0aGlzIHN0
cnVjdHVyZS4KKyAgICAgICAgCisgICAgICAgIEZvciBub3csIHdlIGFyZSB1c2luZyB0aGUgZmxh
ZyBgaXNCcmFuZGVkU3RydWN0dXJlYCB0byBpZGVudGlmeSB0aGF0IGEKKyAgICAgICAgZ2l2ZW4g
U3RydWN0dXJlIGlzIGEgQnJhbmRlZFN0cnVjdHVyZS4gVGhpcyBpcyBkb25lIHRvIGF2b2lkIGNo
YW5nZXMKKyAgICAgICAgb24gcGxhY2VzIHdoZXJlIHdlIGFyZSBjaGVja2luZyBmb3IgYHZtLnN0
cnVjdHVyZVN0cnVjdHVyZSgpYC4KKyAgICAgICAgSG93ZXZlciwgaWYgd2UgZXZlciBuZWVkIHNw
YWNlIG9uIFN0cnVjdHVyZSwgdGhpcyBmbGFnIGlzIGEgZ29vZAorICAgICAgICBjYW5kaWRhdGUg
dG8gYmUgZGVsZXRlZCBhbmQgd2UgY2FuIG1vdmUgdG8gYSBzb2x1dGlvbiB0aGF0IHVzZXMKKyAg
ICAgICAgYHZtLmJyYW5kZWRTdHJ1Y3R1cmVTdHJ1Y3R1cmUoKWA7CisKKyAgICAgICAgKiBidWls
dGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwOgorICAgICAgICAoSlNDOjpCdWlsdGluRXhlY3V0
YWJsZXM6OmNyZWF0ZURlZmF1bHRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkJ1aWx0aW5F
eGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJsZSk6CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRp
bkV4ZWN1dGFibGVzLmg6CisKKyAgICAgICAgV2UgYXJlIGFkZGluZyBhIG5ldyBwYXJhbWV0ZXIg
YFByaXZhdGVCcmFuZFJlcXVpcmVtZW50YCB0byBwcm9wYWdhdGUKKyAgICAgICAgd2hlbiBhIGRl
ZmF1bHQgY29uc3RydWN0b3IgbmVlZHMgdG8gZW1pdCBjb2RlIHRvIHNldHVwIHByaXZhdGUgYnJh
bmQKKyAgICAgICAgb24gaW5zdGFuY2VzLgorCisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbk5h
bWVzLmg6CisKKyAgICAgICAgQWRkaW5nIGBAcHJpdmF0ZUJyYW5kYCB0aGF0ICB3ZSB1c2UgdG8g
c3RvcmUgcHJpdmF0ZSBicmFuZCBvbgorICAgICAgICBjbGFzcydzIHNjb3BlLgorCisgICAgICAg
ICogYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaDoKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUlu
Zm86OkV4ZWN1dGFibGVJbmZvKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OnByaXZh
dGVCcmFuZFJlcXVpcmVtZW50IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENv
ZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAg
ICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnByaXZhdGVCcmFuZFJlcXVpcmVtZW50IGNvbnN0
KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5oOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6cHJpdmF0ZUJyYW5kUmVxdWly
ZW1lbnQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisK
KyAgICAgICAgV2UgY2hhbmdlZCBCeXRlY29kZUdlbmVyYXRvciBmb3IgRnVuY3Rpb25Ob2RlIGFu
ZCBFdmFsTm9kZSB0bworICAgICAgICBwcm9wYWdhdGUgcGFyZW50U2NvcGUgVmFyaWFibGVFbnZp
cm9ubWVudC4gVGhlc2UgZW52aXJvbm1lbnRzIHN0b3JlcworICAgICAgICBwcml2YXRlIG5hbWUg
ZW50cmllcyB0aGF0IGFyZSB2aXNpYmxlIGludG8gdGhlIHNjb3BlIG9mIHRoZQorICAgICAgICBm
dW5jdGlvbi9ldmFsIGluIGFkZGl0aW9uIHRvIFREWiB2YXJpYWJsZXMuCisgICAgICAgIFRoaXMg
aXMgcmVxdWlyZWQgdG8gaWRlbnRpZnkgdGhlIGtpbmQgb2YgYWNjZXNzIGEgcHJpdmF0ZSBuYW1l
IGlzCisgICAgICAgIHJlZmVycmluZyB0bywgc2luY2UgaXQgY2FuIGJlIGEgcHJpdmF0ZSBmaWVs
ZCBvciBhIHByaXZhdGUgbWV0aG9kLgorICAgICAgICBHaXZlbiB0aGlzIGNoYW5nZSwgd2UgY2hh
bmdlZCB0aGUgbmFtZSBvZiBWYXJpYWJsZUVudmlyb25tZW50CisgICAgICAgIGZyb20gYHBhcmVu
dFNjb3BlVERaVmFyaWFibGVzYCB0byBgcGFyZW50U2NvcGVWYXJpYWJsZUVudmlyb25tZW50YC4K
KworICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aW5zdGFudGlhdGVMZXhpY2FsVmFy
aWFibGVzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRQcml2YXRl
TmFtZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlUHJpdmF0
ZUJyYW5kKToKKworICAgICAgICBUaGUgcHJvY2VzcyB0byBjcmVhdGUgYSBwcml2YXRlIGJyYW5k
IGlzIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAxLiBDcmVhdGUgYSBQcml2YXRlU3ltYm9sIHVz
aW5nIGBAY3JlYXRlUHJpdmF0ZVN5bWJvbGAuCisgICAgICAgICAgICAyLiBTdG9yZSB0aGlzIHN5
bWJvbCBpbnRvIGEgZ2l2ZW4gc2NvcGUgKGkuZSBjbGFzcyBsZXhpY2FsIHNjb3BlKQorICAgICAg
ICAgICAgICAgb24gYEBwcml2YXRlQnJhbmRgIHZhcmlhYmxlLgorCisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0SW5zdGFsbFByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0UHJpdmF0ZUJyYW5kKToKKworICAgICAgICBXZSBh
ZGRlZCBgbV9wcml2YXRlTmFtZXNTdGFja2AgdG8gQnl0ZWNvZGVHZW5lcmF0b3IgdG8gcmVwcmVz
ZW50IHRoZQorICAgICAgICBzY29wZSBjaGFpbiBvZiBhdmFpbGFibGUgcHJpdmF0ZSBuYW1lcyB3
aGlsZSBnZW5lcmF0aW5nIGJ5dGVjb2RlLgorCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0Q2hlY2tQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6aXNQcml2YXRlTWV0aG9kKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OnB1c2hQcml2YXRlQWNjZXNzTmFtZXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6cG9wUHJpdmF0ZUFjY2Vzc05hbWVzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmdldEF2YWlsYWJsZVByaXZhdGVBY2Nlc3NOYW1lcyk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjpnZXRWYXJpYWJsZXNVbmRlclREWik6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdJbnN0YW5jZUZpZWxkSW5pdGlhbGl6ZXJGdW5jdGlv
bik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0R2V0QnlWYWwp
OiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6bWFrZUZ1bmN0aW9uKToK
KworICAgICAgICBUaGlzIGNoYW5nZSBpcyByZXF1aXJlZCB0byBwcm9wZXJseSBwcm9wYWdhdGUg
UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQKKyAgICAgICAgdG8gYXJyb3cgZnVuY3Rpb25zIHRoYXQg
Y2FuIHBvdGVudGlhbGx5IGNhbGwgYHN1cGVyKClgLgorCisgICAgICAgICogYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlzdE5vZGU6OmVtaXRE
ZWNsYXJlUHJpdmF0ZUZpZWxkTmFtZXMpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2Rl
OjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0
Q29uc3RhbnRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjplbWl0R2V0UHJv
cGVydHlWYWx1ZSk6CisKKyAgICAgICAgQWRkaW5nIHN1cHBvcnQgdG8gcHJvcGVybHkgYWNjZXNz
IHByaXZhdGUgbWV0aG9kLiBTaW5jZSB3ZSBzdG9yZQorICAgICAgICBwcml2YXRlIG1ldGhvZHMg
b24gY2xhc3MgbGV4aWNhbCBzY29wZSwgd2UgbmVlZCBhIGRpZmZlcmVudCBzZXQgb2YKKyAgICAg
ICAgaW5zdHJ1Y3Rpb25zIHRvIGFjY2VzcyBhIHByaXZhdGUgbWV0aG9kLgorCisgICAgICAgIChK
U0M6OkJhc2VEb3ROb2RlOjplbWl0UHV0UHJvcGVydHkpOgorCisgICAgICAgIEluIHRoZSBjYXNl
IG9mIHdlIHRyeWluZyB0byB3cml0ZSBpbiBhIHByaXZhdGUgbWV0aG9kLCB3ZSBuZWVkIHRvCisg
ICAgICAgIHRocm93IGEgVHlwZUVycm9yIGFjY29yZGluZyB0byBzcGVjaWZpY2F0aW9uCisgICAg
ICAgIChodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtcHJpdmF0ZS1tZXRob2RzLyNzZWMtcHJpdmF0
ZWZpZWxkc2V0KS4KKworICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OmVtaXRC
eXRlY29kZSk6CisgICAgICAgIChKU0M6OlBvc3RmaXhOb2RlOjplbWl0RG90KToKKyAgICAgICAg
KEpTQzo6UHJlZml4Tm9kZTo6ZW1pdERvdCk6CisgICAgICAgIChKU0M6OkNsYXNzRXhwck5vZGU6
OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3Bw
OgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZTo6ZXZhbHVhdGVXaXRoU2NvcGVFeHRl
bnNpb24pOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6ZXZhbCk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6
RnVuY3Rpb25NZXRhZGF0YU5vZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKToKKyAgICAgICAgKiBw
YXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpT
Qzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MpOgorICAgICAgICAqIHBhcnNlci9QYXJz
ZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OmRlY2xhcmVQcml2YXRlTWV0aG9kKToKKyAgICAg
ICAgKEpTQzo6U2NvcGU6OmRlY2xhcmVQcml2YXRlRmllbGQpOgorICAgICAgICAoSlNDOjpTY29w
ZTo6ZGVjbGFyZVByaXZhdGVOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYXJzZXIvUGFyc2Vy
TW9kZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHA6CisgICAg
ICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlTWV0aG9kKToKKyAg
ICAgICAgKEpTQzo6Q29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQ6OkNvbXBhY3RWYXJpYWJsZUVu
dmlyb25tZW50KToKKyAgICAgICAgKEpTQzo6Q29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQ6Om9w
ZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVu
dDo6dG9WYXJpYWJsZUVudmlyb25tZW50IGNvbnN0KToKKyAgICAgICAgKiBwYXJzZXIvVmFyaWFi
bGVFbnZpcm9ubWVudC5oOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6
OmlzUHJpdmF0ZUZpZWxkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVu
dEVudHJ5Ojppc1ByaXZhdGVNZXRob2QgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVu
dmlyb25tZW50RW50cnk6OnNldElzUHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKEpTQzo6VmFyaWFi
bGVFbnZpcm9ubWVudEVudHJ5OjpzZXRJc1ByaXZhdGVNZXRob2QpOgorICAgICAgICAoSlNDOjpQ
cml2YXRlTmFtZUVudHJ5Ojppc01ldGhvZCBjb25zdCk6CisgICAgICAgIChKU0M6OlByaXZhdGVO
YW1lRW50cnk6OmlzUHJpdmF0ZUFjY2VzcyBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxl
RW52aXJvbm1lbnQ6OmFkZFByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZp
cm9ubWVudDo6ZGVjbGFyZVByaXZhdGVGaWVsZCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52
aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlTWV0aG9kKToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVF
bnZpcm9ubWVudDo6aGFzUHJpdmF0ZUFjY2VzcyBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlh
YmxlRW52aXJvbm1lbnRFbnRyeTo6aXNQcml2YXRlTmFtZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeTo6c2V0SXNQcml2YXRlTmFtZSk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRl
TmFtZSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9DYWNoZWRUeXBlcy5jcHA6CisgICAg
ICAgIChKU0M6OkNhY2hlZENvZGVCbG9ja1JhcmVEYXRhOjplbmNvZGUpOgorICAgICAgICAoSlND
OjpDYWNoZWRDb2RlQmxvY2tSYXJlRGF0YTo6ZGVjb2RlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
Q2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlUmFyZURhdGE6OmVuY29kZSk6CisgICAgICAgIChKU0M6
OkNhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZVJhcmVEYXRhOjpkZWNvZGUgY29uc3QpOgorICAgICAg
ICAoSlNDOjpDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnByaXZhdGVCcmFuZFJlcXVpcmVtZW50
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ29kZUJsb2NrOjpkZXJpdmVkQ29udGV4dFR5
cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmVuY29k
ZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkNhY2hlZENvZGVCbG9jazo6bmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUv
Q29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0lt
cGwpOgorICAgICAgICAoSlNDOjpDb2RlQ2FjaGU6OmdldFVubGlua2VkR2xvYmFsRnVuY3Rpb25F
eGVjdXRhYmxlKToKKyAgICAgICAgKiBydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6RGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OkRpcmVjdEV2YWxFeGVjdXRhYmxlOjpEaXJlY3RFdmFsRXhlY3V0YWJsZSk6CisgICAgICAg
ICogcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRXZh
bEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6RXZhbEV4ZWN1
dGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpT
Qzo6RXZhbEV4ZWN1dGFibGU6OmV4ZWN1dGFibGVJbmZvIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
RXZhbEV4ZWN1dGFibGU6OnByaXZhdGVCcmFuZFJlcXVpcmVtZW50IGNvbnN0KToKKyAgICAgICAg
KiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVJbnZh
bGlkUHJpdmF0ZU5hbWVFcnJvcik6CisgICAgICAgICogcnVudGltZS9JbmRpcmVjdEV2YWxFeGVj
dXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6SW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6SW5kaXJl
Y3RFdmFsRXhlY3V0YWJsZSk6CisgICAgICAgICogcnVudGltZS9KU1Njb3BlLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNTY29wZTo6Y29sbGVjdENsb3N1cmVWYXJpYWJsZXNVbmRlclREWik6CisgICAg
ICAgICogcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRp
bWUvT3B0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OnJlY29tcHV0ZURlcGVuZGVu
dE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaDoKKyAgICAgICAgKiBy
dW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9TeW1ib2xUYWJs
ZS5jcHA6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlOjpjbG9uZVNjb3BlUGFydCk6CisgICAg
ICAgICogcnVudGltZS9TeW1ib2xUYWJsZS5oOgorCiAyMDIxLTAxLTEwICBZdXN1a2UgU3V6dWtp
ICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gSklUQ2FnZSdzIEdhdGUgbWVj
aGFuaXNtIGlzIHVzZWQgaW4gQVJNNjRFIGV2ZW4gaWYgSklUQ2FnZSBpcyBkaXNhYmxlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMu
Y3BwCmluZGV4IDFhMjE0OTJhNjUxZS4uNjY0MTdjNDEzMjFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcApAQCAtNTks
NyArNTksNyBAQCBTb3VyY2VDb2RlIEJ1aWx0aW5FeGVjdXRhYmxlczo6ZGVmYXVsdENvbnN0cnVj
dG9yU291cmNlQ29kZShDb25zdHJ1Y3RvcktpbmQgY29ucwogICAgIHJldHVybiBTb3VyY2VDb2Rl
KCk7CiB9CiAKLVVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6
OmNyZWF0ZURlZmF1bHRDb25zdHJ1Y3RvcihDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5k
LCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplcikKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWls
dGluRXhlY3V0YWJsZXM6OmNyZWF0ZURlZmF1bHRDb25zdHJ1Y3RvcihDb25zdHJ1Y3RvcktpbmQg
Y29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWly
ZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpCiB7CiAgICAgc3dpdGNoIChjb25zdHJ1Y3Rv
cktpbmQpIHsKICAgICBjYXNlIENvbnN0cnVjdG9yS2luZDo6Tm9uZToKQEAgLTY3LDcgKzY3LDcg
QEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRl
RGVmYXVsdENvbnN0cnVjdG9yKENvbnN0cnUKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb25z
dHJ1Y3RvcktpbmQ6OkJhc2U6CiAgICAgY2FzZSBDb25zdHJ1Y3RvcktpbmQ6OkV4dGVuZHM6Ci0g
ICAgICAgIHJldHVybiBjcmVhdGVFeGVjdXRhYmxlKG1fdm0sIGRlZmF1bHRDb25zdHJ1Y3RvclNv
dXJjZUNvZGUoY29uc3RydWN0b3JLaW5kKSwgbmFtZSwgY29uc3RydWN0b3JLaW5kLCBDb25zdHJ1
Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3QsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsKKyAg
ICAgICAgcmV0dXJuIGNyZWF0ZUV4ZWN1dGFibGUobV92bSwgZGVmYXVsdENvbnN0cnVjdG9yU291
cmNlQ29kZShjb25zdHJ1Y3RvcktpbmQpLCBuYW1lLCBjb25zdHJ1Y3RvcktpbmQsIENvbnN0cnVj
dEFiaWxpdHk6OkNhbkNvbnN0cnVjdCwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZh
dGVCcmFuZFJlcXVpcmVtZW50KTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC03OCw3ICs3OCw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKGNvbnN0
IFNvCiAgICAgcmV0dXJuIGNyZWF0ZUV4ZWN1dGFibGUobV92bSwgY29kZSwgbmFtZSwgY29uc3Ry
dWN0b3JLaW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6
Tm8pOwogfQogCi1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVz
OjpjcmVhdGVFeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBjb25z
dCBJZGVudGlmaWVyJiBuYW1lLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBDb25z
dHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
IG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKQorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgQ29uc3RydWN0b3JLaW5kIGNv
bnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBOZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpCiB7CiAgICAgLy8gRklYTUU6
IENhbiB3ZSBqdXN0IG1ha2UgTWV0YURhdGEgY29tcHV0YXRpb24gYmUgY29uc3RleHByIGFuZCBo
YXZlIHRoZSBjb21waWxlciBkbyB0aGlzIGZvciB1cz8KICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzMjcyCkBAIC0yNTEsNyArMjUxLDcgQEAgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJs
ZShWTSYgdm0sIGNvbnN0IFMKICAgICAgICAgfQogICAgIH0KIAotICAgIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZTo6Y3JlYXRlKHZtLCBzb3VyY2UsICZtZXRhZGF0YSwga2luZCwgY29uc3RydWN0QWJpbGl0
eSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBudWxscHRyLCBEZXJpdmVkQ29udGV4dFR5
cGU6Ok5vbmUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBpc0J1aWx0aW5EZWZhdWx0Q2xh
c3NDb25zdHJ1Y3Rvcik7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9u
RXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUodm0sIHNvdXJj
ZSwgJm1ldGFkYXRhLCBraW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGU6
OkNsYXNzaWMsIG51bGxwdHIsIFdURjo6bnVsbG9wdCwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25l
LCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGlz
QnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKTsKICAgICByZXR1cm4gZnVuY3Rpb25FeGVj
dXRhYmxlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
QnVpbHRpbkV4ZWN1dGFibGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVp
bHRpbkV4ZWN1dGFibGVzLmgKaW5kZXggNDUxNjM4ZTg3M2Y3Li40M2UzODI3NWIxYjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVz
LmgKQEAgLTU4LDkgKzU4LDkgQEAgU291cmNlQ29kZSBuYW1lIyNTb3VyY2UoKTsKICN1bmRlZiBF
WFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUwogCiAgICAgc3RhdGljIFNvdXJjZUNvZGUgZGVmYXVs
dENvbnN0cnVjdG9yU291cmNlQ29kZShDb25zdHJ1Y3RvcktpbmQpOwotICAgIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoQ29uc3RydWN0b3JLaW5k
LCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcik7Cisg
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZURlZmF1bHRDb25zdHJ1Y3RvcihD
b25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7CiAKLSAgICBzdGF0aWMgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUV4ZWN1dGFibGUoVk0mLCBjb25zdCBTb3VyY2VD
b2RlJiwgY29uc3QgSWRlbnRpZmllciYsIENvbnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJpbGl0
eSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpOworICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogY3JlYXRlRXhlY3V0YWJsZShWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBj
b25zdCBJZGVudGlmaWVyJiwgQ29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBOZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBQcml2YXRl
QnJhbmRSZXF1aXJlbWVudDo6Tm9uZSk7CiAKICAgICB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25h
bGx5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWls
dGluTmFtZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMu
aAppbmRleCBhZDQ5OGM3YjNhZGQuLjQ0ODM4OTkxNzhjNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaApAQCAtMTczLDYgKzE3Myw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIG1hY3JvKHdlYkFzc2VtYmx5Q29tcGlsZVN0cmVhbWluZ0ludGVybmFs
KSBcCiAgICAgbWFjcm8od2ViQXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVhbWluZ0ludGVybmFsKSBc
CiAgICAgbWFjcm8oaW5zdGFuY2VGaWVsZEluaXRpYWxpemVyKSBcCisgICAgbWFjcm8ocHJpdmF0
ZUJyYW5kKSBcCiAgICAgbWFjcm8oaGFzT3duUHJvcGVydHlGdW5jdGlvbikgXAogICAgIG1hY3Jv
KGNyZWF0ZVByaXZhdGVTeW1ib2wpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IDE1NjE5ZDNhNDhhMS4uMzUwZmNiZWI1M2NhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTU4
OCw2ICs1ODgsMjcgQEAgb3AgOnB1dF9wcml2YXRlX25hbWUsCiAgICAgICAgIG5ld1N0cnVjdHVy
ZUlEOiBTdHJ1Y3R1cmVJRCwKICAgICB9CiAKK29wIDpzZXRfcHJpdmF0ZV9icmFuZCwKKyAgICBh
cmdzOiB7CisgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgYnJhbmQ6IFZp
cnR1YWxSZWdpc3RlciwKKyAgICB9LAorICAgIG1ldGFkYXRhOiB7CisgICAgICAgIG9sZFN0cnVj
dHVyZUlEOiBTdHJ1Y3R1cmVJRCwKKyAgICAgICAgbmV3U3RydWN0dXJlSUQ6IFN0cnVjdHVyZUlE
LAorICAgICAgICBicmFuZDogV3JpdGVCYXJyaWVyW0pTQ2VsbF0sCisgICAgfQorCitvcCA6Y2hl
Y2tfcHJpdmF0ZV9icmFuZCwKKyAgICBhcmdzOiB7CisgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdp
c3RlciwKKyAgICAgICAgYnJhbmQ6IFZpcnR1YWxSZWdpc3RlciwKKyAgICB9LAorICAgIG1ldGFk
YXRhOiB7CisgICAgICAgIHN0cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJRCwKKyAgICB9CisgICAgCisK
IG9wIDpwdXRfYnlfdmFsLAogICAgIGFyZ3M6IHsKICAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lz
dGVyLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
VXNlRGVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURl
Zi5jcHAKaW5kZXggYjI2OThkODc4ZTRhLi40MjVhZjI1YjgwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcApAQCAtMjI5LDYgKzIy
OSw4IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChWaXJ0dWFsUmVnaXN0
ZXIgc2NvcGVSZWdpc3RlciwgY29uc3QgSW5zdHJ1CiAgICAgVVNFUyhPcEdldEJ5VmFsLCBiYXNl
LCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wR2V0UHJpdmF0ZU5hbWUsIGJhc2UsIHByb3BlcnR5KQog
ICAgIFVTRVMoT3BQdXRQcml2YXRlTmFtZSwgYmFzZSwgcHJvcGVydHksIHZhbHVlKQorICAgIFVT
RVMoT3BTZXRQcml2YXRlQnJhbmQsIGJhc2UsIGJyYW5kKQorICAgIFVTRVMoT3BDaGVja1ByaXZh
dGVCcmFuZCwgYmFzZSwgYnJhbmQpCiAgICAgVVNFUyhPcEluQnlWYWwsIGJhc2UsIHByb3BlcnR5
KQogICAgIFVTRVMoT3BPdmVycmlkZXNIYXNJbnN0YW5jZSwgY29uc3RydWN0b3IsIGhhc0luc3Rh
bmNlVmFsdWUpCiAgICAgVVNFUyhPcEluc3RhbmNlb2YsIHZhbHVlLCBwcm90b3R5cGUpCkBAIC0z
OTcsNiArMzk5LDggQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKHVuc2ln
bmVkIG51bVZhcnMsIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnUKICAgICBjYXNlIG9wX3B1dF9i
eV92YWw6CiAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKICAgICBjYXNlIG9wX3B1dF9w
cml2YXRlX25hbWU6CisgICAgY2FzZSBvcF9zZXRfcHJpdmF0ZV9icmFuZDoKKyAgICBjYXNlIG9w
X2NoZWNrX3ByaXZhdGVfYnJhbmQ6CiAgICAgY2FzZSBvcF9wdXRfaW50ZXJuYWxfZmllbGQ6CiAg
ICAgY2FzZSBvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eToKICAgICBjYXNlIG9wX2RlZmluZV9hY2Nl
c3Nvcl9wcm9wZXJ0eToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKaW5kZXggYWYyYWM0YzkxYmI3Li5jNDIyYWM1ZWIyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC01NDQsNiArNTQ0LDkgQEAgYm9v
bCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3du
ZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgTElOSyhPcFB1dEJ5VmFsRGlyZWN0KQogICAg
ICAgICBMSU5LKE9wUHV0UHJpdmF0ZU5hbWUpCiAKKyAgICAgICAgTElOSyhPcFNldFByaXZhdGVC
cmFuZCkKKyAgICAgICAgTElOSyhPcENoZWNrUHJpdmF0ZUJyYW5kKQorCiAgICAgICAgIExJTkso
T3BOZXdBcnJheSkKICAgICAgICAgTElOSyhPcE5ld0FycmF5V2l0aFNpemUpCiAgICAgICAgIExJ
TksoT3BOZXdBcnJheUJ1ZmZlciwgYXJyYXlBbGxvY2F0aW9uUHJvZmlsZSkKQEAgLTEzMzgsNiAr
MTM0MSwzMCBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygpCiAg
ICAgICAgICAgICBtZXRhZGF0YS5tX3Byb3BlcnR5LmNsZWFyKCk7CiAgICAgICAgIH0pOwogCisg
ICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BTZXRQcml2YXRlQnJhbmQ+KFsmXSAoYXV0byYg
bWV0YWRhdGEpIHsKKyAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0
YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIFN0cnVjdHVyZUlEIG5ld1N0cnVj
dHVyZUlEID0gbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIEpTQ2VsbCog
YnJhbmQgPSBtZXRhZGF0YS5tX2JyYW5kLmdldCgpOworICAgICAgICAgICAgaWYgKCghb2xkU3Ry
dWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5n
ZXQob2xkU3RydWN0dXJlSUQpKSkKKyAgICAgICAgICAgICAgICAmJiAoIWJyYW5kIHx8IHZtLmhl
YXAuaXNNYXJrZWQoYnJhbmQpKQorICAgICAgICAgICAgICAgICYmICghbmV3U3RydWN0dXJlSUQg
fHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobmV3U3Ry
dWN0dXJlSUQpKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBkYXRh
TG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJDbGVhcmluZyBMTEludCBzZXRfcHJpdmF0
ZV9icmFuZCB0cmFuc2l0aW9uLiIpOworICAgICAgICAgICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1
cmVJRCA9IDA7CisgICAgICAgICAgICBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEID0gMDsKKyAg
ICAgICAgICAgIG1ldGFkYXRhLm1fYnJhbmQuY2xlYXIoKTsKKyAgICAgICAgfSk7CisKKyAgICAg
ICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcENoZWNrUHJpdmF0ZUJyYW5kPihbJl0gKGF1dG8mIG1l
dGFkYXRhKSB7CisgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCA9IG1ldGFkYXRh
Lm1fc3RydWN0dXJlSUQ7CisgICAgICAgICAgICBpZiAoIXN0cnVjdHVyZUlEIHx8IHZtLmhlYXAu
aXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KHN0cnVjdHVyZUlEKSkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25z
Ojp2ZXJib3NlT1NSKCksICJDbGVhcmluZyBMTEludCBzZXRfcHJpdmF0ZV9icmFuZCB0cmFuc2l0
aW9uLiIpOworICAgICAgICAgICAgbWV0YWRhdGEubV9zdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAg
IH0pOworCiAgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BUb1RoaXM+KFsmXSAoYXV0byYg
bWV0YWRhdGEpIHsKICAgICAgICAgICAgIGlmICghbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJ
RCB8fCB2bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChtZXRh
ZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAppbmRleCA0
OWVkZDUyODVkNWMuLmNkNTlmYjRhNzMzZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKQEAgLTM2LDkgKzM2LDEwIEBAIGVudW0gY2xhc3Mg
TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgOiB1aW50OF90IHsgTm8sIFllcyB9OwogLy8gRklY
TUU6IFRoZXNlIGZsYWdzLCBQYXJzZXJNb2RlcyBhbmQgcHJvcGFnYXRpb24gdG8gWFhYQ29kZUJs
b2NrcyBzaG91bGQgYmUgcmVvcmdhbml6ZWQuCiAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTUxNTQ3CiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1
dGFibGVJbmZvKGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0
aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgSlNQYXJzZXJTY3Jp
cHRNb2RlIHNjcmlwdE1vZGUsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIFNvdXJjZVBhcnNl
TW9kZSBwYXJzZU1vZGUsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29s
IGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNDbGFzc0NvbnRleHQsIEV2YWxDb250ZXh0
VHlwZSBldmFsQ29udGV4dFR5cGUpCisgICAgRXhlY3V0YWJsZUluZm8oYm9vbCB1c2VzRXZhbCwg
Ym9vbCBpc0NvbnN0cnVjdG9yLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRS
ZXF1aXJlbWVudCwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JLaW5kIGNvbnN0
cnVjdG9yS2luZCwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIFN1cGVyQmluZGluZyBz
dXBlckJpbmRpbmcsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIERlcml2ZWRDb250ZXh0VHlw
ZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXND
bGFzc0NvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUpCiAgICAgICAgIDog
bV91c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzQ29uc3RydWN0b3IoaXNDb25zdHJ1
Y3RvcikKKyAgICAgICAgLCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50KHN0YXRpY19jYXN0PHVu
c2lnbmVkPihwcml2YXRlQnJhbmRSZXF1aXJlbWVudCkpCiAgICAgICAgICwgbV9pc0J1aWx0aW5G
dW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikKICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkKICAgICAgICAgLCBtX3N1cGVy
QmluZGluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3VwZXJCaW5kaW5nKSkKQEAgLTU3LDYgKzU4
LDcgQEAgc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKIAogICAgIGJvb2wgdXNlc0V2YWwoKSBjb25z
dCB7IHJldHVybiBtX3VzZXNFdmFsOyB9CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0NvbnN0cnVjdG9yOyB9CisgICAgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQg
cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxQcml2
YXRlQnJhbmRSZXF1aXJlbWVudD4obV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7IH0KICAgICBi
b29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlv
bjsgfQogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQogICAg
IFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxT
dXBlckJpbmRpbmc+KG1fc3VwZXJCaW5kaW5nKTsgfQpAQCAtNzEsNiArNzMsNyBAQCBzdHJ1Y3Qg
RXhlY3V0YWJsZUluZm8gewogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX3VzZXNFdmFsIDogMTsK
ICAgICB1bnNpZ25lZCBtX2lzQ29uc3RydWN0b3IgOiAxOworICAgIHVuc2lnbmVkIG1fcHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQgOiAxOwogICAgIHVuc2lnbmVkIG1faXNCdWlsdGluRnVuY3Rpb24g
OiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKICAgICB1bnNpZ25lZCBt
X3N1cGVyQmluZGluZyA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCBiM2FkYzBiNzdlYjcuLjkzZGZmNzc0MmQz
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suY3BwCkBAIC02OSw2ICs2OSwxMCBAQCBVbmxpbmtlZENvZGVCbG9jazo6VW5saW5r
ZWRDb2RlQmxvY2soVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29kZVR5cGUgY29kZQog
ICAgICAgICBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KGhvbGRMb2NrKGNlbGxMb2NrKCkpKTsK
ICAgICAgICAgbV9yYXJlRGF0YS0+bV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6WWVzKTsKICAgICB9
CisgICAgaWYgKGluZm8ucHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSA9PSBQcml2YXRlQnJhbmRS
ZXF1aXJlbWVudDo6TmVlZGVkKSB7CisgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3Nhcnko
aG9sZExvY2soY2VsbExvY2soKSkpOworICAgICAgICBtX3JhcmVEYXRhLT5tX3ByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByaXZhdGVCcmFuZFJlcXVpcmVt
ZW50OjpOZWVkZWQpOworICAgIH0KIH0KIAogdm9pZCBVbmxpbmtlZENvZGVCbG9jazo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCAwMGRj
NjE2MzM1ZmQuLjFmNTFlY2U1ZDZmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTI2Niw2ICsyNjYsMTMgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vOwogICAgIH0K
IAorICAgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkg
Y29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX3JhcmVEYXRhKQorICAgICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PFByaXZhdGVCcmFuZFJlcXVpcmVtZW50PihtX3JhcmVEYXRhLT5tX3ByaXZh
dGVCcmFuZFJlcXVpcmVtZW50KTsKKyAgICAgICAgcmV0dXJuIFByaXZhdGVCcmFuZFJlcXVpcmVt
ZW50OjpOb25lOworICAgIH0KKwogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0Owog
CiAgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBsaXZlbmVzc0FuYWx5c2lzKENvZGVCbG9j
ayogY29kZUJsb2NrKQpAQCAtNDA3LDYgKzQxNCw3IEBAIHB1YmxpYzoKICAgICAgICAgUmVmQ291
bnRlZEFycmF5PENvbnN0YW50SWRlbnRpZmllclNldEVudHJ5PiBtX2NvbnN0YW50SWRlbnRpZmll
clNldHM7CiAKICAgICAgICAgdW5zaWduZWQgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA6
IDE7CisgICAgICAgIHVuc2lnbmVkIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgOiAxOwogICAg
IH07CiAKICAgICBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNldChJbnN0cnVjdGlvblN0cmVhbTo6T2Zm
c2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9ja0dlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmgKaW5kZXggMmViOTg0YzFiMDVhLi45NGM2ODcwZTk5
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9ja0dlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5oCkBAIC01MCw2ICs1MCw3IEBAIHB1YmxpYzoKICAg
ICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2st
PnN1cGVyQmluZGluZygpOyB9CiAgICAgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUoKSBj
b25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+c2NyaXB0TW9kZSgpOyB9CiAgICAgTmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSBjb25zdCB7IHJl
dHVybiBtX2NvZGVCbG9jay0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKTsgfQorICAgIFBy
aXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9jb2RlQmxvY2stPnByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCk7IH0KICAgICBib29s
IHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnVzZXNFdmFsKCk7IH0KICAg
ICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2st
PnBhcnNlTW9kZSgpOyB9CiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSB7IHJldHVybiBtX2Nv
ZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9uKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCmlu
ZGV4IDAzYmQwNThmMzAxNy4uNTFkYTg1ODRlYWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5j
cHAKQEAgLTcwLDExICs3MCwxMiBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayog
Z2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogCiAgICAgYm9vbCBpc0NsYXNzQ29u
dGV4dCA9IGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpID09IFN1cGVyQmluZGluZzo6TmVlZGVk
OwogCi0gICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jazo6Y3JlYXRlKHZtLCBGdW5jdGlvbkNvZGUsIEV4ZWN1dGFibGVJbmZvKGZ1
bmN0aW9uLT51c2VzRXZhbCgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0aW9uS2lu
ZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwgZXhlY3V0YWJsZS0+Y29uc3RydWN0b3JLaW5k
KCksIHNjcmlwdE1vZGUsIGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpLCBwYXJzZU1vZGUsIGV4
ZWN1dGFibGUtPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBleGVjdXRhYmxlLT5uZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplcigpLCBmYWxzZSwgaXNDbGFzc0NvbnRleHQsIEV2YWxDb250ZXh0VHlwZTo6
RnVuY3Rpb25FdmFsQ29udGV4dCksIGNvZGVHZW5lcmF0aW9uTW9kZSk7CisgICAgVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3Jl
YXRlKHZtLCBGdW5jdGlvbkNvZGUsIEV4ZWN1dGFibGVJbmZvKGZ1bmN0aW9uLT51c2VzRXZhbCgp
LCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGV4ZWN1dGFibGUtPnByaXZhdGVCcmFuZFJlcXVp
cmVtZW50KCksIGZ1bmN0aW9uS2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwgZXhlY3V0
YWJsZS0+Y29uc3RydWN0b3JLaW5kKCksIHNjcmlwdE1vZGUsIGV4ZWN1dGFibGUtPnN1cGVyQmlu
ZGluZygpLCBwYXJzZU1vZGUsIGV4ZWN1dGFibGUtPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBleGVj
dXRhYmxlLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBmYWxzZSwgaXNDbGFzc0NvbnRl
eHQsIEV2YWxDb250ZXh0VHlwZTo6RnVuY3Rpb25FdmFsQ29udGV4dCksIGNvZGVHZW5lcmF0aW9u
TW9kZSk7CiAKICAgICBhdXRvIHBhcmVudFNjb3BlVERaVmFyaWFibGVzID0gZXhlY3V0YWJsZS0+
cGFyZW50U2NvcGVURFpWYXJpYWJsZXMoKTsKKyAgICBQcml2YXRlTmFtZUVudmlyb25tZW50IHBh
cmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQgPSBleGVjdXRhYmxlLT5wYXJlbnRQcml2YXRlTmFt
ZUVudmlyb25tZW50KCk7CiAgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBleGVjdXRhYmxlLT5pc0lu
U3RyaWN0Q29udGV4dCgpID8gRUNNQU1vZGU6OnN0cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgp
OwotICAgIGVycm9yID0gQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKHZtLCBmdW5jdGlvbi5n
ZXQoKSwgc291cmNlLCByZXN1bHQsIGNvZGVHZW5lcmF0aW9uTW9kZSwgcGFyZW50U2NvcGVURFpW
YXJpYWJsZXMsIGVjbWFNb2RlKTsKKyAgICBlcnJvciA9IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5l
cmF0ZSh2bSwgZnVuY3Rpb24uZ2V0KCksIHNvdXJjZSwgcmVzdWx0LCBjb2RlR2VuZXJhdGlvbk1v
ZGUsIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCAmcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVu
dCwgZWNtYU1vZGUpOwogCiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC04Miw3ICs4Myw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHBh
cmVudFNvdXJjZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25L
aW5kIGtpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3Jp
cHRNb2RlIHNjcmlwdE1vZGUsIFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+IHBhcmVudFNjb3Bl
VERaVmFyaWFibGVzLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBp
c0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvcikKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBwYXJlbnRTb3VyY2UsIEZ1bmN0aW9uTWV0YWRhdGFOb2Rl
KiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBraW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0
cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBSZWZQdHI8VERaRW52
aXJvbm1lbnRMaW5rPiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgT3B0aW9uYWw8UHJpdmF0ZU5h
bWVFbnZpcm9ubWVudD4gcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgRGVyaXZlZENvbnRl
eHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVC
cmFuZFJlcXVpcmVtZW50LCBib29sIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKQog
ICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQogICAgICwgbV9maXJzdExpbmVPZmZzZXQobm9kZS0+
Zmlyc3RMaW5lKCkgLSBwYXJlbnRTb3VyY2UuZmlyc3RMaW5lKCkub25lQmFzZWRJbnQoKSkKICAg
ICAsIG1faXNJblN0cmljdENvbnRleHQobm9kZS0+aXNJblN0cmljdENvbnRleHQoKSkKQEAgLTEw
Myw2ICsxMDQsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdAogICAgICwgbV90eXBlUHJvZmls
aW5nU3RhcnRPZmZzZXQobm9kZS0+ZnVuY3Rpb25LZXl3b3JkU3RhcnQoKSkKICAgICAsIG1fdHlw
ZVByb2ZpbGluZ0VuZE9mZnNldChub2RlLT5zdGFydFN0YXJ0T2Zmc2V0KCkgKyBub2RlLT5zb3Vy
Y2UoKS5sZW5ndGgoKSAtIDEpCiAgICAgLCBtX3BhcmFtZXRlckNvdW50KG5vZGUtPnBhcmFtZXRl
ckNvdW50KCkpCisgICAgLCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50KHN0YXRpY19jYXN0PHVu
c2lnbmVkPihwcml2YXRlQnJhbmRSZXF1aXJlbWVudCkpCiAgICAgLCBtX2ZlYXR1cmVzKDApCiAg
ICAgLCBtX3NvdXJjZVBhcnNlTW9kZShub2RlLT5wYXJzZU1vZGUoKSkKICAgICAsIG1fY29uc3Ry
dWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihub2RlLT5jb25zdHJ1Y3RvcktpbmQoKSkp
CkBAIC0xMjIsMTIgKzEyNCwxNSBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdAogICAgIEFTU0VS
VChtX3NjcmlwdE1vZGUgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNjcmlwdE1vZGUpKTsKICAg
ICBBU1NFUlQobV9zdXBlckJpbmRpbmcgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPnN1
cGVyQmluZGluZygpKSk7CiAgICAgQVNTRVJUKG1fZGVyaXZlZENvbnRleHRUeXBlID09IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihkZXJpdmVkQ29udGV4dFR5cGUpKTsKKyAgICBBU1NFUlQobV9wcml2
YXRlQnJhbmRSZXF1aXJlbWVudCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQpKTsKICAgICBBU1NFUlQoIShtX2lzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0
cnVjdG9yICYmIGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSkpOwog
ICAgIEFTU0VSVCghbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciB8fCAoaXNDbGFzc0NvbnN0
cnVjdG9yRnVuY3Rpb24oKSB8fCBkZXJpdmVkQ29udGV4dFR5cGUgPT0gRGVyaXZlZENvbnRleHRU
eXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KSk7CiAgICAgaWYgKCFub2RlLT5jbGFzc1Nv
dXJjZSgpLmlzTnVsbCgpKQogICAgICAgICBzZXRDbGFzc1NvdXJjZShub2RlLT5jbGFzc1NvdXJj
ZSgpKTsKICAgICBpZiAocGFyZW50U2NvcGVURFpWYXJpYWJsZXMpCiAgICAgICAgIGVuc3VyZVJh
cmVEYXRhKCkubV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcyA9IFdURk1vdmUocGFyZW50U2NvcGVU
RFpWYXJpYWJsZXMpOworICAgIGlmIChwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50KQorICAg
ICAgICBlbnN1cmVSYXJlRGF0YSgpLm1fcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCA9IFdU
Rk1vdmUoKnBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQpOwogfQogCiBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6flVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlLmgKaW5kZXggYmVhZjFlNWQ1YmU4Li5mYjdkYmE5ZWZiNGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5oCkBAIC03MCwxMCArNzAsMTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gJnZt
LnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc3BhY2U7CiAgICAgfQogCi0gICAgc3Rh
dGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0mIHZtLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0
aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RB
YmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgUmVmUHRyPFREWkVudmlyb25t
ZW50TGluaz4gcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJp
dmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyLCBib29sIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yID0gZmFs
c2UpCisgICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0mIHZt
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBV
bmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0
eSBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgUmVmUHRy
PFREWkVudmlyb25tZW50TGluaz4gcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIE9wdGlvbmFsPFBy
aXZhdGVOYW1lRW52aXJvbm1lbnQ+IHBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQsIERlcml2
ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBw
cml2YXRlQnJhbmRSZXF1aXJlbWVudCwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1
Y3RvciA9IGZhbHNlKQogICAgIHsKICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU+KHZtLmhlYXApKQotICAgICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUodm0sIHZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBzb3Vy
Y2UsIG5vZGUsIHVubGlua2VkRnVuY3Rpb25LaW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBzY3JpcHRN
b2RlLCBXVEZNb3ZlKHBhcmVudFNjb3BlVERaVmFyaWFibGVzKSwgZGVyaXZlZENvbnRleHRUeXBl
LCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3Ry
dWN0b3IpOworICAgICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHZtLnVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBzb3VyY2UsIG5vZGUsIHVu
bGlua2VkRnVuY3Rpb25LaW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBzY3JpcHRNb2RlLCBXVEZNb3Zl
KHBhcmVudFNjb3BlVERaVmFyaWFibGVzKSwgV1RGTW92ZShwYXJlbnRQcml2YXRlTmFtZUVudmly
b25tZW50KSwgZGVyaXZlZENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwg
cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9y
KTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJu
IGluc3RhbmNlOwogICAgIH0KQEAgLTE0Myw2ICsxNDMsOCBAQCBwdWJsaWM6CiAgICAgQ29kZUZl
YXR1cmVzIGZlYXR1cmVzKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlczsgfQogICAgIGJvb2wg
aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX2hhc0NhcHR1cmVkVmFyaWFi
bGVzOyB9CiAKKyAgICBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFByaXZhdGVCcmFuZFJlcXVpcmVtZW50
PihtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50KTsgfQorCiAgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlND
ZWxsKik7CiAKQEAgLTE3NCw2ICsxNzYsMTMgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX3BhcmVudFNjb3BlVERaVmFy
aWFibGVzOwogICAgIH0KKworICAgIFByaXZhdGVOYW1lRW52aXJvbm1lbnQgcGFyZW50UHJpdmF0
ZU5hbWVFbnZpcm9ubWVudCgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIW1fcmFyZURhdGEp
CisgICAgICAgICAgICByZXR1cm4gUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCgpOworICAgICAgICBy
ZXR1cm4gbV9yYXJlRGF0YS0+bV9wYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50OworICAgIH0K
ICAgICAKICAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGlzQXJyb3dG
dW5jdGlvblBhcnNlTW9kZShwYXJzZU1vZGUoKSk7IH0KIApAQCAtMjEwLDYgKzIxOSw3IEBAIHB1
YmxpYzoKICAgICAgICAgU3RyaW5nIG1fc291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZTsKICAgICAg
ICAgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4gbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlczsK
ICAgICAgICAgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiBtX2NsYXNzRmllbGRMb2NhdGlvbnM7Cisg
ICAgICAgIFByaXZhdGVOYW1lRW52aXJvbm1lbnQgbV9wYXJlbnRQcml2YXRlTmFtZUVudmlyb25t
ZW50OwogICAgIH07CiAKICAgICBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplcigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE5lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyPihtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsgfQpAQCAtMjI5
LDcgKzIzOSw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUoVk0mLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgRnVuY3Rp
b25NZXRhZGF0YU5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSwg
SlNQYXJzZXJTY3JpcHRNb2RlLCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiwgIEpTQzo6RGVy
aXZlZENvbnRleHRUeXBlLCBKU0M6Ok5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlz
QnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZShWTSYsIFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBGdW5jdGlvbk1ldGFk
YXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNl
clNjcmlwdE1vZGUsIFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+LCBPcHRpb25hbDxQcml2YXRl
TmFtZUVudmlyb25tZW50PiwgSlNDOjpEZXJpdmVkQ29udGV4dFR5cGUsIEpTQzo6TmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29sIGlzQnVpbHRp
bkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKTsKICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZShEZWNvZGVyJiwgY29uc3QgQ2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlJik7CiAKICAgICBzdGF0
aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CkBAIC0yNjEsNyAr
MjcxLDggQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2lzQ2FjaGVkIDogMTsKICAgICB1bnNp
Z25lZCBtX3R5cGVQcm9maWxpbmdTdGFydE9mZnNldDsKICAgICB1bnNpZ25lZCBtX3R5cGVQcm9m
aWxpbmdFbmRPZmZzZXQ7Ci0gICAgdW5zaWduZWQgbV9wYXJhbWV0ZXJDb3VudDsKKyAgICB1bnNp
Z25lZCBtX3BhcmFtZXRlckNvdW50IDogMzE7CisgICAgdW5zaWduZWQgbV9wcml2YXRlQnJhbmRS
ZXF1aXJlbWVudCA6IDE7CiAgICAgQ29kZUZlYXR1cmVzIG1fZmVhdHVyZXM7CiAgICAgU291cmNl
UGFyc2VNb2RlIG1fc291cmNlUGFyc2VNb2RlOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JL
aW5kIDogMjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNjE3Y2EwY2JjNTViLi40ZTU3MTllZjgyNTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yODksNyArMjg5LDcgQEAgUGFyc2VyRXJyb3IgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICByZXR1cm4gUGFyc2VyRXJyb3IoUGFyc2VyRXJy
b3I6OkVycm9yTm9uZSk7CiB9CiAKLUJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRv
cihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5saW5rZWRQcm9ncmFtQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0
aW9uTW9kZSwgY29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4mIHBhcmVudFNjb3BlVERa
VmFyaWFibGVzLCBFQ01BTW9kZSBlY21hTW9kZSkKK0J5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29k
ZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5saW5rZWRQcm9n
cmFtQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNv
ZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4mIHBhcmVu
dFNjb3BlVERaVmFyaWFibGVzLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiwgRUNNQU1v
ZGUgZWNtYU1vZGUpCiAgICAgOiBCeXRlY29kZUdlbmVyYXRvckJhc2UobWFrZVVuaXF1ZTxVbmxp
bmtlZENvZGVCbG9ja0dlbmVyYXRvcj4odm0sIGNvZGVCbG9jayksIENvZGVCbG9jazo6bGxpbnRC
YXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKQogICAgICwgbV9jb2Rl
R2VuZXJhdGlvbk1vZGUoY29kZUdlbmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5vZGUocHJv
Z3JhbU5vZGUpCkBAIC0zMzYsNyArMzM2LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2Rl
R2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxpbmtlZFAKICAg
ICB9CiB9CiAKLUJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1
bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwg
Y29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4mIHBhcmVudFNjb3BlVERaVmFyaWFibGVz
LCBFQ01BTW9kZSBlY21hTW9kZSkKK0J5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRv
cihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5l
cmF0aW9uTW9kZSwgY29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4mIHBhcmVudFNjb3Bl
VERaVmFyaWFibGVzLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiBwYXJlbnRQcml2YXRl
TmFtZUVudmlyb25tZW50LCBFQ01BTW9kZSBlY21hTW9kZSkKICAgICA6IEJ5dGVjb2RlR2VuZXJh
dG9yQmFzZShtYWtlVW5pcXVlPFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yPih2bSwgY29kZUJs
b2NrKSwgQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVn
aXN0ZXJzKCkpCiAgICAgLCBtX2NvZGVHZW5lcmF0aW9uTW9kZShjb2RlR2VuZXJhdGlvbk1vZGUp
CiAgICAgLCBtX3Njb3BlTm9kZShmdW5jdGlvbk5vZGUpCkBAIC0zNTksNiArMzU5LDggQEAgQnl0
ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBm
dW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCiAgICAgLCBt
X2Rlcml2ZWRDb250ZXh0VHlwZShjb2RlQmxvY2stPmRlcml2ZWRDb250ZXh0VHlwZSgpKQogewor
ICAgIHB1c2hQcml2YXRlQWNjZXNzTmFtZXMocGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCk7
CisKICAgICBTeW1ib2xUYWJsZSogZnVuY3Rpb25TeW1ib2xUYWJsZSA9IFN5bWJvbFRhYmxlOjpj
cmVhdGUobV92bSk7CiAgICAgZnVuY3Rpb25TeW1ib2xUYWJsZS0+c2V0VXNlc05vblN0cmljdEV2
YWwobV91c2VzTm9uU3RyaWN0RXZhbCk7CiAgICAgaW50IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRl
eCA9IDA7CkBAIC03MDcsNiArNzA5LDkgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2Vu
ZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAg
ICAgICAgICAgICBjYXNlIENvbnN0cnVjdG9yS2luZDo6Tm9uZToKICAgICAgICAgICAgICAgICBj
YXNlIENvbnN0cnVjdG9yS2luZDo6QmFzZToKICAgICAgICAgICAgICAgICAgICAgZW1pdENyZWF0
ZVRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKE9wdGlvbnM6
OnVzZVByaXZhdGVNZXRob2RzKCkgJiYgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSA9PSBQcml2
YXRlQnJhbmRSZXF1aXJlbWVudDo6TmVlZGVkKQorICAgICAgICAgICAgICAgICAgICAgICAgZW1p
dEluc3RhbGxQcml2YXRlQnJhbmQoJm1fdGhpc1JlZ2lzdGVyKTsKKwogICAgICAgICAgICAgICAg
ICAgICBlbWl0SW5zdGFuY2VGaWVsZEluaXRpYWxpemF0aW9uSWZOZWVkZWQoJm1fdGhpc1JlZ2lz
dGVyLCAmbV9jYWxsZWVSZWdpc3RlciwgbV9zY29wZU5vZGUtPnBvc2l0aW9uKCksIG1fc2NvcGVO
b2RlLT5wb3NpdGlvbigpLCBtX3Njb3BlTm9kZS0+cG9zaXRpb24oKSk7CiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgQ29uc3RydWN0b3JLaW5kOjpFeHRl
bmRzOgpAQCAtODM4LDcgKzg0Myw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVy
YXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgcHVz
aExleGljYWxTY29wZShtX3Njb3BlTm9kZSwgVERaQ2hlY2tPcHRpbWl6YXRpb246Ok9wdGltaXpl
LCBOZXN0ZWRTY29wZVR5cGU6OklzTm90TmVzdGVkLCBudWxscHRyLCBzaG91bGRJbml0aWFsaXpl
QmxvY2tTY29wZWRGdW5jdGlvbnMpOwogfQogCi1CeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVH
ZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2VkRXZhbENvZGVCbG9j
ayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlv
bk1vZGUsIGNvbnN0IFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+JiBwYXJlbnRTY29wZVREWlZh
cmlhYmxlcywgRUNNQU1vZGUgZWNtYU1vZGUpCitCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVH
ZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2VkRXZhbENvZGVCbG9j
ayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlv
bk1vZGUsIGNvbnN0IFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+JiBwYXJlbnRTY29wZVREWlZh
cmlhYmxlcywgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogcGFyZW50UHJpdmF0ZU5hbWVF
bnZpcm9ubWVudCwgRUNNQU1vZGUgZWNtYU1vZGUpCiAgICAgOiBCeXRlY29kZUdlbmVyYXRvckJh
c2UobWFrZVVuaXF1ZTxVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcj4odm0sIGNvZGVCbG9jayks
IENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVy
cygpKQogICAgICwgbV9jb2RlR2VuZXJhdGlvbk1vZGUoY29kZUdlbmVyYXRpb25Nb2RlKQogICAg
ICwgbV9zY29wZU5vZGUoZXZhbE5vZGUpCkBAIC04NTYsNiArODYxLDggQEAgQnl0ZWNvZGVHZW5l
cmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2YWxOb2RlLCBVbmxp
bmtlZEV2YWxDb2QKIHsKICAgICBtX2NvZGVCbG9jay0+c2V0TnVtUGFyYW1ldGVycygxKTsKIAor
ICAgIHB1c2hQcml2YXRlQWNjZXNzTmFtZXMocGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCk7
CisKICAgICBtX2NhY2hlZFBhcmVudFREWiA9IHBhcmVudFNjb3BlVERaVmFyaWFibGVzOwogCiAg
ICAgZW1pdEVudGVyKCk7CkBAIC05MDEsNyArOTA4LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5
dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2YWxOb2RlLCBVbmxpbmtlZEV2YWxD
b2QKICAgICBwdXNoTGV4aWNhbFNjb3BlKG1fc2NvcGVOb2RlLCBURFpDaGVja09wdGltaXphdGlv
bjo6T3B0aW1pemUsIE5lc3RlZFNjb3BlVHlwZTo6SXNOb3ROZXN0ZWQsIG51bGxwdHIsIHNob3Vs
ZEluaXRpYWxpemVCbG9ja1Njb3BlZEZ1bmN0aW9ucyk7CiB9CiAKLUJ5dGVjb2RlR2VuZXJhdG9y
OjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIE1vZHVsZVByb2dyYW1Ob2RlKiBtb2R1bGVQcm9n
cmFtTm9kZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlv
blNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgUmVmUHRy
PFREWkVudmlyb25tZW50TGluaz4mIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBFQ01BTW9kZSBl
Y21hTW9kZSkKK0J5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIE1v
ZHVsZVByb2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9kZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVH
ZW5lcmF0aW9uTW9kZSwgY29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4mIHBhcmVudFNj
b3BlVERaVmFyaWFibGVzLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiwgRUNNQU1vZGUg
ZWNtYU1vZGUpCiAgICAgOiBCeXRlY29kZUdlbmVyYXRvckJhc2UobWFrZVVuaXF1ZTxVbmxpbmtl
ZENvZGVCbG9ja0dlbmVyYXRvcj4odm0sIGNvZGVCbG9jayksIENvZGVCbG9jazo6bGxpbnRCYXNl
bGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKQogICAgICwgbV9jb2RlR2Vu
ZXJhdGlvbk1vZGUoY29kZUdlbmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5vZGUobW9kdWxl
UHJvZ3JhbU5vZGUpCkBAIC0xODkzLDggKzE5MDAsMTAgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRv
cjo6aW5zdGFudGlhdGVMZXhpY2FsVmFyaWFibGVzKGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQm
IGwKIAogICAgICAgICAgICAgLy8gRklYTUU6IG9ubHkgZG8gdGhpcyBpZiB0aGVyZSBpcyBhbiBl
dmFsKCkgd2l0aGluIGEgbmVzdGVkIHNjb3BlIC0tLSBvdGhlcndpc2UgaXQgaXNuJ3QgbmVlZGVk
LgogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwNjY2MwotICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVlLmlzUHJpdmF0ZU5hbWUoKSkKLSAg
ICAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+YWRkUHJpdmF0ZU5hbWUoZW50cnkua2V5LmdldCgp
KTsKKyAgICAgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc1ByaXZhdGVGaWVsZCgpKQorICAgICAg
ICAgICAgICAgIHN5bWJvbFRhYmxlLT5hZGRQcml2YXRlTmFtZShlbnRyeS5rZXkuZ2V0KCksIFBy
aXZhdGVOYW1lRW50cnkoUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc0RlY2xhcmVkKSk7Cisg
ICAgICAgICAgICBlbHNlIGlmIChlbnRyeS52YWx1ZS5pc1ByaXZhdGVNZXRob2QoKSkKKyAgICAg
ICAgICAgICAgICBzeW1ib2xUYWJsZS0+YWRkUHJpdmF0ZU5hbWUoZW50cnkua2V5LmdldCgpLCBQ
cml2YXRlTmFtZUVudHJ5KFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNEZWNsYXJlZCB8IFBy
aXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNNZXRob2QpKTsKICAgICAgICAgfQogICAgIH0KICAg
ICByZXR1cm4gaGFzQ2FwdHVyZWRWYXJpYWJsZXM7CkBAIC0yNzE0LDcgKzI3MjMsNyBAQCBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2Us
IFJlZ2lzdGVySUQqIHRoaXNWYQogICAgIHJldHVybiB2YWx1ZTsKIH0KIAotUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RHZXRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5KQorUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRHZXRQcml2YXRlTmFtZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVy
SUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5KQogewogICAgIE9wR2V0UHJpdmF0ZU5hbWU6
OmVtaXQodGhpcywgZHN0LCBiYXNlLCBwcm9wZXJ0eSk7CiAgICAgcmV0dXJuIGRzdDsKQEAgLTI3
NTAsMTIgKzI3NTksNDQgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWZp
bmVQcml2YXRlRmllbGQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXIKICAgICByZXR1cm4gdmFs
dWU7CiB9CiAKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDcmVhdGVQcml2YXRlQnJhbmQo
UmVnaXN0ZXJJRCogc2NvcGUsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkK
K3sKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY3JlYXRlUHJpdmF0ZVN5bWJvbCA9IG1vdmVMaW5r
VGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OmNyZWF0ZVByaXZhdGVTeW1i
b2wpOworCisgICAgQ2FsbEFyZ3VtZW50cyBhcmd1bWVudHMoKnRoaXMsIG51bGxwdHIsIDApOwor
ICAgIGVtaXRMb2FkKGFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7Cisg
ICAgUmVnaXN0ZXJJRCogbmV3U3ltYm9sID0gZW1pdENhbGwoZmluYWxEZXN0aW5hdGlvbihudWxs
cHRyLCBjcmVhdGVQcml2YXRlU3ltYm9sLmdldCgpKSwgY3JlYXRlUHJpdmF0ZVN5bWJvbC5nZXQo
KSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBhcmd1bWVudHMsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZv
dEVuZCwgRGVidWdnYWJsZUNhbGw6Ok5vKTsKKworICAgIFZhcmlhYmxlIHByaXZhdGVCcmFuZFZh
ciA9IHZhcmlhYmxlKHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5wcml2YXRlQnJhbmRQ
cml2YXRlTmFtZSgpKTsKKworICAgIGVtaXRQdXRUb1Njb3BlKHNjb3BlLCBwcml2YXRlQnJhbmRW
YXIsIG5ld1N5bWJvbCwgRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6
SW5pdGlhbGl6YXRpb24pOworfQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SW5zdGFs
bFByaXZhdGVCcmFuZChSZWdpc3RlcklEKiB0YXJnZXQpCit7CisgICAgVmFyaWFibGUgcHJpdmF0
ZUJyYW5kVmFyID0gdmFyaWFibGUocHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLnByaXZh
dGVCcmFuZFByaXZhdGVOYW1lKCkpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlQnJh
bmRWYXJTY29wZSA9IGVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgcHJpdmF0ZUJyYW5kVmFyKTsK
KyAgICBSZWdpc3RlcklEKiBwcml2YXRlQnJhbmRTeW1ib2wgPSBlbWl0R2V0UHJpdmF0ZUJyYW5k
KG5ld1RlbXBvcmFyeSgpLCBwcml2YXRlQnJhbmRWYXJTY29wZS5nZXQoKSk7CisgICAgT3BTZXRQ
cml2YXRlQnJhbmQ6OmVtaXQodGhpcywgdGFyZ2V0LCBwcml2YXRlQnJhbmRTeW1ib2wpOworfQor
CitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFByaXZhdGVCcmFuZChSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNjb3BlKQoreworICAgIFZhcmlhYmxlIHByaXZhdGVC
cmFuZFZhciA9IHZhcmlhYmxlKHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5wcml2YXRl
QnJhbmRQcml2YXRlTmFtZSgpKTsKKyAgICByZXR1cm4gZW1pdEdldEZyb21TY29wZShkc3QsIHNj
b3BlLCBwcml2YXRlQnJhbmRWYXIsIFRocm93SWZOb3RGb3VuZCk7Cit9CisKIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHJpdmF0ZUZpZWxkUHV0KFJlZ2lzdGVySUQqIGJhc2Us
IFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKICAgICBPcFB1dFBy
aXZhdGVOYW1lOjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHJpdmF0ZUZpZWxk
UHV0S2luZDo6c2V0KCkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIAordm9pZCBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdENoZWNrUHJpdmF0ZUJyYW5kKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVy
SUQqIGJyYW5kU3ltYm9sKQoreworICAgIE9wQ2hlY2tQcml2YXRlQnJhbmQ6OmVtaXQodGhpcywg
YmFzZSwgYnJhbmRTeW1ib2wpOworfQorCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0U3Vw
ZXJTYW1wbGVyQmVnaW4oKQogewogICAgIE9wU3VwZXJTYW1wbGVyQmVnaW46OmVtaXQodGhpcyk7
CkBAIC0yODkwLDYgKzI5MzEsMzIgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6bGlmdFREWkNo
ZWNrSWZQb3NzaWJsZShjb25zdCBWYXJpYWJsZSYgdmFyaWFibGUpCiAgICAgfQogfQogCitib29s
IEJ5dGVjb2RlR2VuZXJhdG9yOjppc1ByaXZhdGVNZXRob2QoY29uc3QgSWRlbnRpZmllciYgaWRl
bnQpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gbV9wcml2YXRlTmFtZXNTdGFjay5zaXplKCk7
IGktLTsgKSB7CisgICAgICAgIGF1dG8mIG1hcCA9IG1fcHJpdmF0ZU5hbWVzU3RhY2tbaV07Cisg
ICAgICAgIGF1dG8gaXQgPSBtYXAuZmluZChpZGVudC5pbXBsKCkpOworICAgICAgICBpZiAoaXQg
IT0gbWFwLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGl0LT52YWx1ZS5pc01ldGhvZCgpOwor
ICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6
cHVzaFByaXZhdGVBY2Nlc3NOYW1lcyhjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiBlbnZp
cm9ubWVudCkKK3sKKyAgICBpZiAoIWVudmlyb25tZW50IHx8ICFlbnZpcm9ubWVudC0+c2l6ZSgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3ByaXZhdGVOYW1lc1N0YWNrLmFwcGVuZCgqZW52
aXJvbm1lbnQpOworfQorCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwb3BQcml2YXRlQWNjZXNz
TmFtZXMoKQoreworICAgIEFTU0VSVChtX3ByaXZhdGVOYW1lc1N0YWNrLnNpemUoKSk7CisgICAg
bV9wcml2YXRlTmFtZXNTdGFjay5yZW1vdmVMYXN0KCk7Cit9CisKIHZvaWQgQnl0ZWNvZGVHZW5l
cmF0b3I6OnB1c2hURFpWYXJpYWJsZXMoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgZW52aXJv
bm1lbnQsIFREWkNoZWNrT3B0aW1pemF0aW9uIG9wdGltaXphdGlvbiwgVERaUmVxdWlyZW1lbnQg
cmVxdWlyZW1lbnQpCiB7CiAgICAgaWYgKCFlbnZpcm9ubWVudC5zaXplKCkpCkBAIC0yOTExLDYg
KzI5NzgsMjggQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cHVzaFREWlZhcmlhYmxlcyhjb25z
dCBWYXJpYWJsZUVudmlyb25tZW50JiBlbnZpcm9ubWVudCwKICAgICBtX1REWlN0YWNrLmFwcGVu
ZChURFpTdGFja0VudHJ5IHsgV1RGTW92ZShtYXApLCBudWxscHRyIH0pOwogfQogCitPcHRpb25h
bDxQcml2YXRlTmFtZUVudmlyb25tZW50PiBCeXRlY29kZUdlbmVyYXRvcjo6Z2V0QXZhaWxhYmxl
UHJpdmF0ZUFjY2Vzc05hbWVzKCkKK3sKKyAgICBQcml2YXRlTmFtZUVudmlyb25tZW50IHJlc3Vs
dDsKKyAgICBTbWFsbFB0clNldDxVbmlxdWVkU3RyaW5nSW1wbCosIDE2PiBleGNsdWRlZE5hbWVz
OworICAgIGZvciAodW5zaWduZWQgaSA9IG1fcHJpdmF0ZU5hbWVzU3RhY2suc2l6ZSgpOyBpLS07
ICkgeworICAgICAgICBhdXRvJiBtYXAgPSBtX3ByaXZhdGVOYW1lc1N0YWNrW2ldOworICAgICAg
ICBmb3IgKGF1dG8mIGVudHJ5IDogbWFwKSAgeworICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVl
LmlzUHJpdmF0ZU1ldGhvZE9yQWNlc3NvcigpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFleGNs
dWRlZE5hbWVzLmNvbnRhaW5zKGVudHJ5LmtleS5nZXQoKSkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0LmFkZChlbnRyeS5rZXksIGVudHJ5LnZhbHVlKTsKKyAgICAgICAgICAgICAgICAg
ICAgZXhjbHVkZWROYW1lcy5hZGQoZW50cnkua2V5LmdldCgpKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBleGNsdWRlZE5hbWVzLmFkZChl
bnRyeS5rZXkuZ2V0KCkpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFyZXN1bHQuc2l6
ZSgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKIFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZXRWYXJp
YWJsZXNVbmRlclREWigpCiB7CiAgICAgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4gcGFyZW50
ID0gbV9jYWNoZWRQYXJlbnRURFo7CkBAIC0zMTIwLDkgKzMyMDksOSBAQCBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld01ldGhvZERlZmluaXRpb24oUmVnaXN0ZXJJRCogZHN0
LCBNZXRob2REZQogfQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Rl
ZmF1bHRDb25zdHJ1Y3RvcihSZWdpc3RlcklEKiBkc3QsIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1
Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsCi0gICAgY29uc3QgSWRlbnRpZmllciYg
ZWNtYU5hbWUsIGNvbnN0IFNvdXJjZUNvZGUmIGNsYXNzU291cmNlLCBOZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcikKKyAgICBjb25zdCBJZGVudGlm
aWVyJiBlY21hTmFtZSwgY29uc3QgU291cmNlQ29kZSYgY2xhc3NTb3VyY2UsIE5lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRS
ZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCkKIHsKLSAgICBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG1fdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNy
ZWF0ZURlZmF1bHRDb25zdHJ1Y3Rvcihjb25zdHJ1Y3RvcktpbmQsIG5hbWUsIG5lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0
YWJsZSA9IG1fdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNyZWF0ZURlZmF1bHRDb25zdHJ1Y3Rv
cihjb25zdHJ1Y3RvcktpbmQsIG5hbWUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBwcml2
YXRlQnJhbmRSZXF1aXJlbWVudCk7CiAgICAgZXhlY3V0YWJsZS0+c2V0SW52YWxpZFR5cGVQcm9m
aWxpbmdPZmZzZXRzKCk7CiAgICAgZXhlY3V0YWJsZS0+c2V0RWNtYU5hbWUoZWNtYU5hbWUpOwog
ICAgIGV4ZWN1dGFibGUtPnNldENsYXNzU291cmNlKGNsYXNzU291cmNlKTsKQEAgLTMxNDYsMTMg
KzMyMzUsMTQgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXJGdW5jdGlvbihSZWdpc3RlcklEKgogICAgIH0KIAogICAgIGF1dG8gdmFy
aWFibGVzVW5kZXJURFogPSBnZXRWYXJpYWJsZXNVbmRlclREWigpOworICAgIE9wdGlvbmFsPFBy
aXZhdGVOYW1lRW52aXJvbm1lbnQ+IHBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQgPSBnZXRB
dmFpbGFibGVQcml2YXRlQWNjZXNzTmFtZXMoKTsKICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VN
b2RlID0gU291cmNlUGFyc2VNb2RlOjpDbGFzc0ZpZWxkSW5pdGlhbGl6ZXJNb2RlOwogICAgIENv
bnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSA9IENvbnN0cnVjdEFiaWxpdHk6OkNhbm5v
dENvbnN0cnVjdDsKIAogICAgIGNvbnN0IGJvb2wgYWx3YXlzU3RyaWN0SW5DbGFzcyA9IHRydWU7
CiAgICAgRnVuY3Rpb25NZXRhZGF0YU5vZGUgbWV0YWRhdGEocGFyc2VyQXJlbmEoKSwgSlNUb2tl
bkxvY2F0aW9uKCksIEpTVG9rZW5Mb2NhdGlvbigpLCAwLCAwLCAwLCAwLCAwLCBhbHdheXNTdHJp
Y3RJbkNsYXNzLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIHN1cGVyQmluZGluZywgMCwgcGFyc2VN
b2RlLCBmYWxzZSk7CiAgICAgbWV0YWRhdGEuZmluaXNoUGFyc2luZyhtX3Njb3BlTm9kZS0+c291
cmNlKCksIElkZW50aWZpZXIoKSwgRnVuY3Rpb25Nb2RlOjpNZXRob2REZWZpbml0aW9uKTsKLSAg
ICBhdXRvIGluaXRpYWxpemVyID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSht
X3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksICZtZXRhZGF0YSwgaXNCdWlsdGluRnVuY3Rpb24o
KSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29u
c3RydWN0QWJpbGl0eSwgc2NyaXB0TW9kZSgpLCBXVEZNb3ZlKHZhcmlhYmxlc1VuZGVyVERaKSwg
bmV3RGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8pOwor
ICAgIGF1dG8gaW5pdGlhbGl6ZXIgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRl
KG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgJm1ldGFkYXRhLCBpc0J1aWx0aW5GdW5jdGlv
bigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBj
b25zdHJ1Y3RBYmlsaXR5LCBzY3JpcHRNb2RlKCksIFdURk1vdmUodmFyaWFibGVzVW5kZXJURFop
LCBXVEZNb3ZlKHBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQpLCBuZXdEZXJpdmVkQ29udGV4
dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObywgUHJpdmF0ZUJyYW5kUmVxdWly
ZW1lbnQ6Ok5vbmUpOwogICAgIGluaXRpYWxpemVyLT5zZXRDbGFzc0ZpZWxkTG9jYXRpb25zKFdU
Rk1vdmUoY2xhc3NGaWVsZExvY2F0aW9ucykpOwogCiAgICAgdW5zaWduZWQgaW5kZXggPSBtX2Nv
ZGVCbG9jay0+YWRkRnVuY3Rpb25FeHByKGluaXRpYWxpemVyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA1
MGI1NDY1ZjliNzUuLmJiZmI1NjgxOThmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNDA4LDEwICs0MDgs
MTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIERlY2xh
cmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrIEZ1bmN0aW9uU3RhY2s7CiAKLSAgICAgICAgQnl0
ZWNvZGVHZW5lcmF0b3IoVk0mLCBQcm9ncmFtTm9kZSosIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9j
ayosIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBjb25zdCBSZWZQdHI8VERaRW52aXJv
bm1lbnRMaW5rPiYsIEVDTUFNb2RlKTsKLSAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBG
dW5jdGlvbk5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVH
ZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+JiwgRUNNQU1v
ZGUpOwotICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIEV2YWxOb2RlKiwgVW5saW5rZWRF
dmFsQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFJlZlB0
cjxURFpFbnZpcm9ubWVudExpbms+JiwgRUNNQU1vZGUpOwotICAgICAgICBCeXRlY29kZUdlbmVy
YXRvcihWTSYsIE1vZHVsZVByb2dyYW1Ob2RlKiwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFJlZlB0cjxURFpFbnZp
cm9ubWVudExpbms+JiwgRUNNQU1vZGUpOworICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYs
IFByb2dyYW1Ob2RlKiwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVH
ZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+JiwgY29uc3Qg
UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCosIEVDTUFNb2RlKTsKKyAgICAgICAgQnl0ZWNvZGVHZW5l
cmF0b3IoVk0mLCBGdW5jdGlvbk5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiwgT3B0
aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFJlZlB0cjxURFpFbnZpcm9ubWVudExp
bms+JiwgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCosIEVDTUFNb2RlKTsKKyAgICAgICAg
Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBFdmFsTm9kZSosIFVubGlua2VkRXZhbENvZGVCbG9jayos
IE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBjb25zdCBSZWZQdHI8VERaRW52aXJvbm1l
bnRMaW5rPiYsIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqLCBFQ01BTW9kZSk7CisgICAg
ICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgTW9kdWxlUHJvZ3JhbU5vZGUqLCBVbmxpbmtlZE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29u
c3QgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4mLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25t
ZW50KiwgRUNNQU1vZGUpOwogCiAgICAgICAgIH5CeXRlY29kZUdlbmVyYXRvcigpOwogICAgICAg
ICAKQEAgLTQyNSwyMCArNDI1LDIxIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG5l
ZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNU
b1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0OyB9CiAgICAgICAgIGJvb2wgdXNlc0V2YWwoKSBj
b25zdCB7IHJldHVybiBtX3Njb3BlTm9kZS0+dXNlc0V2YWwoKTsgfQogICAgICAgICBib29sIHVz
ZXNUaGlzKCkgY29uc3QgeyByZXR1cm4gbV9zY29wZU5vZGUtPnVzZXNUaGlzKCk7IH0KKyAgICAg
ICAgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSBjb25z
dCB7IHJldHVybiBtX2NvZGVCbG9jay0+cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKTsgfQogICAg
ICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gbV9j
b2RlQmxvY2stPmNvbnN0cnVjdG9yS2luZCgpOyB9CiAgICAgICAgIFN1cGVyQmluZGluZyBzdXBl
ckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+c3VwZXJCaW5kaW5nKCk7IH0K
ICAgICAgICAgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUoKSBjb25zdCB7IHJldHVybiBt
X2NvZGVCbG9jay0+c2NyaXB0TW9kZSgpOyB9CiAgICAgICAgIE5lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkgY29uc3QgeyByZXR1cm4gbV9jb2Rl
QmxvY2stPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCk7IH0KIAogICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBOb2RlLCB0eXBlbmFtZSBVbmxpbmtlZENvZGVCbG9jaz4KLSAgICAgICAgc3Rh
dGljIFBhcnNlckVycm9yIGdlbmVyYXRlKFZNJiB2bSwgTm9kZSogbm9kZSwgY29uc3QgU291cmNl
Q29kZSYgc291cmNlQ29kZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBP
cHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFJl
ZlB0cjxURFpFbnZpcm9ubWVudExpbms+JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRUNNQU1v
ZGUgZWNtYU1vZGUpCisgICAgICAgIHN0YXRpYyBQYXJzZXJFcnJvciBnZW5lcmF0ZShWTSYgdm0s
IE5vZGUqIG5vZGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIFVubGlua2VkQ29kZUJs
b2NrKiB1bmxpbmtlZENvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29k
ZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiYgcGFyZW50
U2NvcGVURFpWYXJpYWJsZXMsIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHByaXZhdGVO
YW1lRW52aXJvbm1lbnQsIEVDTUFNb2RlIGVjbWFNb2RlKQogICAgICAgICB7CiAgICAgICAgICAg
ICBNb25vdG9uaWNUaW1lIGJlZm9yZTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25z
OjpyZXBvcnRCeXRlY29kZUNvbXBpbGVUaW1lcygpKSkKICAgICAgICAgICAgICAgICBiZWZvcmUg
PSBNb25vdG9uaWNUaW1lOjpub3coKTsKIAogICAgICAgICAgICAgRGVmZXJHQyBkZWZlckdDKHZt
LmhlYXApOwotICAgICAgICAgICAgYXV0byBieXRlY29kZUdlbmVyYXRvciA9IG1ha2VVbmlxdWU8
Qnl0ZWNvZGVHZW5lcmF0b3I+KHZtLCBub2RlLCB1bmxpbmtlZENvZGVCbG9jaywgY29kZUdlbmVy
YXRpb25Nb2RlLCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgZWNtYU1vZGUpOworICAgICAgICAg
ICAgYXV0byBieXRlY29kZUdlbmVyYXRvciA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVHZW5lcmF0b3I+
KHZtLCBub2RlLCB1bmxpbmtlZENvZGVCbG9jaywgY29kZUdlbmVyYXRpb25Nb2RlLCBwYXJlbnRT
Y29wZVREWlZhcmlhYmxlcywgcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgZWNtYU1vZGUpOwogICAg
ICAgICAgICAgYXV0byByZXN1bHQgPSBieXRlY29kZUdlbmVyYXRvci0+Z2VuZXJhdGUoKTsKIAog
ICAgICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnJlcG9ydEJ5dGVjb2RlQ29tcGlsZVRp
bWVzKCkpKSB7CkBAIC03NzQsNyArNzc1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY3Rpb25NZXRh
ZGF0YU5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lv
bihSZWdpc3RlcklEKiBkc3QsIEZ1bmNFeHByTm9kZSopOwotICAgICAgICBSZWdpc3RlcklEKiBl
bWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29uc3RydWN0b3JLaW5k
LCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBJZGVudGlmaWVyJiBlY21hTmFtZSwgY29u
c3QgU291cmNlQ29kZSYgY2xhc3NTb3VyY2UsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsK
KyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3RvcihSZWdpc3RlcklE
KiBkc3QsIENvbnN0cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3QgSWRl
bnRpZmllciYgZWNtYU5hbWUsIGNvbnN0IFNvdXJjZUNvZGUmIGNsYXNzU291cmNlLCBOZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOwogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0TmV3Q2xhc3NGaWVsZEluaXRpYWxpemVyRnVuY3Rpb24oUmVnaXN0ZXJJ
RCogZHN0LCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+JiYgY2xhc3NGaWVsZExvY2F0aW9ucywgYm9v
bCBpc0Rlcml2ZWQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3QXJyb3dGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCosIEFycm93RnVuY0V4cHJOb2RlKik7CiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXROZXdNZXRob2REZWZpbml0aW9uKFJlZ2lzdGVySUQqIGRzdCwgTWV0aG9kRGVm
aW5pdGlvbk5vZGUqKTsKQEAgLTgxNSw3ICs4MTYsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdERpcmVjdFNldFByb3RvdHlwZU9mKFJlZ2lzdGVySUQqIGJhc2Us
IFJlZ2lzdGVySUQqIHByb3RvdHlwZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRCeVZh
bChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFs
dWUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwg
UmVnaXN0ZXJJRCogdGhpc1ZhbHVlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCog
dmFsdWUpOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGlyZWN0R2V0QnlWYWwoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSk7CiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXREaXJlY3RQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3Rl
cklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwogICAgICAgICBSZWdpc3RlcklEKiBl
bWl0RGVsZXRlQnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3Rl
cklEKiBwcm9wZXJ0eSk7CiAKQEAgLTgyMyw2ICs4MjMsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRJbnRlcm5hbEZpZWxkKFJlZ2lzdGVySUQqIGJhc2Us
IHVuc2lnbmVkIGluZGV4LCBSZWdpc3RlcklEKiB2YWx1ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXREZWZpbmVQcml2YXRlRmllbGQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJv
cGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFByaXZh
dGVGaWVsZFB1dChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0
ZXJJRCogdmFsdWUpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0UHJpdmF0ZU5hbWUoUmVn
aXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSk7CisK
KyAgICAgICAgdm9pZCBlbWl0Q3JlYXRlUHJpdmF0ZUJyYW5kKFJlZ2lzdGVySUQqIGRzdCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFy
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKKyAgICAgICAgdm9pZCBlbWl0SW5z
dGFsbFByaXZhdGVCcmFuZChSZWdpc3RlcklEKiB0YXJnZXQpOworICAgICAgICBSZWdpc3RlcklE
KiBlbWl0R2V0UHJpdmF0ZUJyYW5kKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc2NvcGUp
OworICAgICAgICB2b2lkIGVtaXRDaGVja1ByaXZhdGVCcmFuZChSZWdpc3RlcklEKiBiYXNlLCBS
ZWdpc3RlcklEKiBicmFuZCk7CiAKICAgICAgICAgdm9pZCBlbWl0U3VwZXJTYW1wbGVyQmVnaW4o
KTsKICAgICAgICAgdm9pZCBlbWl0U3VwZXJTYW1wbGVyRW5kKCk7CkBAIC0xMTc2LDE2ICsxMTgy
LDE5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgRGVyaXZlZENvbnRleHRUeXBlIG5l
d0Rlcml2ZWRDb250ZXh0VHlwZSA9IERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZTsKIAogICAgICAg
ICAgICAgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIgPSBtZXRhZGF0YS0+aXNDb25zdHJ1Y3RvckFuZE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
KCkgPyBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6WWVzIDogTmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXI6Ok5vOworICAgICAgICAgICAgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQgPSBtZXRhZGF0YS0+cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKTsK
ICAgICAgICAgICAgIGlmIChTb3VyY2VQYXJzZU1vZGVTZXQoU291cmNlUGFyc2VNb2RlOjpBcnJv
d0Z1bmN0aW9uTW9kZSwgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlLCBT
b3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbkJvZHlNb2RlKS5jb250YWlucyhtZXRh
ZGF0YS0+cGFyc2VNb2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGNvbnN0cnVjdG9yS2lu
ZCgpID09IENvbnN0cnVjdG9yS2luZDo6RXh0ZW5kcyB8fCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNv
bnRleHQoKSkgewogICAgICAgICAgICAgICAgICAgICBuZXdEZXJpdmVkQ29udGV4dFR5cGUgPSBE
ZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQ7CiAgICAgICAgICAg
ICAgICAgICAgIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyID0gbV9jb2RlQmxvY2stPm5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyKCk7CisgICAgICAgICAgICAgICAgICAgIHByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50ID0gbV9jb2RlQmxvY2stPnByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCk7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1fY29kZUJsb2NrLT5p
c0NsYXNzQ29udGV4dCgpIHx8IGlzRGVyaXZlZENsYXNzQ29udGV4dCgpKQogICAgICAgICAgICAg
ICAgICAgICBuZXdEZXJpdmVkQ29udGV4dFR5cGUgPSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2
ZWRNZXRob2RDb250ZXh0OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBhdXRvIG9wdGlv
bmFsVmFyaWFibGVzVW5kZXJURFogPSBnZXRWYXJpYWJsZXNVbmRlclREWigpOworICAgICAgICAg
ICAgT3B0aW9uYWw8UHJpdmF0ZU5hbWVFbnZpcm9ubWVudD4gcGFyZW50UHJpdmF0ZU5hbWVFbnZp
cm9ubWVudCA9IGdldEF2YWlsYWJsZVByaXZhdGVBY2Nlc3NOYW1lcygpOwogCiAgICAgICAgICAg
ICAvLyBGSVhNRTogVGhlc2UgZmxhZ3MsIFBhcnNlck1vZGVzIGFuZCBwcm9wYWdhdGlvbiB0byBY
WFhDb2RlQmxvY2tzIHNob3VsZCBiZSByZW9yZ2FuaXplZC4KICAgICAgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDcKQEAgLTExOTQsMTAgKzEy
MDMsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBpZiAocGFyc2VNb2RlID09IFNv
dXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSAmJiBtZXRhZGF0YS0+Y29uc3RydWN0b3JLaW5kKCkg
IT0gQ29uc3RydWN0b3JLaW5kOjpOb25lKQogICAgICAgICAgICAgICAgIGNvbnN0cnVjdEFiaWxp
dHkgPSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3Q7CiAKLSAgICAgICAgICAgIHJldHVy
biBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5z
b3VyY2UoKSwgbWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5G
dW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIHNjcmlw
dE1vZGUoKSwgV1RGTW92ZShvcHRpb25hbFZhcmlhYmxlc1VuZGVyVERaKSwgbmV3RGVyaXZlZENv
bnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcik7CisgICAgICAgICAgICByZXR1
cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+
c291cmNlKCksIG1ldGFkYXRhLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGlu
RnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCBzY3Jp
cHRNb2RlKCksIFdURk1vdmUob3B0aW9uYWxWYXJpYWJsZXNVbmRlclREWiksIFdURk1vdmUocGFy
ZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCksIG5ld0Rlcml2ZWRDb250ZXh0VHlwZSwgbmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KTsKICAgICAgICAg
fQogCiAgICAgICAgIFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+IGdldFZhcmlhYmxlc1VuZGVy
VERaKCk7CisgICAgICAgIE9wdGlvbmFsPFByaXZhdGVOYW1lRW52aXJvbm1lbnQ+IGdldEF2YWls
YWJsZVByaXZhdGVBY2Nlc3NOYW1lcygpOwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDb25z
dHJ1Y3RWYXJhcmdzKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgUmVnaXN0ZXJJ
RCogdGhpc1JlZ2lzdGVyLCBSZWdpc3RlcklEKiBhcmd1bWVudHMsIFJlZ2lzdGVySUQqIGZpcnN0
RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3RFbmQsIERlYnVnZ2FibGVDYWxsKTsKICAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2FsbE9wPgpAQCAtMTI1Myw2ICsxMjYzLDExIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgbV9sYXN0SW5zdHJ1Y3Rpb24gPSBwcmV2TGFzdEluc3RydWN0aW9uOwogICAg
ICAgICB9CiAKKyAgICAgICAgYm9vbCBpc1ByaXZhdGVNZXRob2QoY29uc3QgSWRlbnRpZmllciYp
OworCisgICAgICAgIHZvaWQgcHVzaFByaXZhdGVBY2Nlc3NOYW1lcyhjb25zdCBQcml2YXRlTmFt
ZUVudmlyb25tZW50Kik7CisgICAgICAgIHZvaWQgcG9wUHJpdmF0ZUFjY2Vzc05hbWVzKCk7CisK
ICAgICBwcml2YXRlOgogICAgICAgICBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBtX2Nv
ZGVHZW5lcmF0aW9uTW9kZTsKIApAQCAtMTI2Niw2ICsxMjgxLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4gbV9jYWNoZWRQYXJlbnRURFo7
CiAgICAgICAgIFZlY3RvcjxURFpTdGFja0VudHJ5PiBtX1REWlN0YWNrOworICAgICAgICBWZWN0
b3I8UHJpdmF0ZU5hbWVFbnZpcm9ubWVudD4gbV9wcml2YXRlTmFtZXNTdGFjazsKICAgICAgICAg
T3B0aW9uYWw8c2l6ZV90PiBtX3ZhclNjb3BlTGV4aWNhbFNjb3BlU3RhY2tJbmRleDsKICAgICAg
ICAgdm9pZCBwdXNoVERaVmFyaWFibGVzKGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmLCBURFpD
aGVja09wdGltaXphdGlvbiwgVERaUmVxdWlyZW1lbnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggMGUxYjk1ZjRm
NmE4Li5mYjAyNzJmNDE4MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTU2Myw3ICs1NjMsNyBAQCB2b2lkIFByb3Bl
cnR5TGlzdE5vZGU6OmVtaXREZWNsYXJlUHJpdmF0ZUZpZWxkTmFtZXMoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvcgogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjcmVhdGVQcml2YXRlU3ltYm9s
OwogICAgIGZvciAoUHJvcGVydHlMaXN0Tm9kZSogcCA9IHRoaXM7IHA7IHAgPSBwLT5tX25leHQp
IHsKICAgICAgICAgY29uc3QgUHJvcGVydHlOb2RlJiBub2RlID0gKnAtPm1fbm9kZTsKLSAgICAg
ICAgaWYgKG5vZGUudHlwZSgpICYgUHJvcGVydHlOb2RlOjpQcml2YXRlKSB7CisgICAgICAgIGlm
IChub2RlLnR5cGUoKSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0ZUZpZWxkKSB7CiAgICAgICAgICAg
ICBpZiAoIWNyZWF0ZVByaXZhdGVTeW1ib2wpCiAgICAgICAgICAgICAgICAgY3JlYXRlUHJpdmF0
ZVN5bWJvbCA9IGdlbmVyYXRvci5tb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGlt
ZUNvbnN0YW50OjpjcmVhdGVQcml2YXRlU3ltYm9sKTsKIApAQCAtNTg5LDcgKzU4OSw3IEBAIFJl
Z2lzdGVySUQqIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlCiAgICAgICAgIGlmIChwLT5pc0NvbXB1dGVkQ2xhc3NGaWVs
ZCgpKQogICAgICAgICAgICAgZW1pdFNhdmVDb21wdXRlZEZpZWxkTmFtZShnZW5lcmF0b3IsICpw
LT5tX25vZGUpOwogCi0gICAgICAgIGlmIChwLT5pc0luc3RhbmNlQ2xhc3NGaWVsZCgpKSB7Cisg
ICAgICAgIGlmIChwLT5pc0luc3RhbmNlQ2xhc3NGaWVsZCgpICYmICEocC0+bV9ub2RlLT50eXBl
KCkgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGVNZXRob2QpKSB7CiAgICAgICAgICAgICBBU1NFUlQo
aW5zdGFuY2VGaWVsZExvY2F0aW9ucyk7CiAgICAgICAgICAgICBpbnN0YW5jZUZpZWxkTG9jYXRp
b25zLT5hcHBlbmQocC0+cG9zaXRpb24oKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTc1
Nyw3ICs3NTcsNyBAQCBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZQogdm9pZCBQcm9wZXJ0eUxpc3RO
b2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBuZXdPYmosIFByb3BlcnR5Tm9kZSYgbm9kZSkKIHsKICAgICAvLyBQcml2
YXRlIGZpZWxkcyBhcmUgaGFuZGxlZCBpbiBhIHN5bnRoZXRpYyBjbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIgZnVuY3Rpb24sIG5vdCBoZXJlLgotICAgIEFTU0VSVCghKG5vZGUudHlwZSgpICYgUHJvcGVy
dHlOb2RlOjpQcml2YXRlKSk7CisgICAgQVNTRVJUKCEobm9kZS50eXBlKCkgJiBQcm9wZXJ0eU5v
ZGU6OlByaXZhdGVGaWVsZCkpOwogCiAgICAgaWYgKFByb3BlcnR5Tm9kZTo6aXNVbmRlcnNjb3Jl
UHJvdG9TZXR0ZXIoZ2VuZXJhdG9yLnZtKCksIG5vZGUpKSB7CiAgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBwcm90b3R5cGUgPSBnZW5lcmF0b3IuZW1pdE5vZGUobm9kZS5tX2Fzc2lnbik7CkBA
IC03ODIsNiArNzgyLDE0IEBAIHZvaWQgUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50
UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnCiAKICAgICBpZiAobm9k
ZS5pc0NsYXNzUHJvcGVydHkoKSkgewogICAgICAgICBBU1NFUlQobm9kZS5uZWVkc1N1cGVyQmlu
ZGluZygpKTsKKworICAgICAgICBpZiAobm9kZS50eXBlKCkgJiBQcm9wZXJ0eU5vZGU6OlByaXZh
dGVNZXRob2QpIHsKKyAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJs
ZSgqbm9kZS5uYW1lKCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKGdl
bmVyYXRvci5zY29wZVJlZ2lzdGVyKCksIHZhciwgdmFsdWUuZ2V0KCksIERvTm90VGhyb3dJZk5v
dEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6OkNvbnN0SW5pdGlhbGl6YXRpb24pOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHBy
b3BlcnR5TmFtZVJlZ2lzdGVyOwogICAgICAgICBpZiAobm9kZS5uYW1lKCkpCiAgICAgICAgICAg
ICBwcm9wZXJ0eU5hbWUgPSBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwgKm5vZGUubmFtZSgp
KTsKIApAQCAtOTEwLDE0ICs5MTgsMjQgQEAgUmVnaXN0ZXJJRCogRG90QWNjZXNzb3JOb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXIKIAogUmVn
aXN0ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVmUHRy
PFJlZ2lzdGVySUQ+JiB0aGlzVmFsdWUpCiB7Ci0gICAgaWYgKGlzUHJpdmF0ZUZpZWxkKCkpIHsK
KyAgICBpZiAoaXNQcml2YXRlTWVtYmVyKCkpIHsKKyAgICAgICAgaWYgKGdlbmVyYXRvci5pc1By
aXZhdGVNZXRob2QoaWRlbnRpZmllcigpKSkgeworICAgICAgICAgICAgVmFyaWFibGUgdmFyID0g
Z2VuZXJhdG9yLnZhcmlhYmxlKGlkZW50aWZpZXIoKSk7CisgICAgICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIp
OworCisgICAgICAgICAgICBSZWdpc3RlcklEKiBwcml2YXRlQnJhbmRTeW1ib2wgPSBnZW5lcmF0
b3IuZW1pdEdldFByaXZhdGVCcmFuZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdl
dCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2hlY2tQcml2YXRlQnJhbmQoYmFzZSwg
cHJpdmF0ZUJyYW5kU3ltYm9sKTsKKworICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0
R2V0RnJvbVNjb3BlKGRzdCwgc2NvcGUuZ2V0KCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsKKyAg
ICAgICAgfQorCiAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShtX2lk
ZW50KTsKICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghdmFyLmxvY2FsKCksICJQcml2YXRl
IEZpZWxkIG5hbWVzIG11c3QgYmUgc3RvcmVkIGluIGNhcHR1cmVkIHZhcmlhYmxlcyIpOwogCiAg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNj
b3BlKG51bGxwdHIsIHZhcik7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFt
ZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRG
cm9tU2NvcGUocHJpdmF0ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJ
Zk5vdEZvdW5kKTsKLSAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0RGlyZWN0R2V0QnlWYWwo
ZHN0LCBiYXNlLCBwcml2YXRlTmFtZS5nZXQoKSk7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3Iu
ZW1pdEdldFByaXZhdGVOYW1lKGRzdCwgYmFzZSwgcHJpdmF0ZU5hbWUuZ2V0KCkpOwogICAgIH0K
IAogICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpIHsKQEAgLTkzNyw3ICs5NTUsMTggQEAg
UmVnaXN0ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2kKIAogUmVnaXN0ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRQ
dXRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBiYXNl
LCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVmUHRyPFJlZ2lzdGVySUQ+JiB0aGlzVmFsdWUpCiB7Ci0g
ICAgaWYgKGlzUHJpdmF0ZUZpZWxkKCkpIHsKKyAgICBpZiAoaXNQcml2YXRlTWVtYmVyKCkpIHsK
KyAgICAgICAgYXV0byBpZGVudGlmaWVyTmFtZSA9IGlkZW50aWZpZXIoKTsKKyAgICAgICAgaWYg
KGdlbmVyYXRvci5pc1ByaXZhdGVNZXRob2QoaWRlbnRpZmllck5hbWUpKSB7CisgICAgICAgICAg
ICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnRpZmllck5hbWUpOworICAg
ICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZl
U2NvcGUobnVsbHB0ciwgdmFyKTsKKworICAgICAgICAgICAgUmVnaXN0ZXJJRCogcHJpdmF0ZUJy
YW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpLCBzY29wZS5nZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENoZWNr
UHJpdmF0ZUJyYW5kKGJhc2UsIHByaXZhdGVCcmFuZFN5bWJvbCk7CisKKyAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0VGhyb3dUeXBlRXJyb3IoIlRyeWluZyB0byBhY2Nlc3MgYSBub3QgZGVmaW5l
ZCBwcml2YXRlIHNldHRlciIpOworICAgICAgICB9CisKICAgICAgICAgVmFyaWFibGUgdmFyID0g
Z2VuZXJhdG9yLnZhcmlhYmxlKG1faWRlbnQpOwogICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KCF2YXIubG9jYWwoKSwgIlByaXZhdGUgRmllbGQgbmFtZXMgbXVzdCBiZSBzdG9yZWQgaW4gY2Fw
dHVyZWQgdmFyaWFibGVzIik7CiAKQEAgLTEwOTUsMTIgKzExMjQsMTQgQEAgUmVnaXN0ZXJJRCog
RnVuY3Rpb25DYWxsVmFsdWVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmUKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0VGhpc1RvQXJyb3dGdW5j
dGlvbkNvbnRleHRTY29wZSgpOwogCiAgICAgICAgIC8vIEluaXRpYWxpemUgaW5zdGFuY2UgZmll
bGRzIGFmdGVyIHN1cGVyLWNhbGwuCisgICAgICAgIGlmIChPcHRpb25zOjp1c2VQcml2YXRlTWV0
aG9kcygpICYmIGdlbmVyYXRvci5wcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpID09IFByaXZhdGVC
cmFuZFJlcXVpcmVtZW50OjpOZWVkZWQpCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEluc3Rh
bGxQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpKTsKKwogICAgICAgICBpZiAo
Z2VuZXJhdG9yLm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkgPT0gTmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXI6OlllcykgewogICAgICAgICAgICAgQVNTRVJUKGdlbmVyYXRvci5pc0NvbnN0
cnVjdG9yKCkgfHwgZ2VuZXJhdG9yLmlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpKTsKICAg
ICAgICAgICAgIGZ1bmMgPSBnZW5lcmF0b3IuZW1pdExvYWREZXJpdmVkQ29uc3RydWN0b3IoKTsK
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SW5zdGFuY2VGaWVsZEluaXRpYWxpemF0aW9uSWZO
ZWVkZWQoZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBmdW5jLmdldCgpLCBkaXZvdCgpLCBkaXZv
dFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICB9Ci0KICAgICAgICAgcmV0dXJuIHJldDsK
ICAgICB9CiAKQEAgLTIyNTQsMTQgKzIyODUsMTQgQEAgUmVnaXN0ZXJJRCogUG9zdGZpeE5vZGU6
OmVtaXREb3QoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQog
CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkb3RBY2Nlc3Nvci0+ZGl2b3QoKSwg
ZG90QWNjZXNzb3ItPmRpdm90U3RhcnQoKSwgZG90QWNjZXNzb3ItPmRpdm90RW5kKCkpOwogCi0g
ICAgaWYgKGRvdEFjY2Vzc29yLT5pc1ByaXZhdGVGaWVsZCgpKSB7CisgICAgaWYgKGRvdEFjY2Vz
c29yLT5pc1ByaXZhdGVNZW1iZXIoKSkgewogICAgICAgICBBU1NFUlQoIWJhc2VJc1N1cGVyKTsK
ICAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGlkZW50KTsKICAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUo
bnVsbHB0ciwgdmFyKTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0g
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21T
Y29wZShwcml2YXRlTmFtZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90
Rm91bmQpOwogCi0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5l
bWl0RGlyZWN0R2V0QnlWYWwoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBiYXNlLmdldCgpLCBw
cml2YXRlTmFtZS5nZXQoKSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdl
bmVyYXRvci5lbWl0R2V0UHJpdmF0ZU5hbWUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBiYXNl
LmdldCgpLCBwcml2YXRlTmFtZS5nZXQoKSk7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBv
bGRWYWx1ZSA9IGVtaXRQb3N0SW5jT3JEZWMoZ2VuZXJhdG9yLCBnZW5lcmF0b3IudGVtcERlc3Rp
bmF0aW9uKGRzdCksIHZhbHVlLmdldCgpLCBtX29wZXJhdG9yKTsKICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwog
ICAgICAgICBnZW5lcmF0b3IuZW1pdFByaXZhdGVGaWVsZFB1dChiYXNlLmdldCgpLCBwcml2YXRl
TmFtZS5nZXQoKSwgdmFsdWUuZ2V0KCkpOwpAQCAtMjQ5MywxNCArMjUyNCwxNCBAQCBSZWdpc3Rl
cklEKiBQcmVmaXhOb2RlOjplbWl0RG90KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdCkKIAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZG90QWNj
ZXNzb3ItPmRpdm90KCksIGRvdEFjY2Vzc29yLT5kaXZvdFN0YXJ0KCksIGRvdEFjY2Vzc29yLT5k
aXZvdEVuZCgpKTsKICAgICBSZWdpc3RlcklEKiB2YWx1ZTsKLSAgICBpZiAoZG90QWNjZXNzb3It
PmlzUHJpdmF0ZUZpZWxkKCkpIHsKKyAgICBpZiAoZG90QWNjZXNzb3ItPmlzUHJpdmF0ZU1lbWJl
cigpKSB7CiAgICAgICAgIEFTU0VSVCghYmFzZU5vZGUtPmlzU3VwZXJOb2RlKCkpOwogICAgICAg
ICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnQpOwogICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRy
LCB2YXIpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHBy
aXZhdGVOYW1lLmdldCgpLCBzY29wZS5nZXQoKSwgdmFyLCBEb05vdFRocm93SWZOb3RGb3VuZCk7
CiAKLSAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuZW1pdERpcmVjdEdldEJ5VmFsKHByb3BEc3Qu
Z2V0KCksIGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpKTsKKyAgICAgICAgdmFsdWUgPSBn
ZW5lcmF0b3IuZW1pdEdldFByaXZhdGVOYW1lKHByb3BEc3QuZ2V0KCksIGJhc2UuZ2V0KCksIHBy
aXZhdGVOYW1lLmdldCgpKTsKICAgICAgICAgZW1pdEluY09yRGVjKGdlbmVyYXRvciwgdmFsdWUs
IG1fb3BlcmF0b3IpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90
KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJp
dmF0ZUZpZWxkUHV0KGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpLCB2YWx1ZSk7CkBAIC00
ODk3LDYgKzQ5MjgsMTMgQEAgUmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKICAgICBpZiAobV9uZWVk
c0xleGljYWxTY29wZSkKICAgICAgICAgZ2VuZXJhdG9yLnB1c2hMZXhpY2FsU2NvcGUodGhpcywg
Qnl0ZWNvZGVHZW5lcmF0b3I6OlREWkNoZWNrT3B0aW1pemF0aW9uOjpPcHRpbWl6ZSwgQnl0ZWNv
ZGVHZW5lcmF0b3I6Ok5lc3RlZFNjb3BlVHlwZTo6SXNOZXN0ZWQpOwogCisgICAgYm9vbCBoYXNQ
cml2YXRlTmFtZXMgPSAhIW1fbGV4aWNhbFZhcmlhYmxlcy5wcml2YXRlTmFtZXNTaXplKCk7Cisg
ICAgYm9vbCBzaG91bGRFbWl0UHJpdmF0ZUJyYW5kID0gbV9sZXhpY2FsVmFyaWFibGVzLmhhc1By
aXZhdGVNZXRob2RPckFjY2Vzc29yKCk7CisgICAgaWYgKGhhc1ByaXZhdGVOYW1lcykKKyAgICAg
ICAgZ2VuZXJhdG9yLnB1c2hQcml2YXRlQWNjZXNzTmFtZXMobV9sZXhpY2FsVmFyaWFibGVzLnBy
aXZhdGVOYW1lRW52aXJvbm1lbnQoKSk7CisgICAgaWYgKHNob3VsZEVtaXRQcml2YXRlQnJhbmQp
CisgICAgICAgIGdlbmVyYXRvci5lbWl0Q3JlYXRlUHJpdmF0ZUJyYW5kKGdlbmVyYXRvci5zY29w
ZVJlZ2lzdGVyKCksIG1fcG9zaXRpb24sIG1fcG9zaXRpb24sIG1fcG9zaXRpb24pOworCiAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHN1cGVyY2xhc3M7CiAgICAgaWYgKG1fY2xhc3NIZXJpdGFnZSkg
ewogICAgICAgICBzdXBlcmNsYXNzID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwpAQCAtNDkw
NywxNyArNDk0NSwxOCBAQCBSZWdpc3RlcklEKiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogICAgIGJvb2wgbmVlZHNI
b21lT2JqZWN0ID0gZmFsc2U7CiAKICAgICBhdXRvIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
ID0gdGhpcy0+aGFzSW5zdGFuY2VGaWVsZHMoKSA/IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
OjpZZXMgOiBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm87Ci0KKyAgICBhdXRvIHByaXZh
dGVCcmFuZFJlcXVpcmVtZW50ID0gc2hvdWxkRW1pdFByaXZhdGVCcmFuZCA/IFByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50OjpOZWVkZWQgOiBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZTsKICAg
ICBpZiAobV9jb25zdHJ1Y3RvckV4cHJlc3Npb24pIHsKICAgICAgICAgQVNTRVJUKG1fY29uc3Ry
dWN0b3JFeHByZXNzaW9uLT5pc0Z1bmNFeHByTm9kZSgpKTsKICAgICAgICAgRnVuY3Rpb25NZXRh
ZGF0YU5vZGUqIG1ldGFkYXRhID0gc3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4obV9jb25zdHJ1
Y3RvckV4cHJlc3Npb24pLT5tZXRhZGF0YSgpOwogICAgICAgICBtZXRhZGF0YS0+c2V0RWNtYU5h
bWUoZWNtYU5hbWUoKSk7CiAgICAgICAgIG1ldGFkYXRhLT5zZXRDbGFzc1NvdXJjZShtX2NsYXNz
U291cmNlKTsKICAgICAgICAgbWV0YWRhdGEtPnNldE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
KG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyID09IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
OjpZZXMpOworICAgICAgICBtZXRhZGF0YS0+c2V0UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQocHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQpOwogICAgICAgICBjb25zdHJ1Y3RvciA9IGdlbmVyYXRvci5l
bWl0Tm9kZShjb25zdHJ1Y3Rvci5nZXQoKSwgbV9jb25zdHJ1Y3RvckV4cHJlc3Npb24pOwogICAg
ICAgICBuZWVkc0hvbWVPYmplY3QgPSBtX2NsYXNzSGVyaXRhZ2UgfHwgbWV0YWRhdGEtPnN1cGVy
QmluZGluZygpID09IFN1cGVyQmluZGluZzo6TmVlZGVkOwogICAgIH0gZWxzZQotICAgICAgICBj
b25zdHJ1Y3RvciA9IGdlbmVyYXRvci5lbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKGNvbnN0cnVj
dG9yLmdldCgpLCBtX2NsYXNzSGVyaXRhZ2UgPyBDb25zdHJ1Y3RvcktpbmQ6OkV4dGVuZHMgOiBD
b25zdHJ1Y3RvcktpbmQ6OkJhc2UsIG1fbmFtZSwgZWNtYU5hbWUoKSwgbV9jbGFzc1NvdXJjZSwg
bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpOworICAgICAgICBjb25zdHJ1Y3RvciA9IGdlbmVy
YXRvci5lbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKGNvbnN0cnVjdG9yLmdldCgpLCBtX2NsYXNz
SGVyaXRhZ2UgPyBDb25zdHJ1Y3RvcktpbmQ6OkV4dGVuZHMgOiBDb25zdHJ1Y3RvcktpbmQ6OkJh
c2UsIG1fbmFtZSwgZWNtYU5hbWUoKSwgbV9jbGFzc1NvdXJjZSwgbmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIsIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KTsKIAogICAgIGNvbnN0IGF1dG8mIHBy
b3BlcnR5TmFtZXMgPSBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpOwogICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBwcm90b3R5cGUgPSBnZW5lcmF0b3IuZW1pdE5ld09iamVjdChnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCkpOwpAQCAtNDk5Niw2ICs1MDM1LDkgQEAgUmVnaXN0ZXJJRCogQ2xhc3NFeHBy
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQKICAgICBpZiAobV9uZWVkc0xleGljYWxTY29wZSkKICAgICAgICAgZ2VuZXJhdG9yLnBvcExl
eGljYWxTY29wZSh0aGlzKTsKIAorICAgIGlmIChoYXNQcml2YXRlTmFtZXMpCisgICAgICAgIGdl
bmVyYXRvci5wb3BQcml2YXRlQWNjZXNzTmFtZXMoKTsKKwogICAgIHJldHVybiBnZW5lcmF0b3Iu
bW92ZShnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIGNvbnN0cnVjdG9yLmdldCgpKSwg
Y29uc3RydWN0b3IuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAppbmRleCA4NzdlNjMyNTUwYmMuLjc0MGFk
ODJjNzk1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyQ2FsbEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJDYWxsRnJhbWUuY3BwCkBAIC0yNTksMTEgKzI1OSwxMSBAQCBKU1ZhbHVlIERlYnVnZ2Vy
Q2FsbEZyYW1lOjpldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihjb25zdCBTdHJpbmcmIHNjcmlw
dCwgSlNPYgogICAgICAgICBldmFsQ29udGV4dFR5cGUgPSBFdmFsQ29udGV4dFR5cGU6Ok5vbmU7
CiAKICAgICBURFpFbnZpcm9ubWVudCB2YXJpYWJsZXNVbmRlclREWjsKLSAgICBWYXJpYWJsZUVu
dmlyb25tZW50IHByaXZhdGVOYW1lczsKLSAgICBKU1Njb3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlh
Ymxlc1VuZGVyVERaKHNjb3BlKCktPmpzU2NvcGUoKSwgdmFyaWFibGVzVW5kZXJURFosIHByaXZh
dGVOYW1lcyk7CisgICAgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCBwcml2YXRlTmFtZUVudmlyb25t
ZW50OworICAgIEpTU2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFooc2NvcGUo
KS0+anNTY29wZSgpLCB2YXJpYWJsZXNVbmRlclREWiwgcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCk7
CiAKICAgICBFQ01BTW9kZSBlY21hTW9kZSA9IGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCkt
PmlzSW5TdHJpY3RDb250ZXh0KCkgPyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xv
cHB5KCk7Ci0gICAgYXV0byogZXZhbCA9IERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZ2xv
YmFsT2JqZWN0LCBtYWtlU291cmNlKHNjcmlwdCwgY2FsbEZyYW1lLT5jYWxsZXJTb3VyY2VPcmln
aW4odm0pKSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5kZXJpdmVkQ29udGV4dFR5
cGUoKSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5uZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplcigpLCBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmlzQXJyb3dGdW5jdGlv
bigpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0luc2lkZU9yZGluYXJ5RnVuY3Rp
b24oKSwgZXZhbENvbnRleHRUeXBlLCAmdmFyaWFibGVzVW5kZXJURFosICZwcml2YXRlTmFtZXMs
IGVjbWFNb2RlKTsKKyAgICBhdXRvKiBldmFsID0gRGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0
ZShnbG9iYWxPYmplY3QsIG1ha2VTb3VyY2Uoc2NyaXB0LCBjYWxsRnJhbWUtPmNhbGxlclNvdXJj
ZU9yaWdpbih2bSkpLCBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmRlcml2ZWRDb250
ZXh0VHlwZSgpLCBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPm5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyKCksIGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+cHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQoKSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5pc0Fycm93
RnVuY3Rpb24oKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJbnNpZGVPcmRpbmFy
eUZ1bmN0aW9uKCksIGV2YWxDb250ZXh0VHlwZSwgJnZhcmlhYmxlc1VuZGVyVERaLCAmcHJpdmF0
ZU5hbWVFbnZpcm9ubWVudCwgZWNtYU1vZGUpOwogICAgIGlmIChVTkxJS0VMWShjYXRjaFNjb3Bl
LmV4Y2VwdGlvbigpKSkgewogICAgICAgICBleGNlcHRpb24gPSBjYXRjaFNjb3BlLmV4Y2VwdGlv
bigpOwogICAgICAgICBjYXRjaFNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggMTBiODVhZDkxNWE5Li5h
Y2EwMGRlNGY2NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2Fw
YWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxp
dGllcy5jcHAKQEAgLTI5NCw2ICsyOTQsOCBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxl
dmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSQogICAg
IGNhc2Ugb3Bfc3VwZXJfc2FtcGxlcl9lbmQ6CiAgICAgY2FzZSBvcF9nZXRfcHJpdmF0ZV9uYW1l
OgogICAgIGNhc2Ugb3BfcHV0X3ByaXZhdGVfbmFtZToKKyAgICBjYXNlIG9wX3NldF9wcml2YXRl
X2JyYW5kOgorICAgIGNhc2Ugb3BfY2hlY2tfcHJpdmF0ZV9icmFuZDoKICAgICAgICAgcmV0dXJu
IENhbkNvbXBpbGVBbmRJbmxpbmU7CiAKICAgICBjYXNlIG9wX3N3aXRjaF9zdHJpbmc6IC8vIERv
bid0IGlubGluZSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gY29weSBzdHJpbmcgdGFibGVzIGlu
IHRoZSBjb25jdXJyZW50IEpJVC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAppbmRl
eCBiM2E5YmZmNWNkMmEuLjk3NGZmZmMyZWVmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R3JhcGguaApAQCAtMTE4Miw2ICsxMTgyLDcgQEAgcHVibGljOgogICAgIFJlZ2lzdGVyZWRTdHJ1
Y3R1cmUgc3ltYm9sU3RydWN0dXJlOwogCiAgICAgSGFzaFNldDxOb2RlKj4gbV9zbG93R2V0QnlW
YWw7CisgICAgSGFzaFNldDxOb2RlKj4gbV9wcml2YXRlQnJhbmRBY2Nlc3M7CiAKIHByaXZhdGU6
CiAgICAgYm9vbCBpc1N0cmluZ1Byb3RvdHlwZU1ldGhvZFNhbmUoSlNHbG9iYWxPYmplY3QqLCBV
bmlxdWVkU3RyaW5nSW1wbCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggYjA1MTdiZDk3N2MxLi43ZWY5NTkxOTk1Y2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNw
cApAQCAtMTQ0LDkgKzE0NCw5IEBAIEpTVmFsdWUgZXZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgRUNNQU1vZGUgZWNtYU1vCiAgICAgICAgIH0K
ICAgICAgICAgCiAgICAgICAgIFREWkVudmlyb25tZW50IHZhcmlhYmxlc1VuZGVyVERaOwotICAg
ICAgICBWYXJpYWJsZUVudmlyb25tZW50IHByaXZhdGVOYW1lczsKLSAgICAgICAgSlNTY29wZTo6
Y29sbGVjdENsb3N1cmVWYXJpYWJsZXNVbmRlclREWihjYWxsZXJTY29wZUNoYWluLCB2YXJpYWJs
ZXNVbmRlclREWiwgcHJpdmF0ZU5hbWVzKTsKLSAgICAgICAgZXZhbCA9IERpcmVjdEV2YWxFeGVj
dXRhYmxlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtYWtlU291cmNlKHByb2dyYW1Tb3VyY2UsIGNh
bGxlckNvZGVCbG9jay0+c291cmNlKCkucHJvdmlkZXIoKS0+c291cmNlT3JpZ2luKCkpLCBkZXJp
dmVkQ29udGV4dFR5cGUsIGNhbGxlclVubGlua2VkQ29kZUJsb2NrLT5uZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplcigpLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBjYWxsZXJDb2RlQmxvY2stPm93
bmVyRXhlY3V0YWJsZSgpLT5pc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24oKSwgZXZhbENvbnRleHRU
eXBlLCAmdmFyaWFibGVzVW5kZXJURFosICZwcml2YXRlTmFtZXMsIGVjbWFNb2RlKTsKKyAgICAg
ICAgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCBwcml2YXRlTmFtZUVudmlyb25tZW50OworICAgICAg
ICBKU1Njb3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKGNhbGxlclNjb3BlQ2hh
aW4sIHZhcmlhYmxlc1VuZGVyVERaLCBwcml2YXRlTmFtZUVudmlyb25tZW50KTsKKyAgICAgICAg
ZXZhbCA9IERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtYWtlU291
cmNlKHByb2dyYW1Tb3VyY2UsIGNhbGxlckNvZGVCbG9jay0+c291cmNlKCkucHJvdmlkZXIoKS0+
c291cmNlT3JpZ2luKCkpLCBkZXJpdmVkQ29udGV4dFR5cGUsIGNhbGxlclVubGlua2VkQ29kZUJs
b2NrLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBjYWxsZXJVbmxpbmtlZENvZGVCbG9j
ay0+cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgY2Fs
bGVyQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9u
KCksIGV2YWxDb250ZXh0VHlwZSwgJnZhcmlhYmxlc1VuZGVyVERaLCAmcHJpdmF0ZU5hbWVFbnZp
cm9ubWVudCwgZWNtYU1vZGUpOwogICAgICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhj
ZXB0aW9uKCkgPT0gIWV2YWwpOwogICAgICAgICBpZiAoIWV2YWwpCiAgICAgICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBhY2MzNGQw
ZWE4YmMuLjUwZGQ2YmE1ZjAxOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMzU4
LDYgKzM1OCw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAg
REVGSU5FX09QKG9wX2dldF9ieV9pZF9kaXJlY3QpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRf
YnlfdmFsKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X3ByaXZhdGVfbmFtZSkKKyAgICAgICAg
REVGSU5FX09QKG9wX3NldF9wcml2YXRlX2JyYW5kKQorICAgICAgICBERUZJTkVfT1Aob3BfY2hl
Y2tfcHJpdmF0ZV9icmFuZCkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9wcm90b3R5cGVfb2Yp
CiAgICAgICAgIERFRklORV9PUChvcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlKQogICAgICAgICBE
RUZJTkVfT1Aob3BfaW5zdGFuY2VvZikKQEAgLTU2NCw2ICs1NjYsOCBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZ2V0
X2J5X2lkX2RpcmVjdCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2dldF9ieV92YWwp
CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9nZXRfcHJpdmF0ZV9uYW1lKQorICAgICAg
ICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bfc2V0X3ByaXZhdGVfYnJhbmQpCisgICAgICAgIERFRklO
RV9TTE9XQ0FTRV9PUChvcF9jaGVja19wcml2YXRlX2JyYW5kKQogICAgICAgICBERUZJTkVfU0xP
V0NBU0VfT1Aob3BfaW5zdGFuY2VvZikKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2lu
c3RhbmNlb2ZfY3VzdG9tKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bfamxlc3MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA3YzM1YjU2NzM0NzcuLjU5YmNiNjY3MGNmMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC01NjMsNiArNTYzLDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7
CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9u
Kik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVj
dGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbChj
b25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X3Byb3RvdHlwZV9v
Zihjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfaW5fYnlfaWQoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKQEAgLTY5NSw2ICs2OTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRT
bG93X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFt
ZShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsK
KyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBl
bWl0U2xvd19vcF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dl
dF9hcmd1bWVudF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaW5fYnlfaWQoY29uc3Qg
SW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAg
IHZvaWQgZW1pdFNsb3dfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCmluZGV4IDRlNGQzMTk0MzEwOS4uODE5NjM1OGViMGM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTEwOTQsNiArMTA5
NCw0MyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxH
ZW5lcmljLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqCiAgICAgZGlyZWN0UHV0QnlWYWwoZ2xvYmFs
T2JqZWN0LCBhc09iamVjdChiYXNlVmFsdWUpLCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8s
IGVjbWFNb2RlKTsKIH0KIAorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblNldFBy
aXZhdGVCcmFuZEdlbmVyaWMsIHZvaWQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQnJh
bmQpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOworICAgIEpTVmFsdWUgYnJhbmQgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJyYW5kKTsKKworICAgIEFTU0VSVChiYXNlVmFsdWUuaXNP
YmplY3QoKSk7CisgICAgQVNTRVJUKGJyYW5kLmlzU3ltYm9sKCkpOworCisgICAgSlNPYmplY3Qq
IGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOworICAgIGJhc2VPYmplY3QtPnNldFBy
aXZhdGVCcmFuZChnbG9iYWxPYmplY3QsIGJyYW5kKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB2b2lkKCkpOworfQorCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
Q2hlY2tQcml2YXRlQnJhbmRHZW5lcmljLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJyYW5kKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIGJhc2VW
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZVZhbHVlKTsKKyAgICBKU1ZhbHVlIGJy
YW5kID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCcmFuZCk7CisKKyAgICBKU09iamVjdCogYmFz
ZU9iamVjdCA9IGJhc2VWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBBU1NFUlQoYnJhbmQuaXNTeW1ib2wo
KSk7CisKKyAgICBiYXNlT2JqZWN0LT5jaGVja1ByaXZhdGVCcmFuZChnbG9iYWxPYmplY3QsIGJy
YW5kKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworfQorCiBKU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgdm9p
ZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRC
YXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIFByaXZhdGVGaWVsZFB1dEtpbmQg
cHV0S2luZCkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMjI4MCw2
ICsyMzE3LDggQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNWYWx1ZSBnZXRQcml2YXRlTmFtZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnIKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwogCiAgICAgSlNPYmplY3QqIGJhc2UgPSBiYXNlVmFsdWUu
dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBK
U1ZhbHVlKCkpOworCiAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZSwgUHJvcGVydHlTbG90OjpJ
bnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5KTsKICAgICBiYXNlLT5nZXRQcml2YXRl
RmllbGQoZ2xvYmFsT2JqZWN0LCBmaWVsZE5hbWUsIHNsb3QpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CkBAIC0yMzg2LDcgKzI0MjUsNyBAQCBKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVCeUlkT3B0aW1pemUsIEVuY29k
ZWRKU1ZhbHVlLCAoSgogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QuZ2V0VmFs
dWUoZ2xvYmFsT2JqZWN0LCBmaWVsZE5hbWUpKTsKICAgICB9CiAKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGdldFByaXZhdGVOYW1lKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlVmFs
dWUsIGZpZWxkTmFtZSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKGdldFByaXZhdGVOYW1lKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlVmFsdWUs
IGZpZWxkTmFtZSkpKTsKIH0KIAogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdl
dFByaXZhdGVOYW1lQnlJZEdlbmVyaWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgdWludHB0cl90IHJhd0NhY2hlYWJs
ZUlkZW50aWZpZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApp
bmRleCA5NDI1YjUxN2Y5OGUuLjQ4YjM4OGVjYjg1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTE5Miw2ICsxOTIsOSBAQCBKU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6
ZSwgdm9pZAogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeUlkU2V0UHJp
dmF0ZUZpZWxkU3RyaWN0LCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5m
byosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJh
c2UsIHVpbnRwdHJfdCkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRC
eUlkU2V0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSk7CiAKK0pTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kR2VuZXJpYywgdm9pZCwgKEpTR2xvYmFsT2Jq
ZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSk7CitKU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kR2VuZXJpYywgdm9pZCwgKEpTR2xv
YmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSk7CisKIEpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgdm9pZCwg
KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSwgQnlWYWxJbmZvKiwgUHJpdmF0ZUZpZWxkUHV0S2luZCkpOwogSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWMsIHZvaWQsIChKU0ds
b2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUsIEJ5VmFsSW5mbyosIFByaXZhdGVGaWVsZFB1dEtpbmQpKTsKIEpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0
KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJ
bmZvKiwgRUNNQU1vZGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHAKaW5kZXggMGJkOWZjNjNhYTk4Li5lMzA1OGRjM2YzMWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0xNDIs
NiArMTQyLDU1IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlCiAgICAgZ2VuLnJlcG9ydFNsb3dQ
YXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3Bfc2V0
X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sK
KyAgICAvLyBPT1BTOiBJbXBsZW1lbnQgdGhpcworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wU2V0UHJpdmF0ZUJyYW5kPigpOworICAgIFZpcnR1YWxSZWdpc3Rl
ciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOworICAgIFZpcnR1YWxSZWdpc3RlciBicmFuZCA9IGJ5
dGVjb2RlLm1fYnJhbmQ7CisgICAgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKKyAgICBHUFJSZWcg
YnJhbmRHUFIgPSByZWdUMTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VH
UFIpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnJhbmQsIGJyYW5kR1BSKTsKKworICAg
IGFkZFNsb3dDYXNlKGp1bXAoKSk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9zZXRfcHJp
dmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIEdQUlJlZyBiYXNlR1BSID0g
cmVnVDA7CisgICAgR1BSUmVnIGJyYW5kR1BSID0gcmVnVDE7CisKKyAgICBsaW5rQWxsU2xvd0Nh
c2VzKGl0ZXIpOworCisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRH
ZW5lcmljLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGJhc2VH
UFIsIGJyYW5kR1BSKTsKK30KKwordm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFu
ZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIC8vIE9PUFM6
IEltcGxlbWVudCB0aGlzCisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BDaGVja1ByaXZhdGVCcmFuZD4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5
dGVjb2RlLm1fYmFzZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYnJhbmQgPSBieXRlY29kZS5tX2Jy
YW5kOworICAgIEdQUlJlZyBiYXNlR1BSID0gcmVnVDA7CisgICAgR1BSUmVnIGJyYW5kR1BSID0g
cmVnVDE7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlR1BSKTsKKyAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJyYW5kLCBicmFuZEdQUik7CisKKyAgICBhZGRTbG93Q2Fz
ZShqdW1wKCkpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFu
ZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIC8vIE9PUFM6IEltcGxlbWVudCB0aGlzCisg
ICAgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKKyAgICBHUFJSZWcgYnJhbmRHUFIgPSByZWdUMTsK
KworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkNoZWNrUHJpdmF0ZUJyYW5kR2VuZXJpYywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCkpLCBiYXNlR1BSLCBicmFuZEdQUik7Cit9CisKIHZvaWQgSklUOjplbWl0
X29wX3B1dF9ieV92YWxfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CiAgICAgZW1pdF9vcF9wdXRfYnlfdmFsPE9wUHV0QnlWYWxEaXJlY3Q+KGN1cnJlbnRJ
bnN0cnVjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcAppbmRleCA2Y2ViMWM2NzdiZDUuLmM5MjY2MjVmZTU3OCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0xMzAyLDYgKzEzMDIs
NzcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9wcml2YXRlX25hbWUpCiAg
ICAgTExJTlRfRU5EKCk7ICAgIAogfQogCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
c2V0X3ByaXZhdGVfYnJhbmQpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKworICAgIGF1dG8gYnl0
ZWNvZGUgPSBwYy0+YXM8T3BTZXRQcml2YXRlQnJhbmQ+KCk7CisgICAgSlNWYWx1ZSBiYXNlVmFs
dWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKTsKKyAgICBKU1ZhbHVl
IGJyYW5kID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYnJhbmQpOworICAgIGF1
dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAgICBBU1NFUlQo
YmFzZVZhbHVlLmlzT2JqZWN0KCkpOworICAgIEFTU0VSVChicmFuZC5pc1N5bWJvbCgpKTsKKwor
ICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKKyAgICBTdHJ1
Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IGJhc2VPYmplY3QtPnN0cnVjdHVyZSh2bSk7CisKKyAgICBi
YXNlT2JqZWN0LT5zZXRQcml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0LCBicmFuZCk7CisgICAgTExJ
TlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisKKyAgICBpZiAoIUxMSU5UX0FMV0FZU19BQ0NFU1NfU0xP
VyAmJiAhb2xkU3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkgeworICAgICAgICBHQ1NhZmVDb25j
dXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrLCB2bS5oZWFwKTsKKyAgICAg
ICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUodm0pOwor
CisgICAgICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUgPT0gbmV3U3RydWN0dXJlLT5wcmV2aW91c0lE
KCkpOworICAgICAgICBBU1NFUlQob2xkU3RydWN0dXJlLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNl
dEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKKworICAgICAgICAvLyBTdGFydCBvdXQgYnkgY2xlYXJp
bmcgb3V0IHRoZSBvbGQgY2FjaGUuCisgICAgICAgIG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQg
PSAwOworICAgICAgICBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEID0gMDsKKyAgICAgICAgbWV0
YWRhdGEubV9icmFuZC5jbGVhcigpOworCisgICAgICAgIGlmICghbmV3U3RydWN0dXJlLT5pc0Rp
Y3Rpb25hcnkoKSkgeworICAgICAgICAgICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IG9s
ZFN0cnVjdHVyZS0+aWQoKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQg
PSBuZXdTdHJ1Y3R1cmUtPmlkKCk7CisgICAgICAgICAgICBtZXRhZGF0YS5tX2JyYW5kLnNldCh2
bSwgY29kZUJsb2NrLCBicmFuZC5hc0NlbGwoKSk7CisgICAgICAgIH0KKyAgICAgICAgdm0uaGVh
cC53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKKyAgICB9CisKKyAgICBMTElOVF9FTkQoKTsgICAg
Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jaGVja19wcml2YXRlX2JyYW5k
KQoreworICAgIExMSU5UX0JFR0lOKCk7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9w
Q2hlY2tQcml2YXRlQnJhbmQ+KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRh
ZGF0YShjb2RlQmxvY2spOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gZ2V0T3BlcmFuZChjYWxs
RnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSk7CisgICAgSlNWYWx1ZSBicmFuZCA9IGdldE9wZXJhbmQo
Y2FsbEZyYW1lLCBieXRlY29kZS5tX2JyYW5kKTsKKworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0
ID0gYmFzZVZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgTExJTlRfQ0hFQ0tfRVhD
RVBUSU9OKCk7CisKKyAgICBBU1NFUlQoYnJhbmQuaXNTeW1ib2woKSk7CisKKyAgICBiYXNlT2Jq
ZWN0LT5jaGVja1ByaXZhdGVCcmFuZChnbG9iYWxPYmplY3QsIGJyYW5kKTsKKyAgICBMTElOVF9D
SEVDS19FWENFUFRJT04oKTsKKworICAgIC8vIE9PUFM6IElzIHRoZXJlIHJlYWxseSBhIGNhc2Ug
d2hlcmUgd2UgZG9uJ3Qgd2FudCB0byBjYWNoZSBoZXJlPworICAgIC8vIFNpbmNlIGEgYnJhbmQg
Y2FuIG5ldmVyIGJlIGRlbGV0ZWQsIGl0J3Mgc2FmZSB0byByZWx5IG9uIFN0cnVjdHVyZUlECisg
ICAgLy8gZXZlbiBpZiBpdCdzIGFuIHVuY2FjaGVhYmxlIGRpY3Rpb25hcnkuCisgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUodm0pOworICAgIGlmICghTExJ
TlRfQUxXQVlTX0FDQ0VTU19TTE9XKSB7CisgICAgICAgIEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tl
ciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2ssIHZtLmhlYXApOworCisgICAgICAgIG1ldGFkYXRh
Lm1fc3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7CisgICAgICAgIHZtLmhlYXAud3JpdGVC
YXJyaWVyKGNvZGVCbG9jayk7CisgICAgfQorCisgICAgTExJTlRfRU5EKCk7ICAgIAorfQorCiBM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCkKIHsKICAgICBMTElOVF9C
RUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQppbmRleCBlMTJkYzM4M2JjZTcuLjE3NjliNWY1NTQ5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20KQEAgLTE4MTUsNiArMTgxNSw0MiBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF9w
cml2YXRlX25hbWUsIE9wUHV0UHJpdmF0ZU5hbWUsIG1hY3JvIChzaXplLCBnZXQsIGRpcwogICAg
IGRpc3BhdGNoKCkKIGVuZCkKIAorbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9zZXRfcHJpdmF0ZV9i
cmFuZCwgT3BTZXRQcml2YXRlQnJhbmQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRh
ZGF0YSwgcmV0dXJuKQorICAgIGdldChtX2Jhc2UsIHQzKQorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGVDZWxsKHNpemUsIHQzLCB0MCwgLm9wU2V0UHJpdmF0ZUJyYW5kU2xvdykKKyAgICBnZXQo
bV9icmFuZCwgdDMpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDMsIHQx
LCAub3BTZXRQcml2YXRlQnJhbmRTbG93KQorICAgIG1ldGFkYXRhKHQ1LCB0MikKKyAgICBsb2Fk
aSBPcFNldFByaXZhdGVCcmFuZDo6TWV0YWRhdGE6Om1fb2xkU3RydWN0dXJlSURbdDVdLCB0Mgor
ICAgIGJpbmVxIHQyLCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCAub3BTZXRQcml2YXRlQnJh
bmRTbG93CisKKyAgICBsb2FkcCBPcFNldFByaXZhdGVCcmFuZDo6TWV0YWRhdGE6Om1fYnJhbmRb
dDVdLCB0MworICAgIGJxbmVxIHQzLCB0MSwgLm9wU2V0UHJpdmF0ZUJyYW5kU2xvdworCisgICAg
bG9hZGkgT3BTZXRQcml2YXRlQnJhbmQ6Ok1ldGFkYXRhOjptX25ld1N0cnVjdHVyZUlEW3Q1XSwg
dDEKKyAgICBzdG9yZWkgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0KKyAgICBkaXNwYXRj
aCgpCisKKy5vcFNldFByaXZhdGVCcmFuZFNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9z
bG93X3BhdGhfc2V0X3ByaXZhdGVfYnJhbmQpCisgICAgZGlzcGF0Y2goKQorZW5kKQorCitsbGlu
dE9wV2l0aE1ldGFkYXRhKG9wX2NoZWNrX3ByaXZhdGVfYnJhbmQsIE9wQ2hlY2tQcml2YXRlQnJh
bmQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorICAgIGdl
dChtX2Jhc2UsIHQzKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQzLCB0
MCwgLm9wQ2hlY2tQcml2YXRlQnJhbmRTbG93KQorICAgIGdldChtX2JyYW5kLCB0MykKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChzaXplLCB0MywgdDEsIC5vcENoZWNrUHJpdmF0ZUJy
YW5kU2xvdykKKyAgICBtZXRhZGF0YSh0NSwgdDIpCisgICAgbG9hZGkgT3BDaGVja1ByaXZhdGVC
cmFuZDo6TWV0YWRhdGE6Om1fc3RydWN0dXJlSURbdDVdLCB0MgorICAgIGJpbmVxIHQyLCBKU0Nl
bGw6Om1fc3RydWN0dXJlSURbdDBdLCAub3BDaGVja1ByaXZhdGVCcmFuZFNsb3cKKyAgICBkaXNw
YXRjaCgpCisKKy5vcENoZWNrUHJpdmF0ZUJyYW5kU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xs
aW50X3Nsb3dfcGF0aF9jaGVja19wcml2YXRlX2JyYW5kKQorICAgIGRpc3BhdGNoKCkKK2VuZCkK
KwogbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIG9zckV4aXRQb2lu
dCkKICAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1lJSwgb3Bjb2RlU3RydWN0
LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKICAgICAgICAg
bWFjcm8gY29udGlndW91c1B1dEJ5VmFsKHN0b3JlQ2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IDY0YTY2Zjc2NWM4Zi4uMDJiNzg3NWNjYWY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApAQCAtMjAyLDYgKzIwMiw3IEBAIEZ1
bmN0aW9uTWV0YWRhdGFOb2RlOjpGdW5jdGlvbk1ldGFkYXRhTm9kZSgKICAgICAgICAgLCBtX2Nv
bnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkKICAg
ICAgICAgLCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8pKQogICAgICAgICAsIG1faXNBcnJvd0Z1
bmN0aW9uQm9keUV4cHJlc3Npb24oaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCisgICAg
ICAgICwgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmUpKQogICAgICAgICAsIG1fcGFyc2VNb2RlKG1vZGUp
CiAgICAgICAgICwgbV9zdGFydENvbHVtbihzdGFydENvbHVtbikKICAgICAgICAgLCBtX2VuZENv
bHVtbihlbmRDb2x1bW4pCkBAIC0yMjYsNiArMjI3LDcgQEAgRnVuY3Rpb25NZXRhZGF0YU5vZGU6
OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKAogICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKQogICAgICAgICAsIG1fbmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyOjpObykpCiAgICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lv
bihpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKKyAgICAgICAgLCBtX3ByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50KHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcml2YXRlQnJhbmRSZXF1aXJlbWVu
dDo6Tm9uZSkpCiAgICAgICAgICwgbV9wYXJzZU1vZGUobW9kZSkKICAgICAgICAgLCBtX3N0YXJ0
Q29sdW1uKHN0YXJ0Q29sdW1uKQogICAgICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCBlZDkwNzc1MzkwNTcuLjRiZjkzODZm
MjZmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtNzIxLDcgKzcyMSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGVudW0gY2xhc3MgQ2xhc3NFbGVtZW50VGFnIDogdWlu
dDhfdCB7IE5vLCBJbnN0YW5jZSwgU3RhdGljLCBMYXN0VGFnIH07CiAgICAgY2xhc3MgUHJvcGVy
dHlOb2RlIGZpbmFsIDogcHVibGljIFBhcnNlckFyZW5hRnJlZWFibGUgewogICAgIHB1YmxpYzoK
LSAgICAgICAgZW51bSBUeXBlIDogdWludDhfdCB7IENvbnN0YW50ID0gMSwgR2V0dGVyID0gMiwg
U2V0dGVyID0gNCwgQ29tcHV0ZWQgPSA4LCBTaG9ydGhhbmQgPSAxNiwgU3ByZWFkID0gMzIsIFBy
aXZhdGUgPSA2NCB9OworICAgICAgICBlbnVtIFR5cGUgOiB1aW50OF90IHsgQ29uc3RhbnQgPSAx
LCBHZXR0ZXIgPSAyLCBTZXR0ZXIgPSA0LCBDb21wdXRlZCA9IDgsIFNob3J0aGFuZCA9IDE2LCBT
cHJlYWQgPSAzMiwgUHJpdmF0ZUZpZWxkID0gNjQsIFByaXZhdGVNZXRob2QgPSAxMjggfTsKIAog
ICAgICAgICBQcm9wZXJ0eU5vZGUoY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiwg
VHlwZSwgU3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcpOwogICAgICAgICBQcm9wZXJ0eU5v
ZGUoRXhwcmVzc2lvbk5vZGUqLCBUeXBlLCBTdXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZyk7
CkBAIC03NDAsNyArNzQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgaXNJbnN0
YW5jZUNsYXNzRmllbGQoKSBjb25zdCB7IHJldHVybiBpc0luc3RhbmNlQ2xhc3NQcm9wZXJ0eSgp
ICYmICFuZWVkc1N1cGVyQmluZGluZygpOyB9CiAgICAgICAgIGJvb2wgaXNTdGF0aWNDbGFzc0Zp
ZWxkKCkgY29uc3QgeyByZXR1cm4gaXNTdGF0aWNDbGFzc1Byb3BlcnR5KCkgJiYgIW5lZWRzU3Vw
ZXJCaW5kaW5nKCk7IH0KICAgICAgICAgYm9vbCBpc092ZXJyaWRkZW5CeUR1cGxpY2F0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1faXNPdmVycmlkZGVuQnlEdXBsaWNhdGU7IH0KLSAgICAgICAgYm9vbCBp
c1ByaXZhdGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgJiBQcml2YXRlOyB9CisgICAgICAgIGJv
b2wgaXNQcml2YXRlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlICYgKFByaXZhdGVGaWVsZCB8IFBy
aXZhdGVNZXRob2QpOyB9CiAgICAgICAgIGJvb2wgaGFzQ29tcHV0ZWROYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9leHByZXNzaW9uOyB9CiAgICAgICAgIGJvb2wgaXNDb21wdXRlZENsYXNzRmllbGQo
KSBjb25zdCB7IHJldHVybiBpc0NsYXNzRmllbGQoKSAmJiBoYXNDb21wdXRlZE5hbWUoKTsgfQog
ICAgICAgICB2b2lkIHNldElzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlKCkgeyBtX2lzT3ZlcnJpZGRl
bkJ5RHVwbGljYXRlID0gdHJ1ZTsgfQpAQCAtNzYwLDcgKzc2MCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBtX25hbWU7CiAgICAgICAgIEV4cHJlc3Npb25O
b2RlKiBtX2V4cHJlc3Npb247CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Fzc2lnbjsKLSAg
ICAgICAgdW5zaWduZWQgbV90eXBlIDogNzsKKyAgICAgICAgdW5zaWduZWQgbV90eXBlOwogICAg
ICAgICB1bnNpZ25lZCBtX25lZWRzU3VwZXJCaW5kaW5nIDogMTsKICAgICAgICAgc3RhdGljX2Fz
c2VydCgxIDw8IDIgPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ2xhc3NFbGVtZW50VGFnOjpMYXN0
VGFnKSwgIkNsYXNzRWxlbWVudFRhZyBzaG91bGRuJ3QgdXNlIG1vcmUgdGhhbiB0d28gYml0cyIp
OwogICAgICAgICB1bnNpZ25lZCBtX2NsYXNzRWxlbWVudFRhZyA6IDI7CkBAIC04MzgsNyArODM4
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9zdWJzY3JpcHRIYXNBc3NpZ25t
ZW50czsKICAgICB9OwogCi0gICAgZW51bSBjbGFzcyBEb3RUeXBlIHsgTmFtZSwgUHJpdmF0ZUZp
ZWxkIH07CisgICAgZW51bSBjbGFzcyBEb3RUeXBlIHsgTmFtZSwgUHJpdmF0ZU1lbWJlciB9Owog
ICAgIGNsYXNzIEJhc2VEb3ROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJs
aWM6CiAgICAgICAgIEJhc2VEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRG90VHlwZSk7CkBAIC04NDYsNyArODQ2
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBiYXNlKCkgY29u
c3QgeyByZXR1cm4gbV9iYXNlOyB9CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZp
ZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50OyB9CiAgICAgICAgIERvdFR5cGUgdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdHlwZTsgfQotICAgICAgICBib29sIGlzUHJpdmF0ZUZpZWxkKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlID09IERvdFR5cGU6OlByaXZhdGVGaWVsZDsgfQorICAgICAgICBi
b29sIGlzUHJpdmF0ZU1lbWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBEb3RUeXBlOjpQ
cml2YXRlTWVtYmVyOyB9CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldFByb3BlcnR5VmFs
dWUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2Us
IFJlZlB0cjxSZWdpc3RlcklEPiYgdGhpc1ZhbHVlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dEdldFByb3BlcnR5VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIGJhc2UpOwpAQCAtODcwLDcgKzg3MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IG51bGxwdHIpIGZpbmFsOwogCiAgICAgICAgIGJvb2wgaXNMb2NhdGlvbigpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgYm9vbCBpc1ByaXZhdGVMb2NhdGlvbigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fdHlwZSA9PSBEb3RUeXBlOjpQcml2YXRlRmllbGQ7
IH0KKyAgICAgICAgYm9vbCBpc1ByaXZhdGVMb2NhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fdHlwZSA9PSBEb3RUeXBlOjpQcml2YXRlTWVtYmVyOyB9CiAgICAgICAgIGJvb2wgaXNE
b3RBY2Nlc3Nvck5vZGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgfTsKIApA
QCAtMjE2MSw2ICsyMTYxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgc2V0RWNt
YU5hbWUoY29uc3QgSWRlbnRpZmllciYgZWNtYU5hbWUpIHsgbV9lY21hTmFtZSA9IGVjbWFOYW1l
OyB9CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGVjbWFOYW1lKCkgeyByZXR1cm4gbV9pZGVu
dC5pc0VtcHR5KCkgPyBtX2VjbWFOYW1lIDogbV9pZGVudDsgfQogCisgICAgICAgIHZvaWQgc2V0
UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQpIHsgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihwcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7IH0KKyAgICAgICAgUHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSB7IHJldHVybiBzdGF0aWNf
Y2FzdDxQcml2YXRlQnJhbmRSZXF1aXJlbWVudD4obV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7
IH0KKwogICAgICAgICBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2RlKCkgeyByZXR1cm4gbV9mdW5j
dGlvbk1vZGU7IH0KIAogICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQoKSBjb25zdCB7IHJl
dHVybiBtX2Z1bmN0aW9uTmFtZVN0YXJ0OyB9CkBAIC0yMjA5LDYgKzIyMTIsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwogICAgICAg
ICB1bnNpZ25lZCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIDogMTsKICAgICAgICAgdW5z
aWduZWQgbV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA6IDE7CisgICAgICAgIHVuc2ln
bmVkIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgOiAxOwogICAgICAgICBTb3VyY2VQYXJzZU1v
ZGUgbV9wYXJzZU1vZGU7CiAgICAgICAgIEZ1bmN0aW9uTW9kZSBtX2Z1bmN0aW9uTW9kZTsKICAg
ICAgICAgSWRlbnRpZmllciBtX2lkZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwCmluZGV4IDllNWIxYTYzNmRlOS4uZmI5ZmY3OTY2ZjRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yODU3LDYgKzI4NTcsNyBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVDbGFzc0V4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlQ2xhc3MoVAogICAgIGNsYXNzU2NvcGUtPnNldElzTGV4aWNhbFNjb3BlKCk7CiAgICAg
Y2xhc3NTY29wZS0+cHJldmVudFZhckRlY2xhcmF0aW9ucygpOwogICAgIGNsYXNzU2NvcGUtPnNl
dFN0cmljdE1vZGUoKTsKKyAgICBib29sIGRlY2xhcmVzUHJpdmF0ZU1ldGhvZCA9IGZhbHNlOwog
CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShyZXF1aXJlbWVudHMgIT0gRnVuY3Rpb25OYW1lUmVx
dWlyZW1lbnRzOjpVbm5hbWVkLCAiQ3VycmVudGx5LCB0aGVyZSBpcyBubyBjYWxsZXIgdGhhdCB1
c2VzIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50czo6VW5uYW1lZCBmb3IgY2xhc3Mgc3ludGF4LiIp
OwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIShyZXF1aXJlbWVudHMgPT0gRnVuY3Rpb25OYW1l
UmVxdWlyZW1lbnRzOjpOb25lICYmICFpbmZvLmNsYXNzTmFtZSksICJXaGVuIHNwZWNpZnlpbmcg
RnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzOjpOb25lLCB3ZSBuZWVkIHRvIGluaXRpYWxpemUgaW5m
by5jbGFzc05hbWUgd2l0aCB0aGUgZGVmYXVsdCB2YWx1ZSBpbiB0aGUgY2FsbGVyIHNpZGUuIik7
CkBAIC0yOTc1LDE2ICsyOTc2LDIyIEBAIHBhcnNlTWV0aG9kOgogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgUFJJVkFURU5BTUU6IHsKICAgICAgICAgICAgIEFTU0VSVChPcHRpb25z
Ojp1c2VQcml2YXRlQ2xhc3NGaWVsZHMoKSk7Ci0gICAgICAgICAgICBKU1Rva2VuIHRva2VuID0g
bV90b2tlbjsKICAgICAgICAgICAgIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CiAgICAg
ICAgICAgICBpZiAoIU9wdGlvbnM6OnVzZVByaXZhdGVTdGF0aWNDbGFzc0ZpZWxkcygpKQogICAg
ICAgICAgICAgICAgIGZhaWxJZlRydWUodGFnID09IENsYXNzRWxlbWVudFRhZzo6U3RhdGljLCAi
U3RhdGljIGNsYXNzIGVsZW1lbnQgY2Fubm90IGJlIHByaXZhdGUiKTsKICAgICAgICAgICAgIGZh
aWxJZlRydWUoaXNHZXR0ZXIgfHwgaXNTZXR0ZXIsICJDYW5ub3QgcGFyc2UgY2xhc3MgbWV0aG9k
IHdpdGggcHJpdmF0ZSBuYW1lIik7CiAgICAgICAgICAgICBBU1NFUlQoaWRlbnQpOwogICAgICAg
ICAgICAgbmV4dCgpOwotICAgICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaEFuZFVwZGF0ZShPUEVO
UEFSRU4sIHRva2VuKSwgIkNhbm5vdCBwYXJzZSBjbGFzcyBtZXRob2Qgd2l0aCBwcml2YXRlIG5h
bWUiKTsKLSAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShjbGFzc1Njb3BlLT5kZWNsYXJl
UHJpdmF0ZU5hbWUoKmlkZW50KSAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRl
RGVjbGFyYXRpb24sICJDYW5ub3QgZGVjbGFyZSBwcml2YXRlIGZpZWxkIHR3aWNlIik7Ci0gICAg
ICAgICAgICB0eXBlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlIHwgUHJv
cGVydHlOb2RlOjpQcml2YXRlKTsKKyAgICAgICAgICAgIGlmIChPcHRpb25zOjp1c2VQcml2YXRl
TWV0aG9kcygpICYmIG1hdGNoKE9QRU5QQVJFTikpIHsKKyAgICAgICAgICAgICAgICBzZW1hbnRp
Y0ZhaWxJZlRydWUoY2xhc3NTY29wZS0+ZGVjbGFyZVByaXZhdGVNZXRob2QoKmlkZW50KSAmIERl
Y2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb24sICJDYW5ub3QgZGVj
bGFyZSBwcml2YXRlIG1ldGhvZCB0d2ljZSIpOworICAgICAgICAgICAgICAgIGRlY2xhcmVzUHJp
dmF0ZU1ldGhvZCA9IHRydWU7CisgICAgICAgICAgICAgICAgdHlwZSA9IHN0YXRpY19jYXN0PFBy
b3BlcnR5Tm9kZTo6VHlwZT4odHlwZSB8IFByb3BlcnR5Tm9kZTo6UHJpdmF0ZU1ldGhvZCk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZhaWxJ
ZlRydWUobWF0Y2goT1BFTlBBUkVOKSwgIkNhbm5vdCBwYXJzZSBjbGFzcyBtZXRob2Qgd2l0aCBw
cml2YXRlIG5hbWUiKTsKKyAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShjbGFzc1Njb3Bl
LT5kZWNsYXJlUHJpdmF0ZUZpZWxkKCppZGVudCkgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxp
ZER1cGxpY2F0ZURlY2xhcmF0aW9uLCAiQ2Fubm90IGRlY2xhcmUgcHJpdmF0ZSBmaWVsZCB0d2lj
ZSIpOworICAgICAgICAgICAgdHlwZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4o
dHlwZSB8IFByb3BlcnR5Tm9kZTo6UHJpdmF0ZUZpZWxkKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0zMDY5LDEwICszMDc2LDE5IEBAIHBhcnNl
TWV0aG9kOgogICAgIGluZm8uZW5kT2Zmc2V0ID0gdG9rZW5Mb2NhdGlvbigpLmVuZE9mZnNldCAt
IDE7CiAgICAgY29uc3VtZU9yRmFpbChDTE9TRUJSQUNFLCAiRXhwZWN0ZWQgYSBjbG9zaW5nICd9
JyBhZnRlciBhIGNsYXNzIGJvZHkiKTsKIAorICAgIGlmIChkZWNsYXJlc1ByaXZhdGVNZXRob2Qp
IHsKKyAgICAgICAgSWRlbnRpZmllciBwcml2YXRlQnJhbmRJZGVudGlmaWVyID0gbV92bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5wcml2YXRlQnJhbmRQcml2YXRlTmFtZSgpOworICAg
ICAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyYXRpb25SZXN1bHQgPSBjbGFzc1Njb3Bl
LT5kZWNsYXJlTGV4aWNhbFZhcmlhYmxlKCZwcml2YXRlQnJhbmRJZGVudGlmaWVyLCB0cnVlKTsK
KyAgICAgICAgQVNTRVJUX1VOVVNFRChkZWNsYXJhdGlvblJlc3VsdCwgZGVjbGFyYXRpb25SZXN1
bHQgPT0gRGVjbGFyYXRpb25SZXN1bHQ6OlZhbGlkKTsKKyAgICAgICAgY2xhc3NTY29wZS0+dXNl
VmFyaWFibGUoJnByaXZhdGVCcmFuZElkZW50aWZpZXIsIGZhbHNlKTsKKyAgICAgICAgY2xhc3NT
Y29wZS0+YWRkQ2xvc2VkVmFyaWFibGVDYW5kaWRhdGVVbmNvbmRpdGlvbmFsbHkocHJpdmF0ZUJy
YW5kSWRlbnRpZmllci5pbXBsKCkpOworICAgIH0KKwogICAgIGlmIChPcHRpb25zOjp1c2VQcml2
YXRlQ2xhc3NGaWVsZHMoKSkgewogICAgICAgICAvLyBGYWlsIGlmIHRoZXJlIGFyZSBubyBwYXJl
bnQgcHJpdmF0ZSBuYW1lIHNjb3BlcyBhbmQgYW55IHVzZWQtYnV0LXVuZGVjbGFyZWQgcHJpdmF0
ZSBuYW1lcy4KICAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxzZShjb3B5VW5kZWNsYXJlZFByaXZh
dGVOYW1lc1RvT3V0ZXJTY29wZSgpLCAiQ2Fubm90IHJlZmVyZW5jZSB1bmRlY2xhcmVkIHByaXZh
dGUgbmFtZXMiKTsKICAgICB9CisKICAgICBhdXRvIGNsYXNzRXhwcmVzc2lvbiA9IGNvbnRleHQu
Y3JlYXRlQ2xhc3NFeHByKGxvY2F0aW9uLCBpbmZvLCBjbGFzc1Njb3BlLT5maW5hbGl6ZUxleGlj
YWxFbnZpcm9ubWVudCgpLCBjb25zdHJ1Y3RvciwgcGFyZW50Q2xhc3MsIGNsYXNzRWxlbWVudHMp
OwogICAgIHBvcFNjb3BlKGNsYXNzU2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJs
ZUluZm8pOwogICAgIHJldHVybiBjbGFzc0V4cHJlc3Npb247CkBAIC01MTM4LDcgKzUxNTQsNyBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwogICAgICAgICAgICAgICAgICAgICBzZW1hbnRpY0Zh
aWxJZkZhbHNlKHVzZVByaXZhdGVOYW1lKGlkZW50KSwgIkNhbm5vdCByZWZlcmVuY2UgcHJpdmF0
ZSBuYW1lcyBvdXRzaWRlIG9mIGNsYXNzIik7CiAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2Vy
U3RhdGUubGFzdFByaXZhdGVOYW1lID0gaWRlbnQ7CiAgICAgICAgICAgICAgICAgICAgIGN1cnJl
bnRTY29wZSgpLT51c2VWYXJpYWJsZShpZGVudCwgZmFsc2UpOwotICAgICAgICAgICAgICAgICAg
ICB0eXBlID0gRG90VHlwZTo6UHJpdmF0ZUZpZWxkOworICAgICAgICAgICAgICAgICAgICB0eXBl
ID0gRG90VHlwZTo6UHJpdmF0ZU1lbWJlcjsKICAgICAgICAgICAgICAgICAgICAgbV90b2tlbi5t
X3R5cGUgPSBJREVOVDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbWF0Y2hP
ckZhaWwoSURFTlQsICJFeHBlY3RlZCBhIHByb3BlcnR5IG5hbWUgYWZ0ZXIgIiwgb3B0aW9uYWxD
aGFpbkJhc2UgPyAiJz8uJyIgOiAiJy4nIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuaAppbmRleCAxZmJhNGJhODZkYjEuLjUyYTBlMDQ4OTU5NSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5oCkBAIC01MTEsMTEgKzUxMSwyOCBAQCBwdWJsaWM6CiAgICAgICAg
IG1fbGV4aWNhbFZhcmlhYmxlcy51c2VQcml2YXRlTmFtZShpZGVudCk7CiAgICAgfQogCi0gICAg
RGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmVQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVy
JiBpZGVudCkKKyAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyZVByaXZhdGVNZXRob2Qo
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiAgICAgewogICAgICAgICBBU1NFUlQobV9hbGxvd3NM
ZXhpY2FsRGVjbGFyYXRpb25zKTsKICAgICAgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIHJlc3Vs
dCA9IERlY2xhcmF0aW9uUmVzdWx0OjpWYWxpZDsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBt
X2xleGljYWxWYXJpYWJsZXMuZGVjbGFyZVByaXZhdGVOYW1lKGlkZW50KTsKKyAgICAgICAgYm9v
bCBhZGRSZXN1bHQgPSBtX2xleGljYWxWYXJpYWJsZXMuZGVjbGFyZVByaXZhdGVNZXRob2QoaWRl
bnQpOworCisgICAgICAgIGlmICghYWRkUmVzdWx0KSB7CisgICAgICAgICAgICByZXN1bHQgfD0g
RGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbjsKKyAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICB1c2VWYXJpYWJsZSgmaWRl
bnQsIGZhbHNlKTsKKyAgICAgICAgYWRkQ2xvc2VkVmFyaWFibGVDYW5kaWRhdGVVbmNvbmRpdGlv
bmFsbHkoaWRlbnQuaW1wbCgpKTsKKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwor
ICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJlUHJpdmF0ZUZpZWxkKGNvbnN0IElkZW50
aWZpZXImIGlkZW50KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYWxsb3dzTGV4aWNhbERlY2xh
cmF0aW9ucyk7CisgICAgICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayByZXN1bHQgPSBEZWNsYXJh
dGlvblJlc3VsdDo6VmFsaWQ7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9sZXhpY2FsVmFy
aWFibGVzLmRlY2xhcmVQcml2YXRlRmllbGQoaWRlbnQpOwogICAgICAgICBpZiAoIWFkZFJlc3Vs
dC5pc05ld0VudHJ5KQogICAgICAgICAgICAgcmVzdWx0IHw9IERlY2xhcmF0aW9uUmVzdWx0OjpJ
bnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb247CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC05
NTUsNyArOTcyLDcgQEAgcHVibGljOgogICAgIH5QYXJzZXIoKTsKIAogICAgIHRlbXBsYXRlIDxj
bGFzcyBQYXJzZWROb2RlPgotICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZShQ
YXJzZXJFcnJvciYsIGNvbnN0IElkZW50aWZpZXImLCBTb3VyY2VQYXJzZU1vZGUsIFBhcnNpbmdD
b250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9z
aXRpb24gPSBXVEY6Om51bGxvcHQsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqID0gbnVsbHB0
ciwgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogPSBudWxscHRyKTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFyc2VyRXJyb3ImLCBjb25zdCBJZGVudGlmaWVy
JiwgU291cmNlUGFyc2VNb2RlLCBQYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlv
bkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gV1RGOjpudWxsb3B0LCBjb25zdCBQ
cml2YXRlTmFtZUVudmlyb25tZW50KiA9IG51bGxwdHIsIGNvbnN0IFZlY3RvcjxKU1RleHRQb3Np
dGlvbj4qID0gbnVsbHB0cik7CiAKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxh
c3ROZXdsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+cG9zaXRpb25CZWZvcmVMYXN0TmV3
bGluZSgpOyB9CiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uQmVmb3JlTGFzdFRva2VuKCkg
Y29uc3QgeyByZXR1cm4gbV9sZXhlci0+bGFzdFRva2VuTG9jYXRpb24oKTsgfQpAQCAtMjA1Myw3
ICsyMDcwLDcgQEAgcHJpdmF0ZToKIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRl
bXBsYXRlIDxjbGFzcyBQYXJzZWROb2RlPgotc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IElkZW50aWZp
ZXImIGNhbGxlZU5hbWUsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIFBhcnNpbmdDb250ZXh0
IHBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0
ZXJzRW5kUG9zaXRpb24sIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlUHJp
dmF0ZU5hbWVzLCBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBjbGFzc0ZpZWxkTG9jYXRp
b25zKQorc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFNvdXJj
ZVBhcnNlTW9kZSBwYXJzZU1vZGUsIFBhcnNpbmdDb250ZXh0IHBhcnNpbmdDb250ZXh0LCBPcHRp
b25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIGNvbnN0
IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzLCBjb25zdCBW
ZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBjbGFzc0ZpZWxkTG9jYXRpb25zKQogewogICAgIGludCBl
cnJMaW5lOwogICAgIFN0cmluZyBlcnJNc2c7CkBAIC0yMDY4LDkgKzIwODUsOSBAQCBzdGQ6OnVu
aXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlKFBhcnNlckVycm9y
JiBlcnJvciwgY29uc3QgSQogICAgIEFTU0VSVChtX3NvdXJjZS0+c3RhcnRDb2x1bW4oKSA+IE9y
ZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCkpOwogICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uID0g
bV9zb3VyY2UtPnN0YXJ0Q29sdW1uKCkuemVyb0Jhc2VkSW50KCk7CiAKLSAgICBpZiAoaXNFdmFs
Tm9kZTxQYXJzZWROb2RlPigpICYmIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzICYmIHBhcmVudFNj
b3BlUHJpdmF0ZU5hbWVzLT5wcml2YXRlTmFtZXNTaXplKCkpIHsKKyAgICBpZiAoaXNFdmFsTm9k
ZTxQYXJzZWROb2RlPigpICYmIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzICYmIHBhcmVudFNjb3Bl
UHJpdmF0ZU5hbWVzLT5zaXplKCkpIHsKICAgICAgICAgY3VycmVudFNjb3BlKCktPnNldElzUHJp
dmF0ZU5hbWVTY29wZSgpOwotICAgICAgICBwYXJlbnRTY29wZVByaXZhdGVOYW1lcy0+Y29weVBy
aXZhdGVOYW1lc1RvKGN1cnJlbnRTY29wZSgpLT5sZXhpY2FsVmFyaWFibGVzKCkpOworICAgICAg
ICBjdXJyZW50U2NvcGUoKS0+bGV4aWNhbFZhcmlhYmxlcygpLmFkZFByaXZhdGVOYW1lc0Zyb20o
cGFyZW50U2NvcGVQcml2YXRlTmFtZXMpOwogICAgIH0KIAogICAgIGF1dG8gcGFyc2VSZXN1bHQg
PSBwYXJzZUlubmVyKGNhbGxlZU5hbWUsIHBhcnNlTW9kZSwgcGFyc2luZ0NvbnRleHQsIGZ1bmN0
aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIGNsYXNzRmllbGRMb2NhdGlvbnMp
OwpAQCAtMjE1Nyw3ICsyMTc0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNl
KAogICAgIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUgPSBEZXJpdmVkQ29u
dGV4dFR5cGU6Ok5vbmUsCiAgICAgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSA9IEV2
YWxDb250ZXh0VHlwZTo6Tm9uZSwKICAgICBEZWJ1Z2dlclBhcnNlRGF0YSogZGVidWdnZXJQYXJz
ZURhdGEgPSBudWxscHRyLAotICAgIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNj
b3BlUHJpdmF0ZU5hbWVzID0gbnVsbHB0ciwKKyAgICBjb25zdCBQcml2YXRlTmFtZUVudmlyb25t
ZW50KiBwYXJlbnRTY29wZVByaXZhdGVOYW1lcyA9IG51bGxwdHIsCiAgICAgY29uc3QgVmVjdG9y
PEpTVGV4dFBvc2l0aW9uPiogY2xhc3NGaWVsZExvY2F0aW9ucyA9IG51bGxwdHIsCiAgICAgYm9v
bCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24gPSBmYWxzZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAppbmRleCA3OTUxOGEzMDU0ZDcuLjFjZGFmYzU4NTky
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaApAQCAtMzcs
NiArMzcsOCBAQCBlbnVtIGNsYXNzIEpTUGFyc2VyU2NyaXB0TW9kZSB7IENsYXNzaWMsIE1vZHVs
ZSB9OwogCiBlbnVtIGNsYXNzIFN1cGVyQmluZGluZyB7IE5lZWRlZCwgTm90TmVlZGVkIH07CiAK
K2VudW0gY2xhc3MgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgeyBOb25lLCBOZWVkZWQgfTsKKwog
ZW51bSBjbGFzcyBDb2RlR2VuZXJhdGlvbk1vZGUgOiB1aW50OF90IHsKICAgICBEZWJ1Z2dlciA9
IDEgPDwgMCwKICAgICBUeXBlUHJvZmlsZXIgPSAxIDw8IDEsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4IDg1NjFmMTU2YmY3My4uOWVmMmVmN2Jk
MjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNr
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaApA
QCAtMTc5LDcgKzE3OSw3IEBAIHB1YmxpYzoKICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCb29s
ZWFuKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGJvb2wpIHsgcmV0dXJuIEJvb2xFeHByOyB9CiAg
ICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTnVsbChjb25zdCBKU1Rva2VuTG9jYXRpb24mKSB7IHJl
dHVybiBOdWxsRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJyYWNrZXRBY2Nlc3Mo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBi
b29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBCcmFja2V0RXhwcjsgfQotICAgIEV4cHJlc3Np
b25UeXBlIGNyZWF0ZURvdEFjY2Vzcyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9u
VHlwZSwgY29uc3QgSWRlbnRpZmllciosIERvdFR5cGUgdHlwZSwgaW50LCBpbnQsIGludCkgeyBy
ZXR1cm4gdHlwZSA9PSBEb3RUeXBlOjpQcml2YXRlRmllbGQgPyBQcml2YXRlRG90RXhwciA6IERv
dEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVEb3RBY2Nlc3MoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIGNvbnN0IElkZW50aWZpZXIqLCBEb3RUeXBlIHR5
cGUsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIHR5cGUgPT0gRG90VHlwZTo6UHJpdmF0ZU1lbWJl
ciA/IFByaXZhdGVEb3RFeHByIDogRG90RXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0
ZVJlZ0V4cChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiBwYXR0ZXJu
LCBjb25zdCBJZGVudGlmaWVyJiBmbGFncywgaW50KSB7IHJldHVybiBZYXJyOjpoYXNFcnJvcihZ
YXJyOjpjaGVja1N5bnRheChwYXR0ZXJuLnN0cmluZygpLCBmbGFncy5zdHJpbmcoKSkpID8gMCA6
IFJlZ0V4cEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOZXdFeHByKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0
dXJuIE5ld0V4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOZXdFeHByKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhw
cjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVu
dmlyb25tZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZp
cm9ubWVudC5jcHAKaW5kZXggODFhOWM5MzhkYzExLi4zZWM1N2MzZTJhYmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcApA
QCAtMTA0LDYgKzEwNCw0MCBAQCB2b2lkIFZhcmlhYmxlRW52aXJvbm1lbnQ6Om1hcmtWYXJpYWJs
ZUFzRXhwb3J0ZWQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPgogICAgIGZpbmRSZXN1
bHQtPnZhbHVlLnNldElzRXhwb3J0ZWQoKTsKIH0KIAorYm9vbCBWYXJpYWJsZUVudmlyb25tZW50
OjpkZWNsYXJlUHJpdmF0ZU1ldGhvZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBp
ZGVudGlmaWVyKQoreworICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgbV9yYXJlRGF0YSA9
IG1ha2VVbmlxdWU8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+KCk7CisKKyAgICBhdXRv
IGZpbmRSZXN1bHQgPSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5maW5kKGlkZW50aWZpZXIp
OworCisgICAgaWYgKGZpbmRSZXN1bHQgPT0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZW5k
KCkpIHsKKyAgICAgICAgUHJpdmF0ZU5hbWVFbnRyeSBtZXRhKFByaXZhdGVOYW1lRW50cnk6OlRy
YWl0czo6SXNEZWNsYXJlZCB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNNZXRob2QpOwor
CisgICAgICAgIGF1dG8gZW50cnkgPSBWYXJpYWJsZUVudmlyb25tZW50RW50cnkoKTsKKyAgICAg
ICAgZW50cnkuc2V0SXNQcml2YXRlTWV0aG9kKCk7CisgICAgICAgIGVudHJ5LnNldElzQ29uc3Qo
KTsKKyAgICAgICAgZW50cnkuc2V0SXNDYXB0dXJlZCgpOworICAgICAgICBtX21hcC5hZGQoaWRl
bnRpZmllciwgZW50cnkpOworCisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yYXJlRGF0YS0+
bV9wcml2YXRlTmFtZXMuYWRkKGlkZW50aWZpZXIsIG1ldGEpOworICAgICAgICByZXR1cm4gYWRk
UmVzdWx0LmlzTmV3RW50cnk7CisgICAgfQorCisgICAgaWYgKGZpbmRSZXN1bHQtPnZhbHVlLmlz
RGVjbGFyZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBFcnJvcjogZGVjbGFyaW5nIGEg
ZHVwbGljYXRlIHByaXZhdGUgbmFtZS4KKworICAgIGF1dG8gZW50cnkgPSBWYXJpYWJsZUVudmly
b25tZW50RW50cnkoKTsKKyAgICBlbnRyeS5zZXRJc1ByaXZhdGVNZXRob2QoKTsKKyAgICBlbnRy
eS5zZXRJc0NvbnN0KCk7CisgICAgZW50cnkuc2V0SXNDYXB0dXJlZCgpOworICAgIG1fbWFwLmFk
ZChpZGVudGlmaWVyLCBlbnRyeSk7CisKKyAgICAvLyBpdCB3YXMgcHJldmlvdXNseSB1c2VkLCBt
YXJrIGl0IGFzIGRlY2xhcmVkLgorICAgIFByaXZhdGVOYW1lRW50cnkgbWV0YShQcml2YXRlTmFt
ZUVudHJ5OjpUcmFpdHM6OklzRGVjbGFyZWQgfCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6Oklz
VXNlZCB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNNZXRob2QpOworICAgIGF1dG8gYWRk
UmVzdWx0ID0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuc2V0KGlkZW50aWZpZXIsIG1ldGEp
OworICAgIHJldHVybiAhYWRkUmVzdWx0LmlzTmV3RW50cnk7Cit9CiAKIHZvaWQgQ29tcGFjdFRE
WkVudmlyb25tZW50Ojpzb3J0Q29tcGFjdChDb21wYWN0JiBjb21wYWN0KQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaAppbmRleCA1
MmU5YWE0NjU4MzcuLmY2ZDM1OGIxOTcwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKQEAgLTQ1LDcgKzQ1LDggQEAgcHVibGlj
OgogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9i
aXRzICYgSXNGdW5jdGlvbjsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1BhcmFtZXRlcigp
IGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzUGFyYW1ldGVyOyB9CiAgICAgQUxXQVlTX0lOTElO
RSBib29sIGlzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlKCkgY29uc3QgeyByZXR1cm4gbV9i
aXRzICYgSXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGU7IH0KLSAgICBBTFdBWVNfSU5MSU5F
IGJvb2wgaXNQcml2YXRlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzUHJpdmF0ZU5h
bWU7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQcml2YXRlRmllbGQoKSBjb25zdCB7IHJl
dHVybiBtX2JpdHMgJiBJc1ByaXZhdGVGaWVsZDsgfQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBp
c1ByaXZhdGVNZXRob2QoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1ByaXZhdGVNZXRob2Q7
IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0NhcHR1cmVkKCkgeyBtX2JpdHMgfD0g
SXNDYXB0dXJlZDsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0NvbnN0KCkgeyBtX2Jp
dHMgfD0gSXNDb25zdDsgfQpAQCAtNTcsNyArNTgsOCBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldElzRnVuY3Rpb24oKSB7IG1fYml0cyB8PSBJc0Z1bmN0aW9uOyB9CiAgICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldElzUGFyYW1ldGVyKCkgeyBtX2JpdHMgfD0gSXNQYXJhbWV0
ZXI7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5k
aWRhdGUoKSB7IG1fYml0cyB8PSBJc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZTsgfQotICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1ByaXZhdGVOYW1lKCkgeyBtX2JpdHMgfD0gSXNQcml2
YXRlTmFtZTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1ByaXZhdGVGaWVsZCgpIHsg
bV9iaXRzIHw9IElzUHJpdmF0ZUZpZWxkOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElz
UHJpdmF0ZU1ldGhvZCgpIHsgbV9iaXRzIHw9IElzUHJpdmF0ZU1ldGhvZDsgfQogCiAgICAgQUxX
QVlTX0lOTElORSB2b2lkIGNsZWFySXNWYXIoKSB7IG1fYml0cyAmPSB+SXNWYXI7IH0KIApAQCAt
ODAsNyArODIsOCBAQCBwcml2YXRlOgogICAgICAgICBJc0Z1bmN0aW9uID0gMSA8PCA3LAogICAg
ICAgICBJc1BhcmFtZXRlciA9IDEgPDwgOCwKICAgICAgICAgSXNTbG9wcHlNb2RlSG9pc3RpbmdD
YW5kaWRhdGUgPSAxIDw8IDksCi0gICAgICAgIElzUHJpdmF0ZU5hbWUgPSAxIDw8IDEwLAorICAg
ICAgICBJc1ByaXZhdGVGaWVsZCA9IDEgPDwgMTAsCisgICAgICAgIElzUHJpdmF0ZU1ldGhvZCA9
IDEgPDwgMTEsCiAgICAgfTsKICAgICB1aW50MTZfdCBtX2JpdHMgeyAwIH07CiB9OwpAQCAtOTAs
MTEgKzkzLDE2IEBAIHN0cnVjdCBWYXJpYWJsZUVudmlyb25tZW50RW50cnlIYXNoVHJhaXRzIDog
SGFzaFRyYWl0czxWYXJpYWJsZUVudmlyb25tZW50RW50cnk+CiB9OwogCiBzdHJ1Y3QgUHJpdmF0
ZU5hbWVFbnRyeSB7CisgICAgZnJpZW5kIGNsYXNzIENhY2hlZFByaXZhdGVOYW1lRW50cnk7CisK
IHB1YmxpYzoKICAgICBQcml2YXRlTmFtZUVudHJ5KHVpbnQxNl90IHRyYWl0cyA9IDApIHsgbV9i
aXRzID0gdHJhaXRzOyB9CiAKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNVc2VkKCkgY29uc3Qg
eyByZXR1cm4gbV9iaXRzICYgSXNVc2VkOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzRGVj
bGFyZWQoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc0RlY2xhcmVkOyB9CisgICAgQUxXQVlT
X0lOTElORSBib29sIGlzTWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNNZXRob2Q7
IH0KKworICAgIGJvb2wgaXNQcml2YXRlTWV0aG9kT3JBY2Vzc29yKCkgY29uc3QgeyByZXR1cm4g
aXNNZXRob2QoKTsgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzVXNlZCgpIHsgbV9i
aXRzIHw9IElzVXNlZDsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0RlY2xhcmVkKCkg
eyBtX2JpdHMgfD0gSXNEZWNsYXJlZDsgfQpAQCAtMTA3LDggKzExNSwxMCBAQCBwdWJsaWM6CiAg
ICAgfQogCiAgICAgZW51bSBUcmFpdHMgOiB1aW50MTZfdCB7CisgICAgICAgIE5vbmUgPSAwLAog
ICAgICAgICBJc1VzZWQgPSAxIDw8IDAsCiAgICAgICAgIElzRGVjbGFyZWQgPSAxIDw8IDEsCisg
ICAgICAgIElzTWV0aG9kID0gMSA8PCAyLAogICAgIH07CiAKIHByaXZhdGU6CkBAIC0xMTYsMTUg
KzEyNiwxOCBAQCBwcml2YXRlOgogfTsKIAogc3RydWN0IFByaXZhdGVOYW1lRW50cnlIYXNoVHJh
aXRzIDogSGFzaFRyYWl0czxQcml2YXRlTmFtZUVudHJ5PiB7Ci0gICAgc3RhdGljIGNvbnN0IGJv
b2wgbmVlZHNEZXN0cnVjdGlvbiA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBu
ZWVkc0Rlc3RydWN0aW9uID0gZmFsc2U7CiB9OwogCit0eXBlZGVmIEhhc2hNYXA8UGFja2VkUmVm
UHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgUHJpdmF0ZU5hbWVFbnRyeSwgSWRlbnRpZmllclJlcEhh
c2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50
cnlIYXNoVHJhaXRzPiBQcml2YXRlTmFtZUVudmlyb25tZW50OworCiBjbGFzcyBWYXJpYWJsZUVu
dmlyb25tZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHByaXZhdGU6CiAgICAg
dHlwZWRlZiBIYXNoTWFwPFBhY2tlZFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIFZhcmlhYmxl
RW52aXJvbm1lbnRFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVu
aXF1ZWRTdHJpbmdJbXBsPj4sIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeUhhc2hUcmFpdHM+IE1h
cDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8UGFja2VkUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwg
UHJpdmF0ZU5hbWVFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVu
aXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnlIYXNoVHJhaXRzPiBQcml2YXRlTmFt
ZXM7CisKIHB1YmxpYzoKKwogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQoKSB7IH0KICAgICBWYXJp
YWJsZUVudmlyb25tZW50KFZhcmlhYmxlRW52aXJvbm1lbnQmJiBvdGhlcikKICAgICAgICAgOiBt
X21hcChXVEZNb3ZlKG90aGVyLm1fbWFwKSkKQEAgLTE0Niw2ICsxNTksMTYgQEAgcHVibGljOgog
ICAgIEFMV0FZU19JTkxJTkUgTWFwOjpjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVy
biBtX21hcC5lbmQoKTsgfQogICAgIEFMV0FZU19JTkxJTkUgTWFwOjpBZGRSZXN1bHQgYWRkKGNv
bnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpIHsgcmV0dXJuIG1fbWFw
LmFkZChpZGVudGlmaWVyLCBWYXJpYWJsZUVudmlyb25tZW50RW50cnkoKSk7IH0KICAgICBBTFdB
WVNfSU5MSU5FIE1hcDo6QWRkUmVzdWx0IGFkZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVy
KSB7IHJldHVybiBhZGQoaWRlbnRpZmllci5pbXBsKCkpOyB9CisKKyAgICBBTFdBWVNfSU5MSU5F
IFByaXZhdGVOYW1lRW52aXJvbm1lbnQ6OkFkZFJlc3VsdCBhZGRQcml2YXRlTmFtZShjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBhZGRQcml2YXRlTmFtZShpZGVudGlmaWVy
LmltcGwoKSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIFByaXZhdGVOYW1lRW52aXJvbm1lbnQ6OkFk
ZFJlc3VsdCBhZGRQcml2YXRlTmFtZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBp
ZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICAgICAg
bV9yYXJlRGF0YSA9IG1ha2VVbmlxdWU8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+KCk7
CisKKyAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChpZGVudGlm
aWVyLCBQcml2YXRlTmFtZUVudHJ5KCkpOworICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgdW5z
aWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKSArIHByaXZhdGVOYW1lc1Np
emUoKTsgfQogICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgbWFwU2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbWFwLnNpemUoKTsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBjb250YWlucyhjb25z
dCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKSBjb25zdCB7IHJldHVybiBt
X21hcC5jb250YWlucyhpZGVudGlmaWVyKTsgfQpAQCAtMTY0LDE3ICsxODcsMjAgQEAgcHVibGlj
OgogICAgIGJvb2wgaXNFdmVyeXRoaW5nQ2FwdHVyZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRXZl
cnl0aGluZ0NhcHR1cmVkOyB9CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1f
bWFwLnNpemUoKTsgfQogCi0gICAgdXNpbmcgUHJpdmF0ZU5hbWVzUmFuZ2UgPSBXVEY6Okl0ZXJh
dG9yUmFuZ2U8UHJpdmF0ZU5hbWVzOjppdGVyYXRvcj47CisgICAgdXNpbmcgUHJpdmF0ZU5hbWVz
UmFuZ2UgPSBXVEY6Okl0ZXJhdG9yUmFuZ2U8UHJpdmF0ZU5hbWVFbnZpcm9ubWVudDo6aXRlcmF0
b3I+OwogCi0gICAgQUxXQVlTX0lOTElORSBNYXA6OkFkZFJlc3VsdCBkZWNsYXJlUHJpdmF0ZU5h
bWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyByZXR1cm4gZGVjbGFyZVByaXZhdGVO
YW1lKGlkZW50aWZpZXIuaW1wbCgpKTsgfQorICAgIEFMV0FZU19JTkxJTkUgTWFwOjpBZGRSZXN1
bHQgZGVjbGFyZVByaXZhdGVGaWVsZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJl
dHVybiBkZWNsYXJlUHJpdmF0ZUZpZWxkKGlkZW50aWZpZXIuaW1wbCgpKTsgfQogICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCB1c2VQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVy
KSB7IHVzZVByaXZhdGVOYW1lKGlkZW50aWZpZXIuaW1wbCgpKTsgfQogCi0gICAgTWFwOjpBZGRS
ZXN1bHQgZGVjbGFyZVByaXZhdGVOYW1lKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4m
IGlkZW50aWZpZXIpCisgICAgYm9vbCBkZWNsYXJlUHJpdmF0ZU1ldGhvZChjb25zdCBJZGVudGlm
aWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBkZWNsYXJlUHJpdmF0ZU1ldGhvZChpZGVudGlmaWVy
LmltcGwoKSk7IH0KKyAgICBib29sIGRlY2xhcmVQcml2YXRlTWV0aG9kKGNvbnN0IFJlZlB0cjxV
bmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpOworCisgICAgTWFwOjpBZGRSZXN1bHQgZGVj
bGFyZVByaXZhdGVGaWVsZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlm
aWVyKQogICAgIHsKICAgICAgICAgYXV0byYgbWV0YSA9IGdldE9yQWRkUHJpdmF0ZU5hbWUoaWRl
bnRpZmllci5nZXQoKSk7CiAgICAgICAgIG1ldGEuc2V0SXNEZWNsYXJlZCgpOwogICAgICAgICBh
dXRvIGVudHJ5ID0gVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCk7Ci0gICAgICAgIGVudHJ5LnNl
dElzUHJpdmF0ZU5hbWUoKTsKKyAgICAgICAgZW50cnkuc2V0SXNQcml2YXRlRmllbGQoKTsKICAg
ICAgICAgZW50cnkuc2V0SXNDb25zdCgpOwogICAgICAgICBlbnRyeS5zZXRJc0NhcHR1cmVkKCk7
CiAgICAgICAgIHJldHVybiBtX21hcC5hZGQoaWRlbnRpZmllciwgZW50cnkpOwpAQCAtMjAxLDYg
KzIyNywyNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX3ByaXZhdGVO
YW1lcy5zaXplKCk7CiAgICAgfQogCisgICAgQUxXQVlTX0lOTElORSBjb25zdCBQcml2YXRlTmFt
ZUVudmlyb25tZW50KiBwcml2YXRlTmFtZUVudmlyb25tZW50KCkgY29uc3QKKyAgICB7CisgICAg
ICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICByZXR1cm4gJm1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzOworICAgIH0KKworICAgIEFMV0FZ
U19JTkxJTkUgYm9vbCBoYXNQcml2YXRlTWV0aG9kT3JBY2Nlc3NvcigpIGNvbnN0CisgICAgewor
ICAgICAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAgICAgZm9yIChhdXRvIGVudHJ5IDogcHJpdmF0ZU5hbWVzKCkpIHsKKyAgICAgICAgICAgIGlm
IChlbnRyeS52YWx1ZS5pc1ByaXZhdGVNZXRob2RPckFjZXNzb3IoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaGFzUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmll
ciYgaWRlbnRpZmllcikKICAgICB7CiAgICAgICAgIGlmICghbV9yYXJlRGF0YSkKQEAgLTIyMiw2
ICsyNjgsMjAgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIGFkZFByaXZhdGVOYW1lc0Zyb20oY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCog
cHJpdmF0ZU5hbWVFbnZpcm9ubWVudCkKKyAgICB7CisgICAgICAgIGlmICghcHJpdmF0ZU5hbWVF
bnZpcm9ubWVudCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoIW1fcmFyZURh
dGEpCisgICAgICAgICAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxWYXJpYWJsZUVudmlyb25t
ZW50OjpSYXJlRGF0YT4oKTsKKworICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiAqcHJpdmF0ZU5h
bWVFbnZpcm9ubWVudCkgeworICAgICAgICAgICAgQVNTRVJUKGVudHJ5LnZhbHVlLmlzRGVjbGFy
ZWQoKSk7CisgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoZW50cnku
a2V5LCBlbnRyeS52YWx1ZSk7CisgICAgICAgIH0KKyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgY29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXNUbyhWYXJpYWJsZUVudmlyb25tZW50JiBv
dXRlcikgY29uc3QgewogICAgICAgICAvLyBVc2VkIGJ5IHRoZSBQYXJzZXIgdG8gdHJhbnNmZXIg
cmVjb3JkZWQgdXNlcyBvZiBQcml2YXRlTmFtZXMgZnJvbSBhbgogICAgICAgICAvLyBpbm5lciBQ
cml2YXRlTmFtZUVudmlyb25tZW50IGludG8gYW4gb3V0ZXIgb25lLCBpbiBjYXNlIGEgUE5FIGlz
IHVzZWQKQEAgLTI0NCw3ICszMDQsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICAgICAgUmFy
ZURhdGEoY29uc3QgUmFyZURhdGEmKSA9IGRlZmF1bHQ7CiAgICAgICAgIFJhcmVEYXRhJiBvcGVy
YXRvcj0oY29uc3QgUmFyZURhdGEmKSA9IGRlZmF1bHQ7Ci0gICAgICAgIFByaXZhdGVOYW1lcyBt
X3ByaXZhdGVOYW1lczsKKyAgICAgICAgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCBtX3ByaXZhdGVO
YW1lczsKICAgICB9OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ2FjaGVkVHlwZXMuY3BwCmluZGV4IGNmZGM5ZWRiMDU1YS4uMmJiMzBkNTc5NTAzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCkBAIC05OTQs
NiArOTk0LDcgQEAgcHVibGljOgogICAgICAgICBtX2JpdFZlY3RvcnMuZW5jb2RlKGVuY29kZXIs
IHJhcmVEYXRhLm1fYml0VmVjdG9ycyk7CiAgICAgICAgIG1fY29uc3RhbnRJZGVudGlmaWVyU2V0
cy5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9jb25zdGFudElkZW50aWZpZXJTZXRzKTsKICAg
ICAgICAgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9IHJhcmVEYXRhLm1fbmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXI7CisgICAgICAgIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBy
YXJlRGF0YS5tX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50OwogICAgIH0KIAogICAgIFVubGlua2Vk
Q29kZUJsb2NrOjpSYXJlRGF0YSogZGVjb2RlKERlY29kZXImIGRlY29kZXIpIGNvbnN0CkBAIC0x
MDA4LDYgKzEwMDksNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYml0VmVjdG9ycy5kZWNvZGUoZGVj
b2RlciwgcmFyZURhdGEtPm1fYml0VmVjdG9ycyk7CiAgICAgICAgIG1fY29uc3RhbnRJZGVudGlm
aWVyU2V0cy5kZWNvZGUoZGVjb2RlciwgcmFyZURhdGEtPm1fY29uc3RhbnRJZGVudGlmaWVyU2V0
cyk7CiAgICAgICAgIHJhcmVEYXRhLT5tX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyID0gbV9u
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjsKKyAgICAgICAgcmFyZURhdGEtPm1fcHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQgPSBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50OwogICAgICAgICByZXR1
cm4gcmFyZURhdGE7CiAgICAgfQogCkBAIC0xMDIxLDggKzEwMjMsMTEgQEAgcHJpdmF0ZToKICAg
ICBDYWNoZWRWZWN0b3I8Q2FjaGVkQml0VmVjdG9yPiBtX2JpdFZlY3RvcnM7CiAgICAgQ2FjaGVk
VmVjdG9yPENhY2hlZENvbnN0YW50SWRlbnRpZmllclNldEVudHJ5PiBtX2NvbnN0YW50SWRlbnRp
ZmllclNldHM7CiAgICAgdW5zaWduZWQgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA6IDE7
CisgICAgdW5zaWduZWQgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA6IDE7CiB9OwogCit0eXBl
ZGVmIENhY2hlZEhhc2hNYXA8Q2FjaGVkUmVmUHRyPENhY2hlZFVuaXF1ZWRTdHJpbmdJbXBsLCBV
bmlxdWVkU3RyaW5nSW1wbCwgV1RGOjpQYWNrZWRQdHJUcmFpdHM8VW5pcXVlZFN0cmluZ0ltcGw+
PiwgUHJpdmF0ZU5hbWVFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRy
PFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnlIYXNoVHJhaXRzPiBDYWNoZWRQ
cml2YXRlTmFtZUVudmlyb25tZW50OworCiBjbGFzcyBDYWNoZWRWYXJpYWJsZUVudmlyb25tZW50
UmFyZURhdGEgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVE
YXRhPiB7CiBwdWJsaWM6CiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGEmIHJhcmVEYXRhKQpAQCAtMTAzNiw3ICsxMDQx
LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBDYWNoZWRIYXNoTWFwPENhY2hl
ZFJlZlB0cjxDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbCwgVW5pcXVlZFN0cmluZ0ltcGwsIFdURjo6
UGFja2VkUHRyVHJhaXRzPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnksIElk
ZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+LCBQ
cml2YXRlTmFtZUVudHJ5SGFzaFRyYWl0cz4gbV9wcml2YXRlTmFtZXM7CisgICAgQ2FjaGVkUHJp
dmF0ZU5hbWVFbnZpcm9ubWVudCBtX3ByaXZhdGVOYW1lczsKIH07CiAKIGNsYXNzIENhY2hlZFZh
cmlhYmxlRW52aXJvbm1lbnQgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFZhcmlhYmxlRW52aXJvbm1l
bnQ+IHsKQEAgLTEyMTMsNyArMTIxOCw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0g
ICAgQ2FjaGVkSGFzaFNldDxDYWNoZWRSZWZQdHI8Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGw+LCBJ
ZGVudGlmaWVyUmVwSGFzaD4gbV9wcml2YXRlTmFtZXM7CisgICAgQ2FjaGVkSGFzaE1hcDxDYWNo
ZWRSZWZQdHI8Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGwsIFVuaXF1ZWRTdHJpbmdJbXBsLCBXVEY6
OlBhY2tlZFB0clRyYWl0czxVbmlxdWVkU3RyaW5nSW1wbD4+LCBQcml2YXRlTmFtZUVudHJ5LCBJ
ZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+Piwg
UHJpdmF0ZU5hbWVFbnRyeUhhc2hUcmFpdHM+IG1fcHJpdmF0ZU5hbWVzOwogfTsKIAogY2xhc3Mg
Q2FjaGVkU3ltYm9sVGFibGUgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFN5bWJvbFRhYmxlPiB7CkBA
IC0xNzkwLDYgKzE3OTUsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2NsYXNzU291cmNl
LmVuY29kZShlbmNvZGVyLCByYXJlRGF0YS5tX2NsYXNzU291cmNlKTsKICAgICAgICAgbV9wYXJl
bnRTY29wZVREWlZhcmlhYmxlcy5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9wYXJlbnRTY29w
ZVREWlZhcmlhYmxlcyk7CisgICAgICAgIG1fcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudC5l
bmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9wYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50KTsK
ICAgICB9CiAKICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6UmFyZURhdGEqIGRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKSBjb25zdApAQCAtMTc5NywxMiArMTgwMywxNCBAQCBwdWJsaWM6
CiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpSYXJlRGF0YSogcmFyZURhdGEg
PSBuZXcgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlJhcmVEYXRhIHsgfTsKICAgICAgICAg
bV9jbGFzc1NvdXJjZS5kZWNvZGUoZGVjb2RlciwgcmFyZURhdGEtPm1fY2xhc3NTb3VyY2UpOwog
ICAgICAgICBtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzLmRlY29kZShkZWNvZGVyLCByYXJlRGF0
YS0+bV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CisgICAgICAgIG1fcGFyZW50UHJpdmF0ZU5h
bWVFbnZpcm9ubWVudC5kZWNvZGUoZGVjb2RlciwgcmFyZURhdGEtPm1fcGFyZW50UHJpdmF0ZU5h
bWVFbnZpcm9ubWVudCk7CiAgICAgICAgIHJldHVybiByYXJlRGF0YTsKICAgICB9CiAKIHByaXZh
dGU6CiAgICAgQ2FjaGVkU291cmNlQ29kZVdpdGhvdXRQcm92aWRlciBtX2NsYXNzU291cmNlOwog
ICAgIENhY2hlZFJlZlB0cjxDYWNoZWRURFpFbnZpcm9ubWVudExpbms+IG1fcGFyZW50U2NvcGVU
RFpWYXJpYWJsZXM7CisgICAgQ2FjaGVkUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCBtX3BhcmVudFBy
aXZhdGVOYW1lRW52aXJvbm1lbnQ7CiB9OwogCiBjbGFzcyBDYWNoZWRGdW5jdGlvbkV4ZWN1dGFi
bGUgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPiB7CkBA
IC0xODM4LDYgKzE4NDYsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgc3VwZXJCaW5kaW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9zdXBlckJpbmRpbmc7IH0KICAgICB1bnNpZ25lZCBkZXJpdmVkQ29u
dGV4dFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2Rlcml2ZWRDb250ZXh0VHlwZTsgfQogICAgIHVu
c2lnbmVkIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkgY29uc3QgeyByZXR1cm4gbV9uZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplcjsgfQorICAgIHVuc2lnbmVkIHByaXZhdGVCcmFuZFJlcXVp
cmVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudDsgfQogCiAg
ICAgSWRlbnRpZmllciBuYW1lKERlY29kZXImIGRlY29kZXIpIGNvbnN0IHsgcmV0dXJuIG1fbmFt
ZS5kZWNvZGUoZGVjb2Rlcik7IH0KICAgICBJZGVudGlmaWVyIGVjbWFOYW1lKERlY29kZXImIGRl
Y29kZXIpIGNvbnN0IHsgcmV0dXJuIG1fZWNtYU5hbWUuZGVjb2RlKGRlY29kZXIpOyB9CkBAIC0x
ODY2LDcgKzE4NzUsOCBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fcGFyYW1ldGVyc1N0YXJ0
T2Zmc2V0IDogMzE7CiAgICAgdW5zaWduZWQgbV90eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQ7CiAg
ICAgdW5zaWduZWQgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0OwotICAgIHVuc2lnbmVkIG1fcGFy
YW1ldGVyQ291bnQ7CisgICAgdW5zaWduZWQgbV9wYXJhbWV0ZXJDb3VudDozMTsKKyAgICB1bnNp
Z25lZCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsKICAgICBTb3VyY2VQYXJzZU1vZGUg
bV9zb3VyY2VQYXJzZU1vZGU7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwog
ICAgIHVuc2lnbmVkIG1fZnVuY3Rpb25Nb2RlIDogMjsgLy8gRnVuY3Rpb25Nb2RlCkBAIC0xOTIz
LDcgKzE5MzMsNiBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgaXNDbGFzc0NvbnRleHQoKSBjb25z
dCB7IHJldHVybiBtX2lzQ2xhc3NDb250ZXh0OyB9CiAgICAgdW5zaWduZWQgY29uc3RydWN0b3JL
aW5kKCkgY29uc3QgeyByZXR1cm4gbV9jb25zdHJ1Y3RvcktpbmQ7IH0KICAgICB1bnNpZ25lZCBk
ZXJpdmVkQ29udGV4dFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2Rlcml2ZWRDb250ZXh0VHlwZTsg
fQotICAgIHVuc2lnbmVkIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkgY29uc3QgeyByZXR1
cm4gbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjsgfQogICAgIHVuc2lnbmVkIGV2YWxDb250
ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXZhbENvbnRleHRUeXBlOyB9CiAgICAgdW5zaWdu
ZWQgaGFzVGFpbENhbGxzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNUYWlsQ2FsbHM7IH0KICAgICB1
bnNpZ25lZCBoYXNDaGVja3BvaW50cygpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ2hlY2twb2ludHM7
IH0KQEAgLTE5NTUsNyArMTk2NCw2IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9pc0NsYXNz
Q29udGV4dCA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwogICAgIHVu
c2lnbmVkIG1fZGVyaXZlZENvbnRleHRUeXBlIDogMjsKLSAgICB1bnNpZ25lZCBtX25lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyIDogMTsKICAgICB1bnNpZ25lZCBtX2V2YWxDb250ZXh0VHlwZSA6
IDI7CiAgICAgdW5zaWduZWQgbV9oYXNUYWlsQ2FsbHMgOiAxOwogICAgIHVuc2lnbmVkIG1fY29k
ZVR5cGUgOiAyOwpAQCAtMjIzNiw2ICsyMjQ0LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIENhY2hl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFVubGkK
ICAgICBtX3N1cGVyQmluZGluZyA9IGV4ZWN1dGFibGUubV9zdXBlckJpbmRpbmc7CiAgICAgbV9k
ZXJpdmVkQ29udGV4dFR5cGUgPSBleGVjdXRhYmxlLm1fZGVyaXZlZENvbnRleHRUeXBlOwogICAg
IG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSBleGVjdXRhYmxlLm1fbmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXI7CisgICAgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9IGV4ZWN1dGFi
bGUubV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudDsKIAogICAgIG1fcmFyZURhdGEuZW5jb2RlKGVu
Y29kZXIsIGV4ZWN1dGFibGUubV9yYXJlRGF0YS5nZXQoKSk7CiAKQEAgLTIyNzcsNiArMjI4Niw3
IEBAIEFMV0FZU19JTkxJTkUgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKERlY29kZXImIGRlCiAgICAgLCBtX3R5cGVQcm9maWxpbmdTdGFydE9m
ZnNldChjYWNoZWRFeGVjdXRhYmxlLnR5cGVQcm9maWxpbmdTdGFydE9mZnNldCgpKQogICAgICwg
bV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KGNhY2hlZEV4ZWN1dGFibGUudHlwZVByb2ZpbGluZ0Vu
ZE9mZnNldCgpKQogICAgICwgbV9wYXJhbWV0ZXJDb3VudChjYWNoZWRFeGVjdXRhYmxlLnBhcmFt
ZXRlckNvdW50KCkpCisgICAgLCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50KGNhY2hlZEV4ZWN1
dGFibGUucHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSkKICAgICAsIG1fZmVhdHVyZXMoY2FjaGVk
RXhlY3V0YWJsZS5mZWF0dXJlcygpKQogICAgICwgbV9zb3VyY2VQYXJzZU1vZGUoY2FjaGVkRXhl
Y3V0YWJsZS5zb3VyY2VQYXJzZU1vZGUoKSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKGNhY2hl
ZEV4ZWN1dGFibGUuY29uc3RydWN0b3JLaW5kKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRleCAxYzczYjRjMzI0MmYuLmM0Mjk3MmFmZmRjOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCkBAIC03MSwxMyAr
NzEsMTMgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ZvckZ1bmN0aW9u
cyhWTSYgdm0sIFVubGlua2VkQ29kZUJsb2NrKiB1bmwKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFVu
bGlua2VkQ29kZUJsb2NrVHlwZSwgY2xhc3MgRXhlY3V0YWJsZVR5cGUgPSBTY3JpcHRFeGVjdXRh
YmxlPgotVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrSW1w
bChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJTdHJpY3RNb2RlIHN0
cmljdE1vZGUsIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBPcHRpb25TZXQ8Q29kZUdl
bmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIFBhcnNlckVycm9yJiBlcnJvciwgRXZh
bENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRD
b250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBjb25zdCBURFpFbnZpcm9u
bWVudCogdmFyaWFibGVzVW5kZXJURFogPSBudWxscHRyLCBjb25zdCBWYXJpYWJsZUVudmlyb25t
ZW50KiBwYXJlbnRTY29wZVByaXZhdGVOYW1lcyA9IG51bGxwdHIsIEV4ZWN1dGFibGVUeXBlKiBl
eGVjdXRhYmxlID0gbnVsbHB0cikKK1VubGlua2VkQ29kZUJsb2NrVHlwZSogZ2VuZXJhdGVVbmxp
bmtlZENvZGVCbG9ja0ltcGwoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTUGFy
c2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwg
T3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBQYXJzZXJF
cnJvciYgZXJyb3IsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIERlcml2ZWRDb250
ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwg
Y29uc3QgVERaRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaID0gbnVsbHB0ciwgY29uc3Qg
UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCA9IG51bGxwdHIs
IEV4ZWN1dGFibGVUeXBlKiBleGVjdXRhYmxlID0gbnVsbHB0cikKIHsKICAgICB0eXBlZGVmIHR5
cGVuYW1lIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6Um9vdE5vZGUgUm9vdE5v
ZGU7CiAgICAgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24gPSBleGVjdXRhYmxlICYmIGV4
ZWN1dGFibGUtPmlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbigpOwogCiAgICAgc3RkOjp1bmlxdWVf
cHRyPFJvb3ROb2RlPiByb290Tm9kZSA9IHBhcnNlPFJvb3ROb2RlPigKLSAgICAgICAgdm0sIHNv
dXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBzdHJp
Y3RNb2RlLCBzY3JpcHRNb2RlLCBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBh
cnNlTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGVycm9yLCBudWxscHRyLCBDb25zdHJ1
Y3RvcktpbmQ6Ok5vbmUsIGRlcml2ZWRDb250ZXh0VHlwZSwgZXZhbENvbnRleHRUeXBlLCBudWxs
cHRyLCBwYXJlbnRTY29wZVByaXZhdGVOYW1lcywgbnVsbHB0ciwgaXNJbnNpZGVPcmRpbmFyeUZ1
bmN0aW9uKTsKKyAgICAgICAgdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0
aW5Nb2RlOjpOb3RCdWlsdGluLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2RlLCBDYWNoZVR5cGVzPFVu
bGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQs
IGVycm9yLCBudWxscHRyLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGRlcml2ZWRDb250ZXh0VHlw
ZSwgZXZhbENvbnRleHRUeXBlLCBudWxscHRyLCBwcml2YXRlTmFtZUVudmlyb25tZW50LCBudWxs
cHRyLCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24pOwogCiAgICAgaWYgKCFyb290Tm9kZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC05NCw5ICs5NCwxMiBAQCBVbmxpbmtlZENvZGVCbG9j
a1R5cGUqIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsKFZNJiB2bSwgY29uc3QgU291cmNl
Q29kZSYgcwogICAgIGJvb2wgdXNlc0V2YWwgPSByb290Tm9kZS0+ZmVhdHVyZXMoKSAmIEV2YWxG
ZWF0dXJlOwogICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gcm9vdE5vZGUtPmZlYXR1cmVzKCkgJiBT
dHJpY3RNb2RlRmVhdHVyZSA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpzbG9wcHko
KTsKICAgICBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplciA9IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObzsKLSAgICBpZiBjb25zdGV4cHIg
KHN0ZDo6aXNfc2FtZV92PEV4ZWN1dGFibGVUeXBlLCBEaXJlY3RFdmFsRXhlY3V0YWJsZT4pCisg
ICAgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBQcml2
YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2Ft
ZV92PEV4ZWN1dGFibGVUeXBlLCBEaXJlY3RFdmFsRXhlY3V0YWJsZT4pIHsKICAgICAgICAgbmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSBleGVjdXRhYmxlLT5uZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplcigpOwotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsLCBm
YWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgc2NyaXB0TW9kZSwgU3VwZXJCaW5k
aW5nOjpOb3ROZWVkZWQsIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VN
b2RlLCBkZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBpc0Fy
cm93RnVuY3Rpb25Db250ZXh0LCBmYWxzZSwgZXZhbENvbnRleHRUeXBlKTsKKyAgICAgICAgcHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBleGVjdXRhYmxlLT5wcml2YXRlQnJhbmRSZXF1aXJlbWVu
dCgpOworICAgIH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbyh1c2VzRXZhbCwg
ZmFsc2UsIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpO
b25lLCBzY3JpcHRNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgQ2FjaGVUeXBlczxVbmxp
bmtlZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSwgbmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGZhbHNlLCBldmFs
Q29udGV4dFR5cGUpOwogCiAgICAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiB1bmxpbmtlZENvZGVC
bG9jayA9IFVubGlua2VkQ29kZUJsb2NrVHlwZTo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlSW5mbywg
Y29kZUdlbmVyYXRpb25Nb2RlKTsKICAgICB1bmxpbmtlZENvZGVCbG9jay0+cmVjb3JkUGFyc2Uo
cm9vdE5vZGUtPmZlYXR1cmVzKCksIHJvb3ROb2RlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCBs
aW5lQ291bnQsIHVubGlua2VkRW5kQ29sdW1uKTsKQEAgLTEwOCw3ICsxMTEsNyBAQCBVbmxpbmtl
ZENvZGVCbG9ja1R5cGUqIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsKFZNJiB2bSwgY29u
c3QgU291cmNlQ29kZSYgcwogICAgIFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+IHBhcmVudFZh
cmlhYmxlc1VuZGVyVERaOwogICAgIGlmICh2YXJpYWJsZXNVbmRlclREWikKICAgICAgICAgcGFy
ZW50VmFyaWFibGVzVW5kZXJURFogPSBURFpFbnZpcm9ubWVudExpbms6OmNyZWF0ZSh2bS5tX2Nv
bXBhY3RWYXJpYWJsZU1hcC0+Z2V0KCp2YXJpYWJsZXNVbmRlclREWiksIG51bGxwdHIpOwotICAg
IGVycm9yID0gQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKHZtLCByb290Tm9kZS5nZXQoKSwg
c291cmNlLCB1bmxpbmtlZENvZGVCbG9jaywgY29kZUdlbmVyYXRpb25Nb2RlLCBwYXJlbnRWYXJp
YWJsZXNVbmRlclREWiwgZWNtYU1vZGUpOworICAgIGVycm9yID0gQnl0ZWNvZGVHZW5lcmF0b3I6
OmdlbmVyYXRlKHZtLCByb290Tm9kZS5nZXQoKSwgc291cmNlLCB1bmxpbmtlZENvZGVCbG9jaywg
Y29kZUdlbmVyYXRpb25Nb2RlLCBwYXJlbnRWYXJpYWJsZXNVbmRlclREWiwgcHJpdmF0ZU5hbWVF
bnZpcm9ubWVudCwgZWNtYU1vZGUpOwogCiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMTcsMTQgKzEyMCwxNCBAQCBVbmxpbmtlZENvZGVCbG9j
a1R5cGUqIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsKFZNJiB2bSwgY29uc3QgU291cmNl
Q29kZSYgcwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgVW5saW5rZWRDb2RlQmxvY2tUeXBlLCBjbGFz
cyBFeGVjdXRhYmxlVHlwZT4KLVVubGlua2VkQ29kZUJsb2NrVHlwZSogZ2VuZXJhdGVVbmxpbmtl
ZENvZGVCbG9jayhWTSYgdm0sIEV4ZWN1dGFibGVUeXBlKiBleGVjdXRhYmxlLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBKU1BhcnNlclNj
cmlwdE1vZGUgc2NyaXB0TW9kZSwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdl
bmVyYXRpb25Nb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29u
dGV4dFR5cGUsIGNvbnN0IFREWkVudmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclREWiA9IG51bGxw
dHIsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzID0g
bnVsbHB0cikKK1VubGlua2VkQ29kZUJsb2NrVHlwZSogZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9j
ayhWTSYgdm0sIEV4ZWN1dGFibGVUeXBlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGUg
c2NyaXB0TW9kZSwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25N
b2RlLCBQYXJzZXJFcnJvciYgZXJyb3IsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUs
IGNvbnN0IFREWkVudmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclREWiA9IG51bGxwdHIsIGNvbnN0
IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHByaXZhdGVOYW1lRW52aXJvbm1lbnQgPSBudWxscHRy
KQogewotICAgIHJldHVybiBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrSW1wbDxVbmxpbmtlZENv
ZGVCbG9ja1R5cGUsIEV4ZWN1dGFibGVUeXBlPih2bSwgc291cmNlLCBzdHJpY3RNb2RlLCBzY3Jp
cHRNb2RlLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVycm9yLCBldmFsQ29udGV4dFR5cGUsIGV4ZWN1
dGFibGUtPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBleGVjdXRhYmxlLT5pc0Fycm93RnVuY3Rpb25D
b250ZXh0KCksIHZhcmlhYmxlc1VuZGVyVERaLCBwYXJlbnRTY29wZVByaXZhdGVOYW1lcywgZXhl
Y3V0YWJsZSk7CisgICAgcmV0dXJuIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsPFVubGlu
a2VkQ29kZUJsb2NrVHlwZSwgRXhlY3V0YWJsZVR5cGU+KHZtLCBzb3VyY2UsIHN0cmljdE1vZGUs
IHNjcmlwdE1vZGUsIGNvZGVHZW5lcmF0aW9uTW9kZSwgZXJyb3IsIGV2YWxDb250ZXh0VHlwZSwg
ZXhlY3V0YWJsZS0+ZGVyaXZlZENvbnRleHRUeXBlKCksIGV4ZWN1dGFibGUtPmlzQXJyb3dGdW5j
dGlvbkNvbnRleHQoKSwgdmFyaWFibGVzVW5kZXJURFosIHByaXZhdGVOYW1lRW52aXJvbm1lbnQs
IGV4ZWN1dGFibGUpOwogfQogCi1VbmxpbmtlZEV2YWxDb2RlQmxvY2sqIGdlbmVyYXRlVW5saW5r
ZWRDb2RlQmxvY2tGb3JEaXJlY3RFdmFsKFZNJiB2bSwgRGlyZWN0RXZhbEV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJTdHJpY3RNb2RlIHN0
cmljdE1vZGUsIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBPcHRpb25TZXQ8Q29kZUdl
bmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIFBhcnNlckVycm9yJiBlcnJvciwgRXZh
bENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgY29uc3QgVERaRW52aXJvbm1lbnQqIHZhcmlh
Ymxlc1VuZGVyVERaLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVByaXZh
dGVOYW1lcykKK1VubGlua2VkRXZhbENvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9j
a0ZvckRpcmVjdEV2YWwoVk0mIHZtLCBEaXJlY3RFdmFsRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwg
SlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1v
ZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yLCBFdmFsQ29udGV4dFR5
cGUgZXZhbENvbnRleHRUeXBlLCBjb25zdCBURFpFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJU
RFosIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHByaXZhdGVOYW1lRW52aXJvbm1lbnQp
CiB7Ci0gICAgcmV0dXJuIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2s8VW5saW5rZWRFdmFsQ29k
ZUJsb2NrPih2bSwgZXhlY3V0YWJsZSwgc291cmNlLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2RlLCBj
b2RlR2VuZXJhdGlvbk1vZGUsIGVycm9yLCBldmFsQ29udGV4dFR5cGUsIHZhcmlhYmxlc1VuZGVy
VERaLCBwYXJlbnRTY29wZVByaXZhdGVOYW1lcyk7CisgICAgcmV0dXJuIGdlbmVyYXRlVW5saW5r
ZWRDb2RlQmxvY2s8VW5saW5rZWRFdmFsQ29kZUJsb2NrPih2bSwgZXhlY3V0YWJsZSwgc291cmNl
LCBzdHJpY3RNb2RlLCBzY3JpcHRNb2RlLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVycm9yLCBldmFs
Q29udGV4dFR5cGUsIHZhcmlhYmxlc1VuZGVyVERaLCBwcml2YXRlTmFtZUVudmlyb25tZW50KTsK
IH0KIAogdGVtcGxhdGUgPGNsYXNzIFVubGlua2VkQ29kZUJsb2NrVHlwZT4KQEAgLTI0OCw3ICsy
NTEsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQ29kZUNhY2hlOjpnZXRVbmxpbmtl
ZEdsb2JhbEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYgdgogICAgIC8vIFRoZSBGdW5jdGlvbiBjb25z
dHJ1Y3RvciBvbmx5IGhhcyBhY2Nlc3MgdG8gZ2xvYmFsIHZhcmlhYmxlcywgc28gbm8gdmFyaWFi
bGVzIHdpbGwgYmUgdW5kZXIgVERaIHVubGVzcyB0aGV5J3JlCiAgICAgLy8gaW4gdGhlIGdsb2Jh
bCBsZXhpY2FsIGVudmlyb25tZW50LCB3aGljaCB3ZSBhbHdheXMgVERaIGNoZWNrIGFjY2Vzc2Vz
IGZyb20uCiAgICAgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5ID0gY29uc3RydWN0
QWJpbGl0eUZvclBhcnNlTW9kZShtZXRhZGF0YS0+cGFyc2VNb2RlKCkpOwotICAgIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBzb3VyY2UsIG1ldGFkYXRhLCBVbmxpbmtlZE5vcm1hbEZ1
bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIG51
bGxwdHIsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXI6Ok5vKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRh
YmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSh2bSwgc291cmNlLCBtZXRh
ZGF0YSwgVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJT
Y3JpcHRNb2RlOjpDbGFzc2ljLCBudWxscHRyLCBXVEY6Om51bGxvcHQsIERlcml2ZWRDb250ZXh0
VHlwZTo6Tm9uZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vLCBQcml2YXRlQnJhbmRS
ZXF1aXJlbWVudDo6Tm9uZSk7CiAKICAgICBpZiAoIXNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2VV
UkxEaXJlY3RpdmUoKS5pc051bGwoKSkKICAgICAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5zZXRT
b3VyY2VVUkxEaXJlY3RpdmUoc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZVVSTERpcmVjdGl2ZSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKaW5kZXggOWNjMWNh
NzAwNDQ3Li42MGE3N2QyYWYzYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvZGVDYWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
ZGVDYWNoZS5oCkBAIC0yNTQsNyArMjU0LDcgQEAgdGVtcGxhdGUgPD4gc3RydWN0IENhY2hlVHlw
ZXM8VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrPiB7CiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFs
dWF0ZU1vZGU7CiB9OwogCi1VbmxpbmtlZEV2YWxDb2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRD
b2RlQmxvY2tGb3JEaXJlY3RFdmFsKFZNJiwgRGlyZWN0RXZhbEV4ZWN1dGFibGUqLCBjb25zdCBT
b3VyY2VDb2RlJiwgSlNQYXJzZXJTdHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGUsIE9wdGlv
blNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBQYXJzZXJFcnJvciYsIEV2YWxDb250ZXh0VHlwZSwg
Y29uc3QgVERaRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaLCBjb25zdCBWYXJpYWJsZUVu
dmlyb25tZW50KiBwYXJlbnRTY29wZVByaXZhdGVOYW1lcyk7CitVbmxpbmtlZEV2YWxDb2RlQmxv
Y2sqIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tGb3JEaXJlY3RFdmFsKFZNJiwgRGlyZWN0RXZh
bEV4ZWN1dGFibGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJTdHJpY3RNb2RlLCBKU1Bh
cnNlclNjcmlwdE1vZGUsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBQYXJzZXJFcnJv
ciYsIEV2YWxDb250ZXh0VHlwZSwgY29uc3QgVERaRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVy
VERaLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50Kik7CiBVbmxpbmtlZFByb2dyYW1Db2Rl
QmxvY2sqIHJlY3Vyc2l2ZWx5R2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ZvclByb2dyYW0oVk0m
LCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJTdHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1v
ZGUsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBQYXJzZXJFcnJvciYsIEV2YWxDb250
ZXh0VHlwZSk7CiBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHJlY3Vyc2l2ZWx5R2Vu
ZXJhdGVVbmxpbmtlZENvZGVCbG9ja0Zvck1vZHVsZVByb2dyYW0oVk0mLCBjb25zdCBTb3VyY2VD
b2RlJiwgSlNQYXJzZXJTdHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGUsIE9wdGlvblNldDxD
b2RlR2VuZXJhdGlvbk1vZGU+LCBQYXJzZXJFcnJvciYsIEV2YWxDb250ZXh0VHlwZSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRh
YmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRh
YmxlLmNwcAppbmRleCBjN2MyOWMwNTAyOTYuLmY2Zjc5MzA3ZGZlNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcApA
QCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotRGlyZWN0RXZhbEV4ZWN1dGFi
bGUqIERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZl
ZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRlT3Jk
aW5hcnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgY29uc3QgVERa
RW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50
KiBwcml2YXRlTmFtZXMsIEVDTUFNb2RlIGVjbWFNb2RlKQorRGlyZWN0RXZhbEV4ZWN1dGFibGUq
IERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENv
bnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQs
IGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rp
b24sIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIGNvbnN0IFREWkVudmlyb25tZW50
KiB2YXJpYWJsZXNVbmRlclREWiwgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogcHJpdmF0
ZU5hbWVFbnZpcm9ubWVudCwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKQEAgLTQ0LDcgKzQ0LDcgQEAgRGlyZWN0RXZhbEV4ZWN1dGFibGUqIERpcmVjdEV2YWxFeGVj
dXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPERpcmVjdEV2YWxFeGVjdXRhYmxlPih2bS5oZWFwKSkgRGlyZWN0RXZh
bEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGVjbWFNb2RlLmlzU3RyaWN0KCksIGRl
cml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGlzQXJyb3dGdW5j
dGlvbkNvbnRleHQsIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgZXZhbENvbnRleHRUeXBlKTsK
KyAgICBhdXRvKiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RGlyZWN0
RXZhbEV4ZWN1dGFibGU+KHZtLmhlYXApKSBEaXJlY3RFdmFsRXhlY3V0YWJsZShnbG9iYWxPYmpl
Y3QsIHNvdXJjZSwgZWNtYU1vZGUuaXNTdHJpY3QoKSwgZGVyaXZlZENvbnRleHRUeXBlLCBuZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplciwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGlzQXJyb3dG
dW5jdGlvbkNvbnRleHQsIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgZXZhbENvbnRleHRUeXBl
KTsKICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbih2bSk7CiAKICAgICBQYXJzZXJFcnJv
ciBlcnJvcjsKQEAgLTUyLDcgKzUyLDcgQEAgRGlyZWN0RXZhbEV4ZWN1dGFibGUqIERpcmVjdEV2
YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBP
cHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUgPSBnbG9iYWxP
YmplY3QtPmRlZmF1bHRDb2RlR2VuZXJhdGlvbk1vZGUoKTsKIAogICAgIC8vIFdlIGRvbid0IGJv
dGhlciB3aXRoIENvZGVDYWNoZSBoZXJlIGJlY2F1c2UgZGlyZWN0IGV2YWwgdXNlcyBhIHNwZWNp
YWxpemVkIERpcmVjdEV2YWxDb2RlQ2FjaGUuCi0gICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiB1
bmxpbmtlZEV2YWxDb2RlID0gZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ZvckRpcmVjdEV2YWwo
dm0sIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPnNvdXJjZSgpLCBzdHJpY3RNb2RlLCBKU1BhcnNl
clNjcmlwdE1vZGU6OkNsYXNzaWMsIGNvZGVHZW5lcmF0aW9uTW9kZSwgZXJyb3IsIGV2YWxDb250
ZXh0VHlwZSwgdmFyaWFibGVzVW5kZXJURFosIHByaXZhdGVOYW1lcyk7CisgICAgVW5saW5rZWRF
dmFsQ29kZUJsb2NrKiB1bmxpbmtlZEV2YWxDb2RlID0gZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9j
a0ZvckRpcmVjdEV2YWwodm0sIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPnNvdXJjZSgpLCBzdHJp
Y3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIGNvZGVHZW5lcmF0aW9uTW9kZSwg
ZXJyb3IsIGV2YWxDb250ZXh0VHlwZSwgdmFyaWFibGVzVW5kZXJURFosIHByaXZhdGVOYW1lRW52
aXJvbm1lbnQpOwogCiAgICAgaWYgKGdsb2JhbE9iamVjdC0+aGFzRGVidWdnZXIoKSkKICAgICAg
ICAgZ2xvYmFsT2JqZWN0LT5kZWJ1Z2dlcigpLT5zb3VyY2VQYXJzZWQoZ2xvYmFsT2JqZWN0LCBl
eGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLCBlcnJvci5saW5lKCksIGVycm9yLm1lc3Nh
Z2UoKSk7CkBAIC02NywxMCArNjcsMTAgQEAgRGlyZWN0RXZhbEV4ZWN1dGFibGUqIERpcmVjdEV2
YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBy
ZXR1cm4gZXhlY3V0YWJsZTsKIH0KIAotRGlyZWN0RXZhbEV4ZWN1dGFibGU6OkRpcmVjdEV2YWxF
eGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgYm9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVk
Q29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRp
bmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKQotICAgIDogRXZh
bEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGluU3RyaWN0Q29udGV4dCwgZGVyaXZl
ZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBpc0luc2lkZU9yZGluYXJ5RnVu
Y3Rpb24sIGV2YWxDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpCitEaXJl
Y3RFdmFsRXhlY3V0YWJsZTo6RGlyZWN0RXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGluU3RyaWN0Q29udGV4
dCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVp
cmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUgZXZhbENv
bnRleHRUeXBlKQorICAgIDogRXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGlu
U3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0
LCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KQogewotICAgIEFTU0VSVChu
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9PSBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6
Tm8gfHwgZGVyaXZlZENvbnRleHRUeXBlID09IERlcml2ZWRDb250ZXh0VHlwZTo6RGVyaXZlZENv
bnN0cnVjdG9yQ29udGV4dCk7CisgICAgQVNTRVJUKChuZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
ciA9PSBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8gJiYgcHJpdmF0ZUJyYW5kUmVxdWly
ZW1lbnQgPT0gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmUpIHx8IGRlcml2ZWRDb250ZXh0
VHlwZSA9PSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oCmluZGV4IDhjNTJjYjY4MWU4ZC4uMzYyY2Vk
OGQ3YjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RF
dmFsRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVj
dEV2YWxFeGVjdXRhYmxlLmgKQEAgLTMxLDkgKzMxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNs
YXNzIERpcmVjdEV2YWxFeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEV2YWxFeGVjdXRhYmxlIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgRGlyZWN0RXZhbEV4ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2Jh
bE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBEZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJ
bnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUsIGNvbnN0IFREWkVudmlyb25t
ZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCog
cHJpdmF0ZU5hbWVzLCBFQ01BTW9kZSk7CisgICAgc3RhdGljIERpcmVjdEV2YWxFeGVjdXRhYmxl
KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgRGVyaXZlZENvbnRl
eHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVu
Y3Rpb24sIEV2YWxDb250ZXh0VHlwZSwgY29uc3QgVERaRW52aXJvbm1lbnQqIHBhcmVudFNjb3Bl
VERaVmFyaWFibGVzLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiwgRUNNQU1vZGUpOwog
cHJpdmF0ZToKLSAgICBEaXJlY3RFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCosIGNvbnN0
IFNvdXJjZUNvZGUmLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBO
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBi
b29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBlKTsKKyAgICBEaXJl
Y3RFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBib29s
IGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29u
dGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSk7CiB9
OwogCiBzdGF0aWNfYXNzZXJ0KHNpemVvZihEaXJlY3RFdmFsRXhlY3V0YWJsZSkgPT0gc2l6ZW9m
KEV2YWxFeGVjdXRhYmxlKSwgIiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXZhbEV4ZWN1dGFibGUuY3BwCmluZGV4IDJlYzEzN2E3MzYyMi4uMGIzZDQxNjRhYTY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuY3Bw
CkBAIC0zMiw5ICszMiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIEV2
YWxFeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJFdmFsRXhlY3V0YWJsZSIsICZCYXNlOjpzX2luZm8s
IG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoRXZhbEV4ZWN1dGFibGUpIH07
CiAKLUV2YWxFeGVjdXRhYmxlOjpFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBE
ZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlv
bkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUg
ZXZhbENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplcikKK0V2YWxFeGVjdXRhYmxlOjpFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaW5TdHJp
Y3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlz
QXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFs
Q29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBu
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQpCiAgICAgOiBCYXNlKGdsb2JhbE9iamVjdC0+dm0oKS5ldmFsRXhl
Y3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgZ2xvYmFsT2JqZWN0LT52bSgpLCBzb3VyY2UsIGluU3Ry
aWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBp
c0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250ZXh0VHlwZSwgTm9JbnRyaW5zaWMpCiAg
ICAgLCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihu
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcikpCisgICAgLCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVt
ZW50KHN0YXRpY19jYXN0PHVuc2lnbmVkPihwcml2YXRlQnJhbmRSZXF1aXJlbWVudCkpCiB7CiAg
ICAgQVNTRVJUKHNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2VUeXBlKCkgPT0gU291cmNlUHJvdmlk
ZXJTb3VyY2VUeXBlOjpQcm9ncmFtKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FdmFsRXhlY3V0YWJsZS5oCmluZGV4IDY3ZTY5Yzg2MjliYS4uNTI2MDI1MWFjZWUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmgKQEAg
LTYyLDEzICs2MiwxNCBAQCBwdWJsaWM6CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVj
dXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZv
KHVzZXNFdmFsKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBKU1BhcnNl
clNjcmlwdE1vZGU6OkNsYXNzaWMsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJz
ZU1vZGU6OlByb2dyYW1Nb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUoKSwgbmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIoKSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgZXZhbENvbnRl
eHRUeXBlKCkpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7
IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1c2VzRXZhbCgpLCBmYWxzZSwgUHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQ6Ok5vbmUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2Ny
aXB0TW9kZTo6Q2xhc3NpYywgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9k
ZTo6UHJvZ3JhbU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBuZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplcigpLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlLCBldmFsQ29udGV4dFR5
cGUoKSk7IH0KIAogICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlcygpIHsgcmV0dXJuIG1fdW5saW5r
ZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJpYWJsZXMoKTsgfQogICAgIHVuc2lnbmVkIG51bUZ1bmN0
aW9uSG9pc3RpbmdDYW5kaWRhdGVzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2st
Pm51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKCk7IH0KICAgICB1bnNpZ25lZCBudW1Ub3BM
ZXZlbEZ1bmN0aW9uRGVjbHMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVt
YmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KICAgICBib29sIGFsbG93RGlyZWN0RXZhbENhY2hlKCkg
Y29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPmFsbG93RGlyZWN0RXZhbENh
Y2hlKCk7IH0KICAgICBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplcigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyPihtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsgfQorICAgIFByaXZhdGVC
cmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ+KG1fcHJpdmF0ZUJyYW5kUmVxdWly
ZW1lbnQpOyB9CiAgICAgVGVtcGxhdGVPYmplY3RNYXAmIGVuc3VyZVRlbXBsYXRlT2JqZWN0TWFw
KFZNJik7CiAKIHByb3RlY3RlZDoKQEAgLTc2LDExICs3NywxMiBAQCBwcm90ZWN0ZWQ6CiAgICAg
ZnJpZW5kIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CiAKICAgICB1c2luZyBCYXNlOjpmaW5pc2hD
cmVhdGlvbjsKLSAgICBFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJj
ZUNvZGUmLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlz
QXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFs
Q29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsKKyAgICBFdmFsRXhlY3V0
YWJsZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGluU3RyaWN0Q29u
dGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJv
b2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7CiAKICAgICBzdGF0aWMg
dm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICB1bnNpZ25l
ZCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIDogMTsKKyAgICB1bnNpZ25lZCBtX3ByaXZh
dGVCcmFuZFJlcXVpcmVtZW50IDogMTsKIAogICAgIFdyaXRlQmFycmllcjxFeGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlPiBtX2V2YWxDb2RlQmxvY2s7CiAgICAgV3JpdGVCYXJyaWVyPFVubGlua2Vk
RXZhbENvZGVCbG9jaz4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2s7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCmluZGV4IDQxNGU3YmRm
NzdhYi4uN2EyOTEwZTg4N2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcApAQCAtMzI2LDcgKzMyNiw3IEBAIEpTT2JqZWN0KiBj
cmVhdGVURFpFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiBKU09iamVjdCog
Y3JlYXRlSW52YWxpZFByaXZhdGVOYW1lRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKIHsKLSAgICByZXR1cm4gY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmlu
ZygiQ2Fubm90IGFjY2VzcyBpbnZhbGlkIHByaXZhdGUgZmllbGQiKSwgZGVmYXVsdFNvdXJjZUFw
cGVuZGVyLCBUeXBlTm90aGluZyk7CisgICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIG1ha2VTdHJpbmcoIkludmFsaWQgcHJpdmF0ZSBtZW1iZXIgYWNjZXNzIiksIGRlZmF1
bHRTb3VyY2VBcHBlbmRlciwgVHlwZU5vdGhpbmcpOwogfQogCiBKU09iamVjdCogY3JlYXRlUmVk
ZWZpbmVkUHJpdmF0ZU5hbWVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0
YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVj
dXRhYmxlLmNwcAppbmRleCA5OGQ3ZTJiODNhMjcuLjc0OTgyMDUwMThjZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJs
ZS5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZSogSW5kaXJlY3RF
dmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKIGNvbnN0ZXhw
ciBib29sIGluU3RyaWN0Q29udGV4dCA9IGZhbHNlOwogY29uc3RleHByIGJvb2wgaW5zaWRlT3Jk
aW5hcnlGdW5jdGlvbiA9IGZhbHNlOwogSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6SW5kaXJlY3RF
dmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSkK
LSAgICA6IEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNlLCBpblN0cmljdENvbnRl
eHQsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgaW5zaWRlT3Jk
aW5hcnlGdW5jdGlvbiwgZXZhbENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
cjo6Tm8pCisgICAgOiBFdmFsRXhlY3V0YWJsZShnbG9iYWxPYmplY3QsIHNvdXJjZSwgaW5TdHJp
Y3RDb250ZXh0LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGlu
c2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXI6Ok5vLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZSkKIHsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggOWI5MzhiM2U1ZTdhLi44
Mjk2NWQxODczMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApA
QCAtMTg0LDYgKzE4NCw4IEBAIHB1YmxpYzoKICAgICBpbmxpbmUgYm9vbCBnZXRQcml2YXRlRmll
bGQoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIGlu
bGluZSB2b2lkIHNldFByaXZhdGVGaWVsZChKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgaW5saW5lIHZvaWQgZGVmaW5lUHJpdmF0
ZUZpZWxkKEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmKTsKKyAgICBpbmxpbmUgYm9vbCBjaGVja1ByaXZhdGVCcmFuZChKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUgYnJhbmQpOworICAgIGlubGluZSB2b2lkIHNldFByaXZhdGVCcmFuZChKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUgYnJhbmQpOwogCiAgICAgdW5zaWduZWQgZ2V0QXJyYXlMZW5n
dGgoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3RJbmxpbmVzLmgKaW5kZXggMzFlMDBmOTgzOGRjLi5kOWI0OWFlZWMzYTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCkBAIC02NTEs
NCArNjUxLDQ1IEBAIGlubGluZSB2b2lkIEpTT2JqZWN0OjpkZWZpbmVQcml2YXRlRmllbGQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOCiAgICAgcHV0RGlyZWN0KHZtLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBwdXRTbG90KTsKIH0KIAoraW5saW5lIGJvb2wgSlNPYmplY3Q6
OmNoZWNrUHJpdmF0ZUJyYW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
YnJhbmQpCit7CisgICAgQVNTRVJUKGJyYW5kLmlzU3ltYm9sKCkpOworICAgIFZNJiB2bSA9IGdl
dFZNKGdsb2JhbE9iamVjdCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOwor
ICAgIGlmICghc3RydWN0dXJlLT5pc0JyYW5kZWRTdHJ1Y3R1cmUoKSB8fCAhanNDYXN0PEJyYW5k
ZWRTdHJ1Y3R1cmUqPihzdHJ1Y3R1cmUpLT5jaGVja0JyYW5kKGFzU3ltYm9sKGJyYW5kKSkpIHsK
KyAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlSW52YWxp
ZFByaXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgZmFsc2UpOworICAgIH0KKyAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5l
eGNlcHRpb24oKSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworaW5saW5lIHZvaWQgSlNPYmpl
Y3Q6OnNldFByaXZhdGVCcmFuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IGJyYW5kKQoreworICAgIEFTU0VSVChicmFuZC5pc1N5bWJvbCgpKTsKKyAgICBWTSYgdm0gPSBn
ZXRWTShnbG9iYWxPYmplY3QpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZtKTsK
KyAgICBpZiAoc3RydWN0dXJlLT5pc0JyYW5kZWRTdHJ1Y3R1cmUoKSAmJiBqc0Nhc3Q8QnJhbmRl
ZFN0cnVjdHVyZSo+KHN0cnVjdHVyZSktPmNoZWNrQnJhbmQoYXNTeW1ib2woYnJhbmQpKSkgewor
ICAgICAgICAvLyBXZSBhcmUgdHJ5aW5nIHRvIGluc3RhbGwgYSBicmFuZCBhbHJlYWR5IGluc3Rh
bGxlZAorICAgICAgICAvLyBGSVhNRTogUHV0IGEgYmV0dGVyIGVycm9yIG1lc3NhZ2UKKyAgICAg
ICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlSW52YWxpZFByaXZh
dGVOYW1lRXJyb3IoZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgdm9pZCgpKTsKKyAgICB9CisgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0
aW9uKCkpOworCisgICAgc2NvcGUucmVsZWFzZSgpOworCisgICAgRGVmZXJyZWRTdHJ1Y3R1cmVU
cmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUgZGVmZXJyZWRXYXRjaHBvaW50RmlyZSh2bSwgc3RydWN0
dXJlKTsKKworICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpzZXRCcmFu
ZFRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSwgYXNTeW1ib2woYnJhbmQpLCAmZGVmZXJyZWRXYXRj
aHBvaW50RmlyZSk7CisgICAgQVNTRVJUKG5ld1N0cnVjdHVyZS0+aXNCcmFuZGVkU3RydWN0dXJl
KCkpOworICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgfHwgIXRo
aXMtPnN0cnVjdHVyZSh2bSktPm91dE9mTGluZUNhcGFjaXR5KCkpOworICAgIHRoaXMtPnNldFN0
cnVjdHVyZSh2bSwgbmV3U3RydWN0dXJlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCmluZGV4IDRmYjI0YTI4MjczMy4u
ZmM3NzQyZTIzMDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Njb3BlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNw
cApAQCAtMzIxLDcgKzMyMSw3IEBAIFJlc29sdmVPcCBKU1Njb3BlOjphYnN0cmFjdFJlc29sdmUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgc2l6ZV90IGRlcHRoT2ZmCiAgICAgcmV0dXJu
IG9wOwogfQogCi12b2lkIEpTU2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFoo
SlNTY29wZSogc2NvcGUsIFREWkVudmlyb25tZW50JiByZXN1bHQsIFZhcmlhYmxlRW52aXJvbm1l
bnQmIHByaXZhdGVOYW1lcykKK3ZvaWQgSlNTY29wZTo6Y29sbGVjdENsb3N1cmVWYXJpYWJsZXNV
bmRlclREWihKU1Njb3BlKiBzY29wZSwgVERaRW52aXJvbm1lbnQmIHJlc3VsdCwgUHJpdmF0ZU5h
bWVFbnZpcm9ubWVudCYgcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCkKIHsKICAgICBmb3IgKDsgc2Nv
cGU7IHNjb3BlID0gc2NvcGUtPm5leHQoKSkgewogICAgICAgICBpZiAoIXNjb3BlLT5pc0xleGlj
YWxTY29wZSgpICYmICFzY29wZS0+aXNDYXRjaFNjb3BlKCkpCkBAIC0zNDAsOCArMzQwLDkgQEAg
dm9pZCBKU1Njb3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKEpTU2NvcGUqIHNj
b3BlLCBURFpFbnZpcm9ubWVudCYgcmUKICAgICAgICAgICAgIHJlc3VsdC5hZGQoaXRlci0+a2V5
KTsKIAogICAgICAgICBpZiAoc3ltYm9sVGFibGUtPmhhc1ByaXZhdGVOYW1lcygpKSB7Ci0gICAg
ICAgICAgICBmb3IgKGF1dG8gbmFtZSA6IHN5bWJvbFRhYmxlLT5wcml2YXRlTmFtZXMoKSkKLSAg
ICAgICAgICAgICAgICBwcml2YXRlTmFtZXMudXNlUHJpdmF0ZU5hbWUobmFtZSk7ICAgIAorICAg
ICAgICAgICAgYXV0byBwcml2YXRlTmFtZXMgPSBzeW1ib2xUYWJsZS0+cHJpdmF0ZU5hbWVzKCk7
CisgICAgICAgICAgICBmb3IgKGF1dG8gZW5kID0gcHJpdmF0ZU5hbWVzLmVuZCgpLCBpdGVyID0g
cHJpdmF0ZU5hbWVzLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCisgICAgICAgICAgICAg
ICAgcHJpdmF0ZU5hbWVFbnZpcm9ubWVudC5hZGQoaXRlci0+a2V5LCBpdGVyLT52YWx1ZSk7CiAg
ICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Njb3BlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmgK
aW5kZXggN2EzYzI0MTUxMWI4Li5lNGNkMGJiMzA5N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Njb3BlLmgKQEAgLTI3LDEyICsyNywxMiBAQAogCiAjaW5jbHVkZSAiR2V0UHV0
SW5mby5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiVmFyaWFibGVFbnZpcm9u
bWVudC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgU2NvcGVDaGFpbkl0ZXJhdG9yOwog
Y2xhc3MgU3ltYm9sVGFibGU7Ci1jbGFzcyBWYXJpYWJsZUVudmlyb25tZW50OwogY2xhc3MgV2F0
Y2hwb2ludFNldDsKIAogdXNpbmcgVERaRW52aXJvbm1lbnQgPSBIYXNoU2V0PFJlZlB0cjxVbmlx
dWVkU3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPjsKQEAgLTYyLDcgKzYyLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBib29sIGhhc0NvbnN0YW50U2NvcGUoUmVzb2x2ZVR5cGUpOwogICAg
IHN0YXRpYyBKU1Njb3BlKiBjb25zdGFudFNjb3BlRm9yQ29kZUJsb2NrKFJlc29sdmVUeXBlLCBD
b2RlQmxvY2sqKTsKIAotICAgIHN0YXRpYyB2b2lkIGNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5k
ZXJURFooSlNTY29wZSosIFREWkVudmlyb25tZW50JiByZXN1bHQsIFZhcmlhYmxlRW52aXJvbm1l
bnQmIHByaXZhdGVOYW1lcyk7CisgICAgc3RhdGljIHZvaWQgY29sbGVjdENsb3N1cmVWYXJpYWJs
ZXNVbmRlclREWihKU1Njb3BlKiwgVERaRW52aXJvbm1lbnQmIHJlc3VsdCwgUHJpdmF0ZU5hbWVF
bnZpcm9ubWVudCYpOwogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBT
bG90VmlzaXRvciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaAppbmRleCAwOTlkODk5YWQ1ZTYuLmI4NTkxNGZm
OGVhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZS5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKIAogICAgIERF
Q0xBUkVfSU5GTzsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3Qg
eyByZXR1cm4gRXhlY3V0YWJsZUluZm8odXNlc0V2YWwoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1
Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6TW9kdWxlLCBTdXBlckJpbmRpbmc6
Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFsdWF0ZU1vZGUsIGRlcml2ZWRD
b250ZXh0VHlwZSgpLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8sIGlzQXJyb3dGdW5j
dGlvbkNvbnRleHQoKSwgZmFsc2UsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSk7IH0KKyAgICBFeGVj
dXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZv
KHVzZXNFdmFsKCksIGZhbHNlLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZSwgZmFsc2Us
IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUsIFN1cGVy
QmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUV2YWx1YXRlTW9kZSwg
ZGVyaXZlZENvbnRleHRUeXBlKCksIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObywgaXNB
cnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsgfQog
CiAgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZE1vZHVsZVByb2dy
YW1Db2RlQmxvY2soKSB7IHJldHVybiBtX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5n
ZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCmluZGV4
IDBjYWYzNDAxYWQzMi4uYTVjN2VhY2ExYmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zLmNwcApAQCAtNTM4LDYgKzUzOCw5IEBAIHZvaWQgT3B0aW9uczo6cmVjb21w
dXRlRGVwZW5kZW50T3B0aW9ucygpCiAgICAgICAgIE9wdGlvbnM6OnJhbmRvbUludGVncml0eUF1
ZGl0UmF0ZSgpID0gMDsKICAgICBlbHNlIGlmIChPcHRpb25zOjpyYW5kb21JbnRlZ3JpdHlBdWRp
dFJhdGUoKSA+IDEuMCkKICAgICAgICAgT3B0aW9uczo6cmFuZG9tSW50ZWdyaXR5QXVkaXRSYXRl
KCkgPSAxLjA7CisgICAgCisgICAgaWYgKE9wdGlvbnM6OnVzZVByaXZhdGVNZXRob2RzKCkpCisg
ICAgICAgIE9wdGlvbnM6OnVzZVByaXZhdGVDbGFzc0ZpZWxkcygpID0gdHJ1ZTsKIAogICAgIGlm
ICghT3B0aW9uczo6YWxsb3dVbnN1cHBvcnRlZFRpZXJzKCkpIHsKICNkZWZpbmUgRElTQUJMRV9U
SUVSUyhvcHRpb24sIGZsYWdzLCAuLi4pIGRvIHsgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggNTg1NjMwNmViMjgxLi42YTY5ZGVlYzA2ZDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaApAQCAtNTE4LDYg
KzUxOCw3IEBAIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2FuVXNlSklUQ2FnZSgpOwogICAgIHYo
Qm9vbCwgZXhwb3NlUHJvZmlsZXJzT25HbG9iYWxPYmplY3QsIGZhbHNlLCBOb3JtYWwsICJJZiB0
cnVlLCB3ZSB3aWxsIGV4cG9zZSBmdW5jdGlvbnMgdG8gZW5hYmxlL2Rpc2FibGUgYm90aCB0aGUg
c2FtcGxpbmcgcHJvZmlsZXIgYW5kIHRoZSBzdXBlciBzYW1wbGVyIikgXAogICAgIHYoQm9vbCwg
YWxsb3dVbnN1cHBvcnRlZFRpZXJzLCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCBu
b3QgZGlzYWJsZSBERkcgb3IgRlRMIHdoZW4gYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUgaXMgZW5h
YmxlZC4iKSBcCiAgICAgdihCb29sLCB1c2VQcml2YXRlQ2xhc3NGaWVsZHMsIHRydWUsIE5vcm1h
bCwgIklmIHRydWUsIHRoZSBwYXJzZXIgd2lsbCB1bmRlcnN0YW5kIHByaXZhdGUgZGF0YSBmaWVs
ZHMgaW5zaWRlIGNsYXNzZXMuIikgXAorICAgIHYoQm9vbCwgdXNlUHJpdmF0ZU1ldGhvZHMsIGZh
bHNlLCBOb3JtYWwsICJJZiB0cnVlLCB0aGUgcGFyc2VyIHdpbGwgdW5kZXJzdGFuZCBwcml2YXRl
IG1ldGhvZHMgaW5zaWRlIGNsYXNzZXMuIikgXAogICAgIHYoQm9vbCwgcmV0dXJuRWFybHlGcm9t
SW5maW5pdGVMb29wc0ZvckZ1enppbmcsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2
KFNpemUsIGVhcmx5UmV0dXJuRnJvbUluZmluaXRlTG9vcHNMaW1pdCwgMTMwMDAwMDAwMCwgTm9y
bWFsLCAiV2hlbiByZXR1cm5FYXJseUZyb21JbmZpbml0ZUxvb3BzRm9yRnV6emluZyBpcyB0cnVl
LCB0aGlzIGRldGVybWluZXMgdGhlIG51bWJlciBvZiBleGVjdXRpb25zIGEgbG9vcCBjYW4gcnVu
IGZvciBiZWZvcmUganVzdCByZXR1cm5pbmcuIFRoaXMgaXMgaGVscGZ1bCBmb3IgdGhlIGZ1enpl
ciBzbyBpdCBkb2Vzbid0IGdldCBzdHVjayBpbiBpbmZpbml0ZSBsb29wcy4iKSBcCiAgICAgdihC
b29sLCB1c2VMSUNNRnV6emluZywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXApAQCAtNTc0LDcg
KzU3NSw4IEBAIGVudW0gRXhwZXJpbWVudGFsT3B0aW9uRmxhZ3MgewogfTsKIAogI2RlZmluZSBG
T1JfRUFDSF9KU0NfRVhQRVJJTUVOVEFMX09QVElPTih2KSBcCi0gICAgdih1c2VQcml2YXRlQ2xh
c3NGaWVsZHMsIChTdXBwb3J0c0ZUTCB8IFN1cHBvcnRzREZHKSwgImh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI3ODEiLCAiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxMjc4NCIpCisgICAgdih1c2VQcml2YXRlQ2xhc3NGaWVsZHMsIChT
dXBwb3J0c0ZUTCB8IFN1cHBvcnRzREZHKSwgImh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTI3ODEiLCAiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxMjc4NCIpIFwKKyAgICB2KHVzZVByaXZhdGVNZXRob2RzLCAoTExJbnRBbmRCYXNlbGlu
ZU9ubHkpLCAiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjc4MSIs
ICJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNzg0IikKIAogY29u
c3RleHByIHNpemVfdCBjb3VudE51bWJlck9mSlNDT3B0aW9ucygpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaAppbmRleCBiODcxNWFh
NzJiYmMuLjk0OTc2MzEyMDVjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUlu
Zm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1c2VzRXZhbCgpLCBmYWxzZSwgZmFs
c2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBT
dXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZGVy
aXZlZENvbnRleHRUeXBlKCksIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObywgaXNBcnJv
d0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsgfQorICAg
IEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJs
ZUluZm8odXNlc0V2YWwoKSwgZmFsc2UsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lLCBm
YWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMs
IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBk
ZXJpdmVkQ29udGV4dFR5cGUoKSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vLCBpc0Fy
cm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUpOyB9CiAK
ICAgICBUZW1wbGF0ZU9iamVjdE1hcCYgZW5zdXJlVGVtcGxhdGVPYmplY3RNYXAoVk0mKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggZDM4YzM5
ZTQ0N2Q2Li4yNGI5ZjYzZDkwZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmNwcApAQCAtNDI0LDcgKzQyNCw3IEBAIFByb3BlcnR5VGFibGUqIFN0cnVjdHVy
ZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eVRhYmxlKFZNJiB2bSwgYm9vbCBzZXRQcm9wZXJ0eVRhYmxl
CiAKICAgICBmb3IgKHNpemVfdCBpID0gc3RydWN0dXJlcy5zaXplKCk7IGktLTspIHsKICAgICAg
ICAgc3RydWN0dXJlID0gc3RydWN0dXJlc1tpXTsKLSAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPm1f
dHJhbnNpdGlvblByb3BlcnR5TmFtZSkKKyAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPm1fdHJhbnNp
dGlvblByb3BlcnR5TmFtZSB8fCBzdHJ1Y3R1cmUtPnRyYW5zaXRpb25LaW5kKCkgPT0gVHJhbnNp
dGlvbktpbmQ6OlNldEJyYW5kKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIHN3aXRj
aCAoc3RydWN0dXJlLT50cmFuc2l0aW9uS2luZCgpKSB7CiAgICAgICAgIGNhc2UgVHJhbnNpdGlv
bktpbmQ6OlByb3BlcnR5QWRkaXRpb246IHsKQEAgLTE0OTYsNCArMTQ5Niw4MyBAQCBhdXRvIFN0
cnVjdHVyZTo6ZmluZFByb3BlcnR5SGFzaEVudHJ5KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
IGNvbnN0IC0+IE9wdGlvbgogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKK0JyYW5kZWRT
dHJ1Y3R1cmU6OkJyYW5kZWRTdHJ1Y3R1cmUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHByZXZpb3VzLCBT
eW1ib2wqIGJyYW5kU3ltYm9sLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50
RmlyZSogZGVmZXJyZWQpCisgICAgOiBTdHJ1Y3R1cmUodm0sIHByZXZpb3VzLCBkZWZlcnJlZCkK
KyAgICAsIG1fYnJhbmQodm0sIHRoaXMsIGJyYW5kU3ltYm9sKQoreworICAgIGlmIChwcmV2aW91
cy0+aXNCcmFuZGVkU3RydWN0dXJlKCkpCisgICAgICAgIG1fcGFyZW50QnJhbmQuc2V0KHZtLCB0
aGlzLCBqc0Nhc3Q8QnJhbmRlZFN0cnVjdHVyZSo+KHByZXZpb3VzKSk7CisgICAgdGhpcy0+c2V0
SXNCcmFuZGVkU3RydWN0dXJlKHRydWUpOworfQorCitCcmFuZGVkU3RydWN0dXJlOjpCcmFuZGVk
U3RydWN0dXJlKFZNJiB2bSwgQnJhbmRlZFN0cnVjdHVyZSogcHJldmlvdXMsIERlZmVycmVkU3Ry
dWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiBkZWZlcnJlZCkKKyAgICA6IFN0cnVjdHVy
ZSh2bSwgcHJldmlvdXMsIGRlZmVycmVkKQorICAgICwgbV9icmFuZCh2bSwgdGhpcywgcHJldmlv
dXMtPmJyYW5kKCkpCisgICAgLCBtX3BhcmVudEJyYW5kKHZtLCB0aGlzLCBwcmV2aW91cy0+cGFy
ZW50QnJhbmQoKSwgV3JpdGVCYXJyaWVyPEJyYW5kZWRTdHJ1Y3R1cmU+OjpNYXlCZU51bGwpCit7
CisgICAgdGhpcy0+c2V0SXNCcmFuZGVkU3RydWN0dXJlKHRydWUpOworfQorCit2b2lkIEJyYW5k
ZWRTdHJ1Y3R1cmU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKK3sKKyAgICBCcmFuZGVkU3RydWN0dXJlKiB0aGlzT2JqZWN0ID0ganNDYXN0PEJyYW5k
ZWRTdHJ1Y3R1cmUqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsIGluZm8oKSk7CisKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZp
c2l0b3IpOworICAgIAorICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fYnJhbmQpOwor
ICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcGFyZW50QnJhbmQpOworfQorCitTdHJ1
Y3R1cmUqIEJyYW5kZWRTdHJ1Y3R1cmU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogcHJldmlv
dXMsIFN5bWJvbCogYnJhbmQsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRG
aXJlKiBkZWZlcnJlZCkKK3sKKyAgICBBU1NFUlQodm0uc3RydWN0dXJlU3RydWN0dXJlKTsKKyAg
ICBCcmFuZGVkU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxCcmFuZGVkU3RydWN0dXJlPih2bS5oZWFwKSkgQnJhbmRlZFN0cnVjdHVyZSh2bSwgcHJl
dmlvdXMsIGJyYW5kLCBkZWZlcnJlZCk7CisgICAgbmV3U3RydWN0dXJlLT5maW5pc2hDcmVhdGlv
bih2bSwgcHJldmlvdXMpOworICAgIHJldHVybiBuZXdTdHJ1Y3R1cmU7Cit9CisKK2Jvb2wgQnJh
bmRlZFN0cnVjdHVyZTo6Y2hlY2tCcmFuZChTeW1ib2wqIGJyYW5kKQoreworICAgIGZvciAoQnJh
bmRlZFN0cnVjdHVyZSogY3VycmVudFN0cnVjdHVyZSA9IHRoaXM7IGN1cnJlbnRTdHJ1Y3R1cmU7
IGN1cnJlbnRTdHJ1Y3R1cmUgPSBjdXJyZW50U3RydWN0dXJlLT5tX3BhcmVudEJyYW5kLmdldCgp
KSB7CisgICAgICAgIGlmIChicmFuZCA9PSBjdXJyZW50U3RydWN0dXJlLT5tX2JyYW5kLmdldCgp
KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30K
KworU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnNldEJyYW5kVHJhbnNpdGlvbihWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBTeW1ib2wqIGJyYW5kLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRp
b25XYXRjaHBvaW50RmlyZSogZGVmZXJyZWQpCit7CisgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzRGlj
dGlvbmFyeSgpKSB7CisgICAgICAgIGlmIChTdHJ1Y3R1cmUqIGV4aXN0aW5nVHJhbnNpdGlvbiA9
IHN0cnVjdHVyZS0+bV90cmFuc2l0aW9uVGFibGUuZ2V0KCZicmFuZC0+dWlkKCksIDAsIFRyYW5z
aXRpb25LaW5kOjpTZXRCcmFuZCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChleGlzdGluZ1RyYW5z
aXRpb24tPnRyYW5zaXRpb25LaW5kKCkgPT0gVHJhbnNpdGlvbktpbmQ6OlNldEJyYW5kKTsKKyAg
ICAgICAgICAgIHJldHVybiBleGlzdGluZ1RyYW5zaXRpb247CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CisKKyAgICBTdHJ1Y3R1cmUqIHRyYW5zaXRp
b24gPSBCcmFuZGVkU3RydWN0dXJlOjpjcmVhdGUodm0sIHN0cnVjdHVyZSwgYnJhbmQsIGRlZmVy
cmVkKTsKKyAgICB0cmFuc2l0aW9uLT5zZXRUcmFuc2l0aW9uS2luZChUcmFuc2l0aW9uS2luZDo6
U2V0QnJhbmQpOworCisgICAgdHJhbnNpdGlvbi0+bV9jYWNoZWRQcm90b3R5cGVDaGFpbi5zZXRN
YXlCZU51bGwodm0sIHRyYW5zaXRpb24sIHN0cnVjdHVyZS0+bV9jYWNoZWRQcm90b3R5cGVDaGFp
bi5nZXQoKSk7CisgICAgdHJhbnNpdGlvbi0+bV9ibG9iLnNldEluZGV4aW5nTW9kZUluY2x1ZGlu
Z0hpc3Rvcnkoc3RydWN0dXJlLT5pbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5KCkpOworICAg
IHRyYW5zaXRpb24tPm1fdHJhbnNpdGlvblByb3BlcnR5TmFtZSA9ICZicmFuZC0+dWlkKCk7Cisg
ICAgdHJhbnNpdGlvbi0+c2V0VHJhbnNpdGlvblByb3BlcnR5QXR0cmlidXRlcygwKTsKKyAgICB0
cmFuc2l0aW9uLT5zZXRQcm9wZXJ0eVRhYmxlKHZtLCBzdHJ1Y3R1cmUtPnRha2VQcm9wZXJ0eVRh
YmxlT3JDbG9uZUlmUGlubmVkKHZtKSk7CisgICAgdHJhbnNpdGlvbi0+c2V0TWF4T2Zmc2V0KHZt
LCBzdHJ1Y3R1cmUtPm1heE9mZnNldCgpKTsKKyAgICBjaGVja09mZnNldCh0cmFuc2l0aW9uLT5t
YXhPZmZzZXQoKSwgdHJhbnNpdGlvbi0+aW5saW5lQ2FwYWNpdHkoKSk7CisKKyAgICBpZiAoc3Ry
dWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkgeworICAgICAgICBQcm9wZXJ0eVRhYmxlKiB0YWJsZSA9
IHRyYW5zaXRpb24tPmVuc3VyZVByb3BlcnR5VGFibGUodm0pOworICAgICAgICB0cmFuc2l0aW9u
LT5waW4oaG9sZExvY2sodHJhbnNpdGlvbi0+bV9sb2NrKSwgdm0sIHRhYmxlKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHN0cnVjdHVyZS0+bV9sb2NrKTsK
KyAgICAgICAgc3RydWN0dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5hZGQodm0sIHRyYW5zaXRpb24p
OworICAgIH0KKworICAgIHRyYW5zaXRpb24tPmNoZWNrT2Zmc2V0Q29uc2lzdGVuY3koKTsKKyAg
ICByZXR1cm4gdHJhbnNpdGlvbjsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCmluZGV4IDNlNDc1MTRjOWNkNi4uZDkzYWMz
YzkzZmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaApAQCAt
MTIzLDcgKzEyMyw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgU3RydWN0dXJlKiBtX3N0cnVjdHVy
ZTsKIH07CiAKLWNsYXNzIFN0cnVjdHVyZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgeworY2xhc3Mg
U3RydWN0dXJlIDogcHVibGljIEpTQ2VsbCB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MTZf
dCBzaG9ydEludmFsaWRPZmZzZXQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4
KCkgLSAxOwogICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDE2X3QgdXNlUmFyZURhdGFGbGFnID0g
c3RkOjpudW1lcmljX2xpbWl0czx1aW50MTZfdD46Om1heCgpOwogcHVibGljOgpAQCAtMTQ2LDEz
ICsxNDYsNyBAQCBwdWJsaWM6CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBp
c1ZhbGlkUHJvdG90eXBlKEpTVmFsdWUpOwogCi1wcml2YXRlOgotICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mIHZtKQotICAgIHsKLSAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwot
ICAgICAgICBBU1NFUlQobV9wcm90b3R5cGUuZ2V0KCkuaXNFbXB0eSgpIHx8IGlzVmFsaWRQcm90
b3R5cGUobV9wcm90b3R5cGUuZ2V0KCkpKTsKLSAgICB9Ci0KK3Byb3RlY3RlZDoKICAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJiB2bSwgY29uc3QgU3RydWN0dXJlKiBwcmV2aW91cykKICAgICB7
CiAgICAgICAgIHRoaXMtPmZpbmlzaENyZWF0aW9uKHZtKTsKQEAgLTE2NSw2ICsxNTksMTMgQEAg
cHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KIAorcHJpdmF0ZToKKyAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKKyAgICB7CisgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsK
KyAgICAgICAgQVNTRVJUKG1fcHJvdG90eXBlLmdldCgpLmlzRW1wdHkoKSB8fCBpc1ZhbGlkUHJv
dG90eXBlKG1fcHJvdG90eXBlLmdldCgpKSk7CisgICAgfQorCiAgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIENyZWF0aW5nRWFybHlDZWxsVGFnKQogICAgIHsKICAgICAgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0sIHRoaXMsIENyZWF0aW5nRWFybHlDZWxsKTsKQEAgLTIwNiw2ICsy
MDcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cnVjdHVyZSogcHJldmVudEV4dGVuc2lvbnNU
cmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogbm9uUHJv
cGVydHlUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKiwgVHJhbnNpdGlvbktpbmQpOwogICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIG5vblByb3BlcnR5VHJhbnNpdGlvblNs
b3coVk0mLCBTdHJ1Y3R1cmUqLCBUcmFuc2l0aW9uS2luZCk7CisgICAgc3RhdGljIFN0cnVjdHVy
ZSogc2V0QnJhbmRUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKiwgU3ltYm9sKiBicmFuZCwgRGVm
ZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqID0gbnVsbHB0cik7CiAKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzU2VhbGVkKFZNJik7CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgYm9vbCBpc0Zyb3plbihWTSYpOwpAQCAtNzE1LDE2ICs3MTcsMTkgQEAgcHVibGljOgog
ICAgIERFRklORV9CSVRGSUVMRChib29sLCBoYXNCZWVuRGljdGlvbmFyeSwgSGFzQmVlbkRpY3Rp
b25hcnksIDEsIDI3KTsKICAgICBERUZJTkVfQklURklFTEQoYm9vbCwgcHJvdGVjdFByb3BlcnR5
VGFibGVXaGlsZVRyYW5zaXRpb25pbmcsIFByb3RlY3RQcm9wZXJ0eVRhYmxlV2hpbGVUcmFuc2l0
aW9uaW5nLCAxLCAyOCk7CiAgICAgREVGSU5FX0JJVEZJRUxEKGJvb2wsIGhhc1VuZGVyc2NvcmVQ
cm90b1Byb3BlcnR5RXhjbHVkaW5nT3JpZ2luYWxQcm90bywgSGFzVW5kZXJzY29yZVByb3RvUHJv
cGVydHlFeGNsdWRpbmdPcmlnaW5hbFByb3RvLCAxLCAyOSk7CisgICAgREVGSU5FX0JJVEZJRUxE
KGJvb2wsIGlzQnJhbmRlZFN0cnVjdHVyZSwgSXNCcmFuZGVkU3RydWN0dXJlLCAxLCAzMCk7CiAK
ICAgICBzdGF0aWNfYXNzZXJ0KHNfYml0V2lkdGhPZlRyYW5zaXRpb25Qcm9wZXJ0eUF0dHJpYnV0
ZXMgPD0gc2l6ZW9mKFRyYW5zaXRpb25Qcm9wZXJ0eUF0dHJpYnV0ZXMpICogOCk7CiAgICAgc3Rh
dGljX2Fzc2VydChzX2JpdFdpZHRoT2ZUcmFuc2l0aW9uS2luZCA8PSBzaXplb2YoVHJhbnNpdGlv
bktpbmQpICogOCk7CiAKK3Byb3RlY3RlZDoKKyAgICBTdHJ1Y3R1cmUoVk0mLCBTdHJ1Y3R1cmUq
LCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSopOworCiBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBKU19FWFBP
UlRfUFJJVkFURSBTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90
eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNvbnN0IENsYXNzSW5mbyosIEluZGV4aW5nVHlwZSwgdW5z
aWduZWQgaW5saW5lQ2FwYWNpdHkpOwogICAgIFN0cnVjdHVyZShWTSYpOwotICAgIFN0cnVjdHVy
ZShWTSYsIFN0cnVjdHVyZSosIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRG
aXJlKik7CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBE
ZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogPSBudWxscHRyKTsKICAg
ICAKQEAgLTg3NCw0ICs4NzksNDEgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgSlNEb2xs
YXJWTUhlbHBlcjsKIH07CiAKK2NsYXNzIEJyYW5kZWRTdHJ1Y3R1cmUgZmluYWwgOiBwdWJsaWMg
U3RydWN0dXJlIHsKKyAgICB0eXBlZGVmIFN0cnVjdHVyZSBCYXNlOworCitwdWJsaWM6CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CisgICAgc3RhdGlj
IElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4g
JnZtLmJyYW5kZWRTdHJ1Y3R1cmVTcGFjZTsKKyAgICB9CisKKyAgICBTeW1ib2wqIGJyYW5kKCkK
KyAgICB7CisgICAgICAgIHJldHVybiBtX2JyYW5kLmdldCgpOworICAgIH0KKworICAgIEJyYW5k
ZWRTdHJ1Y3R1cmUqIHBhcmVudEJyYW5kKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX3BhcmVu
dEJyYW5kLmdldCgpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAgIGJvb2wgY2hlY2tCcmFuZChTeW1ib2wqIGJyYW5k
KTsKKworcHJpdmF0ZTogCisgICAgQnJhbmRlZFN0cnVjdHVyZShWTSYsIFN0cnVjdHVyZSosIFN5
bWJvbCogYnJhbmQsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKik7
CisgICAgQnJhbmRlZFN0cnVjdHVyZShWTSYsIEJyYW5kZWRTdHJ1Y3R1cmUqLCBEZWZlcnJlZFN0
cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSopOworCisgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgU3ltYm9sKiBicmFuZCwgRGVmZXJyZWRTdHJ1Y3R1
cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqID0gbnVsbHB0cik7CisKKyAgICBXcml0ZUJhcnJp
ZXI8U3ltYm9sPiBtX2JyYW5kOworICAgIFdyaXRlQmFycmllcjxCcmFuZGVkU3RydWN0dXJlPiBt
X3BhcmVudEJyYW5kOworCisgICAgZnJpZW5kIGNsYXNzIFN0cnVjdHVyZTsKK307CisKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlSW5saW5lcy5oCmluZGV4IDczOWUxZWYzYjljNy4uNDZlNGRjMjIzZDM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCkBAIC02MSw3
ICs2MSwxMiBAQCBpbmxpbmUgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmNyZWF0ZVN0cnVjdHVyZShW
TSYgdm0pCiBpbmxpbmUgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmNyZWF0ZShWTSYgdm0sIFN0cnVj
dHVyZSogcHJldmlvdXMsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJl
KiBkZWZlcnJlZCkKIHsKICAgICBBU1NFUlQodm0uc3RydWN0dXJlU3RydWN0dXJlKTsKLSAgICBT
dHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cnVj
dHVyZT4odm0uaGVhcCkpIFN0cnVjdHVyZSh2bSwgcHJldmlvdXMsIGRlZmVycmVkKTsKKyAgICBT
dHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZTsKKyAgICBpZiAocHJldmlvdXMtPmlzQnJhbmRlZFN0cnVj
dHVyZSgpKQorICAgICAgICBuZXdTdHJ1Y3R1cmUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxCcmFuZGVkU3RydWN0dXJlPih2bS5oZWFwKSkgQnJhbmRlZFN0cnVjdHVyZSh2bSwganNDYXN0
PEJyYW5kZWRTdHJ1Y3R1cmUqPihwcmV2aW91cyksIGRlZmVycmVkKTsKKyAgICBlbHNlCisgICAg
ICAgIG5ld1N0cnVjdHVyZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cnVjdHVyZT4o
dm0uaGVhcCkpIFN0cnVjdHVyZSh2bSwgcHJldmlvdXMsIGRlZmVycmVkKTsKKwogICAgIG5ld1N0
cnVjdHVyZS0+ZmluaXNoQ3JlYXRpb24odm0sIHByZXZpb3VzKTsKICAgICByZXR1cm4gbmV3U3Ry
dWN0dXJlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlVHJhbnNpdGlvblRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaAppbmRleCA2M2NmOGUwMjEyMjEuLjgwNjJjMmM3ODdj
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJh
bnNpdGlvblRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlVHJhbnNpdGlvblRhYmxlLmgKQEAgLTU1LDcgKzU1LDEwIEBAIGVudW0gY2xhc3MgVHJhbnNp
dGlvbktpbmQgOiB1aW50OF90IHsKICAgICBBZGRJbmRleGVkQWNjZXNzb3JzLAogICAgIFByZXZl
bnRFeHRlbnNpb25zLAogICAgIFNlYWwsCi0gICAgRnJlZXplCisgICAgRnJlZXplLAorCisgICAg
Ly8gU3VwcG9ydCBmb3IgdHJhbnNpdGlvbnMgcmVsYXRlZCB3aXRoIHByaXZhdGUgYnJhbmQKKyAg
ICBTZXRCcmFuZAogfTsKIAogc3RhdGljIGNvbnN0ZXhwciBhdXRvIEZpcnN0Tm9uUHJvcGVydHlU
cmFuc2l0aW9uS2luZCA9IFRyYW5zaXRpb25LaW5kOjpBbGxvY2F0ZVVuZGVjaWRlZDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcAppbmRleCAxNjRjYTZk
NDMxMGUuLmZiNDYwMDFiYWVkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3ltYm9sVGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N5bWJvbFRhYmxlLmNwcApAQCAtMTg0LDcgKzE4NCw3IEBAIFN5bWJvbFRhYmxlKiBTeW1ib2xU
YWJsZTo6Y2xvbmVTY29wZVBhcnQoVk0mIHZtKQogCiAgICAgICAgIHsKICAgICAgICAgICAgIGZv
ciAoYXV0byBuYW1lIDogbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMpCi0gICAgICAgICAgICAg
ICAgcmVzdWx0LT5tX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQobmFtZSk7CisgICAgICAg
ICAgICAgICAgcmVzdWx0LT5tX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQobmFtZS5rZXks
IG5hbWUudmFsdWUpOwogICAgICAgICB9CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKaW5kZXggNTlhNzIzMDVkM2E3Li5hNTM4MWNjYmVl
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaApAQCAt
MzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50c1RhYmxlLmgiCiAjaW5jbHVk
ZSAiVHlwZUxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiVmFyT2Zmc2V0LmgiCisjaW5jbHVkZSAiVmFy
aWFibGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKICNpbmNsdWRlIDxt
ZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KQEAgLTQ1MCw4ICs0NTEsNyBAQCBw
dWJsaWM6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIFJl
ZlB0cjxUeXBlU2V0PiwgSWRlbnRpZmllclJlcEhhc2g+IFVuaXF1ZVR5cGVTZXRNYXA7CiAgICAg
dHlwZWRlZiBIYXNoTWFwPFZhck9mZnNldCwgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4gT2Zm
c2V0VG9WYXJpYWJsZU1hcDsKICAgICB0eXBlZGVmIFZlY3RvcjxTeW1ib2xUYWJsZUVudHJ5Kj4g
TG9jYWxUb0VudHJ5VmVjOwotICAgIHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8VW5pcXVlZFN0cmlu
Z0ltcGw+LCBJZGVudGlmaWVyUmVwSGFzaD4gUHJpdmF0ZU5hbWVTZXQ7Ci0gICAgdHlwZWRlZiBX
VEY6Okl0ZXJhdG9yUmFuZ2U8dHlwZW5hbWUgUHJpdmF0ZU5hbWVTZXQ6Oml0ZXJhdG9yPiBQcml2
YXRlTmFtZUl0ZXJhdG9yUmFuZ2U7CisgICAgdHlwZWRlZiBXVEY6Okl0ZXJhdG9yUmFuZ2U8dHlw
ZW5hbWUgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudDo6aXRlcmF0b3I+IFByaXZhdGVOYW1lSXRlcmF0
b3JSYW5nZTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vz
cz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKQEAgLTYwNSwx
NCArNjA1LDE0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1ha2VJdGVyYXRvclJhbmdlKG1f
cmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmJlZ2luKCksIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5h
bWVzLmVuZCgpKTsKICAgICB9CiAKLSAgICB2b2lkIGFkZFByaXZhdGVOYW1lKFVuaXF1ZWRTdHJp
bmdJbXBsKiBrZXkpCisgICAgdm9pZCBhZGRQcml2YXRlTmFtZShjb25zdCBSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+JiBrZXksIFByaXZhdGVOYW1lRW50cnkgdmFsdWUpCiAgICAgewogICAgICAg
ICBBU1NFUlQoa2V5ICYmICFrZXktPmlzU3ltYm9sKCkpOwogICAgICAgICBpZiAoIW1fcmFyZURh
dGEpCiAgICAgICAgICAgICBtX3JhcmVEYXRhID0gV1RGOjptYWtlVW5pcXVlPFN5bWJvbFRhYmxl
UmFyZURhdGE+KCk7CiAKLSAgICAgICAgQVNTRVJUKCFtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1l
cy5jb250YWlucyhrZXkpKTsKLSAgICAgICAgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRk
KGtleSk7CisgICAgICAgIEFTU0VSVChtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5maW5kKGtl
eSkgPT0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZW5kKCkpOworICAgICAgICBtX3JhcmVE
YXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoa2V5LCB2YWx1ZSk7CiAgICAgfQogCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRW50cnk+CkBAIC03NTYsNyArNzU2LDcgQEAgcHVibGljOgogICAgICAgICBP
ZmZzZXRUb1ZhcmlhYmxlTWFwIG1fb2Zmc2V0VG9WYXJpYWJsZU1hcDsKICAgICAgICAgVW5pcXVl
VHlwZVNldE1hcCBtX3VuaXF1ZVR5cGVTZXRNYXA7CiAgICAgICAgIFdyaXRlQmFycmllcjxDb2Rl
QmxvY2s+IG1fY29kZUJsb2NrOwotICAgICAgICBQcml2YXRlTmFtZVNldCBtX3ByaXZhdGVOYW1l
czsKKyAgICAgICAgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCBtX3ByaXZhdGVOYW1lczsKICAgICB9
OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDg0MDNl
MmM4MWM3Mi4uYzMyZGUzZjM1OTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
CkBAIC0zNjksNiArMzY5LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBU
eXBlLCBXVEY6OlJ1bkxvb3AqIHJ1bkxvb3AsIGJvb2wqIHN1Y2Nlc3MpCiAgICAgLCBzdHJ1Y3R1
cmVDaGFpblNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0
KCksIFN0cnVjdHVyZUNoYWluKQogICAgICwgc3RydWN0dXJlUmFyZURhdGFTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTdHJ1
Y3R1cmVSYXJlRGF0YSkgLy8gSGFzaDoweGFjYTRlNjJkCiAgICAgLCBzdHJ1Y3R1cmVTcGFjZSBJ
U09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgp
LCBTdHJ1Y3R1cmUpIC8vIEhhc2g6MHgxZjFiY2RjYQorICAgICwgYnJhbmRlZFN0cnVjdHVyZVNw
YWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUu
Z2V0KCksIEJyYW5kZWRTdHJ1Y3R1cmUpCiAgICAgLCBzeW1ib2xUYWJsZVNwYWNlIElTT19TVUJT
UEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFN5bWJv
bFRhYmxlKSAvLyBIYXNoOjB4YzUyMTVhZmQKICAgICAsIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2VzV2l0aENvbnN0cmFpbnRzKGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSkKICAgICAs
IGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMoZXhlY3V0YWJsZVRvQ29k
ZUJsb2NrRWRnZVNwYWNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggMjdhYWZj
MDMyNjZmLi4yZTg3NjYzN2RjOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAt
NDY1LDYgKzQ2NSw3IEBAIHB1YmxpYzoKICAgICBJc29TdWJzcGFjZSBzdHJ1Y3R1cmVDaGFpblNw
YWNlOwogICAgIElzb1N1YnNwYWNlIHN0cnVjdHVyZVJhcmVEYXRhU3BhY2U7CiAgICAgSXNvU3Vi
c3BhY2Ugc3RydWN0dXJlU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgYnJhbmRlZFN0cnVjdHVyZVNw
YWNlOwogICAgIElzb1N1YnNwYWNlIHN5bWJvbFRhYmxlU3BhY2U7CiAKICNkZWZpbmUgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihuYW1lKSBcCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417999</attachid>
            <date>2021-01-20 14:50:57 -0800</date>
            <delta_ts>2021-01-29 10:54:34 -0800</delta_ts>
            <desc>WIP - Patch</desc>
            <filename>private-methods.diff</filename>
            <type>text/plain</type>
            <size>312845</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
M2IxZTI3NTA5ZTE3Li4zYzAxOTE5MDg3ZDIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMTAtMjAgIENh
aW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgorCisgICAgICAgIFtFU05leHRdIEltcGxl
bWVudCBwcml2YXRlIG1ldGhvZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5NDQzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVy
LWNhbGwtZnJvbS1hcnJvdy1mdW5jdGlvbi5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3By
aXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVyLWNhbGwtZnJvbS1ldmFsLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2QtYnJhbmQtY2hlY2suanM6IEFkZGVk
LgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZC1jb21wYXJpc29uLmpzOiBBZGRlZC4K
KyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2QtZXh0ZW5kcy1icmFuZC1jaGVjay5qczog
QWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWdldC1hbmQtY2FsbC5qczog
QWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9kLW5lc3RlZC1jbGFzcy5qczog
QWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1vbi1wcm94eS5qczogQWRk
ZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWRpcmVjdC1l
dmFsLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1sOgorCiAyMDIxLTAx
LTE4ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10g
RlRMOjpwcmVwYXJlT1NSRW50cnkgY2FuIGNsZWFyIE9TUiBlbnRyeSBDb2RlQmxvY2sgaWYgaXQg
aXMgYWxyZWFkeSBpbnZhbGlkYXRlZApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0
ZS1icmFuZC1pbnN0YWxsZWQtYWZ0ZXItc3VwZXItY2FsbC1mcm9tLWFycm93LWZ1bmN0aW9uLmpz
IGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1icmFuZC1pbnN0YWxsZWQtYWZ0ZXItc3VwZXItY2Fs
bC1mcm9tLWFycm93LWZ1bmN0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uN2UyOWM3YmMxMWMzCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
cHJpdmF0ZS1icmFuZC1pbnN0YWxsZWQtYWZ0ZXItc3VwZXItY2FsbC1mcm9tLWFycm93LWZ1bmN0
aW9uLmpzCkBAIC0wLDAgKzEsMjcgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRl
TWV0aG9kcz10cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsKKyAgICBpZiAoYSAhPT0g
ZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6
ICIgKyBhKTsKK30KKworY2xhc3MgQSB7fQorCitjbGFzcyBDIGV4dGVuZHMgQSB7CisgICAgI21l
dGhvZCgpIHsKKyAgICAgICAgcmV0dXJuICJiYXNlIjsKKyAgICB9CisKKyAgICBjb25zdHJ1Y3Rv
cigpIHsKKyAgICAgICAgbGV0IGluaXQgPSAoKSA9PiBzdXBlcigpOworICAgICAgICBpbml0KCk7
CisgICAgfQorCisgICAgYmFzZUFjY2VzcygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI21ldGhv
ZCgpOworICAgIH0KK30KKworbGV0IGMgPSBuZXcgQygpOworYXNzZXJ0KGMuYmFzZUFjY2Vzcygp
LCAiYmFzZSIpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLWJyYW5kLWlu
c3RhbGxlZC1hZnRlci1zdXBlci1jYWxsLWZyb20tZXZhbC5qcyBiL0pTVGVzdHMvc3RyZXNzL3By
aXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVyLWNhbGwtZnJvbS1ldmFsLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOWUxNmVlMzhlMzQxCi0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1icmFuZC1pbnN0YWxsZWQtYWZ0ZXIt
c3VwZXItY2FsbC1mcm9tLWV2YWwuanMKQEAgLTAsMCArMSwyNiBAQAorLy9AIHJlcXVpcmVPcHRp
b25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitmdW5jdGlvbiBhc3NlcnQoYSwgZSkg
eworICAgIGlmIChhICE9PSBlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAi
ICsgZSArICIgYnV0IGdvdDogIiArIGEpOworfQorCitjbGFzcyBBIHt9CisKK2NsYXNzIEMgZXh0
ZW5kcyBBIHsKKyAgICAjbWV0aG9kKCkgeworICAgICAgICByZXR1cm4gImJhc2UiOworICAgIH0K
KworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICBldmFsKCJzdXBlcigpIik7CisgICAgfQor
CisgICAgYmFzZUFjY2VzcygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI21ldGhvZCgpOworICAg
IH0KK30KKworbGV0IGMgPSBuZXcgQygpOworYXNzZXJ0KGMuYmFzZUFjY2VzcygpLCAiYmFzZSIp
OworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1icmFuZC1jaGVj
ay5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWJyYW5kLWNoZWNrLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNmE1MTc1YTNmNWJjCi0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtYnJhbmQtY2hlY2suanMK
QEAgLTAsMCArMSwzMyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2Rz
PXRydWUiKQorCitmdW5jdGlvbiBhc3NlcnQoYSwgZSkgeworICAgIGlmIChhICE9PSBlKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEp
OworfQorCitjbGFzcyBDIHsKKyAgICAjbSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI2Y7Cisg
ICAgfQorCisgICAgbWV0aG9kKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jbSgpOworICAgIH0K
KworICAgICNmID0gNDsKK30KKworbGV0IGMgPSBuZXcgQygpOworYXNzZXJ0KGMubWV0aG9kKCks
IDQpOworCit0cnkgeworICAgIGNsYXNzIEMgeworICAgICAgICAjbSgpIHsgcmV0dXJuIDM7IH0K
KyAgICB9CisKKyAgICBsZXQgbyA9IG5ldyBDKCk7CisgICAgYy5tZXRob2QuY2FsbChvKTsKK30g
Y2F0Y2ggKGUpIHsKKyAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIFR5cGVFcnJvciwgdHJ1ZSk7Cit9
CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWNoYW5nZS1hdHRy
aWJ1dGUtZnJvbS1icmFuZGVkLXN0cnVjdHVyZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUt
bWV0aG9kLWNoYW5nZS1hdHRyaWJ1dGUtZnJvbS1icmFuZGVkLXN0cnVjdHVyZS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmQ3OTBjNDAzNTljOQotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWNoYW5nZS1hdHRyaWJ1dGUt
ZnJvbS1icmFuZGVkLXN0cnVjdHVyZS5qcwpAQCAtMCwwICsxLDUwIEBACisvL0AgcmVxdWlyZU9w
dGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAg
c2FtZVZhbHVlOiBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCkgeworICAgICAgICBpZiAoYWN0
dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6
ICIgKyBleHBlY3RlZCArICIgYnV0IGdvdDogIiArIGFjdHVhbCk7CisgICAgfSwKKworICAgIHRo
cm93czogZnVuY3Rpb24gKGV4cGVjdGVkRXJyb3IsIG9wKSB7CisgICAgICAgIHRyeSB7CisgICAg
ICAgICAgb3AoKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBpZiAoIShlIGlu
c3RhbmNlb2YgZXhwZWN0ZWRFcnJvcikpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4cGVjdGVkRXJyb3IgKyAiIGJ1dCB0aHJldzogIiAr
IGUpOworICAgICAgICB9CisgICAgfQorfTsKKworY2xhc3MgQyB7CisgICAgI20oKSB7IHJldHVy
biAndGVzdCc7IH0KKworICAgIGFjY2VzcygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI20oKTsK
KyAgICB9Cit9CisKK2xldCBjMSA9IG5ldyBDKCk7CitjMS5mb28gPSAndGVzdCc7Cithc3NlcnQu
c2FtZVZhbHVlKGMxLmFjY2VzcygpLCAndGVzdCcpOworYXNzZXJ0LnNhbWVWYWx1ZShjMS5mb28s
ICd0ZXN0Jyk7Cithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgIGMx
LmFjY2Vzcy5jYWxsKHt9KTsKK30pOworCitPYmplY3QuZGVmaW5lUHJvcGVydHkoYzEsICdmb28n
LCB7CisgICAgd3JpdGFibGU6IGZhbHNlLAorICAgIGVudW1lcmFibGU6IGZhbHNlCit9KTsKKwor
YXNzZXJ0LnNhbWVWYWx1ZShjMS5hY2Nlc3MoKSwgJ3Rlc3QnKTsKK2Fzc2VydC50aHJvd3MoVHlw
ZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgYzEuYWNjZXNzLmNhbGwoe30pOworfSk7CisKK2xl
dCBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjMSwgJ2Zvbycp
OworCithc3NlcnQuc2FtZVZhbHVlKGRlc2NyaXB0b3IudmFsdWUsICd0ZXN0Jyk7Cithc3NlcnQu
c2FtZVZhbHVlKGRlc2NyaXB0b3IuZW51bWVyYWJsZSwgZmFsc2UpOworYXNzZXJ0LnNhbWVWYWx1
ZShkZXNjcmlwdG9yLndyaXRhYmxlLCBmYWxzZSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL3ByaXZhdGUtbWV0aG9kLWNoYW5nZS1wcm90b3R5cGUtZnJvbS1icmFuZGVkLXN0cnVjdHVy
ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWNoYW5nZS1wcm90b3R5cGUtZnJv
bS1icmFuZGVkLXN0cnVjdHVyZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLmVkYjFmNjY5Y2EwMgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3By
aXZhdGUtbWV0aG9kLWNoYW5nZS1wcm90b3R5cGUtZnJvbS1icmFuZGVkLXN0cnVjdHVyZS5qcwpA
QCAtMCwwICsxLDQwIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9
dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAobGhzLCBy
aHMpIHsKKyAgICAgICAgaWYgKGxocyAhPT0gcmhzKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJFeHBlY3RlZDogIiArIGxocyArICIgYnVnIGdvdDogIiArIHJocyk7CisgICAgfSwKKwor
ICAgIHRocm93czogZnVuY3Rpb24gKGV4cGVjdGVkRXJyb3IsIG9wKSB7CisgICAgICAgIHRyeSB7
CisgICAgICAgICAgb3AoKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBpZiAo
IShlIGluc3RhbmNlb2YgZXhwZWN0ZWRFcnJvcikpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4cGVjdGVkRXJyb3IgKyAiIGJ1dCB0aHJl
dzogIiArIGUpOworICAgICAgICB9CisgICAgfQorfTsKKworY2xhc3MgQyB7CisgICAgI20oKSB7
IHJldHVybiAndGVzdCc7IH0KKworICAgIGFjY2VzcygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
I20oKTsKKyAgICB9Cit9CisKK2xldCBjMSA9IG5ldyBDKCk7Cithc3NlcnQuc2FtZVZhbHVlKGMx
LmFjY2VzcygpLCAndGVzdCcpOworYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgp
IHsKKyAgICBjMS5hY2Nlc3MuY2FsbCh7fSk7Cit9KTsKKworT2JqZWN0LnNldFByb3RvdHlwZU9m
KGMxLCBudWxsKTsKKworYXNzZXJ0LnNhbWVWYWx1ZShjMS5hY2Nlc3MsIHVuZGVmaW5lZCk7Cith
c3NlcnQuc2FtZVZhbHVlKEMucHJvdG90eXBlLmFjY2Vzcy5jYWxsKGMxKSwgJ3Rlc3QnKTsKK2Fz
c2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgYzEuYWNjZXNzLmNhbGwo
e30pOworfSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWNo
ZWNrLXN0cnVjdHVyZS1taXNzLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtY2hl
Y2stc3RydWN0dXJlLW1pc3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi41ODBkN2Y3ZWVlNzAKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2
YXRlLW1ldGhvZC1jaGVjay1zdHJ1Y3R1cmUtbWlzcy5qcwpAQCAtMCwwICsxLDUxIEBACisvL0Ag
cmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQg
PSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBl
KSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6
ICIgKyBhKTsKKyAgICB9LAorICAgIHNob3VsZFRocm93OiBmdW5jdGlvbihleGNlcHRpb24sIGZ1
bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9uOworICAgICAgICB0cnkgeworICAg
ICAgICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSBmYWxzZTsK
KyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7
CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRpb24pCisgICAgICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1l
ICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGlm
ICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVk
IHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4
Y2VwdGlvbiIpOworICAgIH0KK30KKworbGV0IGkgPSAwOworCitjbGFzcyBDIHsKKyAgICBjb25z
dHJ1Y3RvcigpIHsKKyAgICAgICAgaWYgKGkgPj0gNTAwMCkKKyAgICAgICAgICAgIHRoaXMucHJv
cGVydHkgPSBpOworICAgIH0KKworICAgICNtZXRob2QodikgeworICAgICAgICB0aGlzLmZpZWxk
ID0gdjsKKyAgICB9CisKKyAgICBhY2Nlc3ModikgeworICAgICAgICB0aGlzLiNtZXRob2Qodik7
CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuYWNjZXNzKTsKKworbGV0IGMgPSBuZXcg
QygpOworZm9yICg7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgYy5hY2Nlc3MoJ2ZvbycgKyBpKTsK
KyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZmllbGQsICdmb28nICsgaSk7Cit9CisKK2Fzc2VydC5z
aG91bGRUaHJvdyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgIGMuYWNjZXNzLmNhbGwoe30s
ICd0ZXN0Jyk7Cit9KTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRo
b2QtY29tcGFyaXNvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWNvbXBhcmlz
b24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40NmRhNzg2N2Jh
NDgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1jb21w
YXJpc29uLmpzCkBAIC0wLDAgKzEsMzEgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2
YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0
aW9uIChsaHMsIHJocykgeworICAgICAgICBpZiAobGhzICE9PSByaHMpCisgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgbGhzICsgIiBidWcgZ290OiAiICsgcmhzKTsK
KyAgICB9LAorCisgICAgdGhyb3dzOiBmdW5jdGlvbiAoZXhwZWN0ZWRFcnJvciwgb3ApIHsKKyAg
ICAgICAgdHJ5IHsKKyAgICAgICAgICBvcCgpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAg
ICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEVycm9yKSkKKyAgICAgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhwZWN0ZWRFcnJvciAr
ICIgYnV0IHRocmV3OiAiICsgZSk7CisgICAgICAgIH0KKyAgICB9Cit9OworCitjbGFzcyBDIHsK
KyAgICAjbSgpIHsgcmV0dXJuICd0ZXN0MjYyJzsgfQorCisgICAgZ2V0UHJpdmF0ZU1ldGhvZCgp
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI207CisgICAgfQorfQorCitsZXQgYzEgPSBuZXcgQygp
OworbGV0IGMyID0gbmV3IEMoKTsKKworYXNzZXJ0LnNhbWVWYWx1ZShjMS5nZXRQcml2YXRlTWV0
aG9kKCksIGMyLmdldFByaXZhdGVNZXRob2QoKSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL3ByaXZhdGUtbWV0aG9kLWRlbGV0ZS1wcm9wZXJ0eS1mcm9tLWJyYW5kZWQtc3RydWN0dXJl
LmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtZGVsZXRlLXByb3BlcnR5LWZyb20t
YnJhbmRlZC1zdHJ1Y3R1cmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi5mZWZhZTVmMjFjY2QKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2
YXRlLW1ldGhvZC1kZWxldGUtcHJvcGVydHktZnJvbS1icmFuZGVkLXN0cnVjdHVyZS5qcwpAQCAt
MCwwICsxLDQyIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1
ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAobGhzLCByaHMp
IHsKKyAgICAgICAgaWYgKGxocyAhPT0gcmhzKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJFeHBlY3RlZDogIiArIGxocyArICIgYnVnIGdvdDogIiArIHJocyk7CisgICAgfSwKKworICAg
IHRocm93czogZnVuY3Rpb24gKGV4cGVjdGVkRXJyb3IsIG9wKSB7CisgICAgICAgIHRyeSB7Cisg
ICAgICAgICAgb3AoKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBpZiAoIShl
IGluc3RhbmNlb2YgZXhwZWN0ZWRFcnJvcikpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4cGVjdGVkRXJyb3IgKyAiIGJ1dCB0aHJldzog
IiArIGUpOworICAgICAgICB9CisgICAgfQorfTsKKworY2xhc3MgQyB7CisgICAgI20oKSB7IHJl
dHVybiAndGVzdCc7IH0KKworICAgIGFjY2VzcygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI20o
KTsKKyAgICB9Cit9CisKK2xldCBjMSA9IG5ldyBDKCk7CitjMS5mb28gPSAndGVzdCc7Cithc3Nl
cnQuc2FtZVZhbHVlKGMxLmFjY2VzcygpLCAndGVzdCcpOworYXNzZXJ0LnNhbWVWYWx1ZShjMS5m
b28sICd0ZXN0Jyk7Cithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAg
IGMxLmFjY2Vzcy5jYWxsKHt9KTsKK30pOworCitkZWxldGUgYzEuZm9vOworCithc3NlcnQuc2Ft
ZVZhbHVlKGMxLmFjY2VzcygpLCAndGVzdCcpOworYXNzZXJ0LnNhbWVWYWx1ZShjMS5mb28sIHVu
ZGVmaW5lZCk7Cithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgIGMx
LmFjY2Vzcy5jYWxsKHt9KTsKK30pOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2
YXRlLW1ldGhvZC1leHRlbmRzLWJyYW5kLWNoZWNrLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0
ZS1tZXRob2QtZXh0ZW5kcy1icmFuZC1jaGVjay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLjMyNjY0YjJmY2NjZgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL3ByaXZhdGUtbWV0aG9kLWV4dGVuZHMtYnJhbmQtY2hlY2suanMKQEAgLTAsMCArMSw0
MSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitm
dW5jdGlvbiBhc3NlcnQoYSwgZSkgeworICAgIGlmIChhICE9PSBlKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworfQorCitjbGFz
cyBCYXNlIHsKKyAgICAjbUJhc2UoKSB7CisgICAgICAgIHJldHVybiA0OworICAgIH0KKworICAg
IG1ldGhvZEJhc2UoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtQmFzZSgpOworICAgIH0KK30K
KworY2xhc3MgQyBleHRlbmRzIEJhc2UgeworICAgICNtKCkgeworICAgICAgICByZXR1cm4gdGhp
cy4jZjsKKyAgICB9CisKKyAgICBtZXRob2QoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtKCk7
CisgICAgfQorCisgICAgI2YgPSAxNTsKK30KKworbGV0IGMgPSBuZXcgQygpOworYXNzZXJ0KGMu
bWV0aG9kKCksIDE1KTsKK2Fzc2VydChjLm1ldGhvZEJhc2UoKSwgNCk7CisKK2xldCBiYXNlID0g
bmV3IEJhc2UgKCk7Cithc3NlcnQoYmFzZS5tZXRob2RCYXNlKCksIDQpOwordHJ5IHsKKyAgICBj
Lm1ldGhvZC5jYWxsKGJhc2UpOworfSBjYXRjaCAoZSkgeworICAgIGFzc2VydChlIGluc3RhbmNl
b2YgVHlwZUVycm9yLCB0cnVlKTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJp
dmF0ZS1tZXRob2QtZ2V0LWFuZC1jYWxsLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRo
b2QtZ2V0LWFuZC1jYWxsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uMTMxN2UxZTc3ZTQzCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0
ZS1tZXRob2QtZ2V0LWFuZC1jYWxsLmpzCkBAIC0wLDAgKzEsMjQgQEAKKy8vQCByZXF1aXJlT3B0
aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBz
YW1lVmFsdWU6IGZ1bmN0aW9uIChsaHMsIHJocykgeworICAgICAgICBpZiAobGhzICE9PSByaHMp
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgbGhzICsgIiBidWcg
Z290OiAiICsgcmhzKTsKKyAgICB9Cit9OworCitjbGFzcyBDIHsKKyAgICAjbSgpIHsgcmV0dXJu
IHRoaXMuX3Y7IH0KKworICAgIGdldFByaXZhdGVNZXRob2QoKSB7CisgICAgICAgIHJldHVybiB0
aGlzLiNtOworICAgIH0KK30KKworbGV0IGMgPSBuZXcgQygpOworCitsZXQgbzEgPSB7X3Y6ICd0
ZXN0MjYyJ307CitsZXQgbzIgPSB7X3Y6ICdmb28nfTsKK2Fzc2VydC5zYW1lVmFsdWUoYy5nZXRQ
cml2YXRlTWV0aG9kKCkuY2FsbChvMSksICd0ZXN0MjYyJyk7Cithc3NlcnQuc2FtZVZhbHVlKGMu
Z2V0UHJpdmF0ZU1ldGhvZCgpLmNhbGwobzIpLCAnZm9vJyk7CisKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWludmFsaWQtbXVsdGlwbGUtYnJhbmQtaW5zdGFsbGF0
aW9uLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtaW52YWxpZC1tdWx0aXBsZS1i
cmFuZC1pbnN0YWxsYXRpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi43ZDc3NTA3OWYzMTQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2
YXRlLW1ldGhvZC1pbnZhbGlkLW11bHRpcGxlLWJyYW5kLWluc3RhbGxhdGlvbi5qcwpAQCAtMCww
ICsxLDUxIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIp
CisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAg
ICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiAr
IGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9LAorICAgIHNob3VsZFRocm93OiBmdW5jdGlv
bihleGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9uOworICAg
ICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhyZXdFeGNl
cHRpb24gPSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJld0V4
Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRpb24p
CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiAr
IGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBleGVj
dXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworICAgIH0KK30KKworbGV0IGkgPSAwOworCitsZXQg
byA9IHt9OworY2xhc3MgQmFzZSB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIHJldHVy
biBvOworICAgIH0KK30KKworY2xhc3MgQyBleHRlbmRzIEJhc2UgeworICAgICNtZXRob2Qodikg
eworICAgICAgICB0aGlzLmZpZWxkID0gdjsKKyAgICB9CisKKyAgICBhY2Nlc3ModikgeworICAg
ICAgICB0aGlzLiNtZXRob2Qodik7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuYWNj
ZXNzKTsKKworbGV0IGMgPSBuZXcgQygpOworQy5wcm90b3R5cGUuYWNjZXNzLmNhbGwoYywgJ2Zv
bycpOworYXNzZXJ0LnNhbWVWYWx1ZShjLmZpZWxkLCAnZm9vJyk7CisKK2Fzc2VydC5zaG91bGRU
aHJvdyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgIGMgPSBuZXcgQygpOworfSk7CisKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWludmFsaWRhdGUtY29tcGls
ZWQtd2l0aC1jb25zdGFudC1zeW1ib2wuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhv
ZC1pbnZhbGlkYXRlLWNvbXBpbGVkLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMjlkM2M3MmIwMzhiCi0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtaW52YWxpZGF0ZS1jb21waWxlZC13
aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpAQCAtMCwwICsxLDYyIEBACisvL0AgcmVxdWlyZU9wdGlv
bnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2Ft
ZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAg
ICB9LAorICAgIHRocm93czogZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAg
IGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3Io
KTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2go
ZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYg
KCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGl0IHRocm93
czogIiArIGUubmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9u
KQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4
Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKKyAgICB9
Cit9CisKK2Z1bmN0aW9uIGZhY3RvcnlDbGFzcygpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAg
I21ldGhvZCgpIHsKKyAgICAgICAgICAgIHJldHVybiAndGVzdCc7CisgICAgICAgIH0KKyAgICAK
KyAgICAgICAgYWNjZXNzKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI21ldGhvZCgpOwor
ICAgICAgICB9CisgICAgfQorICAgIG5vSW5saW5lKEMucHJvdG90eXBlLmFjY2Vzcyk7CisKKyAg
ICByZXR1cm4gQzsKK30KKworbGV0IEMgPSBmYWN0b3J5Q2xhc3MoKTsKKworZm9yIChsZXQgaSA9
IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGFzc2VydC5z
YW1lVmFsdWUoYy5hY2Nlc3MoKSwgJ3Rlc3QnKTsKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJv
ciwgKCkgPT4geworICAgICAgICBjLmFjY2Vzcy5jYWxsKHt9KTsKKyAgICB9KTsKK30KKworbGV0
IEMyID0gZmFjdG9yeUNsYXNzKCk7CisKK2xldCBjMiA9IG5ldyBDMigpOworYXNzZXJ0LnNhbWVW
YWx1ZShjMi5hY2Nlc3MoKSwgJ3Rlc3QnKTsKKworbGV0IGMgPSBuZXcgQygpOworCithc3NlcnQu
dGhyb3dzKFR5cGVFcnJvciwgKCkgPT4geworICAgIGMuYWNjZXNzLmNhbGwoYzIpOworfSk7CisK
K2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCAoKSA9PiB7CisgICAgYzIuYWNjZXNzLmNhbGwoYyk7
Cit9KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLW5lc3RlZC1j
bGFzcy5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLW5lc3RlZC1jbGFzcy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjhjZGY0ODk5YTQzZQotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLW5lc3RlZC1jbGFz
cy5qcwpAQCAtMCwwICsxLDY4IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1l
dGhvZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBlKSB7CisgICAgaWYgKGEgIT09IGUp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAi
ICsgYSk7Cit9CisKKygoKSA9PiB7CisgICAgY2xhc3MgQmFzZSB7CisgICAgICAgIEMgPSBjbGFz
cyB7CisgICAgICAgICAgICBtZXRob2QoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMu
I21CYXNlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAjbUJhc2UoKSB7
CisgICAgICAgICAgICByZXR1cm4gNDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBiYXNl
ID0gbmV3IEJhc2UoKTsKKyAgICBsZXQgYyA9IG5ldyBiYXNlLkMoKTsKKyAgICBhc3NlcnQoYy5t
ZXRob2QuY2FsbChiYXNlKSwgNCk7CisKKyAgICB0cnkgeworICAgICAgICBjLm1ldGhvZCgpOwor
ICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBUeXBlRXJyb3Is
IHRydWUpOworICAgIH0KK30pKCk7CisKKy8vIFRlc3Qgc2hhZG93IG1ldGhvZHMKKworKCgpID0+
IHsKKyAgICBjbGFzcyBCYXNlIHsKKyAgICAgICAgbWV0aG9kKCkgeworICAgICAgICAgICAgcmV0
dXJuIHRoaXMuI20oKTsKKyAgICAgICAgfQorCisgICAgICAgIEMgPSBjbGFzcyB7CisgICAgICAg
ICAgICBtZXRob2QobykgeworICAgICAgICAgICAgICAgIHJldHVybiBvLiNtKCk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICNtKCkgeworICAgICAgICAgICAgICAgIHJldHVybiB0aGlz
LmZvbzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9vID0gNDsKKyAgICAgICAgfTsK
KworICAgICAgICAjbSgpIHsKKyAgICAgICAgICAgIHJldHVybiAiZm9vIjsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGxldCBiYXNlID0gbmV3IEJhc2UoKTsKKyAgICBsZXQgYyA9IG5ldyBiYXNl
LkMoKTsKKyAgICBhc3NlcnQoYy5tZXRob2QoYyksIDQpOworICAgIGFzc2VydChiYXNlLm1ldGhv
ZCgpLCAiZm9vIik7CisKKyAgICB0cnkgeworICAgICAgICBjLm1ldGhvZChiYXNlKTsKKyAgICB9
IGNhdGNoIChlKSB7CisgICAgICAgIGFzc2VydChlIGluc3RhbmNlb2YgVHlwZUVycm9yLCB0cnVl
KTsKKyAgICB9Cit9KSgpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1l
dGhvZC1vbi1zZWFsZWQtb2JqZWN0cy5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9k
LW9uLXNlYWxlZC1vYmplY3RzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uYTYyZjA5OTQzMTIyCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJp
dmF0ZS1tZXRob2Qtb24tc2VhbGVkLW9iamVjdHMuanMKQEAgLTAsMCArMSw2NCBAQAorLy9AIHJl
cXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0g
eworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICAgICAg
aWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4
cGVjdGVkOiAiICsgYWN0dWFsICsgIiBidWcgZ290OiAiICsgZXhwZWN0ZWQpOworICAgIH0sCisK
KyAgICB0aHJvd3M6IGZ1bmN0aW9uIChleHBlY3RlZEVycm9yLCBvcCkgeworICAgICAgICB0cnkg
eworICAgICAgICAgIG9wKCk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYg
KCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVkRXJyb3IpKQorICAgICAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleHBlY3RlZEVycm9yICsgIiBidXQgdGhy
ZXc6ICIgKyBlKTsKKyAgICAgICAgfQorICAgIH0KK307CisKK2NsYXNzIEMgeworICAgICNtKCkg
eyByZXR1cm4gJ3Rlc3QnOyB9CisKKyAgICBhY2Nlc3MoKSB7CisgICAgICAgIHJldHVybiB0aGlz
LiNtKCk7CisgICAgfQorfQorCitsZXQgYzEgPSBuZXcgQygpOworYXNzZXJ0LnNhbWVWYWx1ZShj
MS5hY2Nlc3MoKSwgJ3Rlc3QnKTsKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAo
KSB7CisgICAgYzEuYWNjZXNzLmNhbGwoe30pOworfSk7CisKK09iamVjdC5zZWFsKGMxKTsKKwor
YXNzZXJ0LnNhbWVWYWx1ZShjMS5hY2Nlc3MoKSwgJ3Rlc3QnKTsKK2Fzc2VydC50aHJvd3MoVHlw
ZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgYzEuYWNjZXNzLmNhbGwoe30pOworfSk7CisKKy8v
IFBlcmZvcm0gYSBzZXQgYnJhbmQgdHJhbnNpdGlvbiBvbiBmcm96ZW4gb2JqZWN0CitsZXQgc2Vh
bGVkT2JqZWN0ID0ge307CitPYmplY3QuZnJlZXplKHNlYWxlZE9iamVjdCk7CisKK2NsYXNzIEJh
c2UgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICByZXR1cm4gc2VhbGVkT2JqZWN0Owor
ICAgIH0KK30KKworY2xhc3MgRCBleHRlbmRzIEJhc2UgeworICAgICNtKCkgeyByZXR1cm4gJ3Rl
c3QgRCc7IH0KKworICAgIHN0YXRpYyBhY2Nlc3MobykgeworICAgICAgICByZXR1cm4gby4jbSgp
OworICAgIH0KK30KKworbGV0IGQgPSBuZXcgRCgpOworCithc3NlcnQuc2FtZVZhbHVlKEQuYWNj
ZXNzKGQpLCAndGVzdCBEJyk7Cithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24gKCkg
eworICAgIEQuYWNjZXNzKHt9KTsKK30pOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9w
cml2YXRlLW1ldGhvZC1vbi11bmNhY2hlYWJsZS1kaWN0aW9uYXJ5LmpzIGIvSlNUZXN0cy9zdHJl
c3MvcHJpdmF0ZS1tZXRob2Qtb24tdW5jYWNoZWFibGUtZGljdGlvbmFyeS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmEwNTUxNTBlZDc0NQotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLW9uLXVuY2FjaGVhYmxlLWRpY3Rp
b25hcnkuanMKQEAgLTAsMCArMSw2NCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZh
dGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rp
b24gKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICAgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQp
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgYWN0dWFsICsgIiBi
dWcgZ290OiAiICsgZXhwZWN0ZWQpOworICAgIH0sCisKKyAgICB0aHJvd3M6IGZ1bmN0aW9uIChl
eHBlY3RlZEVycm9yLCBvcCkgeworICAgICAgICB0cnkgeworICAgICAgICAgIG9wKCk7CisgICAg
ICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVk
RXJyb3IpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhy
b3c6ICIgKyBleHBlY3RlZEVycm9yICsgIiBidXQgdGhyZXc6ICIgKyBlKTsKKyAgICAgICAgfQor
ICAgIH0KK307CisKK2NsYXNzIEMgeworICAgICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisKKyAg
ICBhY2Nlc3MoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtKCk7CisgICAgfQorfQorCitsZXQg
YzEgPSBuZXcgQygpOworYXNzZXJ0LnNhbWVWYWx1ZShjMS5hY2Nlc3MoKSwgJ3Rlc3QnKTsKK2Fz
c2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgYzEuYWNjZXNzLmNhbGwo
e30pOworfSk7CisKK09iamVjdC5mcmVlemUoYzEpOworCithc3NlcnQuc2FtZVZhbHVlKGMxLmFj
Y2VzcygpLCAndGVzdCcpOworYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgpIHsK
KyAgICBjMS5hY2Nlc3MuY2FsbCh7fSk7Cit9KTsKKworLy8gUGVyZm9ybSBhIHNldCBicmFuZCB0
cmFuc2l0aW9uIG9uIGZyb3plbiBvYmplY3QKK2xldCBmcm96ZW5PYmplY3QgPSB7fTsKK09iamVj
dC5mcmVlemUoZnJvemVuT2JqZWN0KTsKKworY2xhc3MgQmFzZSB7CisgICAgY29uc3RydWN0b3Io
KSB7CisgICAgICAgIHJldHVybiBmcm96ZW5PYmplY3Q7CisgICAgfQorfQorCitjbGFzcyBEIGV4
dGVuZHMgQmFzZSB7CisgICAgI20oKSB7IHJldHVybiAndGVzdCBEJzsgfQorCisgICAgc3RhdGlj
IGFjY2VzcyhvKSB7CisgICAgICAgIHJldHVybiBvLiNtKCk7CisgICAgfQorfQorCitsZXQgZCA9
IG5ldyBEKCk7CisKK2Fzc2VydC5zYW1lVmFsdWUoRC5hY2Nlc3MoZCksICd0ZXN0IEQnKTsKK2Fz
c2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgRC5hY2Nlc3Moe30pOwor
fSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLXBvbHltb3Jw
aGljLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRo
b2QtcG9seW1vcnBoaWMtd2l0aC1jb25zdGFudC1zeW1ib2wuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wMDE3NjI3YTUzMDkKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1wb2x5bW9ycGhpYy13aXRoLWNvbnN0YW50LXN5
bWJvbC5qcwpAQCAtMCwwICsxLDUzIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0
ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlv
biAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9LAorICAgIHNob3Vs
ZFRocm93OiBmdW5jdGlvbihleGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3
RXhjZXB0aW9uOworICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAg
ICAgICAgdGhyZXdFeGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAg
ICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFu
Y2VvZiBleGNlcHRpb24pCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5u
YW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5h
bWUgKyAiIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworICAgIH0KK30KKworbGV0
IGkgPSAwOworCitjbGFzcyBCYXNlIHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgaWYg
KGkgJSAyKQorICAgICAgICAgICAgdGhpcy5hbm90aGVyRmllbGQgPSBpOworICAgIH0KK30KKwor
Y2xhc3MgQyBleHRlbmRzIEJhc2UgeworICAgICNtZXRob2QoKSB7CisgICAgICAgIHJldHVybiAn
dGVzdCc7CisgICAgfQorCisgICAgYWNjZXNzKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jbWV0
aG9kKCk7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuYWNjZXNzKTsKKworZm9yICg7
IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgY291bnQgPSBpOworICAgIGxldCBjID0gbmV3IEMoKTsK
KyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuYWNjZXNzKCksICd0ZXN0Jyk7Cit9CisKK2Fzc2VydC5z
aG91bGRUaHJvdyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICBjLmFjY2Vzcy5jYWxsKHt9KTsKK30p
OworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC11bnR5cGVkLXVz
ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLXVudHlwZWQtdXNlLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOGFjYjhiNDEwMmJkCi0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtdW50eXBlZC11c2UuanMK
QEAgLTAsMCArMSw1OCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2Rz
PXRydWUiLCAiLS11c2VBY2Nlc3NJbmxpbmluZz1mYWxzZSIpCisKK2xldCBhc3NlcnQgPSB7Cisg
ICAgc2hvdWxkVGhyb3c6IGZ1bmN0aW9uKGV4Y2VwdGlvbiwgZnVuY3RvcikgeworICAgICAgICBs
ZXQgdGhyZXdFeGNlcHRpb247CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7
CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IGZhbHNlOworICAgICAgICB9IGNhdGNoKGUp
IHsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICgh
ZSBpbnN0YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBpdCB0aHJvd3M6
ICIgKyBlLm5hbWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aHJld0V4Y2VwdGlvbikK
KyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNl
cHRpb24ubmFtZSArICIgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7CisgICAgfQor
fQorCitjbGFzcyBDIHsKKyAgI21ldGhvZCgpIHt9CisKKyAgYWNjZXNzKHYpIHsKKyAgICAgIGxl
dCBvID0gdGhpczsKKyAgICAgIC8vIFRoaXMgYnJhbmNoIGlzIGhlcmUgdG8gYXZvaWQgUHV0UHJp
dmF0ZU5hbWVCeUlkIHRvIGJlIGZvbGRlZCBhcyAKKyAgICAgIC8vIFB1dEJ5T2Zmc2V0LgorICAg
ICAgaWYgKHYgPiAxMDApCisgICAgICAgICAgbyA9IHt9OworICAgICAgby4jbWV0aG9kKCk7Cisg
IH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLmFjY2Vzcyk7CisKK2xldCBjID0gbmV3IEMoKTsK
KworLy8gTGV0J3MgdHJpZ2dlciBKSVQgY29tcGlsYXRpb24gZm9yIGBDLnByb3RvdHlwZS5hY2Nl
c3NgCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBjLmFjY2VzcygxNSk7
Cit9CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGFzc2VydC5zaG91
bGRUaHJvdyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICAgICAgYy5hY2Nlc3MuY2FsbCh7fSwgMCk7
CisgICAgfSk7CisKKyAgICBhc3NlcnQuc2hvdWxkVGhyb3coVHlwZUVycm9yLCAoKSA9PiB7Cisg
ICAgICAgIGMuYWNjZXNzLmNhbGwoMTUsIDApOworICAgIH0pOworCisgICAgYXNzZXJ0LnNob3Vs
ZFRocm93KFR5cGVFcnJvciwgKCkgPT4geworICAgICAgICBjLnNldEZpZWxkLmNhbGwoJ3N0cmlu
ZycsIDApOworICAgIH0pOworCisgICAgYXNzZXJ0LnNob3VsZFRocm93KFR5cGVFcnJvciwgKCkg
PT4geworICAgICAgICBjLnNldEZpZWxkLmNhbGwoU3ltYm9sKCdzeW1ib2wnKSwgMCk7CisgICAg
fSk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLXdpdGgt
dW5jYWNoZWFibGUtZGljdGlvbmFyeS10cmFuc2l0aW9uLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJp
dmF0ZS1tZXRob2Qtd2l0aC11bmNhY2hlYWJsZS1kaWN0aW9uYXJ5LXRyYW5zaXRpb24uanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mMjEyODhlYmU2ZDgKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC13aXRoLXVuY2FjaGVh
YmxlLWRpY3Rpb25hcnktdHJhbnNpdGlvbi5qcwpAQCAtMCwwICsxLDM5IEBACisvL0AgcmVxdWly
ZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7Cisg
ICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCkgeworICAgICAgICBpZiAo
YWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0
ZWQ6ICIgKyBhY3R1YWwgKyAiIGJ1ZyBnb3Q6ICIgKyBleHBlY3RlZCk7CisgICAgfSwKKworICAg
IHRocm93czogZnVuY3Rpb24gKGV4cGVjdGVkRXJyb3IsIG9wKSB7CisgICAgICAgIHRyeSB7Cisg
ICAgICAgICAgb3AoKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBpZiAoIShl
IGluc3RhbmNlb2YgZXhwZWN0ZWRFcnJvcikpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4cGVjdGVkRXJyb3IgKyAiIGJ1dCB0aHJldzog
IiArIGUpOworICAgICAgICB9CisgICAgfQorfTsKKworY2xhc3MgQyB7CisgICAgI20oKSB7IHJl
dHVybiAndGVzdCc7IH0KKworICAgIGFjY2VzcygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI20o
KTsKKyAgICB9Cit9CisKK2xldCBjMSA9IG5ldyBDKCk7Cithc3NlcnQuc2FtZVZhbHVlKGMxLmFj
Y2VzcygpLCAndGVzdCcpOworYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgpIHsK
KyAgICBjMS5hY2Nlc3MuY2FsbCh7fSk7Cit9KTsKKworJHZtLnRvVW5jYWNoZWFibGVEaWN0aW9u
YXJ5KGMxKTsKKworYXNzZXJ0LnNhbWVWYWx1ZShjMS5hY2Nlc3MoKSwgJ3Rlc3QnKTsKK2Fzc2Vy
dC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgYzEuYWNjZXNzLmNhbGwoe30p
OworfSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1pbmxp
bmUtY2FjaGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZHMtaW5saW5lLWNhY2hl
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOTdjYjdmODllMWMw
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2RzLWlubGlu
ZS1jYWNoZS5qcwpAQCAtMCwwICsxLDIyIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJp
dmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChhY3R1YWwsIGV4cGVjdGVkKSB7
CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IEVycm9yKCJFeHBl
Y3RlZDogIiArIGV4cGVjdGVkICsgIiBBY3R1YWw6ICIgKyBhY3R1YWwpOworfQorCitjbGFzcyBD
IHsKKyAgICAjbWV0aG9kKCkgeworICAgICAgICByZXR1cm4gJ2Zvbyc7CisgICAgfQorCisgICAg
YWNjZXNzKCkgeworICAgICAgIHJldHVybiB0aGlzLiNtZXRob2QoKTsKKyAgICB9Cit9CisKK2Zv
ciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBjID0gbmV3IEMoKTsKKyAg
ICBhc3NlcnQoYy5hY2Nlc3MoKSwgJ2ZvbycpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9wcml2YXRlLW1ldGhvZHMtbWVnYW1vcnBoaWMtaWMuanMgYi9KU1Rlc3RzL3N0cmVzcy9w
cml2YXRlLW1ldGhvZHMtbWVnYW1vcnBoaWMtaWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi4zYzE2NmQ2Yjc2YjcKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9wcml2YXRlLW1ldGhvZHMtbWVnYW1vcnBoaWMtaWMuanMKQEAgLTAsMCArMSwyNSBA
QAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitmdW5j
dGlvbiBhc3NlcnQoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVj
dGVkKQorICAgICAgICB0aHJvdyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBleHBlY3RlZCArICIgQWN0
dWFsOiAiICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gY2xhc3NFeHByKCkgeworICAgIHJldHVy
biBjbGFzcyB7CisgICAgICAgICNtZXRob2QoKSB7CisgICAgICAgICAgICByZXR1cm4gJ2Zvbyc7
CisgICAgICAgIH0KKworICAgICAgICBhY2Nlc3MoKSB7CisgICAgICAgICAgIHJldHVybiB0aGlz
LiNtZXRob2QoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZm9yIChsZXQgaSA9IDA7IGkgPCAx
MDAwMDsgaSsrKSB7CisgICAgbGV0IEMgPSBjbGFzc0V4cHIoKTsKKyAgICBsZXQgYyA9IG5ldyBD
KCk7CisgICAgYXNzZXJ0KGMuYWNjZXNzKCksICdmb28nKTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2RzLW9uLXByb3h5LmpzIGIvSlNUZXN0cy9zdHJlc3Mv
cHJpdmF0ZS1tZXRob2RzLW9uLXByb3h5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uZmI1ZmRmY2I2MjM0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvcHJpdmF0ZS1tZXRob2RzLW9uLXByb3h5LmpzCkBAIC0wLDAgKzEsNDIgQEAKKy8vQCByZXF1
aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0
KGEsIGUsIG0pIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKG0p
OworfQorCitmdW5jdGlvbiBhc3NlcnRBcnJheUNvbnRlbnQoYSwgZSkgeworICAgIGFzc2VydChh
Lmxlbmd0aCwgZS5sZW5ndGgsICJTaXplIG9mIGFycmF5cyBkb2Vzbid0IG1hdGNoIik7CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKQorICAgICAgICBhc3NlcnQoYVtpXSwg
ZVtpXSwgImFbIiArIGkgKyAiXSA9ICIgKyBhW2ldICsgIiBidXQgZVsiICsgaSArICJdID0gIiAr
IGVbaV0pOworfQorCitsZXQgYXJyID0gW107CisKK2NsYXNzIFByb3h5QmFzZSB7CisgICAgY29u
c3RydWN0b3IoKSB7CisgICAgICAgIHJldHVybiBuZXcgUHJveHkodGhpcywgeworICAgICAgICAg
ICAgZ2V0OiBmdW5jdGlvbiAob2JqLCBwcm9wKSB7CisgICAgICAgICAgICAgICAgYXJyLnB1c2go
cHJvcCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG9ialtwcm9wXTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSk7CisgICAgfQorfQorCitjbGFzcyBUZXN0IGV4dGVuZHMgUHJveHlCYXNlIHsK
KyAgICAjbSgpIHsKKyAgICAgICAgcmV0dXJuIDM7CisgICAgfQorCisgICAgbWV0aG9kKCkgewor
ICAgICAgICByZXR1cm4gdGhpcy4jbSgpOworICAgIH0KK30KKworbGV0IHQgPSBuZXcgVGVzdCgp
OworbGV0IHIgPSB0Lm1ldGhvZCgpOworYXNzZXJ0KHIsIDMsICJFeHBlY3RlZDogMyBidXQgZ290
OiAiICsgcik7CisKK2Fzc2VydEFycmF5Q29udGVudChhcnIsIFsnbWV0aG9kJ10pOworCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZHMtcG9seS1pYy1tdWx0aXBsZS1j
bGFzc2VzLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2RzLXBvbHktaWMtbXVsdGlw
bGUtY2xhc3Nlcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjlm
NmM2ZDZhNjU1NgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0
aG9kcy1wb2x5LWljLW11bHRpcGxlLWNsYXNzZXMuanMKQEAgLTAsMCArMSwyOCBAQAorLy9AIHJl
cXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitmdW5jdGlvbiBhc3Nl
cnQoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAg
ICAgICB0aHJvdyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBleHBlY3RlZCArICIgQWN0dWFsOiAiICsg
YWN0dWFsKTsKK30KKworZnVuY3Rpb24gY2xhc3NFeHByKCkgeworICAgIHJldHVybiBjbGFzcyB7
CisgICAgICAgICNtZXRob2QoKSB7CisgICAgICAgICAgICByZXR1cm4gJ2Zvbyc7CisgICAgICAg
IH0KKworICAgICAgICBhY2Nlc3MoKSB7CisgICAgICAgICAgIHJldHVybiB0aGlzLiNtZXRob2Qo
KTsKKyAgICAgICAgfQorICAgIH0KK30KKworbGV0IEMxID0gY2xhc3NFeHByKCk7CitsZXQgQzIg
PSBjbGFzc0V4cHIoKTsKKworbGV0IGFyciA9IFtDMSwgQzJdOworZm9yIChsZXQgaSA9IDA7IGkg
PCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IGMgPSBuZXcgYXJyW2kgJSBhcnIubGVuZ3RoXSgpOwor
ICAgIGFzc2VydChjLmFjY2VzcygpLCAnZm9vJyk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1wb2x5LWljLXNpbmdsZS1jbGFzcy5qcyBiL0pTVGVzdHMv
c3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1wb2x5LWljLXNpbmdsZS1jbGFzcy5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjVjNDg1YjRmODhlOQotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1wb2x5LWljLXNpbmdsZS1jbGFz
cy5qcwpAQCAtMCwwICsxLDI1IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1l
dGhvZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAg
aWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IEVycm9yKCJFeHBlY3RlZDog
IiArIGV4cGVjdGVkICsgIiBBY3R1YWw6ICIgKyBhY3R1YWwpOworfQorCitjbGFzcyBDIHsKKyAg
ICAjbWV0aG9kKCkgeworICAgICAgICByZXR1cm4gJ2Zvbyc7CisgICAgfQorCisgICAgYWNjZXNz
KCkgeworICAgICAgIHJldHVybiB0aGlzLiNtZXRob2QoKTsKKyAgICB9Cit9CisKK2xldCBjMSA9
IG5ldyBDKCk7CitsZXQgYzIgPSBuZXcgQygpOworYzIuYmFyID0gJ2Jhcic7CitsZXQgYXJyID0g
W2MxLCBjMl07Citmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBhc3NlcnQo
YXJyW2kgJSBhcnIubGVuZ3RoXS5hY2Nlc3MoKSwgJ2ZvbycpOworfQorCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5hbWVzLWF2YWlsYWJsZS1vbi1kaXJlY3QtZXZhbC5qcyBi
L0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWRpcmVjdC1ldmFsLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNjRjZTBlMGFmODA1Ci0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1lcy1hdmFpbGFibGUt
b24tZGlyZWN0LWV2YWwuanMKQEAgLTAsMCArMSwyMyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCIt
LXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1
ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7CisgICAgICAgIGlmIChsaHMgIT09IHJocykKKyAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyByaHMgKyAiIGJ1ZyBnb3Q6ICIg
KyBsaHMpOworICAgIH0KK307CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAg
ICAgICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisKKyAgICAgICAgY2FsbE1ldGhvZEZyb21FdmFs
KCkgeworICAgICAgICAgICAgbGV0IHNlbGYgPSB0aGlzOworICAgICAgICAgICAgcmV0dXJuIGV2
YWwoJ3NlbGYuI20oKScpOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygp
OworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5jYWxsTWV0aG9kRnJvbUV2YWwoKSwgJ3Rlc3QnKTsK
K30pKCk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbCBiL0pTVGVz
dHMvdGVzdDI2Mi9jb25maWcueWFtbAppbmRleCA4M2E2YTcyZDRjZjMuLmExNzY0Njg2YTRiYiAx
MDA2NDQKLS0tIGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCisrKyBiL0pTVGVzdHMvdGVz
dDI2Mi9jb25maWcueWFtbApAQCAtNCw2ICs0LDcgQEAgZmxhZ3M6CiAgIFdlYWtSZWY6IHVzZVdl
YWtSZWZzCiAgIEZpbmFsaXphdGlvblJlZ2lzdHJ5OiB1c2VXZWFrUmVmcwogICBjbGFzcy1maWVs
ZHMtcHJpdmF0ZTogdXNlUHJpdmF0ZUNsYXNzRmllbGRzCisgIGNsYXNzLW1ldGhvZHMtcHJpdmF0
ZTogdXNlUHJpdmF0ZU1ldGhvZHMKICAgY2xhc3Mtc3RhdGljLWZpZWxkcy1wdWJsaWM6IHVzZVB1
YmxpY1N0YXRpY0NsYXNzRmllbGRzCiAgIGNsYXNzLXN0YXRpYy1maWVsZHMtcHJpdmF0ZTogdXNl
UHJpdmF0ZVN0YXRpY0NsYXNzRmllbGRzCiAgIEludGwuRGF0ZVRpbWVGb3JtYXQtZGF5UGVyaW9k
OiB1c2VJbnRsRGF0ZVRpbWVGb3JtYXREYXlQZXJpb2QKQEAgLTE5LDcgKzIwLDYgQEAgc2tpcDoK
ICAgICAtIHJlZ2V4cC1sb29rYmVoaW5kCiAgICAgLSBsZWdhY3ktcmVnZXhwCiAKLSAgICAtIGNs
YXNzLW1ldGhvZHMtcHJpdmF0ZQogICAgIC0gY2xhc3Mtc3RhdGljLW1ldGhvZHMtcHJpdmF0ZQog
ICAgIC0gY2xlYW51cFNvbWUKICAgICAtIGhvc3QtZ2MtcmVxdWlyZWQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAppbmRleCA4OTM5OTBmNDk2ZDYuLmJhNmRhYmI2MTY3OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTM5LDYgKzUzOSw4IEBAIHNldChKYXZh
U2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgYnl0ZWNvZGUvQ2FsbExp
bmtJbmZvLmgKICAgICBieXRlY29kZS9DYWxsTW9kZS5oCiAgICAgYnl0ZWNvZGUvQ2FsbFZhcmlh
bnQuaAorICAgIGJ5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmgKKyAgICBieXRlY29k
ZS9DaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQuaAogICAgIGJ5dGVjb2RlL0NvZGVCbG9jay5oCiAg
ICAgYnl0ZWNvZGUvQ29kZUJsb2NrSGFzaC5oCiAgICAgYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCkBA
IC01NzQsNiArNTc2LDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hF
QURFUlMKICAgICBieXRlY29kZS9PcGVyYW5kcy5oCiAgICAgYnl0ZWNvZGUvUHJvcGVydHlDb25k
aXRpb24uaAogICAgIGJ5dGVjb2RlL1B1dEJ5SWRGbGFncy5oCisgICAgYnl0ZWNvZGUvU2V0UHJp
dmF0ZUJyYW5kU3RhdHVzLmgKKyAgICBieXRlY29kZS9TZXRQcml2YXRlQnJhbmRWYXJpYW50LmgK
ICAgICBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCiAgICAgYnl0ZWNvZGUvU3RydWN0dXJlU2V0
LmgKICAgICBieXRlY29kZS9TdXBlclNhbXBsZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5k
ZXggYTlmZDBkMTEyMWUwLi44N2RiZWRkYjM0ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI4OSBAQAorMjAyMC0xMC0yMCAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTTmV4dF0gSW1wbGVtZW50IHByaXZhdGUgbWV0aG9kcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NDM0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBp
cyBhZGRpbmcgc3VwcG9ydCB0byBwcml2YXRlIG1ldGhvZHMgZm9sbG93aW5nIHRoZQorICAgICAg
ICBzcGVjaWZpY2F0aW9uIG9uIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1wcml2YXRlLW1ldGhv
ZHMvLgorICAgICAgICBUaGlzIGlzIGludHJvZHVjaW5nIGEgbmV3IHdheSB0byBkZWNsYXJlIHBy
aXZhdGUgbWV0aG9kcyBvbgorICAgICAgICBjbGFzcyBzeW50YXguIFByaXZhdGUgbWV0aG9kcyBh
cmUgb25seSBhY2Nlc3NpYmxlIHdpdGhpbgorICAgICAgICBjbGFzc2VzIHRoZXkgd2VyZSBkZWNs
YXJlZCwgYW5kIG9ubHkgY2FuIGJlIGNhbGxlZCBmcm9tCisgICAgICAgIG9iamVjdHMgdGhhdCBh
cmUgaW5zdGFuY2Ugb2YgdGhlc2UgY2xhc3Nlcy4KKyAgICAgICAgVG8gZ3VhcmFudGVlIHN1Y2gg
cnVsZXMsIHRoZSBwcm9wb3NhbCBwcmVzZW50cyB0aGUgY29uY2VwdCBvZgorICAgICAgICBCcmFu
ZCBDaGVjay4gRHVyaW5nIGNsYXNzIGV2YWx1YXRpb24sIGlmIGEgcHJpdmF0ZSBtZXRob2QgaXMg
cHJlc2VudCwKKyAgICAgICAgYSBgYnJhbmRgIGlzIGluc3RhbGxlZCBpbiB0aGlzIGNsYXNzLiBF
dmVyeSBpbnN0YW5jZSBvZiBzdWNoIGNsYXNzCisgICAgICAgIHRoZW4gZ2V0cyB0aGlzIGJyYW5k
IGluc3RhbGxlZCBkdXJpbmcgYFtbQ29uc3RydWN0XV1gIG9wZXJhdGlvbi4gSXQKKyAgICAgICAg
bWVhbnMgdGhhdCBhbiBvYmplY3QgY2FuIGhhdmUgbXVsdGlwbGUgYnJhbmRzIChlLmcgd2hlbiB0
aGVyZSBpcyBhbHNvCisgICAgICAgIHByaXZhdGUgbWV0aG9kcyBkZWNsYXJlZCBvbiBzdXBlciBj
bGFzcykuIEJlZm9yZSBhY2Nlc3NpbmcgYSBwcml2YXRlCisgICAgICAgIG1ldGhvZCwgdGhlcmUg
aXMgYSBjaGVjayB0byB2YWxpZGF0ZSBpZiB0aGUgdGFyZ2V0IG9mIHRoZSBjYWxsIGhhcyB0aGUK
KyAgICAgICAgYnJhbmQgb2YgY2FsbGVlIG1ldGhvZC4KKyAgICAgICAgVGhlIGJyYW5kIGNoZWNr
IG1lY2hhbmlzbSBpcyBpbXBsZW1lbnRlZCB1c2luZyBhIGBAcHJpdmF0ZUJyYW5kYAorICAgICAg
ICBzdG9yZWQgb24gY2xhc3Mgc2NvcGUuIEhlcmUgaXMgYSByZXByZXNlbnRhdGlvbiBvZiBob3cg
dGhpcyBtZWNoYW5pc20KKyAgICAgICAgd29ya3M6CisKKyAgICAgICAgYGBgCisgICAgICAgIGNs
YXNzIEMgeworICAgICAgICAgICAgI20oKSB7IHJldHVybiAzOyB9CisgICAgICAgICAgICBtZXRo
b2QoKSB7IHJldHVybiB0aGlzLiNtKCk7IH0KKyAgICAgICAgfQorCisgICAgICAgIGxldCBjID0g
bmV3IEMoKTsKKyAgICAgICAgY29uc29sZS5sb2coYy5tZXRob2QoKSk7IC8vIHByaW50cyAzCisg
ICAgICAgIGBgYAorCisgICAgICAgIEdlbmVyYXRlZCBieXRlY29kZSBmb3IgdGhlIGZvbGxvd2lu
ZyByZXByZXNlbnRhdGlvbjoKKyAgICAgICAgYGBgCisgICAgICAgIHsgLy8gY2xhc3MgbGV4aWNh
bCBzY29wZQorICAgICAgICAgICAgY29uc3QgQHByaXZhdGVCcmFuZCA9IEBjcmVhdGVQcml2YXRl
U3ltYm9sKCk7CisgICAgICAgICAgICBjb25zdCAjbSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDM7
IH0KKyAgICAgICAgICAgIEMucHJvdG90eXBlLm1ldGhvZCA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgICAgIEBjaGVja19wcml2YXRlX2JyYW5kKHRoaXMsIEBwcml2YXRlQnJhbmQpOworICAg
ICAgICAgICAgICAgIHJldHVybiAjbS5jYWxsKHRoaXMpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgQyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIEBzZXRfcHJpdmF0ZV9icmFu
ZCh0aGlzLCBAcHJpdmF0ZUJyYW5kLCBAcHJpdmF0ZUJyYW5kKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICAgICAgY29uc29sZS5sb2co
Yy5tZXRob2QoKSk7IC8vIHByaW50cyAzCisgICAgICAgIGBgYAorCisgICAgICAgIFJlc29sdmlu
ZyBjb3JyZWN0IGJyYW5kIHRvIGNoZWNrOgorCisgICAgICAgIEluIHRoZSBjYXNlIG9mIHNoYWRv
d2luZyBvciBuZXN0ZWQgc2NvcGUsIHdlIG5lZWQgdG8gZW1pdCBicmFuZAorICAgICAgICBjaGVj
a3MgdG8gdGhlIHJpZ2h0IHByaXZhdGUgYnJhbmQuIFNlZSBjb2RlIGJlbG93OgorCisgICAgICAg
IGBgYAorICAgICAgICBjbGFzcyBDIHsKKyAgICAgICAgICAgICNtKCkgeyByZXR1cm4gMzsgfQor
ICAgICAgICAgICAgbWV0aG9kKCkgeyByZXR1cm4gdGhpcy4jbSgpO30KKworICAgICAgICAgICAg
QSA9IGNsYXNzIHsKKyAgICAgICAgICAgICAgICAjbTIoKSB7IHJldHVybiAzOyB9CisgICAgICAg
ICAgICAgICAgZm9vKG8pIHsgcmV0dXJuIHRoaXMuI20oKTsgfQorICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIGBgYAorCisgICAgICAgIFRoZSBjYWxsIG9mICIjbSIgaW4gYGZvb2Ag
cmVmZXJzIHRvICJDOjojbSIuIEluIHN1Y2ggY2FzZSwgd2UgbmVlZCB0bworICAgICAgICBjaGVj
ayBDJ3MgcHJpdmF0ZSBicmFuZCwgaW5zdGVhZCBvZiBBJ3MgcHJpdmF0ZSBicmFuZC4KKyAgICAg
ICAgVG8gcGVyZm9ybSB0aGUgcHJvcGVyIGNoZWNrLCB3ZSBmaXJzdCByZXNvbHZlIHNjb3BlIG9m
ICIjbSIgYW5kIHRoZW4KKyAgICAgICAgY2hlY2sgdGhlIHByaXZhdGUgYnJhbmQgb2YgdGhpcyBz
Y29wZSAodGhlIHNjb3BlIHdoZXJlIHRoZSBwcml2YXRlCisgICAgICAgIG1ldGhvZCBhbmQgYnJh
bmQgYXJlIHN0b3JlZCBpcyB0aGUgc2FtZSkuCisgICAgICAgIFNvIHRoZSBieXRlY29kZSB0byBs
b29rdXAgdGhlIHJpZ2h0IGJyYW5kIGlzOgorCisgICAgICAgIGBgYAorICAgICAgICByZXNvbHZl
X3Njb3BlIGxvYzEwLCAiI20iCisgICAgICAgIGdldF9mcm9tX3Njb3BlIGxvYzExLCBsb2MxMCwg
IkBwcml2YXRlQnJhbmQiCisgICAgICAgIGNoZWNrX3ByaXZhdGVfYnJhbmQgdGhpcywgbG9jMTEK
KyAgICAgICAgZ2V0X2Zyb21fc2NvcGUgbG9jMTEsIGxvYzEwLCAiI20iCisgICAgICAgIC8vIHNl
dHVwIGNhbGwgZnJhbWUKKyAgICAgICAgY2FsbCBsb2MxMSwgLi4uCisgICAgICAgIC8vIC4uLgor
ICAgICAgICBgYGAKKworICAgICAgICBCcmFuZCBjaGVjayBtZWNoYW5pc206CisKKyAgICAgICAg
V2UgYXJlIGludHJvZHVjaW5nIGluIHRoaXMgcGF0Y2ggMiBuZXcgYnl0ZWNvZGVzIHRvIGFsbG93
ICBicmFuZCBjaGVjaworICAgICAgICBvZiBvYmplY3RzOiBgb3Bfc2V0X2JyYW5kYCBhbmQgYG9w
X2NoZWNrX2JyYW5kYC4KKyAgICAgICAgYG9wX3NldF9icmFuZGAgc2V0cyBhIG5ldyBicmFuZCBp
biBhbiBvYmplY3QsIHNvIHdlIGNhbiBwZXJmb3JtIHRoZSBicmFuZAorICAgICAgICBjaGVjayBs
YXRlciB3aGVuIGFjY2Vzc2luZyBwcml2YXRlIG1ldGhvZHMuIFRoaXMgb3BlcmF0aW9ucyB0aHJv
d3Mgd2hlbgorICAgICAgICB0cnlpbmcgdG8gYWRkIHRoZSBzYW1lIGJyYW5kIHR3aWNlIGluIGFu
IE9iamVjdC4KKyAgICAgICAgYG9wX2NoZWNrX2JyYW5kYCBjaGVja3MgaWYgdGhlIGdpdmVuIG9i
amVjdCBjb250YWlucyB0aGUgYnJhbmQgd2UgYXJlCisgICAgICAgIGxvb2tpbmcgZm9yLiBJdCB0
cmF2ZXJzZXMgdGhlIGJyYW5kIGNoYWluIHRvIHZlcmlmeSBpZiB0aGUgYnJhbmQgaXMKKyAgICAg
ICAgcHJlc2VudCwgYW5kIHRocm93cyBgVHlwZUVycm9yYCBvdGhlcndpc2UuCisKKyAgICAgICAg
V2UgYXJlIGFsc28gaW50cm9kdWNpbmcgYSBzdWJjbGFzcyBmb3IgU3RydWN0dXJlIGNhbGxlZCBC
cmFuZGVkU3RydWN0dXJlLgorICAgICAgICBJdCBpcyB1c2VkIHRvIHN0b3JlIGJyYW5kcyBhbmQg
dG8gYWxsb3cgYnJhbmQgY2hlY2sgbWVjaGFuaXNtLiBCcmFuZGVkU3RydWN0dXJlCisgICAgICAg
IHN0b3JlcyBhIGJyYW5kIGFuZCBhIHBhcmVudCBwb2ludGVyIHRvIGFub3RoZXIgQnJhbmRlZFN0
cnVjdHVyZSB0aGF0IGFsbG93CisgICAgICAgIHVzIHRyYXZlcnNlIHRoZSBicmFuZCBjaGFpbi4g
V2l0aCBgQnJhbmRlZFN0cnVjdHVyZWAsIHdlIGNhbiB0aGVuCisgICAgICAgIGluZmVyIHRoYXQg
YSBnaXZlbiBvYmplY3QgaGFzIHRoZSBicmFuZCB3ZSBhcmUgbG9va2luZyBmb3IganVzdAorICAg
ICAgICBjaGVja2luZyBpdHMgc3RydWN0dXJlSWQuIFRoaXMgaXMgdmVyeSBnb29kIG9wdGltaXph
dGlvbiwgc2luY2Ugd2UgY2FuCisgICAgICAgIHJlZHVjZSBtb3N0IG9mIGJyYW5kIGNoZWNrcyB0
byBzdHJ1Y3R1cmUgY2hlY2tzLgorCisgICAgICAgIFdlIGNyZWF0ZWQgYSBuZXcga2luZCBvZiB0
cmFuc2l0aW9uIGNhbGxlZCBgU2V0QnJhbmRgIHRoYXQgaGFwcGVucyB3aGVuCisgICAgICAgIGBv
cF9zZXRfYnJhbmRgIGlzIGV4ZWN1dGVkLiBUaGlzIGFsbG93IHVzIHRvIGNhY2hlIHN1Y2gga2lu
ZCBvZgorICAgICAgICB0cmFzaXRpb25zIG9uIHRyYXNpdGlvbiB0YWJsZSB1c2luZyB0aGUga2V5
IGA8YnJhbmQtPnVpZCwgMCwKKyAgICAgICAgVHJhbnNpdGlvbktpbmQ6OlNldEJyYW5kPmAuIER1
cmluZyB0aGlzIHRyYW5zaXRpb24sIHdlIHRha2UgcHJldmlvdXMKKyAgICAgICAgc3RydWN0dXJl
IGFuZCBhcHBseSBvbmUgb2YgdGhlIGZvbGxvd2luZyBydWxlczoKKworICAgICAgICAgICAgMS4g
SWYgaXTigJlzIGEgQnJhbmRlZFN0cnVjdHVyZSwgd2UgdGhlbiBzZXQgaXQgdG8gYG1fcGFyZW50
QnJhbmRgLAorICAgICAgICAgICAgdG8gYWxsb3cgcHJvcGVyIGJyYW5kIGNoYWluIGNoZWNrLgor
ICAgICAgICAKKyAgICAgICAgICAgIDIuIElmIGl04oCZcyBub3QgYSBCcmFuZGVkU3RydWN0dXJl
LCB3ZSBzZXQgYG1fcGFyZW50QnJhbmRgIHRvIG51bGxwdHIsCisgICAgICAgICAgICBtZWFuaW5n
IHRoYXQgdGhpcyBpcyB0aGUgZmlyc3QgYnJhbmQgYmVpbmcgYWRkZWQgdG8gdGhlIG9iamVjdAor
ICAgICAgICAgICAgd2l0aCB0aGlzIHN0cnVjdHVyZS4KKyAgICAgICAgCisgICAgICAgIEZvciBu
b3csIHdlIGFyZSB1c2luZyB0aGUgZmxhZyBgaXNCcmFuZGVkU3RydWN0dXJlYCB0byBpZGVudGlm
eSB0aGF0IGEKKyAgICAgICAgZ2l2ZW4gU3RydWN0dXJlIGlzIGEgQnJhbmRlZFN0cnVjdHVyZS4g
VGhpcyBpcyBkb25lIHRvIGF2b2lkIGNoYW5nZXMKKyAgICAgICAgb24gcGxhY2VzIHdoZXJlIHdl
IGFyZSBjaGVja2luZyBmb3IgYHZtLnN0cnVjdHVyZVN0cnVjdHVyZSgpYC4KKyAgICAgICAgSG93
ZXZlciwgaWYgd2UgZXZlciBuZWVkIHNwYWNlIG9uIFN0cnVjdHVyZSwgdGhpcyBmbGFnIGlzIGEg
Z29vZAorICAgICAgICBjYW5kaWRhdGUgdG8gYmUgZGVsZXRlZCBhbmQgd2UgY2FuIG1vdmUgdG8g
YSBzb2x1dGlvbiB0aGF0IHVzZXMKKyAgICAgICAgYHZtLmJyYW5kZWRTdHJ1Y3R1cmVTdHJ1Y3R1
cmUoKWA7CisKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwOgorICAg
ICAgICAoSlNDOjpCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZURlZmF1bHRDb25zdHJ1Y3Rvcik6
CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJsZSk6Cisg
ICAgICAgICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmg6CisKKyAgICAgICAgV2UgYXJl
IGFkZGluZyBhIG5ldyBwYXJhbWV0ZXIgYFByaXZhdGVCcmFuZFJlcXVpcmVtZW50YCB0byBwcm9w
YWdhdGUKKyAgICAgICAgd2hlbiBhIGRlZmF1bHQgY29uc3RydWN0b3IgbmVlZHMgdG8gZW1pdCBj
b2RlIHRvIHNldHVwIHByaXZhdGUgYnJhbmQKKyAgICAgICAgb24gaW5zdGFuY2VzLgorCisgICAg
ICAgICogYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmg6CisKKyAgICAgICAgQWRkaW5nIGBAcHJpdmF0
ZUJyYW5kYCB0aGF0ICB3ZSB1c2UgdG8gc3RvcmUgcHJpdmF0ZSBicmFuZCBvbgorICAgICAgICBj
bGFzcydzIHNjb3BlLgorCisgICAgICAgICogYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaDoKKyAg
ICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OkV4ZWN1dGFibGVJbmZvKToKKyAgICAgICAgKEpT
Qzo6RXhlY3V0YWJsZUluZm86OnByaXZhdGVCcmFuZFJlcXVpcmVtZW50IGNvbnN0KToKKyAgICAg
ICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OlVubGlu
a2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnByaXZh
dGVCcmFuZFJlcXVpcmVtZW50IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9ja0dlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9ja0dlbmVy
YXRvcjo6cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKiBieXRl
Y29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjpCeXRlY29kZUdlbmVyYXRvcik6CisKKyAgICAgICAgV2UgY2hhbmdlZCBCeXRlY29kZUdlbmVy
YXRvciBmb3IgRnVuY3Rpb25Ob2RlIGFuZCBFdmFsTm9kZSB0bworICAgICAgICBwcm9wYWdhdGUg
cGFyZW50U2NvcGUgVmFyaWFibGVFbnZpcm9ubWVudC4gVGhlc2UgZW52aXJvbm1lbnRzIHN0b3Jl
cworICAgICAgICBwcml2YXRlIG5hbWUgZW50cmllcyB0aGF0IGFyZSB2aXNpYmxlIGludG8gdGhl
IHNjb3BlIG9mIHRoZQorICAgICAgICBmdW5jdGlvbi9ldmFsIGluIGFkZGl0aW9uIHRvIFREWiB2
YXJpYWJsZXMuCisgICAgICAgIFRoaXMgaXMgcmVxdWlyZWQgdG8gaWRlbnRpZnkgdGhlIGtpbmQg
b2YgYWNjZXNzIGEgcHJpdmF0ZSBuYW1lIGlzCisgICAgICAgIHJlZmVycmluZyB0bywgc2luY2Ug
aXQgY2FuIGJlIGEgcHJpdmF0ZSBmaWVsZCBvciBhIHByaXZhdGUgbWV0aG9kLgorICAgICAgICBH
aXZlbiB0aGlzIGNoYW5nZSwgd2UgY2hhbmdlZCB0aGUgbmFtZSBvZiBWYXJpYWJsZUVudmlyb25t
ZW50CisgICAgICAgIGZyb20gYHBhcmVudFNjb3BlVERaVmFyaWFibGVzYCB0byBgcGFyZW50U2Nv
cGVWYXJpYWJsZUVudmlyb25tZW50YC4KKworICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6aW5zdGFudGlhdGVMZXhpY2FsVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRHZXRQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0Q3JlYXRlUHJpdmF0ZUJyYW5kKToKKworICAgICAgICBUaGUgcHJvY2VzcyB0
byBjcmVhdGUgYSBwcml2YXRlIGJyYW5kIGlzIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAxLiBD
cmVhdGUgYSBQcml2YXRlU3ltYm9sIHVzaW5nIGBAY3JlYXRlUHJpdmF0ZVN5bWJvbGAuCisgICAg
ICAgICAgICAyLiBTdG9yZSB0aGlzIHN5bWJvbCBpbnRvIGEgZ2l2ZW4gc2NvcGUgKGkuZSBjbGFz
cyBsZXhpY2FsIHNjb3BlKQorICAgICAgICAgICAgICAgb24gYEBwcml2YXRlQnJhbmRgIHZhcmlh
YmxlLgorCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SW5zdGFsbFByaXZh
dGVCcmFuZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0UHJpdmF0
ZUJyYW5kKToKKworICAgICAgICBXZSBhZGRlZCBgbV9wcml2YXRlTmFtZXNTdGFja2AgdG8gQnl0
ZWNvZGVHZW5lcmF0b3IgdG8gcmVwcmVzZW50IHRoZQorICAgICAgICBzY29wZSBjaGFpbiBvZiBh
dmFpbGFibGUgcHJpdmF0ZSBuYW1lcyB3aGlsZSBnZW5lcmF0aW5nIGJ5dGVjb2RlLgorCisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2hlY2tQcml2YXRlQnJhbmQpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aXNQcml2YXRlTWV0aG9kKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnB1c2hQcml2YXRlQWNjZXNzTmFtZXMpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6cG9wUHJpdmF0ZUFjY2Vzc05hbWVzKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdldEF2YWlsYWJsZVByaXZhdGVBY2Nlc3NOYW1l
cyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZXRWYXJpYWJsZXNVbmRlclRE
Wik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RGVmYXVsdENvbnN0
cnVjdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdJbnN0YW5j
ZUZpZWxkSW5pdGlhbGl6ZXJGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0RGlyZWN0R2V0QnlWYWwpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6bWFrZUZ1bmN0aW9uKToKKworICAgICAgICBUaGlzIGNoYW5nZSBpcyByZXF1aXJl
ZCB0byBwcm9wZXJseSBwcm9wYWdhdGUgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQKKyAgICAgICAg
dG8gYXJyb3cgZnVuY3Rpb25zIHRoYXQgY2FuIHBvdGVudGlhbGx5IGNhbGwgYHN1cGVyKClgLgor
CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6
OlByb3BlcnR5TGlzdE5vZGU6OmVtaXREZWNsYXJlUHJpdmF0ZUZpZWxkTmFtZXMpOgorICAgICAg
ICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpQ
cm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6
OkJhc2VEb3ROb2RlOjplbWl0R2V0UHJvcGVydHlWYWx1ZSk6CisKKyAgICAgICAgQWRkaW5nIHN1
cHBvcnQgdG8gcHJvcGVybHkgYWNjZXNzIHByaXZhdGUgbWV0aG9kLiBTaW5jZSB3ZSBzdG9yZQor
ICAgICAgICBwcml2YXRlIG1ldGhvZHMgb24gY2xhc3MgbGV4aWNhbCBzY29wZSwgd2UgbmVlZCBh
IGRpZmZlcmVudCBzZXQgb2YKKyAgICAgICAgaW5zdHJ1Y3Rpb25zIHRvIGFjY2VzcyBhIHByaXZh
dGUgbWV0aG9kLgorCisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjplbWl0UHV0UHJvcGVydHkp
OgorCisgICAgICAgIEluIHRoZSBjYXNlIG9mIHdlIHRyeWluZyB0byB3cml0ZSBpbiBhIHByaXZh
dGUgbWV0aG9kLCB3ZSBuZWVkIHRvCisgICAgICAgIHRocm93IGEgVHlwZUVycm9yIGFjY29yZGlu
ZyB0byBzcGVjaWZpY2F0aW9uCisgICAgICAgIChodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtcHJp
dmF0ZS1tZXRob2RzLyNzZWMtcHJpdmF0ZWZpZWxkc2V0KS4KKworICAgICAgICAoSlNDOjpGdW5j
dGlvbkNhbGxWYWx1ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlBvc3RmaXhO
b2RlOjplbWl0RG90KToKKyAgICAgICAgKEpTQzo6UHJlZml4Tm9kZTo6ZW1pdERvdCk6CisgICAg
ICAgIChKU0M6OkNsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogZGVidWdn
ZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckNhbGxGcmFt
ZTo6ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24pOgorICAgICAgICAqIGludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6ZXZhbCk6CisgICAgICAgICogcGFyc2VyL05v
ZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25NZXRhZGF0YU5vZGU6OkZ1bmN0aW9uTWV0
YWRhdGFOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKiBwYXJzZXIv
UGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3Mp
OgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OmRlY2xh
cmVQcml2YXRlTWV0aG9kKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OmRlY2xhcmVQcml2YXRlRmll
bGQpOgorICAgICAgICAoSlNDOjpTY29wZTo6ZGVjbGFyZVByaXZhdGVOYW1lKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwYXJzZXIvUGFyc2VyTW9kZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvVmFyaWFi
bGVFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmRl
Y2xhcmVQcml2YXRlTWV0aG9kKToKKyAgICAgICAgKEpTQzo6Q29tcGFjdFZhcmlhYmxlRW52aXJv
bm1lbnQ6OkNvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50KToKKyAgICAgICAgKEpTQzo6Q29tcGFj
dFZhcmlhYmxlRW52aXJvbm1lbnQ6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpD
b21wYWN0VmFyaWFibGVFbnZpcm9ubWVudDo6dG9WYXJpYWJsZUVudmlyb25tZW50IGNvbnN0KToK
KyAgICAgICAgKiBwYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oOgorICAgICAgICAoSlNDOjpW
YXJpYWJsZUVudmlyb25tZW50RW50cnk6OmlzUHJpdmF0ZUZpZWxkIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5Ojppc1ByaXZhdGVNZXRob2QgY29uc3QpOgor
ICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OnNldElzUHJpdmF0ZUZpZWxk
KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5OjpzZXRJc1ByaXZhdGVN
ZXRob2QpOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5Ojppc01ldGhvZCBjb25zdCk6
CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6OmlzUHJpdmF0ZUFjY2VzcyBjb25zdCk6
CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmFkZFByaXZhdGVOYW1lKToKKyAg
ICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVByaXZhdGVGaWVsZCk6Cisg
ICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlTWV0aG9kKToK
KyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6aGFzUHJpdmF0ZUFjY2VzcyBjb25z
dCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeTo6aXNQcml2YXRlTmFt
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnRFbnRy
eTo6c2V0SXNQcml2YXRlTmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52
aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlTmFtZSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGlt
ZS9DYWNoZWRUeXBlcy5jcHA6CisgICAgICAgIChKU0M6OkNhY2hlZENvZGVCbG9ja1JhcmVEYXRh
OjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRDb2RlQmxvY2tSYXJlRGF0YTo6ZGVjb2Rl
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlUmFyZURhdGE6
OmVuY29kZSk6CisgICAgICAgIChKU0M6OkNhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZVJhcmVEYXRh
OjpkZWNvZGUgY29uc3QpOgorICAgICAgICAoSlNDOjpDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGU6
OnByaXZhdGVCcmFuZFJlcXVpcmVtZW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ29k
ZUJsb2NrOjpkZXJpdmVkQ29udGV4dFR5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpDYWNoZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OmVuY29kZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6
OkNhY2hlZENvZGVCbG9jazo6bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2Vu
ZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ltcGwpOgorICAgICAgICAoSlNDOjpDb2RlQ2FjaGU6Omdl
dFVubGlua2VkR2xvYmFsRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKiBydW50aW1lL0Rp
cmVjdEV2YWxFeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6RGlyZWN0RXZhbEV4ZWN1dGFi
bGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkRpcmVjdEV2YWxFeGVjdXRhYmxlOjpEaXJlY3RF
dmFsRXhlY3V0YWJsZSk6CisgICAgICAgICogcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5o
OgorICAgICAgICAqIHJ1bnRpbWUvRXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpF
dmFsRXhlY3V0YWJsZTo6RXZhbEV4ZWN1dGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvRXZhbEV4
ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OmV4ZWN1dGFibGVJbmZv
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OnByaXZhdGVCcmFuZFJlcXVp
cmVtZW50IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwOgor
ICAgICAgICAoSlNDOjpjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcik6CisgICAgICAgICog
cnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6SW5kaXJl
Y3RFdmFsRXhlY3V0YWJsZTo6SW5kaXJlY3RFdmFsRXhlY3V0YWJsZSk6CisgICAgICAgICogcnVu
dGltZS9KU1Njb3BlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNTY29wZTo6Y29sbGVjdENsb3N1cmVW
YXJpYWJsZXNVbmRlclREWik6CisgICAgICAgICogcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Ok9w
dGlvbnM6OnJlY29tcHV0ZURlcGVuZGVudE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0
aW9uc0xpc3QuaDoKKyAgICAgICAgKiBydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmg6CisgICAg
ICAgICogcnVudGltZS9TeW1ib2xUYWJsZS5jcHA6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxl
OjpjbG9uZVNjb3BlUGFydCk6CisgICAgICAgICogcnVudGltZS9TeW1ib2xUYWJsZS5oOgorCiAy
MDIxLTAxLTE5ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgZml4IEdDQyB3YXJuaW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBiY2UwNzc0NTkyMjIuLmI5ZjE5Njg1YmVhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTEyNDMsOSArMTI0MywxMyBAQAogCQk4NjE1OEFCMzE1NUM4QjQwMDBCNDVDOUMg
LyogUHJvcGVydHlOYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NjE1OEFCMjE1NUM4QjNGMDBCNDVDOUMgLyogUHJvcGVydHlOYW1lLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODYxODE2NzcxRkI3
OTI0MjAwRUNDNEVDIC8qIEJpZ0ludE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODYxODE2NzYxRkI3OTIyRjAwRUNDNEVDIC8qIEJpZ0ludE9i
amVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTg2MjU1M0QyMTYxMzZFMUEwMDlGMTdEMCAvKiBKU1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjI1NTNDRjE2MTM2QUE1MDA5RjE3RDAgLyog
SlNQcm94eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTg2MjgxRUYwMjVCNjE2MDAwMDM2NzAwNCAvKiBDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MjgxRUVG
MjVCNjE2MDAwMDM2NzAwNCAvKiBDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQuaCAqLzsgfTsKKwkJ
ODYyODFFRjQyNUI2MUFGMDAwMzY3MDA0IC8qIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjI4MUVGMzI1QjYx
QUYwMDAzNjcwMDQgLyogQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuaCAqLzsgfTsKIAkJODYzQjIz
RTAwRkM2MTE4OTAwNzAzQUE0IC8qIE1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYzQjIzREYwRkM2MEU2MjAwNzAz
QUE0IC8qIE1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2M0ZCQzVBMjVCMDkzQjkwMEY2QzkzMCAvKiBXYXNt
VmFsdWVMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODYzRkJDNTgyNUIwOTNCOTAwRjZDOTMwIC8qIFdhc21WYWx1ZUxvY2F0aW9uLmggKi87
IH07CiAJCTg2NUEzMEYxMTM1MDA3RTEwMENEQjQ5RSAvKiBKU0NKU1ZhbHVlSW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY1QTMwRjAxMzUw
MDdFMTAwQ0RCNDlFIC8qIEpTQ0pTVmFsdWVJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODY1REEwQzUyNUI4OTU3NDAwODc1NzcyIC8q
IFNldFByaXZhdGVCcmFuZFZhcmlhbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg2NURBMEM0MjVCODk1NzQwMDg3NTc3MiAvKiBTZXRQcml2YXRlQnJh
bmRWYXJpYW50LmggKi87IH07CisJCTg2NURBMEM4MjVCODk2MEMwMDg3NTc3MiAvKiBTZXRQcml2
YXRlQnJhbmRTdGF0dXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg2NURBMEM3MjVCODk2MEMwMDg3NTc3MiAvKiBTZXRQcml2YXRlQnJhbmRTdGF0dXMu
aCAqLzsgfTsKIAkJODY2NzM5RDIxM0JGREU3MTAwMjNEODdDIC8qIEJpZ0ludGVnZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NjczOUQwMTNCRkRF
NzEwMDIzRDg3QyAvKiBCaWdJbnRlZ2VyLmggKi87IH07CiAJCTg2NjczOUQzMTNCRkRFNzEwMDIz
RDg3QyAvKiBVaW50MTZXaXRoRnJhY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2NjczOUQxMTNCRkRFNzEwMDIzRDg3QyAvKiBVaW50MTZXaXRo
RnJhY3Rpb24uaCAqLzsgfTsKIAkJODY3MDRCNDMxMkRCOEE4MTAwQTlGRTdCIC8qIFlhcnJTeW50
YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NjcwNEI0MTEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuaCAqLzsgfTsK
QEAgLTQxNDAsNiArNDE0NCwxMCBAQAogCQk4NjE4MTY3ODFGQjc5MzEzMDBFQ0M0RUMgLyogQmln
SW50T2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJpZ0ludE9iamVjdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2MjU1M0NFMTYxMzZBQTUwMDlGMTdEMCAvKiBKU1By
b3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJveHkuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjI1NTNDRjE2MTM2QUE1MDA5RjE3RDAg
LyogSlNQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb3h5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2MjgxRUVGMjVCNjE2MDAwMDM2NzAwNCAv
KiBDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2hlY2tQcml2YXRl
QnJhbmRWYXJpYW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2MjgxRUYxMjVC
NjE2NUUwMDM2NzAwNCAvKiBDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJODYyODFFRjMyNUI2MUFGMDAwMzY3MDA0IC8qIENoZWNrUHJpdmF0ZUJyYW5k
U3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2MjgxRUY1MjVCNjFCMDYwMDM2NzAwNCAvKiBDaGVj
a1ByaXZhdGVCcmFuZFN0YXR1cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDaGVja1ByaXZhdGVC
cmFuZFN0YXR1cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2M0IyM0RGMEZD
NjBFNjIwMDcwM0FBNCAvKiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg2M0M2RDk4MTUyMTExMTIwMDU4NUU0RSAvKiBZYXJyQ2Fub25pY2Fs
aXplVUNTMi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBZYXJyQ2Fu
b25pY2FsaXplVUNTMi5jcHA7IHBhdGggPSB5YXJyL1lhcnJDYW5vbmljYWxpemVVQ1MyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYzQzZEOTkxNTIxMTExMjAwNTg1RTRFIC8q
IFlhcnJDYW5vbmljYWxpemUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFy
ckNhbm9uaWNhbGl6ZS5oOyBwYXRoID0geWFyci9ZYXJyQ2Fub25pY2FsaXplLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MTUwLDYgKzQxNTgsMTAgQEAKIAkJODY0MDkyM0IxNTZF
RUQzQjAwNTY2Q0MyIC8qIEFSTTY0UmVnaXN0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEFSTTY0UmVnaXN0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTg2NDA5MjNDMTU2RUVEM0IwMDU2NkNCMiAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyQVJNNjQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY1QTMwRjAxMzUwMDdFMTAwQ0RCNDlFIC8qIEpTQ0pT
VmFsdWVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ0pTVmFs
dWVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2NURBMEM0MjVCODk1
NzQwMDg3NTc3MiAvKiBTZXRQcml2YXRlQnJhbmRWYXJpYW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNl
dFByaXZhdGVCcmFuZFZhcmlhbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODY1
REEwQzYyNUI4OTU5RTAwODc1NzcyIC8qIFNldFByaXZhdGVCcmFuZFZhcmlhbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2V0UHJpdmF0ZUJyYW5kVmFyaWFudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTg2NURBMEM3MjVCODk2MEMwMDg3NTc3MiAvKiBTZXRQcml2YXRlQnJh
bmRTdGF0dXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2NURBMEM5MjVCODk2MkEwMDg3NTc3MiAvKiBTZXRQ
cml2YXRlQnJhbmRTdGF0dXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2V0UHJpdmF0ZUJyYW5k
U3RhdHVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY2NzM5RDAxM0JGREU3
MTAwMjNEODdDIC8qIEJpZ0ludGVnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQmlnSW50ZWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjY3MzlEMTEz
QkZERTcxMDAyM0Q4N0MgLyogVWludDE2V2l0aEZyYWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFVpbnQxNldpdGhGcmFjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4NjcwNEI0MDEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gWWFyclN5bnRheENoZWNr
ZXIuY3BwOyBwYXRoID0geWFyci9ZYXJyU3ludGF4Q2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC04NTg3LDYgKzg1OTksMTQgQEAKIAkJCQkwRjQyNkE0NjE0NjBDQkFC
MDAxMzFGOEYgLyogVmlydHVhbFJlZ2lzdGVyLmggKi8sCiAJCQkJMEY5MTlEMjIxNTg1M0NERTAw
NEE0RTdEIC8qIFdhdGNocG9pbnQuY3BwICovLAogCQkJCTBGOTE5RDIzMTU4NTNDREUwMDRBNEU3
RCAvKiBXYXRjaHBvaW50LmggKi8sCisJCQkJODYyODFFRUYyNUI2MTYwMDAwMzY3MDA0IC8qIENo
ZWNrUHJpdmF0ZUJyYW5kVmFyaWFudC5oICovLAorCQkJCTg2MjgxRUYxMjVCNjE2NUUwMDM2NzAw
NCAvKiBDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQuY3BwICovLAorCQkJCTg2MjgxRUYzMjVCNjFB
RjAwMDM2NzAwNCAvKiBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5oICovLAorCQkJCTg2MjgxRUY1
MjVCNjFCMDYwMDM2NzAwNCAvKiBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5jcHAgKi8sCisJCQkJ
ODY1REEwQzQyNUI4OTU3NDAwODc1NzcyIC8qIFNldFByaXZhdGVCcmFuZFZhcmlhbnQuaCAqLywK
KwkJCQk4NjVEQTBDNjI1Qjg5NTlFMDA4NzU3NzIgLyogU2V0UHJpdmF0ZUJyYW5kVmFyaWFudC5j
cHAgKi8sCisJCQkJODY1REEwQzcyNUI4OTYwQzAwODc1NzcyIC8qIFNldFByaXZhdGVCcmFuZFN0
YXR1cy5oICovLAorCQkJCTg2NURBMEM5MjVCODk2MkEwMDg3NTc3MiAvKiBTZXRQcml2YXRlQnJh
bmRTdGF0dXMuY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBieXRlY29kZTsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CkBAIC05MDQ1LDYgKzkwNjUsNyBAQAogCQkJCTc5NjVDMjE3MUU1RDc5
OTYwMEI3NTkxRCAvKiBBaXJBbGxvY2F0ZVJlZ2lzdGVyc0J5R3JhcGhDb2xvcmluZy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZFQzg1NkUxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckFsbG9jYXRlU3Rh
Y2tCeUdyYXBoQ29sb3JpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTcwMUJEQUNEQzcw
MDgwRkY3NCAvKiBBaXJBcmcuaCBpbiBIZWFkZXJzICovLAorCQkJCTg2NURBMEM1MjVCODk1NzQw
MDg3NTc3MiAvKiBTZXRQcml2YXRlQnJhbmRWYXJpYW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjY0RUFGMzFDNEVDRDA2MDA2MjFFOUIgLyogQWlyQXJnSW5saW5lcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZFQzg1NzIxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckJhc2ljQmxvY2suaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMkM2M0JDMUU2MzQ0MEMwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlv
blNldC5oIGluIEhlYWRlcnMgKi8sCkBAIC05NDc3LDYgKzk0OTgsNyBAQAogCQkJCTBGMUUzQTQ3
MTUzNENCQjkwMDBGOTQ1NiAvKiBERkdEb3VibGVGb3JtYXRTdGF0ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZEM0M4MjgxNDExNUQ0RjAwRkQ4MUNCIC8qIERGR0RyaXZlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY2NkUxNkMxNERGM0YxNjAwQjdCMkU0IC8qIERGR0VkZ2UuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTg2MjgxRUY0MjVCNjFBRjAwMDM2NzAwNCAvKiBDaGVja1ByaXZhdGVCcmFuZFN0
YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEOUEyOTYxN0EwQkM3NDAwRUUyNjE4IC8qIERG
R0VkZ2VEb21pbmF0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOEYxNDM0MUFERjA5MDEwMEVE
NzkyQyAvKiBERkdFcG9jaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCQzBBRTgxNDk2QzdDNzAw
RDRGQkREIC8qIERGR0V4aXRQcm9maWxlLmggaW4gSGVhZGVycyAqLywKQEAgLTk2OTAsNiArOTcx
Miw3IEBACiAJCQkJMEY5RDRDMTExQzNFMkM3NDAwNkNEOTg0IC8qIEZUTFBhdGNocG9pbnRFeGNl
cHRpb25IYW5kbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDg1MzJBMTg3REZERUMwMDgzQjY4
NyAvKiBGVExSZWNvdmVyeU9wY29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDRUZBQUMxODA0
QzEzRTAwNDcyQ0U0IC8qIEZUTFNhdmVSZXN0b3JlLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NjI4
MUVGMDI1QjYxNjAwMDAzNjcwMDQgLyogQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MzM4RUJBMzIzQUIwNEI4MDAzODI2NjIgLyogRlRMU2VsZWN0UHJlZGlj
dGFiaWxpdHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjVGMUIyMTgxNjM1RjMwMDUyMkYzOSAv
KiBGVExTbG93UGF0aENhbGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjVGMUI0MTgxNjM1RjMw
MDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGxLZXkuaCBpbiBIZWFkZXJzICovLApAQCAtOTkzMSw2
ICs5OTU0LDcgQEAKIAkJCQlGRTNBMDZCMjFDMTBDQjg5MDAzOTBGREQgLyogSklUQml0QW5kR2Vu
ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTNBMDZBODFDMTBCQzgxMDAzOTBGREQgLyog
SklUQml0QmluYXJ5T3BHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFM0EwNkE2MUMx
MEI3MkQwMDM5MEZERCAvKiBKSVRCaXRPckdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
ODY1REEwQzgyNUI4OTYwQzAwODc1NzcyIC8qIFNldFByaXZhdGVCcmFuZFN0YXR1cy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRkUzQTA2QjQxQzEwQ0I5MzAwMzkwRkREIC8qIEpJVEJpdFhvckdlbmVy
YXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZDQ0VGREUwRjQxM0Y4OTAwRkQ3RjlFIC8qIEpJ
VENvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkI4MEJDMjBBNzk0NzMwMDA2QUFGNiAvKiBK
SVRDb2RlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQK
aW5kZXggNWJmYjBhYWI3ZWUxLi5jZjQyZDJjZGI5NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNl
cy50eHQKQEAgLTIxMSw2ICsyMTEsOCBAQCBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCiBieXRl
Y29kZS9DYWxsTGlua1N0YXR1cy5jcHAKIGJ5dGVjb2RlL0NhbGxNb2RlLmNwcAogYnl0ZWNvZGUv
Q2FsbFZhcmlhbnQuY3BwCitieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5jcHAKK2J5
dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudC5jcHAKIGJ5dGVjb2RlL0NvZGVCbG9jay5j
cHAKIGJ5dGVjb2RlL0NvZGVCbG9ja0hhc2guY3BwCiBieXRlY29kZS9Db2RlQmxvY2tKZXR0aXNv
bmluZ1dhdGNocG9pbnQuY3BwCkBAIC0yNzEsNiArMjczLDggQEAgYnl0ZWNvZGUvUHV0QnlJZFN0
YXR1cy5jcHAKIGJ5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcAogYnl0ZWNvZGUvUmVjb3JkZWRT
dGF0dXNlcy5jcHAKIGJ5dGVjb2RlL1JlZHVjZVdoaXRlc3BhY2UuY3BwCitieXRlY29kZS9TZXRQ
cml2YXRlQnJhbmRTdGF0dXMuY3BwCitieXRlY29kZS9TZXRQcml2YXRlQnJhbmRWYXJpYW50LmNw
cAogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCiBieXRlY29kZS9TdHJ1Y3R1cmVTZXQuY3Bw
CiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcApp
bmRleCAxYTIxNDkyYTY1MWUuLjY2NDE3YzQxMzIxZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKQEAgLTU5LDcgKzU5
LDcgQEAgU291cmNlQ29kZSBCdWlsdGluRXhlY3V0YWJsZXM6OmRlZmF1bHRDb25zdHJ1Y3RvclNv
dXJjZUNvZGUoQ29uc3RydWN0b3JLaW5kIGNvbnMKICAgICByZXR1cm4gU291cmNlQ29kZSgpOwog
fQogCi1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVh
dGVEZWZhdWx0Q29uc3RydWN0b3IoQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgY29u
c3QgSWRlbnRpZmllciYgbmFtZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIpCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4
ZWN1dGFibGVzOjpjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoQ29uc3RydWN0b3JLaW5kIGNvbnN0
cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50
IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KQogewogICAgIHN3aXRjaCAoY29uc3RydWN0b3JLaW5k
KSB7CiAgICAgY2FzZSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU6CkBAIC02Nyw3ICs2Nyw3IEBAIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZURlZmF1
bHRDb25zdHJ1Y3RvcihDb25zdHJ1CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29uc3RydWN0
b3JLaW5kOjpCYXNlOgogICAgIGNhc2UgQ29uc3RydWN0b3JLaW5kOjpFeHRlbmRzOgotICAgICAg
ICByZXR1cm4gY3JlYXRlRXhlY3V0YWJsZShtX3ZtLCBkZWZhdWx0Q29uc3RydWN0b3JTb3VyY2VD
b2RlKGNvbnN0cnVjdG9yS2luZCksIG5hbWUsIGNvbnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJp
bGl0eTo6Q2FuQ29uc3RydWN0LCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcik7CisgICAgICAg
IHJldHVybiBjcmVhdGVFeGVjdXRhYmxlKG1fdm0sIGRlZmF1bHRDb25zdHJ1Y3RvclNvdXJjZUNv
ZGUoY29uc3RydWN0b3JLaW5kKSwgbmFtZSwgY29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmls
aXR5OjpDYW5Db25zdHJ1Y3QsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBwcml2YXRlQnJh
bmRSZXF1aXJlbWVudCk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJl
dHVybiBudWxscHRyOwpAQCAtNzgsNyArNzgsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShjb25zdCBTbwog
ICAgIHJldHVybiBjcmVhdGVFeGVjdXRhYmxlKG1fdm0sIGNvZGUsIG5hbWUsIGNvbnN0cnVjdG9y
S2luZCwgY29uc3RydWN0QWJpbGl0eSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vKTsK
IH0KIAotVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3Jl
YXRlRXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgY29uc3QgSWRl
bnRpZmllciYgbmFtZSwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgQ29uc3RydWN0
QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplcikKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWls
dGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1
Y3RvcktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgTmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJl
cXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KQogewogICAgIC8vIEZJWE1FOiBDYW4g
d2UganVzdCBtYWtlIE1ldGFEYXRhIGNvbXB1dGF0aW9uIGJlIGNvbnN0ZXhwciBhbmQgaGF2ZSB0
aGUgY29tcGlsZXIgZG8gdGhpcyBmb3IgdXM/CiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MzI3MgpAQCAtMjUxLDcgKzI1MSw3IEBAIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUoVk0m
IHZtLCBjb25zdCBTCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6
OmNyZWF0ZSh2bSwgc291cmNlLCAmbWV0YWRhdGEsIGtpbmQsIGNvbnN0cnVjdEFiaWxpdHksIEpT
UGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgbnVsbHB0ciwgRGVyaXZlZENvbnRleHRUeXBlOjpO
b25lLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29u
c3RydWN0b3IpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1
dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBzb3VyY2UsICZt
ZXRhZGF0YSwga2luZCwgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFz
c2ljLCBudWxscHRyLCBXVEY6Om51bGxvcHQsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgbmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBpc0J1aWx0
aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3Rvcik7CiAgICAgcmV0dXJuIGZ1bmN0aW9uRXhlY3V0YWJs
ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5FeGVjdXRhYmxlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5F
eGVjdXRhYmxlcy5oCmluZGV4IDQ1MTYzOGU4NzNmNy4uNDNlMzgyNzViMWI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCkBA
IC01OCw5ICs1OCw5IEBAIFNvdXJjZUNvZGUgbmFtZSMjU291cmNlKCk7CiAjdW5kZWYgRVhQT1NF
X0JVSUxUSU5fRVhFQ1VUQUJMRVMKIAogICAgIHN0YXRpYyBTb3VyY2VDb2RlIGRlZmF1bHRDb25z
dHJ1Y3RvclNvdXJjZUNvZGUoQ29uc3RydWN0b3JLaW5kKTsKLSAgICBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogY3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yKENvbnN0cnVjdG9yS2luZCwgY29u
c3QgSWRlbnRpZmllciYgbmFtZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpOworICAgIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoQ29uc3Ry
dWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOwogCi0gICAgc3RhdGljIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVFeGVjdXRhYmxlKFZNJiwgY29uc3QgU291cmNlQ29kZSYs
IGNvbnN0IElkZW50aWZpZXImLCBDb25zdHJ1Y3RvcktpbmQsIENvbnN0cnVjdEFiaWxpdHksIE5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsKKyAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIGNyZWF0ZUV4ZWN1dGFibGUoVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgY29uc3Qg
SWRlbnRpZmllciYsIENvbnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJpbGl0eSwgTmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID0gUHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQ6Ok5vbmUpOwogCiAgICAgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5h
bWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5k
ZXggYWQ0OThjN2IzYWRkLi40NDgzODk5MTc4YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAgLTE3Myw2ICsxNzMsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBtYWNybyh3ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbCkgXAog
ICAgIG1hY3JvKHdlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbCkgXAogICAg
IG1hY3JvKGluc3RhbmNlRmllbGRJbml0aWFsaXplcikgXAorICAgIG1hY3JvKHByaXZhdGVCcmFu
ZCkgXAogICAgIG1hY3JvKGhhc093blByb3BlcnR5RnVuY3Rpb24pIFwKICAgICBtYWNybyhjcmVh
dGVQcml2YXRlU3ltYm9sKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNj
ZXNzQ2FzZS5jcHAKaW5kZXggNjI1ZTg1NzJiYzg1Li4zZWJhMzE4NzI4YmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAgLTEzMyw2ICsxMzMs
MTggQEAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZURlbGV0
ZSgKICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBBY2Nlc3NDYXNl
KHZtLCBvd25lciwgRGVsZXRlLCBpZGVudGlmaWVyLCBvZmZzZXQsIG5ld1N0cnVjdHVyZSwgeyB9
LCB7IH0pKTsKIH0KIAorc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNy
ZWF0ZUNoZWNrUHJpdmF0ZUJyYW5kKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRl
bnRpZmllciBpZGVudGlmaWVyLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICByZXR1cm4g
c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBBY2Nlc3NDYXNlKHZtLCBvd25lciwgQ2hl
Y2tQcml2YXRlQnJhbmQsIGlkZW50aWZpZXIsIGludmFsaWRPZmZzZXQsIHN0cnVjdHVyZSwgeyB9
LCB7IH0pKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNy
ZWF0ZVNldFByaXZhdGVCcmFuZCgKKyAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJs
ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVy
ZSogbmV3U3RydWN0dXJlKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG9sZFN0cnVjdHVyZSA9PSBu
ZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIFNldFByaXZhdGVCcmFuZCwgaWRl
bnRpZmllciwgaW52YWxpZE9mZnNldCwgbmV3U3RydWN0dXJlLCB7IH0sIHsgfSkpOworfQorCiBB
Y2Nlc3NDYXNlOjp+QWNjZXNzQ2FzZSgpCiB7CiB9CkBAIC0yODgsNiArMzAwLDggQEAgYm9vbCBB
Y2Nlc3NDYXNlOjpyZXF1aXJlc0lkZW50aWZpZXJOYW1lTWF0Y2goKSBjb25zdAogICAgIGNhc2Ug
RGlyZWN0QXJndW1lbnRzTGVuZ3RoOgogICAgIGNhc2UgU2NvcGVkQXJndW1lbnRzTGVuZ3RoOgog
ICAgIGNhc2UgTW9kdWxlTmFtZXNwYWNlTG9hZDoKKyAgICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5k
OgorICAgIGNhc2UgU2V0UHJpdmF0ZUJyYW5kOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBj
YXNlIEluc3RhbmNlT2ZIaXQ6CiAgICAgY2FzZSBJbnN0YW5jZU9mTWlzczoKQEAgLTM0MSw2ICsz
NTUsOCBAQCBib29sIEFjY2Vzc0Nhc2U6OnJlcXVpcmVzSW50MzJQcm9wZXJ0eUNoZWNrKCkgY29u
c3QKICAgICBjYXNlIEluc3RhbmNlT2ZIaXQ6CiAgICAgY2FzZSBJbnN0YW5jZU9mTWlzczoKICAg
ICBjYXNlIEluc3RhbmNlT2ZHZW5lcmljOgorICAgIGNhc2UgQ2hlY2tQcml2YXRlQnJhbmQ6Cisg
ICAgY2FzZSBTZXRQcml2YXRlQnJhbmQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBjYXNl
IEluZGV4ZWRJbnQzMkxvYWQ6CiAgICAgY2FzZSBJbmRleGVkRG91YmxlTG9hZDoKQEAgLTM4Myw2
ICszOTksOCBAQCBib29sIEFjY2Vzc0Nhc2U6Om5lZWRzU2NyYXRjaEZQUigpIGNvbnN0CiAgICAg
Y2FzZSBJbnRyaW5zaWNHZXR0ZXI6CiAgICAgY2FzZSBJbkhpdDoKICAgICBjYXNlIEluTWlzczoK
KyAgICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5kOgorICAgIGNhc2UgU2V0UHJpdmF0ZUJyYW5kOgog
ICAgIGNhc2UgQXJyYXlMZW5ndGg6CiAgICAgY2FzZSBTdHJpbmdMZW5ndGg6CiAgICAgY2FzZSBE
aXJlY3RBcmd1bWVudHNMZW5ndGg6CkBAIC00NzAsNiArNDg4LDggQEAgdm9pZCBBY2Nlc3NDYXNl
Ojpmb3JFYWNoRGVwZW5kZW50Q2VsbChWTSYgdm0sIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpIGNv
bnN0CiAgICAgY2FzZSBHZXRHZXR0ZXI6CiAgICAgY2FzZSBJbkhpdDoKICAgICBjYXNlIEluTWlz
czoKKyAgICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5kOgorICAgIGNhc2UgU2V0UHJpdmF0ZUJyYW5k
OgogICAgIGNhc2UgQXJyYXlMZW5ndGg6CiAgICAgY2FzZSBTdHJpbmdMZW5ndGg6CiAgICAgY2Fz
ZSBEaXJlY3RBcmd1bWVudHNMZW5ndGg6CkBAIC01MTksNiArNTM5LDggQEAgYm9vbCBBY2Nlc3ND
YXNlOjpkb2VzQ2FsbHMoVk0mIHZtLCBWZWN0b3I8SlNDZWxsKj4qIGNlbGxzVG9NYXJrSWZEb2Vz
Q2FsbHMpIGNvbnMKICAgICBjYXNlIEludHJpbnNpY0dldHRlcjoKICAgICBjYXNlIEluSGl0Ogog
ICAgIGNhc2UgSW5NaXNzOgorICAgIGNhc2UgQ2hlY2tQcml2YXRlQnJhbmQ6CisgICAgY2FzZSBT
ZXRQcml2YXRlQnJhbmQ6CiAgICAgY2FzZSBBcnJheUxlbmd0aDoKICAgICBjYXNlIFN0cmluZ0xl
bmd0aDoKICAgICBjYXNlIERpcmVjdEFyZ3VtZW50c0xlbmd0aDoKQEAgLTY3MCw2ICs2OTIsOCBA
QCBib29sIEFjY2Vzc0Nhc2U6OmNhblJlcGxhY2UoY29uc3QgQWNjZXNzQ2FzZSYgb3RoZXIpIGNv
bnN0CiAgICAgY2FzZSBDdXN0b21BY2Nlc3NvclNldHRlcjoKICAgICBjYXNlIEluSGl0OgogICAg
IGNhc2UgSW5NaXNzOgorICAgIGNhc2UgQ2hlY2tQcml2YXRlQnJhbmQ6CisgICAgY2FzZSBTZXRQ
cml2YXRlQnJhbmQ6CiAgICAgICAgIGlmIChvdGhlci50eXBlKCkgIT0gdHlwZSgpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC03MDEsNyArNzI1LDcgQEAgdm9pZCBBY2Nlc3NDYXNl
OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAgIG91dC5wcmludChjb21tYSwg
InByb3RvdHlwZSBhY2Nlc3MgY2hhaW4gPSAiKTsKICAgICAgICAgbV9wb2x5UHJvdG9BY2Nlc3ND
aGFpbi0+ZHVtcChzdHJ1Y3R1cmUoKSwgb3V0KTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAo
bV90eXBlID09IFRyYW5zaXRpb24gfHwgbV90eXBlID09IERlbGV0ZSkKKyAgICAgICAgaWYgKG1f
dHlwZSA9PSBUcmFuc2l0aW9uIHx8IG1fdHlwZSA9PSBEZWxldGUgfHwgbV90eXBlID09IFNldFBy
aXZhdGVCcmFuZCkKICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgInN0cnVjdHVyZSA9ICIs
IHBvaW50ZXJEdW1wKHN0cnVjdHVyZSgpKSwgIiAtPiAiLCBwb2ludGVyRHVtcChuZXdTdHJ1Y3R1
cmUoKSkpOwogICAgICAgICBlbHNlIGlmIChtX3N0cnVjdHVyZSkKICAgICAgICAgICAgIG91dC5w
cmludChjb21tYSwgInN0cnVjdHVyZSA9ICIsIHBvaW50ZXJEdW1wKG1fc3RydWN0dXJlLmdldCgp
KSk7CkBAIC0xMzMyLDYgKzEzNTYsMTIgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhH
dWFyZCgKICAgICAgICAgICAgIHN0YXRlLmZhaWxBbmRJZ25vcmUuYXBwZW5kKGZhaWxBbmRJZ25v
cmUpOwogICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgY2FzZSBDaGVja1ByaXZhdGVCcmFu
ZDogeworICAgICAgICBlbWl0RGVmYXVsdEd1YXJkKCk7CisgICAgICAgIHN0YXRlLnN1Y2NlZWQo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICAgICAgCiAgICAgZGVmYXVsdDoKICAgICAg
ICAgZW1pdERlZmF1bHRHdWFyZCgpOwpAQCAtMjAzNCw2ICsyMDY0LDE5IEBAIHZvaWQgQWNjZXNz
Q2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKKyAgICBjYXNlIFNldFByaXZhdGVCcmFuZDogeworICAgICAgICBB
U1NFUlQoc3RydWN0dXJlKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRh
dGVkKCkpOworICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlKCktPnRyYW5zaXRpb25LaW5kKCkg
PT0gVHJhbnNpdGlvbktpbmQ6OlNldEJyYW5kKTsKKworICAgICAgICB1aW50MzJfdCBzdHJ1Y3R1
cmVCaXRzID0gYml0d2lzZV9jYXN0PHVpbnQzMl90PihuZXdTdHJ1Y3R1cmUoKS0+aWQoKSk7Cisg
ICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoc3RydWN0dXJlQml0cyksCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CisKKyAgICAgICAgc3RhdGUuc3Vj
Y2VlZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgY2FzZSBEZWxldGVOb25Db25m
aWd1cmFibGU6IHsKICAgICAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0z
MihmYWxzZSksIHZhbHVlUmVncy5wYXlsb2FkR1BSKCkpOwogICAgICAgICBzdGF0ZS5zdWNjZWVk
KCk7CkBAIC0yMTA3LDYgKzIxNTAsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChB
Y2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlG
bG9hdDMyTG9hZDoKICAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5RmxvYXQ2NExvYWQ6CiAgICAg
Y2FzZSBJbmRleGVkU3RyaW5nTG9hZDoKKyAgICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5kOgogICAg
ICAgICAvLyBUaGVzZSBuZWVkIHRvIGJlIGhhbmRsZWQgYnkgZ2VuZXJhdGVXaXRoR3VhcmQoKSwg
c2luY2UgdGhlIGd1YXJkIGlzIHBhcnQgb2YgdGhlCiAgICAgICAgIC8vIGFsZ29yaXRobS4gV2Ug
Y2FuIGJlIHN1cmUgdGhhdCBub2JvZHkgd2lsbCBjYWxsIGdlbmVyYXRlKCkgZGlyZWN0bHkgZm9y
IHRoZXNlIHNpbmNlIHRoZXkKICAgICAgICAgLy8gYXJlIG5vdCBndWFyZGVkIGJ5IHN0cnVjdHVy
ZSBjaGVja3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNj
ZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaApp
bmRleCAxMDhmZWYzYjMzMDEuLjM2ZTk0NDdlOWUzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCkBAIC0xMDgsNiArMTA4LDggQEAgcHVibGljOgogICAg
ICAgICBJbnN0YW5jZU9mSGl0LAogICAgICAgICBJbnN0YW5jZU9mTWlzcywKICAgICAgICAgSW5z
dGFuY2VPZkdlbmVyaWMsCisgICAgICAgIENoZWNrUHJpdmF0ZUJyYW5kLAorICAgICAgICBTZXRQ
cml2YXRlQnJhbmQsCiAgICAgICAgIEluZGV4ZWRJbnQzMkxvYWQsCiAgICAgICAgIEluZGV4ZWRE
b3VibGVMb2FkLAogICAgICAgICBJbmRleGVkQ29udGlndW91c0xvYWQsCkBAIC0xNTMsNiArMTU1
LDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBj
cmVhdGVEZWxldGUoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9w
ZXJ0eU9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCiAgICAgICAgIFN0cnVjdHVyZSog
bmV3U3RydWN0dXJlKTsKKworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4g
Y3JlYXRlQ2hlY2tQcml2YXRlQnJhbmQoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVu
dGlmaWVyLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+IGNyZWF0ZVNldFByaXZhdGVCcmFuZChWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlk
ZW50aWZpZXIsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVy
ZSk7CiAgICAgCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBmcm9tU3Ry
dWN0dXJlU3R1YkluZm8oVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBT
dHJ1Y3R1cmVTdHViSW5mbyYpOwogCkBAIC0xNjIsNyArMTY3LDcgQEAgcHVibGljOgogCiAgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUoKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKG1fdHlwZSA9
PSBUcmFuc2l0aW9uIHx8IG1fdHlwZSA9PSBEZWxldGUpCisgICAgICAgIGlmIChtX3R5cGUgPT0g
VHJhbnNpdGlvbiB8fCBtX3R5cGUgPT0gRGVsZXRlIHx8IG1fdHlwZSA9PSBTZXRQcml2YXRlQnJh
bmQpCiAgICAgICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKTsKICAgICAg
ICAgcmV0dXJuIG1fc3RydWN0dXJlLmdldCgpOwogICAgIH0KQEAgLTE3MCw3ICsxNzUsNyBAQCBw
dWJsaWM6CiAKICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSgpIGNvbnN0CiAgICAgewotICAg
ICAgICBBU1NFUlQobV90eXBlID09IFRyYW5zaXRpb24gfHwgbV90eXBlID09IERlbGV0ZSk7Cisg
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHJhbnNpdGlvbiB8fCBtX3R5cGUgPT0gRGVsZXRlIHx8
IG1fdHlwZSA9PSBTZXRQcml2YXRlQnJhbmQpOwogICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUu
Z2V0KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGlzdC5yYgppbmRleCAxNTYxOWQzYTQ4YTEuLjM1MGZjYmViNTNjYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC01ODgsNiArNTg4
LDI3IEBAIG9wIDpwdXRfcHJpdmF0ZV9uYW1lLAogICAgICAgICBuZXdTdHJ1Y3R1cmVJRDogU3Ry
dWN0dXJlSUQsCiAgICAgfQogCitvcCA6c2V0X3ByaXZhdGVfYnJhbmQsCisgICAgYXJnczogewor
ICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIGJyYW5kOiBWaXJ0dWFsUmVn
aXN0ZXIsCisgICAgfSwKKyAgICBtZXRhZGF0YTogeworICAgICAgICBvbGRTdHJ1Y3R1cmVJRDog
U3RydWN0dXJlSUQsCisgICAgICAgIG5ld1N0cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJRCwKKyAgICAg
ICAgYnJhbmQ6IFdyaXRlQmFycmllcltKU0NlbGxdLAorICAgIH0KKworb3AgOmNoZWNrX3ByaXZh
dGVfYnJhbmQsCisgICAgYXJnczogeworICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCisg
ICAgICAgIGJyYW5kOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgfSwKKyAgICBtZXRhZGF0YTogewor
ICAgICAgICBzdHJ1Y3R1cmVJRDogU3RydWN0dXJlSUQsCisgICAgfQorICAgIAorCiBvcCA6cHV0
X2J5X3ZhbCwKICAgICBhcmdzOiB7CiAgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCmlu
ZGV4IGIyNjk4ZDg3OGU0YS4uNDI1YWYyNWI4MDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKQEAgLTIyOSw2ICsyMjksOCBAQCB2
b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJlZ2lzdGVyIHNjb3Bl
UmVnaXN0ZXIsIGNvbnN0IEluc3RydQogICAgIFVTRVMoT3BHZXRCeVZhbCwgYmFzZSwgcHJvcGVy
dHkpCiAgICAgVVNFUyhPcEdldFByaXZhdGVOYW1lLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VT
KE9wUHV0UHJpdmF0ZU5hbWUsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSkKKyAgICBVU0VTKE9wU2V0
UHJpdmF0ZUJyYW5kLCBiYXNlLCBicmFuZCkKKyAgICBVU0VTKE9wQ2hlY2tQcml2YXRlQnJhbmQs
IGJhc2UsIGJyYW5kKQogICAgIFVTRVMoT3BJbkJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBV
U0VTKE9wT3ZlcnJpZGVzSGFzSW5zdGFuY2UsIGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZVZhbHVl
KQogICAgIFVTRVMoT3BJbnN0YW5jZW9mLCB2YWx1ZSwgcHJvdG90eXBlKQpAQCAtMzk3LDYgKzM5
OSw4IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1W
YXJzLCBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1CiAgICAgY2FzZSBvcF9wdXRfYnlfdmFsOgog
ICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6CiAgICAgY2FzZSBvcF9wdXRfcHJpdmF0ZV9u
YW1lOgorICAgIGNhc2Ugb3Bfc2V0X3ByaXZhdGVfYnJhbmQ6CisgICAgY2FzZSBvcF9jaGVja19w
cml2YXRlX2JyYW5kOgogICAgIGNhc2Ugb3BfcHV0X2ludGVybmFsX2ZpZWxkOgogICAgIGNhc2Ug
b3BfZGVmaW5lX2RhdGFfcHJvcGVydHk6CiAgICAgY2FzZSBvcF9kZWZpbmVfYWNjZXNzb3JfcHJv
cGVydHk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hlY2tQ
cml2YXRlQnJhbmRTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0No
ZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLmQyMWIwMTIwNDEyYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5jcHAKQEAgLTAsMCArMSwy
NzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkEuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5oIgorCisj
aW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaCIKKyNpbmNsdWRlICJDb2RlQmxv
Y2suaCIKKyNpbmNsdWRlICJJQ1N0YXR1c1V0aWxzLmgiCisjaW5jbHVkZSAiUG9seW1vcnBoaWNB
Y2Nlc3MuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgorI2luY2x1ZGUgPHd0Zi9M
aXN0RHVtcC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworYm9vbCBDaGVja1ByaXZhdGVCcmFuZFN0
YXR1czo6YXBwZW5kVmFyaWFudChjb25zdCBDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQmIHZhcmlh
bnQpCit7CisgICAgcmV0dXJuIGFwcGVuZElDU3RhdHVzVmFyaWFudChtX3ZhcmlhbnRzLCB2YXJp
YW50KTsKK30KKworQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMgQ2hlY2tQcml2YXRlQnJhbmRTdGF0
dXM6OmNvbXB1dGVGb3JCYXNlbGluZShDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIElDU3RhdHVz
TWFwJiBtYXAsIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwgRXhpdEZsYWcgZGlkRXhpdCkK
K3sKKyAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGJhc2VsaW5lQmxvY2stPm1fbG9jayk7
CisKKyAgICBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyByZXN1bHQ7CisKKyNpZiBFTkFCTEUoREZH
X0pJVCkKKyAgICByZXN1bHQgPSBjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVk
YmFjaygKKyAgICAgICAgbG9ja2VyLCBiYXNlbGluZUJsb2NrLCBtYXAuZ2V0KENvZGVPcmlnaW4o
Ynl0ZWNvZGVJbmRleCkpLnN0dWJJbmZvKTsKKworICAgIGlmIChkaWRFeGl0KQorICAgICAgICBy
ZXR1cm4gcmVzdWx0LnNsb3dWZXJzaW9uKCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShtYXAp
OworICAgIFVOVVNFRF9QQVJBTShkaWRFeGl0KTsKKyAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJ
bmRleCk7CisjZW5kaWYKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNpZiBFTkFCTEUoSklU
KQorQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6OkNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzKFN0dWJJ
bmZvU3VtbWFyeSBzdW1tYXJ5LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCit7CisgICAg
c3dpdGNoIChzdW1tYXJ5KSB7CisgICAgY2FzZSBTdHViSW5mb1N1bW1hcnk6Ok5vSW5mb3JtYXRp
b246CisgICAgICAgIG1fc3RhdGUgPSBOb0luZm9ybWF0aW9uOworICAgICAgICByZXR1cm47Cisg
ICAgY2FzZSBTdHViSW5mb1N1bW1hcnk6OlNpbXBsZToKKyAgICBjYXNlIFN0dWJJbmZvU3VtbWFy
eTo6TWFrZXNDYWxsczoKKyAgICBjYXNlIFN0dWJJbmZvU3VtbWFyeTo6VGFrZXNTbG93UGF0aEFu
ZE1ha2VzQ2FsbHM6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIHJldHVybjsKKyAgICBjYXNlIFN0dWJJbmZvU3VtbWFyeTo6VGFrZXNTbG93UGF0aDoKKyAg
ICAgICAgbV9zdGF0ZSA9IHN0dWJJbmZvLnRvb2tTbG93UGF0aCA/IE9ic2VydmVkVGFrZXNTbG93
UGF0aCA6IExpa2VseVRha2VzU2xvd1BhdGg7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworQ2hlY2tQcml2YXRlQnJhbmRTdGF0
dXMgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0
U2l0ZUZlZWRiYWNrKAorICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayog
YmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbykKK3sKKyAgICBTdHViSW5mb1N1bW1h
cnkgc3VtbWFyeSA9IFN0cnVjdHVyZVN0dWJJbmZvOjpzdW1tYXJ5KGJsb2NrLT52bSgpLCBzdHVi
SW5mbyk7CisgICAgaWYgKCFpc0lubGluZWFibGUoc3VtbWFyeSkpCisgICAgICAgIHJldHVybiBD
aGVja1ByaXZhdGVCcmFuZFN0YXR1cyhzdW1tYXJ5LCAqc3R1YkluZm8pOworCisgICAgQ2hlY2tQ
cml2YXRlQnJhbmRTdGF0dXMgcmVzdWx0OworICAgIHJlc3VsdC5tX3N0YXRlID0gU2ltcGxlOwor
ICAgIHN3aXRjaCAoc3R1YkluZm8tPmNhY2hlVHlwZSgpKSB7CisgICAgY2FzZSBDYWNoZVR5cGU6
OlVuc2V0OgorICAgICAgICByZXR1cm4gQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMoTm9JbmZvcm1h
dGlvbik7CisKKyAgICBjYXNlIENhY2hlVHlwZTo6U3R1YjogeworICAgICAgICBQb2x5bW9ycGhp
Y0FjY2VzcyogbGlzdCA9IHN0dWJJbmZvLT51LnN0dWI7CisKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBsaXN0SW5kZXggPSAwOyBsaXN0SW5kZXggPCBsaXN0LT5zaXplKCk7ICsrbGlzdEluZGV4KSB7
CisgICAgICAgICAgICBjb25zdCBBY2Nlc3NDYXNlJiBhY2Nlc3MgPSBsaXN0LT5hdChsaXN0SW5k
ZXgpOworCisgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGFjY2Vzcy5zdHJ1Y3R1
cmUoKTsKKyAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUpOworICAgICAgICAgICAgQVNTRVJU
KGFjY2Vzcy50eXBlKCkgPT0gQWNjZXNzQ2FzZTo6Q2hlY2tQcml2YXRlQnJhbmQpOworCisgICAg
ICAgICAgICBDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQgdmFyaWFudChhY2Nlc3MuaWRlbnRpZmll
cigpLCBTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSk7CisgICAgICAgICAgICBpZiAoIXJlc3VsdC5h
cHBlbmRWYXJpYW50KHZhcmlhbnQpKQorICAgICAgICAgICAgICAgIHJldHVybiBDaGVja1ByaXZh
dGVCcmFuZFN0YXR1cyhKU0M6OnNsb3dWZXJzaW9uKHN1bW1hcnkpLCAqc3R1YkluZm8pOworICAg
ICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBkZWZhdWx0Ogor
ICAgICAgICByZXR1cm4gQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMoSlNDOjpzbG93VmVyc2lvbihz
dW1tYXJ5KSwgKnN0dWJJbmZvKTsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cygpOworfQorCitDaGVj
a1ByaXZhdGVCcmFuZFN0YXR1cyBDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6Y29tcHV0ZUZvcigK
KyAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIElDU3RhdHVzTWFwJiBiYXNlbGluZU1hcCwK
KyAgICBJQ1N0YXR1c0NvbnRleHRTdGFjayYgY29udGV4dFN0YWNrLCBDb2RlT3JpZ2luIGNvZGVP
cmlnaW4pCit7CisgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gY29kZU9yaWdpbi5i
eXRlY29kZUluZGV4KCk7CisgICAgRXhpdEZsYWcgZGlkRXhpdCA9IGhhc0JhZENhY2hlRXhpdFNp
dGUoYmFzZWxpbmVCbG9jaywgYnl0ZWNvZGVJbmRleCk7CisKKyAgICBmb3IgKElDU3RhdHVzQ29u
dGV4dCogY29udGV4dCA6IGNvbnRleHRTdGFjaykgeworICAgICAgICBJQ1N0YXR1cyBzdGF0dXMg
PSBjb250ZXh0LT5nZXQoY29kZU9yaWdpbik7CisKKyAgICAgICAgYXV0byBibGVzcyA9IFsmXSAo
Y29uc3QgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMmIHJlc3VsdCkgLT4gQ2hlY2tQcml2YXRlQnJh
bmRTdGF0dXMgeworICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5pc0lubGluZWQoY29kZU9yaWdp
bikpIHsKKyAgICAgICAgICAgICAgICBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyBiYXNlbGluZVJl
c3VsdCA9IGNvbXB1dGVGb3JCYXNlbGluZSgKKyAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmVC
bG9jaywgYmFzZWxpbmVNYXAsIGJ5dGVjb2RlSW5kZXgsIGRpZEV4aXQpOworICAgICAgICAgICAg
ICAgIGJhc2VsaW5lUmVzdWx0Lm1lcmdlKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGJhc2VsaW5lUmVzdWx0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGRpZEV4aXQu
aXNTZXQoRXhpdEZyb21JbmxpbmVkKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnNs
b3dWZXJzaW9uKCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9OworCisg
ICAgICAgIGlmIChzdGF0dXMuc3R1YkluZm8pIHsKKyAgICAgICAgICAgIENoZWNrUHJpdmF0ZUJy
YW5kU3RhdHVzIHJlc3VsdDsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKGNvbnRleHQtPm9wdGltaXplZENvZGVCbG9jay0+bV9sb2NrKTsK
KyAgICAgICAgICAgICAgICByZXN1bHQgPSBjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNp
dGVGZWVkYmFjaygKKyAgICAgICAgICAgICAgICAgICAgbG9ja2VyLCBjb250ZXh0LT5vcHRpbWl6
ZWRDb2RlQmxvY2ssIHN0YXR1cy5zdHViSW5mbyk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBpZiAocmVzdWx0LmlzU2V0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGJsZXNzKHJlc3Vs
dCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gY29tcHV0ZUZvckJhc2VsaW5lKGJh
c2VsaW5lQmxvY2ssIGJhc2VsaW5lTWFwLCBieXRlY29kZUluZGV4LCBkaWRFeGl0KTsKK30KKwor
I2VuZGlmIC8vIEVOQUJMRShKSVQpCisKK0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzIENoZWNrUHJp
dmF0ZUJyYW5kU3RhdHVzOjpzbG93VmVyc2lvbigpIGNvbnN0Cit7CisgICAgaWYgKG9ic2VydmVk
U2xvd1BhdGgoKSkKKyAgICAgICAgcmV0dXJuIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzKE9ic2Vy
dmVkVGFrZXNTbG93UGF0aCk7CisgICAgcmV0dXJuIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzKExp
a2VseVRha2VzU2xvd1BhdGgpOworfQorCit2b2lkIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOjpt
ZXJnZShjb25zdCBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyYgb3RoZXIpCit7CisgICAgaWYgKG90
aGVyLm1fc3RhdGUgPT0gTm9JbmZvcm1hdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byBtZXJnZVNsb3cgPSBbJl0gKCkgeworICAgICAgICBpZiAob2JzZXJ2ZWRTbG93UGF0aCgpIHx8
IG90aGVyLm9ic2VydmVkU2xvd1BhdGgoKSkKKyAgICAgICAgICAgICp0aGlzID0gQ2hlY2tQcml2
YXRlQnJhbmRTdGF0dXMoT2JzZXJ2ZWRUYWtlc1Nsb3dQYXRoKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgKnRoaXMgPSBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyhMaWtlbHlUYWtlc1Nsb3dQ
YXRoKTsKKyAgICB9OworCisgICAgc3dpdGNoIChtX3N0YXRlKSB7CisgICAgY2FzZSBOb0luZm9y
bWF0aW9uOgorICAgICAgICAqdGhpcyA9IG90aGVyOworICAgICAgICByZXR1cm47CisKKyAgICBj
YXNlIFNpbXBsZToKKyAgICAgICAgaWYgKG1fc3RhdGUgIT0gb3RoZXIubV9zdGF0ZSkKKyAgICAg
ICAgICAgIHJldHVybiBtZXJnZVNsb3coKTsKKworICAgICAgICBmb3IgKGF1dG8mIG90aGVyVmFy
aWFudCA6IG90aGVyLm1fdmFyaWFudHMpIHsKKyAgICAgICAgICAgIGlmICghYXBwZW5kVmFyaWFu
dChvdGhlclZhcmlhbnQpKQorICAgICAgICAgICAgICAgIHJldHVybiBtZXJnZVNsb3coKTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIExpa2VseVRha2VzU2xvd1BhdGg6
CisgICAgY2FzZSBPYnNlcnZlZFRha2VzU2xvd1BhdGg6CisgICAgICAgIHJldHVybiBtZXJnZVNs
b3coKTsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2
b2lkIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOjpmaWx0ZXIoY29uc3QgU3RydWN0dXJlU2V0JiBz
dHJ1Y3R1cmVTZXQpCit7CisgICAgaWYgKG1fc3RhdGUgIT0gU2ltcGxlKQorICAgICAgICByZXR1
cm47CisgICAgZmlsdGVySUNTdGF0dXNWYXJpYW50cyhtX3ZhcmlhbnRzLCBzdHJ1Y3R1cmVTZXQp
OworICAgIGlmIChtX3ZhcmlhbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgbV9zdGF0ZSA9IE5vSW5m
b3JtYXRpb247Cit9CisKK0NhY2hlYWJsZUlkZW50aWZpZXIgQ2hlY2tQcml2YXRlQnJhbmRTdGF0
dXM6OnNpbmdsZUlkZW50aWZpZXIoKSBjb25zdAoreworICAgIGlmIChtX3ZhcmlhbnRzLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBDYWNoZWFibGVJZGVudGlmaWVy
IHJlc3VsdCA9IG1fdmFyaWFudHMuZmlyc3QoKS5pZGVudGlmaWVyKCk7CisgICAgaWYgKCFyZXN1
bHQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwg
bV92YXJpYW50cy5zaXplKCk7ICsraSkgeworICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlk
ZW50aWZpZXIgPSBtX3ZhcmlhbnRzW2ldLmlkZW50aWZpZXIoKTsKKyAgICAgICAgaWYgKCFpZGVu
dGlmaWVyKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGlmIChpZGVudGlm
aWVyICE9IHJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCit2b2lkIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOjp2aXNpdEFn
Z3JlZ2F0ZShTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBmb3IgKENoZWNrUHJpdmF0ZUJy
YW5kVmFyaWFudCYgdmFyaWFudCA6IG1fdmFyaWFudHMpCisgICAgICAgIHZhcmlhbnQudmlzaXRB
Z2dyZWdhdGUodmlzaXRvcik7Cit9CisKK3ZvaWQgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6Om1h
cmtJZkNoZWFwKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGZvciAoQ2hlY2tQcml2YXRl
QnJhbmRWYXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykKKyAgICAgICAgdmFyaWFudC5tYXJr
SWZDaGVhcCh2aXNpdG9yKTsKK30KKworYm9vbCBDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6Zmlu
YWxpemUoVk0mIHZtKQoreworICAgIGZvciAoYXV0byYgdmFyaWFudCA6IG1fdmFyaWFudHMpIHsK
KyAgICAgICAgaWYgKCF2YXJpYW50LmZpbmFsaXplKHZtKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgQ2hlY2tQcml2YXRlQnJh
bmRTdGF0dXM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBvdXQucHJpbnQo
IigiKTsKKyAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKKyAgICBjYXNlIE5vSW5mb3JtYXRpb246Cisg
ICAgICAgIG91dC5wcmludCgiTm9JbmZvcm1hdGlvbiIpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFNpbXBsZToKKyAgICAgICAgb3V0LnByaW50KCJTaW1wbGUiKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBMaWtlbHlUYWtlc1Nsb3dQYXRoOgorICAgICAgICBvdXQucHJpbnQoIkxpa2Vs
eVRha2VzU2xvd1BhdGgiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBPYnNlcnZlZFRha2Vz
U2xvd1BhdGg6CisgICAgICAgIG91dC5wcmludCgiT2JzZXJ2ZWRUYWtlc1Nsb3dQYXRoIik7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICBvdXQucHJpbnQoIiwgIiwgbGlzdER1bXAobV92YXJp
YW50cyksICIpIik7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmU3NjVkYzI5YzJkZQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DaGVja1ByaXZhdGVC
cmFuZFN0YXR1cy5oCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBJ
Z2FsaWEgUy5BLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDYWNoZWFi
bGVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgorI2luY2x1ZGUgIkNvbmN1
cnJlbnRKU0xvY2suaCIKKyNpbmNsdWRlICJDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQuaCIKKyNp
bmNsdWRlICJFeGl0RmxhZy5oIgorI2luY2x1ZGUgIklDU3RhdHVzTWFwLmgiCisjaW5jbHVkZSAi
U3R1YkluZm9TdW1tYXJ5LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBBY2Nlc3NDYXNl
OworY2xhc3MgQ29kZUJsb2NrOworY2xhc3MgU3RydWN0dXJlU3R1YkluZm87CisKK2NsYXNzIENo
ZWNrUHJpdmF0ZUJyYW5kU3RhdHVzIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKK3B1YmxpYzoKKyAgICBlbnVtIFN0YXRlIDogdWludDhfdCB7CisgICAgICAgIC8vIEl0J3Mg
dW5jYWNoZWQgc28gd2UgaGF2ZSBubyBpbmZvcm1hdGlvbi4KKyAgICAgICAgTm9JbmZvcm1hdGlv
biwKKyAgICAgICAgLy8gSXQncyBjYWNoZWQgZm9yIGEgc2ltcGxlIGFjY2Vzcy4KKyAgICAgICAg
U2ltcGxlLAorICAgICAgICAvLyBJdCB3aWxsIGxpa2VseSB0YWtlIHRoZSBzbG93IHBhdGguCisg
ICAgICAgIExpa2VseVRha2VzU2xvd1BhdGgsCisgICAgICAgIC8vIEl0IGhhcyBiZWVuIHNlZW4g
dG8gdGFrZSB0aGUgc2xvdyBwYXRoLgorICAgICAgICBPYnNlcnZlZFRha2VzU2xvd1BhdGgsCisg
ICAgfTsKKworICAgIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzKCkKKyAgICAgICAgOiBtX3N0YXRl
KE5vSW5mb3JtYXRpb24pCisgICAgeworICAgIH0KKworICAgIGV4cGxpY2l0IENoZWNrUHJpdmF0
ZUJyYW5kU3RhdHVzKFN0YXRlIHN0YXRlKQorICAgICAgICA6IG1fc3RhdGUoc3RhdGUpCisgICAg
eworICAgICAgICBBU1NFUlQoc3RhdGUgIT0gU2ltcGxlKTsKKyAgICB9CisKKyAgICBzdGF0aWMg
Q2hlY2tQcml2YXRlQnJhbmRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqIGJhc2VsaW5lQmxv
Y2ssIElDU3RhdHVzTWFwJiBiYXNlbGluZU1hcCwgSUNTdGF0dXNDb250ZXh0U3RhY2smIGRmZ0Nv
bnRleHRTdGFjaywgQ29kZU9yaWdpbik7CisKKyAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGU7IH0KKworICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRl
ICE9IE5vSW5mb3JtYXRpb247IH0KKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJu
ICFpc1NldCgpOyB9CisgICAgYm9vbCBvYnNlcnZlZFNsb3dQYXRoKCkgY29uc3QgeyByZXR1cm4g
bV9zdGF0ZSA9PSBPYnNlcnZlZFRha2VzU2xvd1BhdGg7IH0KKyAgICBib29sIGlzU2ltcGxlKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBTaW1wbGU7IH0KKyAgICBjb25zdCBWZWN0b3I8Q2hl
Y2tQcml2YXRlQnJhbmRWYXJpYW50LCAxPiYgdmFyaWFudHMoKSB7IHJldHVybiBtX3ZhcmlhbnRz
OyB9CisgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBzaW5nbGVJZGVudGlmaWVyKCkgY29uc3Q7CisK
KyAgICBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyBzbG93VmVyc2lvbigpIGNvbnN0OworCisgICAg
Ly8gQXR0ZW1wdHMgdG8gcmVkdWNlIHRoZSBzZXQgb2YgdmFyaWFudHMgdG8gZml0IHRoZSBnaXZl
biBzdHJ1Y3R1cmUgc2V0LiBUaGlzIG1heSBiZSBhcHByb3hpbWF0ZS4KKyAgICB2b2lkIGZpbHRl
cihjb25zdCBTdHJ1Y3R1cmVTZXQmKTsKKworICAgIHZvaWQgdmlzaXRBZ2dyZWdhdGUoU2xvdFZp
c2l0b3ImKTsKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7CisgICAgYm9vbCBm
aW5hbGl6ZShWTSYpOworCisgICAgYm9vbCBhcHBlbmRWYXJpYW50KGNvbnN0IENoZWNrUHJpdmF0
ZUJyYW5kVmFyaWFudCYpOworCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisK
K3ByaXZhdGU6CisgICAgZXhwbGljaXQgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMoU3R1YkluZm9T
dW1tYXJ5LCBTdHJ1Y3R1cmVTdHViSW5mbyYpOworICAgIHZvaWQgbWVyZ2UoY29uc3QgQ2hlY2tQ
cml2YXRlQnJhbmRTdGF0dXMmKTsKKworICAgIHN0YXRpYyBDaGVja1ByaXZhdGVCcmFuZFN0YXR1
cyBjb21wdXRlRm9yQmFzZWxpbmUoQ29kZUJsb2NrKiwgSUNTdGF0dXNNYXAmLCBCeXRlY29kZUlu
ZGV4LCBFeGl0RmxhZyk7CisjaWYgRU5BQkxFKEpJVCkKKyAgICBzdGF0aWMgQ2hlY2tQcml2YXRl
QnJhbmRTdGF0dXMgY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soCisg
ICAgICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayogcHJvZmlsZWRCbG9j
aywgU3RydWN0dXJlU3R1YkluZm8qKTsKKyNlbmRpZgorCisgICAgVmVjdG9yPENoZWNrUHJpdmF0
ZUJyYW5kVmFyaWFudCwgMT4gbV92YXJpYW50czsKKyAgICBTdGF0ZSBtX3N0YXRlOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZmZmNDQyMzFkNGJhCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudC5j
cHAKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuQS4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNoZWNrUHJpdmF0ZUJyYW5k
VmFyaWFudC5oIgorCisjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK0NoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudDo6Q2hlY2tQcml2YXRl
QnJhbmRWYXJpYW50KENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RydWN0
dXJlU2V0JiBzdHJ1Y3R1cmVTZXQpCisgICAgOiBtX3N0cnVjdHVyZVNldChzdHJ1Y3R1cmVTZXQp
CisgICAgLCBtX2lkZW50aWZpZXIoV1RGTW92ZShpZGVudGlmaWVyKSkKK3t9CisKK0NoZWNrUHJp
dmF0ZUJyYW5kVmFyaWFudDo6fkNoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudCgpIHsgfQorCitDaGVj
a1ByaXZhdGVCcmFuZFZhcmlhbnQ6OkNoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudChjb25zdCBDaGVj
a1ByaXZhdGVCcmFuZFZhcmlhbnQmIG90aGVyKQoreworICAgICp0aGlzID0gb3RoZXI7Cit9CisK
K2Jvb2wgQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50OjphdHRlbXB0VG9NZXJnZShjb25zdCBDaGVj
a1ByaXZhdGVCcmFuZFZhcmlhbnQmIG90aGVyKQoreworICAgIGlmICghIW1faWRlbnRpZmllciAh
PSAhIW90aGVyLm1faWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KG1faWRlbnRpZmllciAmJiAobV9pZGVudGlmaWVyICE9IG90aGVyLm1faWRlbnRpZmllcikpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fc3RydWN0dXJlU2V0Lm1lcmdlKG90aGVyLm1f
c3RydWN0dXJlU2V0KTsKKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIENoZWNrUHJpdmF0
ZUJyYW5kVmFyaWFudDo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAg
bV9zdHJ1Y3R1cmVTZXQubWFya0lmQ2hlYXAodmlzaXRvcik7Cit9CisKK2Jvb2wgQ2hlY2tQcml2
YXRlQnJhbmRWYXJpYW50OjpmaW5hbGl6ZShWTSYgdm0pCit7CisgICAgaWYgKCFtX3N0cnVjdHVy
ZVNldC5pc1N0aWxsQWxpdmUodm0pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK3ZvaWQgQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50Ojp2aXNpdEFnZ3JlZ2F0
ZShTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBtX2lkZW50aWZpZXIudmlzaXRBZ2dyZWdh
dGUodmlzaXRvcik7Cit9CisKK3ZvaWQgQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50OjpkdW1wKFBy
aW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgZHVtcEluQ29udGV4dChvdXQsIG51bGxwdHIp
OworfQorCit2b2lkIENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudDo6ZHVtcEluQ29udGV4dChQcmlu
dFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3QKK3sKKyAgICBvdXQucHJp
bnQoIjxpZD0nIiwgbV9pZGVudGlmaWVyLCAiJywgIiwgaW5Db250ZXh0KHN0cnVjdHVyZVNldCgp
LCBjb250ZXh0KSwgIj4iKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mZTRjNDZmZmVlZTUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hlY2tQ
cml2YXRlQnJhbmRWYXJpYW50LmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgSWdhbGlhIFMuQS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDYWNo
ZWFibGVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlU2V0LmgiCisjaW5jbHVkZSA8
d3RmL0JveC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQ2hlY2tQcml2YXRlQnJhbmRT
dGF0dXM7CisKK2NsYXNzIENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50KENh
Y2hlYWJsZUlkZW50aWZpZXIsIGNvbnN0IFN0cnVjdHVyZVNldCYgPSBTdHJ1Y3R1cmVTZXQoKSk7
CisKKyAgICB+Q2hlY2tQcml2YXRlQnJhbmRWYXJpYW50KCk7CisKKyAgICBDaGVja1ByaXZhdGVC
cmFuZFZhcmlhbnQoY29uc3QgQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50Jik7CisKKyAgICBjb25z
dCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJl
U2V0OyB9CisgICAgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQoKSB7IHJldHVybiBtX3N0cnVj
dHVyZVNldDsgfQorCisgICAgYm9vbCBhdHRlbXB0VG9NZXJnZShjb25zdCBDaGVja1ByaXZhdGVC
cmFuZFZhcmlhbnQmIG90aGVyKTsKKworICAgIHZvaWQgdmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0
b3ImKTsKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7CisgICAgYm9vbCBmaW5h
bGl6ZShWTSYpOworCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisgICAgdm9p
ZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBjb25zdDsKKworICAg
IENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRp
ZmllcjsgfQorCisgICAgYm9vbCBvdmVybGFwcyhjb25zdCBDaGVja1ByaXZhdGVCcmFuZFZhcmlh
bnQmIG90aGVyKQorICAgIHsKKyAgICAgICAgaWYgKCEhbV9pZGVudGlmaWVyICE9ICEhb3RoZXIu
bV9pZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChtX2lk
ZW50aWZpZXIpIHsKKyAgICAgICAgICAgIGlmIChtX2lkZW50aWZpZXIgIT0gb3RoZXIubV9pZGVu
dGlmaWVyKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gc3RydWN0dXJlU2V0KCkub3ZlcmxhcHMob3RoZXIuc3RydWN0dXJlU2V0KCkpOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgQ2hlY2tQcml2YXRlQnJhbmRTdGF0
dXM7CisKKyAgICBTdHJ1Y3R1cmVTZXQgbV9zdHJ1Y3R1cmVTZXQ7CisgICAgQ2FjaGVhYmxlSWRl
bnRpZmllciBtX2lkZW50aWZpZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggYWYyYWM0YzkxYmI3
Li5jNDIyYWM1ZWIyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCkBAIC01NDQsNiArNTQ0LDkgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAg
ICAgICAgTElOSyhPcFB1dEJ5VmFsRGlyZWN0KQogICAgICAgICBMSU5LKE9wUHV0UHJpdmF0ZU5h
bWUpCiAKKyAgICAgICAgTElOSyhPcFNldFByaXZhdGVCcmFuZCkKKyAgICAgICAgTElOSyhPcENo
ZWNrUHJpdmF0ZUJyYW5kKQorCiAgICAgICAgIExJTksoT3BOZXdBcnJheSkKICAgICAgICAgTElO
SyhPcE5ld0FycmF5V2l0aFNpemUpCiAgICAgICAgIExJTksoT3BOZXdBcnJheUJ1ZmZlciwgYXJy
YXlBbGxvY2F0aW9uUHJvZmlsZSkKQEAgLTEzMzgsNiArMTM0MSwzMCBAQCB2b2lkIENvZGVCbG9j
azo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygpCiAgICAgICAgICAgICBtZXRhZGF0YS5tX3By
b3BlcnR5LmNsZWFyKCk7CiAgICAgICAgIH0pOwogCisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVh
Y2g8T3BTZXRQcml2YXRlQnJhbmQ+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKKyAgICAgICAgICAg
IFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRDsK
KyAgICAgICAgICAgIFN0cnVjdHVyZUlEIG5ld1N0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9uZXdT
dHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIEpTQ2VsbCogYnJhbmQgPSBtZXRhZGF0YS5tX2JyYW5k
LmdldCgpOworICAgICAgICAgICAgaWYgKCghb2xkU3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01h
cmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpKSkKKyAg
ICAgICAgICAgICAgICAmJiAoIWJyYW5kIHx8IHZtLmhlYXAuaXNNYXJrZWQoYnJhbmQpKQorICAg
ICAgICAgICAgICAgICYmICghbmV3U3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5o
ZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobmV3U3RydWN0dXJlSUQpKSkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3Nl
T1NSKCksICJDbGVhcmluZyBMTEludCBzZXRfcHJpdmF0ZV9icmFuZCB0cmFuc2l0aW9uLiIpOwor
ICAgICAgICAgICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgICAgICBt
ZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEID0gMDsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fYnJh
bmQuY2xlYXIoKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxP
cENoZWNrUHJpdmF0ZUJyYW5kPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICBT
dHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fc3RydWN0dXJlSUQ7CisgICAgICAg
ICAgICBpZiAoIXN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1
cmVJRFRhYmxlKCkuZ2V0KHN0cnVjdHVyZUlEKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJDbGVhcmlu
ZyBMTEludCBzZXRfcHJpdmF0ZV9icmFuZCB0cmFuc2l0aW9uLiIpOworICAgICAgICAgICAgbWV0
YWRhdGEubV9zdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgIH0pOworCiAgICAgICAgIG1fbWV0YWRh
dGEtPmZvckVhY2g8T3BUb1RoaXM+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKICAgICAgICAgICAg
IGlmICghbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2VkKHZt
LmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlE
KSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAppbmRleCA0OWVkZDUyODVkNWMuLmNkNTlmYjRhNzMz
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJ
bmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZv
LmgKQEAgLTM2LDkgKzM2LDEwIEBAIGVudW0gY2xhc3MgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIgOiB1aW50OF90IHsgTm8sIFllcyB9OwogLy8gRklYTUU6IFRoZXNlIGZsYWdzLCBQYXJzZXJN
b2RlcyBhbmQgcHJvcGFnYXRpb24gdG8gWFhYQ29kZUJsb2NrcyBzaG91bGQgYmUgcmVvcmdhbml6
ZWQuCiAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ3CiBz
dHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgdXNlc0V2YWws
IGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JL
aW5kIGNvbnN0cnVjdG9yS2luZCwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIFN1cGVy
QmluZGluZyBzdXBlckJpbmRpbmcsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIERlcml2ZWRD
b250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
IG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQs
IGJvb2wgaXNDbGFzc0NvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUpCisg
ICAgRXhlY3V0YWJsZUluZm8oYm9vbCB1c2VzRXZhbCwgYm9vbCBpc0NvbnN0cnVjdG9yLCBQcml2
YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCwgYm9vbCBpc0J1aWx0
aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgSlNQYXJzZXJTY3Jp
cHRNb2RlIHNjcmlwdE1vZGUsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIFNvdXJjZVBhcnNl
TW9kZSBwYXJzZU1vZGUsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29s
IGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNDbGFzc0NvbnRleHQsIEV2YWxDb250ZXh0
VHlwZSBldmFsQ29udGV4dFR5cGUpCiAgICAgICAgIDogbV91c2VzRXZhbCh1c2VzRXZhbCkKICAg
ICAgICAgLCBtX2lzQ29uc3RydWN0b3IoaXNDb25zdHJ1Y3RvcikKKyAgICAgICAgLCBtX3ByaXZh
dGVCcmFuZFJlcXVpcmVtZW50KHN0YXRpY19jYXN0PHVuc2lnbmVkPihwcml2YXRlQnJhbmRSZXF1
aXJlbWVudCkpCiAgICAgICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlv
bikKICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29u
c3RydWN0b3JLaW5kKSkKICAgICAgICAgLCBtX3N1cGVyQmluZGluZyhzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oc3VwZXJCaW5kaW5nKSkKQEAgLTU3LDYgKzU4LDcgQEAgc3RydWN0IEV4ZWN1dGFibGVJ
bmZvIHsKIAogICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3VzZXNFdmFsOyB9
CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnN0cnVjdG9y
OyB9CisgICAgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxQcml2YXRlQnJhbmRSZXF1aXJlbWVudD4obV9w
cml2YXRlQnJhbmRSZXF1aXJlbWVudCk7IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogICAgIENvbnN0cnVjdG9yS2lu
ZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3Rv
cktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQogICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRp
bmcoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxTdXBlckJpbmRpbmc+KG1fc3VwZXJCaW5k
aW5nKTsgfQpAQCAtNzEsNiArNzMsNyBAQCBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewogcHJpdmF0
ZToKICAgICB1bnNpZ25lZCBtX3VzZXNFdmFsIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQ29uc3Ry
dWN0b3IgOiAxOworICAgIHVuc2lnbmVkIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgOiAxOwog
ICAgIHVuc2lnbmVkIG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOwogICAgIHVuc2lnbmVkIG1fY29u
c3RydWN0b3JLaW5kIDogMjsKICAgICB1bnNpZ25lZCBtX3N1cGVyQmluZGluZyA6IDE7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3Mu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNw
cAppbmRleCAxMjAyZjI3OTU1YjUuLmE4YjgyMDNlZTk5YiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCkBAIC00NjksNyAr
NDY5LDggQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5l
cmF0ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2MKICAgICBhbGxvY2F0b3IubG9jayhzdGF0
ZS5iYXNlR1BSKTsKICAgICBpZiAoc3RhdGUudS50aGlzR1BSICE9IEludmFsaWRHUFJSZWcpCiAg
ICAgICAgIGFsbG9jYXRvci5sb2NrKHN0YXRlLnUudGhpc0dQUik7Ci0gICAgYWxsb2NhdG9yLmxv
Y2soc3RhdGUudmFsdWVSZWdzKTsKKyAgICBpZiAoc3RhdGUudmFsdWVSZWdzKQorICAgICAgICBh
bGxvY2F0b3IubG9jayhzdGF0ZS52YWx1ZVJlZ3MpOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAg
ICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVRhZ0dQUik7CiAgICAgaWYgKHN0dWJJbmZv
LnYudGhpc1RhZ0dQUiAhPSBJbnZhbGlkR1BSUmVnKQpAQCAtODUyLDYgKzg1MywxMiBAQCB2b2lk
IHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgQWNjZXNzQ2FzZTo6QWNjZXNzVHlwZSB0
eXBlKQogICAgIGNhc2UgQWNjZXNzQ2FzZTo6SW5NaXNzOgogICAgICAgICBvdXQucHJpbnQoIklu
TWlzcyIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBBY2Nlc3NDYXNlOjpDaGVja1ByaXZh
dGVCcmFuZDoKKyAgICAgICAgb3V0LnByaW50KCJDaGVja1ByaXZhdGVCcmFuZCIpOworICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBBY2Nlc3NDYXNlOjpTZXRQcml2YXRlQnJhbmQ6CisgICAgICAg
IG91dC5wcmludCgiU2V0UHJpdmF0ZUJyYW5kIik7CisgICAgICAgIHJldHVybjsKICAgICBjYXNl
IEFjY2Vzc0Nhc2U6OkFycmF5TGVuZ3RoOgogICAgICAgICBvdXQucHJpbnQoIkFycmF5TGVuZ3Ro
Iik7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAppbmRleCBkNjE1YTEzZDljM2MuLjdmZjUwZTQ4NTc4
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3Rh
dHVzZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0
YXR1c2VzLmNwcApAQCAtMzUsNiArMzUsOCBAQCBSZWNvcmRlZFN0YXR1c2VzJiBSZWNvcmRlZFN0
YXR1c2VzOjpvcGVyYXRvcj0oUmVjb3JkZWRTdGF0dXNlcyYmIG90aGVyKQogICAgIHB1dHMgPSBX
VEZNb3ZlKG90aGVyLnB1dHMpOwogICAgIGlucyA9IFdURk1vdmUob3RoZXIuaW5zKTsKICAgICBk
ZWxldGVzID0gV1RGTW92ZShvdGhlci5kZWxldGVzKTsKKyAgICBjaGVja1ByaXZhdGVCcmFuZHMg
PSBXVEZNb3ZlKG90aGVyLmNoZWNrUHJpdmF0ZUJyYW5kcyk7CisgICAgc2V0UHJpdmF0ZUJyYW5k
cyA9IFdURk1vdmUob3RoZXIuc2V0UHJpdmF0ZUJyYW5kcyk7CiAgICAgc2hyaW5rVG9GaXQoKTsK
ICAgICByZXR1cm4gKnRoaXM7CiB9CkBAIC04NCwxMiArODYsMzIgQEAgRGVsZXRlQnlTdGF0dXMq
IFJlY29yZGVkU3RhdHVzZXM6OmFkZERlbGV0ZUJ5U3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNv
ZGVPcmlnaW4KICAgICByZXR1cm4gcmVzdWx0OwogfQogCitDaGVja1ByaXZhdGVCcmFuZFN0YXR1
cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMoY29uc3QgQ29k
ZU9yaWdpbiYgY29kZU9yaWdpbiwgY29uc3QgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMmIHN0YXR1
cykKK3sKKyAgICBhdXRvIHN0YXR1c1B0ciA9IG1ha2VVbmlxdWU8Q2hlY2tQcml2YXRlQnJhbmRT
dGF0dXM+KHN0YXR1cyk7CisgICAgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMqIHJlc3VsdCA9IHN0
YXR1c1B0ci5nZXQoKTsKKyAgICBjaGVja1ByaXZhdGVCcmFuZHMuYXBwZW5kKHN0ZDo6bWFrZV9w
YWlyKGNvZGVPcmlnaW4sIFdURk1vdmUoc3RhdHVzUHRyKSkpOworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKK1NldFByaXZhdGVCcmFuZFN0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkU2V0UHJp
dmF0ZUJyYW5kU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIGNvbnN0IFNldFBy
aXZhdGVCcmFuZFN0YXR1cyYgc3RhdHVzKQoreworICAgIGF1dG8gc3RhdHVzUHRyID0gbWFrZVVu
aXF1ZTxTZXRQcml2YXRlQnJhbmRTdGF0dXM+KHN0YXR1cyk7CisgICAgU2V0UHJpdmF0ZUJyYW5k
U3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQdHIuZ2V0KCk7CisgICAgc2V0UHJpdmF0ZUJyYW5kcy5h
cHBlbmQoc3RkOjptYWtlX3BhaXIoY29kZU9yaWdpbiwgV1RGTW92ZShzdGF0dXNQdHIpKSk7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKwogdm9pZCBSZWNvcmRlZFN0YXR1c2VzOjp2aXNpdEFnZ3Jl
Z2F0ZShTbG90VmlzaXRvciYgc2xvdFZpc2l0b3IpCiB7CiAgICAgZm9yIChhdXRvJiBwYWlyIDog
Z2V0cykKICAgICAgICAgcGFpci5zZWNvbmQtPnZpc2l0QWdncmVnYXRlKHNsb3RWaXNpdG9yKTsK
ICAgICBmb3IgKGF1dG8mIHBhaXIgOiBkZWxldGVzKQogICAgICAgICBwYWlyLnNlY29uZC0+dmlz
aXRBZ2dyZWdhdGUoc2xvdFZpc2l0b3IpOworICAgIGZvciAoYXV0byYgcGFpciA6IGNoZWNrUHJp
dmF0ZUJyYW5kcykKKyAgICAgICAgcGFpci5zZWNvbmQtPnZpc2l0QWdncmVnYXRlKHNsb3RWaXNp
dG9yKTsKKyAgICBmb3IgKGF1dG8mIHBhaXIgOiBzZXRQcml2YXRlQnJhbmRzKQorICAgICAgICBw
YWlyLnNlY29uZC0+dmlzaXRBZ2dyZWdhdGUoc2xvdFZpc2l0b3IpOwogfQogCiB2b2lkIFJlY29y
ZGVkU3RhdHVzZXM6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiBzbG90VmlzaXRvcikKQEAgLTEw
Miw2ICsxMjQsMTAgQEAgdm9pZCBSZWNvcmRlZFN0YXR1c2VzOjptYXJrSWZDaGVhcChTbG90Vmlz
aXRvciYgc2xvdFZpc2l0b3IpCiAgICAgICAgIHBhaXIuc2Vjb25kLT5tYXJrSWZDaGVhcChzbG90
VmlzaXRvcik7CiAgICAgZm9yIChhdXRvJiBwYWlyIDogZGVsZXRlcykKICAgICAgICAgcGFpci5z
ZWNvbmQtPm1hcmtJZkNoZWFwKHNsb3RWaXNpdG9yKTsKKyAgICBmb3IgKGF1dG8mIHBhaXIgOiBj
aGVja1ByaXZhdGVCcmFuZHMpCisgICAgICAgIHBhaXIuc2Vjb25kLT5tYXJrSWZDaGVhcChzbG90
VmlzaXRvcik7CisgICAgZm9yIChhdXRvJiBwYWlyIDogc2V0UHJpdmF0ZUJyYW5kcykKKyAgICAg
ICAgcGFpci5zZWNvbmQtPm1hcmtJZkNoZWFwKHNsb3RWaXNpdG9yKTsKIH0KIAogdm9pZCBSZWNv
cmRlZFN0YXR1c2VzOjpmaW5hbGl6ZVdpdGhvdXREZWxldGluZyhWTSYgdm0pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuaAppbmRleCA5ZTcw
NTVkMjQzZjIuLmU4NDNiNjY4MDFlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5oCkBAIC0yNiwxMCArMjYsMTIgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiQ2FsbExpbmtTdGF0dXMuaCIKKyNpbmNsdWRlICJDaGVja1ByaXZh
dGVCcmFuZFN0YXR1cy5oIgogI2luY2x1ZGUgIkRlbGV0ZUJ5U3RhdHVzLmgiCiAjaW5jbHVkZSAi
R2V0QnlTdGF0dXMuaCIKICNpbmNsdWRlICJJbkJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJQdXRC
eUlkU3RhdHVzLmgiCisjaW5jbHVkZSAiU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmgiCiAKIG5hbWVz
cGFjZSBKU0MgewogCkBAIC00OSw2ICs1MSw4IEBAIHN0cnVjdCBSZWNvcmRlZFN0YXR1c2VzIHsK
ICAgICBQdXRCeUlkU3RhdHVzKiBhZGRQdXRCeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mLCBj
b25zdCBQdXRCeUlkU3RhdHVzJik7CiAgICAgSW5CeUlkU3RhdHVzKiBhZGRJbkJ5SWRTdGF0dXMo
Y29uc3QgQ29kZU9yaWdpbiYsIGNvbnN0IEluQnlJZFN0YXR1cyYpOwogICAgIERlbGV0ZUJ5U3Rh
dHVzKiBhZGREZWxldGVCeVN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiwgY29uc3QgRGVsZXRlQnlT
dGF0dXMmKTsKKyAgICBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyogYWRkQ2hlY2tQcml2YXRlQnJh
bmRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYsIGNvbnN0IENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVz
Jik7CisgICAgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzKiBhZGRTZXRQcml2YXRlQnJhbmRTdGF0dXMo
Y29uc3QgQ29kZU9yaWdpbiYsIGNvbnN0IFNldFByaXZhdGVCcmFuZFN0YXR1cyYpOwogICAgIAog
ICAgIHZvaWQgdmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImKTsKICAgICB2b2lkIG1hcmtJZkNo
ZWFwKFNsb3RWaXNpdG9yJik7CkBAIC02Niw2ICs3MCw4IEBAIHN0cnVjdCBSZWNvcmRlZFN0YXR1
c2VzIHsKICAgICAgICAgZnVuYyhwdXRzKTsKICAgICAgICAgZnVuYyhpbnMpOwogICAgICAgICBm
dW5jKGRlbGV0ZXMpOworICAgICAgICBmdW5jKGNoZWNrUHJpdmF0ZUJyYW5kcyk7CisgICAgICAg
IGZ1bmMoc2V0UHJpdmF0ZUJyYW5kcyk7CiAgICAgfQogICAgIAogICAgIFZlY3RvcjxzdGQ6OnBh
aXI8Q29kZU9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPENhbGxMaW5rU3RhdHVzPj4+IGNhbGxzOwpA
QCAtNzMsNiArNzksOCBAQCBzdHJ1Y3QgUmVjb3JkZWRTdGF0dXNlcyB7CiAgICAgVmVjdG9yPHN0
ZDo6cGFpcjxDb2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8UHV0QnlJZFN0YXR1cz4+PiBwdXRz
OwogICAgIFZlY3RvcjxzdGQ6OnBhaXI8Q29kZU9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPEluQnlJ
ZFN0YXR1cz4+PiBpbnM7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3JpZ2luLCBzdGQ6OnVu
aXF1ZV9wdHI8RGVsZXRlQnlTdGF0dXM+Pj4gZGVsZXRlczsKKyAgICBWZWN0b3I8c3RkOjpwYWly
PENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxDaGVja1ByaXZhdGVCcmFuZFN0YXR1cz4+PiBj
aGVja1ByaXZhdGVCcmFuZHM7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3JpZ2luLCBzdGQ6
OnVuaXF1ZV9wdHI8U2V0UHJpdmF0ZUJyYW5kU3RhdHVzPj4+IHNldFByaXZhdGVCcmFuZHM7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TZXRQcml2YXRlQnJhbmRTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1NldFByaXZhdGVCcmFuZFN0YXR1cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43NWNjNzRjMmM0YzgKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmNwcApA
QCAtMCwwICsxLDI3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuQS4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNldFByaXZhdGVCcmFuZFN0YXR1
cy5oIgorCisjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaCIKKyNpbmNsdWRl
ICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJJQ1N0YXR1c1V0aWxzLmgiCisjaW5jbHVkZSAiUG9s
eW1vcnBoaWNBY2Nlc3MuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgorI2luY2x1
ZGUgPHd0Zi9MaXN0RHVtcC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworYm9vbCBTZXRQcml2YXRl
QnJhbmRTdGF0dXM6OmFwcGVuZFZhcmlhbnQoY29uc3QgU2V0UHJpdmF0ZUJyYW5kVmFyaWFudCYg
dmFyaWFudCkKK3sKKyAgICByZXR1cm4gYXBwZW5kSUNTdGF0dXNWYXJpYW50KG1fdmFyaWFudHMs
IHZhcmlhbnQpOworfQorCitTZXRQcml2YXRlQnJhbmRTdGF0dXMgU2V0UHJpdmF0ZUJyYW5kU3Rh
dHVzOjpjb21wdXRlRm9yQmFzZWxpbmUoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJQ1N0YXR1
c01hcCYgbWFwLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIEV4aXRGbGFnIGRpZEV4aXQp
Cit7CisgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihiYXNlbGluZUJsb2NrLT5tX2xvY2sp
OworCisgICAgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzIHJlc3VsdDsKKworI2lmIEVOQUJMRShERkdf
SklUKQorICAgIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRi
YWNrKAorICAgICAgICBsb2NrZXIsIGJhc2VsaW5lQmxvY2ssIG1hcC5nZXQoQ29kZU9yaWdpbihi
eXRlY29kZUluZGV4KSkuc3R1YkluZm8pOworCisgICAgaWYgKGRpZEV4aXQpCisgICAgICAgIHJl
dHVybiByZXN1bHQuc2xvd1ZlcnNpb24oKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG1hcCk7
CisgICAgVU5VU0VEX1BBUkFNKGRpZEV4aXQpOworICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUlu
ZGV4KTsKKyNlbmRpZgorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworI2lmIEVOQUJMRShKSVQp
CitTZXRQcml2YXRlQnJhbmRTdGF0dXM6OlNldFByaXZhdGVCcmFuZFN0YXR1cyhTdHViSW5mb1N1
bW1hcnkgc3VtbWFyeSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQoreworICAgIHN3aXRj
aCAoc3VtbWFyeSkgeworICAgIGNhc2UgU3R1YkluZm9TdW1tYXJ5OjpOb0luZm9ybWF0aW9uOgor
ICAgICAgICBtX3N0YXRlID0gTm9JbmZvcm1hdGlvbjsKKyAgICAgICAgcmV0dXJuOworICAgIGNh
c2UgU3R1YkluZm9TdW1tYXJ5OjpTaW1wbGU6CisgICAgY2FzZSBTdHViSW5mb1N1bW1hcnk6Ok1h
a2VzQ2FsbHM6CisgICAgY2FzZSBTdHViSW5mb1N1bW1hcnk6OlRha2VzU2xvd1BhdGhBbmRNYWtl
c0NhbGxzOgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm47CisgICAgY2FzZSBTdHViSW5mb1N1bW1hcnk6OlRha2VzU2xvd1BhdGg6CisgICAgICAg
IG1fc3RhdGUgPSBzdHViSW5mby50b29rU2xvd1BhdGggPyBPYnNlcnZlZFRha2VzU2xvd1BhdGgg
OiBMaWtlbHlUYWtlc1Nsb3dQYXRoOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK1NldFByaXZhdGVCcmFuZFN0YXR1cyBTZXRQ
cml2YXRlQnJhbmRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRi
YWNrKAorICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayogYmxvY2ssIFN0
cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbykKK3sKKyAgICBTdHViSW5mb1N1bW1hcnkgc3VtbWFy
eSA9IFN0cnVjdHVyZVN0dWJJbmZvOjpzdW1tYXJ5KGJsb2NrLT52bSgpLCBzdHViSW5mbyk7Cisg
ICAgaWYgKCFpc0lubGluZWFibGUoc3VtbWFyeSkpCisgICAgICAgIHJldHVybiBTZXRQcml2YXRl
QnJhbmRTdGF0dXMoc3VtbWFyeSwgKnN0dWJJbmZvKTsKKworICAgIFNldFByaXZhdGVCcmFuZFN0
YXR1cyByZXN1bHQ7CisgICAgcmVzdWx0Lm1fc3RhdGUgPSBTaW1wbGU7CisgICAgc3dpdGNoIChz
dHViSW5mby0+Y2FjaGVUeXBlKCkpIHsKKyAgICBjYXNlIENhY2hlVHlwZTo6VW5zZXQ6CisgICAg
ICAgIHJldHVybiBTZXRQcml2YXRlQnJhbmRTdGF0dXMoTm9JbmZvcm1hdGlvbik7CisKKyAgICBj
YXNlIENhY2hlVHlwZTo6U3R1YjogeworICAgICAgICBQb2x5bW9ycGhpY0FjY2VzcyogbGlzdCA9
IHN0dWJJbmZvLT51LnN0dWI7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBsaXN0SW5kZXggPSAw
OyBsaXN0SW5kZXggPCBsaXN0LT5zaXplKCk7ICsrbGlzdEluZGV4KSB7CisgICAgICAgICAgICBj
b25zdCBBY2Nlc3NDYXNlJiBhY2Nlc3MgPSBsaXN0LT5hdChsaXN0SW5kZXgpOworCisgICAgICAg
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGFjY2Vzcy5zdHJ1Y3R1cmUoKTsKKyAgICAgICAg
ICAgIEFTU0VSVChzdHJ1Y3R1cmUpOworICAgICAgICAgICAgQVNTRVJUKGFjY2Vzcy50eXBlKCkg
PT0gQWNjZXNzQ2FzZTo6U2V0UHJpdmF0ZUJyYW5kKTsKKworICAgICAgICAgICAgU3RydWN0dXJl
KiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OnNldEJyYW5kVHJhbnNpdGlvbkZyb21FeGlzdGlu
Z1N0cnVjdHVyZUNvbmN1cnJlbnRseShzdHJ1Y3R1cmUsIGFjY2Vzcy5pZGVudGlmaWVyKCkudWlk
KCkpOworICAgICAgICAgICAgU2V0UHJpdmF0ZUJyYW5kVmFyaWFudCB2YXJpYW50KGFjY2Vzcy5p
ZGVudGlmaWVyKCksIHN0cnVjdHVyZSwgbmV3U3RydWN0dXJlKTsKKyAgICAgICAgICAgIGlmICgh
cmVzdWx0LmFwcGVuZFZhcmlhbnQodmFyaWFudCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFNl
dFByaXZhdGVCcmFuZFN0YXR1cyhKU0M6OnNsb3dWZXJzaW9uKHN1bW1hcnkpLCAqc3R1YkluZm8p
OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBkZWZh
dWx0OgorICAgICAgICByZXR1cm4gU2V0UHJpdmF0ZUJyYW5kU3RhdHVzKEpTQzo6c2xvd1ZlcnNp
b24oc3VtbWFyeSksICpzdHViSW5mbyk7CisgICAgfQorCisgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gU2V0UHJpdmF0ZUJyYW5kU3RhdHVzKCk7Cit9CisKK1Nl
dFByaXZhdGVCcmFuZFN0YXR1cyBTZXRQcml2YXRlQnJhbmRTdGF0dXM6OmNvbXB1dGVGb3IoCisg
ICAgQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJQ1N0YXR1c01hcCYgYmFzZWxpbmVNYXAsCisg
ICAgSUNTdGF0dXNDb250ZXh0U3RhY2smIGNvbnRleHRTdGFjaywgQ29kZU9yaWdpbiBjb2RlT3Jp
Z2luKQoreworICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IGNvZGVPcmlnaW4uYnl0
ZWNvZGVJbmRleCgpOworICAgIEV4aXRGbGFnIGRpZEV4aXQgPSBoYXNCYWRDYWNoZUV4aXRTaXRl
KGJhc2VsaW5lQmxvY2ssIGJ5dGVjb2RlSW5kZXgpOworCisgICAgZm9yIChJQ1N0YXR1c0NvbnRl
eHQqIGNvbnRleHQgOiBjb250ZXh0U3RhY2spIHsKKyAgICAgICAgSUNTdGF0dXMgc3RhdHVzID0g
Y29udGV4dC0+Z2V0KGNvZGVPcmlnaW4pOworCisgICAgICAgIGF1dG8gYmxlc3MgPSBbJl0gKGNv
bnN0IFNldFByaXZhdGVCcmFuZFN0YXR1cyYgcmVzdWx0KSAtPiBTZXRQcml2YXRlQnJhbmRTdGF0
dXMgeworICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5pc0lubGluZWQoY29kZU9yaWdpbikpIHsK
KyAgICAgICAgICAgICAgICBTZXRQcml2YXRlQnJhbmRTdGF0dXMgYmFzZWxpbmVSZXN1bHQgPSBj
b21wdXRlRm9yQmFzZWxpbmUoCisgICAgICAgICAgICAgICAgICAgIGJhc2VsaW5lQmxvY2ssIGJh
c2VsaW5lTWFwLCBieXRlY29kZUluZGV4LCBkaWRFeGl0KTsKKyAgICAgICAgICAgICAgICBiYXNl
bGluZVJlc3VsdC5tZXJnZShyZXN1bHQpOworICAgICAgICAgICAgICAgIHJldHVybiBiYXNlbGlu
ZVJlc3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChkaWRFeGl0LmlzU2V0KEV4
aXRGcm9tSW5saW5lZCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5zbG93VmVyc2lv
bigpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfTsKKworICAgICAgICBp
ZiAoc3RhdHVzLnN0dWJJbmZvKSB7CisgICAgICAgICAgICBTZXRQcml2YXRlQnJhbmRTdGF0dXMg
cmVzdWx0OworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tl
ciBsb2NrZXIoY29udGV4dC0+b3B0aW1pemVkQ29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNr
KAorICAgICAgICAgICAgICAgICAgICBsb2NrZXIsIGNvbnRleHQtPm9wdGltaXplZENvZGVCbG9j
aywgc3RhdHVzLnN0dWJJbmZvKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChyZXN1
bHQuaXNTZXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gYmxlc3MocmVzdWx0KTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHJldHVybiBjb21wdXRlRm9yQmFzZWxpbmUoYmFzZWxpbmVCbG9j
aywgYmFzZWxpbmVNYXAsIGJ5dGVjb2RlSW5kZXgsIGRpZEV4aXQpOworfQorCisjZW5kaWYgLy8g
RU5BQkxFKEpJVCkKKworU2V0UHJpdmF0ZUJyYW5kU3RhdHVzIFNldFByaXZhdGVCcmFuZFN0YXR1
czo6c2xvd1ZlcnNpb24oKSBjb25zdAoreworICAgIGlmIChvYnNlcnZlZFNsb3dQYXRoKCkpCisg
ICAgICAgIHJldHVybiBTZXRQcml2YXRlQnJhbmRTdGF0dXMoT2JzZXJ2ZWRUYWtlc1Nsb3dQYXRo
KTsKKyAgICByZXR1cm4gU2V0UHJpdmF0ZUJyYW5kU3RhdHVzKExpa2VseVRha2VzU2xvd1BhdGgp
OworfQorCit2b2lkIFNldFByaXZhdGVCcmFuZFN0YXR1czo6bWVyZ2UoY29uc3QgU2V0UHJpdmF0
ZUJyYW5kU3RhdHVzJiBvdGhlcikKK3sKKyAgICBpZiAob3RoZXIubV9zdGF0ZSA9PSBOb0luZm9y
bWF0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIG1lcmdlU2xvdyA9IFsmXSAoKSB7
CisgICAgICAgIGlmIChvYnNlcnZlZFNsb3dQYXRoKCkgfHwgb3RoZXIub2JzZXJ2ZWRTbG93UGF0
aCgpKQorICAgICAgICAgICAgKnRoaXMgPSBTZXRQcml2YXRlQnJhbmRTdGF0dXMoT2JzZXJ2ZWRU
YWtlc1Nsb3dQYXRoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKnRoaXMgPSBTZXRQcml2
YXRlQnJhbmRTdGF0dXMoTGlrZWx5VGFrZXNTbG93UGF0aCk7CisgICAgfTsKKworICAgIHN3aXRj
aCAobV9zdGF0ZSkgeworICAgIGNhc2UgTm9JbmZvcm1hdGlvbjoKKyAgICAgICAgKnRoaXMgPSBv
dGhlcjsKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBTaW1wbGU6CisgICAgICAgIGlmICht
X3N0YXRlICE9IG90aGVyLm1fc3RhdGUpCisgICAgICAgICAgICByZXR1cm4gbWVyZ2VTbG93KCk7
CisKKyAgICAgICAgZm9yIChhdXRvJiBvdGhlclZhcmlhbnQgOiBvdGhlci5tX3ZhcmlhbnRzKSB7
CisgICAgICAgICAgICBpZiAoIWFwcGVuZFZhcmlhbnQob3RoZXJWYXJpYW50KSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gbWVyZ2VTbG93KCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOwor
CisgICAgY2FzZSBMaWtlbHlUYWtlc1Nsb3dQYXRoOgorICAgIGNhc2UgT2JzZXJ2ZWRUYWtlc1Ns
b3dQYXRoOgorICAgICAgICByZXR1cm4gbWVyZ2VTbG93KCk7CisgICAgfQorCisgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBTZXRQcml2YXRlQnJhbmRTdGF0dXM6
OmZpbHRlcihjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCkKK3sKKyAgICBpZiAobV9z
dGF0ZSAhPSBTaW1wbGUpCisgICAgICAgIHJldHVybjsKKyAgICBtX3ZhcmlhbnRzLnJlbW92ZUFs
bE1hdGNoaW5nKAorICAgICAgICBbJl0gKGF1dG8mIHZhcmlhbnQpIC0+IGJvb2wgeworICAgICAg
ICAgICAgcmV0dXJuICFzdHJ1Y3R1cmVTZXQuY29udGFpbnModmFyaWFudC5vbGRTdHJ1Y3R1cmUo
KSk7CisgICAgICAgIH0pOworICAgIGlmIChtX3ZhcmlhbnRzLmlzRW1wdHkoKSkKKyAgICAgICAg
bV9zdGF0ZSA9IE5vSW5mb3JtYXRpb247Cit9CisKK0NhY2hlYWJsZUlkZW50aWZpZXIgU2V0UHJp
dmF0ZUJyYW5kU3RhdHVzOjpzaW5nbGVJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICBpZiAobV92
YXJpYW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgQ2FjaGVh
YmxlSWRlbnRpZmllciByZXN1bHQgPSBtX3ZhcmlhbnRzLmZpcnN0KCkuaWRlbnRpZmllcigpOwor
ICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBmb3IgKHNpemVf
dCBpID0gMTsgaSA8IG1fdmFyaWFudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgQ2FjaGVhYmxl
SWRlbnRpZmllciBpZGVudGlmaWVyID0gbV92YXJpYW50c1tpXS5pZGVudGlmaWVyKCk7CisgICAg
ICAgIGlmICghaWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICBpZiAoaWRlbnRpZmllciAhPSByZXN1bHQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBTZXRQcml2YXRlQnJhbmRTdGF0
dXM6OnZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGZvciAoU2V0
UHJpdmF0ZUJyYW5kVmFyaWFudCYgdmFyaWFudCA6IG1fdmFyaWFudHMpCisgICAgICAgIHZhcmlh
bnQudmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7Cit9CisKK3ZvaWQgU2V0UHJpdmF0ZUJyYW5kU3Rh
dHVzOjptYXJrSWZDaGVhcChTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBmb3IgKFNldFBy
aXZhdGVCcmFuZFZhcmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKQorICAgICAgICB2YXJpYW50
Lm1hcmtJZkNoZWFwKHZpc2l0b3IpOworfQorCitib29sIFNldFByaXZhdGVCcmFuZFN0YXR1czo6
ZmluYWxpemUoVk0mIHZtKQoreworICAgIGZvciAoYXV0byYgdmFyaWFudCA6IG1fdmFyaWFudHMp
IHsKKyAgICAgICAgaWYgKCF2YXJpYW50LmZpbmFsaXplKHZtKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgU2V0UHJpdmF0ZUJy
YW5kU3RhdHVzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50
KCIoIik7CisgICAgc3dpdGNoIChtX3N0YXRlKSB7CisgICAgY2FzZSBOb0luZm9ybWF0aW9uOgor
ICAgICAgICBvdXQucHJpbnQoIk5vSW5mb3JtYXRpb24iKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBTaW1wbGU6CisgICAgICAgIG91dC5wcmludCgiU2ltcGxlIik7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgTGlrZWx5VGFrZXNTbG93UGF0aDoKKyAgICAgICAgb3V0LnByaW50KCJMaWtl
bHlUYWtlc1Nsb3dQYXRoIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgT2JzZXJ2ZWRUYWtl
c1Nsb3dQYXRoOgorICAgICAgICBvdXQucHJpbnQoIk9ic2VydmVkVGFrZXNTbG93UGF0aCIpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgb3V0LnByaW50KCIsICIsIGxpc3REdW1wKG1fdmFy
aWFudHMpLCAiKSIpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TZXRQcml2YXRlQnJhbmRTdGF0dXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TZXRQcml2YXRlQnJhbmRTdGF0dXMuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjNiMjc1MzU2OWY3YQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TZXRQcml2YXRlQnJhbmRT
dGF0dXMuaApAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlh
IFMuQS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ2FjaGVhYmxlSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKKyNpbmNsdWRlICJDb25jdXJyZW50
SlNMb2NrLmgiCisjaW5jbHVkZSAiU2V0UHJpdmF0ZUJyYW5kVmFyaWFudC5oIgorI2luY2x1ZGUg
IkV4aXRGbGFnLmgiCisjaW5jbHVkZSAiSUNTdGF0dXNNYXAuaCIKKyNpbmNsdWRlICJTdHViSW5m
b1N1bW1hcnkuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEFjY2Vzc0Nhc2U7CitjbGFz
cyBDb2RlQmxvY2s7CitjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbzsKKworY2xhc3MgU2V0UHJpdmF0
ZUJyYW5kU3RhdHVzIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1Ymxp
YzoKKyAgICBlbnVtIFN0YXRlIDogdWludDhfdCB7CisgICAgICAgIC8vIEl0J3MgdW5jYWNoZWQg
c28gd2UgaGF2ZSBubyBpbmZvcm1hdGlvbi4KKyAgICAgICAgTm9JbmZvcm1hdGlvbiwKKyAgICAg
ICAgLy8gSXQncyBjYWNoZWQgZm9yIGEgc2ltcGxlIGFjY2Vzcy4KKyAgICAgICAgU2ltcGxlLAor
ICAgICAgICAvLyBJdCB3aWxsIGxpa2VseSB0YWtlIHRoZSBzbG93IHBhdGguCisgICAgICAgIExp
a2VseVRha2VzU2xvd1BhdGgsCisgICAgICAgIC8vIEl0IGhhcyBiZWVuIHNlZW4gdG8gdGFrZSB0
aGUgc2xvdyBwYXRoLgorICAgICAgICBPYnNlcnZlZFRha2VzU2xvd1BhdGgsCisgICAgfTsKKwor
ICAgIFNldFByaXZhdGVCcmFuZFN0YXR1cygpCisgICAgICAgIDogbV9zdGF0ZShOb0luZm9ybWF0
aW9uKQorICAgIHsKKyAgICB9CisKKyAgICBleHBsaWNpdCBTZXRQcml2YXRlQnJhbmRTdGF0dXMo
U3RhdGUgc3RhdGUpCisgICAgICAgIDogbV9zdGF0ZShzdGF0ZSkKKyAgICB7CisgICAgICAgIEFT
U0VSVChzdGF0ZSAhPSBTaW1wbGUpOworICAgIH0KKworICAgIHN0YXRpYyBTZXRQcml2YXRlQnJh
bmRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIElDU3RhdHVzTWFw
JiBiYXNlbGluZU1hcCwgSUNTdGF0dXNDb250ZXh0U3RhY2smIGRmZ0NvbnRleHRTdGFjaywgQ29k
ZU9yaWdpbik7CisKKyAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0K
KworICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlICE9IE5vSW5mb3JtYXRp
b247IH0KKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFpc1NldCgpOyB9Cisg
ICAgYm9vbCBvYnNlcnZlZFNsb3dQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBPYnNl
cnZlZFRha2VzU2xvd1BhdGg7IH0KKyAgICBib29sIGlzU2ltcGxlKCkgY29uc3QgeyByZXR1cm4g
bV9zdGF0ZSA9PSBTaW1wbGU7IH0KKyAgICBjb25zdCBWZWN0b3I8U2V0UHJpdmF0ZUJyYW5kVmFy
aWFudCwgMT4mIHZhcmlhbnRzKCkgeyByZXR1cm4gbV92YXJpYW50czsgfQorICAgIENhY2hlYWJs
ZUlkZW50aWZpZXIgc2luZ2xlSWRlbnRpZmllcigpIGNvbnN0OworCisgICAgU2V0UHJpdmF0ZUJy
YW5kU3RhdHVzIHNsb3dWZXJzaW9uKCkgY29uc3Q7CisKKyAgICAvLyBBdHRlbXB0cyB0byByZWR1
Y2UgdGhlIHNldCBvZiB2YXJpYW50cyB0byBmaXQgdGhlIGdpdmVuIHN0cnVjdHVyZSBzZXQuIFRo
aXMgbWF5IGJlIGFwcHJveGltYXRlLgorICAgIHZvaWQgZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNl
dCYpOworCisgICAgdm9pZCB2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYpOworICAgIHZvaWQg
bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKTsKKyAgICBib29sIGZpbmFsaXplKFZNJik7CisKKyAg
ICBib29sIGFwcGVuZFZhcmlhbnQoY29uc3QgU2V0UHJpdmF0ZUJyYW5kVmFyaWFudCYpOworCisg
ICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgZXhwbGlj
aXQgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzKFN0dWJJbmZvU3VtbWFyeSwgU3RydWN0dXJlU3R1Yklu
Zm8mKTsKKyAgICB2b2lkIG1lcmdlKGNvbnN0IFNldFByaXZhdGVCcmFuZFN0YXR1cyYpOworCisg
ICAgc3RhdGljIFNldFByaXZhdGVCcmFuZFN0YXR1cyBjb21wdXRlRm9yQmFzZWxpbmUoQ29kZUJs
b2NrKiwgSUNTdGF0dXNNYXAmLCBCeXRlY29kZUluZGV4LCBFeGl0RmxhZyk7CisjaWYgRU5BQkxF
KEpJVCkKKyAgICBzdGF0aWMgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzIGNvbXB1dGVGb3JTdHViSW5m
b1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKAorICAgICAgICBjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImLCBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKik7CisjZW5k
aWYKKworICAgIFZlY3RvcjxTZXRQcml2YXRlQnJhbmRWYXJpYW50LCAxPiBtX3ZhcmlhbnRzOwor
ICAgIFN0YXRlIG1fc3RhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TZXRQcml2YXRlQnJhbmRWYXJpYW50LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TZXRQcml2YXRlQnJhbmRWYXJpYW50
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjk1YWExY2UyM2Zh
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TZXRQ
cml2YXRlQnJhbmRWYXJpYW50LmNwcApAQCAtMCwwICsxLDEwMCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgSWdhbGlhIFMuQS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkNoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudC5oIgorCisjaW5jbHVkZSAiQ2FjaGVhYmxlSWRl
bnRpZmllcklubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1NldFByaXZhdGVCcmFuZFZh
cmlhbnQ6OlNldFByaXZhdGVCcmFuZFZhcmlhbnQoQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlm
aWVyLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpCisg
ICAgOiBtX29sZFN0cnVjdHVyZShvbGRTdHJ1Y3R1cmUpCisgICAgLCBtX25ld1N0cnVjdHVyZShu
ZXdTdHJ1Y3R1cmUpCisgICAgLCBtX2lkZW50aWZpZXIoV1RGTW92ZShpZGVudGlmaWVyKSkKK3t9
CisKK1NldFByaXZhdGVCcmFuZFZhcmlhbnQ6On5TZXRQcml2YXRlQnJhbmRWYXJpYW50KCkgeyB9
CisKK1NldFByaXZhdGVCcmFuZFZhcmlhbnQ6OlNldFByaXZhdGVCcmFuZFZhcmlhbnQoY29uc3Qg
U2V0UHJpdmF0ZUJyYW5kVmFyaWFudCYgb3RoZXIpCit7CisgICAgKnRoaXMgPSBvdGhlcjsKK30K
KworYm9vbCBTZXRQcml2YXRlQnJhbmRWYXJpYW50OjphdHRlbXB0VG9NZXJnZShjb25zdCBTZXRQ
cml2YXRlQnJhbmRWYXJpYW50JiBvdGhlcikKK3sKKyAgICBpZiAoISFtX2lkZW50aWZpZXIgIT0g
ISFvdGhlci5tX2lkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICht
X2lkZW50aWZpZXIgJiYgKG1faWRlbnRpZmllciAhPSBvdGhlci5tX2lkZW50aWZpZXIpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9vbGRTdHJ1Y3R1cmUgIT0gb3RoZXIubV9v
bGRTdHJ1Y3R1cmUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlQobV9uZXdTdHJ1
Y3R1cmUgPT0gb3RoZXIubV9uZXdTdHJ1Y3R1cmUpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K3ZvaWQgU2V0UHJpdmF0ZUJyYW5kVmFyaWFudDo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCit7CisgICAgaWYgKG1fb2xkU3RydWN0dXJlKQorICAgICAgICBtX29sZFN0cnVjdHVy
ZS0+bWFya0lmQ2hlYXAodmlzaXRvcik7CisgICAgaWYgKG1fbmV3U3RydWN0dXJlKQorICAgICAg
ICBtX25ld1N0cnVjdHVyZS0+bWFya0lmQ2hlYXAodmlzaXRvcik7Cit9CisKK2Jvb2wgU2V0UHJp
dmF0ZUJyYW5kVmFyaWFudDo6ZmluYWxpemUoVk0mIHZtKQoreworICAgIGlmICghdm0uaGVhcC5p
c01hcmtlZChtX29sZFN0cnVjdHVyZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAo
bV9uZXdTdHJ1Y3R1cmUgJiYgIXZtLmhlYXAuaXNNYXJrZWQobV9uZXdTdHJ1Y3R1cmUpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgU2V0UHJpdmF0
ZUJyYW5kVmFyaWFudDo6dmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7Cisg
ICAgbV9pZGVudGlmaWVyLnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOworfQorCit2b2lkIFNldFBy
aXZhdGVCcmFuZFZhcmlhbnQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBk
dW1wSW5Db250ZXh0KG91dCwgbnVsbHB0cik7Cit9CisKK3ZvaWQgU2V0UHJpdmF0ZUJyYW5kVmFy
aWFudDo6ZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCopIGNvbnN0
Cit7CisgICAgb3V0LnByaW50KCI8Iik7CisgICAgb3V0LnByaW50KCJpZD0nIiwgbV9pZGVudGlm
aWVyLCAiJyIpOworICAgIGlmIChtX29sZFN0cnVjdHVyZSkKKyAgICAgICAgb3V0LnByaW50KCIs
ICIsICptX29sZFN0cnVjdHVyZSk7CisgICAgaWYgKG1fbmV3U3RydWN0dXJlKQorICAgICAgICBv
dXQucHJpbnQoIiAtPiAiLCAqbV9uZXdTdHJ1Y3R1cmUpOworICAgIG91dC5wcmludCgiPiIpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TZXRQcml2YXRlQnJhbmRWYXJpYW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU2V0UHJpdmF0ZUJyYW5kVmFyaWFudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uYjg1ZTRhMGUwMWFmCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NldFByaXZhdGVCcmFuZFZhcmlhbnQuaApAQCAt
MCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5BLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXIuaCIKKyNpbmNs
dWRlIDx3dGYvQm94Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBTZXRQcml2YXRlQnJh
bmRTdGF0dXM7CisKK2NsYXNzIFNldFByaXZhdGVCcmFuZFZhcmlhbnQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFNldFByaXZhdGVCcmFuZFZhcmlhbnQoQ2Fj
aGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3
U3RydWN0dXJlKTsKKworICAgIH5TZXRQcml2YXRlQnJhbmRWYXJpYW50KCk7CisKKyAgICBTZXRQ
cml2YXRlQnJhbmRWYXJpYW50KGNvbnN0IFNldFByaXZhdGVCcmFuZFZhcmlhbnQmKTsKKworICAg
IFN0cnVjdHVyZSogb2xkU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9vbGRTdHJ1Y3R1cmU7
IH0KKyAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmV3U3Ry
dWN0dXJlOyB9CisKKyAgICBib29sIGF0dGVtcHRUb01lcmdlKGNvbnN0IFNldFByaXZhdGVCcmFu
ZFZhcmlhbnQmIG90aGVyKTsKKworICAgIHZvaWQgdmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3Im
KTsKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7CisgICAgYm9vbCBmaW5hbGl6
ZShWTSYpOworCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisgICAgdm9pZCBk
dW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBjb25zdDsKKworICAgIENh
Y2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmll
cjsgfQorCisgICAgYm9vbCBvdmVybGFwcyhjb25zdCBTZXRQcml2YXRlQnJhbmRWYXJpYW50JiBv
dGhlcikKKyAgICB7CisgICAgICAgIGlmICghIW1faWRlbnRpZmllciAhPSAhIW90aGVyLm1faWRl
bnRpZmllcikKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAobV9pZGVudGlm
aWVyKSB7CisgICAgICAgICAgICBpZiAobV9pZGVudGlmaWVyICE9IG90aGVyLm1faWRlbnRpZmll
cikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIG1fb2xkU3RydWN0dXJlID09IG90aGVyLm1fb2xkU3RydWN0dXJlOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBmcmllbmQgY2xhc3MgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOworCisgICAgU3Ry
dWN0dXJlKiBtX29sZFN0cnVjdHVyZTsKKyAgICBTdHJ1Y3R1cmUqIG1fbmV3U3RydWN0dXJlOwor
ICAgIENhY2hlYWJsZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0
dXJlU3R1YkluZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJJbmZvLmNwcAppbmRleCA1MjZmZGFiYmE1NGQuLjI2NmQ3ZDg1NzY0NiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3Bw
CkBAIC0yODQsNiArMjg0LDEyIEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OnJlc2V0KGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmIGxvY2tlciwgQ29kZUJsb2NrKiBjCiAgICAgY2FzZSBB
Y2Nlc3NUeXBlOjpEZWxldGVCeVZhbDoKICAgICAgICAgcmVzZXREZWxCeShjb2RlQmxvY2ssICp0
aGlzLCBEZWxCeUtpbmQ6Ok5vcm1hbEJ5VmFsKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBB
Y2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZDoKKyAgICAgICAgcmVzZXRDaGVja1ByaXZhdGVC
cmFuZChjb2RlQmxvY2ssICp0aGlzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NU
eXBlOjpTZXRQcml2YXRlQnJhbmQ6CisgICAgICAgIHJlc2V0U2V0UHJpdmF0ZUJyYW5kKGNvZGVC
bG9jaywgKnRoaXMpOworICAgICAgICBicmVhazsKICAgICB9CiAgICAgCiAgICAgZGVyZWYoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHVi
SW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZv
LmgKaW5kZXggODlkZjRkN2IxMjhjLi5jNWJiOTVlMGMzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCkBAIC01OSw2ICs1OSw4
IEBAIGVudW0gY2xhc3MgQWNjZXNzVHlwZSA6IGludDhfdCB7CiAgICAgRGVsZXRlQnlJRCwKICAg
ICBEZWxldGVCeVZhbCwKICAgICBHZXRQcml2YXRlTmFtZSwKKyAgICBDaGVja1ByaXZhdGVCcmFu
ZCwKKyAgICBTZXRQcml2YXRlQnJhbmQsCiB9OwogCiBlbnVtIGNsYXNzIENhY2hlVHlwZSA6IGlu
dDhfdCB7CkBAIC0zNTIsNiArMzU0LDcgQEAgcHVibGljOgogICAgICAgICBHUFJSZWcgdGhpc0dQ
UjsKICAgICAgICAgR1BSUmVnIHByb3RvdHlwZUdQUjsKICAgICAgICAgR1BSUmVnIHByb3BlcnR5
R1BSOworICAgICAgICBHUFJSZWcgYnJhbmRHUFI7CiAgICAgfSByZWdzOwogI2lmIFVTRShKU1ZB
TFVFMzJfNjQpCiAgICAgR1BSUmVnIHZhbHVlVGFnR1BSOwpAQCAtMzYxLDYgKzM2NCw3IEBAIHB1
YmxpYzoKICAgICB1bmlvbiB7CiAgICAgICAgIEdQUlJlZyB0aGlzVGFnR1BSOwogICAgICAgICBH
UFJSZWcgcHJvcGVydHlUYWdHUFI7CisgICAgICAgIEdQUlJlZyBicmFuZFRhZ0dQUjsKICAgICB9
IHY7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggYjNhZGMwYjc3ZWI3Li45M2RmZjc3NDJkMzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmNwcApAQCAtNjksNiArNjksMTAgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29k
ZUJsb2NrKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUKICAgICAg
ICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeShob2xkTG9jayhjZWxsTG9jaygpKSk7CiAgICAg
ICAgIG1fcmFyZURhdGEtPm1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Olllcyk7CiAgICAgfQorICAg
IGlmIChpbmZvLnByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkgPT0gUHJpdmF0ZUJyYW5kUmVxdWly
ZW1lbnQ6Ok5lZWRlZCkgeworICAgICAgICBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KGhvbGRM
b2NrKGNlbGxMb2NrKCkpKTsKKyAgICAgICAgbV9yYXJlRGF0YS0+bV9wcml2YXRlQnJhbmRSZXF1
aXJlbWVudCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6
TmVlZGVkKTsKKyAgICB9CiB9CiAKIHZvaWQgVW5saW5rZWRDb2RlQmxvY2s6OnZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggMDBkYzYxNjMz
NWZkLi4xZjUxZWNlNWQ2ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC0yNjYsNiArMjY2LDEzIEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObzsKICAgICB9CiAKKyAg
ICBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpIGNvbnN0
CisgICAgeworICAgICAgICBpZiAobV9yYXJlRGF0YSkKKyAgICAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxQcml2YXRlQnJhbmRSZXF1aXJlbWVudD4obV9yYXJlRGF0YS0+bV9wcml2YXRlQnJh
bmRSZXF1aXJlbWVudCk7CisgICAgICAgIHJldHVybiBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6
Tm9uZTsKKyAgICB9CisKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKIAogICAg
IEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyYgbGl2ZW5lc3NBbmFseXNpcyhDb2RlQmxvY2sqIGNv
ZGVCbG9jaykKQEAgLTQwNyw2ICs0MTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJlZkNvdW50ZWRB
cnJheTxDb25zdGFudElkZW50aWZpZXJTZXRFbnRyeT4gbV9jb25zdGFudElkZW50aWZpZXJTZXRz
OwogCiAgICAgICAgIHVuc2lnbmVkIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgOiAxOwor
ICAgICAgICB1bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsKICAgICB9Owog
CiAgICAgaW50IG91dE9mTGluZUp1bXBPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2tHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9ja0dlbmVyYXRvci5oCmluZGV4IDJlYjk4NGMxYjA1YS4uOTRjNjg3MGU5OTRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2tHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2tHZW5lcmF0b3IuaApAQCAtNTAsNiArNTAsNyBAQCBwdWJsaWM6CiAgICAgU3Vw
ZXJCaW5kaW5nIHN1cGVyQmluZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5zdXBl
ckJpbmRpbmcoKTsgfQogICAgIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9jb2RlQmxvY2stPnNjcmlwdE1vZGUoKTsgfQogICAgIE5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkgY29uc3QgeyByZXR1cm4g
bV9jb2RlQmxvY2stPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCk7IH0KKyAgICBQcml2YXRl
QnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fY29kZUJsb2NrLT5wcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpOyB9CiAgICAgYm9vbCB1c2Vz
RXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT51c2VzRXZhbCgpOyB9CiAgICAgU291
cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5wYXJz
ZU1vZGUoKTsgfQogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgeyByZXR1cm4gbV9jb2RlQmxv
Y2stPmlzQXJyb3dGdW5jdGlvbigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCA3
ZWNiNGZjNzU5YWQuLjgwNWRmODBhZDUyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBA
IC03MCwxMSArNzAsMTIgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVy
YXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKIAogICAgIGJvb2wgaXNDbGFzc0NvbnRleHQg
PSBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSA9PSBTdXBlckJpbmRpbmc6Ok5lZWRlZCB8fCBl
eGVjdXRhYmxlLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkNsYXNzRmllbGRJbml0
aWFsaXplck1vZGU7CiAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29kZSwgRXhlY3V0
YWJsZUluZm8oZnVuY3Rpb24tPnVzZXNFdmFsKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwg
ZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25z
dHJ1Y3RvcktpbmQoKSwgc2NyaXB0TW9kZSwgZXhlY3V0YWJsZS0+c3VwZXJCaW5kaW5nKCksIHBh
cnNlTW9kZSwgZXhlY3V0YWJsZS0+ZGVyaXZlZENvbnRleHRUeXBlKCksIGV4ZWN1dGFibGUtPm5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGZhbHNlLCBpc0NsYXNzQ29udGV4dCwgRXZhbENv
bnRleHRUeXBlOjpGdW5jdGlvbkV2YWxDb250ZXh0KSwgY29kZUdlbmVyYXRpb25Nb2RlKTsKKyAg
ICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrOjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29kZSwgRXhlY3V0YWJsZUluZm8oZnVuY3Rpb24t
PnVzZXNFdmFsKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZXhlY3V0YWJsZS0+cHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQoKSwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0
aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgc2NyaXB0TW9kZSwgZXhlY3V0YWJs
ZS0+c3VwZXJCaW5kaW5nKCksIHBhcnNlTW9kZSwgZXhlY3V0YWJsZS0+ZGVyaXZlZENvbnRleHRU
eXBlKCksIGV4ZWN1dGFibGUtPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGZhbHNlLCBp
c0NsYXNzQ29udGV4dCwgRXZhbENvbnRleHRUeXBlOjpGdW5jdGlvbkV2YWxDb250ZXh0KSwgY29k
ZUdlbmVyYXRpb25Nb2RlKTsKIAogICAgIGF1dG8gcGFyZW50U2NvcGVURFpWYXJpYWJsZXMgPSBl
eGVjdXRhYmxlLT5wYXJlbnRTY29wZVREWlZhcmlhYmxlcygpOworICAgIFByaXZhdGVOYW1lRW52
aXJvbm1lbnQgcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCA9IGV4ZWN1dGFibGUtPnBhcmVu
dFByaXZhdGVOYW1lRW52aXJvbm1lbnQoKTsKICAgICBFQ01BTW9kZSBlY21hTW9kZSA9IGV4ZWN1
dGFibGUtPmlzSW5TdHJpY3RDb250ZXh0KCkgPyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9k
ZTo6c2xvcHB5KCk7Ci0gICAgZXJyb3IgPSBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUodm0s
IGZ1bmN0aW9uLmdldCgpLCBzb3VyY2UsIHJlc3VsdCwgY29kZUdlbmVyYXRpb25Nb2RlLCBwYXJl
bnRTY29wZVREWlZhcmlhYmxlcywgZWNtYU1vZGUpOworICAgIGVycm9yID0gQnl0ZWNvZGVHZW5l
cmF0b3I6OmdlbmVyYXRlKHZtLCBmdW5jdGlvbi5nZXQoKSwgc291cmNlLCByZXN1bHQsIGNvZGVH
ZW5lcmF0aW9uTW9kZSwgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsICZwYXJlbnRQcml2YXRlTmFt
ZUVudmlyb25tZW50LCBlY21hTW9kZSk7CiAKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTgyLDcgKzgzLDcgQEAgc3RhdGljIFVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU291
cmNlQ29kZSYgcGFyZW50U291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5r
ZWRGdW5jdGlvbktpbmQga2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBK
U1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4g
cGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4
dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyLCBib29sIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKQorVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHBhcmVudFNvdXJjZSwgRnVuY3Rpb25N
ZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGtpbmQsIENvbnN0cnVjdEFi
aWxpdHkgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIFJl
ZlB0cjxURFpFbnZpcm9ubWVudExpbms+IHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBPcHRpb25h
bDxQcml2YXRlTmFtZUVudmlyb25tZW50PiBwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50LCBE
ZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGJvb2wgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29u
c3RydWN0b3IpCiAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2ZpcnN0TGluZU9m
ZnNldChub2RlLT5maXJzdExpbmUoKSAtIHBhcmVudFNvdXJjZS5maXJzdExpbmUoKS5vbmVCYXNl
ZEludCgpKQogICAgICwgbV9pc0luU3RyaWN0Q29udGV4dChub2RlLT5pc0luU3RyaWN0Q29udGV4
dCgpKQpAQCAtMTAzLDYgKzEwNCw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0CiAgICAgLCBt
X3R5cGVQcm9maWxpbmdTdGFydE9mZnNldChub2RlLT5mdW5jdGlvbktleXdvcmRTdGFydCgpKQog
ICAgICwgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KG5vZGUtPnN0YXJ0U3RhcnRPZmZzZXQoKSAr
IG5vZGUtPnNvdXJjZSgpLmxlbmd0aCgpIC0gMSkKICAgICAsIG1fcGFyYW1ldGVyQ291bnQobm9k
ZS0+cGFyYW1ldGVyQ291bnQoKSkKKyAgICAsIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KSkKICAgICAsIG1fZmVh
dHVyZXMoMCkKICAgICAsIG1fc291cmNlUGFyc2VNb2RlKG5vZGUtPnBhcnNlTW9kZSgpKQogICAg
ICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNvbnN0cnVj
dG9yS2luZCgpKSkKQEAgLTEyMiwxMiArMTI0LDE1IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
CiAgICAgQVNTRVJUKG1fc2NyaXB0TW9kZSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2NyaXB0
TW9kZSkpOwogICAgIEFTU0VSVChtX3N1cGVyQmluZGluZyA9PSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4obm9kZS0+c3VwZXJCaW5kaW5nKCkpKTsKICAgICBBU1NFUlQobV9kZXJpdmVkQ29udGV4dFR5
cGUgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlcml2ZWRDb250ZXh0VHlwZSkpOworICAgIEFT
U0VSVChtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihw
cml2YXRlQnJhbmRSZXF1aXJlbWVudCkpOwogICAgIEFTU0VSVCghKG1faXNCdWlsdGluRGVmYXVs
dENsYXNzQ29uc3RydWN0b3IgJiYgY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5k
OjpOb25lKSk7CiAgICAgQVNTRVJUKCFtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIHx8IChp
c0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIHx8IGRlcml2ZWRDb250ZXh0VHlwZSA9PSBEZXJp
dmVkQ29udGV4dFR5cGU6OkRlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQpKTsKICAgICBpZiAoIW5v
ZGUtPmNsYXNzU291cmNlKCkuaXNOdWxsKCkpCiAgICAgICAgIHNldENsYXNzU291cmNlKG5vZGUt
PmNsYXNzU291cmNlKCkpOwogICAgIGlmIChwYXJlbnRTY29wZVREWlZhcmlhYmxlcykKICAgICAg
ICAgZW5zdXJlUmFyZURhdGEoKS5tX3BhcmVudFNjb3BlVERaVmFyaWFibGVzID0gV1RGTW92ZShw
YXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CisgICAgaWYgKHBhcmVudFByaXZhdGVOYW1lRW52aXJv
bm1lbnQpCisgICAgICAgIGVuc3VyZVJhcmVEYXRhKCkubV9wYXJlbnRQcml2YXRlTmFtZUVudmly
b25tZW50ID0gV1RGTW92ZSgqcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCk7CiB9CiAKIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp+VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCBiZWFmMWU1ZDViZTguLmZiN2RiYTllZmI0YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmgKQEAgLTcwLDEwICs3MCwxMCBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiAmdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5zcGFjZTsKICAgICB9
CiAKLSAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShWTSYgdm0s
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVu
bGlua2VkRnVuY3Rpb25LaW5kIHVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5
IGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBSZWZQdHI8
VERaRW52aXJvbm1lbnRMaW5rPiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRGVyaXZlZENvbnRl
eHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3Ry
dWN0b3IgPSBmYWxzZSkKKyAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNy
ZWF0ZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25NZXRhZGF0YU5v
ZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIHVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25z
dHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRN
b2RlLCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywg
T3B0aW9uYWw8UHJpdmF0ZU5hbWVFbnZpcm9ubWVudD4gcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9u
bWVudCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJl
cXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29sIGlzQnVpbHRpbkRlZmF1bHRD
bGFzc0NvbnN0cnVjdG9yID0gZmFsc2UpCiAgICAgewogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0uaGVhcCkpCi0gICAgICAgICAgICBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSh2bSwgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUu
Z2V0KCksIHNvdXJjZSwgbm9kZSwgdW5saW5rZWRGdW5jdGlvbktpbmQsIGNvbnN0cnVjdEFiaWxp
dHksIHNjcmlwdE1vZGUsIFdURk1vdmUocGFyZW50U2NvcGVURFpWYXJpYWJsZXMpLCBkZXJpdmVk
Q29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBpc0J1aWx0aW5EZWZhdWx0
Q2xhc3NDb25zdHJ1Y3Rvcik7CisgICAgICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSh2bSwgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJj
ZSwgbm9kZSwgdW5saW5rZWRGdW5jdGlvbktpbmQsIGNvbnN0cnVjdEFiaWxpdHksIHNjcmlwdE1v
ZGUsIFdURk1vdmUocGFyZW50U2NvcGVURFpWYXJpYWJsZXMpLCBXVEZNb3ZlKHBhcmVudFByaXZh
dGVOYW1lRW52aXJvbm1lbnQpLCBkZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyLCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCwgaXNCdWlsdGluRGVmYXVsdENsYXNz
Q29uc3RydWN0b3IpOwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAg
ICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpAQCAtMTQzLDYgKzE0Myw4IEBAIHB1YmxpYzoK
ICAgICBDb2RlRmVhdHVyZXMgZmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzOyB9
CiAgICAgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ2Fw
dHVyZWRWYXJpYWJsZXM7IH0KIAorICAgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVC
cmFuZFJlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQ+KG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOyB9CisKICAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CiAgICAgc3RhdGljIHZvaWQg
ZGVzdHJveShKU0NlbGwqKTsKIApAQCAtMTc0LDYgKzE3NiwxMyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fcGFyZW50
U2NvcGVURFpWYXJpYWJsZXM7CiAgICAgfQorCisgICAgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCBw
YXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmICgh
bV9yYXJlRGF0YSkKKyAgICAgICAgICAgIHJldHVybiBQcml2YXRlTmFtZUVudmlyb25tZW50KCk7
CisgICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX3BhcmVudFByaXZhdGVOYW1lRW52aXJvbm1l
bnQ7CisgICAgfQogICAgIAogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1
cm4gaXNBcnJvd0Z1bmN0aW9uUGFyc2VNb2RlKHBhcnNlTW9kZSgpKTsgfQogCkBAIC0yMTAsNiAr
MjE5LDcgQEAgcHVibGljOgogICAgICAgICBTdHJpbmcgbV9zb3VyY2VNYXBwaW5nVVJMRGlyZWN0
aXZlOwogICAgICAgICBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiBtX3BhcmVudFNjb3BlVERa
VmFyaWFibGVzOwogICAgICAgICBWZWN0b3I8SlNUZXh0UG9zaXRpb24+IG1fY2xhc3NGaWVsZExv
Y2F0aW9uczsKKyAgICAgICAgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCBtX3BhcmVudFByaXZhdGVO
YW1lRW52aXJvbm1lbnQ7CiAgICAgfTsKIAogICAgIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
IG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI+KG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIp
OyB9CkBAIC0yMjksNyArMjM5LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYsIFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNv
ZGUmLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1
Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUsIFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+
LCAgSlNDOjpEZXJpdmVkQ29udGV4dFR5cGUsIEpTQzo6TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIsIGJvb2wgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IpOworICAgIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKFZNJiwgU3RydWN0dXJlKiwgY29uc3QgU291cmNlQ29kZSYsIEZ1
bmN0aW9uTWV0YWRhdGFOb2RlKiwgVW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxp
dHksIEpTUGFyc2VyU2NyaXB0TW9kZSwgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4sIE9wdGlv
bmFsPFByaXZhdGVOYW1lRW52aXJvbm1lbnQ+LCBKU0M6OkRlcml2ZWRDb250ZXh0VHlwZSwgSlND
OjpOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGJv
b2wgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IpOwogICAgIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKERlY29kZXImLCBjb25zdCBDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGUmKTsK
IAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsK
QEAgLTI2MSw3ICsyNzEsOCBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1faXNDYWNoZWQgOiAx
OwogICAgIHVuc2lnbmVkIG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0OwogICAgIHVuc2lnbmVk
IG1fdHlwZVByb2ZpbGluZ0VuZE9mZnNldDsKLSAgICB1bnNpZ25lZCBtX3BhcmFtZXRlckNvdW50
OworICAgIHVuc2lnbmVkIG1fcGFyYW1ldGVyQ291bnQgOiAzMTsKKyAgICB1bnNpZ25lZCBtX3By
aXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsKICAgICBDb2RlRmVhdHVyZXMgbV9mZWF0dXJlczsK
ICAgICBTb3VyY2VQYXJzZU1vZGUgbV9zb3VyY2VQYXJzZU1vZGU7CiAgICAgdW5zaWduZWQgbV9j
b25zdHJ1Y3RvcktpbmQgOiAyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA2MTdjYTBjYmM1NWIuLjRl
NTcxOWVmODI1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTI4OSw3ICsyODksNyBAQCBQYXJzZXJF
cnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgIHJldHVybiBQYXJzZXJFcnJv
cihQYXJzZXJFcnJvcjo6RXJyb3JOb25lKTsKIH0KIAotQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVj
b2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxpbmtlZFBy
b2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4g
Y29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiYgcGFy
ZW50U2NvcGVURFpWYXJpYWJsZXMsIEVDTUFNb2RlIGVjbWFNb2RlKQorQnl0ZWNvZGVHZW5lcmF0
b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBV
bmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0
aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBSZWZQdHI8VERaRW52aXJvbm1lbnRM
aW5rPiYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1l
bnQqLCBFQ01BTW9kZSBlY21hTW9kZSkKICAgICA6IEJ5dGVjb2RlR2VuZXJhdG9yQmFzZShtYWtl
VW5pcXVlPFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yPih2bSwgY29kZUJsb2NrKSwgQ29kZUJs
b2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkpCiAg
ICAgLCBtX2NvZGVHZW5lcmF0aW9uTW9kZShjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAgLCBtX3Nj
b3BlTm9kZShwcm9ncmFtTm9kZSkKQEAgLTMzNiw3ICszMzYsNyBAQCBCeXRlY29kZUdlbmVyYXRv
cjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBQcm9ncmFtTm9kZSogcHJvZ3JhbU5vZGUsIFVu
bGlua2VkUAogICAgIH0KIH0KIAotQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9y
KFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2VkRnVuY3Rpb25Db2Rl
QmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVy
YXRpb25Nb2RlLCBjb25zdCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiYgcGFyZW50U2NvcGVU
RFpWYXJpYWJsZXMsIEVDTUFNb2RlIGVjbWFNb2RlKQorQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVj
b2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2Vk
RnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9k
ZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiYg
cGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHBh
cmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQsIEVDTUFNb2RlIGVjbWFNb2RlKQogICAgIDogQnl0
ZWNvZGVHZW5lcmF0b3JCYXNlKG1ha2VVbmlxdWU8VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I+
KHZtLCBjb2RlQmxvY2spLCBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VB
c1ZpcnR1YWxSZWdpc3RlcnMoKSkKICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2RlKGNvZGVHZW5l
cmF0aW9uTW9kZSkKICAgICAsIG1fc2NvcGVOb2RlKGZ1bmN0aW9uTm9kZSkKQEAgLTM1OSw2ICsz
NTksOCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5j
dGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICwgbV9lY21hTW9kZShlY21hTW9k
ZSkKICAgICAsIG1fZGVyaXZlZENvbnRleHRUeXBlKGNvZGVCbG9jay0+ZGVyaXZlZENvbnRleHRU
eXBlKCkpCiB7CisgICAgcHVzaFByaXZhdGVBY2Nlc3NOYW1lcyhwYXJlbnRQcml2YXRlTmFtZUVu
dmlyb25tZW50KTsKKwogICAgIFN5bWJvbFRhYmxlKiBmdW5jdGlvblN5bWJvbFRhYmxlID0gU3lt
Ym9sVGFibGU6OmNyZWF0ZShtX3ZtKTsKICAgICBmdW5jdGlvblN5bWJvbFRhYmxlLT5zZXRVc2Vz
Tm9uU3RyaWN0RXZhbChtX3VzZXNOb25TdHJpY3RFdmFsKTsKICAgICBpbnQgc3ltYm9sVGFibGVD
b25zdGFudEluZGV4ID0gMDsKQEAgLTcwNyw2ICs3MDksOSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5s
aW5rZQogICAgICAgICAgICAgICAgIGNhc2UgQ29uc3RydWN0b3JLaW5kOjpOb25lOgogICAgICAg
ICAgICAgICAgIGNhc2UgQ29uc3RydWN0b3JLaW5kOjpCYXNlOgogICAgICAgICAgICAgICAgICAg
ICBlbWl0Q3JlYXRlVGhpcygmbV90aGlzUmVnaXN0ZXIpOworICAgICAgICAgICAgICAgICAgICBp
ZiAoT3B0aW9uczo6dXNlUHJpdmF0ZU1ldGhvZHMoKSAmJiBwcml2YXRlQnJhbmRSZXF1aXJlbWVu
dCgpID09IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOZWVkZWQpCisgICAgICAgICAgICAgICAg
ICAgICAgICBlbWl0SW5zdGFsbFByaXZhdGVCcmFuZCgmbV90aGlzUmVnaXN0ZXIpOworCiAgICAg
ICAgICAgICAgICAgICAgIGVtaXRJbnN0YW5jZUZpZWxkSW5pdGlhbGl6YXRpb25JZk5lZWRlZCgm
bV90aGlzUmVnaXN0ZXIsICZtX2NhbGxlZVJlZ2lzdGVyLCBtX3Njb3BlTm9kZS0+cG9zaXRpb24o
KSwgbV9zY29wZU5vZGUtPnBvc2l0aW9uKCksIG1fc2NvcGVOb2RlLT5wb3NpdGlvbigpKTsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBDb25zdHJ1Y3Rv
cktpbmQ6OkV4dGVuZHM6CkBAIC04MzgsNyArODQzLDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5
dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlu
a2UKICAgICBwdXNoTGV4aWNhbFNjb3BlKG1fc2NvcGVOb2RlLCBURFpDaGVja09wdGltaXphdGlv
bjo6T3B0aW1pemUsIE5lc3RlZFNjb3BlVHlwZTo6SXNOb3ROZXN0ZWQsIG51bGxwdHIsIHNob3Vs
ZEluaXRpYWxpemVCbG9ja1Njb3BlZEZ1bmN0aW9ucyk7CiB9CiAKLUJ5dGVjb2RlR2VuZXJhdG9y
OjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEV2YWxOb2RlKiBldmFsTm9kZSwgVW5saW5rZWRF
dmFsQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNv
ZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4mIHBhcmVu
dFNjb3BlVERaVmFyaWFibGVzLCBFQ01BTW9kZSBlY21hTW9kZSkKK0J5dGVjb2RlR2VuZXJhdG9y
OjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEV2YWxOb2RlKiBldmFsTm9kZSwgVW5saW5rZWRF
dmFsQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNv
ZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4mIHBhcmVu
dFNjb3BlVERaVmFyaWFibGVzLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiBwYXJlbnRQ
cml2YXRlTmFtZUVudmlyb25tZW50LCBFQ01BTW9kZSBlY21hTW9kZSkKICAgICA6IEJ5dGVjb2Rl
R2VuZXJhdG9yQmFzZShtYWtlVW5pcXVlPFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yPih2bSwg
Y29kZUJsb2NrKSwgQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0
dWFsUmVnaXN0ZXJzKCkpCiAgICAgLCBtX2NvZGVHZW5lcmF0aW9uTW9kZShjb2RlR2VuZXJhdGlv
bk1vZGUpCiAgICAgLCBtX3Njb3BlTm9kZShldmFsTm9kZSkKQEAgLTg1Niw2ICs4NjEsOCBAQCBC
eXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZh
bE5vZGUsIFVubGlua2VkRXZhbENvZAogewogICAgIG1fY29kZUJsb2NrLT5zZXROdW1QYXJhbWV0
ZXJzKDEpOwogCisgICAgcHVzaFByaXZhdGVBY2Nlc3NOYW1lcyhwYXJlbnRQcml2YXRlTmFtZUVu
dmlyb25tZW50KTsKKwogICAgIG1fY2FjaGVkUGFyZW50VERaID0gcGFyZW50U2NvcGVURFpWYXJp
YWJsZXM7CiAKICAgICBlbWl0RW50ZXIoKTsKQEAgLTkwMSw3ICs5MDgsNyBAQCBCeXRlY29kZUdl
bmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVu
bGlua2VkRXZhbENvZAogICAgIHB1c2hMZXhpY2FsU2NvcGUobV9zY29wZU5vZGUsIFREWkNoZWNr
T3B0aW1pemF0aW9uOjpPcHRpbWl6ZSwgTmVzdGVkU2NvcGVUeXBlOjpJc05vdE5lc3RlZCwgbnVs
bHB0ciwgc2hvdWxkSW5pdGlhbGl6ZUJsb2NrU2NvcGVkRnVuY3Rpb25zKTsKIH0KIAotQnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgTW9kdWxlUHJvZ3JhbU5vZGUq
IG1vZHVsZVByb2dyYW1Ob2RlLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVC
bG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBj
b25zdCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMs
IEVDTUFNb2RlIGVjbWFNb2RlKQorQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9y
KFZNJiB2bSwgTW9kdWxlUHJvZ3JhbU5vZGUqIG1vZHVsZVByb2dyYW1Ob2RlLCBVbmxpbmtlZE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9u
TW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5r
PiYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQq
LCBFQ01BTW9kZSBlY21hTW9kZSkKICAgICA6IEJ5dGVjb2RlR2VuZXJhdG9yQmFzZShtYWtlVW5p
cXVlPFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yPih2bSwgY29kZUJsb2NrKSwgQ29kZUJsb2Nr
OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkpCiAgICAg
LCBtX2NvZGVHZW5lcmF0aW9uTW9kZShjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAgLCBtX3Njb3Bl
Tm9kZShtb2R1bGVQcm9ncmFtTm9kZSkKQEAgLTE4OTMsOCArMTkwMCwxMCBAQCBib29sIEJ5dGVj
b2RlR2VuZXJhdG9yOjppbnN0YW50aWF0ZUxleGljYWxWYXJpYWJsZXMoY29uc3QgVmFyaWFibGVF
bnZpcm9ubWVudCYgbAogCiAgICAgICAgICAgICAvLyBGSVhNRTogb25seSBkbyB0aGlzIGlmIHRo
ZXJlIGlzIGFuIGV2YWwoKSB3aXRoaW4gYSBuZXN0ZWQgc2NvcGUgLS0tIG90aGVyd2lzZSBpdCBp
c24ndCBuZWVkZWQuCiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA2NjYzCi0gICAgICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNQcml2YXRl
TmFtZSgpKQotICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5hZGRQcml2YXRlTmFtZShlbnRy
eS5rZXkuZ2V0KCkpOworICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVlLmlzUHJpdmF0ZUZpZWxk
KCkpCisgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUtPmFkZFByaXZhdGVOYW1lKGVudHJ5Lmtl
eS5nZXQoKSwgUHJpdmF0ZU5hbWVFbnRyeShQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzRGVj
bGFyZWQpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGVudHJ5LnZhbHVlLmlzUHJpdmF0ZU1ldGhv
ZCgpKQorICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5hZGRQcml2YXRlTmFtZShlbnRyeS5r
ZXkuZ2V0KCksIFByaXZhdGVOYW1lRW50cnkoUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc0Rl
Y2xhcmVkIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc01ldGhvZCkpOwogICAgICAgICB9
CiAgICAgfQogICAgIHJldHVybiBoYXNDYXB0dXJlZFZhcmlhYmxlczsKQEAgLTI3MTQsNyArMjcy
Myw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlWYWwoUmVnaXN0
ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdGhpc1ZhCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi1S
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdEdldEJ5VmFsKFJlZ2lzdGVy
SUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpCitSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFByaXZhdGVOYW1lKFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpCiB7CiAgICAgT3BHZXRQ
cml2YXRlTmFtZTo6ZW1pdCh0aGlzLCBkc3QsIGJhc2UsIHByb3BlcnR5KTsKICAgICByZXR1cm4g
ZHN0OwpAQCAtMjc1MCwxMiArMjc1OSw0NCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdERlZmluZVByaXZhdGVGaWVsZChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcgogICAg
IHJldHVybiB2YWx1ZTsKIH0KIAordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZVBy
aXZhdGVCcmFuZChSZWdpc3RlcklEKiBzY29wZSwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90RW5kKQoreworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjcmVhdGVQcml2YXRlU3ltYm9s
ID0gbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6Y3JlYXRl
UHJpdmF0ZVN5bWJvbCk7CisKKyAgICBDYWxsQXJndW1lbnRzIGFyZ3VtZW50cygqdGhpcywgbnVs
bHB0ciwgMCk7CisgICAgZW1pdExvYWQoYXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVm
aW5lZCgpKTsKKyAgICBSZWdpc3RlcklEKiBuZXdTeW1ib2wgPSBlbWl0Q2FsbChmaW5hbERlc3Rp
bmF0aW9uKG51bGxwdHIsIGNyZWF0ZVByaXZhdGVTeW1ib2wuZ2V0KCkpLCBjcmVhdGVQcml2YXRl
U3ltYm9sLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGFyZ3VtZW50cywgZGl2b3QsIGRpdm90
U3RhcnQsIGRpdm90RW5kLCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOworCisgICAgVmFyaWFibGUgcHJp
dmF0ZUJyYW5kVmFyID0gdmFyaWFibGUocHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLnBy
aXZhdGVCcmFuZFByaXZhdGVOYW1lKCkpOworCisgICAgZW1pdFB1dFRvU2NvcGUoc2NvcGUsIHBy
aXZhdGVCcmFuZFZhciwgbmV3U3ltYm9sLCBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6
YXRpb25Nb2RlOjpJbml0aWFsaXphdGlvbik7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRJbnN0YWxsUHJpdmF0ZUJyYW5kKFJlZ2lzdGVySUQqIHRhcmdldCkKK3sKKyAgICBWYXJp
YWJsZSBwcml2YXRlQnJhbmRWYXIgPSB2YXJpYWJsZShwcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5h
bWVzKCkucHJpdmF0ZUJyYW5kUHJpdmF0ZU5hbWUoKSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHByaXZhdGVCcmFuZFZhclNjb3BlID0gZW1pdFJlc29sdmVTY29wZShudWxscHRyLCBwcml2YXRl
QnJhbmRWYXIpOworICAgIFJlZ2lzdGVySUQqIHByaXZhdGVCcmFuZFN5bWJvbCA9IGVtaXRHZXRQ
cml2YXRlQnJhbmQobmV3VGVtcG9yYXJ5KCksIHByaXZhdGVCcmFuZFZhclNjb3BlLmdldCgpKTsK
KyAgICBPcFNldFByaXZhdGVCcmFuZDo6ZW1pdCh0aGlzLCB0YXJnZXQsIHByaXZhdGVCcmFuZFN5
bWJvbCk7Cit9CisKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0UHJpdmF0
ZUJyYW5kKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc2NvcGUpCit7CisgICAgVmFyaWFi
bGUgcHJpdmF0ZUJyYW5kVmFyID0gdmFyaWFibGUocHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1l
cygpLnByaXZhdGVCcmFuZFByaXZhdGVOYW1lKCkpOworICAgIHJldHVybiBlbWl0R2V0RnJvbVNj
b3BlKGRzdCwgc2NvcGUsIHByaXZhdGVCcmFuZFZhciwgVGhyb3dJZk5vdEZvdW5kKTsKK30KKwog
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcml2YXRlRmllbGRQdXQoUmVnaXN0
ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewog
ICAgIE9wUHV0UHJpdmF0ZU5hbWU6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQ
cml2YXRlRmllbGRQdXRLaW5kOjpzZXQoKSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCit2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2hlY2tQcml2YXRlQnJhbmQoUmVnaXN0ZXJJRCogYmFz
ZSwgUmVnaXN0ZXJJRCogYnJhbmRTeW1ib2wpCit7CisgICAgT3BDaGVja1ByaXZhdGVCcmFuZDo6
ZW1pdCh0aGlzLCBiYXNlLCBicmFuZFN5bWJvbCk7Cit9CisKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRTdXBlclNhbXBsZXJCZWdpbigpCiB7CiAgICAgT3BTdXBlclNhbXBsZXJCZWdpbjo6
ZW1pdCh0aGlzKTsKQEAgLTI4OTAsNiArMjkzMSwzMiBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
OjpsaWZ0VERaQ2hlY2tJZlBvc3NpYmxlKGNvbnN0IFZhcmlhYmxlJiB2YXJpYWJsZSkKICAgICB9
CiB9CiAKK2Jvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmlzUHJpdmF0ZU1ldGhvZChjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3ByaXZhdGVOYW1lc1N0
YWNrLnNpemUoKTsgaS0tOyApIHsKKyAgICAgICAgYXV0byYgbWFwID0gbV9wcml2YXRlTmFtZXNT
dGFja1tpXTsKKyAgICAgICAgYXV0byBpdCA9IG1hcC5maW5kKGlkZW50LmltcGwoKSk7CisgICAg
ICAgIGlmIChpdCAhPSBtYXAuZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gaXQtPnZhbHVlLmlz
TWV0aG9kKCk7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpwdXNoUHJpdmF0ZUFjY2Vzc05hbWVzKGNvbnN0IFByaXZhdGVOYW1lRW52aXJv
bm1lbnQqIGVudmlyb25tZW50KQoreworICAgIGlmICghZW52aXJvbm1lbnQgfHwgIWVudmlyb25t
ZW50LT5zaXplKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcHJpdmF0ZU5hbWVzU3RhY2su
YXBwZW5kKCplbnZpcm9ubWVudCk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnBvcFBy
aXZhdGVBY2Nlc3NOYW1lcygpCit7CisgICAgQVNTRVJUKG1fcHJpdmF0ZU5hbWVzU3RhY2suc2l6
ZSgpKTsKKyAgICBtX3ByaXZhdGVOYW1lc1N0YWNrLnJlbW92ZUxhc3QoKTsKK30KKwogdm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6cHVzaFREWlZhcmlhYmxlcyhjb25zdCBWYXJpYWJsZUVudmlyb25t
ZW50JiBlbnZpcm9ubWVudCwgVERaQ2hlY2tPcHRpbWl6YXRpb24gb3B0aW1pemF0aW9uLCBURFpS
ZXF1aXJlbWVudCByZXF1aXJlbWVudCkKIHsKICAgICBpZiAoIWVudmlyb25tZW50LnNpemUoKSkK
QEAgLTI5MTEsNiArMjk3OCwyOCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoVERaVmFy
aWFibGVzKGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGVudmlyb25tZW50LAogICAgIG1fVERa
U3RhY2suYXBwZW5kKFREWlN0YWNrRW50cnkgeyBXVEZNb3ZlKG1hcCksIG51bGxwdHIgfSk7CiB9
CiAKK09wdGlvbmFsPFByaXZhdGVOYW1lRW52aXJvbm1lbnQ+IEJ5dGVjb2RlR2VuZXJhdG9yOjpn
ZXRBdmFpbGFibGVQcml2YXRlQWNjZXNzTmFtZXMoKQoreworICAgIFByaXZhdGVOYW1lRW52aXJv
bm1lbnQgcmVzdWx0OworICAgIFNtYWxsUHRyU2V0PFVuaXF1ZWRTdHJpbmdJbXBsKiwgMTY+IGV4
Y2x1ZGVkTmFtZXM7CisgICAgZm9yICh1bnNpZ25lZCBpID0gbV9wcml2YXRlTmFtZXNTdGFjay5z
aXplKCk7IGktLTsgKSB7CisgICAgICAgIGF1dG8mIG1hcCA9IG1fcHJpdmF0ZU5hbWVzU3RhY2tb
aV07CisgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBtYXApICB7CisgICAgICAgICAgICBpZiAo
ZW50cnkudmFsdWUuaXNQcml2YXRlTWV0aG9kT3JBY2Vzc29yKCkpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoIWV4Y2x1ZGVkTmFtZXMuY29udGFpbnMoZW50cnkua2V5LmdldCgpKSkgeworICAgICAg
ICAgICAgICAgICAgICByZXN1bHQuYWRkKGVudHJ5LmtleSwgZW50cnkudmFsdWUpOworICAgICAg
ICAgICAgICAgICAgICBleGNsdWRlZE5hbWVzLmFkZChlbnRyeS5rZXkuZ2V0KCkpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGV4Y2x1ZGVk
TmFtZXMuYWRkKGVudHJ5LmtleS5nZXQoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAo
IXJlc3VsdC5zaXplKCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKwogUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4gQnl0ZWNvZGVHZW5lcmF0
b3I6OmdldFZhcmlhYmxlc1VuZGVyVERaKCkKIHsKICAgICBSZWZQdHI8VERaRW52aXJvbm1lbnRM
aW5rPiBwYXJlbnQgPSBtX2NhY2hlZFBhcmVudFREWjsKQEAgLTMxMjAsOSArMzIwOSw5IEBAIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3TWV0aG9kRGVmaW5pdGlvbihSZWdp
c3RlcklEKiBkc3QsIE1ldGhvZERlCiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29uc3RydWN0b3JL
aW5kIGNvbnN0cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwKLSAgICBjb25zdCBJ
ZGVudGlmaWVyJiBlY21hTmFtZSwgY29uc3QgU291cmNlQ29kZSYgY2xhc3NTb3VyY2UsIE5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKQorICAgIGNv
bnN0IElkZW50aWZpZXImIGVjbWFOYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBjbGFzc1NvdXJjZSwg
TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFBy
aXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KQogewotICAgIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbV92bS5idWlsdGluRXhlY3V0
YWJsZXMoKS0+Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yKGNvbnN0cnVjdG9yS2luZCwgbmFtZSwg
bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBleGVjdXRhYmxlID0gbV92bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y3JlYXRlRGVmYXVs
dENvbnN0cnVjdG9yKGNvbnN0cnVjdG9yS2luZCwgbmFtZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIsIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KTsKICAgICBleGVjdXRhYmxlLT5zZXRJbnZh
bGlkVHlwZVByb2ZpbGluZ09mZnNldHMoKTsKICAgICBleGVjdXRhYmxlLT5zZXRFY21hTmFtZShl
Y21hTmFtZSk7CiAgICAgZXhlY3V0YWJsZS0+c2V0Q2xhc3NTb3VyY2UoY2xhc3NTb3VyY2UpOwpA
QCAtMzE0NiwxMyArMzIzNSwxNCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dE5ld0NsYXNzRmllbGRJbml0aWFsaXplckZ1bmN0aW9uKFJlZ2lzdGVySUQqCiAgICAgfQogCiAg
ICAgYXV0byB2YXJpYWJsZXNVbmRlclREWiA9IGdldFZhcmlhYmxlc1VuZGVyVERaKCk7CisgICAg
T3B0aW9uYWw8UHJpdmF0ZU5hbWVFbnZpcm9ubWVudD4gcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9u
bWVudCA9IGdldEF2YWlsYWJsZVByaXZhdGVBY2Nlc3NOYW1lcygpOwogICAgIFNvdXJjZVBhcnNl
TW9kZSBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkNsYXNzRmllbGRJbml0aWFsaXplck1v
ZGU7CiAgICAgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5ID0gQ29uc3RydWN0QWJp
bGl0eTo6Q2Fubm90Q29uc3RydWN0OwogCiAgICAgY29uc3QgYm9vbCBhbHdheXNTdHJpY3RJbkNs
YXNzID0gdHJ1ZTsKICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSBtZXRhZGF0YShwYXJzZXJBcmVu
YSgpLCBKU1Rva2VuTG9jYXRpb24oKSwgSlNUb2tlbkxvY2F0aW9uKCksIDAsIDAsIDAsIDAsIDAs
IGFsd2F5c1N0cmljdEluQ2xhc3MsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgc3VwZXJCaW5kaW5n
LCAwLCBwYXJzZU1vZGUsIGZhbHNlKTsKICAgICBtZXRhZGF0YS5maW5pc2hQYXJzaW5nKG1fc2Nv
cGVOb2RlLT5zb3VyY2UoKSwgSWRlbnRpZmllcigpLCBGdW5jdGlvbk1vZGU6Ok1ldGhvZERlZmlu
aXRpb24pOwotICAgIGF1dG8gaW5pdGlhbGl6ZXIgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgJm1ldGFkYXRhLCBpc0J1aWx0
aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1
bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCBzY3JpcHRNb2RlKCksIFdURk1vdmUodmFyaWFibGVz
VW5kZXJURFopLCBuZXdEZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyOjpObyk7CisgICAgYXV0byBpbml0aWFsaXplciA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlOjpjcmVhdGUobV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgpLCAmbWV0YWRhdGEsIGlzQnVp
bHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFs
RnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIHNjcmlwdE1vZGUoKSwgV1RGTW92ZSh2YXJpYWJs
ZXNVbmRlclREWiksIFdURk1vdmUocGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCksIG5ld0Rl
cml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vLCBQcml2YXRl
QnJhbmRSZXF1aXJlbWVudDo6Tm9uZSk7CiAgICAgaW5pdGlhbGl6ZXItPnNldENsYXNzRmllbGRM
b2NhdGlvbnMoV1RGTW92ZShjbGFzc0ZpZWxkTG9jYXRpb25zKSk7CiAKICAgICB1bnNpZ25lZCBp
bmRleCA9IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkV4cHIoaW5pdGlhbGl6ZXIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCmluZGV4IDUwYjU0NjVmOWI3NS4uYmJmYjU2ODE5OGY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC00
MDgsMTAgKzQwOCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5
cGVkZWYgRGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2sgRnVuY3Rpb25TdGFjazsKIAot
ICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIFByb2dyYW1Ob2RlKiwgVW5saW5rZWRQcm9n
cmFtQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFJlZlB0
cjxURFpFbnZpcm9ubWVudExpbms+JiwgRUNNQU1vZGUpOwotICAgICAgICBCeXRlY29kZUdlbmVy
YXRvcihWTSYsIEZ1bmN0aW9uTm9kZSosIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqLCBPcHRp
b25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50TGlu
az4mLCBFQ01BTW9kZSk7Ci0gICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgRXZhbE5vZGUq
LCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwg
Y29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4mLCBFQ01BTW9kZSk7Ci0gICAgICAgIEJ5
dGVjb2RlR2VuZXJhdG9yKFZNJiwgTW9kdWxlUHJvZ3JhbU5vZGUqLCBVbmxpbmtlZE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgUmVm
UHRyPFREWkVudmlyb25tZW50TGluaz4mLCBFQ01BTW9kZSk7CisgICAgICAgIEJ5dGVjb2RlR2Vu
ZXJhdG9yKFZNJiwgUHJvZ3JhbU5vZGUqLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqLCBPcHRp
b25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50TGlu
az4mLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiwgRUNNQU1vZGUpOworICAgICAgICBC
eXRlY29kZUdlbmVyYXRvcihWTSYsIEZ1bmN0aW9uTm9kZSosIFVubGlua2VkRnVuY3Rpb25Db2Rl
QmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgUmVmUHRyPFREWkVu
dmlyb25tZW50TGluaz4mLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiwgRUNNQU1vZGUp
OworICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIEV2YWxOb2RlKiwgVW5saW5rZWRFdmFs
Q29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFJlZlB0cjxU
RFpFbnZpcm9ubWVudExpbms+JiwgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCosIEVDTUFN
b2RlKTsKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBNb2R1bGVQcm9ncmFtTm9kZSos
IFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayosIE9wdGlvblNldDxDb2RlR2VuZXJhdGlv
bk1vZGU+LCBjb25zdCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiYsIGNvbnN0IFByaXZhdGVO
YW1lRW52aXJvbm1lbnQqLCBFQ01BTW9kZSk7CiAKICAgICAgICAgfkJ5dGVjb2RlR2VuZXJhdG9y
KCk7CiAgICAgICAgIApAQCAtNDI1LDIwICs0MjUsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIGJvb2wgbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KCkgY29uc3QgeyByZXR1
cm4gbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQ7IH0KICAgICAgICAgYm9vbCB1
c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVOb2RlLT51c2VzRXZhbCgpOyB9CiAgICAg
ICAgIGJvb2wgdXNlc1RoaXMoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlTm9kZS0+dXNlc1RoaXMo
KTsgfQorICAgICAgICBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5wcml2YXRlQnJhbmRSZXF1aXJlbWVu
dCgpOyB9CiAgICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7
IHJldHVybiBtX2NvZGVCbG9jay0+Y29uc3RydWN0b3JLaW5kKCk7IH0KICAgICAgICAgU3VwZXJC
aW5kaW5nIHN1cGVyQmluZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5zdXBlckJp
bmRpbmcoKTsgfQogICAgICAgICBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5zY3JpcHRNb2RlKCk7IH0KICAgICAgICAgTmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSBjb25zdCB7IHJl
dHVybiBtX2NvZGVCbG9jay0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKTsgfQogCiAgICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE5vZGUsIHR5cGVuYW1lIFVubGlua2VkQ29kZUJsb2NrPgot
ICAgICAgICBzdGF0aWMgUGFyc2VyRXJyb3IgZ2VuZXJhdGUoVk0mIHZtLCBOb2RlKiBub2RlLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRD
b2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9k
ZSwgY29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4mIHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzLCBFQ01BTW9kZSBlY21hTW9kZSkKKyAgICAgICAgc3RhdGljIFBhcnNlckVycm9yIGdlbmVy
YXRlKFZNJiB2bSwgTm9kZSogbm9kZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgVW5s
aW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRp
b25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFJlZlB0cjxURFpFbnZpcm9ubWVudExp
bms+JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVu
dCogcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgRUNNQU1vZGUgZWNtYU1vZGUpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIE1vbm90b25pY1RpbWUgYmVmb3JlOwogICAgICAgICAgICAgaWYgKFVOTElL
RUxZKE9wdGlvbnM6OnJlcG9ydEJ5dGVjb2RlQ29tcGlsZVRpbWVzKCkpKQogICAgICAgICAgICAg
ICAgIGJlZm9yZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogCiAgICAgICAgICAgICBEZWZlckdD
IGRlZmVyR0Modm0uaGVhcCk7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVjb2RlR2VuZXJhdG9yID0g
bWFrZVVuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIG5vZGUsIHVubGlua2VkQ29kZUJsb2Nr
LCBjb2RlR2VuZXJhdGlvbk1vZGUsIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBlY21hTW9kZSk7
CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlR2VuZXJhdG9yID0gbWFrZVVuaXF1ZTxCeXRlY29k
ZUdlbmVyYXRvcj4odm0sIG5vZGUsIHVubGlua2VkQ29kZUJsb2NrLCBjb2RlR2VuZXJhdGlvbk1v
ZGUsIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBwcml2YXRlTmFtZUVudmlyb25tZW50LCBlY21h
TW9kZSk7CiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGJ5dGVjb2RlR2VuZXJhdG9yLT5nZW5l
cmF0ZSgpOwogCiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6cmVwb3J0Qnl0ZWNv
ZGVDb21waWxlVGltZXMoKSkpIHsKQEAgLTc3NCw3ICs3NzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBG
dW5jdGlvbk1ldGFkYXRhTm9kZSopOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3RnVuY3Rp
b25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY0V4cHJOb2RlKik7Ci0gICAgICAgIFJl
Z2lzdGVySUQqIGVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCogZHN0LCBDb25z
dHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIGNvbnN0IElkZW50aWZpZXImIGVj
bWFOYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBjbGFzc1NvdXJjZSwgTmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9y
KFJlZ2lzdGVySUQqIGRzdCwgQ29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1l
LCBjb25zdCBJZGVudGlmaWVyJiBlY21hTmFtZSwgY29uc3QgU291cmNlQ29kZSYgY2xhc3NTb3Vy
Y2UsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdDbGFzc0ZpZWxkSW5pdGlhbGl6ZXJGdW5jdGlv
bihSZWdpc3RlcklEKiBkc3QsIFZlY3RvcjxKU1RleHRQb3NpdGlvbj4mJiBjbGFzc0ZpZWxkTG9j
YXRpb25zLCBib29sIGlzRGVyaXZlZCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdBcnJv
d0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiwgQXJyb3dGdW5jRXhwck5vZGUqKTsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld01ldGhvZERlZmluaXRpb24oUmVnaXN0ZXJJRCogZHN0
LCBNZXRob2REZWZpbml0aW9uTm9kZSopOwpAQCAtODE1LDcgKzgxNiw2IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGlyZWN0U2V0UHJvdG90eXBlT2YoUmVnaXN0
ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvdG90eXBlKTsKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdp
c3RlcklEKiB2YWx1ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRCeVZhbChSZWdpc3Rl
cklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmFsdWUsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBS
ZWdpc3RlcklEKiB2YWx1ZSk7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXREaXJlY3RHZXRCeVZh
bChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5
KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERpcmVjdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJh
c2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXREZWxldGVCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJh
c2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5KTsKIApAQCAtODIzLDYgKzgyMywxMiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dEludGVybmFsRmllbGQoUmVnaXN0
ZXJJRCogYmFzZSwgdW5zaWduZWQgaW5kZXgsIFJlZ2lzdGVySUQqIHZhbHVlKTsKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdERlZmluZVByaXZhdGVGaWVsZChSZWdpc3RlcklEKiBiYXNlLCBSZWdp
c3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwogICAgICAgICBSZWdpc3RlcklE
KiBlbWl0UHJpdmF0ZUZpZWxkUHV0KFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3Bl
cnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRQcml2
YXRlTmFtZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHBy
b3BlcnR5KTsKKworICAgICAgICB2b2lkIGVtaXRDcmVhdGVQcml2YXRlQnJhbmQoUmVnaXN0ZXJJ
RCogZHN0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOworICAgICAgICB2
b2lkIGVtaXRJbnN0YWxsUHJpdmF0ZUJyYW5kKFJlZ2lzdGVySUQqIHRhcmdldCk7CisgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRHZXRQcml2YXRlQnJhbmQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3Rl
cklEKiBzY29wZSk7CisgICAgICAgIHZvaWQgZW1pdENoZWNrUHJpdmF0ZUJyYW5kKFJlZ2lzdGVy
SUQqIGJhc2UsIFJlZ2lzdGVySUQqIGJyYW5kKTsKIAogICAgICAgICB2b2lkIGVtaXRTdXBlclNh
bXBsZXJCZWdpbigpOwogICAgICAgICB2b2lkIGVtaXRTdXBlclNhbXBsZXJFbmQoKTsKQEAgLTEx
NzYsMTYgKzExODIsMTkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBEZXJpdmVkQ29u
dGV4dFR5cGUgbmV3RGVyaXZlZENvbnRleHRUeXBlID0gRGVyaXZlZENvbnRleHRUeXBlOjpOb25l
OwogCiAgICAgICAgICAgICBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplciA9IG1ldGFkYXRhLT5pc0NvbnN0cnVjdG9yQW5kTmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIoKSA/IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpZZXMgOiBOZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplcjo6Tm87CisgICAgICAgICAgICBQcml2YXRlQnJhbmRSZXF1aXJl
bWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9IG1ldGFkYXRhLT5wcml2YXRlQnJhbmRSZXF1
aXJlbWVudCgpOwogICAgICAgICAgICAgaWYgKFNvdXJjZVBhcnNlTW9kZVNldChTb3VyY2VQYXJz
ZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlLCBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5j
dGlvbk1vZGUsIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uQm9keU1vZGUpLmNv
bnRhaW5zKG1ldGFkYXRhLT5wYXJzZU1vZGUoKSkpIHsKICAgICAgICAgICAgICAgICBpZiAoY29u
c3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpFeHRlbmRzIHx8IGlzRGVyaXZlZENv
bnN0cnVjdG9yQ29udGV4dCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIG5ld0Rlcml2ZWRDb250
ZXh0VHlwZSA9IERlcml2ZWRDb250ZXh0VHlwZTo6RGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dDsK
ICAgICAgICAgICAgICAgICAgICAgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSBtX2NvZGVC
bG9jay0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKTsKKyAgICAgICAgICAgICAgICAgICAg
cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBtX2NvZGVCbG9jay0+cHJpdmF0ZUJyYW5kUmVxdWly
ZW1lbnQoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAobV9j
b2RlQmxvY2stPmlzQ2xhc3NDb250ZXh0KCkgfHwgaXNEZXJpdmVkQ2xhc3NDb250ZXh0KCkpCiAg
ICAgICAgICAgICAgICAgICAgIG5ld0Rlcml2ZWRDb250ZXh0VHlwZSA9IERlcml2ZWRDb250ZXh0
VHlwZTo6RGVyaXZlZE1ldGhvZENvbnRleHQ7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IGF1dG8gb3B0aW9uYWxWYXJpYWJsZXNVbmRlclREWiA9IGdldFZhcmlhYmxlc1VuZGVyVERaKCk7
CisgICAgICAgICAgICBPcHRpb25hbDxQcml2YXRlTmFtZUVudmlyb25tZW50PiBwYXJlbnRQcml2
YXRlTmFtZUVudmlyb25tZW50ID0gZ2V0QXZhaWxhYmxlUHJpdmF0ZUFjY2Vzc05hbWVzKCk7CiAK
ICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGVzZSBmbGFncywgUGFyc2VyTW9kZXMgYW5kIHByb3Bh
Z2F0aW9uIHRvIFhYWENvZGVCbG9ja3Mgc2hvdWxkIGJlIHJlb3JnYW5pemVkLgogICAgICAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NwpAQCAt
MTE5NCwxMCArMTIwMywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGlmIChwYXJz
ZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlICYmIG1ldGFkYXRhLT5jb25zdHJ1
Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpCiAgICAgICAgICAgICAgICAgY29u
c3RydWN0QWJpbGl0eSA9IENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdDsKIAotICAgICAg
ICAgICAgcmV0dXJuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9z
Y29wZU5vZGUtPnNvdXJjZSgpLCBtZXRhZGF0YSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlu
a2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJp
bGl0eSwgc2NyaXB0TW9kZSgpLCBXVEZNb3ZlKG9wdGlvbmFsVmFyaWFibGVzVW5kZXJURFopLCBu
ZXdEZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsKKyAgICAg
ICAgICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1f
c2NvcGVOb2RlLT5zb3VyY2UoKSwgbWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxp
bmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFi
aWxpdHksIHNjcmlwdE1vZGUoKSwgV1RGTW92ZShvcHRpb25hbFZhcmlhYmxlc1VuZGVyVERaKSwg
V1RGTW92ZShwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50KSwgbmV3RGVyaXZlZENvbnRleHRU
eXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQp
OwogICAgICAgICB9CiAKICAgICAgICAgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4gZ2V0VmFy
aWFibGVzVW5kZXJURFooKTsKKyAgICAgICAgT3B0aW9uYWw8UHJpdmF0ZU5hbWVFbnZpcm9ubWVu
dD4gZ2V0QXZhaWxhYmxlUHJpdmF0ZUFjY2Vzc05hbWVzKCk7CiAKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdENvbnN0cnVjdFZhcmFyZ3MoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5j
LCBSZWdpc3RlcklEKiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGFyZ3VtZW50cywgUmVnaXN0
ZXJJRCogZmlyc3RGcmVlUmVnaXN0ZXIsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgRGVidWdnYWJsZUNhbGwpOwogICAgICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsT3A+CkBAIC0xMjUzLDYgKzEyNjMsMTEgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICBtX2xhc3RJbnN0cnVjdGlvbiA9IHByZXZMYXN0SW5zdHJ1
Y3Rpb247CiAgICAgICAgIH0KIAorICAgICAgICBib29sIGlzUHJpdmF0ZU1ldGhvZChjb25zdCBJ
ZGVudGlmaWVyJik7CisKKyAgICAgICAgdm9pZCBwdXNoUHJpdmF0ZUFjY2Vzc05hbWVzKGNvbnN0
IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqKTsKKyAgICAgICAgdm9pZCBwb3BQcml2YXRlQWNjZXNz
TmFtZXMoKTsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIE9wdGlvblNldDxDb2RlR2VuZXJhdGlv
bk1vZGU+IG1fY29kZUdlbmVyYXRpb25Nb2RlOwogCkBAIC0xMjY2LDYgKzEyODEsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICAgICBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiBtX2NhY2hl
ZFBhcmVudFREWjsKICAgICAgICAgVmVjdG9yPFREWlN0YWNrRW50cnk+IG1fVERaU3RhY2s7Cisg
ICAgICAgIFZlY3RvcjxQcml2YXRlTmFtZUVudmlyb25tZW50PiBtX3ByaXZhdGVOYW1lc1N0YWNr
OwogICAgICAgICBPcHRpb25hbDxzaXplX3Q+IG1fdmFyU2NvcGVMZXhpY2FsU2NvcGVTdGFja0lu
ZGV4OwogICAgICAgICB2b2lkIHB1c2hURFpWYXJpYWJsZXMoY29uc3QgVmFyaWFibGVFbnZpcm9u
bWVudCYsIFREWkNoZWNrT3B0aW1pemF0aW9uLCBURFpSZXF1aXJlbWVudCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRl
eCAwZTFiOTVmNGY2YTguLmZiMDI3MmY0MTgyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtNTYzLDcgKzU2Myw3IEBA
IHZvaWQgUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdERlY2xhcmVQcml2YXRlRmllbGROYW1lcyhCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNyZWF0ZVBy
aXZhdGVTeW1ib2w7CiAgICAgZm9yIChQcm9wZXJ0eUxpc3ROb2RlKiBwID0gdGhpczsgcDsgcCA9
IHAtPm1fbmV4dCkgewogICAgICAgICBjb25zdCBQcm9wZXJ0eU5vZGUmIG5vZGUgPSAqcC0+bV9u
b2RlOwotICAgICAgICBpZiAobm9kZS50eXBlKCkgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGUpIHsK
KyAgICAgICAgaWYgKG5vZGUudHlwZSgpICYgUHJvcGVydHlOb2RlOjpQcml2YXRlRmllbGQpIHsK
ICAgICAgICAgICAgIGlmICghY3JlYXRlUHJpdmF0ZVN5bWJvbCkKICAgICAgICAgICAgICAgICBj
cmVhdGVQcml2YXRlU3ltYm9sID0gZ2VuZXJhdG9yLm1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxw
dHIsIExpbmtUaW1lQ29uc3RhbnQ6OmNyZWF0ZVByaXZhdGVTeW1ib2wpOwogCkBAIC01ODksNyAr
NTg5LDcgQEAgUmVnaXN0ZXJJRCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGUKICAgICAgICAgaWYgKHAtPmlzQ29tcHV0
ZWRDbGFzc0ZpZWxkKCkpCiAgICAgICAgICAgICBlbWl0U2F2ZUNvbXB1dGVkRmllbGROYW1lKGdl
bmVyYXRvciwgKnAtPm1fbm9kZSk7CiAKLSAgICAgICAgaWYgKHAtPmlzSW5zdGFuY2VDbGFzc0Zp
ZWxkKCkpIHsKKyAgICAgICAgaWYgKHAtPmlzSW5zdGFuY2VDbGFzc0ZpZWxkKCkgJiYgIShwLT5t
X25vZGUtPnR5cGUoKSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0ZU1ldGhvZCkpIHsKICAgICAgICAg
ICAgIEFTU0VSVChpbnN0YW5jZUZpZWxkTG9jYXRpb25zKTsKICAgICAgICAgICAgIGluc3RhbmNl
RmllbGRMb2NhdGlvbnMtPmFwcGVuZChwLT5wb3NpdGlvbigpKTsKICAgICAgICAgICAgIGNvbnRp
bnVlOwpAQCAtNzU3LDcgKzc1Nyw3IEBAIFJlZ2lzdGVySUQqIFByb3BlcnR5TGlzdE5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlCiB2b2lkIFBy
b3BlcnR5TGlzdE5vZGU6OmVtaXRQdXRDb25zdGFudFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIG5ld09iaiwgUHJvcGVydHlOb2RlJiBub2RlKQogewog
ICAgIC8vIFByaXZhdGUgZmllbGRzIGFyZSBoYW5kbGVkIGluIGEgc3ludGhldGljIGNsYXNzRmll
bGRJbml0aWFsaXplciBmdW5jdGlvbiwgbm90IGhlcmUuCi0gICAgQVNTRVJUKCEobm9kZS50eXBl
KCkgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGUpKTsKKyAgICBBU1NFUlQoIShub2RlLnR5cGUoKSAm
IFByb3BlcnR5Tm9kZTo6UHJpdmF0ZUZpZWxkKSk7CiAKICAgICBpZiAoUHJvcGVydHlOb2RlOjpp
c1VuZGVyc2NvcmVQcm90b1NldHRlcihnZW5lcmF0b3Iudm0oKSwgbm9kZSkpIHsKICAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHByb3RvdHlwZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShub2RlLm1f
YXNzaWduKTsKQEAgLTc4Miw2ICs3ODIsMTQgQEAgdm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0
UHV0Q29uc3RhbnRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWcKIAog
ICAgIGlmIChub2RlLmlzQ2xhc3NQcm9wZXJ0eSgpKSB7CiAgICAgICAgIEFTU0VSVChub2RlLm5l
ZWRzU3VwZXJCaW5kaW5nKCkpOworCisgICAgICAgIGlmIChub2RlLnR5cGUoKSAmIFByb3BlcnR5
Tm9kZTo6UHJpdmF0ZU1ldGhvZCkgeworICAgICAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJh
dG9yLnZhcmlhYmxlKCpub2RlLm5hbWUoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1
dFRvU2NvcGUoZ2VuZXJhdG9yLnNjb3BlUmVnaXN0ZXIoKSwgdmFyLCB2YWx1ZS5nZXQoKSwgRG9O
b3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6Q29uc3RJbml0aWFsaXphdGlv
bik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gcHJvcGVydHlOYW1lUmVnaXN0ZXI7CiAgICAgICAgIGlmIChub2RlLm5hbWUoKSkK
ICAgICAgICAgICAgIHByb3BlcnR5TmFtZSA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCAq
bm9kZS5uYW1lKCkpOwogCkBAIC05MTAsMTQgKzkxOCwyNCBAQCBSZWdpc3RlcklEKiBEb3RBY2Nl
c3Nvck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcgogCiBSZWdpc3RlcklEKiBCYXNlRG90Tm9kZTo6ZW1pdEdldFByb3BlcnR5VmFsdWUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBi
YXNlLCBSZWZQdHI8UmVnaXN0ZXJJRD4mIHRoaXNWYWx1ZSkKIHsKLSAgICBpZiAoaXNQcml2YXRl
RmllbGQoKSkgeworICAgIGlmIChpc1ByaXZhdGVNZW1iZXIoKSkgeworICAgICAgICBpZiAoZ2Vu
ZXJhdG9yLmlzUHJpdmF0ZU1ldGhvZChpZGVudGlmaWVyKCkpKSB7CisgICAgICAgICAgICBWYXJp
YWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnRpZmllcigpKTsKKyAgICAgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51
bGxwdHIsIHZhcik7CisKKyAgICAgICAgICAgIFJlZ2lzdGVySUQqIHByaXZhdGVCcmFuZFN5bWJv
bCA9IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZUJyYW5kKGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KSwgc2NvcGUuZ2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDaGVja1ByaXZhdGVC
cmFuZChiYXNlLCBwcml2YXRlQnJhbmRTeW1ib2wpOworCisgICAgICAgICAgICByZXR1cm4gZ2Vu
ZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZHN0LCBzY29wZS5nZXQoKSwgdmFyLCBUaHJvd0lmTm90
Rm91bmQpOworICAgICAgICB9CisKICAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZh
cmlhYmxlKG1faWRlbnQpOwogICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCF2YXIubG9jYWwo
KSwgIlByaXZhdGUgRmllbGQgbmFtZXMgbXVzdCBiZSBzdG9yZWQgaW4gY2FwdHVyZWQgdmFyaWFi
bGVzIik7CiAKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVt
aXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHByaXZhdGVOYW1lID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICBnZW5lcmF0
b3IuZW1pdEdldEZyb21TY29wZShwcml2YXRlTmFtZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwg
RG9Ob3RUaHJvd0lmTm90Rm91bmQpOwotICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXREaXJl
Y3RHZXRCeVZhbChkc3QsIGJhc2UsIHByaXZhdGVOYW1lLmdldCgpKTsKKyAgICAgICAgcmV0dXJu
IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZU5hbWUoZHN0LCBiYXNlLCBwcml2YXRlTmFtZS5nZXQo
KSk7CiAgICAgfQogCiAgICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkgewpAQCAtOTM3LDcg
Kzk1NSwxOCBAQCBSZWdpc3RlcklEKiBCYXNlRG90Tm9kZTo6ZW1pdEdldFByb3BlcnR5VmFsdWUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaQogCiBSZWdpc3RlcklEKiBCYXNlRG90
Tm9kZTo6ZW1pdFB1dFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZWZQdHI8UmVnaXN0ZXJJRD4mIHRoaXNW
YWx1ZSkKIHsKLSAgICBpZiAoaXNQcml2YXRlRmllbGQoKSkgeworICAgIGlmIChpc1ByaXZhdGVN
ZW1iZXIoKSkgeworICAgICAgICBhdXRvIGlkZW50aWZpZXJOYW1lID0gaWRlbnRpZmllcigpOwor
ICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzUHJpdmF0ZU1ldGhvZChpZGVudGlmaWVyTmFtZSkpIHsK
KyAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudGlmaWVy
TmFtZSk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3Iu
ZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOworCisgICAgICAgICAgICBSZWdpc3RlcklE
KiBwcml2YXRlQnJhbmRTeW1ib2wgPSBnZW5lcmF0b3IuZW1pdEdldFByaXZhdGVCcmFuZChnZW5l
cmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0Q2hlY2tQcml2YXRlQnJhbmQoYmFzZSwgcHJpdmF0ZUJyYW5kU3ltYm9sKTsKKworICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvd1R5cGVFcnJvcigiVHJ5aW5nIHRvIGFjY2VzcyBh
IG5vdCBkZWZpbmVkIHByaXZhdGUgc2V0dGVyIik7CisgICAgICAgIH0KKwogICAgICAgICBWYXJp
YWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUobV9pZGVudCk7CiAgICAgICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UoIXZhci5sb2NhbCgpLCAiUHJpdmF0ZSBGaWVsZCBuYW1lcyBtdXN0IGJlIHN0
b3JlZCBpbiBjYXB0dXJlZCB2YXJpYWJsZXMiKTsKIApAQCAtMTA5NSwxMiArMTEyNCwxNCBAQCBS
ZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZQogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUaGlz
VG9BcnJvd0Z1bmN0aW9uQ29udGV4dFNjb3BlKCk7CiAKICAgICAgICAgLy8gSW5pdGlhbGl6ZSBp
bnN0YW5jZSBmaWVsZHMgYWZ0ZXIgc3VwZXItY2FsbC4KKyAgICAgICAgaWYgKE9wdGlvbnM6OnVz
ZVByaXZhdGVNZXRob2RzKCkgJiYgZ2VuZXJhdG9yLnByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkg
PT0gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5lZWRlZCkKKyAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0SW5zdGFsbFByaXZhdGVCcmFuZChnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkpOworCiAg
ICAgICAgIGlmIChnZW5lcmF0b3IubmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSA9PSBOZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplcjo6WWVzKSB7CiAgICAgICAgICAgICBBU1NFUlQoZ2VuZXJh
dG9yLmlzQ29uc3RydWN0b3IoKSB8fCBnZW5lcmF0b3IuaXNEZXJpdmVkQ29uc3RydWN0b3JDb250
ZXh0KCkpOwogICAgICAgICAgICAgZnVuYyA9IGdlbmVyYXRvci5lbWl0TG9hZERlcml2ZWRDb25z
dHJ1Y3RvcigpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRJbnN0YW5jZUZpZWxkSW5pdGlh
bGl6YXRpb25JZk5lZWRlZChnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCksIGZ1bmMuZ2V0KCksIGRp
dm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIH0KLQogICAgICAgICBy
ZXR1cm4gcmV0OwogICAgIH0KIApAQCAtMjI1NCwxNCArMjI4NSwxNCBAQCBSZWdpc3RlcklEKiBQ
b3N0Zml4Tm9kZTo6ZW1pdERvdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBkc3QpCiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRvdEFjY2Vzc29y
LT5kaXZvdCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RTdGFydCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RF
bmQoKSk7CiAKLSAgICBpZiAoZG90QWNjZXNzb3ItPmlzUHJpdmF0ZUZpZWxkKCkpIHsKKyAgICBp
ZiAoZG90QWNjZXNzb3ItPmlzUHJpdmF0ZU1lbWJlcigpKSB7CiAgICAgICAgIEFTU0VSVCghYmFz
ZUlzU3VwZXIpOwogICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRl
bnQpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJl
c29sdmVTY29wZShudWxscHRyLCB2YXIpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJp
dmF0ZU5hbWUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgICAgIGdlbmVyYXRvci5l
bWl0R2V0RnJvbVNjb3BlKHByaXZhdGVOYW1lLmdldCgpLCBzY29wZS5nZXQoKSwgdmFyLCBEb05v
dFRocm93SWZOb3RGb3VuZCk7CiAKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0g
Z2VuZXJhdG9yLmVtaXREaXJlY3RHZXRCeVZhbChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGJh
c2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlTmFtZShnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCksIGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpKTsKICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IG9sZFZhbHVlID0gZW1pdFBvc3RJbmNPckRlYyhnZW5lcmF0b3IsIGdlbmVyYXRv
ci50ZW1wRGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCksIG1fb3BlcmF0b3IpOwogICAgICAg
ICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2
b3RFbmQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJpdmF0ZUZpZWxkUHV0KGJhc2UuZ2V0
KCksIHByaXZhdGVOYW1lLmdldCgpLCB2YWx1ZS5nZXQoKSk7CkBAIC0yNDkzLDE0ICsyNTI0LDE0
IEBAIFJlZ2lzdGVySUQqIFByZWZpeE5vZGU6OmVtaXREb3QoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9u
SW5mbyhkb3RBY2Nlc3Nvci0+ZGl2b3QoKSwgZG90QWNjZXNzb3ItPmRpdm90U3RhcnQoKSwgZG90
QWNjZXNzb3ItPmRpdm90RW5kKCkpOwogICAgIFJlZ2lzdGVySUQqIHZhbHVlOwotICAgIGlmIChk
b3RBY2Nlc3Nvci0+aXNQcml2YXRlRmllbGQoKSkgeworICAgIGlmIChkb3RBY2Nlc3Nvci0+aXNQ
cml2YXRlTWVtYmVyKCkpIHsKICAgICAgICAgQVNTRVJUKCFiYXNlTm9kZS0+aXNTdXBlck5vZGUo
KSk7CiAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudCk7CiAg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNj
b3BlKG51bGxwdHIsIHZhcik7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFt
ZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRG
cm9tU2NvcGUocHJpdmF0ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJ
Zk5vdEZvdW5kKTsKIAotICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0RGlyZWN0R2V0QnlW
YWwocHJvcERzdC5nZXQoKSwgYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCkpOworICAgICAg
ICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZU5hbWUocHJvcERzdC5nZXQoKSwgYmFz
ZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCkpOwogICAgICAgICBlbWl0SW5jT3JEZWMoZ2VuZXJh
dG9yLCB2YWx1ZSwgbV9vcGVyYXRvcik7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lv
bkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRQcml2YXRlRmllbGRQdXQoYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCksIHZh
bHVlKTsKQEAgLTQ4OTcsNiArNDkyOCwxMyBAQCBSZWdpc3RlcklEKiBDbGFzc0V4cHJOb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogICAg
IGlmIChtX25lZWRzTGV4aWNhbFNjb3BlKQogICAgICAgICBnZW5lcmF0b3IucHVzaExleGljYWxT
Y29wZSh0aGlzLCBCeXRlY29kZUdlbmVyYXRvcjo6VERaQ2hlY2tPcHRpbWl6YXRpb246Ok9wdGlt
aXplLCBCeXRlY29kZUdlbmVyYXRvcjo6TmVzdGVkU2NvcGVUeXBlOjpJc05lc3RlZCk7CiAKKyAg
ICBib29sIGhhc1ByaXZhdGVOYW1lcyA9ICEhbV9sZXhpY2FsVmFyaWFibGVzLnByaXZhdGVOYW1l
c1NpemUoKTsKKyAgICBib29sIHNob3VsZEVtaXRQcml2YXRlQnJhbmQgPSBtX2xleGljYWxWYXJp
YWJsZXMuaGFzUHJpdmF0ZU1ldGhvZE9yQWNjZXNzb3IoKTsKKyAgICBpZiAoaGFzUHJpdmF0ZU5h
bWVzKQorICAgICAgICBnZW5lcmF0b3IucHVzaFByaXZhdGVBY2Nlc3NOYW1lcyhtX2xleGljYWxW
YXJpYWJsZXMucHJpdmF0ZU5hbWVFbnZpcm9ubWVudCgpKTsKKyAgICBpZiAoc2hvdWxkRW1pdFBy
aXZhdGVCcmFuZCkKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRDcmVhdGVQcml2YXRlQnJhbmQoZ2Vu
ZXJhdG9yLnNjb3BlUmVnaXN0ZXIoKSwgbV9wb3NpdGlvbiwgbV9wb3NpdGlvbiwgbV9wb3NpdGlv
bik7CisKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3VwZXJjbGFzczsKICAgICBpZiAobV9jbGFz
c0hlcml0YWdlKSB7CiAgICAgICAgIHN1cGVyY2xhc3MgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5
KCk7CkBAIC00OTA3LDE3ICs0OTQ1LDE4IEBAIFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAgICAg
Ym9vbCBuZWVkc0hvbWVPYmplY3QgPSBmYWxzZTsKIAogICAgIGF1dG8gbmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIgPSB0aGlzLT5oYXNJbnN0YW5jZUZpZWxkcygpID8gTmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXI6OlllcyA6IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObzsKLQorICAg
IGF1dG8gcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBzaG91bGRFbWl0UHJpdmF0ZUJyYW5kID8g
UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5lZWRlZCA6IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50
OjpOb25lOwogICAgIGlmIChtX2NvbnN0cnVjdG9yRXhwcmVzc2lvbikgewogICAgICAgICBBU1NF
UlQobV9jb25zdHJ1Y3RvckV4cHJlc3Npb24tPmlzRnVuY0V4cHJOb2RlKCkpOwogICAgICAgICBG
dW5jdGlvbk1ldGFkYXRhTm9kZSogbWV0YWRhdGEgPSBzdGF0aWNfY2FzdDxGdW5jRXhwck5vZGUq
PihtX2NvbnN0cnVjdG9yRXhwcmVzc2lvbiktPm1ldGFkYXRhKCk7CiAgICAgICAgIG1ldGFkYXRh
LT5zZXRFY21hTmFtZShlY21hTmFtZSgpKTsKICAgICAgICAgbWV0YWRhdGEtPnNldENsYXNzU291
cmNlKG1fY2xhc3NTb3VyY2UpOwogICAgICAgICBtZXRhZGF0YS0+c2V0TmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIobmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPT0gTmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXI6Olllcyk7CisgICAgICAgIG1ldGFkYXRhLT5zZXRQcml2YXRlQnJhbmRSZXF1
aXJlbWVudChwcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7CiAgICAgICAgIGNvbnN0cnVjdG9yID0g
Z2VuZXJhdG9yLmVtaXROb2RlKGNvbnN0cnVjdG9yLmdldCgpLCBtX2NvbnN0cnVjdG9yRXhwcmVz
c2lvbik7CiAgICAgICAgIG5lZWRzSG9tZU9iamVjdCA9IG1fY2xhc3NIZXJpdGFnZSB8fCBtZXRh
ZGF0YS0+c3VwZXJCaW5kaW5nKCkgPT0gU3VwZXJCaW5kaW5nOjpOZWVkZWQ7CiAgICAgfSBlbHNl
Ci0gICAgICAgIGNvbnN0cnVjdG9yID0gZ2VuZXJhdG9yLmVtaXROZXdEZWZhdWx0Q29uc3RydWN0
b3IoY29uc3RydWN0b3IuZ2V0KCksIG1fY2xhc3NIZXJpdGFnZSA/IENvbnN0cnVjdG9yS2luZDo6
RXh0ZW5kcyA6IENvbnN0cnVjdG9yS2luZDo6QmFzZSwgbV9uYW1lLCBlY21hTmFtZSgpLCBtX2Ns
YXNzU291cmNlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcik7CisgICAgICAgIGNvbnN0cnVj
dG9yID0gZ2VuZXJhdG9yLmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoY29uc3RydWN0b3IuZ2V0
KCksIG1fY2xhc3NIZXJpdGFnZSA/IENvbnN0cnVjdG9yS2luZDo6RXh0ZW5kcyA6IENvbnN0cnVj
dG9yS2luZDo6QmFzZSwgbV9uYW1lLCBlY21hTmFtZSgpLCBtX2NsYXNzU291cmNlLCBuZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplciwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOwogCiAgICAgY29u
c3QgYXV0byYgcHJvcGVydHlOYW1lcyA9IGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCk7CiAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHByb3RvdHlwZSA9IGdlbmVyYXRvci5lbWl0TmV3T2JqZWN0KGdl
bmVyYXRvci5uZXdUZW1wb3JhcnkoKSk7CkBAIC00OTk2LDYgKzUwMzUsOSBAQCBSZWdpc3RlcklE
KiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRAogICAgIGlmIChtX25lZWRzTGV4aWNhbFNjb3BlKQogICAgICAgICBnZW5l
cmF0b3IucG9wTGV4aWNhbFNjb3BlKHRoaXMpOwogCisgICAgaWYgKGhhc1ByaXZhdGVOYW1lcykK
KyAgICAgICAgZ2VuZXJhdG9yLnBvcFByaXZhdGVBY2Nlc3NOYW1lcygpOworCiAgICAgcmV0dXJu
IGdlbmVyYXRvci5tb3ZlKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgY29uc3RydWN0
b3IuZ2V0KCkpLCBjb25zdHJ1Y3Rvci5nZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCmluZGV4IDg3N2U2MzI1
NTBiYy4uNzQwYWQ4MmM3OTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKQEAgLTI1OSwxMSArMjU5LDExIEBAIEpTVmFs
dWUgRGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKGNvbnN0IFN0
cmluZyYgc2NyaXB0LCBKU09iCiAgICAgICAgIGV2YWxDb250ZXh0VHlwZSA9IEV2YWxDb250ZXh0
VHlwZTo6Tm9uZTsKIAogICAgIFREWkVudmlyb25tZW50IHZhcmlhYmxlc1VuZGVyVERaOwotICAg
IFZhcmlhYmxlRW52aXJvbm1lbnQgcHJpdmF0ZU5hbWVzOwotICAgIEpTU2NvcGU6OmNvbGxlY3RD
bG9zdXJlVmFyaWFibGVzVW5kZXJURFooc2NvcGUoKS0+anNTY29wZSgpLCB2YXJpYWJsZXNVbmRl
clREWiwgcHJpdmF0ZU5hbWVzKTsKKyAgICBQcml2YXRlTmFtZUVudmlyb25tZW50IHByaXZhdGVO
YW1lRW52aXJvbm1lbnQ7CisgICAgSlNTY29wZTo6Y29sbGVjdENsb3N1cmVWYXJpYWJsZXNVbmRl
clREWihzY29wZSgpLT5qc1Njb3BlKCksIHZhcmlhYmxlc1VuZGVyVERaLCBwcml2YXRlTmFtZUVu
dmlyb25tZW50KTsKIAogICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gY29kZUJsb2NrLT5vd25lckV4
ZWN1dGFibGUoKS0+aXNJblN0cmljdENvbnRleHQoKSA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVD
TUFNb2RlOjpzbG9wcHkoKTsKLSAgICBhdXRvKiBldmFsID0gRGlyZWN0RXZhbEV4ZWN1dGFibGU6
OmNyZWF0ZShnbG9iYWxPYmplY3QsIG1ha2VTb3VyY2Uoc2NyaXB0LCBjYWxsRnJhbWUtPmNhbGxl
clNvdXJjZU9yaWdpbih2bSkpLCBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmRlcml2
ZWRDb250ZXh0VHlwZSgpLCBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPm5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyKCksIGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+aXNB
cnJvd0Z1bmN0aW9uKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5zaWRlT3Jk
aW5hcnlGdW5jdGlvbigpLCBldmFsQ29udGV4dFR5cGUsICZ2YXJpYWJsZXNVbmRlclREWiwgJnBy
aXZhdGVOYW1lcywgZWNtYU1vZGUpOworICAgIGF1dG8qIGV2YWwgPSBEaXJlY3RFdmFsRXhlY3V0
YWJsZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgbWFrZVNvdXJjZShzY3JpcHQsIGNhbGxGcmFtZS0+
Y2FsbGVyU291cmNlT3JpZ2luKHZtKSksIGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+
ZGVyaXZlZENvbnRleHRUeXBlKCksIGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+bmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygp
LT5wcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpLCBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2Nr
KCktPmlzQXJyb3dGdW5jdGlvbigpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0lu
c2lkZU9yZGluYXJ5RnVuY3Rpb24oKSwgZXZhbENvbnRleHRUeXBlLCAmdmFyaWFibGVzVW5kZXJU
RFosICZwcml2YXRlTmFtZUVudmlyb25tZW50LCBlY21hTW9kZSk7CiAgICAgaWYgKFVOTElLRUxZ
KGNhdGNoU2NvcGUuZXhjZXB0aW9uKCkpKSB7CiAgICAgICAgIGV4Y2VwdGlvbiA9IGNhdGNoU2Nv
cGUuZXhjZXB0aW9uKCk7CiAgICAgICAgIGNhdGNoU2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaAppbmRleCA3YjViNjg0NTg4NWEuLjQ2MGE2MGU0MjM5MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkFycmF5Q29uc3RydWN0b3Iu
aCIKICNpbmNsdWRlICJBcnJheVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50
aWZpZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuaCIKICNp
bmNsdWRlICJERkdBYnN0cmFjdEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RJ
bnRlcnByZXRlckNsb2JiZXJTdGF0ZS5oIgogI2luY2x1ZGUgIkRPTUpJVEdldHRlclNldHRlci5o
IgpAQCAtNDcsNiArNDgsNyBAQAogI2luY2x1ZGUgIk1hdGhDb21tb24uaCIKICNpbmNsdWRlICJO
dW1iZXJDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKKyNpbmNsdWRl
ICJTZXRQcml2YXRlQnJhbmRTdGF0dXMuaCIKICNpbmNsdWRlICJTdHJpbmdPYmplY3QuaCIKICNp
bmNsdWRlICJTdHJ1Y3R1cmVDYWNoZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVJhcmVEYXRhSW5s
aW5lcy5oIgpAQCAtNDAzNSw2ICs0MDM3LDggQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBDaGVja1ByaXZhdGVCcmFuZDoKKyAgICBj
YXNlIFNldFByaXZhdGVCcmFuZDoKICAgICBjYXNlIFB1dFByaXZhdGVOYW1lOiB7CiAgICAgICAg
IGNsb2JiZXJXb3JsZCgpOwogICAgICAgICBicmVhazsKQEAgLTQzNjUsNiArNDM2OSw4IEBAIGJv
b2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3Rz
KHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAg
IGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6
CisgICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1czoKKyAgICBjYXNlIEZpbHRl
clNldFByaXZhdGVCcmFuZFN0YXR1czoKICAgICBjYXNlIENsZWFyQ2F0Y2hMb2NhbHM6CiAgICAg
ICAgIGJyZWFrOwogCkBAIC00NTUzLDYgKzQ1NTksMjEgQEAgdm9pZCBBYnN0cmFjdEludGVycHJl
dGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZmlsdGVySUNTdGF0dXMoTm9kZSogbm9kZSkKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1
czogeworICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICBpZiAodmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkKKyAgICAgICAg
ICAgIG5vZGUtPmNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzKCktPmZpbHRlcih2YWx1ZS5tX3N0cnVj
dHVyZS50b1N0cnVjdHVyZVNldCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2Fz
ZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6IHsKKyAgICAgICAgQWJzdHJhY3RWYWx1ZSYg
dmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgaWYgKHZhbHVlLm1fc3Ry
dWN0dXJlLmlzRmluaXRlKCkpCisgICAgICAgICAgICBub2RlLT5zZXRQcml2YXRlQnJhbmRTdGF0
dXMoKS0+ZmlsdGVyKHZhbHVlLm1fc3RydWN0dXJlLnRvU3RydWN0dXJlU2V0KCkpOworICAgICAg
ICBicmVhazsKKyAgICB9CisKKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKaW5kZXgg
NmIzNjE5OTVlMmQ4Li42ZjgxNzM4OGFjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcApAQCAtNDA2
LDYgKzQwNiw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlu
a1N0YXR1czoKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKICAgICAg
ICAgICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgorICAgICAgICAgICAgICAgIGNh
c2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CisgICAgICAgICAgICAgICAgY2FzZSBG
aWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
CiAgICAgICAgICAgICAgICAgY2FzZSBDaGVja0FycmF5T3JFbXB0eToKQEAgLTEyNjYsNyArMTI2
OCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVz
OgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAgICAgICAgICAg
ICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6Ci0gICAgICAgICAgICAgICAgY2FzZSBGaWx0
ZXJEZWxldGVCeVN0YXR1czogeworICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlT
dGF0dXM6CisgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1
czoKKyAgICAgICAgICAgICAgICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czogewog
ICAgICAgICAgICAgICAgICAgICBpZiAoIWlzRWxpbWluYXRlZEFsbG9jYXRpb24obm9kZS0+Y2hp
bGQxKCkubm9kZSgpKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgICAgICBub2RlLT5yZW1vdmUobV9ncmFwaCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGMzMDJiY2VkMDg5Yy4uZjNmZTli
OTQxNzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlT3BlcmFuZHNGb3JD
aGVja3BvaW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaCIKICNp
bmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgorI2luY2x1ZGUgIkNoZWNrUHJpdmF0ZUJyYW5kU3Rh
dHVzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrV2l0aEpJ
VFR5cGUuaCIKICNpbmNsdWRlICJDb21tb25TbG93UGF0aHMuaCIKQEAgLTc0LDYgKzc1LDcgQEAK
ICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCiAj
aW5jbHVkZSAiUmVnRXhwUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiU2V0UHJpdmF0ZUJyYW5kU3Rh
dHVzLmgiCiAjaW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKICNpbmNsdWRlICJTdHJpbmdDb25z
dHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCkBAIC02MjU4LDYgKzYy
NjAsODkgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkK
ICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9ieV92YWxfd2l0aF90aGlzKTsKICAgICAg
ICAgfQogCisgICAgICAgIGNhc2Ugb3BfY2hlY2tfcHJpdmF0ZV9icmFuZDogeworICAgICAgICAg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BDaGVja1ByaXZhdGVC
cmFuZD4oKTsKKyAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsK
KyAgICAgICAgICAgIE5vZGUqIGJyYW5kID0gZ2V0KGJ5dGVjb2RlLm1fYnJhbmQpOworICAgICAg
ICAgICAgYm9vbCBjb21waWxlZEFzQ2hlY2tTdHJ1Y3R1cmUgPSBmYWxzZTsKKworICAgICAgICAg
ICAgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMgY2hlY2tTdGF0dXMgPSBDaGVja1ByaXZhdGVCcmFu
ZFN0YXR1czo6Y29tcHV0ZUZvcigKKyAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5t
X3Byb2ZpbGVkQmxvY2ssCisgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNl
bGluZU1hcCwgbV9pY0NvbnRleHRTdGFjaywKKyAgICAgICAgICAgICAgICBjdXJyZW50Q29kZU9y
aWdpbigpKTsKKworICAgICAgICAgICAgaWYgKCFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9m
aWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRJZGVudCkKKyAgICAgICAgICAgICAg
ICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJl
bnRJbmRleCwgQmFkVHlwZSkKKyAgICAgICAgICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+
bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ29uc3RhbnRWYWx1
ZSkpIHsKKworICAgICAgICAgICAgICAgIGlmIChDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZp
ZXIgPSBjaGVja1N0YXR1cy5zaW5nbGVJZGVudGlmaWVyKCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZShpZGVudGlmaWVyLnVpZCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKGlkZW50aWZpZXIuaXNTeW1ib2woKSk7CisgICAgICAgICAg
ICAgICAgICAgIEZyb3plblZhbHVlKiBmcm96ZW4gPSBtX2dyYXBoLmZyZWV6ZVN0cm9uZyhpZGVu
dGlmaWVyLmNlbGwoKSk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tJc0Nv
bnN0YW50LCBPcEluZm8oZnJvemVuKSwgYnJhbmQpOworCisgICAgICAgICAgICAgICAgICAgIGlm
IChjaGVja1N0YXR1cy5pc1NpbXBsZSgpICYmIGNoZWNrU3RhdHVzLnZhcmlhbnRzKCkuc2l6ZSgp
ICYmIE9wdGlvbnM6OnVzZUFjY2Vzc0lubGluaW5nKCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChjaGVja1N0YXR1cy52YXJpYW50cygpLnNpemUoKSA9PSAxKTsgLy8gSWYgd2Ug
aGF2ZSBzaW5nbGUgaWRlbnRpZmllciwgd2Ugc2hvdWxkIGhhdmUgb25seSAxIHZhcmlhbnQuCisg
ICAgICAgICAgICAgICAgICAgICAgICBDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQgdmFyaWFudCA9
IGNoZWNrU3RhdHVzLnZhcmlhbnRzKClbMF07CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGFk
ZFRvR3JhcGgoRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1f
cGxhbi5yZWNvcmRlZFN0YXR1c2VzKCkuYWRkQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMoY3VycmVu
dENvZGVPcmlnaW4oKSwgY2hlY2tTdGF0dXMpKSwgYmFzZSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1
cmVTZXQodmFyaWFudC5zdHJ1Y3R1cmVTZXQoKSkpLCBiYXNlKTsKKworICAgICAgICAgICAgICAg
ICAgICAgICAgY29tcGlsZWRBc0NoZWNrU3RydWN0dXJlID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKCFjb21waWxlZEFzQ2hlY2tTdHJ1Y3R1cmUpCisgICAgICAgICAgICAgICAgYWRkVG9HcmFw
aChDaGVja1ByaXZhdGVCcmFuZCwgYmFzZSwgYnJhbmQpOworCisgICAgICAgICAgICBORVhUX09Q
Q09ERShvcF9jaGVja19wcml2YXRlX2JyYW5kKTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ug
b3Bfc2V0X3ByaXZhdGVfYnJhbmQ6IHsKKyAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wU2V0UHJpdmF0ZUJyYW5kPigpOworICAgICAgICAgICAgTm9k
ZSogYmFzZSA9IGdldChieXRlY29kZS5tX2Jhc2UpOworICAgICAgICAgICAgTm9kZSogYnJhbmQg
PSBnZXQoYnl0ZWNvZGUubV9icmFuZCk7CisKKyAgICAgICAgICAgIGJvb2wgaW5saW5lZFNldFBy
aXZhdGVCcmFuZCA9IGZhbHNlOworICAgICAgICAgICAgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzIHNl
dFN0YXR1cyA9IFNldFByaXZhdGVCcmFuZFN0YXR1czo6Y29tcHV0ZUZvcigKKyAgICAgICAgICAg
ICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssCisgICAgICAgICAgICAgICAg
bV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwgbV9pY0NvbnRleHRTdGFjaywKKyAgICAg
ICAgICAgICAgICBjdXJyZW50Q29kZU9yaWdpbigpKTsKKworICAgICAgICAgICAgaWYgKCFtX2lu
bGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBC
YWRJZGVudCkKKyAgICAgICAgICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJv
ZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkVHlwZSkKKyAgICAgICAgICAgICAg
ICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJl
bnRJbmRleCwgQmFkQ29uc3RhbnRWYWx1ZSkpIHsKKworICAgICAgICAgICAgICAgIGlmIChDYWNo
ZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBzZXRTdGF0dXMuc2luZ2xlSWRlbnRpZmllcigp
KSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChpZGVudGlmaWVyLmlzU3ltYm9sKCkpOwor
ICAgICAgICAgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVT
dHJvbmcoaWRlbnRpZmllci5jZWxsKCkpOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBo
KENoZWNrSXNDb25zdGFudCwgT3BJbmZvKGZyb3plbiksIGJyYW5kKTsKKworICAgICAgICAgICAg
ICAgICAgICBpZiAoc2V0U3RhdHVzLmlzU2ltcGxlKCkgJiYgc2V0U3RhdHVzLnZhcmlhbnRzKCku
c2l6ZSgpID09IDEgJiYgT3B0aW9uczo6dXNlQWNjZXNzSW5saW5pbmcoKSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgU2V0UHJpdmF0ZUJyYW5kVmFyaWFudCB2YXJpYW50ID0gc2V0U3RhdHVz
LnZhcmlhbnRzKClbMF07CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRmls
dGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRT
dGF0dXNlcygpLmFkZFNldFByaXZhdGVCcmFuZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBz
ZXRTdGF0dXMpKSwgYmFzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENo
ZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5vbGRT
dHJ1Y3R1cmUoKSkpLCBiYXNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCh2YXJp
YW50Lm9sZFN0cnVjdHVyZSgpLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlk
YXRlZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCh2YXJpYW50Lm5ld1N0cnVj
dHVyZSgpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNpdGlvbiogdHJhbnNpdGlv
biA9IG1fZ3JhcGgubV90cmFuc2l0aW9ucy5hZGQoCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKSwgbV9n
cmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKSk7CisKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0U3RydWN0dXJlLCBPcEluZm8odHJhbnNp
dGlvbiksIGJhc2UpOworCisgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVkU2V0UHJpdmF0
ZUJyYW5kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFpbmxpbmVkU2V0UHJpdmF0ZUJyYW5k
KQorICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoU2V0UHJpdmF0ZUJyYW5kLCBiYXNlLCBicmFu
ZCk7CisKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3NldF9wcml2YXRlX2JyYW5kKTsKKyAg
ICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3BfcHV0X3ByaXZhdGVfbmFtZTogewogICAgICAgICAg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFt
ZT4oKTsKICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCAxMGI4
NWFkOTE1YTkuLmFjYTAwZGU0ZjY1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjk0LDYgKzI5NCw4IEBAIENhcGFiaWxpdHlMZXZlbCBj
YXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBj
b25zdCBJCiAgICAgY2FzZSBvcF9zdXBlcl9zYW1wbGVyX2VuZDoKICAgICBjYXNlIG9wX2dldF9w
cml2YXRlX25hbWU6CiAgICAgY2FzZSBvcF9wdXRfcHJpdmF0ZV9uYW1lOgorICAgIGNhc2Ugb3Bf
c2V0X3ByaXZhdGVfYnJhbmQ6CisgICAgY2FzZSBvcF9jaGVja19wcml2YXRlX2JyYW5kOgogICAg
ICAgICByZXR1cm4gQ2FuQ29tcGlsZUFuZElubGluZTsKIAogICAgIGNhc2Ugb3Bfc3dpdGNoX3N0
cmluZzogLy8gRG9uJ3QgaW5saW5lIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBjb3B5IHN0cmlu
ZyB0YWJsZXMgaW4gdGhlIGNvbmN1cnJlbnQgSklULgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaAppbmRleCA1NGUzNWU3YzU2OGEuLmE4NTIzNzc5YTFmNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTUwNSw2ICs1MDUsOCBA
QCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVu
Y3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoK
ICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3Rh
dHVzOgorICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CisgICAgY2FzZSBG
aWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAgICAgIHdyaXRlKFNpZGVTdGF0ZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICAgICAgCkBAIC02NzcsNiArNjc5LDggQEAgdm9pZCBjbG9iYmVy
aXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNv
bnN0IFdyaXRlRnUKICAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKICAgICBjYXNlIEdldFBy
aXZhdGVOYW1lOgogICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOgorICAgIGNhc2UgQ2hlY2tQ
cml2YXRlQnJhbmQ6CisgICAgY2FzZSBTZXRQcml2YXRlQnJhbmQ6CiAgICAgY2FzZSBEZWZpbmVE
YXRhUHJvcGVydHk6CiAgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAgIGNhc2Ug
RGVsZXRlQnlJZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcnNFeGl0U3RhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
c0V4aXRTdGF0ZS5jcHAKaW5kZXggYjk1ZjI0MzUwYmI3Li42ZmQ0YTc2YjYxOGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCkBA
IC04NCw2ICs4NCw4IEBAIGJvb2wgY2xvYmJlcnNFeGl0U3RhdGUoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlKQogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRlcklu
QnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgorICAgIGNhc2UgRmls
dGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJh
bmRTdGF0dXM6CiAgICAgY2FzZSBUcnlHZXRCeUlkOgogICAgICAgICAvLyBUaGVzZSBkbyBjbG9i
YmVyIG1lbW9yeSwgYnV0IG5vdGhpbmcgdGhhdCBpcyBvYnNlcnZhYmxlLiBJdCBtYXkgYmUgbmlj
ZSB0byBzZXBhcmF0ZSB0aGUKICAgICAgICAgLy8gaGVhcHMgaW50byB0aG9zZSB0aGF0IGFyZSBv
YnNlcnZhYmxlIGFuZCB0aG9zZSB0aGF0IGFyZW4ndCwgYnV0IHdlIGRvbid0IGRvIHRoYXQgcmln
aHQgbm93LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0Mu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IGU5OTNm
YjA2MWFiMy4uYjcxNjEwYTUxZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwCkBAIC0yNTAsNiArMjUwLDggQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlKQogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRlcklu
QnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgorICAgIGNhc2UgRmls
dGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJh
bmRTdGF0dXM6CiAgICAgY2FzZSBEYXRlR2V0SW50MzJPck5hTjoKICAgICBjYXNlIERhdGVHZXRU
aW1lOgogICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQ6CkBAIC0zMjcsNiArMzI5LDggQEAgYm9vbCBk
b2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVC
eUlkOgogICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWU6CiAgICAgY2FzZSBHZXRQcml2YXRlTmFtZUJ5
SWQ6CisgICAgY2FzZSBTZXRQcml2YXRlQnJhbmQ6CisgICAgY2FzZSBDaGVja1ByaXZhdGVCcmFu
ZDoKICAgICBjYXNlIFB1dFN0YWNrOgogICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CiAgICAgY2Fz
ZSBSZWdFeHBFeGVjOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAKaW5kZXggYzJhNDVkMDQ4ZDg3Li44NWQ0NGM5ZjBmYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTkzMSw2ICsxOTMxLDE1IEBAIHByaXZh
dGU6CiAgICAgICAgIH0KIAogCisgICAgICAgIGNhc2UgU2V0UHJpdmF0ZUJyYW5kOiB7CisgICAg
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUNlbGwoKSkKKyAgICAg
ICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKworICAgICAgICAg
ICAgZml4RWRnZTxTeW1ib2xVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBDaGVja1ByaXZhdGVCcmFuZDoKICAgICAgICAg
Y2FzZSBQdXRQcml2YXRlTmFtZTogewogICAgICAgICAgICAgZml4RWRnZTxTeW1ib2xVc2U+KG5v
ZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjgyNyw2ICsyODM2LDggQEAg
cHJpdmF0ZToKICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICBjYXNl
IEZpbHRlckluQnlJZFN0YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoK
KyAgICAgICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1czoKKyAgICAgICAgY2Fz
ZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAgICAgIGNhc2UgSW52YWxpZGF0aW9u
UG9pbnQ6CiAgICAgICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5OgogICAgICAgICAg
ICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggYjNhOWJmZjVj
ZDJhLi45NzRmZmZjMmVlZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKQEAg
LTExODIsNiArMTE4Miw3IEBAIHB1YmxpYzoKICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN5bWJv
bFN0cnVjdHVyZTsKIAogICAgIEhhc2hTZXQ8Tm9kZSo+IG1fc2xvd0dldEJ5VmFsOworICAgIEhh
c2hTZXQ8Tm9kZSo+IG1fcHJpdmF0ZUJyYW5kQWNjZXNzOwogCiBwcml2YXRlOgogICAgIGJvb2wg
aXNTdHJpbmdQcm90b3R5cGVNZXRob2RTYW5lKEpTR2xvYmFsT2JqZWN0KiwgVW5pcXVlZFN0cmlu
Z0ltcGwqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAK
aW5kZXggZDg2YWNhNDFkNmM0Li43ODI2NGNlYTAxNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCkBAIC0yNDUsNiArMjQ1LDcgQEAgdm9pZCBKSVRD
b21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQogICAgIGZpbmFsaXplSW5saW5l
Q2FjaGVzKG1fZGVsQnlWYWxzLCBsaW5rQnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hl
cyhtX2luQnlJZHMsIGxpbmtCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5z
dGFuY2VPZnMsIGxpbmtCdWZmZXIpOworICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fcHJpdmF0
ZUJyYW5kQWNjZXNzZXMsIGxpbmtCdWZmZXIpOwogCiAgICAgYXV0byBsaW5rQ2FsbFRodW5rID0g
RnVuY3Rpb25QdHI8Tm9QdHJUYWc+KHZtKCkuZ2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogICAgIGZvciAoYXV0byYgcmVjb3JkIDog
bV9qc0NhbGxzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvbXBpbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgK
aW5kZXggOTlmYmI4MmE4OGJjLi44OGQ2Mjc2NzI0OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKQEAgLTIxMiw2ICsyMTIsMTEgQEAgcHVibGljOgogICAg
ICAgICBtX2luQnlJZHMuYXBwZW5kKElubGluZUNhY2hlV3JhcHBlcjxKSVRJbkJ5SWRHZW5lcmF0
b3I+KGdlbiwgc2xvd1BhdGgpKTsKICAgICB9CiAKKyAgICB2b2lkIGFkZFByaXZhdGVCcmFuZEFj
Y2Vzcyhjb25zdCBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiwgU2xvd1BhdGhH
ZW5lcmF0b3IqIHNsb3dQYXRoKQorICAgIHsKKyAgICAgICAgbV9wcml2YXRlQnJhbmRBY2Nlc3Nl
cy5hcHBlbmQoSW5saW5lQ2FjaGVXcmFwcGVyPEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRv
cj4oZ2VuLCBzbG93UGF0aCkpOworICAgIH0KKwogICAgIHZvaWQgYWRkSlNDYWxsKENhbGwgZmFz
dENhbGwsIENhbGwgc2xvd0NhbGwsIERhdGFMYWJlbFB0ciB0YXJnZXRUb0NoZWNrLCBDYWxsTGlu
a0luZm8qIGluZm8pCiAgICAgewogICAgICAgICBtX2pzQ2FsbHMuYXBwZW5kKEpTQ2FsbFJlY29y
ZChmYXN0Q2FsbCwgc2xvd0NhbGwsIHRhcmdldFRvQ2hlY2ssIGluZm8pKTsKQEAgLTM2Miw2ICsz
NjcsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBwZXI8SklURGVsQnlW
YWxHZW5lcmF0b3I+LCA0PiBtX2RlbEJ5VmFsczsKICAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFw
cGVyPEpJVEluQnlJZEdlbmVyYXRvcj4sIDQ+IG1faW5CeUlkczsKICAgICBWZWN0b3I8SW5saW5l
Q2FjaGVXcmFwcGVyPEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I+LCA0PiBtX2luc3RhbmNlT2ZzOwor
ICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBwZXI8SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJh
dG9yPiwgND4gbV9wcml2YXRlQnJhbmRBY2Nlc3NlczsKICAgICBWZWN0b3I8SlNDYWxsUmVjb3Jk
LCA0PiBtX2pzQ2FsbHM7CiAgICAgVmVjdG9yPEpTRGlyZWN0Q2FsbFJlY29yZCwgND4gbV9qc0Rp
cmVjdENhbGxzOwogICAgIFZlY3RvcjxKU0RpcmVjdFRhaWxDYWxsUmVjb3JkLCA0PiBtX2pzRGly
ZWN0VGFpbENhbGxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdN
YXlFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKaW5k
ZXggMDViOTNiZTA5MWFmLi42N2JhMTg0NWQxNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdNYXlFeGl0LmNwcApAQCAtMTA4LDYgKzEwOCw4IEBAIEV4aXRNb2RlIG1heUV4aXRJbXBs
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgU3RhdGVUeXBlJiBzdGF0ZSkKICAgICBjYXNlIEZp
bHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CiAgICAgY2Fz
ZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKKyAgICBjYXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5k
U3RhdHVzOgorICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOgogICAgICAgICBi
cmVhazsKIAogICAgIGNhc2UgU3RyQ2F0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApp
bmRleCAyNjA0YzdlN2FkOTMuLjU4OTNiZTgwNjYwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkIzU3BhcnNlQ29sbGVjdGlv
bi5oIgogI2luY2x1ZGUgIkJhc2ljQmxvY2tMb2NhdGlvbi5oIgorI2luY2x1ZGUgIkNoZWNrUHJp
dmF0ZUJyYW5kVmFyaWFudC5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRG
R0FkamFjZW5jeUxpc3QuaCIKICNpbmNsdWRlICJERkdBcml0aE1vZGUuaCIKQEAgLTU0LDYgKzU1
LDcgQEAKICNpbmNsdWRlICJPcGVyYW5kcy5oIgogI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtp
bmQuaCIKICNpbmNsdWRlICJQdXRCeUlkVmFyaWFudC5oIgorI2luY2x1ZGUgIlNldFByaXZhdGVC
cmFuZFZhcmlhbnQuaCIKICNpbmNsdWRlICJTcGVjdWxhdGVkVHlwZS5oIgogI2luY2x1ZGUgIlR5
cGVMb2NhdGlvbi5oIgogI2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgpAQCAtMzE0MCw2ICszMTQy
LDI4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPERlbGV0ZUJ5U3RhdHVz
Kj4oKTsKICAgICB9CiAKKyAgICBib29sIGhhc0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBvcCgpID09IEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVz
OworICAgIH0KKworICAgIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzKiBjaGVja1ByaXZhdGVCcmFu
ZFN0YXR1cygpCisgICAgeworICAgICAgICBBU1NFUlQoaGFzQ2hlY2tQcml2YXRlQnJhbmRTdGF0
dXMoKSk7CisgICAgICAgIHJldHVybiBtX29wSW5mby5hczxDaGVja1ByaXZhdGVCcmFuZFN0YXR1
cyo+KCk7CisgICAgfQorCisgICAgYm9vbCBoYXNTZXRQcml2YXRlQnJhbmRTdGF0dXMoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gRmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOwor
ICAgIH0KKworICAgIFNldFByaXZhdGVCcmFuZFN0YXR1cyogc2V0UHJpdmF0ZUJyYW5kU3RhdHVz
KCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNTZXRQcml2YXRlQnJhbmRTdGF0dXMoKSk7Cisg
ICAgICAgIHJldHVybiBtX29wSW5mby5hczxTZXRQcml2YXRlQnJhbmRTdGF0dXMqPigpOworICAg
IH0KKwogICAgIHZvaWQgZHVtcENoaWxkcmVuKFByaW50U3RyZWFtJiBvdXQpCiAgICAgewogICAg
ICAgICBpZiAoIWNoaWxkMSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
CmluZGV4IDY0OTZjMTc4MDQxYy4uMjM3MWZiZmRkYjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0yMTIsNiArMjEyLDggQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogICAgIG1hY3JvKFB1dEJ5VmFsQWxpYXMsIE5vZGVNdXN0R2VuZXJhdGUg
fCBOb2RlSGFzVmFyQXJncykgXAogICAgIG1hY3JvKFB1dFByaXZhdGVOYW1lLCBOb2RlTXVzdEdl
bmVyYXRlKSBcCiAgICAgbWFjcm8oUHV0UHJpdmF0ZU5hbWVCeUlkLCBOb2RlTXVzdEdlbmVyYXRl
KSBcCisgICAgbWFjcm8oQ2hlY2tQcml2YXRlQnJhbmQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAg
ICBtYWNybyhTZXRQcml2YXRlQnJhbmQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhU
cnlHZXRCeUlkLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRCeUlkLCBOb2RlUmVzdWx0
SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0QnlJZEZsdXNoLCBOb2RlUmVz
dWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCkBAIC01NDQsNiArNTQ2LDggQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKEZpbHRlckluQnlJZFN0YXR1cywgTm9k
ZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE5vZGVNdXN0
R2VuZXJhdGUpIFwKICAgICBtYWNybyhGaWx0ZXJEZWxldGVCeVN0YXR1cywgTm9kZU11c3RHZW5l
cmF0ZSkgXAorICAgIG1hY3JvKEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLCBOb2RlTXVz
dEdlbmVyYXRlKSBcCisgICAgbWFjcm8oRmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLCBOb2Rl
TXVzdEdlbmVyYXRlKSBcCiAgICAgLyogRGF0YSB2aWV3IGFjY2VzcyAqLyBcCiAgICAgbWFjcm8o
RGF0YVZpZXdHZXRJbnQsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0SlMpIC8qIFRoZSBn
ZXRzIGFyZSBtdXN0IGdlbmVyYXRlIGZvciBub3cgYmVjYXVzZSB0aGV5IGRvIGJvdW5kcyBjaGVj
a3MgKi8gXAogICAgIG1hY3JvKERhdGFWaWV3R2V0RmxvYXQsIE5vZGVNdXN0R2VuZXJhdGUgfCBO
b2RlUmVzdWx0RG91YmxlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAppbmRleCA5OTU0ZDU5
MTIyZWYuLjdhNjllNGU4ZDVmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCkBAIC0xMjYx
LDYgKzEyNjEsOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6
CiAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlckRl
bGV0ZUJ5U3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVz
OgorICAgICAgICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czoKICAgICAgICAgICAg
IGJyZWFrOwogCiAgICAgICAgIGRlZmF1bHQ6CkBAIC0yNjExLDYgKzI2MTMsOCBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAgICAg
ICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRl
ckRlbGV0ZUJ5U3RhdHVzOgorICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRl
QnJhbmRTdGF0dXM6CisgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRT
dGF0dXM6CiAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+aXNQaGFudG9t
QWxsb2NhdGlvbigpKQogICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlV2l0aG91
dENoZWNrcygpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHAKaW5kZXggYWIxZmU4YWVjYTEzLi41ZDczZmM3Mjg4NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCkBAIC0xMzg0LDYgKzEzODQsOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFB1dEJ5VmFs
OgogICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgogICAgICAgICBjYXNlIFB1dFByaXZhdGVO
YW1lQnlJZDoKKyAgICAgICAgY2FzZSBTZXRQcml2YXRlQnJhbmQ6CisgICAgICAgIGNhc2UgQ2hl
Y2tQcml2YXRlQnJhbmQ6CiAgICAgICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKICAgICAgICAgY2Fz
ZSBQdXRJbnRlcm5hbEZpZWxkOgogICAgICAgICBjYXNlIFB1dFRvQXJndW1lbnRzOgpAQCAtMTQ1
MCw2ICsxNDUyLDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVz
OgogICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJE
ZWxldGVCeVN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1
czoKKyAgICAgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAgICAgIGNh
c2UgQ2xlYXJDYXRjaExvY2FsczoKICAgICAgICAgY2FzZSBEYXRhVmlld1NldDoKICAgICAgICAg
Y2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
YWZlVG9FeGVjdXRlLmgKaW5kZXggYTRmNGM3NTc3NGFkLi4wMGE0NTEzN2E4ZjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0zNjIsNiArMzYy
LDggQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgm
IGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0
dXM6CiAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJEZWxldGVC
eVN0YXR1czoKKyAgICBjYXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOgorICAgIGNh
c2UgRmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOgogICAgICAgICAvLyBXZSBkb24ndCB3YW50
IHRoZXNlIHRvIGJlIG1vdmVkIGFueXdoZXJlIG90aGVyIHRoYW4gd2hlcmUgd2UgcHV0IHRoZW0s
IHNpbmNlIHdlIHdhbnQgdGhlbQogICAgICAgICAvLyB0byBjYXB0dXJlICJwcm9maWxpbmciIGF0
IHRoZSBwb2ludCBpbiBjb250cm9sIGZsb3cgaGVyZSB0aGUgdXNlciBwdXQgdGhlbS4KICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNTMyLDYgKzUzNCw4IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShB
YnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBp
Z25vCiAgICAgY2FzZSBQdXRQcml2YXRlTmFtZUJ5SWQ6CiAgICAgY2FzZSBHZXRQcml2YXRlTmFt
ZToKICAgICBjYXNlIEdldFByaXZhdGVOYW1lQnlJZDoKKyAgICBjYXNlIENoZWNrUHJpdmF0ZUJy
YW5kOgorICAgIGNhc2UgU2V0UHJpdmF0ZUJyYW5kOgogICAgIGNhc2UgRGVmaW5lRGF0YVByb3Bl
cnR5OgogICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICBjYXNlIEFycmF5aWZ5
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApp
bmRleCAwYzMzNDIyOGYyNDguLjcxMGZkMzhhMDU3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTM2NjcsNiArMzY2Nyw5MyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKE5vZGUqIG5vZGUp
CiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVD
aGVja1ByaXZhdGVCcmFuZChOb2RlKiBub2RlKQoreworICAgIEpTVmFsdWVPcGVyYW5kIGJhc2Uo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJyYW5kVmFs
dWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworCisgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBi
YXNlLmpzVmFsdWVSZWdzKCk7CisKKyAgICBHUFJSZWcgYnJhbmRHUFIgPSBicmFuZFZhbHVlLmdw
cigpOworCisgICAgc3BlY3VsYXRlU3ltYm9sKG5vZGUtPmNoaWxkMigpLCBicmFuZEdQUik7CisK
KyAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CisgICAg
Q2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVF
eGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6
ZSgpKTsKKyAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVy
cygpOworCisgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKKyAgICBpZiAobmVl
ZHNUeXBlQ2hlY2sobm9kZS0+Y2hpbGQxKCksIFNwZWNDZWxsKSkKKyAgICAgICAgc2xvd0Nhc2Vz
LmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZVJlZ3MpKTsKKworICAgIEpJVFByaXZh
dGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBj
b2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIHVzZWRS
ZWdpc3RlcnMsCisgICAgICAgIGJhc2VSZWdzLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYnJh
bmRHUFIpKTsKKworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKKyAgICBzbG93Q2Fz
ZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xv
d1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICBzbG93Q2Fz
ZXMsIHRoaXMsIG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAor
ICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNlUmVncywgQ0NhbGxI
ZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKKworICAgIG1faml0LmFkZFByaXZhdGVCcmFu
ZEFjY2VzcyhnZW4sIHNsb3dQYXRoLmdldCgpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihX
VEZNb3ZlKHNsb3dQYXRoKSk7CisKKyAgICBub1Jlc3VsdChub2RlKTsKK30KKwordm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVNldFByaXZhdGVCcmFuZChOb2RlKiBub2RlKQoreworICAgIGlm
IChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkgeworICAgICAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgYnJhbmRWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisKKyAgICAg
ICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgICAgICBHUFJSZWcgYnJhbmRHUFIg
PSBicmFuZFZhbHVlLmdwcigpOworCisgICAgICAgIHNwZWN1bGF0ZVN5bWJvbChub2RlLT5jaGls
ZDIoKSwgYnJhbmRHUFIpOworCisgICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYzsKKyAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0
LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRl
ZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKKyAgICAgICAgUmVnaXN0ZXJTZXQgdXNl
ZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKKworICAgICAgICBKSVRDb21waWxl
cjo6SnVtcExpc3Qgc2xvd0Nhc2VzOworICAgICAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5l
cmF0b3IgZ2VuKAorICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNh
bGxTaXRlLCBBY2Nlc3NUeXBlOjpTZXRQcml2YXRlQnJhbmQsIHVzZWRSZWdpc3RlcnMsCisgICAg
ICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIEpTVmFsdWVSZWdzOjpw
YXlsb2FkT25seShicmFuZEdQUikpOworCisgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1f
aml0KTsKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOworCisg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93
UGF0aENhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvblNldFByaXZh
dGVCcmFuZE9wdGltaXplLCBOb1Jlc3VsdCwgCisgICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSks
IGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxI
ZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKKworICAgICAgICBtX2ppdC5hZGRQcml2YXRl
QnJhbmRBY2Nlc3MoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CisgICAgICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKKworICAgICAgICBub1Jlc3VsdChub2RlKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChub2RlLT5jaGlsZDEoKS51c2VLaW5k
KCkgPT0gVW50eXBlZFVzZSk7CisKKyAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBicmFuZFZhbHVlKHRoaXMsIG5v
ZGUtPmNoaWxkMigpKTsKKworICAgIEdQUlJlZyBicmFuZEdQUiA9IGJyYW5kVmFsdWUuZ3ByKCk7
CisKKyAgICBzcGVjdWxhdGVTeW1ib2wobm9kZS0+Y2hpbGQyKCksIGJyYW5kR1BSKTsKKworICAg
IEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVncygpOworCisgICAgZmx1c2hS
ZWdpc3RlcnMoKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNldFByaXZhdGVCcmFuZEdl
bmVyaWMsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBudWxscHRyLCBiYXNlUmVncywgQ0Nh
bGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKKyAgICBtX2ppdC5leGNlcHRpb25DaGVj
aygpOworICAgIG5vUmVzdWx0KG5vZGUpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlQ2hlY2tUeXBlSW5mb0ZsYWdzKE5vZGUqIG5vZGUpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggM2M2OTEyZTNmODFhLi5iOWFlNmUzZmFi
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgK
QEAgLTEzNzMsNiArMTM3Myw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbFdp
dGhUaGlzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVQdXRQcml2YXRlTmFtZShOb2RlKik7CiAg
ICAgdm9pZCBjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBp
bGVDaGVja1ByaXZhdGVCcmFuZChOb2RlKik7CisgICAgdm9pZCBjb21waWxlU2V0UHJpdmF0ZUJy
YW5kKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeU9mZnNldChOb2RlKik7CiAgICAgdm9p
ZCBjb21waWxlUHV0QnlPZmZzZXQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU1hdGNoU3RydWN0
dXJlKE5vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDFlOGI4YzI5NmM0MC4uZGQ1ZmI3ZDdiOTFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAKQEAgLTQyNDEsNiArNDI0MSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0
ZXJJbkJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKKyAgICBjYXNl
IEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0
ZUJyYW5kU3RhdHVzOgogICAgICAgICBtX2ludGVycHJldGVyLmZpbHRlcklDU3RhdHVzKG5vZGUp
OwogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCA5YTk3NzI4
MWNjN2QuLmJjOTQwNTc1YmE4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0yOTY0LDYgKzI5NjQsMTYgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAK
KyAgICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5kOiB7CisgICAgICAgIGNvbXBpbGVDaGVja1ByaXZh
dGVCcmFuZChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBTZXRQcml2
YXRlQnJhbmQ6IHsKKyAgICAgICAgY29tcGlsZVNldFByaXZhdGVCcmFuZChub2RlKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKICAgICBjYXNlIFB1
dEJ5VmFsOgogICAgIGNhc2UgUHV0QnlWYWxBbGlhczogewpAQCAtNTY3Nyw2ICs1Njg3LDggQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgRmlsdGVy
UHV0QnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKICAgICBjYXNlIEZp
bHRlckRlbGV0ZUJ5U3RhdHVzOgorICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0
dXM6CisgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAgICAgIG1faW50
ZXJwcmV0ZXIuZmlsdGVySUNTdGF0dXMobm9kZSk7CiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwog
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKaW5kZXggNzBlNzgzOThjMzZhLi42
ZDI3ZjM1MmY1YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Rv
cmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCkBAIC0yODEsNiArMjgxLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAorICAgICAg
ICAgICAgY2FzZSBTZXRQcml2YXRlQnJhbmQ6CiAgICAgICAgICAgICBjYXNlIERlbGV0ZUJ5SWQ6
CiAgICAgICAgICAgICBjYXNlIERlbGV0ZUJ5VmFsOiB7CiAgICAgICAgICAgICAgICAgLy8gSWYg
Y2hpbGQxIGlzIG5vdCBhIGNlbGwtc3BlY3VsYXRlZCwgd2UgY2FsbCBhIGdlbmVyaWMgaW1wbGVt
ZW50YXRpb24gd2hpY2ggZW1pdHMgd3JpdGUtYmFycmllciBpbiBDKysgc2lkZS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2Uu
Y3BwCmluZGV4IDY2OWU1YmI4MjM2Ny4uMDYzZWUzMWIwNTVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAKQEAg
LTE5OSw2ICsxOTksOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlu
a1N0YXR1czoKICAgICAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgogICAgICAgICAg
ICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKKyAgICAgICAgICAgIGNhc2UgRmlsdGVyQ2hl
Y2tQcml2YXRlQnJhbmRTdGF0dXM6CisgICAgICAgICAgICBjYXNlIEZpbHRlclNldFByaXZhdGVC
cmFuZFN0YXR1czoKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgY2FzZSBH
ZXRCeU9mZnNldDogewpAQCAtNDAyLDYgKzQwNCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBj
YXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRT
dGF0dXM6CiAgICAgICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgorICAgICAgICAg
ICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1czoKKyAgICAgICAgICAgIGNhc2Ug
RmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOgogICAgICAgICAgICAgICAgIGlmIChub2RlLT5j
aGlsZDEoKS5ub2RlKCkgPT0gY2FuZGlkYXRlKQogICAgICAgICAgICAgICAgICAgICBub2RlLT5y
ZW1vdmUobV9ncmFwaCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggMzUyNTNiNjA0ZTQ3Li4zZDE0
OTI1M2Y2ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGll
cy5jcHAKQEAgLTQwMCwxMiArNDAwLDE2IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29t
cGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgogICAgIGNhc2Ug
R2V0UHJpdmF0ZU5hbWU6CiAgICAgY2FzZSBHZXRQcml2YXRlTmFtZUJ5SWQ6CisgICAgY2FzZSBD
aGVja1ByaXZhdGVCcmFuZDoKKyAgICBjYXNlIFNldFByaXZhdGVCcmFuZDoKICAgICBjYXNlIE1h
dGNoU3RydWN0dXJlOgogICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAgICAgY2FzZSBG
aWx0ZXJHZXRCeVN0YXR1czoKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgY2Fz
ZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKKyAg
ICBjYXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyU2V0
UHJpdmF0ZUJyYW5kU3RhdHVzOgogICAgIGNhc2UgQ3JlYXRlVGhpczoKICAgICBjYXNlIENyZWF0
ZVByb21pc2U6CiAgICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggZWExZjM3MjM5YzI4Li5hZjBlY2Rl
ZjA2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKQEAgLTk2MSw2ICs5NjEsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJbkJ5VmFsOgog
ICAgICAgICAgICAgY29tcGlsZUluQnlWYWwoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5kOgorICAgICAgICAgICAgY29tcGlsZUNoZWNrUHJpdmF0
ZUJyYW5kKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTZXRQcml2YXRlQnJh
bmQ6CisgICAgICAgICAgICBjb21waWxlU2V0UHJpdmF0ZUJyYW5kKCk7CisgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBIYXNPd25Qcm9wZXJ0eToKICAgICAgICAgICAgIGNvbXBpbGVI
YXNPd25Qcm9wZXJ0eSgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNjM4LDYgKzE2NDQsOCBA
QCBwcml2YXRlOgogICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgIGNh
c2UgRmlsdGVySW5CeUlkU3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVz
OgorICAgICAgICBjYXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOgorICAgICAgICBj
YXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czoKICAgICAgICAgICAgIGNvbXBpbGVGaWx0
ZXJJQ1N0YXR1cygpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRGF0ZUdldElu
dDMyT3JOYU46CkBAIC00MDgzLDYgKzQwOTEsOTQgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAg
IH0KIAorICAgIHZvaWQgY29tcGlsZVByaXZhdGVCcmFuZEFjY2VzcyhMVmFsdWUgYmFzZSwgTFZh
bHVlIGJyYW5kLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCisgICAgeworICAgICAgICBOb2RlKiBu
b2RlID0gbV9ub2RlOworICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX291
dC5wYXRjaHBvaW50KFZvaWQpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0
ZXIoYmFzZSk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihicmFuZCk7
CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0
ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CisgICAgICAgIHBhdGNocG9pbnQt
PmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFn
UmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFj
cm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworCisgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0
aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlv
bnMocGF0Y2hwb2ludCk7CisKKyAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7Cisg
ICAgICAgIGJvb2wgYmFzZUlzQ2VsbCA9IGFic3RyYWN0VmFsdWUobV9ub2RlLT5jaGlsZDEoKSku
aXNUeXBlKFNwZWNDZWxsKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAo
Q0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1z
KSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3Jh
dGNoKGppdCk7CisKKyAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9IHN0
YXRlLT5qaXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgo
bm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKworICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZGly
ZWN0IGV4aXQgdGFyZ2V0IGZvciBvcGVyYXRpb24gY2FsbHMuCisgICAgICAgICAgICBCb3g8Q0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9IGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1
bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKKworICAgICAgICAgICAgLy8gVGhp
cyBpcyB0aGUgZXhpdCBmb3IgY2FsbCBJQydzIGNyZWF0ZWQgYnkgdGhlIElDIGZvciBnZXR0ZXJz
LiBXZSBkb24ndCBoYXZlCisgICAgICAgICAgICAvLyB0byBkbyBhbnl0aGluZyB3ZWlyZCBvdGhl
ciB0aGFuIGNhbGwgdGhpcywgc2luY2UgaXQgd2lsbCBhc3NvY2lhdGUgdGhlIGV4aXQgd2l0aAor
ICAgICAgICAgICAgLy8gdGhlIGNhbGxzaXRlIGluZGV4LgorICAgICAgICAgICAgZXhjZXB0aW9u
SGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbkZvclVud2luZChwYXJhbXMsIGNhbGxTaXRlSW5k
ZXgpOworCisgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IHBhcmFtc1swXS5ncHIoKTsKKyAg
ICAgICAgICAgIEdQUlJlZyBicmFuZEdQUiA9IHBhcmFtc1sxXS5ncHIoKTsKKworICAgICAgICAg
ICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yPjo6
Y3JlYXRlKAorICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNl
bWFudGljLCBjYWxsU2l0ZUluZGV4LCBhY2Nlc3NUeXBlLAorICAgICAgICAgICAgICAgIHBhcmFt
cy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJl
Z3MoYnJhbmRHUFIpKTsKKworICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vdENlbGw7
CisgICAgICAgICAgICBpZiAoIWJhc2VJc0NlbGwpCisgICAgICAgICAgICAgICAgbm90Q2VsbCA9
IGppdC5icmFuY2hJZk5vdENlbGwoYmFzZUdQUik7CisKKyAgICAgICAgICAgIGdlbmVyYXRvci0+
Z2VuZXJhdGVGYXN0UGF0aChqaXQpOworICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBk
b25lID0gaml0LmxhYmVsKCk7CisKKyAgICAgICAgICAgIHBhcmFtcy5hZGRMYXRlUGF0aChbPV0g
KENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hS
ZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworCisgICAgICAgICAgICAgICAgYXV0byBv
cGVyYXRpb25Ub0NhbGwgPSBhY2Nlc3NUeXBlID09IEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0ZUJy
YW5kID8gb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSA6IG9wZXJhdGlvblNldFBy
aXZhdGVCcmFuZE9wdGltaXplOworCisgICAgICAgICAgICAgICAgaWYgKG5vdENlbGwuaXNTZXQo
KSkKKyAgICAgICAgICAgICAgICAgICAgbm90Q2VsbC5saW5rKCZqaXQpOworICAgICAgICAgICAg
ICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKKyAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKKyAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlv
bigKKyAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgIGV4
Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvblRvQ2FsbCwgSW52YWxpZEdQUlJlZywKKyAgICAgICAg
ICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJhc2VHUFIsIGJyYW5kR1BSKS5jYWxsKCk7Cisg
ICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CisKKyAgICAgICAg
ICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93
UGF0aENhbGwpOworCisgICAgICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKFs9XSAoTGlua0J1
ZmZlciYgbGlua0J1ZmZlcikgeworICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmZpbmFs
aXplKGxpbmtCdWZmZXIsIGxpbmtCdWZmZXIpOworICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIHZvaWQgY29tcGlsZUNoZWNrUHJp
dmF0ZUJyYW5kKCkKKyAgICB7CisgICAgICAgIGNvbXBpbGVQcml2YXRlQnJhbmRBY2Nlc3MobG93
SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKSwgbG93U3ltYm9sKG1fbm9kZS0+Y2hpbGQyKCkpLCBB
Y2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZCk7CisgICAgfQorCisgICAgdm9pZCBjb21waWxl
U2V0UHJpdmF0ZUJyYW5kKCkKKyAgICB7CisgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVz
ZUtpbmQoKSA9PSBDZWxsVXNlKQorICAgICAgICAgICAgY29tcGlsZVByaXZhdGVCcmFuZEFjY2Vz
cyhsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dTeW1ib2wobV9ub2RlLT5jaGlsZDIoKSks
IEFjY2Vzc1R5cGU6OlNldFByaXZhdGVCcmFuZCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgp
ID09IFVudHlwZWRVc2UsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKTsKKyAgICAgICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvciht
X25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisKKyAgICAgICAgICAgIExWYWx1ZSBiYXNlID0gbG93
SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSBicmFuZCA9IGxv
d1N5bWJvbChtX25vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgdm1DYWxsKFZvaWQsIG9w
ZXJhdGlvblNldFByaXZhdGVCcmFuZEdlbmVyaWMsCisgICAgICAgICAgICAgICAgd2Vha1BvaW50
ZXIoZ2xvYmFsT2JqZWN0KSwgbV9vdXQuY29uc3RJbnRQdHIoMCksIGJhc2UsIGJyYW5kKTsKKyAg
ICAgICAgfQorICAgIAorICAgIH0KKwogICAgIHZvaWQgY29tcGlsZVB1dEJ5SWRXaXRoVGhpcygp
CiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggYjA1MTdiZDk3N2MxLi43
ZWY5NTkxOTk1Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0ludGVycHJldGVyLmNwcApAQCAtMTQ0LDkgKzE0NCw5IEBAIEpTVmFsdWUgZXZhbChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgRUNNQU1vZGUgZWNt
YU1vCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIFREWkVudmlyb25tZW50IHZhcmlhYmxl
c1VuZGVyVERaOwotICAgICAgICBWYXJpYWJsZUVudmlyb25tZW50IHByaXZhdGVOYW1lczsKLSAg
ICAgICAgSlNTY29wZTo6Y29sbGVjdENsb3N1cmVWYXJpYWJsZXNVbmRlclREWihjYWxsZXJTY29w
ZUNoYWluLCB2YXJpYWJsZXNVbmRlclREWiwgcHJpdmF0ZU5hbWVzKTsKLSAgICAgICAgZXZhbCA9
IERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtYWtlU291cmNlKHBy
b2dyYW1Tb3VyY2UsIGNhbGxlckNvZGVCbG9jay0+c291cmNlKCkucHJvdmlkZXIoKS0+c291cmNl
T3JpZ2luKCkpLCBkZXJpdmVkQ29udGV4dFR5cGUsIGNhbGxlclVubGlua2VkQ29kZUJsb2NrLT5u
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBjYWxs
ZXJDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24o
KSwgZXZhbENvbnRleHRUeXBlLCAmdmFyaWFibGVzVW5kZXJURFosICZwcml2YXRlTmFtZXMsIGVj
bWFNb2RlKTsKKyAgICAgICAgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCBwcml2YXRlTmFtZUVudmly
b25tZW50OworICAgICAgICBKU1Njb3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERa
KGNhbGxlclNjb3BlQ2hhaW4sIHZhcmlhYmxlc1VuZGVyVERaLCBwcml2YXRlTmFtZUVudmlyb25t
ZW50KTsKKyAgICAgICAgZXZhbCA9IERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZ2xvYmFs
T2JqZWN0LCBtYWtlU291cmNlKHByb2dyYW1Tb3VyY2UsIGNhbGxlckNvZGVCbG9jay0+c291cmNl
KCkucHJvdmlkZXIoKS0+c291cmNlT3JpZ2luKCkpLCBkZXJpdmVkQ29udGV4dFR5cGUsIGNhbGxl
clVubGlua2VkQ29kZUJsb2NrLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBjYWxsZXJV
bmxpbmtlZENvZGVCbG9jay0+cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSwgaXNBcnJvd0Z1bmN0
aW9uQ29udGV4dCwgY2FsbGVyQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJbnNpZGVP
cmRpbmFyeUZ1bmN0aW9uKCksIGV2YWxDb250ZXh0VHlwZSwgJnZhcmlhYmxlc1VuZGVyVERaLCAm
cHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgZWNtYU1vZGUpOwogICAgICAgICBFWENFUFRJT05fQVNT
RVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIWV2YWwpOwogICAgICAgICBpZiAoIWV2YWwpCiAg
ICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cAppbmRleCBhY2MzNGQwZWE4YmMuLjZhM2ZiZDc2YzUxZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcApAQCAtMzU4LDYgKzM1OCw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5Q
YXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9ieV9pZF9kaXJlY3QpCiAgICAgICAgIERF
RklORV9PUChvcF9nZXRfYnlfdmFsKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X3ByaXZhdGVf
bmFtZSkKKyAgICAgICAgREVGSU5FX09QKG9wX3NldF9wcml2YXRlX2JyYW5kKQorICAgICAgICBE
RUZJTkVfT1Aob3BfY2hlY2tfcHJpdmF0ZV9icmFuZCkKICAgICAgICAgREVGSU5FX09QKG9wX2dl
dF9wcm90b3R5cGVfb2YpCiAgICAgICAgIERFRklORV9PUChvcF9vdmVycmlkZXNfaGFzX2luc3Rh
bmNlKQogICAgICAgICBERUZJTkVfT1Aob3BfaW5zdGFuY2VvZikKQEAgLTUwOCw2ICs1MTAsNyBA
QCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgIG1fZGVsQnlWYWxJbmRl
eCA9IDA7CiAgICAgbV9kZWxCeUlkSW5kZXggPSAwOwogICAgIG1faW5zdGFuY2VPZkluZGV4ID0g
MDsKKyAgICBtX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4ID0gMDsKICAgICBtX2J5VmFsSW5zdHJ1
Y3Rpb25JbmRleCA9IDA7CiAgICAgbV9jYWxsTGlua0luZm9JbmRleCA9IDA7CiAKQEAgLTU2NCw2
ICs1NjcsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBE
RUZJTkVfU0xPV0NBU0VfT1Aob3BfZ2V0X2J5X2lkX2RpcmVjdCkKICAgICAgICAgREVGSU5FX1NM
T1dDQVNFX09QKG9wX2dldF9ieV92YWwpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9n
ZXRfcHJpdmF0ZV9uYW1lKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bfc2V0X3ByaXZh
dGVfYnJhbmQpCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9jaGVja19wcml2YXRlX2Jy
YW5kKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfaW5zdGFuY2VvZikKICAgICAgICAg
REVGSU5FX1NMT1dDQVNFX09QKG9wX2luc3RhbmNlb2ZfY3VzdG9tKQogICAgICAgICBERUZJTkVf
U0xPV0NBU0VfT1Aob3Bfamxlc3MpCkBAIC02NTQsNiArNjU5LDcgQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICBSRUxFQVNFX0FTU0VSVChtX3B1dEJ5SWRJbmRleCA9
PSBtX3B1dEJ5SWRzLnNpemUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9pbkJ5SWRJbmRleCA9
PSBtX2luQnlJZHMuc2l6ZSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVChtX2luc3RhbmNlT2ZJbmRl
eCA9PSBtX2luc3RhbmNlT2ZzLnNpemUoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQobV9wcml2YXRl
QnJhbmRBY2Nlc3NJbmRleCA9PSBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzLnNpemUoKSk7CiAgICAg
UkVMRUFTRV9BU1NFUlQobV9jYWxsTGlua0luZm9JbmRleCA9PSBtX2NhbGxDb21waWxhdGlvbklu
Zm8uc2l6ZSgpKTsKIAogICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5nKCkpCkBAIC05MDIsNiAr
OTA4LDcgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpsaW5rKCkKICAgICBmaW5hbGl6ZUlubGlu
ZUNhY2hlcyhtX2RlbEJ5VmFscywgcGF0Y2hCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2Fj
aGVzKG1faW5CeUlkcywgcGF0Y2hCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1f
aW5zdGFuY2VPZnMsIHBhdGNoQnVmZmVyKTsKKyAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX3By
aXZhdGVCcmFuZEFjY2Vzc2VzLCBwYXRjaEJ1ZmZlcik7CiAKICAgICBpZiAobV9ieVZhbENvbXBp
bGF0aW9uSW5mby5zaXplKCkpIHsKICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9u
SGFuZGxlclB0clRhZz4gZXhjZXB0aW9uSGFuZGxlciA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8
RXhjZXB0aW9uSGFuZGxlclB0clRhZz4obV9leGNlcHRpb25IYW5kbGVyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCmluZGV4IDdjMzViNTY3MzQ3Ny4uMmVhZDU1ZGMwNTRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgKQEAgLTU2Myw2ICs1NjMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
dm9pZCBlbWl0X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAg
ICAgdm9pZCBlbWl0X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKik7Cisg
ICAgICAgIHZvaWQgZW1pdF9vcF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYXJndW1lbnRfYnlfdmFsKGNvbnN0IEluc3Ry
dWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfcHJvdG90eXBlX29mKGNvbnN0IElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVj
dGlvbiopOwpAQCAtNjk1LDYgKzY5Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lk
IGVtaXRTbG93X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0
X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IElu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2
b2lkIGVtaXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29w
X2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2FyZ3VtZW50
X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0
U2xvd19vcF9pbnN0YW5jZW9mKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOwpAQCAtOTg1LDYgKzk4OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBWZWN0b3I8SklURGVsQnlJZEdlbmVyYXRvcj4gbV9kZWxCeUlkczsKICAgICAgICAgVmVj
dG9yPEpJVERlbEJ5VmFsR2VuZXJhdG9yPiBtX2RlbEJ5VmFsczsKICAgICAgICAgVmVjdG9yPEpJ
VEluc3RhbmNlT2ZHZW5lcmF0b3I+IG1faW5zdGFuY2VPZnM7CisgICAgICAgIFZlY3RvcjxKSVRQ
cml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I+IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXM7CiAgICAg
ICAgIFZlY3RvcjxCeVZhbENvbXBpbGF0aW9uSW5mbz4gbV9ieVZhbENvbXBpbGF0aW9uSW5mbzsK
ICAgICAgICAgVmVjdG9yPENhbGxDb21waWxhdGlvbkluZm8+IG1fY2FsbENvbXBpbGF0aW9uSW5m
bzsKICAgICAgICAgVmVjdG9yPEp1bXBUYWJsZT4gbV9qbXBUYWJsZTsKQEAgLTEwMDgsNiArMTAx
Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBtX2RlbEJ5VmFsSW5kZXgg
eyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBtX2RlbEJ5SWRJbmRleCB7IFVJTlRfTUFY
IH07CiAgICAgICAgIHVuc2lnbmVkIG1faW5zdGFuY2VPZkluZGV4IHsgVUlOVF9NQVggfTsKKyAg
ICAgICAgdW5zaWduZWQgbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleCB7IFVJTlRfTUFYIH07CiAg
ICAgICAgIHVuc2lnbmVkIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4IHsgVUlOVF9NQVggfTsKICAg
ICAgICAgdW5zaWduZWQgbV9jYWxsTGlua0luZm9JbmRleCB7IFVJTlRfTUFYIH07CiAgICAgICAg
IHVuc2lnbmVkIG1fYnl0ZWNvZGVDb3VudEhhdmluZ1Nsb3dDYXNlIHsgMCB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcApp
bmRleCA5YmMyNjIzYjNmZDUuLjkxZWRjZjcyYzE4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKQEAgLTMyNCw2ICsz
MjQsMzYgQEAgdm9pZCBKSVRHZXRCeVZhbEdlbmVyYXRvcjo6ZmluYWxpemUoCiAgICAgICAgIGZh
c3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRh
Zz4obV9zdGFydCkpOwogfQogCitKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OkpJVFBy
aXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdp
biBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUgYWNj
ZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJh
c2UsIEpTVmFsdWVSZWdzIGJyYW5kKQorICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4s
IGNhbGxTaXRlSW5kZXgsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMpCit7CisgICAgbV9zdHVi
SW5mby0+aGFzQ29uc3RhbnRJZGVudGlmaWVyID0gZmFsc2U7CisKKyAgICBtX3N0dWJJbmZvLT5i
YXNlR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+cmVncy5icmFuZEdQ
UiA9IGJyYW5kLnBheWxvYWRHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT52YWx1ZUdQUiA9IEludmFs
aWRHUFJSZWc7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBtX3N0dWJJbmZvLT5iYXNlVGFn
R1BSID0gYmFzZS50YWdHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT52LmJyYW5kVGFnR1BSID0gYnJh
bmQudGFnR1BSKCk7CisgICAgbV9zdHViSW5mby0+dmFsdWVUYWdHUFIgPSBJbnZhbGlkR1BSUmVn
OworI2VuZGlmCit9CisKK3ZvaWQgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpnZW5l
cmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCit7CisgICAgbV9zdGFydCA9IGppdC5s
YWJlbCgpOworICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBt
X2RvbmUgPSBqaXQubGFiZWwoKTsKK30KKwordm9pZCBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5l
cmF0b3I6OmZpbmFsaXplKAorICAgIExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBz
bG93UGF0aCkKK3sKKyAgICBBU1NFUlQobV9zdGFydC5pc1NldCgpKTsKKyAgICBCYXNlOjpmaW5h
bGl6ZSgKKyAgICAgICAgZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJ
VFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwog
CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAppbmRleCA4NTM4MzVhMzkzNTguLmQ2Y2E2ZTE2
YTNmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IuaApAQCAtMjQ2LDEyICsyNDYsMzYgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBKU1ZhbHVlUmVncyBtX2Jhc2U7CiAgICAgSlNWYWx1ZVJlZ3MgbV9yZXN1bHQ7Ci0gICAgSlNW
YWx1ZVJlZ3MgbV87CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbV9zdGFydDsKICAgICBN
YWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBtX3Nsb3dQYXRoSnVtcDsKIH07CiAKK2NsYXNz
IEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdl
bmVyYXRvciB7CisgICAgdXNpbmcgQmFzZSA9IEpJVElubGluZUNhY2hlR2VuZXJhdG9yOworcHVi
bGljOgorICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcigpIHsgfQorCisgICAgSklU
UHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKAorICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3Jp
Z2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJl
Z2lzdGVycywKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgYnJhbmQpOwor
CisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xvd1BhdGhKdW1wKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChtX3Nsb3dQYXRoSnVtcC5tX2p1bXAuaXNTZXQoKSk7CisgICAgICAgIHJl
dHVybiBtX3Nsb3dQYXRoSnVtcC5tX2p1bXA7CisgICAgfQorCisgICAgdm9pZCBmaW5hbGl6ZSgK
KyAgICAgICAgTGlua0J1ZmZlciYgZmFzdFBhdGhMaW5rQnVmZmVyLCBMaW5rQnVmZmVyJiBzbG93
UGF0aExpbmtCdWZmZXIpOworICAgIAorICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fz
c2VtYmxlciYpOworCitwcml2YXRlOgorICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX3N0YXJ0
OworICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fc2xvd1BhdGhKdW1wOworfTsK
KwogdGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9yVHlwZT4KIHZvaWQgZmluYWxpemVJbmxpbmVDYWNo
ZXMoVmVjdG9yVHlwZSYgdmVjdG9yLCBMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYg
c2xvd1BhdGgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cAppbmRleCA0ZTRkMzE5NDMxMDkuLmE1NmY5ZWQzMmU2MCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0xMDk0LDYgKzEwOTQsMTAxIEBAIEpTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMsIHZvaWQs
IChKU0dsb2JhbE9iamVjdCoKICAgICBkaXJlY3RQdXRCeVZhbChnbG9iYWxPYmplY3QsIGFzT2Jq
ZWN0KGJhc2VWYWx1ZSksIHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbywgZWNtYU1vZGUpOwog
fQogCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0
aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCcmFuZCkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAg
ICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNW
YWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2VWYWx1ZSk7CisgICAg
SlNWYWx1ZSBicmFuZCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQnJhbmQpOworCisgICAgQVNT
RVJUKGJhc2VWYWx1ZS5pc09iamVjdCgpKTsKKyAgICBBU1NFUlQoYnJhbmQuaXNTeW1ib2woKSk7
CisKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAg
U3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUodm0pOworICAg
IGJhc2VPYmplY3QtPnNldFByaXZhdGVCcmFuZChnbG9iYWxPYmplY3QsIGJyYW5kKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgIGlmIChDYWNoZWFibGVJZGVudGlm
aWVyOjppc0NhY2hlYWJsZUlkZW50aWZpZXJDZWxsKGJyYW5kKSkgeworICAgICAgICBDYWNoZWFi
bGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9t
Q2VsbChicmFuZC5hc0NlbGwoKSk7CisgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNo
aW5nQnkodm0sIGNvZGVCbG9jaywgYmFzZU9iamVjdC0+c3RydWN0dXJlKHZtKSwgaWRlbnRpZmll
cikpCisgICAgICAgICAgICByZXBhdGNoU2V0UHJpdmF0ZUJyYW5kKGdsb2JhbE9iamVjdCwgY29k
ZUJsb2NrLCBiYXNlT2JqZWN0LCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZpZXIsICpzdHViSW5mbyk7
CisgICAgfQorCit9CisKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25TZXRQcml2
YXRlQnJhbmRHZW5lcmljLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQnJhbmQpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFs
dWUpOworICAgIEpTVmFsdWUgYnJhbmQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJyYW5kKTsK
KworICAgIGlmIChzdHViSW5mbykKKyAgICAgICAgc3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRy
dWU7CisKKyAgICBBU1NFUlQoYmFzZVZhbHVlLmlzT2JqZWN0KCkpOworICAgIEFTU0VSVChicmFu
ZC5pc1N5bWJvbCgpKTsKKworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFz
ZVZhbHVlKTsKKyAgICBiYXNlT2JqZWN0LT5zZXRQcml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0LCBi
cmFuZCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKK30KKworSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUs
IHZvaWQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyog
c3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCcmFuZCkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1ZSBi
YXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2VWYWx1ZSk7CisgICAgSlNWYWx1
ZSBicmFuZCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQnJhbmQpOworCisgICAgSlNPYmplY3Qq
IGJhc2VPYmplY3QgPSBiYXNlVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgQVNTRVJUKGJyYW5kLmlzU3lt
Ym9sKCkpOworCisgICAgYmFzZU9iamVjdC0+Y2hlY2tQcml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0
LCBicmFuZCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICBpZiAo
Q2FjaGVhYmxlSWRlbnRpZmllcjo6aXNDYWNoZWFibGVJZGVudGlmaWVyQ2VsbChicmFuZCkpIHsK
KyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUNlbGwoYnJhbmQuYXNDZWxsKCkpOworICAgICAgICBpZiAoc3R1Yklu
Zm8tPmNvbnNpZGVyQ2FjaGluZ0J5KHZtLCBjb2RlQmxvY2ssIGJhc2VPYmplY3QtPnN0cnVjdHVy
ZSh2bSksIGlkZW50aWZpZXIpKQorICAgICAgICAgICAgcmVwYXRjaENoZWNrUHJpdmF0ZUJyYW5k
KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBpZGVudGlmaWVyLCAqc3R1Yklu
Zm8pOworICAgIH0KK30KKworSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNoZWNr
UHJpdmF0ZUJyYW5kR2VuZXJpYywgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJyYW5kKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFz
ZVZhbHVlKTsKKyAgICBKU1ZhbHVlIGJyYW5kID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCcmFu
ZCk7CisKKyAgICBzdHViSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKKworICAgIEpTT2JqZWN0
KiBiYXNlT2JqZWN0ID0gYmFzZVZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIEFTU0VSVChicmFuZC5pc1N5
bWJvbCgpKTsKKworICAgIGJhc2VPYmplY3QtPmNoZWNrUHJpdmF0ZUJyYW5kKGdsb2JhbE9iamVj
dCwgYnJhbmQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Cit9CisK
IEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXpl
LCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgUHJpdmF0ZUZpZWxkUHV0
S2luZCBwdXRLaW5kKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0y
MjgwLDYgKzIzNzUsOCBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIGdldFByaXZhdGVO
YW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcgogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CiAKICAgICBKU09iamVjdCogYmFzZSA9IGJhc2VW
YWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIEpTVmFsdWUoKSk7CisKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlLCBQcm9wZXJ0eVNs
b3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkpOwogICAgIGJhc2UtPmdldFBy
aXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIGZpZWxkTmFtZSwgc2xvdCk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKQEAgLTIzODYsNyArMjQ4Myw3IEBAIEpTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWRPcHRpbWl6ZSwg
RW5jb2RlZEpTVmFsdWUsIChKCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2xvdC5n
ZXRWYWx1ZShnbG9iYWxPYmplY3QsIGZpZWxkTmFtZSkpOwogICAgIH0KIAotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoZ2V0UHJpdmF0ZU5hbWUoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJh
c2VWYWx1ZSwgZmllbGROYW1lKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUoZ2V0UHJpdmF0ZU5hbWUoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VW
YWx1ZSwgZmllbGROYW1lKSkpOwogfQogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uR2V0UHJpdmF0ZU5hbWVCeUlkR2VuZXJpYywgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCB1aW50cHRyX3QgcmF3Q2Fj
aGVhYmxlSWRlbnRpZmllcikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5oCmluZGV4IDk0MjViNTE3Zjk4ZS4uMmZjM2E1YzY2MjAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMTkyLDYgKzE5MiwxMSBAQCBKU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RP
cHRpbWl6ZSwgdm9pZAogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeUlk
U2V0UHJpdmF0ZUZpZWxkU3RyaWN0LCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVT
dHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2UsIHVpbnRwdHJfdCkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSk7CiAKK0pTQ19ERUNMQVJFX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUsIHZvaWQsIChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRK
U1ZhbHVlKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNoZWNrUHJpdmF0
ZUJyYW5kT3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZv
KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSk7CitKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvblNldFByaXZhdGVCcmFuZEdlbmVyaWMsIHZvaWQsIChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVl
KSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5k
R2VuZXJpYywgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNv
ZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpKTsKKwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3Qq
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbElu
Zm8qLCBQcml2YXRlRmllbGRQdXRLaW5kKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYywgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwg
UHJpdmF0ZUZpZWxkUHV0S2luZCkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25QdXRCeVZhbE9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApp
bmRleCAwYmQ5ZmM2M2FhOTguLmY2MWYzODQwMWI5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTE0Miw2ICsxNDIsNzYgQEAgdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmUKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRo
QmVnaW4sIGNhbGwpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wU2V0UHJpdmF0ZUJyYW5kPigpOworICAgIFZp
cnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOworICAgIFZpcnR1YWxSZWdpc3Rl
ciBicmFuZCA9IGJ5dGVjb2RlLm1fYnJhbmQ7CisgICAgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsK
KyAgICBHUFJSZWcgYnJhbmRHUFIgPSByZWdUMTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KGJhc2UsIGJhc2VHUFIpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnJhbmQsIGJyYW5k
R1BSKTsKKworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlR1BSLCBiYXNlKTsK
KworICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCisgICAgICAgIG1fY29k
ZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRl
Y29kZUluZGV4KSwgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBK
U1ZhbHVlUmVncyhicmFuZEdQUikpOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsK
KyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIG1fcHJpdmF0ZUJyYW5k
QWNjZXNzZXMuYXBwZW5kKGdlbik7CisKKyAgICAvLyBXZSBzaG91bGQgZW1pdCB3cml0ZS1iYXJy
aWVyIGF0IHRoZSBlbmQgb2Ygc2VxdWVuY2Ugc2luY2Ugd3JpdGUtYmFycmllciBjbG9iYmVycyBy
ZWdpc3RlcnMuCisgICAgLy8gSUMgY2FuIHdyaXRlIG5ldyBTdHJ1Y3R1cmUgd2l0aG91dCB3cml0
ZS1iYXJyaWVyIGlmIGEgYmFzZSBpcyBjZWxsLgorICAgIC8vIEZJWE1FOiBVc2UgVW5jb25kaXRp
b25hbFdyaXRlQmFycmllciBpbiBCYXNlbGluZSBlZmZlY3RpdmVseSB0byByZWR1Y2UgY29kZSBz
aXplLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkz
OTUKKyAgICBlbWl0V3JpdGVCYXJyaWVyKGJhc2UsIFNob3VsZEZpbHRlckJhc2UpOworfQorCit2
b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIEdQUlJlZyBi
YXNlR1BSID0gcmVnVDA7CisgICAgR1BSUmVnIGJyYW5kR1BSID0gcmVnVDE7CisKKyAgICBsaW5r
QWxsU2xvd0Nhc2VzKGl0ZXIpOworCisgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9y
JiBnZW4gPSBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzW21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXhd
OworICAgICsrbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleDsKKyAgICBMYWJlbCBjb2xkUGF0aEJl
Z2luID0gbGFiZWwoKTsKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNl
dFByaXZhdGVCcmFuZE9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBiYXNlR1BSLCBicmFuZEdQUik7CisgICAgZ2VuLnJl
cG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKK30KKwordm9pZCBKSVQ6OmVt
aXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
Q2hlY2tQcml2YXRlQnJhbmQ+KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29k
ZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJyYW5kID0gYnl0ZWNvZGUubV9icmFuZDsK
KworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOworICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoYnJhbmQsIHJlZ1QxKTsKKworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5v
dEpTQ2VsbChyZWdUMCwgYmFzZSk7CisKKyAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0
b3IgZ2VuKAorICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgp
LCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0
ZUJyYW5kLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAg
IEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpKTsKKyAgICBnZW4uZ2VuZXJh
dGVGYXN0UGF0aCgqdGhpcyk7CisgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsK
KyAgICBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzLmFwcGVuZChnZW4pOworfQorCit2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgbGlua0FsbFNsb3dDYXNl
cyhpdGVyKTsKKworICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9w
cml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4XTsKKyAgICArK21f
cHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXg7CisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVs
KCk7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25DaGVja1ByaXZhdGVC
cmFuZE9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSks
IGdlbi5zdHViSW5mbygpLCByZWdUMCwgcmVnVDEpOworICAgIGdlbi5yZXBvcnRTbG93UGF0aENh
bGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92
YWxfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAg
ZW1pdF9vcF9wdXRfYnlfdmFsPE9wUHV0QnlWYWxEaXJlY3Q+KGN1cnJlbnRJbnN0cnVjdGlvbik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCA1N2I2YzEzM2Y4ZjIuLjE5
NmM3NTA1OTU0OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC0xMDA1
LDYgKzEwMDUsMTEwIEBAIHZvaWQgcmVwYXRjaEluQnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNPYmplY3QqCiAgICAgICAgIGZ0bFRodW5r
QXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9u
LCBvcGVyYXRpb25JbkJ5SWQpOwogfQogCitzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2Fj
aGVDaGVja1ByaXZhdGVCcmFuZCgKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgSlNPYmplY3QqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIg
YnJhbmRJRCwKKyAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCit7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgcmVzdWx0
OworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBicmFuZElE
LnVpZCgpKTsKKworICAgIHsKKyAgICAgICAgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihjb2RlQmxvY2stPm1fbG9jaywgdm0uaGVhcCk7CisgICAgICAgIGlmIChmb3JjZUlDRmFpbHVy
ZShnbG9iYWxPYmplY3QpKQorICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisKKyAg
ICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlLT5zdHJ1Y3R1cmUodm0pOworCisgICAg
ICAgIElubGluZUNhY2hlQWN0aW9uIGFjdGlvbiA9IGFjdGlvbkZvckNlbGwodm0sIGJhc2UpOwor
ICAgICAgICBpZiAoYWN0aW9uICE9IEF0dGVtcHRUb0NhY2hlKQorICAgICAgICAgICAgcmV0dXJu
IGFjdGlvbjsKKworICAgICAgICAvLyBMT0dfSUMoKElDRXZlbnQ6OkluQWRkQWNjZXNzQ2FzZSwg
c3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlKSk7
CisKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2UgPSBBY2Nlc3ND
YXNlOjpjcmVhdGVDaGVja1ByaXZhdGVCcmFuZCh2bSwgY29kZUJsb2NrLCBicmFuZElELCBzdHJ1
Y3R1cmUpOworCisgICAgICAgIHJlc3VsdCA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UobG9ja2Vy
LCBnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgRUNNQU1vZGU6OnN0cmljdCgpLCBicmFuZElELCBX
VEZNb3ZlKG5ld0Nhc2UpKTsKKworICAgICAgICBpZiAocmVzdWx0LmdlbmVyYXRlZFNvbWVDb2Rl
KCkpIHsKKyAgICAgICAgICAgIC8vIExPR19JQygoSUNFdmVudDo6SW5SZXBsYWNlV2l0aEp1bXAs
IHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZSkp
OworCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKKyAgICAgICAg
ICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgQ29kZUxvY2F0aW9u
TGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGZpcmVXYXRjaHBvaW50c0FuZENsZWFyU3R1YklmTmVlZGVkKHZtLCBzdHVi
SW5mbywgY29kZUJsb2NrLCByZXN1bHQpOworCisgICAgcmV0dXJuIHJlc3VsdC5zaG91bGRHaXZl
VXBOb3coKSA/IEdpdmVVcE9uQ2FjaGUgOiBSZXRyeUNhY2hlTGF0ZXI7Cit9CisKK3ZvaWQgcmVw
YXRjaENoZWNrUHJpdmF0ZUJyYW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVC
bG9jayogY29kZUJsb2NrLCBKU09iamVjdCogYmFzZU9iamVjdCwgQ2FjaGVhYmxlSWRlbnRpZmll
ciBicmFuZElELCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCit7CisgICAgU3VwZXJTYW1w
bGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworCisgICAgaWYgKHRyeUNhY2hlQ2hl
Y2tQcml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIGJyYW5k
SUQsIHN0dWJJbmZvKSA9PSBHaXZlVXBPbkNhY2hlKQorICAgICAgICBmdGxUaHVua0F3YXJlUmVw
YXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0
aW9uQ2hlY2tQcml2YXRlQnJhbmRHZW5lcmljKTsKK30KKworc3RhdGljIElubGluZUNhY2hlQWN0
aW9uIHRyeUNhY2hlU2V0UHJpdmF0ZUJyYW5kKAorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU09iamVjdCogYmFzZSwgU3RydWN0dXJlKiBv
bGRTdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXIgYnJhbmRJRCwKKyAgICBTdHJ1Y3R1cmVT
dHViSW5mbyYgc3R1YkluZm8pCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgcmVzdWx0OworICAgIElkZW50aWZpZXIgaWRlbnQg
PSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBicmFuZElELnVpZCgpKTsKKworICAgIHsKKyAgICAg
ICAgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jaywgdm0u
aGVhcCk7CisgICAgICAgIGlmIChmb3JjZUlDRmFpbHVyZShnbG9iYWxPYmplY3QpKQorICAgICAg
ICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisgICAgICAgIAorICAgICAgICBBU1NFUlQob2xk
U3RydWN0dXJlKTsKKworICAgICAgICBpZiAob2xkU3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkK
KyAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7CisKKyAgICAgICAgSW5saW5lQ2Fj
aGVBY3Rpb24gYWN0aW9uID0gYWN0aW9uRm9yQ2VsbCh2bSwgYmFzZSk7CisgICAgICAgIGlmIChh
Y3Rpb24gIT0gQXR0ZW1wdFRvQ2FjaGUpCisgICAgICAgICAgICByZXR1cm4gYWN0aW9uOworCisg
ICAgICAgIC8vIExPR19JQygoSUNFdmVudDo6SW5BZGRBY2Nlc3NDYXNlLCBzdHJ1Y3R1cmUtPmNs
YXNzSW5mbygpLCBpZGVudCwgc2xvdC5zbG90QmFzZSgpID09IGJhc2UpKTsKKyAgICAgICAgCisg
ICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpzZXRCcmFuZFRyYW5z
aXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVDb25jdXJyZW50bHkob2xkU3RydWN0dXJlLCBicmFu
ZElELnVpZCgpKTsKKyAgICAgICAgaWYgKCFuZXdTdHJ1Y3R1cmUpCisgICAgICAgICAgICByZXR1
cm4gUmV0cnlDYWNoZUxhdGVyOworICAgICAgICBpZiAobmV3U3RydWN0dXJlLT5pc0RpY3Rpb25h
cnkoKSkKKyAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworICAgICAgICBBU1NFUlQo
bmV3U3RydWN0dXJlLT5wcmV2aW91c0lEKCkgPT0gb2xkU3RydWN0dXJlKTsKKyAgICAgICAgQVNT
RVJUKG5ld1N0cnVjdHVyZS0+dHJhbnNpdGlvbktpbmQoKSA9PSBUcmFuc2l0aW9uS2luZDo6U2V0
QnJhbmQpOworICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlLT5pc09iamVjdCgpKTsKKyAgICAg
ICAgCisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNjZXNz
Q2FzZTo6Y3JlYXRlU2V0UHJpdmF0ZUJyYW5kKHZtLCBjb2RlQmxvY2ssIGJyYW5kSUQsIG9sZFN0
cnVjdHVyZSwgbmV3U3RydWN0dXJlKTsKKworICAgICAgICByZXN1bHQgPSBzdHViSW5mby5hZGRB
Y2Nlc3NDYXNlKGxvY2tlciwgZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIEVDTUFNb2RlOjpzdHJp
Y3QoKSwgYnJhbmRJRCwgV1RGTW92ZShuZXdDYXNlKSk7CisKKyAgICAgICAgaWYgKHJlc3VsdC5n
ZW5lcmF0ZWRTb21lQ29kZSgpKSB7CisgICAgICAgICAgICAvLyBMT0dfSUMoKElDRXZlbnQ6Oklu
UmVwbGFjZVdpdGhKdW1wLCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgc2xvdC5zbG90
QmFzZSgpID09IGJhc2UpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQocmVzdWx0LmNvZGUoKSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJB
c0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihy
ZXN1bHQuY29kZSgpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmaXJlV2F0Y2hwb2ludHNB
bmRDbGVhclN0dWJJZk5lZWRlZCh2bSwgc3R1YkluZm8sIGNvZGVCbG9jaywgcmVzdWx0KTsKKyAg
ICAKKyAgICByZXR1cm4gcmVzdWx0LnNob3VsZEdpdmVVcE5vdygpID8gR2l2ZVVwT25DYWNoZSA6
IFJldHJ5Q2FjaGVMYXRlcjsKK30KKwordm9pZCByZXBhdGNoU2V0UHJpdmF0ZUJyYW5kKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU09iamVjdCog
YmFzZU9iamVjdCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXIg
YnJhbmRJRCwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQoreworICAgIFN1cGVyU2FtcGxl
clNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKworICAgIGlmICh0cnlDYWNoZVNldFBy
aXZhdGVCcmFuZChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgb2xkU3RydWN0
dXJlLCAgYnJhbmRJRCwgc3R1YkluZm8pID09IEdpdmVVcE9uQ2FjaGUpCisgICAgICAgIGZ0bFRo
dW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0
aW9uLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRHZW5lcmljKTsKK30KKwogc3RhdGljIElubGlu
ZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5zdGFuY2VPZigKICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZSB2YWx1ZVZhbHVlLCBKU1Zh
bHVlIHByb3RvdHlwZVZhbHVlLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sCiAgICAgYm9v
bCB3YXNGb3VuZCkKQEAgLTE1ODAsNiArMTY4NCwxOCBAQCB2b2lkIHJlc2V0SW5zdGFuY2VPZihT
dHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiAgICAgcmVzZXRQYXRjaGFibGVKdW1wKHN0dWJJ
bmZvKTsKIH0KIAordm9pZCByZXNldENoZWNrUHJpdmF0ZUJyYW5kKENvZGVCbG9jayogY29kZUJs
b2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCit7CisgICAgZnRsVGh1bmtBd2FyZVJl
cGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJh
dGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUpOworICAgIElubGluZUFjY2Vzczo6cmV3aXJl
U3R1YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKK30K
Kwordm9pZCByZXNldFNldFByaXZhdGVCcmFuZChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0
dXJlU3R1YkluZm8mIHN0dWJJbmZvKQoreworICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChj
b2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25TZXRQcml2
YXRlQnJhbmRPcHRpbWl6ZSk7CisgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0
dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworfQorCiBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4ganNUb1dhc21JQ0NvZGVQdHIoVk0mIHZtLCBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpTT2JqZWN0KiBjYWxsZWUpCiB7CiAjaWYgRU5BQkxF
KFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBh
dGNoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAppbmRleCA1ZGQyMGM2
MzZhMDUuLmVlNmQ2ZjNmYzg2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKQEAg
LTUzLDYgKzUzLDggQEAgdm9pZCByZXBhdGNoR2V0QnkoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxv
Y2sqLCBKU1ZhbHVlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBjb24KIHZvaWQgcmVwYXRjaFB1dEJ5
SUQoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5m
byYsIFB1dEtpbmQpOwogdm9pZCByZXBhdGNoRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqLCBDb2Rl
QmxvY2sqLCBEZWxldGVQcm9wZXJ0eVNsb3QmLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqLCBDYWNoZWFi
bGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIERlbEJ5S2luZCwgRUNNQU1vZGUpOwog
dm9pZCByZXBhdGNoSW5CeUlEKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNPYmplY3Qq
LCBDYWNoZWFibGVJZGVudGlmaWVyLCBib29sIHdhc0ZvdW5kLCBjb25zdCBQcm9wZXJ0eVNsb3Qm
LCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwordm9pZCByZXBhdGNoQ2hlY2tQcml2YXRlQnJhbmQoSlNH
bG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU09iamVjdCosIENhY2hlYWJsZUlkZW50aWZpZXIs
IFN0cnVjdHVyZVN0dWJJbmZvJik7Cit2b2lkIHJlcGF0Y2hTZXRQcml2YXRlQnJhbmQoSlNHbG9i
YWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU09iamVjdCosIFN0cnVjdHVyZSosIENhY2hlYWJsZUlk
ZW50aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlcGF0Y2hJbnN0YW5jZU9mKEpT
R2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBwcm90b3R5
cGUsIFN0cnVjdHVyZVN0dWJJbmZvJiwgYm9vbCB3YXNGb3VuZCk7CiB2b2lkIGxpbmtGb3IoVk0m
LCBDYWxsRnJhbWUqLCBDYWxsTGlua0luZm8mLCBDb2RlQmxvY2sqLCBKU09iamVjdCogY2FsbGVl
LCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4pOwogdm9pZCBsaW5rRGlyZWN0
Rm9yKENhbGxGcmFtZSosIENhbGxMaW5rSW5mbyYsIENvZGVCbG9jayosIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjxKU0VudHJ5UHRyVGFnPik7CkBAIC02NCw2ICs2Niw4IEBAIHZvaWQgcmVzZXRQdXRC
eUlEKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlc2V0RGVsQnkoQ29k
ZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBEZWxCeUtpbmQpOwogdm9pZCByZXNldEluQnlJ
RChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXNldEluc3RhbmNlT2Yo
U3RydWN0dXJlU3R1YkluZm8mKTsKK3ZvaWQgcmVzZXRDaGVja1ByaXZhdGVCcmFuZChDb2RlQmxv
Y2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwordm9pZCByZXNldFNldFByaXZhdGVCcmFuZChDb2Rl
QmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCBmdGxUaHVua0F3YXJlUmVwYXRjaENh
bGwoQ29kZUJsb2NrKiwgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUHRyVGFnPiwgRnVuY3Rp
b25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBuZXdDYWxsZWVGdW5jdGlvbik7CiBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHI8SlNFbnRyeVB0clRhZz4ganNUb1dhc21JQ0NvZGVQdHIoVk0mLCBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kLCBKU09iamVjdCogY2FsbGVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggNmNlYjFjNjc3YmQ1Li5jOTI2NjI1
ZmU1NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcApAQCAtMTMwMiw2ICsxMzAyLDc3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9wdXRfcHJpdmF0ZV9uYW1lKQogICAgIExMSU5UX0VORCgpOyAgICAKIH0KIAorTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX3NldF9wcml2YXRlX2JyYW5kKQoreworICAgIExMSU5UX0JF
R0lOKCk7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wU2V0UHJpdmF0ZUJyYW5kPigp
OworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2Rl
Lm1fYmFzZSk7CisgICAgSlNWYWx1ZSBicmFuZCA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRl
Y29kZS5tX2JyYW5kKTsKKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNv
ZGVCbG9jayk7CisgICAgQVNTRVJUKGJhc2VWYWx1ZS5pc09iamVjdCgpKTsKKyAgICBBU1NFUlQo
YnJhbmQuaXNTeW1ib2woKSk7CisKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0
KGJhc2VWYWx1ZSk7CisgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBiYXNlT2JqZWN0LT5z
dHJ1Y3R1cmUodm0pOworCisgICAgYmFzZU9iamVjdC0+c2V0UHJpdmF0ZUJyYW5kKGdsb2JhbE9i
amVjdCwgYnJhbmQpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworCisgICAgaWYgKCFM
TElOVF9BTFdBWVNfQUNDRVNTX1NMT1cgJiYgIW9sZFN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkp
IHsKKyAgICAgICAgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1f
bG9jaywgdm0uaGVhcCk7CisgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gYmFzZU9i
amVjdC0+c3RydWN0dXJlKHZtKTsKKworICAgICAgICBBU1NFUlQob2xkU3RydWN0dXJlID09IG5l
d1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKKyAgICAgICAgQVNTRVJUKG9sZFN0cnVjdHVyZS0+
dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKSk7CisKKyAgICAgICAg
Ly8gU3RhcnQgb3V0IGJ5IGNsZWFyaW5nIG91dCB0aGUgb2xkIGNhY2hlLgorICAgICAgICBtZXRh
ZGF0YS5tX29sZFN0cnVjdHVyZUlEID0gMDsKKyAgICAgICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1
cmVJRCA9IDA7CisgICAgICAgIG1ldGFkYXRhLm1fYnJhbmQuY2xlYXIoKTsKKworICAgICAgICBp
ZiAoIW5ld1N0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpIHsKKyAgICAgICAgICAgIG1ldGFkYXRh
Lm1fb2xkU3RydWN0dXJlSUQgPSBvbGRTdHJ1Y3R1cmUtPmlkKCk7CisgICAgICAgICAgICBtZXRh
ZGF0YS5tX25ld1N0cnVjdHVyZUlEID0gbmV3U3RydWN0dXJlLT5pZCgpOworICAgICAgICAgICAg
bWV0YWRhdGEubV9icmFuZC5zZXQodm0sIGNvZGVCbG9jaywgYnJhbmQuYXNDZWxsKCkpOworICAg
ICAgICB9CisgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CisgICAgfQor
CisgICAgTExJTlRfRU5EKCk7ICAgIAorfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfY2hlY2tfcHJpdmF0ZV9icmFuZCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworCisgICAgYXV0
byBieXRlY29kZSA9IHBjLT5hczxPcENoZWNrUHJpdmF0ZUJyYW5kPigpOworICAgIGF1dG8mIG1l
dGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAgICBKU1ZhbHVlIGJhc2VW
YWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2Jhc2UpOworICAgIEpTVmFs
dWUgYnJhbmQgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9icmFuZCk7CisKKyAg
ICBKU09iamVjdCogYmFzZU9iamVjdCA9IGJhc2VWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3Qp
OworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworCisgICAgQVNTRVJUKGJyYW5kLmlzU3lt
Ym9sKCkpOworCisgICAgYmFzZU9iamVjdC0+Y2hlY2tQcml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0
LCBicmFuZCk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisKKyAgICAvLyBPT1BTOiBJ
cyB0aGVyZSByZWFsbHkgYSBjYXNlIHdoZXJlIHdlIGRvbid0IHdhbnQgdG8gY2FjaGUgaGVyZT8K
KyAgICAvLyBTaW5jZSBhIGJyYW5kIGNhbiBuZXZlciBiZSBkZWxldGVkLCBpdCdzIHNhZmUgdG8g
cmVseSBvbiBTdHJ1Y3R1cmVJRAorICAgIC8vIGV2ZW4gaWYgaXQncyBhbiB1bmNhY2hlYWJsZSBk
aWN0aW9uYXJ5LgorICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZU9iamVjdC0+c3RydWN0
dXJlKHZtKTsKKyAgICBpZiAoIUxMSU5UX0FMV0FZU19BQ0NFU1NfU0xPVykgeworICAgICAgICBH
Q1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrLCB2bS5oZWFw
KTsKKworICAgICAgICBtZXRhZGF0YS5tX3N0cnVjdHVyZUlEID0gc3RydWN0dXJlLT5pZCgpOwor
ICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2spOworICAgIH0KKworICAgIExM
SU5UX0VORCgpOyAgICAKK30KKwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9i
eV92YWwpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggZTEyZGMzODNiY2U3
Li4xOTcxMTVmZmU2YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0xODE1LDYgKzE4MTUsNDQgQEAgbGxpbnRP
cFdpdGhNZXRhZGF0YShvcF9wdXRfcHJpdmF0ZV9uYW1lLCBPcFB1dFByaXZhdGVOYW1lLCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXMKICAgICBkaXNwYXRjaCgpCiBlbmQpCiAKK2xsaW50T3BXaXRoTWV0
YWRhdGEob3Bfc2V0X3ByaXZhdGVfYnJhbmQsIE9wU2V0UHJpdmF0ZUJyYW5kLCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKKyAgICBnZXQobV9iYXNlLCB0MykK
KyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChzaXplLCB0MywgdDAsIC5vcFNldFByaXZh
dGVCcmFuZFNsb3cpCisgICAgZ2V0KG1fYnJhbmQsIHQzKQorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGVDZWxsKHNpemUsIHQzLCB0MSwgLm9wU2V0UHJpdmF0ZUJyYW5kU2xvdykKKyAgICBtZXRh
ZGF0YSh0NSwgdDIpCisgICAgbG9hZGkgT3BTZXRQcml2YXRlQnJhbmQ6Ok1ldGFkYXRhOjptX29s
ZFN0cnVjdHVyZUlEW3Q1XSwgdDIKKyAgICBiaW5lcSB0MiwgSlNDZWxsOjptX3N0cnVjdHVyZUlE
W3QwXSwgLm9wU2V0UHJpdmF0ZUJyYW5kU2xvdworCisgICAgbG9hZHAgT3BTZXRQcml2YXRlQnJh
bmQ6Ok1ldGFkYXRhOjptX2JyYW5kW3Q1XSwgdDMKKyAgICBicW5lcSB0MywgdDEsIC5vcFNldFBy
aXZhdGVCcmFuZFNsb3cKKworICAgICMgT09QUzogd2UgbWlzc2luZyB3cml0ZSBiYXJyaWVyIGhl
cmUuIFRlc3RzIHRvIHZlcmlmeSBzdWNoCisgICAgIyBjYXNlIGlzIGFsc28gbmVjZXNzYXJ5Lgor
ICAgIGxvYWRpIE9wU2V0UHJpdmF0ZUJyYW5kOjpNZXRhZGF0YTo6bV9uZXdTdHJ1Y3R1cmVJRFt0
NV0sIHQxCisgICAgc3RvcmVpIHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdCisgICAgZGlz
cGF0Y2goKQorCisub3BTZXRQcml2YXRlQnJhbmRTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxp
bnRfc2xvd19wYXRoX3NldF9wcml2YXRlX2JyYW5kKQorICAgIGRpc3BhdGNoKCkKK2VuZCkKKwor
bGxpbnRPcFdpdGhNZXRhZGF0YShvcF9jaGVja19wcml2YXRlX2JyYW5kLCBPcENoZWNrUHJpdmF0
ZUJyYW5kLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKKyAg
ICBnZXQobV9iYXNlLCB0MykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChzaXplLCB0
MywgdDAsIC5vcENoZWNrUHJpdmF0ZUJyYW5kU2xvdykKKyAgICBnZXQobV9icmFuZCwgdDMpCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDMsIHQxLCAub3BDaGVja1ByaXZh
dGVCcmFuZFNsb3cpCisgICAgbWV0YWRhdGEodDUsIHQyKQorICAgIGxvYWRpIE9wQ2hlY2tQcml2
YXRlQnJhbmQ6Ok1ldGFkYXRhOjptX3N0cnVjdHVyZUlEW3Q1XSwgdDIKKyAgICBiaW5lcSB0Miwg
SlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgLm9wQ2hlY2tQcml2YXRlQnJhbmRTbG93CisgICAg
ZGlzcGF0Y2goKQorCisub3BDaGVja1ByaXZhdGVCcmFuZFNsb3c6CisgICAgY2FsbFNsb3dQYXRo
KF9sbGludF9zbG93X3BhdGhfY2hlY2tfcHJpdmF0ZV9icmFuZCkKKyAgICBkaXNwYXRjaCgpCitl
bmQpCisKIG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBvc3JFeGl0
UG9pbnQpCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFtZSUsIG9wY29kZVN0
cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAg
ICAgIG1hY3JvIGNvbnRpZ3VvdXNQdXRCeVZhbChzdG9yZUNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVzLmNwcAppbmRleCA2NGE2NmY3NjVjOGYuLjAyYjc4NzVjY2FmNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKQEAgLTIwMiw2ICsyMDIsNyBA
QCBGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUoCiAgICAgICAgICwg
bV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkp
CiAgICAgICAgICwgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcihzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vKSkKICAgICAgICAgLCBtX2lzQXJy
b3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQor
ICAgICAgICAsIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lKSkKICAgICAgICAgLCBtX3BhcnNlTW9kZSht
b2RlKQogICAgICAgICAsIG1fc3RhcnRDb2x1bW4oc3RhcnRDb2x1bW4pCiAgICAgICAgICwgbV9l
bmRDb2x1bW4oZW5kQ29sdW1uKQpAQCAtMjI2LDYgKzIyNyw3IEBAIEZ1bmN0aW9uTWV0YWRhdGFO
b2RlOjpGdW5jdGlvbk1ldGFkYXRhTm9kZSgKICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkKICAgICAgICAgLCBtX25lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihOZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplcjo6Tm8pKQogICAgICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJl
c3Npb24oaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCisgICAgICAgICwgbV9wcml2YXRl
QnJhbmRSZXF1aXJlbWVudChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJpdmF0ZUJyYW5kUmVxdWly
ZW1lbnQ6Ok5vbmUpKQogICAgICAgICAsIG1fcGFyc2VNb2RlKG1vZGUpCiAgICAgICAgICwgbV9z
dGFydENvbHVtbihzdGFydENvbHVtbikKICAgICAgICAgLCBtX2VuZENvbHVtbihlbmRDb2x1bW4p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggZWQ5MDc3NTM5MDU3Li40YmY5
Mzg2ZjI2ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTcyMSw3ICs3
MjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBlbnVtIGNsYXNzIENsYXNzRWxlbWVudFRhZyA6
IHVpbnQ4X3QgeyBObywgSW5zdGFuY2UsIFN0YXRpYywgTGFzdFRhZyB9OwogICAgIGNsYXNzIFBy
b3BlcnR5Tm9kZSBmaW5hbCA6IHB1YmxpYyBQYXJzZXJBcmVuYUZyZWVhYmxlIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIGVudW0gVHlwZSA6IHVpbnQ4X3QgeyBDb25zdGFudCA9IDEsIEdldHRlciA9
IDIsIFNldHRlciA9IDQsIENvbXB1dGVkID0gOCwgU2hvcnRoYW5kID0gMTYsIFNwcmVhZCA9IDMy
LCBQcml2YXRlID0gNjQgfTsKKyAgICAgICAgZW51bSBUeXBlIDogdWludDhfdCB7IENvbnN0YW50
ID0gMSwgR2V0dGVyID0gMiwgU2V0dGVyID0gNCwgQ29tcHV0ZWQgPSA4LCBTaG9ydGhhbmQgPSAx
NiwgU3ByZWFkID0gMzIsIFByaXZhdGVGaWVsZCA9IDY0LCBQcml2YXRlTWV0aG9kID0gMTI4IH07
CiAKICAgICAgICAgUHJvcGVydHlOb2RlKGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9k
ZSosIFR5cGUsIFN1cGVyQmluZGluZywgQ2xhc3NFbGVtZW50VGFnKTsKICAgICAgICAgUHJvcGVy
dHlOb2RlKEV4cHJlc3Npb25Ob2RlKiwgVHlwZSwgU3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRU
YWcpOwpAQCAtNzQwLDcgKzc0MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIGlz
SW5zdGFuY2VDbGFzc0ZpZWxkKCkgY29uc3QgeyByZXR1cm4gaXNJbnN0YW5jZUNsYXNzUHJvcGVy
dHkoKSAmJiAhbmVlZHNTdXBlckJpbmRpbmcoKTsgfQogICAgICAgICBib29sIGlzU3RhdGljQ2xh
c3NGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGlzU3RhdGljQ2xhc3NQcm9wZXJ0eSgpICYmICFuZWVk
c1N1cGVyQmluZGluZygpOyB9CiAgICAgICAgIGJvb2wgaXNPdmVycmlkZGVuQnlEdXBsaWNhdGUo
KSBjb25zdCB7IHJldHVybiBtX2lzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlOyB9Ci0gICAgICAgIGJv
b2wgaXNQcml2YXRlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlICYgUHJpdmF0ZTsgfQorICAgICAg
ICBib29sIGlzUHJpdmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSAmIChQcml2YXRlRmllbGQg
fCBQcml2YXRlTWV0aG9kKTsgfQogICAgICAgICBib29sIGhhc0NvbXB1dGVkTmFtZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZXhwcmVzc2lvbjsgfQogICAgICAgICBib29sIGlzQ29tcHV0ZWRDbGFzc0Zp
ZWxkKCkgY29uc3QgeyByZXR1cm4gaXNDbGFzc0ZpZWxkKCkgJiYgaGFzQ29tcHV0ZWROYW1lKCk7
IH0KICAgICAgICAgdm9pZCBzZXRJc092ZXJyaWRkZW5CeUR1cGxpY2F0ZSgpIHsgbV9pc092ZXJy
aWRkZW5CeUR1cGxpY2F0ZSA9IHRydWU7IH0KQEAgLTc2MCw3ICs3NjAsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogbV9uYW1lOwogICAgICAgICBFeHByZXNz
aW9uTm9kZSogbV9leHByZXNzaW9uOwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9hc3NpZ247
Ci0gICAgICAgIHVuc2lnbmVkIG1fdHlwZSA6IDc7CisgICAgICAgIHVuc2lnbmVkIG1fdHlwZTsK
ICAgICAgICAgdW5zaWduZWQgbV9uZWVkc1N1cGVyQmluZGluZyA6IDE7CiAgICAgICAgIHN0YXRp
Y19hc3NlcnQoMSA8PCAyID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENsYXNzRWxlbWVudFRhZzo6
TGFzdFRhZyksICJDbGFzc0VsZW1lbnRUYWcgc2hvdWxkbid0IHVzZSBtb3JlIHRoYW4gdHdvIGJp
dHMiKTsKICAgICAgICAgdW5zaWduZWQgbV9jbGFzc0VsZW1lbnRUYWcgOiAyOwpAQCAtODM4LDcg
KzgzOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1fc3Vic2NyaXB0SGFzQXNz
aWdubWVudHM7CiAgICAgfTsKIAotICAgIGVudW0gY2xhc3MgRG90VHlwZSB7IE5hbWUsIFByaXZh
dGVGaWVsZCB9OworICAgIGVudW0gY2xhc3MgRG90VHlwZSB7IE5hbWUsIFByaXZhdGVNZW1iZXIg
fTsKICAgICBjbGFzcyBCYXNlRG90Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAg
cHVibGljOgogICAgICAgICBCYXNlRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERvdFR5cGUpOwpAQCAtODQ2LDcg
Kzg0Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBFeHByZXNzaW9uTm9kZSogYmFzZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYmFzZTsgfQogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudDsgfQogICAgICAgICBEb3RUeXBlIHR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KLSAgICAgICAgYm9vbCBpc1ByaXZhdGVGaWVsZCgp
IGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBEb3RUeXBlOjpQcml2YXRlRmllbGQ7IH0KKyAgICAg
ICAgYm9vbCBpc1ByaXZhdGVNZW1iZXIoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gRG90VHlw
ZTo6UHJpdmF0ZU1lbWJlcjsgfQogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRQcm9wZXJ0
eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBi
YXNlLCBSZWZQdHI8UmVnaXN0ZXJJRD4mIHRoaXNWYWx1ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBiYXNlKTsKQEAgLTg3MCw3ICs4NzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSBudWxscHRyKSBmaW5hbDsKIAogICAgICAgICBib29sIGlzTG9jYXRpb24oKSBj
b25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIGJvb2wgaXNQcml2YXRlTG9jYXRp
b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3R5cGUgPT0gRG90VHlwZTo6UHJpdmF0ZUZp
ZWxkOyB9CisgICAgICAgIGJvb2wgaXNQcml2YXRlTG9jYXRpb24oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX3R5cGUgPT0gRG90VHlwZTo6UHJpdmF0ZU1lbWJlcjsgfQogICAgICAgICBib29s
IGlzRG90QWNjZXNzb3JOb2RlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIH07
CiAKQEAgLTIxNjEsNiArMjE2MSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHNl
dEVjbWFOYW1lKGNvbnN0IElkZW50aWZpZXImIGVjbWFOYW1lKSB7IG1fZWNtYU5hbWUgPSBlY21h
TmFtZTsgfQogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBlY21hTmFtZSgpIHsgcmV0dXJuIG1f
aWRlbnQuaXNFbXB0eSgpID8gbV9lY21hTmFtZSA6IG1faWRlbnQ7IH0KIAorICAgICAgICB2b2lk
IHNldFByaXZhdGVCcmFuZFJlcXVpcmVtZW50KFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZh
dGVCcmFuZFJlcXVpcmVtZW50KSB7IG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4ocHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOyB9CisgICAgICAgIFByaXZh
dGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ+KG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQpOyB9CisKICAgICAgICAgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSgpIHsgcmV0dXJuIG1f
ZnVuY3Rpb25Nb2RlOyB9CiAKICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0KCkgY29uc3Qg
eyByZXR1cm4gbV9mdW5jdGlvbk5hbWVTdGFydDsgfQpAQCAtMjIwOSw2ICsyMjEyLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKICAg
ICAgICAgdW5zaWduZWQgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA6IDE7CiAgICAgICAg
IHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gOiAxOworICAgICAgICB1
bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsKICAgICAgICAgU291cmNlUGFy
c2VNb2RlIG1fcGFyc2VNb2RlOwogICAgICAgICBGdW5jdGlvbk1vZGUgbV9mdW5jdGlvbk1vZGU7
CiAgICAgICAgIElkZW50aWZpZXIgbV9pZGVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmNwcAppbmRleCA3MDY3NGM0OGI2MjMuLmFkM2QxMjc1ZGJkNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjg2Miw2ICsyODYyLDcgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlQ2xhc3NFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUNsYXNzKFQKICAgICBjbGFzc1Njb3BlLT5zZXRJc0xleGljYWxTY29wZSgpOwog
ICAgIGNsYXNzU2NvcGUtPnByZXZlbnRWYXJEZWNsYXJhdGlvbnMoKTsKICAgICBjbGFzc1Njb3Bl
LT5zZXRTdHJpY3RNb2RlKCk7CisgICAgYm9vbCBkZWNsYXJlc1ByaXZhdGVNZXRob2QgPSBmYWxz
ZTsKICAgICBuZXh0KCk7CiAKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHJlcXVpcmVtZW50cyAh
PSBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHM6OlVubmFtZWQsICJDdXJyZW50bHksIHRoZXJlIGlz
IG5vIGNhbGxlciB0aGF0IHVzZXMgRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzOjpVbm5hbWVkIGZv
ciBjbGFzcyBzeW50YXguIik7CkBAIC0yOTgxLDE2ICsyOTgyLDIyIEBAIHBhcnNlTWV0aG9kOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUFJJVkFURU5BTUU6IHsKICAgICAgICAg
ICAgIEFTU0VSVChPcHRpb25zOjp1c2VQcml2YXRlQ2xhc3NGaWVsZHMoKSk7Ci0gICAgICAgICAg
ICBKU1Rva2VuIHRva2VuID0gbV90b2tlbjsKICAgICAgICAgICAgIGlkZW50ID0gbV90b2tlbi5t
X2RhdGEuaWRlbnQ7CiAgICAgICAgICAgICBpZiAoIU9wdGlvbnM6OnVzZVByaXZhdGVTdGF0aWND
bGFzc0ZpZWxkcygpKQogICAgICAgICAgICAgICAgIGZhaWxJZlRydWUodGFnID09IENsYXNzRWxl
bWVudFRhZzo6U3RhdGljLCAiU3RhdGljIGNsYXNzIGVsZW1lbnQgY2Fubm90IGJlIHByaXZhdGUi
KTsKICAgICAgICAgICAgIGZhaWxJZlRydWUoaXNHZXR0ZXIgfHwgaXNTZXR0ZXIsICJDYW5ub3Qg
cGFyc2UgY2xhc3MgbWV0aG9kIHdpdGggcHJpdmF0ZSBuYW1lIik7CiAgICAgICAgICAgICBBU1NF
UlQoaWRlbnQpOwogICAgICAgICAgICAgbmV4dCgpOwotICAgICAgICAgICAgZmFpbElmVHJ1ZSht
YXRjaEFuZFVwZGF0ZShPUEVOUEFSRU4sIHRva2VuKSwgIkNhbm5vdCBwYXJzZSBjbGFzcyBtZXRo
b2Qgd2l0aCBwcml2YXRlIG5hbWUiKTsKLSAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShj
bGFzc1Njb3BlLT5kZWNsYXJlUHJpdmF0ZU5hbWUoKmlkZW50KSAmIERlY2xhcmF0aW9uUmVzdWx0
OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb24sICJDYW5ub3QgZGVjbGFyZSBwcml2YXRlIGZp
ZWxkIHR3aWNlIik7Ci0gICAgICAgICAgICB0eXBlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2Rl
OjpUeXBlPih0eXBlIHwgUHJvcGVydHlOb2RlOjpQcml2YXRlKTsKKyAgICAgICAgICAgIGlmIChP
cHRpb25zOjp1c2VQcml2YXRlTWV0aG9kcygpICYmIG1hdGNoKE9QRU5QQVJFTikpIHsKKyAgICAg
ICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoY2xhc3NTY29wZS0+ZGVjbGFyZVByaXZhdGVN
ZXRob2QoKmlkZW50KSAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFy
YXRpb24sICJDYW5ub3QgZGVjbGFyZSBwcml2YXRlIG1ldGhvZCB0d2ljZSIpOworICAgICAgICAg
ICAgICAgIGRlY2xhcmVzUHJpdmF0ZU1ldGhvZCA9IHRydWU7CisgICAgICAgICAgICAgICAgdHlw
ZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4odHlwZSB8IFByb3BlcnR5Tm9kZTo6
UHJpdmF0ZU1ldGhvZCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGZhaWxJZlRydWUobWF0Y2goT1BFTlBBUkVOKSwgIkNhbm5vdCBwYXJzZSBj
bGFzcyBtZXRob2Qgd2l0aCBwcml2YXRlIG5hbWUiKTsKKyAgICAgICAgICAgIHNlbWFudGljRmFp
bElmVHJ1ZShjbGFzc1Njb3BlLT5kZWNsYXJlUHJpdmF0ZUZpZWxkKCppZGVudCkgJiBEZWNsYXJh
dGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uLCAiQ2Fubm90IGRlY2xhcmUg
cHJpdmF0ZSBmaWVsZCB0d2ljZSIpOworICAgICAgICAgICAgdHlwZSA9IHN0YXRpY19jYXN0PFBy
b3BlcnR5Tm9kZTo6VHlwZT4odHlwZSB8IFByb3BlcnR5Tm9kZTo6UHJpdmF0ZUZpZWxkKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0zMDc1LDEw
ICszMDgyLDE5IEBAIHBhcnNlTWV0aG9kOgogICAgIGluZm8uZW5kT2Zmc2V0ID0gdG9rZW5Mb2Nh
dGlvbigpLmVuZE9mZnNldCAtIDE7CiAgICAgY29uc3VtZU9yRmFpbChDTE9TRUJSQUNFLCAiRXhw
ZWN0ZWQgYSBjbG9zaW5nICd9JyBhZnRlciBhIGNsYXNzIGJvZHkiKTsKIAorICAgIGlmIChkZWNs
YXJlc1ByaXZhdGVNZXRob2QpIHsKKyAgICAgICAgSWRlbnRpZmllciBwcml2YXRlQnJhbmRJZGVu
dGlmaWVyID0gbV92bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5wcml2YXRlQnJhbmRQ
cml2YXRlTmFtZSgpOworICAgICAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyYXRpb25S
ZXN1bHQgPSBjbGFzc1Njb3BlLT5kZWNsYXJlTGV4aWNhbFZhcmlhYmxlKCZwcml2YXRlQnJhbmRJ
ZGVudGlmaWVyLCB0cnVlKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChkZWNsYXJhdGlvblJlc3Vs
dCwgZGVjbGFyYXRpb25SZXN1bHQgPT0gRGVjbGFyYXRpb25SZXN1bHQ6OlZhbGlkKTsKKyAgICAg
ICAgY2xhc3NTY29wZS0+dXNlVmFyaWFibGUoJnByaXZhdGVCcmFuZElkZW50aWZpZXIsIGZhbHNl
KTsKKyAgICAgICAgY2xhc3NTY29wZS0+YWRkQ2xvc2VkVmFyaWFibGVDYW5kaWRhdGVVbmNvbmRp
dGlvbmFsbHkocHJpdmF0ZUJyYW5kSWRlbnRpZmllci5pbXBsKCkpOworICAgIH0KKwogICAgIGlm
IChPcHRpb25zOjp1c2VQcml2YXRlQ2xhc3NGaWVsZHMoKSkgewogICAgICAgICAvLyBGYWlsIGlm
IHRoZXJlIGFyZSBubyBwYXJlbnQgcHJpdmF0ZSBuYW1lIHNjb3BlcyBhbmQgYW55IHVzZWQtYnV0
LXVuZGVjbGFyZWQgcHJpdmF0ZSBuYW1lcy4KICAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxzZShj
b3B5VW5kZWNsYXJlZFByaXZhdGVOYW1lc1RvT3V0ZXJTY29wZSgpLCAiQ2Fubm90IHJlZmVyZW5j
ZSB1bmRlY2xhcmVkIHByaXZhdGUgbmFtZXMiKTsKICAgICB9CisKICAgICBhdXRvIGNsYXNzRXhw
cmVzc2lvbiA9IGNvbnRleHQuY3JlYXRlQ2xhc3NFeHByKGxvY2F0aW9uLCBpbmZvLCBjbGFzc1Nj
b3BlLT5maW5hbGl6ZUxleGljYWxFbnZpcm9ubWVudCgpLCBjb25zdHJ1Y3RvciwgcGFyZW50Q2xh
c3MsIGNsYXNzRWxlbWVudHMpOwogICAgIHBvcFNjb3BlKGNsYXNzU2NvcGUsIFRyZWVCdWlsZGVy
OjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pOwogICAgIHJldHVybiBjbGFzc0V4cHJlc3Npb247CkBA
IC01MTQ4LDcgKzUxNjQsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHBy
ZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwogICAgICAgICAgICAg
ICAgICAgICBzZW1hbnRpY0ZhaWxJZkZhbHNlKHVzZVByaXZhdGVOYW1lKGlkZW50KSwgIkNhbm5v
dCByZWZlcmVuY2UgcHJpdmF0ZSBuYW1lcyBvdXRzaWRlIG9mIGNsYXNzIik7CiAgICAgICAgICAg
ICAgICAgICAgIG1fcGFyc2VyU3RhdGUubGFzdFByaXZhdGVOYW1lID0gaWRlbnQ7CiAgICAgICAg
ICAgICAgICAgICAgIGN1cnJlbnRTY29wZSgpLT51c2VWYXJpYWJsZShpZGVudCwgZmFsc2UpOwot
ICAgICAgICAgICAgICAgICAgICB0eXBlID0gRG90VHlwZTo6UHJpdmF0ZUZpZWxkOworICAgICAg
ICAgICAgICAgICAgICB0eXBlID0gRG90VHlwZTo6UHJpdmF0ZU1lbWJlcjsKICAgICAgICAgICAg
ICAgICAgICAgbV90b2tlbi5tX3R5cGUgPSBJREVOVDsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgbWF0Y2hPckZhaWwoSURFTlQsICJFeHBlY3RlZCBhIHByb3BlcnR5IG5hbWUg
YWZ0ZXIgIiwgb3B0aW9uYWxDaGFpbkJhc2UgPyAiJz8uJyIgOiAiJy4nIik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBiZTMzYzFiZTk1ZTkuLjMwODkxOTBhYjFiNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC01MDAsMTEgKzUwMCwyOCBA
QCBwdWJsaWM6CiAgICAgICAgIG1fbGV4aWNhbFZhcmlhYmxlcy51c2VQcml2YXRlTmFtZShpZGVu
dCk7CiAgICAgfQogCi0gICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmVQcml2YXRlTmFt
ZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVj
bGFyZVByaXZhdGVNZXRob2QoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiAgICAgewogICAgICAg
ICBBU1NFUlQobV9hbGxvd3NMZXhpY2FsRGVjbGFyYXRpb25zKTsKICAgICAgICAgRGVjbGFyYXRp
b25SZXN1bHRNYXNrIHJlc3VsdCA9IERlY2xhcmF0aW9uUmVzdWx0OjpWYWxpZDsKLSAgICAgICAg
YXV0byBhZGRSZXN1bHQgPSBtX2xleGljYWxWYXJpYWJsZXMuZGVjbGFyZVByaXZhdGVOYW1lKGlk
ZW50KTsKKyAgICAgICAgYm9vbCBhZGRSZXN1bHQgPSBtX2xleGljYWxWYXJpYWJsZXMuZGVjbGFy
ZVByaXZhdGVNZXRob2QoaWRlbnQpOworCisgICAgICAgIGlmICghYWRkUmVzdWx0KSB7CisgICAg
ICAgICAgICByZXN1bHQgfD0gRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBsaWNhdGVEZWNs
YXJhdGlvbjsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAg
ICB1c2VWYXJpYWJsZSgmaWRlbnQsIGZhbHNlKTsKKyAgICAgICAgYWRkQ2xvc2VkVmFyaWFibGVD
YW5kaWRhdGVVbmNvbmRpdGlvbmFsbHkoaWRlbnQuaW1wbCgpKTsKKworICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgIH0KKworICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJlUHJpdmF0
ZUZpZWxkKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1f
YWxsb3dzTGV4aWNhbERlY2xhcmF0aW9ucyk7CisgICAgICAgIERlY2xhcmF0aW9uUmVzdWx0TWFz
ayByZXN1bHQgPSBEZWNsYXJhdGlvblJlc3VsdDo6VmFsaWQ7CisgICAgICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9sZXhpY2FsVmFyaWFibGVzLmRlY2xhcmVQcml2YXRlRmllbGQoaWRlbnQpOwogICAg
ICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAgcmVzdWx0IHw9IERl
Y2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb247CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CkBAIC05NDQsNyArOTYxLDcgQEAgcHVibGljOgogICAgIH5QYXJzZXIoKTsK
IAogICAgIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWROb2RlPgotICAgIHN0ZDo6dW5pcXVlX3B0cjxQ
YXJzZWROb2RlPiBwYXJzZShQYXJzZXJFcnJvciYsIGNvbnN0IElkZW50aWZpZXImLCBTb3VyY2VQ
YXJzZU1vZGUsIFBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0
b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24gPSBXVEY6Om51bGxvcHQsIGNvbnN0IFZhcmlhYmxlRW52
aXJvbm1lbnQqID0gbnVsbHB0ciwgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogPSBudWxs
cHRyKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFyc2VyRXJyb3Im
LCBjb25zdCBJZGVudGlmaWVyJiwgU291cmNlUGFyc2VNb2RlLCBQYXJzaW5nQ29udGV4dCwgT3B0
aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gV1RG
OjpudWxsb3B0LCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiA9IG51bGxwdHIsIGNvbnN0
IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qID0gbnVsbHB0cik7CiAKICAgICBKU1RleHRQb3NpdGlv
biBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+cG9z
aXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOyB9CiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9u
QmVmb3JlTGFzdFRva2VuKCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+bGFzdFRva2VuTG9jYXRp
b24oKTsgfQpAQCAtMjA3OCw3ICsyMDk1LDcgQEAgcHJpdmF0ZToKIAogdGVtcGxhdGUgPHR5cGVu
YW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWROb2RlPgotc3RkOjp1bmlxdWVf
cHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJy
b3IsIGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1v
ZGUsIFBhcnNpbmdDb250ZXh0IHBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9u
Q29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1l
bnQqIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzLCBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+
KiBjbGFzc0ZpZWxkTG9jYXRpb25zKQorc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IElkZW50aWZpZXIm
IGNhbGxlZU5hbWUsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIFBhcnNpbmdDb250ZXh0IHBh
cnNpbmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJz
RW5kUG9zaXRpb24sIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlUHJp
dmF0ZU5hbWVzLCBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBjbGFzc0ZpZWxkTG9jYXRp
b25zKQogewogICAgIGludCBlcnJMaW5lOwogICAgIFN0cmluZyBlcnJNc2c7CkBAIC0yMDkzLDkg
KzIxMTAsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlKFBhcnNlckVycm9yJiBlcnJvciwgY29uc3QgSQogICAgIEFTU0VSVChtX3NvdXJjZS0+
c3RhcnRDb2x1bW4oKSA+IE9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCkpOwogICAgIHVuc2ln
bmVkIHN0YXJ0Q29sdW1uID0gbV9zb3VyY2UtPnN0YXJ0Q29sdW1uKCkuemVyb0Jhc2VkSW50KCk7
CiAKLSAgICBpZiAoaXNFdmFsTm9kZTxQYXJzZWROb2RlPigpICYmIHBhcmVudFNjb3BlUHJpdmF0
ZU5hbWVzICYmIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzLT5wcml2YXRlTmFtZXNTaXplKCkpIHsK
KyAgICBpZiAoaXNFdmFsTm9kZTxQYXJzZWROb2RlPigpICYmIHBhcmVudFNjb3BlUHJpdmF0ZU5h
bWVzICYmIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzLT5zaXplKCkpIHsKICAgICAgICAgY3VycmVu
dFNjb3BlKCktPnNldElzUHJpdmF0ZU5hbWVTY29wZSgpOwotICAgICAgICBwYXJlbnRTY29wZVBy
aXZhdGVOYW1lcy0+Y29weVByaXZhdGVOYW1lc1RvKGN1cnJlbnRTY29wZSgpLT5sZXhpY2FsVmFy
aWFibGVzKCkpOworICAgICAgICBjdXJyZW50U2NvcGUoKS0+bGV4aWNhbFZhcmlhYmxlcygpLmFk
ZFByaXZhdGVOYW1lc0Zyb20ocGFyZW50U2NvcGVQcml2YXRlTmFtZXMpOwogICAgIH0KIAogICAg
IGF1dG8gcGFyc2VSZXN1bHQgPSBwYXJzZUlubmVyKGNhbGxlZU5hbWUsIHBhcnNlTW9kZSwgcGFy
c2luZ0NvbnRleHQsIGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIGNs
YXNzRmllbGRMb2NhdGlvbnMpOwpAQCAtMjE4Miw3ICsyMTk5LDcgQEAgc3RkOjp1bmlxdWVfcHRy
PFBhcnNlZE5vZGU+IHBhcnNlKAogICAgIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4
dFR5cGUgPSBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsCiAgICAgRXZhbENvbnRleHRUeXBlIGV2
YWxDb250ZXh0VHlwZSA9IEV2YWxDb250ZXh0VHlwZTo6Tm9uZSwKICAgICBEZWJ1Z2dlclBhcnNl
RGF0YSogZGVidWdnZXJQYXJzZURhdGEgPSBudWxscHRyLAotICAgIGNvbnN0IFZhcmlhYmxlRW52
aXJvbm1lbnQqIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzID0gbnVsbHB0ciwKKyAgICBjb25zdCBQ
cml2YXRlTmFtZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVByaXZhdGVOYW1lcyA9IG51bGxwdHIs
CiAgICAgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogY2xhc3NGaWVsZExvY2F0aW9ucyA9
IG51bGxwdHIsCiAgICAgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24gPSBmYWxzZSkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAppbmRleCA3OTUxOGEz
MDU0ZDcuLjFjZGFmYzU4NTkyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXJNb2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyTW9kZXMuaApAQCAtMzcsNiArMzcsOCBAQCBlbnVtIGNsYXNzIEpTUGFyc2VyU2NyaXB0TW9k
ZSB7IENsYXNzaWMsIE1vZHVsZSB9OwogCiBlbnVtIGNsYXNzIFN1cGVyQmluZGluZyB7IE5lZWRl
ZCwgTm90TmVlZGVkIH07CiAKK2VudW0gY2xhc3MgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgeyBO
b25lLCBOZWVkZWQgfTsKKwogZW51bSBjbGFzcyBDb2RlR2VuZXJhdGlvbk1vZGUgOiB1aW50OF90
IHsKICAgICBEZWJ1Z2dlciA9IDEgPDwgMCwKICAgICBUeXBlUHJvZmlsZXIgPSAxIDw8IDEsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4IDg1NjFm
MTU2YmY3My4uOWVmMmVmN2JkMjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1N5bnRheENoZWNrZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1N5bnRheENoZWNrZXIuaApAQCAtMTc5LDcgKzE3OSw3IEBAIHB1YmxpYzoKICAgICBFeHByZXNz
aW9uVHlwZSBjcmVhdGVCb29sZWFuKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGJvb2wpIHsgcmV0
dXJuIEJvb2xFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTnVsbChjb25zdCBKU1Rv
a2VuTG9jYXRpb24mKSB7IHJldHVybiBOdWxsRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNy
ZWF0ZUJyYWNrZXRBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUs
IEV4cHJlc3Npb25UeXBlLCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBCcmFja2V0RXhw
cjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZURvdEFjY2Vzcyhjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uVHlwZSwgY29uc3QgSWRlbnRpZmllciosIERvdFR5cGUgdHlwZSwg
aW50LCBpbnQsIGludCkgeyByZXR1cm4gdHlwZSA9PSBEb3RUeXBlOjpQcml2YXRlRmllbGQgPyBQ
cml2YXRlRG90RXhwciA6IERvdEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVEb3RB
Y2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIGNvbnN0IElkZW50
aWZpZXIqLCBEb3RUeXBlIHR5cGUsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIHR5cGUgPT0gRG90
VHlwZTo6UHJpdmF0ZU1lbWJlciA/IFByaXZhdGVEb3RFeHByIDogRG90RXhwcjsgfQogICAgIEV4
cHJlc3Npb25UeXBlIGNyZWF0ZVJlZ0V4cChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJ
ZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25zdCBJZGVudGlmaWVyJiBmbGFncywgaW50KSB7IHJldHVy
biBZYXJyOjpoYXNFcnJvcihZYXJyOjpjaGVja1N5bnRheChwYXR0ZXJuLnN0cmluZygpLCBmbGFn
cy5zdHJpbmcoKSkpID8gMCA6IFJlZ0V4cEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVh
dGVOZXdFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGlu
dCwgaW50LCBpbnQpIHsgcmV0dXJuIE5ld0V4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVh
dGVOZXdFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGlu
dCkgeyByZXR1cm4gTmV3RXhwcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAKaW5kZXggODFhOWM5MzhkYzExLi4zZWM1N2Mz
ZTJhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVF
bnZpcm9ubWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJs
ZUVudmlyb25tZW50LmNwcApAQCAtMTA0LDYgKzEwNCw0MCBAQCB2b2lkIFZhcmlhYmxlRW52aXJv
bm1lbnQ6Om1hcmtWYXJpYWJsZUFzRXhwb3J0ZWQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJ
bXBsPgogICAgIGZpbmRSZXN1bHQtPnZhbHVlLnNldElzRXhwb3J0ZWQoKTsKIH0KIAorYm9vbCBW
YXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZU1ldGhvZChjb25zdCBSZWZQdHI8VW5p
cXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQoreworICAgIGlmICghbV9yYXJlRGF0YSkKKyAg
ICAgICAgbV9yYXJlRGF0YSA9IG1ha2VVbmlxdWU8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURh
dGE+KCk7CisKKyAgICBhdXRvIGZpbmRSZXN1bHQgPSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1l
cy5maW5kKGlkZW50aWZpZXIpOworCisgICAgaWYgKGZpbmRSZXN1bHQgPT0gbV9yYXJlRGF0YS0+
bV9wcml2YXRlTmFtZXMuZW5kKCkpIHsKKyAgICAgICAgUHJpdmF0ZU5hbWVFbnRyeSBtZXRhKFBy
aXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNEZWNsYXJlZCB8IFByaXZhdGVOYW1lRW50cnk6OlRy
YWl0czo6SXNNZXRob2QpOworCisgICAgICAgIGF1dG8gZW50cnkgPSBWYXJpYWJsZUVudmlyb25t
ZW50RW50cnkoKTsKKyAgICAgICAgZW50cnkuc2V0SXNQcml2YXRlTWV0aG9kKCk7CisgICAgICAg
IGVudHJ5LnNldElzQ29uc3QoKTsKKyAgICAgICAgZW50cnkuc2V0SXNDYXB0dXJlZCgpOworICAg
ICAgICBtX21hcC5hZGQoaWRlbnRpZmllciwgZW50cnkpOworCisgICAgICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKGlkZW50aWZpZXIsIG1ldGEpOwor
ICAgICAgICByZXR1cm4gYWRkUmVzdWx0LmlzTmV3RW50cnk7CisgICAgfQorCisgICAgaWYgKGZp
bmRSZXN1bHQtPnZhbHVlLmlzRGVjbGFyZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBF
cnJvcjogZGVjbGFyaW5nIGEgZHVwbGljYXRlIHByaXZhdGUgbmFtZS4KKworICAgIGF1dG8gZW50
cnkgPSBWYXJpYWJsZUVudmlyb25tZW50RW50cnkoKTsKKyAgICBlbnRyeS5zZXRJc1ByaXZhdGVN
ZXRob2QoKTsKKyAgICBlbnRyeS5zZXRJc0NvbnN0KCk7CisgICAgZW50cnkuc2V0SXNDYXB0dXJl
ZCgpOworICAgIG1fbWFwLmFkZChpZGVudGlmaWVyLCBlbnRyeSk7CisKKyAgICAvLyBpdCB3YXMg
cHJldmlvdXNseSB1c2VkLCBtYXJrIGl0IGFzIGRlY2xhcmVkLgorICAgIFByaXZhdGVOYW1lRW50
cnkgbWV0YShQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzRGVjbGFyZWQgfCBQcml2YXRlTmFt
ZUVudHJ5OjpUcmFpdHM6OklzVXNlZCB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNNZXRo
b2QpOworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuc2V0
KGlkZW50aWZpZXIsIG1ldGEpOworICAgIHJldHVybiAhYWRkUmVzdWx0LmlzTmV3RW50cnk7Cit9
CiAKIHZvaWQgQ29tcGFjdFREWkVudmlyb25tZW50Ojpzb3J0Q29tcGFjdChDb21wYWN0JiBjb21w
YWN0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJs
ZUVudmlyb25tZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52
aXJvbm1lbnQuaAppbmRleCA1MmU5YWE0NjU4MzcuLmY2ZDM1OGIxOTcwMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKQEAgLTQ1
LDcgKzQ1LDggQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0Z1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNGdW5jdGlvbjsgfQogICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBpc1BhcmFtZXRlcigpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzUGFyYW1ldGVyOyB9
CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlKCkg
Y29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGU7IH0K
LSAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQcml2YXRlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Yml0cyAmIElzUHJpdmF0ZU5hbWU7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQcml2YXRl
RmllbGQoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1ByaXZhdGVGaWVsZDsgfQorICAgIEFM
V0FZU19JTkxJTkUgYm9vbCBpc1ByaXZhdGVNZXRob2QoKSBjb25zdCB7IHJldHVybiBtX2JpdHMg
JiBJc1ByaXZhdGVNZXRob2Q7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0NhcHR1
cmVkKCkgeyBtX2JpdHMgfD0gSXNDYXB0dXJlZDsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXRJc0NvbnN0KCkgeyBtX2JpdHMgfD0gSXNDb25zdDsgfQpAQCAtNTcsNyArNTgsOCBAQCBwdWJs
aWM6CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzRnVuY3Rpb24oKSB7IG1fYml0cyB8PSBJ
c0Z1bmN0aW9uOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzUGFyYW1ldGVyKCkgeyBt
X2JpdHMgfD0gSXNQYXJhbWV0ZXI7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNTbG9w
cHlNb2RlSG9pc3RpbmdDYW5kaWRhdGUoKSB7IG1fYml0cyB8PSBJc1Nsb3BweU1vZGVIb2lzdGlu
Z0NhbmRpZGF0ZTsgfQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1ByaXZhdGVOYW1lKCkg
eyBtX2JpdHMgfD0gSXNQcml2YXRlTmFtZTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJ
c1ByaXZhdGVGaWVsZCgpIHsgbV9iaXRzIHw9IElzUHJpdmF0ZUZpZWxkOyB9CisgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldElzUHJpdmF0ZU1ldGhvZCgpIHsgbV9iaXRzIHw9IElzUHJpdmF0ZU1l
dGhvZDsgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGNsZWFySXNWYXIoKSB7IG1fYml0cyAm
PSB+SXNWYXI7IH0KIApAQCAtODAsNyArODIsOCBAQCBwcml2YXRlOgogICAgICAgICBJc0Z1bmN0
aW9uID0gMSA8PCA3LAogICAgICAgICBJc1BhcmFtZXRlciA9IDEgPDwgOCwKICAgICAgICAgSXNT
bG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGUgPSAxIDw8IDksCi0gICAgICAgIElzUHJpdmF0ZU5h
bWUgPSAxIDw8IDEwLAorICAgICAgICBJc1ByaXZhdGVGaWVsZCA9IDEgPDwgMTAsCisgICAgICAg
IElzUHJpdmF0ZU1ldGhvZCA9IDEgPDwgMTEsCiAgICAgfTsKICAgICB1aW50MTZfdCBtX2JpdHMg
eyAwIH07CiB9OwpAQCAtOTAsMTEgKzkzLDE2IEBAIHN0cnVjdCBWYXJpYWJsZUVudmlyb25tZW50
RW50cnlIYXNoVHJhaXRzIDogSGFzaFRyYWl0czxWYXJpYWJsZUVudmlyb25tZW50RW50cnk+CiB9
OwogCiBzdHJ1Y3QgUHJpdmF0ZU5hbWVFbnRyeSB7CisgICAgZnJpZW5kIGNsYXNzIENhY2hlZFBy
aXZhdGVOYW1lRW50cnk7CisKIHB1YmxpYzoKICAgICBQcml2YXRlTmFtZUVudHJ5KHVpbnQxNl90
IHRyYWl0cyA9IDApIHsgbV9iaXRzID0gdHJhaXRzOyB9CiAKICAgICBBTFdBWVNfSU5MSU5FIGJv
b2wgaXNVc2VkKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNVc2VkOyB9CiAgICAgQUxXQVlT
X0lOTElORSBib29sIGlzRGVjbGFyZWQoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc0RlY2xh
cmVkOyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzTWV0aG9kKCkgY29uc3QgeyByZXR1cm4g
bV9iaXRzICYgSXNNZXRob2Q7IH0KKworICAgIGJvb2wgaXNQcml2YXRlTWV0aG9kT3JBY2Vzc29y
KCkgY29uc3QgeyByZXR1cm4gaXNNZXRob2QoKTsgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldElzVXNlZCgpIHsgbV9iaXRzIHw9IElzVXNlZDsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXRJc0RlY2xhcmVkKCkgeyBtX2JpdHMgfD0gSXNEZWNsYXJlZDsgfQpAQCAtMTA3LDggKzEx
NSwxMCBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgZW51bSBUcmFpdHMgOiB1aW50MTZfdCB7Cisg
ICAgICAgIE5vbmUgPSAwLAogICAgICAgICBJc1VzZWQgPSAxIDw8IDAsCiAgICAgICAgIElzRGVj
bGFyZWQgPSAxIDw8IDEsCisgICAgICAgIElzTWV0aG9kID0gMSA8PCAyLAogICAgIH07CiAKIHBy
aXZhdGU6CkBAIC0xMTYsMTUgKzEyNiwxOCBAQCBwcml2YXRlOgogfTsKIAogc3RydWN0IFByaXZh
dGVOYW1lRW50cnlIYXNoVHJhaXRzIDogSGFzaFRyYWl0czxQcml2YXRlTmFtZUVudHJ5PiB7Ci0g
ICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IGZhbHNlOworICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFsc2U7CiB9OwogCit0eXBlZGVm
IEhhc2hNYXA8UGFja2VkUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgUHJpdmF0ZU5hbWVFbnRy
eSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBs
Pj4sIFByaXZhdGVOYW1lRW50cnlIYXNoVHJhaXRzPiBQcml2YXRlTmFtZUVudmlyb25tZW50Owor
CiBjbGFzcyBWYXJpYWJsZUVudmlyb25tZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFBhY2tlZFJlZlB0cjxVbmlxdWVkU3Ry
aW5nSW1wbD4sIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhh
c2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFZhcmlhYmxlRW52aXJvbm1lbnRF
bnRyeUhhc2hUcmFpdHM+IE1hcDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8UGFja2VkUmVmUHRyPFVu
aXF1ZWRTdHJpbmdJbXBsPiwgUHJpdmF0ZU5hbWVFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhh
c2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnlIYXNo
VHJhaXRzPiBQcml2YXRlTmFtZXM7CisKIHB1YmxpYzoKKwogICAgIFZhcmlhYmxlRW52aXJvbm1l
bnQoKSB7IH0KICAgICBWYXJpYWJsZUVudmlyb25tZW50KFZhcmlhYmxlRW52aXJvbm1lbnQmJiBv
dGhlcikKICAgICAgICAgOiBtX21hcChXVEZNb3ZlKG90aGVyLm1fbWFwKSkKQEAgLTE0Niw2ICsx
NTksMTYgQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgTWFwOjpjb25zdF9pdGVyYXRvciBl
bmQoKSBjb25zdCB7IHJldHVybiBtX21hcC5lbmQoKTsgfQogICAgIEFMV0FZU19JTkxJTkUgTWFw
OjpBZGRSZXN1bHQgYWRkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZp
ZXIpIHsgcmV0dXJuIG1fbWFwLmFkZChpZGVudGlmaWVyLCBWYXJpYWJsZUVudmlyb25tZW50RW50
cnkoKSk7IH0KICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6QWRkUmVzdWx0IGFkZChjb25zdCBJZGVu
dGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBhZGQoaWRlbnRpZmllci5pbXBsKCkpOyB9CisK
KyAgICBBTFdBWVNfSU5MSU5FIFByaXZhdGVOYW1lRW52aXJvbm1lbnQ6OkFkZFJlc3VsdCBhZGRQ
cml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBhZGRQcml2
YXRlTmFtZShpZGVudGlmaWVyLmltcGwoKSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIFByaXZhdGVO
YW1lRW52aXJvbm1lbnQ6OkFkZFJlc3VsdCBhZGRQcml2YXRlTmFtZShjb25zdCBSZWZQdHI8VW5p
cXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3JhcmVE
YXRhKQorICAgICAgICAgICAgbV9yYXJlRGF0YSA9IG1ha2VVbmlxdWU8VmFyaWFibGVFbnZpcm9u
bWVudDo6UmFyZURhdGE+KCk7CisKKyAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fcHJpdmF0
ZU5hbWVzLmFkZChpZGVudGlmaWVyLCBQcml2YXRlTmFtZUVudHJ5KCkpOworICAgIH0KKwogICAg
IEFMV0FZU19JTkxJTkUgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUo
KSArIHByaXZhdGVOYW1lc1NpemUoKTsgfQogICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgbWFw
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKTsgfQogICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBjb250YWlucyhjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVy
KSBjb25zdCB7IHJldHVybiBtX21hcC5jb250YWlucyhpZGVudGlmaWVyKTsgfQpAQCAtMTY0LDE3
ICsxODcsMjAgQEAgcHVibGljOgogICAgIGJvb2wgaXNFdmVyeXRoaW5nQ2FwdHVyZWQoKSBjb25z
dCB7IHJldHVybiBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkOyB9CiAgICAgYm9vbCBpc0VtcHR5KCkg
Y29uc3QgeyByZXR1cm4gIW1fbWFwLnNpemUoKTsgfQogCi0gICAgdXNpbmcgUHJpdmF0ZU5hbWVz
UmFuZ2UgPSBXVEY6Okl0ZXJhdG9yUmFuZ2U8UHJpdmF0ZU5hbWVzOjppdGVyYXRvcj47CisgICAg
dXNpbmcgUHJpdmF0ZU5hbWVzUmFuZ2UgPSBXVEY6Okl0ZXJhdG9yUmFuZ2U8UHJpdmF0ZU5hbWVF
bnZpcm9ubWVudDo6aXRlcmF0b3I+OwogCi0gICAgQUxXQVlTX0lOTElORSBNYXA6OkFkZFJlc3Vs
dCBkZWNsYXJlUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyByZXR1
cm4gZGVjbGFyZVByaXZhdGVOYW1lKGlkZW50aWZpZXIuaW1wbCgpKTsgfQorICAgIEFMV0FZU19J
TkxJTkUgTWFwOjpBZGRSZXN1bHQgZGVjbGFyZVByaXZhdGVGaWVsZChjb25zdCBJZGVudGlmaWVy
JiBpZGVudGlmaWVyKSB7IHJldHVybiBkZWNsYXJlUHJpdmF0ZUZpZWxkKGlkZW50aWZpZXIuaW1w
bCgpKTsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1c2VQcml2YXRlTmFtZShjb25zdCBJZGVu
dGlmaWVyJiBpZGVudGlmaWVyKSB7IHVzZVByaXZhdGVOYW1lKGlkZW50aWZpZXIuaW1wbCgpKTsg
fQogCi0gICAgTWFwOjpBZGRSZXN1bHQgZGVjbGFyZVByaXZhdGVOYW1lKGNvbnN0IFJlZlB0cjxV
bmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCisgICAgYm9vbCBkZWNsYXJlUHJpdmF0ZU1l
dGhvZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBkZWNsYXJlUHJpdmF0
ZU1ldGhvZChpZGVudGlmaWVyLmltcGwoKSk7IH0KKyAgICBib29sIGRlY2xhcmVQcml2YXRlTWV0
aG9kKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpOworCisgICAg
TWFwOjpBZGRSZXN1bHQgZGVjbGFyZVByaXZhdGVGaWVsZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0
cmluZ0ltcGw+JiBpZGVudGlmaWVyKQogICAgIHsKICAgICAgICAgYXV0byYgbWV0YSA9IGdldE9y
QWRkUHJpdmF0ZU5hbWUoaWRlbnRpZmllci5nZXQoKSk7CiAgICAgICAgIG1ldGEuc2V0SXNEZWNs
YXJlZCgpOwogICAgICAgICBhdXRvIGVudHJ5ID0gVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCk7
Ci0gICAgICAgIGVudHJ5LnNldElzUHJpdmF0ZU5hbWUoKTsKKyAgICAgICAgZW50cnkuc2V0SXNQ
cml2YXRlRmllbGQoKTsKICAgICAgICAgZW50cnkuc2V0SXNDb25zdCgpOwogICAgICAgICBlbnRy
eS5zZXRJc0NhcHR1cmVkKCk7CiAgICAgICAgIHJldHVybiBtX21hcC5hZGQoaWRlbnRpZmllciwg
ZW50cnkpOwpAQCAtMjAxLDYgKzIyNywyNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3Jh
cmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5zaXplKCk7CiAgICAgfQogCisgICAgQUxXQVlTX0lOTElO
RSBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiBwcml2YXRlTmFtZUVudmlyb25tZW50KCkg
Y29uc3QKKyAgICB7CisgICAgICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICByZXR1cm4gJm1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzOwor
ICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgYm9vbCBoYXNQcml2YXRlTWV0aG9kT3JBY2Nlc3Nv
cigpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAgICAgZm9yIChhdXRvIGVudHJ5IDogcHJpdmF0ZU5hbWVzKCkp
IHsKKyAgICAgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc1ByaXZhdGVNZXRob2RPckFjZXNzb3Io
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaGFzUHJpdmF0ZU5h
bWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKICAgICB7CiAgICAgICAgIGlmICghbV9y
YXJlRGF0YSkKQEAgLTIyMiw2ICsyNjgsMjAgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQog
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGFkZFByaXZhdGVOYW1lc0Zyb20oY29uc3QgUHJpdmF0
ZU5hbWVFbnZpcm9ubWVudCogcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCkKKyAgICB7CisgICAgICAg
IGlmICghcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgICAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1
ZTxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4oKTsKKworICAgICAgICBmb3IgKGF1dG8g
ZW50cnkgOiAqcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCkgeworICAgICAgICAgICAgQVNTRVJUKGVu
dHJ5LnZhbHVlLmlzRGVjbGFyZWQoKSk7CisgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3ByaXZh
dGVOYW1lcy5hZGQoZW50cnkua2V5LCBlbnRyeS52YWx1ZSk7CisgICAgICAgIH0KKyAgICB9CisK
ICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXNUbyhWYXJp
YWJsZUVudmlyb25tZW50JiBvdXRlcikgY29uc3QgewogICAgICAgICAvLyBVc2VkIGJ5IHRoZSBQ
YXJzZXIgdG8gdHJhbnNmZXIgcmVjb3JkZWQgdXNlcyBvZiBQcml2YXRlTmFtZXMgZnJvbSBhbgog
ICAgICAgICAvLyBpbm5lciBQcml2YXRlTmFtZUVudmlyb25tZW50IGludG8gYW4gb3V0ZXIgb25l
LCBpbiBjYXNlIGEgUE5FIGlzIHVzZWQKQEAgLTI0NCw3ICszMDQsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIH0KICAgICAgICAgUmFyZURhdGEoY29uc3QgUmFyZURhdGEmKSA9IGRlZmF1bHQ7CiAgICAg
ICAgIFJhcmVEYXRhJiBvcGVyYXRvcj0oY29uc3QgUmFyZURhdGEmKSA9IGRlZmF1bHQ7Ci0gICAg
ICAgIFByaXZhdGVOYW1lcyBtX3ByaXZhdGVOYW1lczsKKyAgICAgICAgUHJpdmF0ZU5hbWVFbnZp
cm9ubWVudCBtX3ByaXZhdGVOYW1lczsKICAgICB9OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCmluZGV4IGNmZGM5ZWRiMDU1YS4u
MmJiMzBkNTc5NTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
YWNoZWRUeXBlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVk
VHlwZXMuY3BwCkBAIC05OTQsNiArOTk0LDcgQEAgcHVibGljOgogICAgICAgICBtX2JpdFZlY3Rv
cnMuZW5jb2RlKGVuY29kZXIsIHJhcmVEYXRhLm1fYml0VmVjdG9ycyk7CiAgICAgICAgIG1fY29u
c3RhbnRJZGVudGlmaWVyU2V0cy5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9jb25zdGFudElk
ZW50aWZpZXJTZXRzKTsKICAgICAgICAgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9IHJh
cmVEYXRhLm1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI7CisgICAgICAgIG1fcHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQgPSByYXJlRGF0YS5tX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50OwogICAg
IH0KIAogICAgIFVubGlua2VkQ29kZUJsb2NrOjpSYXJlRGF0YSogZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpIGNvbnN0CkBAIC0xMDA4LDYgKzEwMDksNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYml0
VmVjdG9ycy5kZWNvZGUoZGVjb2RlciwgcmFyZURhdGEtPm1fYml0VmVjdG9ycyk7CiAgICAgICAg
IG1fY29uc3RhbnRJZGVudGlmaWVyU2V0cy5kZWNvZGUoZGVjb2RlciwgcmFyZURhdGEtPm1fY29u
c3RhbnRJZGVudGlmaWVyU2V0cyk7CiAgICAgICAgIHJhcmVEYXRhLT5tX25lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyID0gbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjsKKyAgICAgICAgcmFy
ZURhdGEtPm1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBtX3ByaXZhdGVCcmFuZFJlcXVpcmVt
ZW50OwogICAgICAgICByZXR1cm4gcmFyZURhdGE7CiAgICAgfQogCkBAIC0xMDIxLDggKzEwMjMs
MTEgQEAgcHJpdmF0ZToKICAgICBDYWNoZWRWZWN0b3I8Q2FjaGVkQml0VmVjdG9yPiBtX2JpdFZl
Y3RvcnM7CiAgICAgQ2FjaGVkVmVjdG9yPENhY2hlZENvbnN0YW50SWRlbnRpZmllclNldEVudHJ5
PiBtX2NvbnN0YW50SWRlbnRpZmllclNldHM7CiAgICAgdW5zaWduZWQgbV9uZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplciA6IDE7CisgICAgdW5zaWduZWQgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVu
dCA6IDE7CiB9OwogCit0eXBlZGVmIENhY2hlZEhhc2hNYXA8Q2FjaGVkUmVmUHRyPENhY2hlZFVu
aXF1ZWRTdHJpbmdJbXBsLCBVbmlxdWVkU3RyaW5nSW1wbCwgV1RGOjpQYWNrZWRQdHJUcmFpdHM8
VW5pcXVlZFN0cmluZ0ltcGw+PiwgUHJpdmF0ZU5hbWVFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gs
IEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnlI
YXNoVHJhaXRzPiBDYWNoZWRQcml2YXRlTmFtZUVudmlyb25tZW50OworCiBjbGFzcyBDYWNoZWRW
YXJpYWJsZUVudmlyb25tZW50UmFyZURhdGEgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFZhcmlhYmxl
RW52aXJvbm1lbnQ6OlJhcmVEYXRhPiB7CiBwdWJsaWM6CiAgICAgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGEmIHJhcmVEYXRh
KQpAQCAtMTAzNiw3ICsxMDQxLDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBD
YWNoZWRIYXNoTWFwPENhY2hlZFJlZlB0cjxDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbCwgVW5pcXVl
ZFN0cmluZ0ltcGwsIFdURjo6UGFja2VkUHRyVHJhaXRzPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFBy
aXZhdGVOYW1lRW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlx
dWVkU3RyaW5nSW1wbD4+LCBQcml2YXRlTmFtZUVudHJ5SGFzaFRyYWl0cz4gbV9wcml2YXRlTmFt
ZXM7CisgICAgQ2FjaGVkUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCBtX3ByaXZhdGVOYW1lczsKIH07
CiAKIGNsYXNzIENhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnQgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0
PFZhcmlhYmxlRW52aXJvbm1lbnQ+IHsKQEAgLTEyMTMsNyArMTIxOCw3IEBAIHB1YmxpYzoKICAg
ICB9CiAKIHByaXZhdGU6Ci0gICAgQ2FjaGVkSGFzaFNldDxDYWNoZWRSZWZQdHI8Q2FjaGVkVW5p
cXVlZFN0cmluZ0ltcGw+LCBJZGVudGlmaWVyUmVwSGFzaD4gbV9wcml2YXRlTmFtZXM7CisgICAg
Q2FjaGVkSGFzaE1hcDxDYWNoZWRSZWZQdHI8Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGwsIFVuaXF1
ZWRTdHJpbmdJbXBsLCBXVEY6OlBhY2tlZFB0clRyYWl0czxVbmlxdWVkU3RyaW5nSW1wbD4+LCBQ
cml2YXRlTmFtZUVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5p
cXVlZFN0cmluZ0ltcGw+PiwgUHJpdmF0ZU5hbWVFbnRyeUhhc2hUcmFpdHM+IG1fcHJpdmF0ZU5h
bWVzOwogfTsKIAogY2xhc3MgQ2FjaGVkU3ltYm9sVGFibGUgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0
PFN5bWJvbFRhYmxlPiB7CkBAIC0xNzkwLDYgKzE3OTUsNyBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICBtX2NsYXNzU291cmNlLmVuY29kZShlbmNvZGVyLCByYXJlRGF0YS5tX2NsYXNzU291cmNl
KTsKICAgICAgICAgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5lbmNvZGUoZW5jb2RlciwgcmFy
ZURhdGEubV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CisgICAgICAgIG1fcGFyZW50UHJpdmF0
ZU5hbWVFbnZpcm9ubWVudC5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9wYXJlbnRQcml2YXRl
TmFtZUVudmlyb25tZW50KTsKICAgICB9CiAKICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6UmFyZURhdGEqIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKSBjb25zdApAQCAtMTc5NywxMiAr
MTgwMywxNCBAQCBwdWJsaWM6CiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpS
YXJlRGF0YSogcmFyZURhdGEgPSBuZXcgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlJhcmVE
YXRhIHsgfTsKICAgICAgICAgbV9jbGFzc1NvdXJjZS5kZWNvZGUoZGVjb2RlciwgcmFyZURhdGEt
Pm1fY2xhc3NTb3VyY2UpOwogICAgICAgICBtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzLmRlY29k
ZShkZWNvZGVyLCByYXJlRGF0YS0+bV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CisgICAgICAg
IG1fcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudC5kZWNvZGUoZGVjb2RlciwgcmFyZURhdGEt
Pm1fcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCk7CiAgICAgICAgIHJldHVybiByYXJlRGF0
YTsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgQ2FjaGVkU291cmNlQ29kZVdpdGhvdXRQcm92aWRl
ciBtX2NsYXNzU291cmNlOwogICAgIENhY2hlZFJlZlB0cjxDYWNoZWRURFpFbnZpcm9ubWVudExp
bms+IG1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7CisgICAgQ2FjaGVkUHJpdmF0ZU5hbWVFbnZp
cm9ubWVudCBtX3BhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQ7CiB9OwogCiBjbGFzcyBDYWNo
ZWRGdW5jdGlvbkV4ZWN1dGFibGUgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlPiB7CkBAIC0xODM4LDYgKzE4NDYsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWdu
ZWQgc3VwZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdXBlckJpbmRpbmc7IH0KICAgICB1
bnNpZ25lZCBkZXJpdmVkQ29udGV4dFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2Rlcml2ZWRDb250
ZXh0VHlwZTsgfQogICAgIHVuc2lnbmVkIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkgY29u
c3QgeyByZXR1cm4gbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjsgfQorICAgIHVuc2lnbmVk
IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlQnJhbmRS
ZXF1aXJlbWVudDsgfQogCiAgICAgSWRlbnRpZmllciBuYW1lKERlY29kZXImIGRlY29kZXIpIGNv
bnN0IHsgcmV0dXJuIG1fbmFtZS5kZWNvZGUoZGVjb2Rlcik7IH0KICAgICBJZGVudGlmaWVyIGVj
bWFOYW1lKERlY29kZXImIGRlY29kZXIpIGNvbnN0IHsgcmV0dXJuIG1fZWNtYU5hbWUuZGVjb2Rl
KGRlY29kZXIpOyB9CkBAIC0xODY2LDcgKzE4NzUsOCBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVk
IG1fcGFyYW1ldGVyc1N0YXJ0T2Zmc2V0IDogMzE7CiAgICAgdW5zaWduZWQgbV90eXBlUHJvZmls
aW5nU3RhcnRPZmZzZXQ7CiAgICAgdW5zaWduZWQgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0Owot
ICAgIHVuc2lnbmVkIG1fcGFyYW1ldGVyQ291bnQ7CisgICAgdW5zaWduZWQgbV9wYXJhbWV0ZXJD
b3VudDozMTsKKyAgICB1bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsKICAg
ICBTb3VyY2VQYXJzZU1vZGUgbV9zb3VyY2VQYXJzZU1vZGU7CiAgICAgdW5zaWduZWQgbV9jb25z
dHJ1Y3RvcktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZnVuY3Rpb25Nb2RlIDogMjsgLy8gRnVu
Y3Rpb25Nb2RlCkBAIC0xOTIzLDcgKzE5MzMsNiBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgaXND
bGFzc0NvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzQ2xhc3NDb250ZXh0OyB9CiAgICAgdW5z
aWduZWQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gbV9jb25zdHJ1Y3RvcktpbmQ7
IH0KICAgICB1bnNpZ25lZCBkZXJpdmVkQ29udGV4dFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2Rl
cml2ZWRDb250ZXh0VHlwZTsgfQotICAgIHVuc2lnbmVkIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjsgfQogICAg
IHVuc2lnbmVkIGV2YWxDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXZhbENvbnRleHRU
eXBlOyB9CiAgICAgdW5zaWduZWQgaGFzVGFpbENhbGxzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNU
YWlsQ2FsbHM7IH0KICAgICB1bnNpZ25lZCBoYXNDaGVja3BvaW50cygpIGNvbnN0IHsgcmV0dXJu
IG1faGFzQ2hlY2twb2ludHM7IH0KQEAgLTE5NTUsNyArMTk2NCw2IEBAIHByaXZhdGU6CiAgICAg
dW5zaWduZWQgbV9pc0NsYXNzQ29udGV4dCA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3Rv
cktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZGVyaXZlZENvbnRleHRUeXBlIDogMjsKLSAgICB1
bnNpZ25lZCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIDogMTsKICAgICB1bnNpZ25lZCBt
X2V2YWxDb250ZXh0VHlwZSA6IDI7CiAgICAgdW5zaWduZWQgbV9oYXNUYWlsQ2FsbHMgOiAxOwog
ICAgIHVuc2lnbmVkIG1fY29kZVR5cGUgOiAyOwpAQCAtMjIzNiw2ICsyMjQ0LDcgQEAgQUxXQVlT
X0lOTElORSB2b2lkIENhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IFVubGkKICAgICBtX3N1cGVyQmluZGluZyA9IGV4ZWN1dGFibGUubV9zdXBl
ckJpbmRpbmc7CiAgICAgbV9kZXJpdmVkQ29udGV4dFR5cGUgPSBleGVjdXRhYmxlLm1fZGVyaXZl
ZENvbnRleHRUeXBlOwogICAgIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSBleGVjdXRh
YmxlLm1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI7CisgICAgbV9wcml2YXRlQnJhbmRSZXF1
aXJlbWVudCA9IGV4ZWN1dGFibGUubV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudDsKIAogICAgIG1f
cmFyZURhdGEuZW5jb2RlKGVuY29kZXIsIGV4ZWN1dGFibGUubV9yYXJlRGF0YS5nZXQoKSk7CiAK
QEAgLTIyNzcsNiArMjI4Niw3IEBAIEFMV0FZU19JTkxJTkUgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKERlY29kZXImIGRlCiAgICAgLCBtX3R5
cGVQcm9maWxpbmdTdGFydE9mZnNldChjYWNoZWRFeGVjdXRhYmxlLnR5cGVQcm9maWxpbmdTdGFy
dE9mZnNldCgpKQogICAgICwgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KGNhY2hlZEV4ZWN1dGFi
bGUudHlwZVByb2ZpbGluZ0VuZE9mZnNldCgpKQogICAgICwgbV9wYXJhbWV0ZXJDb3VudChjYWNo
ZWRFeGVjdXRhYmxlLnBhcmFtZXRlckNvdW50KCkpCisgICAgLCBtX3ByaXZhdGVCcmFuZFJlcXVp
cmVtZW50KGNhY2hlZEV4ZWN1dGFibGUucHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSkKICAgICAs
IG1fZmVhdHVyZXMoY2FjaGVkRXhlY3V0YWJsZS5mZWF0dXJlcygpKQogICAgICwgbV9zb3VyY2VQ
YXJzZU1vZGUoY2FjaGVkRXhlY3V0YWJsZS5zb3VyY2VQYXJzZU1vZGUoKSkKICAgICAsIG1fY29u
c3RydWN0b3JLaW5kKGNhY2hlZEV4ZWN1dGFibGUuY29uc3RydWN0b3JLaW5kKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRleCAxYzczYjRjMzI0MmYu
LmM0Mjk3MmFmZmRjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29kZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2Fj
aGUuY3BwCkBAIC03MSwxMyArNzEsMTMgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVVbmxpbmtlZENv
ZGVCbG9ja0ZvckZ1bmN0aW9ucyhWTSYgdm0sIFVubGlua2VkQ29kZUJsb2NrKiB1bmwKIH0KIAog
dGVtcGxhdGUgPGNsYXNzIFVubGlua2VkQ29kZUJsb2NrVHlwZSwgY2xhc3MgRXhlY3V0YWJsZVR5
cGUgPSBTY3JpcHRFeGVjdXRhYmxlPgotVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBnZW5lcmF0ZVVu
bGlua2VkQ29kZUJsb2NrSW1wbChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQ
YXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2Rl
LCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIFBhcnNl
ckVycm9yJiBlcnJvciwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgRGVyaXZlZENv
bnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0
LCBjb25zdCBURFpFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFogPSBudWxscHRyLCBjb25z
dCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVByaXZhdGVOYW1lcyA9IG51bGxwdHIs
IEV4ZWN1dGFibGVUeXBlKiBleGVjdXRhYmxlID0gbnVsbHB0cikKK1VubGlua2VkQ29kZUJsb2Nr
VHlwZSogZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ltcGwoVk0mIHZtLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBKU1BhcnNlclNjcmlw
dE1vZGUgc2NyaXB0TW9kZSwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVy
YXRpb25Nb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4
dFR5cGUsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJv
d0Z1bmN0aW9uQ29udGV4dCwgY29uc3QgVERaRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERa
ID0gbnVsbHB0ciwgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogcHJpdmF0ZU5hbWVFbnZp
cm9ubWVudCA9IG51bGxwdHIsIEV4ZWN1dGFibGVUeXBlKiBleGVjdXRhYmxlID0gbnVsbHB0cikK
IHsKICAgICB0eXBlZGVmIHR5cGVuYW1lIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBl
Pjo6Um9vdE5vZGUgUm9vdE5vZGU7CiAgICAgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24g
PSBleGVjdXRhYmxlICYmIGV4ZWN1dGFibGUtPmlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbigpOwog
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJvb3ROb2RlPiByb290Tm9kZSA9IHBhcnNlPFJvb3ROb2Rl
PigKLSAgICAgICAgdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2Rl
OjpOb3RCdWlsdGluLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2RlLCBDYWNoZVR5cGVzPFVubGlua2Vk
Q29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGVycm9y
LCBudWxscHRyLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGRlcml2ZWRDb250ZXh0VHlwZSwgZXZh
bENvbnRleHRUeXBlLCBudWxscHRyLCBwYXJlbnRTY29wZVByaXZhdGVOYW1lcywgbnVsbHB0ciwg
aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKTsKKyAgICAgICAgdm0sIHNvdXJjZSwgSWRlbnRpZmll
cigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBzdHJpY3RNb2RlLCBzY3JpcHRN
b2RlLCBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwgU3VwZXJC
aW5kaW5nOjpOb3ROZWVkZWQsIGVycm9yLCBudWxscHRyLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUs
IGRlcml2ZWRDb250ZXh0VHlwZSwgZXZhbENvbnRleHRUeXBlLCBudWxscHRyLCBwcml2YXRlTmFt
ZUVudmlyb25tZW50LCBudWxscHRyLCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24pOwogCiAgICAg
aWYgKCFyb290Tm9kZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC05NCw5ICs5NCwxMiBA
QCBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsKFZN
JiB2bSwgY29uc3QgU291cmNlQ29kZSYgcwogICAgIGJvb2wgdXNlc0V2YWwgPSByb290Tm9kZS0+
ZmVhdHVyZXMoKSAmIEV2YWxGZWF0dXJlOwogICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gcm9vdE5v
ZGUtPmZlYXR1cmVzKCkgJiBTdHJpY3RNb2RlRmVhdHVyZSA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6
IEVDTUFNb2RlOjpzbG9wcHkoKTsKICAgICBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplciA9IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObzsK
LSAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZV92PEV4ZWN1dGFibGVUeXBlLCBEaXJlY3RF
dmFsRXhlY3V0YWJsZT4pCisgICAgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQgPSBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZTsKKyAgICBpZiBjb25z
dGV4cHIgKHN0ZDo6aXNfc2FtZV92PEV4ZWN1dGFibGVUeXBlLCBEaXJlY3RFdmFsRXhlY3V0YWJs
ZT4pIHsKICAgICAgICAgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSBleGVjdXRhYmxlLT5u
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpOwotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFi
bGVJbmZvKHVzZXNFdmFsLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgc2Ny
aXB0TW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIENhY2hlVHlwZXM8VW5saW5rZWRDb2Rl
QmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBmYWxzZSwgZXZhbENvbnRleHRU
eXBlKTsKKyAgICAgICAgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBleGVjdXRhYmxlLT5wcml2
YXRlQnJhbmRSZXF1aXJlbWVudCgpOworICAgIH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRh
YmxlSW5mbyh1c2VzRXZhbCwgZmFsc2UsIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBmYWxzZSwg
Q29uc3RydWN0b3JLaW5kOjpOb25lLCBzY3JpcHRNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRl
ZCwgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIGRlcml2ZWRD
b250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGlzQXJyb3dGdW5jdGlvbkNv
bnRleHQsIGZhbHNlLCBldmFsQ29udGV4dFR5cGUpOwogCiAgICAgVW5saW5rZWRDb2RlQmxvY2tU
eXBlKiB1bmxpbmtlZENvZGVCbG9jayA9IFVubGlua2VkQ29kZUJsb2NrVHlwZTo6Y3JlYXRlKHZt
LCBleGVjdXRhYmxlSW5mbywgY29kZUdlbmVyYXRpb25Nb2RlKTsKICAgICB1bmxpbmtlZENvZGVC
bG9jay0+cmVjb3JkUGFyc2Uocm9vdE5vZGUtPmZlYXR1cmVzKCksIHJvb3ROb2RlLT5oYXNDYXB0
dXJlZFZhcmlhYmxlcygpLCBsaW5lQ291bnQsIHVubGlua2VkRW5kQ29sdW1uKTsKQEAgLTEwOCw3
ICsxMTEsNyBAQCBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxv
Y2tJbXBsKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgcwogICAgIFJlZlB0cjxURFpFbnZpcm9u
bWVudExpbms+IHBhcmVudFZhcmlhYmxlc1VuZGVyVERaOwogICAgIGlmICh2YXJpYWJsZXNVbmRl
clREWikKICAgICAgICAgcGFyZW50VmFyaWFibGVzVW5kZXJURFogPSBURFpFbnZpcm9ubWVudExp
bms6OmNyZWF0ZSh2bS5tX2NvbXBhY3RWYXJpYWJsZU1hcC0+Z2V0KCp2YXJpYWJsZXNVbmRlclRE
WiksIG51bGxwdHIpOwotICAgIGVycm9yID0gQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKHZt
LCByb290Tm9kZS5nZXQoKSwgc291cmNlLCB1bmxpbmtlZENvZGVCbG9jaywgY29kZUdlbmVyYXRp
b25Nb2RlLCBwYXJlbnRWYXJpYWJsZXNVbmRlclREWiwgZWNtYU1vZGUpOworICAgIGVycm9yID0g
Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKHZtLCByb290Tm9kZS5nZXQoKSwgc291cmNlLCB1
bmxpbmtlZENvZGVCbG9jaywgY29kZUdlbmVyYXRpb25Nb2RlLCBwYXJlbnRWYXJpYWJsZXNVbmRl
clREWiwgcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgZWNtYU1vZGUpOwogCiAgICAgaWYgKGVycm9y
LmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMTcsMTQgKzEyMCwxNCBA
QCBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsKFZN
JiB2bSwgY29uc3QgU291cmNlQ29kZSYgcwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgVW5saW5rZWRD
b2RlQmxvY2tUeXBlLCBjbGFzcyBFeGVjdXRhYmxlVHlwZT4KLVVubGlua2VkQ29kZUJsb2NrVHlw
ZSogZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9jayhWTSYgdm0sIEV4ZWN1dGFibGVUeXBlKiBleGVj
dXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJp
Y3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgT3B0aW9uU2V0PENvZGVHZW5l
cmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IsIEV2YWxD
b250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIGNvbnN0IFREWkVudmlyb25tZW50KiB2YXJpYWJs
ZXNVbmRlclREWiA9IG51bGxwdHIsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNj
b3BlUHJpdmF0ZU5hbWVzID0gbnVsbHB0cikKK1VubGlua2VkQ29kZUJsb2NrVHlwZSogZ2VuZXJh
dGVVbmxpbmtlZENvZGVCbG9jayhWTSYgdm0sIEV4ZWN1dGFibGVUeXBlKiBleGVjdXRhYmxlLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBK
U1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9k
ZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IsIEV2YWxDb250ZXh0VHlw
ZSBldmFsQ29udGV4dFR5cGUsIGNvbnN0IFREWkVudmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclRE
WiA9IG51bGxwdHIsIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHByaXZhdGVOYW1lRW52
aXJvbm1lbnQgPSBudWxscHRyKQogewotICAgIHJldHVybiBnZW5lcmF0ZVVubGlua2VkQ29kZUJs
b2NrSW1wbDxVbmxpbmtlZENvZGVCbG9ja1R5cGUsIEV4ZWN1dGFibGVUeXBlPih2bSwgc291cmNl
LCBzdHJpY3RNb2RlLCBzY3JpcHRNb2RlLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVycm9yLCBldmFs
Q29udGV4dFR5cGUsIGV4ZWN1dGFibGUtPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBleGVjdXRhYmxl
LT5pc0Fycm93RnVuY3Rpb25Db250ZXh0KCksIHZhcmlhYmxlc1VuZGVyVERaLCBwYXJlbnRTY29w
ZVByaXZhdGVOYW1lcywgZXhlY3V0YWJsZSk7CisgICAgcmV0dXJuIGdlbmVyYXRlVW5saW5rZWRD
b2RlQmxvY2tJbXBsPFVubGlua2VkQ29kZUJsb2NrVHlwZSwgRXhlY3V0YWJsZVR5cGU+KHZtLCBz
b3VyY2UsIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIGNvZGVHZW5lcmF0aW9uTW9kZSwgZXJyb3Is
IGV2YWxDb250ZXh0VHlwZSwgZXhlY3V0YWJsZS0+ZGVyaXZlZENvbnRleHRUeXBlKCksIGV4ZWN1
dGFibGUtPmlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgdmFyaWFibGVzVW5kZXJURFosIHByaXZh
dGVOYW1lRW52aXJvbm1lbnQsIGV4ZWN1dGFibGUpOwogfQogCi1VbmxpbmtlZEV2YWxDb2RlQmxv
Y2sqIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tGb3JEaXJlY3RFdmFsKFZNJiB2bSwgRGlyZWN0
RXZhbEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQ
YXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2Rl
LCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIFBhcnNl
ckVycm9yJiBlcnJvciwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgY29uc3QgVERa
RW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50
KiBwYXJlbnRTY29wZVByaXZhdGVOYW1lcykKK1VubGlua2VkRXZhbENvZGVCbG9jayogZ2VuZXJh
dGVVbmxpbmtlZENvZGVCbG9ja0ZvckRpcmVjdEV2YWwoVk0mIHZtLCBEaXJlY3RFdmFsRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlclN0cmlj
dE1vZGUgc3RyaWN0TW9kZSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIE9wdGlvblNl
dDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgUGFyc2VyRXJyb3ImIGVy
cm9yLCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlLCBjb25zdCBURFpFbnZpcm9ubWVu
dCogdmFyaWFibGVzVW5kZXJURFosIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHByaXZh
dGVOYW1lRW52aXJvbm1lbnQpCiB7Ci0gICAgcmV0dXJuIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxv
Y2s8VW5saW5rZWRFdmFsQ29kZUJsb2NrPih2bSwgZXhlY3V0YWJsZSwgc291cmNlLCBzdHJpY3RN
b2RlLCBzY3JpcHRNb2RlLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVycm9yLCBldmFsQ29udGV4dFR5
cGUsIHZhcmlhYmxlc1VuZGVyVERaLCBwYXJlbnRTY29wZVByaXZhdGVOYW1lcyk7CisgICAgcmV0
dXJuIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2s8VW5saW5rZWRFdmFsQ29kZUJsb2NrPih2bSwg
ZXhlY3V0YWJsZSwgc291cmNlLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2RlLCBjb2RlR2VuZXJhdGlv
bk1vZGUsIGVycm9yLCBldmFsQ29udGV4dFR5cGUsIHZhcmlhYmxlc1VuZGVyVERaLCBwcml2YXRl
TmFtZUVudmlyb25tZW50KTsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFVubGlua2VkQ29kZUJsb2Nr
VHlwZT4KQEAgLTI0OCw3ICsyNTEsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQ29k
ZUNhY2hlOjpnZXRVbmxpbmtlZEdsb2JhbEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYgdgogICAgIC8v
IFRoZSBGdW5jdGlvbiBjb25zdHJ1Y3RvciBvbmx5IGhhcyBhY2Nlc3MgdG8gZ2xvYmFsIHZhcmlh
Ymxlcywgc28gbm8gdmFyaWFibGVzIHdpbGwgYmUgdW5kZXIgVERaIHVubGVzcyB0aGV5J3JlCiAg
ICAgLy8gaW4gdGhlIGdsb2JhbCBsZXhpY2FsIGVudmlyb25tZW50LCB3aGljaCB3ZSBhbHdheXMg
VERaIGNoZWNrIGFjY2Vzc2VzIGZyb20uCiAgICAgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RB
YmlsaXR5ID0gY29uc3RydWN0QWJpbGl0eUZvclBhcnNlTW9kZShtZXRhZGF0YS0+cGFyc2VNb2Rl
KCkpOwotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUg
PSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBzb3VyY2UsIG1ldGFkYXRh
LCBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlw
dE1vZGU6OkNsYXNzaWMsIG51bGxwdHIsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgTmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0
ZSh2bSwgc291cmNlLCBtZXRhZGF0YSwgVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0
QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBudWxscHRyLCBXVEY6Om51bGxv
cHQsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6
Ok5vLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZSk7CiAKICAgICBpZiAoIXNvdXJjZS5w
cm92aWRlcigpLT5zb3VyY2VVUkxEaXJlY3RpdmUoKS5pc051bGwoKSkKICAgICAgICAgZnVuY3Rp
b25FeGVjdXRhYmxlLT5zZXRTb3VyY2VVUkxEaXJlY3RpdmUoc291cmNlLnByb3ZpZGVyKCktPnNv
dXJjZVVSTERpcmVjdGl2ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvZGVDYWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNh
Y2hlLmgKaW5kZXggOWNjMWNhNzAwNDQ3Li42MGE3N2QyYWYzYWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCkBAIC0yNTQsNyArMjU0LDcgQEAgdGVtcGxhdGUg
PD4gc3RydWN0IENhY2hlVHlwZXM8VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrPiB7CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFy
c2VNb2RlOjpNb2R1bGVFdmFsdWF0ZU1vZGU7CiB9OwogCi1VbmxpbmtlZEV2YWxDb2RlQmxvY2sq
IGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tGb3JEaXJlY3RFdmFsKFZNJiwgRGlyZWN0RXZhbEV4
ZWN1dGFibGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJTdHJpY3RNb2RlLCBKU1BhcnNl
clNjcmlwdE1vZGUsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBQYXJzZXJFcnJvciYs
IEV2YWxDb250ZXh0VHlwZSwgY29uc3QgVERaRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERa
LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVByaXZhdGVOYW1lcyk7CitV
bmxpbmtlZEV2YWxDb2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tGb3JEaXJlY3RF
dmFsKFZNJiwgRGlyZWN0RXZhbEV4ZWN1dGFibGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQYXJz
ZXJTdHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGUsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlv
bk1vZGU+LCBQYXJzZXJFcnJvciYsIEV2YWxDb250ZXh0VHlwZSwgY29uc3QgVERaRW52aXJvbm1l
bnQqIHZhcmlhYmxlc1VuZGVyVERaLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50Kik7CiBV
bmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIHJlY3Vyc2l2ZWx5R2VuZXJhdGVVbmxpbmtlZENvZGVC
bG9ja0ZvclByb2dyYW0oVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJTdHJpY3RNb2Rl
LCBKU1BhcnNlclNjcmlwdE1vZGUsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBQYXJz
ZXJFcnJvciYsIEV2YWxDb250ZXh0VHlwZSk7CiBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2sqIHJlY3Vyc2l2ZWx5R2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0Zvck1vZHVsZVByb2dyYW0o
Vk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJTdHJpY3RNb2RlLCBKU1BhcnNlclNjcmlw
dE1vZGUsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBQYXJzZXJFcnJvciYsIEV2YWxD
b250ZXh0VHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcAppbmRleCBjN2MyOWMwNTAyOTYuLmY2Zjc5MzA3ZGZl
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4
ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2
YWxFeGVjdXRhYmxlLmNwcApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAot
RGlyZWN0RXZhbEV4ZWN1dGFibGUqIERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBEZXJpdmVk
Q29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
ciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0
LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250
ZXh0VHlwZSwgY29uc3QgVERaRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaLCBjb25zdCBW
YXJpYWJsZUVudmlyb25tZW50KiBwcml2YXRlTmFtZXMsIEVDTUFNb2RlIGVjbWFNb2RlKQorRGly
ZWN0RXZhbEV4ZWN1dGFibGUqIERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBEZXJpdmVkQ29u
dGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBu
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0lu
c2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIGNv
bnN0IFREWkVudmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclREWiwgY29uc3QgUHJpdmF0ZU5hbWVF
bnZpcm9ubWVudCogcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTQ0LDcgKzQ0LDcgQEAgRGlyZWN0RXZhbEV4ZWN1dGFi
bGUqIERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byogZXhlY3V0
YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERpcmVjdEV2YWxFeGVjdXRhYmxlPih2
bS5oZWFwKSkgRGlyZWN0RXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGVjbWFN
b2RlLmlzU3RyaWN0KCksIGRlcml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwg
ZXZhbENvbnRleHRUeXBlKTsKKyAgICBhdXRvKiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8RGlyZWN0RXZhbEV4ZWN1dGFibGU+KHZtLmhlYXApKSBEaXJlY3RFdmFsRXhl
Y3V0YWJsZShnbG9iYWxPYmplY3QsIHNvdXJjZSwgZWNtYU1vZGUuaXNTdHJpY3QoKSwgZGVyaXZl
ZENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgcHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlv
biwgZXZhbENvbnRleHRUeXBlKTsKICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbih2bSk7
CiAKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKQEAgLTUyLDcgKzUyLDcgQEAgRGlyZWN0RXZhbEV4
ZWN1dGFibGUqIERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwKICAgICBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJh
dGlvbk1vZGUgPSBnbG9iYWxPYmplY3QtPmRlZmF1bHRDb2RlR2VuZXJhdGlvbk1vZGUoKTsKIAog
ICAgIC8vIFdlIGRvbid0IGJvdGhlciB3aXRoIENvZGVDYWNoZSBoZXJlIGJlY2F1c2UgZGlyZWN0
IGV2YWwgdXNlcyBhIHNwZWNpYWxpemVkIERpcmVjdEV2YWxDb2RlQ2FjaGUuCi0gICAgVW5saW5r
ZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZEV2YWxDb2RlID0gZ2VuZXJhdGVVbmxpbmtlZENvZGVC
bG9ja0ZvckRpcmVjdEV2YWwodm0sIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPnNvdXJjZSgpLCBz
dHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIGNvZGVHZW5lcmF0aW9uTW9k
ZSwgZXJyb3IsIGV2YWxDb250ZXh0VHlwZSwgdmFyaWFibGVzVW5kZXJURFosIHByaXZhdGVOYW1l
cyk7CisgICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZEV2YWxDb2RlID0gZ2VuZXJh
dGVVbmxpbmtlZENvZGVCbG9ja0ZvckRpcmVjdEV2YWwodm0sIGV4ZWN1dGFibGUsIGV4ZWN1dGFi
bGUtPnNvdXJjZSgpLCBzdHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIGNv
ZGVHZW5lcmF0aW9uTW9kZSwgZXJyb3IsIGV2YWxDb250ZXh0VHlwZSwgdmFyaWFibGVzVW5kZXJU
RFosIHByaXZhdGVOYW1lRW52aXJvbm1lbnQpOwogCiAgICAgaWYgKGdsb2JhbE9iamVjdC0+aGFz
RGVidWdnZXIoKSkKICAgICAgICAgZ2xvYmFsT2JqZWN0LT5kZWJ1Z2dlcigpLT5zb3VyY2VQYXJz
ZWQoZ2xvYmFsT2JqZWN0LCBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLCBlcnJvci5s
aW5lKCksIGVycm9yLm1lc3NhZ2UoKSk7CkBAIC02NywxMCArNjcsMTAgQEAgRGlyZWN0RXZhbEV4
ZWN1dGFibGUqIERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwKICAgICByZXR1cm4gZXhlY3V0YWJsZTsKIH0KIAotRGlyZWN0RXZhbEV4ZWN1
dGFibGU6OkRpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRD
b250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
IG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQs
IGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRl
eHRUeXBlKQotICAgIDogRXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGluU3Ry
aWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBp
c0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIpCitEaXJlY3RFdmFsRXhlY3V0YWJsZTo6RGlyZWN0RXZhbEV4ZWN1dGFibGUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBi
b29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlw
ZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIs
IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29sIGlz
QXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFs
Q29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKQorICAgIDogRXZhbEV4ZWN1dGFibGUoZ2xvYmFs
T2JqZWN0LCBzb3VyY2UsIGluU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fy
cm93RnVuY3Rpb25Db250ZXh0LCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250ZXh0
VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50
KQogewotICAgIEFTU0VSVChuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9PSBOZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplcjo6Tm8gfHwgZGVyaXZlZENvbnRleHRUeXBlID09IERlcml2ZWRDb250
ZXh0VHlwZTo6RGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCk7CisgICAgQVNTRVJUKChuZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplciA9PSBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8gJiYg
cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPT0gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmUp
IHx8IGRlcml2ZWRDb250ZXh0VHlwZSA9PSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRDb25z
dHJ1Y3RvckNvbnRleHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oCmluZGV4IDhj
NTJjYjY4MWU4ZC4uMzYyY2VkOGQ3YjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmgKQEAgLTMxLDkgKzMxLDkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKIGNsYXNzIERpcmVjdEV2YWxFeGVjdXRhYmxlIGZpbmFsIDogcHVibGlj
IEV2YWxFeGVjdXRhYmxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgRGlyZWN0RXZhbEV4ZWN1dGFi
bGUqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBEZXJpdmVkQ29u
dGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlv
bkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUs
IGNvbnN0IFREWkVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgY29uc3QgVmFy
aWFibGVFbnZpcm9ubWVudCogcHJpdmF0ZU5hbWVzLCBFQ01BTW9kZSk7CisgICAgc3RhdGljIERp
cmVjdEV2YWxFeGVjdXRhYmxlKiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VD
b2RlJiwgRGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBp
c0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSwgY29uc3QgVERaRW52aXJv
bm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25t
ZW50KiwgRUNNQU1vZGUpOwogcHJpdmF0ZToKLSAgICBEaXJlY3RFdmFsRXhlY3V0YWJsZShKU0ds
b2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVy
aXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0Fycm93
RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZhbENvbnRl
eHRUeXBlKTsKKyAgICBEaXJlY3RFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCosIGNvbnN0
IFNvdXJjZUNvZGUmLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBO
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2
YWxDb250ZXh0VHlwZSk7CiB9OwogCiBzdGF0aWNfYXNzZXJ0KHNpemVvZihEaXJlY3RFdmFsRXhl
Y3V0YWJsZSkgPT0gc2l6ZW9mKEV2YWxFeGVjdXRhYmxlKSwgIiIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuY3BwCmluZGV4IDJlYzEzN2E3MzYy
Mi4uMGIzZDQxNjRhYTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FdmFsRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXZhbEV4ZWN1dGFibGUuY3BwCkBAIC0zMiw5ICszMiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
Y29uc3QgQ2xhc3NJbmZvIEV2YWxFeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJFdmFsRXhlY3V0YWJs
ZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
RXZhbEV4ZWN1dGFibGUpIH07CiAKLUV2YWxFeGVjdXRhYmxlOjpFdmFsRXhlY3V0YWJsZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wg
aW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBi
b29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9u
LCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcikKK0V2YWxFeGVjdXRhYmxlOjpFdmFsRXhl
Y3V0YWJsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENv
bnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRp
bmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlLCBOZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpCiAgICAgOiBCYXNlKGdsb2JhbE9i
amVjdC0+dm0oKS5ldmFsRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgZ2xvYmFsT2JqZWN0LT52
bSgpLCBzb3VyY2UsIGluU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93
RnVuY3Rpb25Db250ZXh0LCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250ZXh0VHlw
ZSwgTm9JbnRyaW5zaWMpCiAgICAgLCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcikpCisgICAgLCBtX3By
aXZhdGVCcmFuZFJlcXVpcmVtZW50KHN0YXRpY19jYXN0PHVuc2lnbmVkPihwcml2YXRlQnJhbmRS
ZXF1aXJlbWVudCkpCiB7CiAgICAgQVNTRVJUKHNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2VUeXBl
KCkgPT0gU291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFtKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oCmluZGV4IDY3ZTY5Yzg2Mjli
YS4uNTI2MDI1MWFjZWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FdmFsRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2
YWxFeGVjdXRhYmxlLmgKQEAgLTYyLDEzICs2MiwxNCBAQCBwdWJsaWM6CiAKICAgICBERUNMQVJF
X0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0
dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JL
aW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIFN1cGVyQmluZGluZzo6Tm90
TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUo
KSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgp
LCBmYWxzZSwgZXZhbENvbnRleHRUeXBlKCkpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0
YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1c2VzRXZhbCgpLCBmYWxz
ZSwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgU3VwZXJCaW5kaW5nOjpOb3ROZWVk
ZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBu
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCksIGZh
bHNlLCBldmFsQ29udGV4dFR5cGUoKSk7IH0KIAogICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlcygp
IHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJpYWJsZXMoKTsgfQogICAg
IHVuc2lnbmVkIG51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKCkgeyByZXR1cm4gbV91bmxp
bmtlZEV2YWxDb2RlQmxvY2stPm51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKCk7IH0KICAg
ICB1bnNpZ25lZCBudW1Ub3BMZXZlbEZ1bmN0aW9uRGVjbHMoKSB7IHJldHVybiBtX3VubGlua2Vk
RXZhbENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KICAgICBib29sIGFsbG93
RGlyZWN0RXZhbENhY2hlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2st
PmFsbG93RGlyZWN0RXZhbENhY2hlKCk7IH0KICAgICBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
ciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyPihtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
KTsgfQorICAgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ+KG1f
cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOyB9CiAgICAgVGVtcGxhdGVPYmplY3RNYXAmIGVuc3Vy
ZVRlbXBsYXRlT2JqZWN0TWFwKFZNJik7CiAKIHByb3RlY3RlZDoKQEAgLTc2LDExICs3NywxMiBA
QCBwcm90ZWN0ZWQ6CiAgICAgZnJpZW5kIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CiAKICAgICB1
c2luZyBCYXNlOjpmaW5pc2hDcmVhdGlvbjsKLSAgICBFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9i
amVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENv
bnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRp
bmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
KTsKKyAgICBFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUm
LCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dG
dW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4
dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVu
dCk7CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9y
Jik7CiAKICAgICB1bnNpZ25lZCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIDogMTsKKyAg
ICB1bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsKIAogICAgIFdyaXRlQmFy
cmllcjxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPiBtX2V2YWxDb2RlQmxvY2s7CiAgICAgV3Jp
dGVCYXJyaWVyPFVubGlua2VkRXZhbENvZGVCbG9jaz4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2s7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxw
ZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMu
Y3BwCmluZGV4IDQxNGU3YmRmNzdhYi4uN2EyOTEwZTg4N2YyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcApAQCAtMzI2LDcgKzMy
Niw3IEBAIEpTT2JqZWN0KiBjcmVhdGVURFpFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQogCiBKU09iamVjdCogY3JlYXRlSW52YWxpZFByaXZhdGVOYW1lRXJyb3IoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gY3JlYXRlVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgbWFrZVN0cmluZygiQ2Fubm90IGFjY2VzcyBpbnZhbGlkIHByaXZhdGUgZmllbGQi
KSwgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBUeXBlTm90aGluZyk7CisgICAgcmV0dXJuIGNyZWF0
ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoIkludmFsaWQgcHJpdmF0ZSBtZW1i
ZXIgYWNjZXNzIiksIGRlZmF1bHRTb3VyY2VBcHBlbmRlciwgVHlwZU5vdGhpbmcpOwogfQogCiBK
U09iamVjdCogY3JlYXRlUmVkZWZpbmVkUHJpdmF0ZU5hbWVFcnJvcihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcAppbmRleCA5OGQ3ZTJiODNhMjcuLjc0OTgyMDUw
MThjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RF
dmFsRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5k
aXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgSW5kaXJlY3RFdmFsRXhl
Y3V0YWJsZSogSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmoKIGNvbnN0ZXhwciBib29sIGluU3RyaWN0Q29udGV4dCA9IGZhbHNlOwogY29uc3Rl
eHByIGJvb2wgaW5zaWRlT3JkaW5hcnlGdW5jdGlvbiA9IGZhbHNlOwogSW5kaXJlY3RFdmFsRXhl
Y3V0YWJsZTo6SW5kaXJlY3RFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVk
Q29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBl
IGV2YWxDb250ZXh0VHlwZSkKLSAgICA6IEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291
cmNlLCBpblN0cmljdENvbnRleHQsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9u
Q29udGV4dCwgaW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgZXZhbENvbnRleHRUeXBlLCBOZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplcjo6Tm8pCisgICAgOiBFdmFsRXhlY3V0YWJsZShnbG9iYWxPYmpl
Y3QsIHNvdXJjZSwgaW5TdHJpY3RDb250ZXh0LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dG
dW5jdGlvbkNvbnRleHQsIGluc2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250ZXh0VHlwZSwg
TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6
Tm9uZSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5k
ZXggOWI5MzhiM2U1ZTdhLi44Mjk2NWQxODczMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaApAQCAtMTg0LDYgKzE4NCw4IEBAIHB1YmxpYzoKICAgICBpbmxpbmUg
Ym9vbCBnZXRQcml2YXRlRmllbGQoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYpOwogICAgIGlubGluZSB2b2lkIHNldFByaXZhdGVGaWVsZChKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgaW5saW5l
IHZvaWQgZGVmaW5lUHJpdmF0ZUZpZWxkKEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBpbmxpbmUgYm9vbCBjaGVja1ByaXZhdGVC
cmFuZChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgYnJhbmQpOworICAgIGlubGluZSB2b2lkIHNl
dFByaXZhdGVCcmFuZChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgYnJhbmQpOwogCiAgICAgdW5z
aWduZWQgZ2V0QXJyYXlMZW5ndGgoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5kZXggMDA1ZWUxNDY2NDM1Li42OGQx
MTM5NjA1MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
SW5saW5lcy5oCkBAIC02NjksNCArNjY5LDQ1IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKU09iamVj
dDo6Z2V0Tm9uUmVpZmllZFN0YXRpY1Byb3BlcnR5TmFtZXMoVk0mIHZtLCBQcm9wZXJ0eU5hCiAg
ICAgfQogfQogCitpbmxpbmUgYm9vbCBKU09iamVjdDo6Y2hlY2tQcml2YXRlQnJhbmQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBicmFuZCkKK3sKKyAgICBBU1NFUlQoYnJh
bmQuaXNTeW1ib2woKSk7CisgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSh2bSk7CisgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzQnJh
bmRlZFN0cnVjdHVyZSgpIHx8ICFqc0Nhc3Q8QnJhbmRlZFN0cnVjdHVyZSo+KHN0cnVjdHVyZSkt
PmNoZWNrQnJhbmQoYXNTeW1ib2woYnJhbmQpKSkgeworICAgICAgICB0aHJvd0V4Y2VwdGlvbihn
bG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcihnbG9iYWxP
YmplY3QpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBmYWxzZSk7CisgICAg
fQorICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpKTsKKworICAgIHJldHVy
biB0cnVlOworfQorCitpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0UHJpdmF0ZUJyYW5kKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYnJhbmQpCit7CisgICAgQVNTRVJUKGJy
YW5kLmlzU3ltYm9sKCkpOworICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOworICAgIGlmIChzdHJ1Y3R1cmUtPmlzQnJh
bmRlZFN0cnVjdHVyZSgpICYmIGpzQ2FzdDxCcmFuZGVkU3RydWN0dXJlKj4oc3RydWN0dXJlKS0+
Y2hlY2tCcmFuZChhc1N5bWJvbChicmFuZCkpKSB7CisgICAgICAgIC8vIFdlIGFyZSB0cnlpbmcg
dG8gaW5zdGFsbCBhIGJyYW5kIGFscmVhZHkgaW5zdGFsbGVkCisgICAgICAgIC8vIEZJWE1FOiBQ
dXQgYSBiZXR0ZXIgZXJyb3IgbWVzc2FnZQorICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxP
YmplY3QsIHNjb3BlLCBjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcihnbG9iYWxPYmplY3Qp
KTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB2b2lkKCkpOworICAgIH0KKyAg
ICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CisKKyAgICBzY29wZS5yZWxl
YXNlKCk7CisKKyAgICBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSBk
ZWZlcnJlZFdhdGNocG9pbnRGaXJlKHZtLCBzdHJ1Y3R1cmUpOworCisgICAgU3RydWN0dXJlKiBu
ZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OnNldEJyYW5kVHJhbnNpdGlvbih2bSwgc3RydWN0dXJl
LCBhc1N5bWJvbChicmFuZCksICZkZWZlcnJlZFdhdGNocG9pbnRGaXJlKTsKKyAgICBBU1NFUlQo
bmV3U3RydWN0dXJlLT5pc0JyYW5kZWRTdHJ1Y3R1cmUoKSk7CisgICAgQVNTRVJUKG5ld1N0cnVj
dHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSB8fCAhdGhpcy0+c3RydWN0dXJlKHZtKS0+b3V0T2ZM
aW5lQ2FwYWNpdHkoKSk7CisgICAgdGhpcy0+c2V0U3RydWN0dXJlKHZtLCBuZXdTdHJ1Y3R1cmUp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTY29wZS5jcHAKaW5kZXggNGZiMjRhMjgyNzMzLi5mYzc3NDJlMjMwODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCkBAIC0zMjEsNyArMzIxLDcgQEAgUmVz
b2x2ZU9wIEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBzaXplX3QgZGVwdGhPZmYKICAgICByZXR1cm4gb3A7CiB9CiAKLXZvaWQgSlNTY29wZTo6
Y29sbGVjdENsb3N1cmVWYXJpYWJsZXNVbmRlclREWihKU1Njb3BlKiBzY29wZSwgVERaRW52aXJv
bm1lbnQmIHJlc3VsdCwgVmFyaWFibGVFbnZpcm9ubWVudCYgcHJpdmF0ZU5hbWVzKQordm9pZCBK
U1Njb3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKEpTU2NvcGUqIHNjb3BlLCBU
RFpFbnZpcm9ubWVudCYgcmVzdWx0LCBQcml2YXRlTmFtZUVudmlyb25tZW50JiBwcml2YXRlTmFt
ZUVudmlyb25tZW50KQogewogICAgIGZvciAoOyBzY29wZTsgc2NvcGUgPSBzY29wZS0+bmV4dCgp
KSB7CiAgICAgICAgIGlmICghc2NvcGUtPmlzTGV4aWNhbFNjb3BlKCkgJiYgIXNjb3BlLT5pc0Nh
dGNoU2NvcGUoKSkKQEAgLTM0MCw4ICszNDAsOSBAQCB2b2lkIEpTU2NvcGU6OmNvbGxlY3RDbG9z
dXJlVmFyaWFibGVzVW5kZXJURFooSlNTY29wZSogc2NvcGUsIFREWkVudmlyb25tZW50JiByZQog
ICAgICAgICAgICAgcmVzdWx0LmFkZChpdGVyLT5rZXkpOwogCiAgICAgICAgIGlmIChzeW1ib2xU
YWJsZS0+aGFzUHJpdmF0ZU5hbWVzKCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byBuYW1lIDog
c3ltYm9sVGFibGUtPnByaXZhdGVOYW1lcygpKQotICAgICAgICAgICAgICAgIHByaXZhdGVOYW1l
cy51c2VQcml2YXRlTmFtZShuYW1lKTsgICAgCisgICAgICAgICAgICBhdXRvIHByaXZhdGVOYW1l
cyA9IHN5bWJvbFRhYmxlLT5wcml2YXRlTmFtZXMoKTsKKyAgICAgICAgICAgIGZvciAoYXV0byBl
bmQgPSBwcml2YXRlTmFtZXMuZW5kKCksIGl0ZXIgPSBwcml2YXRlTmFtZXMuYmVnaW4oKTsgaXRl
ciAhPSBlbmQ7ICsraXRlcikKKyAgICAgICAgICAgICAgICBwcml2YXRlTmFtZUVudmlyb25tZW50
LmFkZChpdGVyLT5rZXksIGl0ZXItPnZhbHVlKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaAppbmRleCA3YTNjMjQxNTExYjguLmU0Y2Qw
YmIzMDk3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29w
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaApAQCAtMjcs
MTIgKzI3LDEyIEBACiAKICNpbmNsdWRlICJHZXRQdXRJbmZvLmgiCiAjaW5jbHVkZSAiSlNPYmpl
Y3QuaCIKKyNpbmNsdWRlICJWYXJpYWJsZUVudmlyb25tZW50LmgiCiAKIG5hbWVzcGFjZSBKU0Mg
ewogCiBjbGFzcyBTY29wZUNoYWluSXRlcmF0b3I7CiBjbGFzcyBTeW1ib2xUYWJsZTsKLWNsYXNz
IFZhcmlhYmxlRW52aXJvbm1lbnQ7CiBjbGFzcyBXYXRjaHBvaW50U2V0OwogCiB1c2luZyBURFpF
bnZpcm9ubWVudCA9IEhhc2hTZXQ8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgSWRlbnRpZmll
clJlcEhhc2g+OwpAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaGFz
Q29uc3RhbnRTY29wZShSZXNvbHZlVHlwZSk7CiAgICAgc3RhdGljIEpTU2NvcGUqIGNvbnN0YW50
U2NvcGVGb3JDb2RlQmxvY2soUmVzb2x2ZVR5cGUsIENvZGVCbG9jayopOwogCi0gICAgc3RhdGlj
IHZvaWQgY29sbGVjdENsb3N1cmVWYXJpYWJsZXNVbmRlclREWihKU1Njb3BlKiwgVERaRW52aXJv
bm1lbnQmIHJlc3VsdCwgVmFyaWFibGVFbnZpcm9ubWVudCYgcHJpdmF0ZU5hbWVzKTsKKyAgICBz
dGF0aWMgdm9pZCBjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKEpTU2NvcGUqLCBURFpF
bnZpcm9ubWVudCYgcmVzdWx0LCBQcml2YXRlTmFtZUVudmlyb25tZW50Jik7CiAKICAgICBzdGF0
aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZS5oCmluZGV4IDA5OWQ4OTlhZDVlNi4uYjg1OTE0ZmY4ZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgKQEAg
LTYzLDcgKzYzLDcgQEAgcHVibGljOgogCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0
YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1
c2VzRXZhbCgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJT
Y3JpcHRNb2RlOjpNb2R1bGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1v
ZGU6Ok1vZHVsZUV2YWx1YXRlTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIE5lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyOjpObywgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgRXZh
bENvbnRleHRUeXBlOjpOb25lKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZv
KCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8odXNlc0V2YWwoKSwgZmFsc2UsIFByaXZh
dGVCcmFuZFJlcXVpcmVtZW50OjpOb25lLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBK
U1BhcnNlclNjcmlwdE1vZGU6Ok1vZHVsZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJj
ZVBhcnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVNb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUoKSwgTmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCksIGZh
bHNlLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUpOyB9CiAKICAgICBVbmxpbmtlZE1vZHVsZVByb2dy
YW1Db2RlQmxvY2sqIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygpIHsgcmV0dXJuIG1f
dW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKaW5kZXggMGNhZjM0MDFhZDMyLi5hNWM3ZWFjYTFi
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCkBAIC01Mzgs
NiArNTM4LDkgQEAgdm9pZCBPcHRpb25zOjpyZWNvbXB1dGVEZXBlbmRlbnRPcHRpb25zKCkKICAg
ICAgICAgT3B0aW9uczo6cmFuZG9tSW50ZWdyaXR5QXVkaXRSYXRlKCkgPSAwOwogICAgIGVsc2Ug
aWYgKE9wdGlvbnM6OnJhbmRvbUludGVncml0eUF1ZGl0UmF0ZSgpID4gMS4wKQogICAgICAgICBP
cHRpb25zOjpyYW5kb21JbnRlZ3JpdHlBdWRpdFJhdGUoKSA9IDEuMDsKKyAgICAKKyAgICBpZiAo
T3B0aW9uczo6dXNlUHJpdmF0ZU1ldGhvZHMoKSkKKyAgICAgICAgT3B0aW9uczo6dXNlUHJpdmF0
ZUNsYXNzRmllbGRzKCkgPSB0cnVlOwogCiAgICAgaWYgKCFPcHRpb25zOjphbGxvd1Vuc3VwcG9y
dGVkVGllcnMoKSkgewogI2RlZmluZSBESVNBQkxFX1RJRVJTKG9wdGlvbiwgZmxhZ3MsIC4uLikg
ZG8geyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25z
TGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRl
eCA1ODU2MzA2ZWIyODEuLjAxZTljNjA3ZmQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC01MTgsNiArNTE4LDcgQEAgSlNfRVhQT1JUX1BSSVZB
VEUgYm9vbCBjYW5Vc2VKSVRDYWdlKCk7CiAgICAgdihCb29sLCBleHBvc2VQcm9maWxlcnNPbkds
b2JhbE9iamVjdCwgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgZXhwb3NlIGZ1bmN0
aW9ucyB0byBlbmFibGUvZGlzYWJsZSBib3RoIHRoZSBzYW1wbGluZyBwcm9maWxlciBhbmQgdGhl
IHN1cGVyIHNhbXBsZXIiKSBcCiAgICAgdihCb29sLCBhbGxvd1Vuc3VwcG9ydGVkVGllcnMsIGZh
bHNlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIG5vdCBkaXNhYmxlIERGRyBvciBGVEwgd2hl
biBhbiBleHBlcmltZW50YWwgZmVhdHVyZSBpcyBlbmFibGVkLiIpIFwKICAgICB2KEJvb2wsIHVz
ZVByaXZhdGVDbGFzc0ZpZWxkcywgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgdGhlIHBhcnNlciB3
aWxsIHVuZGVyc3RhbmQgcHJpdmF0ZSBkYXRhIGZpZWxkcyBpbnNpZGUgY2xhc3Nlcy4iKSBcCisg
ICAgdihCb29sLCB1c2VQcml2YXRlTWV0aG9kcywgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIHRo
ZSBwYXJzZXIgd2lsbCB1bmRlcnN0YW5kIHByaXZhdGUgbWV0aG9kcyBpbnNpZGUgY2xhc3Nlcy4i
KSBcCiAgICAgdihCb29sLCByZXR1cm5FYXJseUZyb21JbmZpbml0ZUxvb3BzRm9yRnV6emluZywg
ZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoU2l6ZSwgZWFybHlSZXR1cm5Gcm9tSW5m
aW5pdGVMb29wc0xpbWl0LCAxMzAwMDAwMDAwLCBOb3JtYWwsICJXaGVuIHJldHVybkVhcmx5RnJv
bUluZmluaXRlTG9vcHNGb3JGdXp6aW5nIGlzIHRydWUsIHRoaXMgZGV0ZXJtaW5lcyB0aGUgbnVt
YmVyIG9mIGV4ZWN1dGlvbnMgYSBsb29wIGNhbiBydW4gZm9yIGJlZm9yZSBqdXN0IHJldHVybmlu
Zy4gVGhpcyBpcyBoZWxwZnVsIGZvciB0aGUgZnV6emVyIHNvIGl0IGRvZXNuJ3QgZ2V0IHN0dWNr
IGluIGluZmluaXRlIGxvb3BzLiIpIFwKICAgICB2KEJvb2wsIHVzZUxJQ01GdXp6aW5nLCBmYWxz
ZSwgTm9ybWFsLCBudWxscHRyKSBcCkBAIC01NzQsNyArNTc1LDggQEAgZW51bSBFeHBlcmltZW50
YWxPcHRpb25GbGFncyB7CiB9OwogCiAjZGVmaW5lIEZPUl9FQUNIX0pTQ19FWFBFUklNRU5UQUxf
T1BUSU9OKHYpIFwKLSAgICB2KHVzZVByaXZhdGVDbGFzc0ZpZWxkcywgKFN1cHBvcnRzRlRMIHwg
U3VwcG9ydHNERkcpLCAiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
Mjc4MSIsICJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNzg0IikK
KyAgICB2KHVzZVByaXZhdGVDbGFzc0ZpZWxkcywgKFN1cHBvcnRzRlRMIHwgU3VwcG9ydHNERkcp
LCAiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjc4MSIsICJodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNzg0IikgXAorICAgIHYodXNl
UHJpdmF0ZU1ldGhvZHMsIChTdXBwb3J0c0ZUTCB8IFN1cHBvcnRzREZHKSwgImh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI3ODEiLCAiaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjc4NCIpCiAKIGNvbnN0ZXhwciBzaXplX3QgY291bnRO
dW1iZXJPZkpTQ09wdGlvbnMoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgKaW5kZXggYjg3MTVhYTcyYmJjLi45NDk3NjMxMjA1Y2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRh
YmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFi
bGUuaApAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgIERFQ0xBUkVfSU5G
TzsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4g
RXhlY3V0YWJsZUluZm8odXNlc0V2YWwoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgU3VwZXJCaW5kaW5nOjpOb3ROZWVk
ZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBO
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwg
ZmFsc2UsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVj
dXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGZh
bHNlLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZSwgZmFsc2UsIENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBTdXBlckJpbmRpbmc6Ok5vdE5l
ZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCks
IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObywgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgp
LCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsgfQogCiAgICAgVGVtcGxhdGVPYmplY3RN
YXAmIGVuc3VyZVRlbXBsYXRlT2JqZWN0TWFwKFZNJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IGQzOGMzOWU0NDdkNi4uNGUyOTRmYWJmNjU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTQy
NCw3ICs0MjQsNyBAQCBQcm9wZXJ0eVRhYmxlKiBTdHJ1Y3R1cmU6Om1hdGVyaWFsaXplUHJvcGVy
dHlUYWJsZShWTSYgdm0sIGJvb2wgc2V0UHJvcGVydHlUYWJsZQogCiAgICAgZm9yIChzaXplX3Qg
aSA9IHN0cnVjdHVyZXMuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgIHN0cnVjdHVyZSA9IHN0cnVj
dHVyZXNbaV07Ci0gICAgICAgIGlmICghc3RydWN0dXJlLT5tX3RyYW5zaXRpb25Qcm9wZXJ0eU5h
bWUpCisgICAgICAgIGlmICghc3RydWN0dXJlLT5tX3RyYW5zaXRpb25Qcm9wZXJ0eU5hbWUgfHwg
c3RydWN0dXJlLT50cmFuc2l0aW9uS2luZCgpID09IFRyYW5zaXRpb25LaW5kOjpTZXRCcmFuZCkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBzd2l0Y2ggKHN0cnVjdHVyZS0+dHJhbnNp
dGlvbktpbmQoKSkgewogICAgICAgICBjYXNlIFRyYW5zaXRpb25LaW5kOjpQcm9wZXJ0eUFkZGl0
aW9uOiB7CkBAIC0xNDk2LDQgKzE0OTYsMTAyIEBAIGF1dG8gU3RydWN0dXJlOjpmaW5kUHJvcGVy
dHlIYXNoRW50cnkoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QgLT4gT3B0aW9uCiAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIAorQnJhbmRlZFN0cnVjdHVyZTo6QnJhbmRlZFN0
cnVjdHVyZShWTSYgdm0sIFN0cnVjdHVyZSogcHJldmlvdXMsIFN5bWJvbCogYnJhbmRTeW1ib2ws
IERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiBkZWZlcnJlZCkKKyAg
ICA6IFN0cnVjdHVyZSh2bSwgcHJldmlvdXMsIGRlZmVycmVkKQorICAgICwgbV9icmFuZCh2bSwg
dGhpcywgYnJhbmRTeW1ib2wpCit7CisgICAgaWYgKHByZXZpb3VzLT5pc0JyYW5kZWRTdHJ1Y3R1
cmUoKSkKKyAgICAgICAgbV9wYXJlbnRCcmFuZC5zZXQodm0sIHRoaXMsIGpzQ2FzdDxCcmFuZGVk
U3RydWN0dXJlKj4ocHJldmlvdXMpKTsKKyAgICB0aGlzLT5zZXRJc0JyYW5kZWRTdHJ1Y3R1cmUo
dHJ1ZSk7Cit9CisKK0JyYW5kZWRTdHJ1Y3R1cmU6OkJyYW5kZWRTdHJ1Y3R1cmUoVk0mIHZtLCBC
cmFuZGVkU3RydWN0dXJlKiBwcmV2aW91cywgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0
Y2hwb2ludEZpcmUqIGRlZmVycmVkKQorICAgIDogU3RydWN0dXJlKHZtLCBwcmV2aW91cywgZGVm
ZXJyZWQpCisgICAgLCBtX2JyYW5kKHZtLCB0aGlzLCBwcmV2aW91cy0+YnJhbmQoKSkKKyAgICAs
IG1fcGFyZW50QnJhbmQodm0sIHRoaXMsIHByZXZpb3VzLT5wYXJlbnRCcmFuZCgpLCBXcml0ZUJh
cnJpZXI8QnJhbmRlZFN0cnVjdHVyZT46Ok1heUJlTnVsbCkKK3sKKyAgICB0aGlzLT5zZXRJc0Jy
YW5kZWRTdHJ1Y3R1cmUodHJ1ZSk7Cit9CisKK3ZvaWQgQnJhbmRlZFN0cnVjdHVyZTo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEJyYW5k
ZWRTdHJ1Y3R1cmUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8QnJhbmRlZFN0cnVjdHVyZSo+KGNlbGwp
OworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKwor
ICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgCisgICAg
dmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9icmFuZCk7CisgICAgdmlzaXRvci5hcHBlbmQo
dGhpc09iamVjdC0+bV9wYXJlbnRCcmFuZCk7Cit9CisKK1N0cnVjdHVyZSogQnJhbmRlZFN0cnVj
dHVyZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBwcmV2aW91cywgU3ltYm9sKiBicmFuZCwg
RGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqIGRlZmVycmVkKQorewor
ICAgIEFTU0VSVCh2bS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUpOworICAgIEJyYW5kZWRTdHJ1Y3R1cmUq
IG5ld1N0cnVjdHVyZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEJyYW5kZWRTdHJ1Y3R1
cmU+KHZtLmhlYXApKSBCcmFuZGVkU3RydWN0dXJlKHZtLCBwcmV2aW91cywgYnJhbmQsIGRlZmVy
cmVkKTsKKyAgICBuZXdTdHJ1Y3R1cmUtPmZpbmlzaENyZWF0aW9uKHZtLCBwcmV2aW91cyk7Cisg
ICAgcmV0dXJuIG5ld1N0cnVjdHVyZTsKK30KKworYm9vbCBCcmFuZGVkU3RydWN0dXJlOjpjaGVj
a0JyYW5kKFN5bWJvbCogYnJhbmQpCit7CisgICAgZm9yIChCcmFuZGVkU3RydWN0dXJlKiBjdXJy
ZW50U3RydWN0dXJlID0gdGhpczsgY3VycmVudFN0cnVjdHVyZTsgY3VycmVudFN0cnVjdHVyZSA9
IGN1cnJlbnRTdHJ1Y3R1cmUtPm1fcGFyZW50QnJhbmQuZ2V0KCkpIHsKKyAgICAgICAgaWYgKGJy
YW5kID09IGN1cnJlbnRTdHJ1Y3R1cmUtPm1fYnJhbmQuZ2V0KCkpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitTdHJ1Y3R1cmUqIFN0cnVj
dHVyZTo6c2V0QnJhbmRUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlSW1wbChTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgVW5pcXVlZFN0cmluZ0ltcGwqIGJyYW5kSUQpCit7CisgICAgQVNTRVJU
KHN0cnVjdHVyZS0+aXNPYmplY3QoKSk7CisKKyAgICBpZiAoc3RydWN0dXJlLT5oYXNCZWVuRGlj
dGlvbmFyeSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmIChTdHJ1Y3R1cmUq
IGV4aXN0aW5nVHJhbnNpdGlvbiA9IHN0cnVjdHVyZS0+bV90cmFuc2l0aW9uVGFibGUuZ2V0KGJy
YW5kSUQsIDAsIFRyYW5zaXRpb25LaW5kOjpTZXRCcmFuZCkpCisgICAgICAgIHJldHVybiBleGlz
dGluZ1RyYW5zaXRpb247CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworU3RydWN0dXJlKiBT
dHJ1Y3R1cmU6OnNldEJyYW5kVHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJl
bnRseShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVW5pcXVlZFN0cmluZ0ltcGwqIGJyYW5kSUQpCit7
CisgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihzdHJ1Y3R1cmUtPm1fbG9jayk7CisgICAg
cmV0dXJuIHNldEJyYW5kVHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUltcGwoc3RydWN0
dXJlLCBicmFuZElEKTsKK30KKworU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnNldEJyYW5kVHJhbnNp
dGlvbihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTeW1ib2wqIGJyYW5kLCBEZWZlcnJl
ZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogZGVmZXJyZWQpCit7CisgICAgaWYg
KCFzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7CisgICAgICAgIGlmIChTdHJ1Y3R1cmUqIGV4
aXN0aW5nVHJhbnNpdGlvbiA9IHN0cnVjdHVyZS0+bV90cmFuc2l0aW9uVGFibGUuZ2V0KCZicmFu
ZC0+dWlkKCksIDAsIFRyYW5zaXRpb25LaW5kOjpTZXRCcmFuZCkpIHsKKyAgICAgICAgICAgIEFT
U0VSVChleGlzdGluZ1RyYW5zaXRpb24tPnRyYW5zaXRpb25LaW5kKCkgPT0gVHJhbnNpdGlvbktp
bmQ6OlNldEJyYW5kKTsKKyAgICAgICAgICAgIHJldHVybiBleGlzdGluZ1RyYW5zaXRpb247Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CisKKyAgICBT
dHJ1Y3R1cmUqIHRyYW5zaXRpb24gPSBCcmFuZGVkU3RydWN0dXJlOjpjcmVhdGUodm0sIHN0cnVj
dHVyZSwgYnJhbmQsIGRlZmVycmVkKTsKKyAgICB0cmFuc2l0aW9uLT5zZXRUcmFuc2l0aW9uS2lu
ZChUcmFuc2l0aW9uS2luZDo6U2V0QnJhbmQpOworCisgICAgdHJhbnNpdGlvbi0+bV9jYWNoZWRQ
cm90b3R5cGVDaGFpbi5zZXRNYXlCZU51bGwodm0sIHRyYW5zaXRpb24sIHN0cnVjdHVyZS0+bV9j
YWNoZWRQcm90b3R5cGVDaGFpbi5nZXQoKSk7CisgICAgdHJhbnNpdGlvbi0+bV9ibG9iLnNldElu
ZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3Rvcnkoc3RydWN0dXJlLT5pbmRleGluZ01vZGVJbmNsdWRp
bmdIaXN0b3J5KCkpOworICAgIHRyYW5zaXRpb24tPm1fdHJhbnNpdGlvblByb3BlcnR5TmFtZSA9
ICZicmFuZC0+dWlkKCk7CisgICAgdHJhbnNpdGlvbi0+c2V0VHJhbnNpdGlvblByb3BlcnR5QXR0
cmlidXRlcygwKTsKKyAgICB0cmFuc2l0aW9uLT5zZXRQcm9wZXJ0eVRhYmxlKHZtLCBzdHJ1Y3R1
cmUtPnRha2VQcm9wZXJ0eVRhYmxlT3JDbG9uZUlmUGlubmVkKHZtKSk7CisgICAgdHJhbnNpdGlv
bi0+c2V0TWF4T2Zmc2V0KHZtLCBzdHJ1Y3R1cmUtPm1heE9mZnNldCgpKTsKKyAgICBjaGVja09m
ZnNldCh0cmFuc2l0aW9uLT5tYXhPZmZzZXQoKSwgdHJhbnNpdGlvbi0+aW5saW5lQ2FwYWNpdHko
KSk7CisKKyAgICBpZiAoc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkgeworICAgICAgICBQcm9w
ZXJ0eVRhYmxlKiB0YWJsZSA9IHRyYW5zaXRpb24tPmVuc3VyZVByb3BlcnR5VGFibGUodm0pOwor
ICAgICAgICB0cmFuc2l0aW9uLT5waW4oaG9sZExvY2sodHJhbnNpdGlvbi0+bV9sb2NrKSwgdm0s
IHRhYmxlKTsKKyAgICB9IGVsc2UgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHN0
cnVjdHVyZS0+bV9sb2NrKTsKKyAgICAgICAgc3RydWN0dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5h
ZGQodm0sIHRyYW5zaXRpb24pOworICAgIH0KKworICAgIHRyYW5zaXRpb24tPmNoZWNrT2Zmc2V0
Q29uc2lzdGVuY3koKTsKKyAgICByZXR1cm4gdHJhbnNpdGlvbjsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCmluZGV4IDNl
NDc1MTRjOWNkNi4uOGFhYzM1MmY5NDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmUuaApAQCAtMTIzLDcgKzEyMyw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgU3Ry
dWN0dXJlKiBtX3N0cnVjdHVyZTsKIH07CiAKLWNsYXNzIFN0cnVjdHVyZSBmaW5hbCA6IHB1Ymxp
YyBKU0NlbGwgeworY2xhc3MgU3RydWN0dXJlIDogcHVibGljIEpTQ2VsbCB7CiAgICAgc3RhdGlj
IGNvbnN0ZXhwciB1aW50MTZfdCBzaG9ydEludmFsaWRPZmZzZXQgPSBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVpbnQxNl90Pjo6bWF4KCkgLSAxOwogICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDE2X3Qg
dXNlUmFyZURhdGFGbGFnID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MTZfdD46Om1heCgpOwog
cHVibGljOgpAQCAtMTQ2LDEzICsxNDYsNyBAQCBwdWJsaWM6CiAKICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgYm9vbCBpc1ZhbGlkUHJvdG90eXBlKEpTVmFsdWUpOwogCi1wcml2YXRlOgot
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtKQotICAgIHsKLSAgICAgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0pOwotICAgICAgICBBU1NFUlQobV9wcm90b3R5cGUuZ2V0KCkuaXNFbXB0
eSgpIHx8IGlzVmFsaWRQcm90b3R5cGUobV9wcm90b3R5cGUuZ2V0KCkpKTsKLSAgICB9Ci0KK3By
b3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSwgY29uc3QgU3RydWN0dXJl
KiBwcmV2aW91cykKICAgICB7CiAgICAgICAgIHRoaXMtPmZpbmlzaENyZWF0aW9uKHZtKTsKQEAg
LTE2NSw2ICsxNTksMTMgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KIAorcHJpdmF0ZToK
KyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSkKKyAgICB7CisgICAgICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgQVNTRVJUKG1fcHJvdG90eXBlLmdldCgpLmlzRW1w
dHkoKSB8fCBpc1ZhbGlkUHJvdG90eXBlKG1fcHJvdG90eXBlLmdldCgpKSk7CisgICAgfQorCiAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0sIENyZWF0aW5nRWFybHlDZWxsVGFnKQogICAg
IHsKICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIHRoaXMsIENyZWF0aW5nRWFybHlD
ZWxsKTsKQEAgLTIwNiw2ICsyMDcsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cnVjdHVyZSog
cHJldmVudEV4dGVuc2lvbnNUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGlj
IFN0cnVjdHVyZSogbm9uUHJvcGVydHlUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKiwgVHJhbnNp
dGlvbktpbmQpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIG5vblBy
b3BlcnR5VHJhbnNpdGlvblNsb3coVk0mLCBTdHJ1Y3R1cmUqLCBUcmFuc2l0aW9uS2luZCk7Cisg
ICAgc3RhdGljIFN0cnVjdHVyZSogc2V0QnJhbmRUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0
dXJlQ29uY3VycmVudGx5KFN0cnVjdHVyZSosIFVuaXF1ZWRTdHJpbmdJbXBsKik7CisgICAgc3Rh
dGljIFN0cnVjdHVyZSogc2V0QnJhbmRUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKiwgU3ltYm9s
KiBicmFuZCwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqID0gbnVs
bHB0cik7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzU2VhbGVkKFZNJik7CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0Zyb3plbihWTSYpOwpAQCAtNzE1LDIxICs3MTgsMjUg
QEAgcHVibGljOgogICAgIERFRklORV9CSVRGSUVMRChib29sLCBoYXNCZWVuRGljdGlvbmFyeSwg
SGFzQmVlbkRpY3Rpb25hcnksIDEsIDI3KTsKICAgICBERUZJTkVfQklURklFTEQoYm9vbCwgcHJv
dGVjdFByb3BlcnR5VGFibGVXaGlsZVRyYW5zaXRpb25pbmcsIFByb3RlY3RQcm9wZXJ0eVRhYmxl
V2hpbGVUcmFuc2l0aW9uaW5nLCAxLCAyOCk7CiAgICAgREVGSU5FX0JJVEZJRUxEKGJvb2wsIGhh
c1VuZGVyc2NvcmVQcm90b1Byb3BlcnR5RXhjbHVkaW5nT3JpZ2luYWxQcm90bywgSGFzVW5kZXJz
Y29yZVByb3RvUHJvcGVydHlFeGNsdWRpbmdPcmlnaW5hbFByb3RvLCAxLCAyOSk7CisgICAgREVG
SU5FX0JJVEZJRUxEKGJvb2wsIGlzQnJhbmRlZFN0cnVjdHVyZSwgSXNCcmFuZGVkU3RydWN0dXJl
LCAxLCAzMCk7CiAKICAgICBzdGF0aWNfYXNzZXJ0KHNfYml0V2lkdGhPZlRyYW5zaXRpb25Qcm9w
ZXJ0eUF0dHJpYnV0ZXMgPD0gc2l6ZW9mKFRyYW5zaXRpb25Qcm9wZXJ0eUF0dHJpYnV0ZXMpICog
OCk7CiAgICAgc3RhdGljX2Fzc2VydChzX2JpdFdpZHRoT2ZUcmFuc2l0aW9uS2luZCA8PSBzaXpl
b2YoVHJhbnNpdGlvbktpbmQpICogOCk7CiAKK3Byb3RlY3RlZDoKKyAgICBTdHJ1Y3R1cmUoVk0m
LCBTdHJ1Y3R1cmUqLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSop
OworCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNvbnN0IENsYXNzSW5mbyosIEluZGV4
aW5nVHlwZSwgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkpOwogICAgIFN0cnVjdHVyZShWTSYpOwot
ICAgIFN0cnVjdHVyZShWTSYsIFN0cnVjdHVyZSosIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlv
bldhdGNocG9pbnRGaXJlKik7CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGUoVk0mLCBT
dHJ1Y3R1cmUqLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogPSBu
dWxscHRyKTsKICAgICAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRp
b25Ub0V4aXN0aW5nU3RydWN0dXJlSW1wbChTdHJ1Y3R1cmUqLCBVbmlxdWVkU3RyaW5nSW1wbCog
dWlkLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYpOwogICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUlt
cGwoU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0
eU9mZnNldCYpOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHNldEJyYW5kVHJhbnNpdGlvbkZyb21F
eGlzdGluZ1N0cnVjdHVyZUltcGwoU3RydWN0dXJlKiwgVW5pcXVlZFN0cmluZ0ltcGwqKTsKIAog
ICAgIC8vIFRoaXMgd2lsbCByZXR1cm4gdGhlIHN0cnVjdHVyZSB0aGF0IGhhcyBhIHVzYWJsZSBw
cm9wZXJ0eSB0YWJsZSwgdGhhdCBwcm9wZXJ0eSB0YWJsZSwKICAgICAvLyBhbmQgdGhlIGxpc3Qg
b2Ygc3RydWN0dXJlcyB0aGF0IHdlIHZpc2l0ZWQgYmVmb3JlIHdlIGdvdCB0byBpdC4gSWYgaXQg
cmV0dXJucyBhCkBAIC04NzQsNCArODgxLDQxIEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNz
IEpTRG9sbGFyVk1IZWxwZXI7CiB9OwogCitjbGFzcyBCcmFuZGVkU3RydWN0dXJlIGZpbmFsIDog
cHVibGljIFN0cnVjdHVyZSB7CisgICAgdHlwZWRlZiBTdHJ1Y3R1cmUgQmFzZTsKKworcHVibGlj
OgorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgorICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAg
cmV0dXJuICZ2bS5icmFuZGVkU3RydWN0dXJlU3BhY2U7CisgICAgfQorCisgICAgU3ltYm9sKiBi
cmFuZCgpCisgICAgeworICAgICAgICByZXR1cm4gbV9icmFuZC5nZXQoKTsKKyAgICB9CisKKyAg
ICBCcmFuZGVkU3RydWN0dXJlKiBwYXJlbnRCcmFuZCgpCisgICAgeworICAgICAgICByZXR1cm4g
bV9wYXJlbnRCcmFuZC5nZXQoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxk
cmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKKyAgICBib29sIGNoZWNrQnJhbmQoU3ltYm9s
KiBicmFuZCk7CisKK3ByaXZhdGU6IAorICAgIEJyYW5kZWRTdHJ1Y3R1cmUoVk0mLCBTdHJ1Y3R1
cmUqLCBTeW1ib2wqIGJyYW5kLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50
RmlyZSopOworICAgIEJyYW5kZWRTdHJ1Y3R1cmUoVk0mLCBCcmFuZGVkU3RydWN0dXJlKiwgRGVm
ZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqKTsKKworICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIFN5bWJvbCogYnJhbmQsIERlZmVycmVk
U3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiA9IG51bGxwdHIpOworCisgICAgV3Jp
dGVCYXJyaWVyPFN5bWJvbD4gbV9icmFuZDsKKyAgICBXcml0ZUJhcnJpZXI8QnJhbmRlZFN0cnVj
dHVyZT4gbV9wYXJlbnRCcmFuZDsKKworICAgIGZyaWVuZCBjbGFzcyBTdHJ1Y3R1cmU7Cit9Owor
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUlubGluZXMuaAppbmRleCA3MzllMWVmM2I5YzcuLmQ0ZTVhNTA3MmYzMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaApA
QCAtNjEsNyArNjEsMTIgQEAgaW5saW5lIFN0cnVjdHVyZSogU3RydWN0dXJlOjpjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtKQogaW5saW5lIFN0cnVjdHVyZSogU3RydWN0dXJlOjpjcmVhdGUoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHByZXZpb3VzLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBv
aW50RmlyZSogZGVmZXJyZWQpCiB7CiAgICAgQVNTRVJUKHZtLnN0cnVjdHVyZVN0cnVjdHVyZSk7
Ci0gICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxTdHJ1Y3R1cmU+KHZtLmhlYXApKSBTdHJ1Y3R1cmUodm0sIHByZXZpb3VzLCBkZWZlcnJlZCk7
CisgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmU7CisgICAgaWYgKHByZXZpb3VzLT5pc0JyYW5k
ZWRTdHJ1Y3R1cmUoKSkKKyAgICAgICAgbmV3U3RydWN0dXJlID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8QnJhbmRlZFN0cnVjdHVyZT4odm0uaGVhcCkpIEJyYW5kZWRTdHJ1Y3R1cmUodm0s
IGpzQ2FzdDxCcmFuZGVkU3RydWN0dXJlKj4ocHJldmlvdXMpLCBkZWZlcnJlZCk7CisgICAgZWxz
ZQorICAgICAgICBuZXdTdHJ1Y3R1cmUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTdHJ1
Y3R1cmU+KHZtLmhlYXApKSBTdHJ1Y3R1cmUodm0sIHByZXZpb3VzLCBkZWZlcnJlZCk7CisKICAg
ICBuZXdTdHJ1Y3R1cmUtPmZpbmlzaENyZWF0aW9uKHZtLCBwcmV2aW91cyk7CiAgICAgcmV0dXJu
IG5ld1N0cnVjdHVyZTsKIH0KQEAgLTE4MSw2ICsxODYsNyBAQCB2b2lkIFN0cnVjdHVyZTo6Zm9y
RWFjaFByb3BlcnR5Q29uY3VycmVudGx5KGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgICAg
IGNhc2UgVHJhbnNpdGlvbktpbmQ6OlByb3BlcnR5QXR0cmlidXRlQ2hhbmdlOgogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHJhbnNpdGlvbktpbmQ6OlByb3BlcnR5RGVsZXRpb246
CisgICAgICAgIGNhc2UgVHJhbnNpdGlvbktpbmQ6OlNldEJyYW5kOgogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRy
YW5zaXRpb25UYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
VHJhbnNpdGlvblRhYmxlLmgKaW5kZXggNjNjZjhlMDIxMjIxLi44MDYyYzJjNzg3YzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRyYW5zaXRpb25U
YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRyYW5z
aXRpb25UYWJsZS5oCkBAIC01NSw3ICs1NSwxMCBAQCBlbnVtIGNsYXNzIFRyYW5zaXRpb25LaW5k
IDogdWludDhfdCB7CiAgICAgQWRkSW5kZXhlZEFjY2Vzc29ycywKICAgICBQcmV2ZW50RXh0ZW5z
aW9ucywKICAgICBTZWFsLAotICAgIEZyZWV6ZQorICAgIEZyZWV6ZSwKKworICAgIC8vIFN1cHBv
cnQgZm9yIHRyYW5zaXRpb25zIHJlbGF0ZWQgd2l0aCBwcml2YXRlIGJyYW5kCisgICAgU2V0QnJh
bmQKIH07CiAKIHN0YXRpYyBjb25zdGV4cHIgYXV0byBGaXJzdE5vblByb3BlcnR5VHJhbnNpdGlv
bktpbmQgPSBUcmFuc2l0aW9uS2luZDo6QWxsb2NhdGVVbmRlY2lkZWQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKaW5kZXggMTY0Y2E2ZDQzMTBlLi5m
YjQ2MDAxYmFlZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5
bWJvbFRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xU
YWJsZS5jcHAKQEAgLTE4NCw3ICsxODQsNyBAQCBTeW1ib2xUYWJsZSogU3ltYm9sVGFibGU6OmNs
b25lU2NvcGVQYXJ0KFZNJiB2bSkKIAogICAgICAgICB7CiAgICAgICAgICAgICBmb3IgKGF1dG8g
bmFtZSA6IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzKQotICAgICAgICAgICAgICAgIHJlc3Vs
dC0+bV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKG5hbWUpOworICAgICAgICAgICAgICAg
IHJlc3VsdC0+bV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKG5hbWUua2V5LCBuYW1lLnZh
bHVlKTsKICAgICAgICAgfQogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TeW1ib2xUYWJsZS5oCmluZGV4IDU5YTcyMzA1ZDNhNy4uYTUzODFjY2JlZTFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKQEAgLTM1LDYgKzM1
LDcgQEAKICNpbmNsdWRlICJTY29wZWRBcmd1bWVudHNUYWJsZS5oIgogI2luY2x1ZGUgIlR5cGVM
b2NhdGlvbi5oIgogI2luY2x1ZGUgIlZhck9mZnNldC5oIgorI2luY2x1ZGUgIlZhcmlhYmxlRW52
aXJvbm1lbnQuaCIKICNpbmNsdWRlICJXYXRjaHBvaW50LmgiCiAjaW5jbHVkZSA8bWVtb3J5Pgog
I2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CkBAIC00NTAsOCArNDUxLDcgQEAgcHVibGljOgog
ICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBSZWZQdHI8VHlw
ZVNldD4sIElkZW50aWZpZXJSZXBIYXNoPiBVbmlxdWVUeXBlU2V0TWFwOwogICAgIHR5cGVkZWYg
SGFzaE1hcDxWYXJPZmZzZXQsIFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+IE9mZnNldFRvVmFy
aWFibGVNYXA7CiAgICAgdHlwZWRlZiBWZWN0b3I8U3ltYm9sVGFibGVFbnRyeSo+IExvY2FsVG9F
bnRyeVZlYzsKLSAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwg
SWRlbnRpZmllclJlcEhhc2g+IFByaXZhdGVOYW1lU2V0OwotICAgIHR5cGVkZWYgV1RGOjpJdGVy
YXRvclJhbmdlPHR5cGVuYW1lIFByaXZhdGVOYW1lU2V0OjppdGVyYXRvcj4gUHJpdmF0ZU5hbWVJ
dGVyYXRvclJhbmdlOworICAgIHR5cGVkZWYgV1RGOjpJdGVyYXRvclJhbmdlPHR5cGVuYW1lIFBy
aXZhdGVOYW1lRW52aXJvbm1lbnQ6Oml0ZXJhdG9yPiBQcml2YXRlTmFtZUl0ZXJhdG9yUmFuZ2U7
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCkBAIC02MDUsMTQgKzYwNSwx
NCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtYWtlSXRlcmF0b3JSYW5nZShtX3JhcmVEYXRh
LT5tX3ByaXZhdGVOYW1lcy5iZWdpbigpLCBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5lbmQo
KSk7CiAgICAgfQogCi0gICAgdm9pZCBhZGRQcml2YXRlTmFtZShVbmlxdWVkU3RyaW5nSW1wbCog
a2V5KQorICAgIHZvaWQgYWRkUHJpdmF0ZU5hbWUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJ
bXBsPiYga2V5LCBQcml2YXRlTmFtZUVudHJ5IHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJU
KGtleSAmJiAha2V5LT5pc1N5bWJvbCgpKTsKICAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQogICAg
ICAgICAgICAgbV9yYXJlRGF0YSA9IFdURjo6bWFrZVVuaXF1ZTxTeW1ib2xUYWJsZVJhcmVEYXRh
PigpOwogCi0gICAgICAgIEFTU0VSVCghbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuY29udGFp
bnMoa2V5KSk7Ci0gICAgICAgIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChrZXkpOwor
ICAgICAgICBBU1NFUlQobV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZmluZChrZXkpID09IG1f
cmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmVuZCgpKTsKKyAgICAgICAgbV9yYXJlRGF0YS0+bV9w
cml2YXRlTmFtZXMuYWRkKGtleSwgdmFsdWUpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEVudHJ5PgpAQCAtNzU2LDcgKzc1Niw3IEBAIHB1YmxpYzoKICAgICAgICAgT2Zmc2V0VG9W
YXJpYWJsZU1hcCBtX29mZnNldFRvVmFyaWFibGVNYXA7CiAgICAgICAgIFVuaXF1ZVR5cGVTZXRN
YXAgbV91bmlxdWVUeXBlU2V0TWFwOwogICAgICAgICBXcml0ZUJhcnJpZXI8Q29kZUJsb2NrPiBt
X2NvZGVCbG9jazsKLSAgICAgICAgUHJpdmF0ZU5hbWVTZXQgbV9wcml2YXRlTmFtZXM7CisgICAg
ICAgIFByaXZhdGVOYW1lRW52aXJvbm1lbnQgbV9wcml2YXRlTmFtZXM7CiAgICAgfTsKIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA4NDAzZTJjODFjNzIu
LmMzMmRlM2YzNTk2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMzY5
LDYgKzM2OSw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSwgV1RG
OjpSdW5Mb29wKiBydW5Mb29wLCBib29sKiBzdWNjZXNzKQogICAgICwgc3RydWN0dXJlQ2hhaW5T
cGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTdHJ1
Y3R1cmVDaGFpbikKICAgICAsIHN0cnVjdHVyZVJhcmVEYXRhU3BhY2UgSVNPX1NVQlNQQUNFX0lO
SVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgU3RydWN0dXJlUmFy
ZURhdGEpIC8vIEhhc2g6MHhhY2E0ZTYyZAogICAgICwgc3RydWN0dXJlU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgU3RydWN0
dXJlKSAvLyBIYXNoOjB4MWYxYmNkY2EKKyAgICAsIGJyYW5kZWRTdHJ1Y3R1cmVTcGFjZSBJU09f
U1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBC
cmFuZGVkU3RydWN0dXJlKQogICAgICwgc3ltYm9sVGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTeW1ib2xUYWJsZSkg
Ly8gSGFzaDoweGM1MjE1YWZkCiAgICAgLCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhD
b25zdHJhaW50cyhleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UpCiAgICAgLCBleGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKGV4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2VTcGFjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDI3YWFmYzAzMjY2Zi4u
MmU4NzY2MzdkYzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTQ2NSw2ICs0
NjUsNyBAQCBwdWJsaWM6CiAgICAgSXNvU3Vic3BhY2Ugc3RydWN0dXJlQ2hhaW5TcGFjZTsKICAg
ICBJc29TdWJzcGFjZSBzdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlOwogICAgIElzb1N1YnNwYWNlIHN0
cnVjdHVyZVNwYWNlOworICAgIElzb1N1YnNwYWNlIGJyYW5kZWRTdHJ1Y3R1cmVTcGFjZTsKICAg
ICBJc29TdWJzcGFjZSBzeW1ib2xUYWJsZVNwYWNlOwogCiAjZGVmaW5lIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIobmFtZSkgXAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418748</attachid>
            <date>2021-01-29 10:54:41 -0800</date>
            <delta_ts>2021-02-01 08:48:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194434-20210129155437.patch</filename>
            <type>text/plain</type>
            <size>340386</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMDU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
YjhmYzVmZGIxMmZlMjUyMGJkNzg0NTA1MGMwNTg0MTYwMTIxZjFiLi5lODYxZjVkYjI2MjcxMWQy
NzM2OWQ5NzExZTEzNmI3ZWY0YWJhNjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MTkgQEAKKzIwMjEtMDEtMjkgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtFU05leHRdIEltcGxlbWVudCBwcml2YXRlIG1ldGhvZHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDQzNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYWRk
aW5nIHN1cHBvcnQgdG8gcHJpdmF0ZSBtZXRob2RzIGZvbGxvd2luZyB0aGUKKyAgICAgICAgc3Bl
Y2lmaWNhdGlvbiBvbiBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtcHJpdmF0ZS1tZXRob2RzLy4K
KyAgICAgICAgVGhpcyBpcyBpbnRyb2R1Y2luZyBhIG5ldyB3YXkgdG8gZGVjbGFyZSBwcml2YXRl
IG1ldGhvZHMgb24KKyAgICAgICAgY2xhc3Mgc3ludGF4LiBQcml2YXRlIG1ldGhvZHMgYXJlIG9u
bHkgYWNjZXNzaWJsZSB3aXRoaW4KKyAgICAgICAgY2xhc3NlcyB0aGV5IHdlcmUgZGVjbGFyZWQs
IGFuZCBvbmx5IGNhbiBiZSBjYWxsZWQgZnJvbQorICAgICAgICBvYmplY3RzIHRoYXQgYXJlIGlu
c3RhbmNlIG9mIHRoZXNlIGNsYXNzZXMuCisgICAgICAgIFRvIGd1YXJhbnRlZSBzdWNoIHJ1bGVz
LCB0aGUgcHJvcG9zYWwgcHJlc2VudHMgdGhlIGNvbmNlcHQgb2YKKyAgICAgICAgQnJhbmQgQ2hl
Y2suIER1cmluZyBjbGFzcyBldmFsdWF0aW9uLCBpZiBhIHByaXZhdGUgbWV0aG9kIGlzIHByZXNl
bnQsCisgICAgICAgIGEgYGJyYW5kYCBpcyBpbnN0YWxsZWQgaW4gdGhpcyBjbGFzcy4gRXZlcnkg
aW5zdGFuY2Ugb2Ygc3VjaCBjbGFzcworICAgICAgICB0aGVuIGdldHMgdGhpcyBicmFuZCBpbnN0
YWxsZWQgZHVyaW5nIGBbW0NvbnN0cnVjdF1dYCBvcGVyYXRpb24uIEl0CisgICAgICAgIG1lYW5z
IHRoYXQgYW4gb2JqZWN0IGNhbiBoYXZlIG11bHRpcGxlIGJyYW5kcyAoZS5nIHdoZW4gdGhlcmUg
aXMgYWxzbworICAgICAgICBwcml2YXRlIG1ldGhvZHMgZGVjbGFyZWQgb24gc3VwZXIgY2xhc3Mp
LiBCZWZvcmUgYWNjZXNzaW5nIGEgcHJpdmF0ZQorICAgICAgICBtZXRob2QsIHRoZXJlIGlzIGEg
Y2hlY2sgdG8gdmFsaWRhdGUgaWYgdGhlIHRhcmdldCBvZiB0aGUgY2FsbCBoYXMgdGhlCisgICAg
ICAgIGJyYW5kIG9mIGNhbGxlZSBtZXRob2QuCisgICAgICAgIFRoZSBicmFuZCBjaGVjayBtZWNo
YW5pc20gaXMgaW1wbGVtZW50ZWQgdXNpbmcgYSBgQHByaXZhdGVCcmFuZGAKKyAgICAgICAgc3Rv
cmVkIG9uIGNsYXNzIHNjb3BlLiBIZXJlIGlzIGEgcmVwcmVzZW50YXRpb24gb2YgaG93IHRoaXMg
bWVjaGFuaXNtCisgICAgICAgIHdvcmtzOgorCisgICAgICAgIGBgYAorICAgICAgICBjbGFzcyBD
IHsKKyAgICAgICAgICAgICNtKCkgeyByZXR1cm4gMzsgfQorICAgICAgICAgICAgbWV0aG9kKCkg
eyByZXR1cm4gdGhpcy4jbSgpOyB9CisgICAgICAgIH0KKworICAgICAgICBsZXQgYyA9IG5ldyBD
KCk7CisgICAgICAgIGNvbnNvbGUubG9nKGMubWV0aG9kKCkpOyAvLyBwcmludHMgMworICAgICAg
ICBgYGAKKworICAgICAgICBHZW5lcmF0ZWQgYnl0ZWNvZGUgZm9yIHRoZSBmb2xsb3dpbmcgcmVw
cmVzZW50YXRpb246CisgICAgICAgIGBgYAorICAgICAgICB7IC8vIGNsYXNzIGxleGljYWwgc2Nv
cGUKKyAgICAgICAgICAgIGNvbnN0IEBwcml2YXRlQnJhbmQgPSBAY3JlYXRlUHJpdmF0ZVN5bWJv
bCgpOworICAgICAgICAgICAgY29uc3QgI20gPSBmdW5jdGlvbiAoKSB7IHJldHVybiAzOyB9Cisg
ICAgICAgICAgICBDLnByb3RvdHlwZS5tZXRob2QgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICAgICBAY2hlY2tfcHJpdmF0ZV9icmFuZCh0aGlzLCBAcHJpdmF0ZUJyYW5kKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gI20uY2FsbCh0aGlzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IEMgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBAc2V0X3ByaXZhdGVfYnJhbmQodGhp
cywgQHByaXZhdGVCcmFuZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBs
ZXQgYyA9IG5ldyBDKCk7CisgICAgICAgIGNvbnNvbGUubG9nKGMubWV0aG9kKCkpOyAvLyBwcmlu
dHMgMworICAgICAgICBgYGAKKworICAgICAgICAjIFJlc29sdmluZyBjb3JyZWN0IGJyYW5kIHRv
IGNoZWNrCisKKyAgICAgICAgSW4gdGhlIGNhc2Ugb2Ygc2hhZG93aW5nIG9yIG5lc3RlZCBzY29w
ZSwgd2UgbmVlZCB0byBlbWl0IGJyYW5kCisgICAgICAgIGNoZWNrcyB0byB0aGUgcmlnaHQgcHJp
dmF0ZSBicmFuZC4gU2VlIGNvZGUgYmVsb3c6CisKKyAgICAgICAgYGBgCisgICAgICAgIGNsYXNz
IEMgeworICAgICAgICAgICAgI20oKSB7IHJldHVybiAzOyB9CisgICAgICAgICAgICBtZXRob2Qo
KSB7IHJldHVybiB0aGlzLiNtKCk7fQorCisgICAgICAgICAgICBBID0gY2xhc3MgeworICAgICAg
ICAgICAgICAgICNtMigpIHsgcmV0dXJuIDM7IH0KKyAgICAgICAgICAgICAgICBmb28obykgeyBy
ZXR1cm4gdGhpcy4jbSgpOyB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYGBg
CisKKyAgICAgICAgVGhlIGNhbGwgb2YgIiNtIiBpbiBgZm9vYCByZWZlcnMgdG8gIkM6OiNtIi4g
SW4gc3VjaCBjYXNlLCB3ZSBuZWVkIHRvCisgICAgICAgIGNoZWNrIEMncyBwcml2YXRlIGJyYW5k
LCBpbnN0ZWFkIG9mIEEncyBwcml2YXRlIGJyYW5kLgorICAgICAgICBUbyBwZXJmb3JtIHRoZSBw
cm9wZXIgY2hlY2ssIHdlIGZpcnN0IHJlc29sdmUgc2NvcGUgb2YgIiNtIiBhbmQgdGhlbgorICAg
ICAgICBjaGVjayB0aGUgcHJpdmF0ZSBicmFuZCBvZiB0aGlzIHNjb3BlICh0aGUgc2NvcGUgd2hl
cmUgdGhlIHByaXZhdGUKKyAgICAgICAgbWV0aG9kIGFuZCBicmFuZCBhcmUgc3RvcmVkIGlzIHRo
ZSBzYW1lKS4KKyAgICAgICAgU28gdGhlIGJ5dGVjb2RlIHRvIGxvb2t1cCB0aGUgcmlnaHQgYnJh
bmQgaXM6CisKKyAgICAgICAgYGBgCisgICAgICAgIHJlc29sdmVfc2NvcGUgbG9jMTAsICIjbSIK
KyAgICAgICAgZ2V0X2Zyb21fc2NvcGUgbG9jMTEsIGxvYzEwLCAiQHByaXZhdGVCcmFuZCIKKyAg
ICAgICAgY2hlY2tfcHJpdmF0ZV9icmFuZCB0aGlzLCBsb2MxMQorICAgICAgICBnZXRfZnJvbV9z
Y29wZSBsb2MxMSwgbG9jMTAsICIjbSIKKyAgICAgICAgLy8gc2V0dXAgY2FsbCBmcmFtZQorICAg
ICAgICBjYWxsIGxvYzExLCAuLi4KKyAgICAgICAgLy8gLi4uCisgICAgICAgIGBgYAorCisgICAg
ICAgICMgQnJhbmQgY2hlY2sgbWVjaGFuaXNtCisKKyAgICAgICAgV2UgYXJlIGludHJvZHVjaW5n
IGluIHRoaXMgcGF0Y2ggMiBuZXcgYnl0ZWNvZGVzIHRvIGFsbG93IGJyYW5kIGNoZWNrCisgICAg
ICAgIG9mIG9iamVjdHM6IGBvcF9zZXRfYnJhbmRgIGFuZCBgb3BfY2hlY2tfYnJhbmRgLgorICAg
ICAgICBgb3Bfc2V0X2JyYW5kYCBzZXRzIGEgbmV3IGJyYW5kIGluIGFuIG9iamVjdCwgc28gd2Ug
Y2FuIHBlcmZvcm0gdGhlIGJyYW5kCisgICAgICAgIGNoZWNrIGxhdGVyIHdoZW4gYWNjZXNzaW5n
IHByaXZhdGUgbWV0aG9kcy4gVGhpcyBvcGVyYXRpb25zIHRocm93cyB3aGVuCisgICAgICAgIHRy
eWluZyB0byBhZGQgdGhlIHNhbWUgYnJhbmQgdHdpY2UgaW4gYW4gT2JqZWN0LgorICAgICAgICBg
b3BfY2hlY2tfYnJhbmRgIGNoZWNrcyBpZiB0aGUgZ2l2ZW4gb2JqZWN0IGNvbnRhaW5zIHRoZSBi
cmFuZCB3ZSBhcmUKKyAgICAgICAgbG9va2luZyBmb3IuIEl0IHRyYXZlcnNlcyB0aGUgYnJhbmQg
Y2hhaW4gdG8gdmVyaWZ5IGlmIHRoZSBicmFuZCBpcworICAgICAgICBwcmVzZW50LCBhbmQgdGhy
b3dzIGBUeXBlRXJyb3JgIG90aGVyd2lzZS4KKworICAgICAgICBXZSBhcmUgYWxzbyBpbnRyb2R1
Y2luZyBhIHN1YmNsYXNzIGZvciBTdHJ1Y3R1cmUgY2FsbGVkIEJyYW5kZWRTdHJ1Y3R1cmUuCisg
ICAgICAgIEl0IGlzIHVzZWQgdG8gc3RvcmUgYnJhbmRzIGFuZCB0byBhbGxvdyBicmFuZCBjaGVj
ayBtZWNoYW5pc20uIEJyYW5kZWRTdHJ1Y3R1cmUKKyAgICAgICAgc3RvcmVzIGEgYnJhbmQgYW5k
IGEgcGFyZW50IHBvaW50ZXIgdG8gYW5vdGhlciBCcmFuZGVkU3RydWN0dXJlIHRoYXQgYWxsb3cK
KyAgICAgICAgdXMgdHJhdmVyc2UgdGhlIGJyYW5kIGNoYWluLiBXaXRoIGBCcmFuZGVkU3RydWN0
dXJlYCwgd2UgY2FuIHRoZW4KKyAgICAgICAgaW5mZXIgdGhhdCBhIGdpdmVuIG9iamVjdCBoYXMg
dGhlIGJyYW5kIHdlIGFyZSBsb29raW5nIGZvciBqdXN0CisgICAgICAgIGNoZWNraW5nIGl0cyBz
dHJ1Y3R1cmVJZC4gVGhpcyBpcyB2ZXJ5IGdvb2Qgb3B0aW1pemF0aW9uLCBzaW5jZSB3ZSBjYW4K
KyAgICAgICAgcmVkdWNlIG1vc3Qgb2YgYnJhbmQgY2hlY2tzIHRvIHN0cnVjdHVyZSBjaGVja3Mu
CisKKyAgICAgICAgV2UgY3JlYXRlZCBhIG5ldyBraW5kIG9mIHRyYW5zaXRpb24gY2FsbGVkIGBT
ZXRCcmFuZGAgdGhhdCBoYXBwZW5zIHdoZW4KKyAgICAgICAgYG9wX3NldF9icmFuZGAgaXMgZXhl
Y3V0ZWQuIFRoaXMgYWxsb3cgdXMgdG8gY2FjaGUgc3VjaCBraW5kIG9mCisgICAgICAgIHRyYXNp
dGlvbnMgb24gdHJhc2l0aW9uIHRhYmxlIHVzaW5nIHRoZSBrZXkgYDxicmFuZC0+dWlkLCAwLAor
ICAgICAgICBUcmFuc2l0aW9uS2luZDo6U2V0QnJhbmQ+YC4gRHVyaW5nIHRoaXMgdHJhbnNpdGlv
biwgd2UgdGFrZSBwcmV2aW91cworICAgICAgICBzdHJ1Y3R1cmUgYW5kIGFwcGx5IG9uZSBvZiB0
aGUgZm9sbG93aW5nIHJ1bGVzOgorCisgICAgICAgICAgICAxLiBJZiBpdOKAmXMgYSBCcmFuZGVk
U3RydWN0dXJlLCB3ZSB0aGVuIHNldCBpdCB0byBgbV9wYXJlbnRCcmFuZGAsCisgICAgICAgICAg
ICB0byBhbGxvdyBwcm9wZXIgYnJhbmQgY2hhaW4gY2hlY2suCisgICAgICAgIAorICAgICAgICAg
ICAgMi4gSWYgaXTigJlzIG5vdCBhIEJyYW5kZWRTdHJ1Y3R1cmUsIHdlIHNldCBgbV9wYXJlbnRC
cmFuZGAgdG8gbnVsbHB0ciwKKyAgICAgICAgICAgIG1lYW5pbmcgdGhhdCB0aGlzIGlzIHRoZSBm
aXJzdCBicmFuZCBiZWluZyBhZGRlZCB0byB0aGUgb2JqZWN0CisgICAgICAgICAgICB3aXRoIHRo
aXMgc3RydWN0dXJlLgorICAgICAgICAKKyAgICAgICAgRm9yIG5vdywgd2UgYXJlIHVzaW5nIHRo
ZSBmbGFnIGBpc0JyYW5kZWRTdHJ1Y3R1cmVgIHRvIGlkZW50aWZ5IHRoYXQgYQorICAgICAgICBn
aXZlbiBTdHJ1Y3R1cmUgaXMgYSBCcmFuZGVkU3RydWN0dXJlLiBUaGlzIGlzIGRvbmUgdG8gYXZv
aWQgY2hhbmdlcworICAgICAgICBvbiBwbGFjZXMgd2hlcmUgd2UgYXJlIGNoZWNraW5nIGZvciBg
dm0uc3RydWN0dXJlU3RydWN0dXJlKClgLgorICAgICAgICBIb3dldmVyLCBpZiB3ZSBldmVyIG5l
ZWQgc3BhY2Ugb24gU3RydWN0dXJlLCB0aGlzIGZsYWcgaXMgYSBnb29kCisgICAgICAgIGNhbmRp
ZGF0ZSB0byBiZSBkZWxldGVkIGFuZCB3ZSBjYW4gbW92ZSB0byBhIHNvbHV0aW9uIHRoYXQgdXNl
cworICAgICAgICBgdm0uYnJhbmRlZFN0cnVjdHVyZVN0cnVjdHVyZSgpYDsKKworICAgICAgICAg
IyBKSVQgU3VwcG9ydAorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBpbmNsdWRlcyBpbml0aWFs
IEpJVCBzdXBwb3J0IGZvciBgc2V0X3ByaXZhdGVfYnJhbmRgCisgICAgICAgIGFuZCBgY2hlY2tf
cHJpdmF0ZV9icmFuZGAuIE9uIEJhc2VsaW5lIEpJVCwgd2UgYXJlIHVzaW5nCisgICAgICAgIGBK
SVRQcmF2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3JgIHRvIHN1cHBvcnQgSUMgZm9yIGJvdGggb3Bl
cmFuZHMuCisgICAgICAgIE9uIERGR0J5dGVDb2RlUGFyc2VyIHdlIGFyZSB0cnlpbmcgdG8gaW5s
aW5lIGJyYW5kIGFjY2VzcyB3aGVuZXZlcgorICAgICAgICBwb3NzaWJsZSwgYW5kIGZhbGxiYWNr
aW5nIHRvIGBTZXRQcml2YXRlQnJhbmRgIGFuZAorICAgICAgICBgQ2hlY2tQcml2YXRlQnJhbmRg
IG90aGVyd2lzZS4gVGhvc2Ugbm9kZXMgYXJlIG5vdCBiZWluZyBvcHRpbWl6ZWQgYXQKKyAgICAg
ICAgdGhlaXIgZnVsbCBwb3RlbnRpYWwsIGJ1dCB0aGUgY29kZSBnZW5lcmF0ZWQgYnkgdGhlbSBp
cyBhbHNvIHJlbHlpbmcgb24gCisgICAgICAgIGBKSVRQcmF2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0
b3JgIHRvIGhhdmUgSUMgc3VwcG9ydCBmb3IgYm90aCBERkcgYW5kCisgICAgICAgIEZUTC4gRHVy
aW5nIERGRyBwYXJzaW5nIHdlIHRyeSByZWR1Y2UgdGhvc2UgYWNjZXNzICB0byBgQ2hlY2tJZGVu
dGlmZWlyYAorICAgICAgICBhbmQgYENoZWNrU3RydWN0dXJlYCAod2l0aCBgUHV0U3RydWN0dXJl
YCBmb3IgYHNldF9wcml2YXRlX2JyYW5kYCBjYXNlcykKKyAgICAgICAgYmFzZWQgb24gYXZhaWxh
YmxlIHByb2ZpbGVkIGRhdGEuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNv
dXJjZXMudHh0OgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6Cisg
ICAgICAgIChKU0M6OkJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9y
KToKKyAgICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKToK
KyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaDoKKworICAgICAgICBXZSBh
cmUgYWRkaW5nIGEgbmV3IHBhcmFtZXRlciBgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnRgIHRvIHBy
b3BhZ2F0ZQorICAgICAgICB3aGVuIGEgZGVmYXVsdCBjb25zdHJ1Y3RvciBuZWVkcyB0byBlbWl0
IGNvZGUgdG8gc2V0dXAgcHJpdmF0ZSBicmFuZAorICAgICAgICBvbiBpbnN0YW5jZXMuCisKKyAg
ICAgICAgKiBidWlsdGlucy9CdWlsdGluTmFtZXMuaDoKKworICAgICAgICBBZGRpbmcgYEBwcml2
YXRlQnJhbmRgIHRoYXQgIHdlIHVzZSB0byBzdG9yZSBwcml2YXRlIGJyYW5kIG9uCisgICAgICAg
IGNsYXNzJ3Mgc2NvcGUuCisKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y3JlYXRlQ2hlY2tQcml2YXRlQnJhbmQpOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGVTZXRQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlND
OjpBY2Nlc3NDYXNlOjpyZXF1aXJlc0lkZW50aWZpZXJOYW1lTWF0Y2ggY29uc3QpOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpyZXF1aXJlc0ludDMyUHJvcGVydHlDaGVjayBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6Om5lZWRzU2NyYXRjaEZQUiBjb25zdCk6CisgICAgICAg
IChKU0M6OkFjY2Vzc0Nhc2U6OmZvckVhY2hEZXBlbmRlbnRDZWxsIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6QWNjZXNzQ2FzZTo6ZG9lc0NhbGxzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNz
Q2FzZTo6Y2FuUmVwbGFjZSBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmR1bXAg
Y29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCk6Cisg
ICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbCk6CisgICAgICAgICogYnl0ZWNv
ZGUvQWNjZXNzQ2FzZS5oOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpzdHJ1Y3R1cmUgY29u
c3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpuZXdTdHJ1Y3R1cmUgY29uc3QpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRl
eEltcGwpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToK
KyAgICAgICAgKiBieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5jcHA6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6YXBwZW5kVmFyaWFudCk6Cisg
ICAgICAgIChKU0M6OkNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOjpjb21wdXRlRm9yQmFzZWxpbmUp
OgorICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6Q2hlY2tQcml2YXRlQnJh
bmRTdGF0dXMpOgorICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6Y29tcHV0
ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2spOgorICAgICAgICAoSlNDOjpDaGVj
a1ByaXZhdGVCcmFuZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgIChKU0M6OkNoZWNrUHJp
dmF0ZUJyYW5kU3RhdHVzOjpzbG93VmVyc2lvbiBjb25zdCk6CisgICAgICAgIChKU0M6OkNoZWNr
UHJpdmF0ZUJyYW5kU3RhdHVzOjptZXJnZSk6CisgICAgICAgIChKU0M6OkNoZWNrUHJpdmF0ZUJy
YW5kU3RhdHVzOjpmaWx0ZXIpOgorICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVCcmFuZFN0YXR1
czo6c2luZ2xlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChKU0M6OkNoZWNrUHJpdmF0ZUJy
YW5kU3RhdHVzOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChKU0M6OkNoZWNrUHJpdmF0ZUJy
YW5kU3RhdHVzOjptYXJrSWZDaGVhcCk6CisgICAgICAgIChKU0M6OkNoZWNrUHJpdmF0ZUJyYW5k
U3RhdHVzOjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVz
OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFN0YXR1
cy5oOiBBZGRlZC4KKyAgICAgICAgKiBieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q2hlY2tQcml2YXRlQnJhbmRWYXJpYW50OjpDaGVj
a1ByaXZhdGVCcmFuZFZhcmlhbnQpOgorICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVCcmFuZFZh
cmlhbnQ6On5DaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQpOgorICAgICAgICAoSlNDOjpDaGVja1By
aXZhdGVCcmFuZFZhcmlhbnQ6OmF0dGVtcHRUb01lcmdlKToKKyAgICAgICAgKEpTQzo6Q2hlY2tQ
cml2YXRlQnJhbmRWYXJpYW50OjptYXJrSWZDaGVhcCk6CisgICAgICAgIChKU0M6OkNoZWNrUHJp
dmF0ZUJyYW5kVmFyaWFudDo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVC
cmFuZFZhcmlhbnQ6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKEpTQzo6Q2hlY2tQcml2YXRl
QnJhbmRWYXJpYW50OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2hlY2tQcml2YXRlQnJh
bmRWYXJpYW50OjpkdW1wSW5Db250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9DaGVj
a1ByaXZhdGVCcmFuZFZhcmlhbnQuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkNoZWNrUHJpdmF0
ZUJyYW5kVmFyaWFudDo6c3RydWN0dXJlU2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2hlY2tQ
cml2YXRlQnJhbmRWYXJpYW50OjpzdHJ1Y3R1cmVTZXQpOgorICAgICAgICAoSlNDOjpDaGVja1By
aXZhdGVCcmFuZFZhcmlhbnQ6OmlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpDaGVj
a1ByaXZhdGVCcmFuZFZhcmlhbnQ6Om92ZXJsYXBzKToKKyAgICAgICAgKiBieXRlY29kZS9Db2Rl
QmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKToKKyAgICAg
ICAgKiBieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxl
SW5mbzo6RXhlY3V0YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6cHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3Jw
aGljQWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJh
dGUpOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBieXRlY29kZS9S
ZWNvcmRlZFN0YXR1c2VzLmNwcDoKKyAgICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNlczo6b3Bl
cmF0b3I9KToKKyAgICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNlczo6YWRkQ2hlY2tQcml2YXRl
QnJhbmRTdGF0dXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1c2VzOjphZGRTZXRQcml2
YXRlQnJhbmRTdGF0dXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1c2VzOjp2aXNpdEFn
Z3JlZ2F0ZSk6CisgICAgICAgIChKU0M6OlJlY29yZGVkU3RhdHVzZXM6Om1hcmtJZkNoZWFwKToK
KyAgICAgICAgKiBieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmg6CisgICAgICAgIChKU0M6OlJl
Y29yZGVkU3RhdHVzZXM6OmZvckVhY2hWZWN0b3IpOgorICAgICAgICAqIGJ5dGVjb2RlL1NldFBy
aXZhdGVCcmFuZFN0YXR1cy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpTZXRQcml2YXRlQnJh
bmRTdGF0dXM6OmFwcGVuZFZhcmlhbnQpOgorICAgICAgICAoSlNDOjpTZXRQcml2YXRlQnJhbmRT
dGF0dXM6OmNvbXB1dGVGb3JCYXNlbGluZSk6CisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFu
ZFN0YXR1czo6U2V0UHJpdmF0ZUJyYW5kU3RhdHVzKToKKyAgICAgICAgKEpTQzo6U2V0UHJpdmF0
ZUJyYW5kU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjayk6
CisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAg
ICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFN0YXR1czo6c2xvd1ZlcnNpb24gY29uc3QpOgorICAg
ICAgICAoSlNDOjpTZXRQcml2YXRlQnJhbmRTdGF0dXM6Om1lcmdlKToKKyAgICAgICAgKEpTQzo6
U2V0UHJpdmF0ZUJyYW5kU3RhdHVzOjpmaWx0ZXIpOgorICAgICAgICAoSlNDOjpTZXRQcml2YXRl
QnJhbmRTdGF0dXM6OnNpbmdsZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpTZXRQ
cml2YXRlQnJhbmRTdGF0dXM6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKEpTQzo6U2V0UHJp
dmF0ZUJyYW5kU3RhdHVzOjptYXJrSWZDaGVhcCk6CisgICAgICAgIChKU0M6OlNldFByaXZhdGVC
cmFuZFN0YXR1czo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpTZXRQcml2YXRlQnJhbmRTdGF0
dXM6OmR1bXAgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1NldFByaXZhdGVCcmFuZFN0YXR1
cy5oOiBBZGRlZC4KKyAgICAgICAgKiBieXRlY29kZS9TZXRQcml2YXRlQnJhbmRWYXJpYW50LmNw
cDogQWRkZWQuCisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFZhcmlhbnQ6OlNldFByaXZh
dGVCcmFuZFZhcmlhbnQpOgorICAgICAgICAoSlNDOjpTZXRQcml2YXRlQnJhbmRWYXJpYW50Ojp+
U2V0UHJpdmF0ZUJyYW5kVmFyaWFudCk6CisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFZh
cmlhbnQ6OmF0dGVtcHRUb01lcmdlKToKKyAgICAgICAgKEpTQzo6U2V0UHJpdmF0ZUJyYW5kVmFy
aWFudDo6bWFya0lmQ2hlYXApOgorICAgICAgICAoSlNDOjpTZXRQcml2YXRlQnJhbmRWYXJpYW50
OjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFZhcmlhbnQ6OnZpc2l0
QWdncmVnYXRlKToKKyAgICAgICAgKEpTQzo6U2V0UHJpdmF0ZUJyYW5kVmFyaWFudDo6ZHVtcCBj
b25zdCk6CisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFZhcmlhbnQ6OmR1bXBJbkNvbnRl
eHQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1NldFByaXZhdGVCcmFuZFZhcmlhbnQuaDog
QWRkZWQuCisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFZhcmlhbnQ6Om9sZFN0cnVjdHVy
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFZhcmlhbnQ6Om5ld1N0cnVj
dHVyZSBjb25zdCk6CisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFZhcmlhbnQ6OmlkZW50
aWZpZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpTZXRQcml2YXRlQnJhbmRWYXJpYW50OjpvdmVy
bGFwcyk6CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6cmVzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0
cnVjdHVyZVN0dWJJbmZvLmg6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
Y3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2sp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OlVubGlua2VkQ29kZUJsb2NrOjpwcml2YXRlQnJhbmRSZXF1aXJlbWVudCBjb25zdCk6CisgICAg
ICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpT
Qzo6VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6OnByaXZhdGVCcmFuZFJlcXVpcmVtZW50IGNv
bnN0KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHA6
CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayk6CisgICAg
ICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUu
aDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorCisgICAgICAg
IFdlIGNoYW5nZWQgQnl0ZWNvZGVHZW5lcmF0b3IgZm9yIEZ1bmN0aW9uTm9kZSBhbmQgRXZhbE5v
ZGUgdG8KKyAgICAgICAgcHJvcGFnYXRlIHBhcmVudFNjb3BlIFZhcmlhYmxlRW52aXJvbm1lbnQu
IFRoZXNlIGVudmlyb25tZW50cyBzdG9yZXMKKyAgICAgICAgcHJpdmF0ZSBuYW1lIGVudHJpZXMg
dGhhdCBhcmUgdmlzaWJsZSBpbnRvIHRoZSBzY29wZSBvZiB0aGUKKyAgICAgICAgZnVuY3Rpb24v
ZXZhbCBpbiBhZGRpdGlvbiB0byBURFogdmFyaWFibGVzLgorICAgICAgICBUaGlzIGlzIHJlcXVp
cmVkIHRvIGlkZW50aWZ5IHRoZSBraW5kIG9mIGFjY2VzcyBhIHByaXZhdGUgbmFtZSBpcworICAg
ICAgICByZWZlcnJpbmcgdG8sIHNpbmNlIGl0IGNhbiBiZSBhIHByaXZhdGUgZmllbGQgb3IgYSBw
cml2YXRlIG1ldGhvZC4KKyAgICAgICAgR2l2ZW4gdGhpcyBjaGFuZ2UsIHdlIGNoYW5nZWQgdGhl
IG5hbWUgb2YgVmFyaWFibGVFbnZpcm9ubWVudAorICAgICAgICBmcm9tIGBwYXJlbnRTY29wZVRE
WlZhcmlhYmxlc2AgdG8gYHBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudGAuCisKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Omluc3RhbnRpYXRlTGV4aWNhbFZhcmlhYmxlcyk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0UHJpdmF0ZU5hbWUpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZVByaXZhdGVCcmFuZCk6
CisKKyAgICAgICAgVGhlIHByb2Nlc3MgdG8gY3JlYXRlIGEgcHJpdmF0ZSBicmFuZCBpcyBhcyBm
b2xsb3dzOgorICAgICAgICAgICAgMS4gQ3JlYXRlIGEgUHJpdmF0ZVN5bWJvbCB1c2luZyBgQGNy
ZWF0ZVByaXZhdGVTeW1ib2xgLgorICAgICAgICAgICAgMi4gU3RvcmUgdGhpcyBzeW1ib2wgaW50
byBhIGdpdmVuIHNjb3BlIChpLmUgY2xhc3MgbGV4aWNhbCBzY29wZSkKKyAgICAgICAgICAgICAg
IG9uIGBAcHJpdmF0ZUJyYW5kYCB2YXJpYWJsZS4KKworICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEluc3RhbGxQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEdldFByaXZhdGVCcmFuZCk6CisKKyAgICAgICAgV2UgYWRkZWQgYG1f
cHJpdmF0ZU5hbWVzU3RhY2tgIHRvIEJ5dGVjb2RlR2VuZXJhdG9yIHRvIHJlcHJlc2VudCB0aGUK
KyAgICAgICAgc2NvcGUgY2hhaW4gb2YgYXZhaWxhYmxlIHByaXZhdGUgbmFtZXMgd2hpbGUgZ2Vu
ZXJhdGluZyBieXRlY29kZS4KKworICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dENoZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Omlz
UHJpdmF0ZU1ldGhvZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoUHJp
dmF0ZUFjY2Vzc05hbWVzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnBvcFBy
aXZhdGVBY2Nlc3NOYW1lcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZXRB
dmFpbGFibGVQcml2YXRlQWNjZXNzTmFtZXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0TmV3Q2xhc3NGaWVsZEluaXRpYWxpemVyRnVuY3Rpb24pOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdEdldEJ5VmFsKTogRGVsZXRlZC4K
KyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnByaXZhdGVCcmFuZFJlcXVpcmVtZW50IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6Om1ha2VGdW5jdGlvbik6CisKKyAgICAgICAgVGhpcyBjaGFuZ2Ug
aXMgcmVxdWlyZWQgdG8gcHJvcGVybHkgcHJvcGFnYXRlIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50
CisgICAgICAgIHRvIGFycm93IGZ1bmN0aW9ucyB0aGF0IGNhbiBwb3RlbnRpYWxseSBjYWxsIGBz
dXBlcigpYC4KKworICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAg
ICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjplbWl0RGVjbGFyZVByaXZhdGVGaWVsZE5hbWVz
KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkpOgorICAg
ICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6ZW1pdEdldFByb3BlcnR5VmFsdWUpOgorCisgICAgICAg
IEFkZGluZyBzdXBwb3J0IHRvIHByb3Blcmx5IGFjY2VzcyBwcml2YXRlIG1ldGhvZC4gU2luY2Ug
d2Ugc3RvcmUKKyAgICAgICAgcHJpdmF0ZSBtZXRob2RzIG9uIGNsYXNzIGxleGljYWwgc2NvcGUs
IHdlIG5lZWQgYSBkaWZmZXJlbnQgc2V0IG9mCisgICAgICAgIGluc3RydWN0aW9ucyB0byBhY2Nl
c3MgYSBwcml2YXRlIG1ldGhvZC4KKworICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6ZW1pdFB1
dFByb3BlcnR5KToKKworICAgICAgICBJbiB0aGUgY2FzZSBvZiB3ZSB0cnlpbmcgdG8gd3JpdGUg
aW4gYSBwcml2YXRlIG1ldGhvZCwgd2UgbmVlZCB0bworICAgICAgICB0aHJvdyBhIFR5cGVFcnJv
ciBhY2NvcmRpbmcgdG8gc3BlY2lmaWNhdGlvbgorICAgICAgICAoaHR0cHM6Ly90YzM5LmVzL3By
b3Bvc2FsLXByaXZhdGUtbWV0aG9kcy8jc2VjLXByaXZhdGVmaWVsZHNldCkuCisKKyAgICAgICAg
KEpTQzo6RnVuY3Rpb25DYWxsVmFsdWVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpQb3N0Zml4Tm9kZTo6ZW1pdERvdCk6CisgICAgICAgIChKU0M6OlByZWZpeE5vZGU6OmVtaXRE
b3QpOgorICAgICAgICAoSlNDOjpDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAg
ICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdn
ZXJDYWxsRnJhbWU6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKiBkZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAg
ICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpm
aWx0ZXJJQ1N0YXR1cyk6CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhh
c2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdD
YXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6Cisg
ICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVy
aXplKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OmNsb2JiZXJzRXhpdFN0YXRlKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBo
YXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAg
ICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmspOgorICAgICAgICAqIGRmZy9E
RkdKSVRDb21waWxlci5oOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjphZGRQcml2
YXRlQnJhbmRBY2Nlc3MpOgorICAgICAgICAqIGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAgICAg
KiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0NoZWNrUHJpdmF0
ZUJyYW5kU3RhdHVzKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjaGVja1ByaXZhdGVCcmFu
ZFN0YXR1cyk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzU2V0UHJpdmF0ZUJyYW5kU3Rh
dHVzKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzZXRQcml2YXRlQnJhbmRTdGF0dXMpOgor
ICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPYmplY3RBbGxv
Y2F0aW9uU2lua2luZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNo
ZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVNldFByaXZhdGVCcmFuZCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHA6Cisg
ICAgICAgICogZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwOgorICAgICAgICAqIGZ0
bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgor
ICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVQcml2YXRlQnJhbmRBY2Nlc3MpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlU2V0UHJpdmF0ZUJyYW5kKToK
KyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmV2
YWwpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVD
b21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nh
c2VzKToKKyAgICAgICAgKEpTQzo6SklUOjpsaW5rKToKKyAgICAgICAgKiBqaXQvSklULmg6Cisg
ICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5l
cmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5l
cmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Iu
aDoKKyAgICAgICAgKEpTQzo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpKSVRQcml2
YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQcml2YXRlQnJhbmRB
Y2Nlc3NHZW5lcmF0b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6CisgICAgICAgICogaml0L0pJVE9w
ZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgor
ICAgICAgICAoSlNDOjpnZXRQcml2YXRlTmFtZSk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlv
bnMuaDoKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2NoZWNrX3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2No
ZWNrX3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5kKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9zZXRfcHJpdmF0ZV9icmFuZCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9jaGVja19wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0U2xvd19vcF9jaGVja19wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKiBqaXQvUmVw
YXRjaC5jcHA6CisgICAgICAgIChKU0M6OnRyeUNhY2hlQ2hlY2tQcml2YXRlQnJhbmQpOgorICAg
ICAgICAoSlNDOjpyZXBhdGNoQ2hlY2tQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjp0cnlD
YWNoZVNldFByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OnJlcGF0Y2hTZXRQcml2YXRlQnJh
bmQpOgorICAgICAgICAoSlNDOjpyZXNldENoZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpT
Qzo6cmVzZXRTZXRQcml2YXRlQnJhbmQpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmg6CisgICAg
ICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJ
TlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmg6Cisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBs
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5j
cHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpGdW5jdGlvbk1ldGFkYXRh
Tm9kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OkJhc2VEb3RO
b2RlOjppc1ByaXZhdGVNZW1iZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6
aXNQcml2YXRlRmllbGQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9QYXJzZXIu
Y3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlc3Npb24pOgorICAg
ICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OmRlY2xhcmVQcml2
YXRlTWV0aG9kKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OmRlY2xhcmVQcml2YXRlRmllbGQpOgor
ICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UpOgorICAgICAgICAoSlNDOjpw
YXJzZSk6CisgICAgICAgIChKU0M6OlNjb3BlOjpkZWNsYXJlUHJpdmF0ZU5hbWUpOiBEZWxldGVk
LgorICAgICAgICAqIHBhcnNlci9QYXJzZXJNb2Rlcy5oOgorICAgICAgICAqIHBhcnNlci9TeW50
YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZURvdEFjY2Vz
cyk6CisgICAgICAgICogcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwOgorICAgICAgICAo
SlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZU1ldGhvZCk6CisgICAgICAg
ICogcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKEpTQzo6VmFyaWFibGVF
bnZpcm9ubWVudEVudHJ5Ojppc1ByaXZhdGVGaWVsZCBjb25zdCk6CisgICAgICAgIChKU0M6OlZh
cmlhYmxlRW52aXJvbm1lbnRFbnRyeTo6aXNQcml2YXRlTWV0aG9kIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5OjpzZXRJc1ByaXZhdGVGaWVsZCk6CisgICAg
ICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeTo6c2V0SXNQcml2YXRlTWV0aG9kKToK
KyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6aXNNZXRob2QgY29uc3QpOgorICAgICAg
ICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5Ojppc1ByaXZhdGVNZXRob2RPckFjZXNzb3IgY29uc3Qp
OgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjphZGRQcml2YXRlTmFtZSk6Cisg
ICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlRmllbGQpOgor
ICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZU1ldGhvZCk6
CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OnByaXZhdGVOYW1lRW52aXJvbm1l
bnQgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpoYXNQcml2YXRl
TWV0aG9kT3JBY2Nlc3NvciBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1l
bnQ6OmFkZFByaXZhdGVOYW1lc0Zyb20pOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25t
ZW50RW50cnk6OmlzUHJpdmF0ZU5hbWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpW
YXJpYWJsZUVudmlyb25tZW50RW50cnk6OnNldElzUHJpdmF0ZU5hbWUpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZU5hbWUpOiBEZWxl
dGVkLgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAgICAoSlNDOjpD
YWNoZWRDb2RlQmxvY2tSYXJlRGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ29k
ZUJsb2NrUmFyZURhdGE6OmRlY29kZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZEZ1bmN0
aW9uRXhlY3V0YWJsZVJhcmVEYXRhOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRGdW5j
dGlvbkV4ZWN1dGFibGVSYXJlRGF0YTo6ZGVjb2RlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2Fj
aGVkRnVuY3Rpb25FeGVjdXRhYmxlOjpwcml2YXRlQnJhbmRSZXF1aXJlbWVudCBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkNhY2hlZENvZGVCbG9jazo6ZGVyaXZlZENvbnRleHRUeXBlIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6Q2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlOjplbmNvZGUpOgorICAgICAg
ICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRDb2RlQmxvY2s6Om5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5j
cHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsKToKKyAgICAg
ICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtlZENvZGVCbG9jayk6CisgICAgICAgIChKU0M6OmdlbmVy
YXRlVW5saW5rZWRDb2RlQmxvY2tGb3JEaXJlY3RFdmFsKToKKyAgICAgICAgKEpTQzo6Q29kZUNh
Y2hlOjpnZXRVbmxpbmtlZEdsb2JhbEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgICogcnVu
dGltZS9Db2RlQ2FjaGUuaDoKKyAgICAgICAgKiBydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxl
LmNwcDoKKyAgICAgICAgKEpTQzo6RGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OkRpcmVjdEV2YWxFeGVjdXRhYmxlOjpEaXJlY3RFdmFsRXhlY3V0YWJsZSk6Cisg
ICAgICAgICogcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRp
bWUvRXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6RXZh
bEV4ZWN1dGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaDoKKyAgICAg
ICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OmV4ZWN1dGFibGVJbmZvIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6RXZhbEV4ZWN1dGFibGU6OnByaXZhdGVCcmFuZFJlcXVpcmVtZW50IGNvbnN0KToKKyAg
ICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpjcmVh
dGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcik6CisgICAgICAgICogcnVudGltZS9JbmRpcmVjdEV2
YWxFeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6SW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6
SW5kaXJlY3RFdmFsRXhlY3V0YWJsZSk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpjaGVja1ByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRQcml2
YXRlQnJhbmQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5jcHA6CisgICAgICAgIChKU0M6
OkpTU2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFopOgorICAgICAgICAqIHJ1
bnRpbWUvSlNTY29wZS5oOgorICAgICAgICAqIHJ1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGUuaDoKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpPcHRp
b25zOjpyZWNvbXB1dGVEZXBlbmRlbnRPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1lL09wdGlv
bnNMaXN0Lmg6CisgICAgICAgICogcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oOgorICAgICAg
ICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjptYXRl
cmlhbGl6ZVByb3BlcnR5VGFibGUpOgorICAgICAgICAoSlNDOjpCcmFuZGVkU3RydWN0dXJlOjpC
cmFuZGVkU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6QnJhbmRlZFN0cnVjdHVyZTo6Y3JlYXRl
KToKKyAgICAgICAgKEpTQzo6QnJhbmRlZFN0cnVjdHVyZTo6Y2hlY2tCcmFuZCk6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6c2V0QnJhbmRUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJl
SW1wbCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6c2V0QnJhbmRUcmFuc2l0aW9uRnJvbUV4
aXN0aW5nU3RydWN0dXJlQ29uY3VycmVudGx5KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpz
ZXRCcmFuZFRyYW5zaXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUv
U3RydWN0dXJlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Zm9yRWFjaFByb3BlcnR5Q29uY3VycmVudGx5KToKKyAg
ICAgICAgKiBydW50aW1lL1N0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oOgorICAgICAgICAqIHJ1
bnRpbWUvU3ltYm9sVGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZTo6Y2xvbmVT
Y29wZVBhcnQpOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuaDoKKyAgICAgICAgKiBy
dW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1l
L1ZNLmg6CisKIDIwMjEtMDEtMjggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4K
IAogICAgICAgICBbSlNDXSBBZGQgSlNQcm9taXNlOjpyZWplY3RlZFByb21pc2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBhNjRhMzY1NDJhZWY5NWExMDk4M2FmOGQ5OTRh
ZWViZTNmZGJkYWUxLi42Y2RkMmMxNjIzYWM2Y2FkYWUzYWUyNGIwNmMxNjQwZTllNzJmZTg5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01MzgsNiArNTM4LDggQEAgc2V0
KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBieXRlY29kZS9D
YWxsTGlua0luZm8uaAogICAgIGJ5dGVjb2RlL0NhbGxNb2RlLmgKICAgICBieXRlY29kZS9DYWxs
VmFyaWFudC5oCisgICAgYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuaAorICAgIGJ5
dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudC5oCiAgICAgYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgKICAgICBieXRlY29kZS9Db2RlQmxvY2tIYXNoLmgKICAgICBieXRlY29kZS9Db2RlT3JpZ2lu
LmgKQEAgLTU3Myw2ICs1NzUsOCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdP
UktfSEVBREVSUwogICAgIGJ5dGVjb2RlL09wZXJhbmRzLmgKICAgICBieXRlY29kZS9Qcm9wZXJ0
eUNvbmRpdGlvbi5oCiAgICAgYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmgKKyAgICBieXRlY29kZS9T
ZXRQcml2YXRlQnJhbmRTdGF0dXMuaAorICAgIGJ5dGVjb2RlL1NldFByaXZhdGVCcmFuZFZhcmlh
bnQuaAogICAgIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKICAgICBieXRlY29kZS9TdHJ1Y3R1
cmVTZXQuaAogICAgIGJ5dGVjb2RlL1N1cGVyU2FtcGxlci5oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDgzZGU3OWI4NDFmOWIxZmEzOTUzNzI1ZDI1ZTIxMTk1YjBkMDA0NTguLjRk
NmU4MTk0Yzk2NjljODY0ODMwOTdhMWNjZWRlMjJiOGYwZjJkZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xMjQzLDkgKzEyNDMsMTMgQEAKIAkJODYxNThBQjMxNTVDOEI0MDAw
QjQ1QzlDIC8qIFByb3BlcnR5TmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODYxNThBQjIxNTVDOEIzRjAwQjQ1QzlDIC8qIFByb3BlcnR5TmFtZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2MTgx
Njc3MUZCNzkyNDIwMEVDQzRFQyAvKiBCaWdJbnRPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MTgxNjc2MUZCNzkyMkYwMEVDQzRFQyAvKiBC
aWdJbnRPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk4NjI1NTNEMjE2MTM2RTFBMDA5RjE3RDAgLyogSlNQcm94eS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYyNTUzQ0YxNjEzNkFBNTAwOUYx
N0QwIC8qIEpTUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk4NjI4MUVGMDI1QjYxNjAwMDAzNjcwMDQgLyogQ2hlY2tQcml2YXRlQnJhbmRW
YXJpYW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NjI4MUVFRjI1QjYxNjAwMDAzNjcwMDQgLyogQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50LmggKi87
IH07CisJCTg2MjgxRUY0MjVCNjFBRjAwMDM2NzAwNCAvKiBDaGVja1ByaXZhdGVCcmFuZFN0YXR1
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYyODFF
RjMyNUI2MUFGMDAwMzY3MDA0IC8qIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmggKi87IH07CiAJ
CTg2M0IyM0UwMEZDNjExODkwMDcwM0FBNCAvKiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2M0IyM0RGMEZDNjBF
NjIwMDcwM0FBNCAvKiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjNGQkM1QTI1QjA5M0I5MDBGNkM5MzAg
LyogV2FzbVZhbHVlTG9jYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2M0ZCQzU4MjVCMDkzQjkwMEY2QzkzMCAvKiBXYXNtVmFsdWVMb2NhdGlv
bi5oICovOyB9OwogCQk4NjVBMzBGMTEzNTAwN0UxMDBDREI0OUUgLyogSlNDSlNWYWx1ZUlubGlu
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NUEz
MEYwMTM1MDA3RTEwMENEQjQ5RSAvKiBKU0NKU1ZhbHVlSW5saW5lcy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2NURBMEM1MjVCODk1NzQwMDg3
NTc3MiAvKiBTZXRQcml2YXRlQnJhbmRWYXJpYW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjVEQTBDNDI1Qjg5NTc0MDA4NzU3NzIgLyogU2V0UHJp
dmF0ZUJyYW5kVmFyaWFudC5oICovOyB9OworCQk4NjVEQTBDODI1Qjg5NjBDMDA4NzU3NzIgLyog
U2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NjVEQTBDNzI1Qjg5NjBDMDA4NzU3NzIgLyogU2V0UHJpdmF0ZUJyYW5k
U3RhdHVzLmggKi87IH07CiAJCTg2NjczOUQyMTNCRkRFNzEwMDIzRDg3QyAvKiBCaWdJbnRlZ2Vy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjY3MzlE
MDEzQkZERTcxMDAyM0Q4N0MgLyogQmlnSW50ZWdlci5oICovOyB9OwogCQk4NjY3MzlEMzEzQkZE
RTcxMDAyM0Q4N0MgLyogVWludDE2V2l0aEZyYWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjY3MzlEMTEzQkZERTcxMDAyM0Q4N0MgLyogVWlu
dDE2V2l0aEZyYWN0aW9uLmggKi87IH07CiAJCTg2NzA0QjQzMTJEQjhBODEwMEE5RkU3QiAvKiBZ
YXJyU3ludGF4Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODY3MDRCNDExMkRCOEE4MTAwQTlGRTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmgg
Ki87IH07CkBAIC00MTQwLDYgKzQxNDQsMTAgQEAKIAkJODYxODE2NzgxRkI3OTMxMzAwRUNDNEVD
IC8qIEJpZ0ludE9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCaWdJbnRPYmplY3QuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjI1NTNDRTE2MTM2QUE1MDA5RjE3RDAg
LyogSlNQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1By
b3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYyNTUzQ0YxNjEzNkFBNTAw
OUYxN0QwIC8qIEpTUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQ
cm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NjI4MUVFRjI1QjYxNjAwMDAz
NjcwMDQgLyogQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENoZWNr
UHJpdmF0ZUJyYW5kVmFyaWFudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NjI4
MUVGMTI1QjYxNjVFMDAzNjcwMDQgLyogQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTg2MjgxRUYzMjVCNjFBRjAwMDM2NzAwNCAvKiBDaGVja1ByaXZh
dGVCcmFuZFN0YXR1cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NjI4MUVGNTI1QjYxQjA2MDAzNjcwMDQg
LyogQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2hlY2tQ
cml2YXRlQnJhbmRTdGF0dXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjNC
MjNERjBGQzYwRTYyMDA3MDNBQTQgLyogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4NjNDNkQ5ODE1MjExMTEyMDA1ODVFNEUgLyogWWFyckNh
bm9uaWNhbGl6ZVVDUzIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
WWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwOyBwYXRoID0geWFyci9ZYXJyQ2Fub25pY2FsaXplVUNT
Mi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2M0M2RDk5MTUyMTExMTIwMDU4
NUU0RSAvKiBZYXJyQ2Fub25pY2FsaXplLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IFlhcnJDYW5vbmljYWxpemUuaDsgcGF0aCA9IHlhcnIvWWFyckNhbm9uaWNhbGl6ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDE1MCw2ICs0MTU4LDEwIEBACiAJCTg2NDA5
MjNCMTU2RUVEM0IwMDU2NkNDMiAvKiBBUk02NFJlZ2lzdGVycy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBUk02NFJlZ2lzdGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4NjQwOTIzQzE1NkVFRDNCMDA1NjZDQjIgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxlckFSTTY0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2NUEzMEYwMTM1MDA3RTEwMENEQjQ5RSAv
KiBKU0NKU1ZhbHVlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0NKU1ZhbHVlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NjVEQTBD
NDI1Qjg5NTc0MDA4NzU3NzIgLyogU2V0UHJpdmF0ZUJyYW5kVmFyaWFudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTZXRQcml2YXRlQnJhbmRWYXJpYW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTg2NURBMEM2MjVCODk1OUUwMDg3NTc3MiAvKiBTZXRQcml2YXRlQnJhbmRWYXJpYW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNldFByaXZhdGVCcmFuZFZhcmlhbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk4NjVEQTBDNzI1Qjg5NjBDMDA4NzU3NzIgLyogU2V0UHJp
dmF0ZUJyYW5kU3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNldFByaXZhdGVCcmFuZFN0YXR1cy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NjVEQTBDOTI1Qjg5NjJBMDA4NzU3NzIg
LyogU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNldFByaXZh
dGVCcmFuZFN0YXR1cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2NjczOUQw
MTNCRkRFNzEwMDIzRDg3QyAvKiBCaWdJbnRlZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEJpZ0ludGVnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY2
NzM5RDExM0JGREU3MTAwMjNEODdDIC8qIFVpbnQxNldpdGhGcmFjdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBVaW50MTZXaXRoRnJhY3Rpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODY3MDRCNDAxMkRCOEE4MTAwQTlGRTdCIC8qIFlhcnJTeW50YXhD
aGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFlhcnJTeW50
YXhDaGVja2VyLmNwcDsgcGF0aCA9IHlhcnIvWWFyclN5bnRheENoZWNrZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtODQwOSw2ICs4NDIxLDEwIEBACiAJCQkJNjI3NjczMjIx
QjY4MEMxRTAwRkQ5RjJFIC8qIENhbGxNb2RlLmggKi8sCiAJCQkJMEYzQjdFMjQxOUExMUI4MDAw
RDlCQzU2IC8qIENhbGxWYXJpYW50LmNwcCAqLywKIAkJCQkwRjNCN0UyNTE5QTExQjgwMDBEOUJD
NTYgLyogQ2FsbFZhcmlhbnQuaCAqLywKKwkJCQk4NjI4MUVGNTI1QjYxQjA2MDAzNjcwMDQgLyog
Q2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuY3BwICovLAorCQkJCTg2MjgxRUYzMjVCNjFBRjAwMDM2
NzAwNCAvKiBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5oICovLAorCQkJCTg2MjgxRUYxMjVCNjE2
NUUwMDM2NzAwNCAvKiBDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQuY3BwICovLAorCQkJCTg2Mjgx
RUVGMjVCNjE2MDAwMDM2NzAwNCAvKiBDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQuaCAqLywKIAkJ
CQk5NjlBMDc5MDBFRDFEM0FFMDBGMUY2ODEgLyogQ29kZUJsb2NrLmNwcCAqLywKIAkJCQk5NjlB
MDc5MTBFRDFEM0FFMDBGMUY2ODEgLyogQ29kZUJsb2NrLmggKi8sCiAJCQkJMEY4Rjk0M0QxNjY3
NjMyRDAwRDYxOTcxIC8qIENvZGVCbG9ja0hhc2guY3BwICovLApAQCAtODU0Myw2ICs4NTU5LDEw
IEBACiAJCQkJMEY0NEE3QUEyMEJGNjg1RTAwMjJCMTcxIC8qIFJlY29yZGVkU3RhdHVzZXMuaCAq
LywKIAkJCQkwRkY2MEFCRjE2NzQwRjgxMDAwMjk3NzkgLyogUmVkdWNlV2hpdGVzcGFjZS5jcHAg
Ki8sCiAJCQkJMEZGNjBBQzAxNjc0MEY4MTAwMDI5Nzc5IC8qIFJlZHVjZVdoaXRlc3BhY2UuaCAq
LywKKwkJCQk4NjVEQTBDOTI1Qjg5NjJBMDA4NzU3NzIgLyogU2V0UHJpdmF0ZUJyYW5kU3RhdHVz
LmNwcCAqLywKKwkJCQk4NjVEQTBDNzI1Qjg5NjBDMDA4NzU3NzIgLyogU2V0UHJpdmF0ZUJyYW5k
U3RhdHVzLmggKi8sCisJCQkJODY1REEwQzYyNUI4OTU5RTAwODc1NzcyIC8qIFNldFByaXZhdGVC
cmFuZFZhcmlhbnQuY3BwICovLAorCQkJCTg2NURBMEM0MjVCODk1NzQwMDg3NTc3MiAvKiBTZXRQ
cml2YXRlQnJhbmRWYXJpYW50LmggKi8sCiAJCQkJMEZEODJFODQxNDFGM0ZEQTAwMTc5Qzk0IC8q
IFNwZWN1bGF0ZWRUeXBlLmNwcCAqLywKIAkJCQkwRkQ4MkU0RjE0MURBRUExMDAxNzlDOTQgLyog
U3BlY3VsYXRlZFR5cGUuaCAqLywKIAkJCQkwRkI0MzhBMjE5MjcwQjFEMDBFMUZCQzkgLyogU3Ry
dWN0dXJlU2V0LmNwcCAqLywKQEAgLTkzMzEsNiArOTM1MSw4IEBACiAJCQkJRkVDMTYwMzIyMzM5
RTlGOTAwQTA0Q0I4IC8qIENlbGxTaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjFDM0REQTFC
QkNFMDlFMDBFNTIzRTQgLyogQ2VsbFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MzM4RTJB
NzIzOTZFRkZCMDBDNjFCQUQgLyogQ2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTg2MjgxRUY0MjVCNjFBRjAwMDM2NzAwNCAvKiBDaGVja1ByaXZhdGVCcmFu
ZFN0YXR1cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJODYyODFFRjAyNUI2MTYwMDAwMzY3MDA0IC8q
IENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2QUFBRTUw
RTFGNDI2NTAwQUQ4N0Q4IC8qIENsYXNzSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUw
MjYxQUE5MDk1NjAwRDMzQjMzIC8qIENsb25lZEFyZ3VtZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMxOEM0NUUwRTE2RjVDRDAwQjM0NDYwIC8qIENMb29wU3RhY2suaCBpbiBIZWFkZXJzICov
LApAQCAtMTAzODIsNiArMTA0MDQsOCBAQAogCQkJCUE1NENGMkY2MTg0RUFCMjQwMDIzN0YxOSAv
KiBTY3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyOTlEQTYxN0QxMjg1ODAwNUY1
RkY5IC8qIFNldENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzkwREQ2RTE4MkY0
OTk3MDA1ODg4MDcgLyogU2V0SXRlcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTg2NURBMEM4MjVCODk2MEMwMDg3NTc3MiAvKiBTZXRQcml2YXRlQnJhbmRTdGF0dXMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTg2NURBMEM1MjVCODk1NzQwMDg3NTc3MiAvKiBTZXRQcml2YXRlQnJh
bmRWYXJpYW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzI5OURBMjE3RDEyODQ4MDA1RjVGRjkg
LyogU2V0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVFOTg0MTFBODg2NUI3MDA3
NTRFOTMgLyogU2V0dXBWYXJhcmdzRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCURDMTdFODE4
MUM5QzkxRDkwMDhBNkFCMyAvKiBTaGFkb3dDaGlja2VuLmggaW4gSGVhZGVycyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCAxN2MzOTcwNWQyOWY2Zjg5NTMzNmQ3YmYxNzU2NThk
Yzc0NDFmODkxLi42YTliMzFjMTY4YjQwNjE3OGJjMDg4NmE5ZDYyMDAxZjVhZmFlM2M1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0yMTEsNiArMjExLDggQEAgYnl0ZWNvZGUvQ2Fs
bExpbmtJbmZvLmNwcAogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCiBieXRlY29kZS9DYWxs
TW9kZS5jcHAKIGJ5dGVjb2RlL0NhbGxWYXJpYW50LmNwcAorYnl0ZWNvZGUvQ2hlY2tQcml2YXRl
QnJhbmRTdGF0dXMuY3BwCitieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQuY3BwCiBi
eXRlY29kZS9Db2RlQmxvY2suY3BwCiBieXRlY29kZS9Db2RlQmxvY2tIYXNoLmNwcAogYnl0ZWNv
ZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcApAQCAtMjcxLDYgKzI3Myw4IEBA
IGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCiBieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAK
IGJ5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCiBieXRlY29kZS9SZWR1Y2VXaGl0ZXNwYWNl
LmNwcAorYnl0ZWNvZGUvU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmNwcAorYnl0ZWNvZGUvU2V0UHJp
dmF0ZUJyYW5kVmFyaWFudC5jcHAKIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAogYnl0ZWNv
ZGUvU3RydWN0dXJlU2V0LmNwcAogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hw
b2ludC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWls
dGluRXhlY3V0YWJsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5FeGVjdXRhYmxlcy5jcHAKaW5kZXggMWEyMTQ5MmE2NTFlMTBlMGQ4NzNmYTRkOWJkZTEyOTE2
YWI5YWI0OS4uNjY0MTdjNDEzMjFkMjQ3OWI1Njg4OGZhYWZhZGRhOWNjZDljM2VjMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxl
cy5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgU291cmNlQ29kZSBCdWlsdGluRXhlY3V0YWJsZXM6OmRl
ZmF1bHRDb25zdHJ1Y3RvclNvdXJjZUNvZGUoQ29uc3RydWN0b3JLaW5kIGNvbnMKICAgICByZXR1
cm4gU291cmNlQ29kZSgpOwogfQogCi1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRp
bkV4ZWN1dGFibGVzOjpjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoQ29uc3RydWN0b3JLaW5kIGNv
bnN0cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpCitVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoQ29u
c3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZh
dGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KQogewogICAgIHN3aXRj
aCAoY29uc3RydWN0b3JLaW5kKSB7CiAgICAgY2FzZSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU6CkBA
IC02Nyw3ICs2Nyw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0
YWJsZXM6OmNyZWF0ZURlZmF1bHRDb25zdHJ1Y3RvcihDb25zdHJ1CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQ29uc3RydWN0b3JLaW5kOjpCYXNlOgogICAgIGNhc2UgQ29uc3RydWN0b3JLaW5k
OjpFeHRlbmRzOgotICAgICAgICByZXR1cm4gY3JlYXRlRXhlY3V0YWJsZShtX3ZtLCBkZWZhdWx0
Q29uc3RydWN0b3JTb3VyY2VDb2RlKGNvbnN0cnVjdG9yS2luZCksIG5hbWUsIGNvbnN0cnVjdG9y
S2luZCwgQ29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0LCBuZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplcik7CisgICAgICAgIHJldHVybiBjcmVhdGVFeGVjdXRhYmxlKG1fdm0sIGRlZmF1bHRD
b25zdHJ1Y3RvclNvdXJjZUNvZGUoY29uc3RydWN0b3JLaW5kKSwgbmFtZSwgY29uc3RydWN0b3JL
aW5kLCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3QsIG5lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyLCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7CiAgICAgfQogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwpAQCAtNzgsNyArNzgsNyBAQCBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGluRXhl
Y3V0YWJsZShjb25zdCBTbwogICAgIHJldHVybiBjcmVhdGVFeGVjdXRhYmxlKG1fdm0sIGNvZGUs
IG5hbWUsIGNvbnN0cnVjdG9yS2luZCwgY29uc3RydWN0QWJpbGl0eSwgTmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXI6Ok5vKTsKIH0KIAotVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0
aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVj
dG9yS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBOZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcikKK1VubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUoVk0mIHZt
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIENvbnN0
cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJp
bGl0eSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KQogewog
ICAgIC8vIEZJWE1FOiBDYW4gd2UganVzdCBtYWtlIE1ldGFEYXRhIGNvbXB1dGF0aW9uIGJlIGNv
bnN0ZXhwciBhbmQgaGF2ZSB0aGUgY29tcGlsZXIgZG8gdGhpcyBmb3IgdXM/CiAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzI3MgpAQCAtMjUxLDcgKzI1
MSw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNy
ZWF0ZUV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSh2bSwgc291cmNlLCAmbWV0YWRhdGEsIGtpbmQsIGNv
bnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgbnVsbHB0ciwgRGVy
aXZlZENvbnRleHRUeXBlOjpOb25lLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgaXNCdWls
dGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3Jl
YXRlKHZtLCBzb3VyY2UsICZtZXRhZGF0YSwga2luZCwgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJz
ZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBudWxscHRyLCBXVEY6Om51bGxvcHQsIERlcml2ZWRDb250
ZXh0VHlwZTo6Tm9uZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFuZFJl
cXVpcmVtZW50LCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3Rvcik7CiAgICAgcmV0dXJu
IGZ1bmN0aW9uRXhlY3V0YWJsZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCmluZGV4IDQ1MTYzOGU4NzNmNzk2YzhjNGQy
NjI5YzdiNWFhZmJmYWViMjRiOTguLjQzZTM4Mjc1YjFiOWFhMzYxNjdhMmFlOTFkMzU4Nzg2MDM4
MDc4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGlu
RXhlY3V0YWJsZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bkV4ZWN1dGFibGVzLmgKQEAgLTU4LDkgKzU4LDkgQEAgU291cmNlQ29kZSBuYW1lIyNTb3VyY2Uo
KTsKICN1bmRlZiBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUwogCiAgICAgc3RhdGljIFNvdXJj
ZUNvZGUgZGVmYXVsdENvbnN0cnVjdG9yU291cmNlQ29kZShDb25zdHJ1Y3RvcktpbmQpOwotICAg
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoQ29u
c3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplcik7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZURlZmF1bHRD
b25zdHJ1Y3RvcihDb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7CiAKLSAgICBz
dGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUV4ZWN1dGFibGUoVk0mLCBj
b25zdCBTb3VyY2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYsIENvbnN0cnVjdG9yS2luZCwgQ29u
c3RydWN0QWJpbGl0eSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpOworICAgIHN0YXRpYyBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlRXhlY3V0YWJsZShWTSYsIGNvbnN0IFNv
dXJjZUNvZGUmLCBjb25zdCBJZGVudGlmaWVyJiwgQ29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RB
YmlsaXR5LCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQgPSBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZSk7CiAKICAgICB2b2lkIGZpbmFsaXpl
VW5jb25kaXRpb25hbGx5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9C
dWlsdGluTmFtZXMuaAppbmRleCA0NGM2YjIzNWVmZWNkMzUwNDZjNzFmN2FiZTlkMmIzZjc1ZDM5
ZjkxLi5lYjE2MTA0ZTEyZGQxMGQ4OTYwNTJkZmVhMzA5NTM0ZjM1MjU4M2M3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCkBAIC0xNzIsNiArMTcy
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8od2ViQXNzZW1ibHlDb21waWxlU3RyZWFt
aW5nSW50ZXJuYWwpIFwKICAgICBtYWNybyh3ZWJBc3NlbWJseUluc3RhbnRpYXRlU3RyZWFtaW5n
SW50ZXJuYWwpIFwKICAgICBtYWNybyhpbnN0YW5jZUZpZWxkSW5pdGlhbGl6ZXIpIFwKKyAgICBt
YWNybyhwcml2YXRlQnJhbmQpIFwKICAgICBtYWNybyhoYXNPd25Qcm9wZXJ0eUZ1bmN0aW9uKSBc
CiAgICAgbWFjcm8oY3JlYXRlUHJpdmF0ZVN5bWJvbCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmluZGV4IDYyNWU4NTcyYmM4NWU5YzM4YmYxYjVh
YWNlOThjZmVhOGQ2NTZlNDkuLjNlYmEzMTg3MjhiYjM0ZmRkMTllMDBjOGIzZjYzYzNlZDFkODhh
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAK
QEAgLTEzMyw2ICsxMzMsMTggQEAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nh
c2U6OmNyZWF0ZURlbGV0ZSgKICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
KG5ldyBBY2Nlc3NDYXNlKHZtLCBvd25lciwgRGVsZXRlLCBpZGVudGlmaWVyLCBvZmZzZXQsIG5l
d1N0cnVjdHVyZSwgeyB9LCB7IH0pKTsKIH0KIAorc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IEFjY2Vzc0Nhc2U6OmNyZWF0ZUNoZWNrUHJpdmF0ZUJyYW5kKFZNJiB2bSwgSlNDZWxsKiBvd25l
ciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
K3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBBY2Nlc3NDYXNl
KHZtLCBvd25lciwgQ2hlY2tQcml2YXRlQnJhbmQsIGlkZW50aWZpZXIsIGludmFsaWRPZmZzZXQs
IHN0cnVjdHVyZSwgeyB9LCB7IH0pKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IEFjY2Vzc0Nhc2U6OmNyZWF0ZVNldFByaXZhdGVCcmFuZCgKKyAgICBWTSYgdm0sIEpTQ2VsbCog
b3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgU3RydWN0dXJlKiBvbGRTdHJ1
Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG9s
ZFN0cnVjdHVyZSA9PSBuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7CisgICAgcmV0dXJuIHN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIFNldFBy
aXZhdGVCcmFuZCwgaWRlbnRpZmllciwgaW52YWxpZE9mZnNldCwgbmV3U3RydWN0dXJlLCB7IH0s
IHsgfSkpOworfQorCiBBY2Nlc3NDYXNlOjp+QWNjZXNzQ2FzZSgpCiB7CiB9CkBAIC0yODgsNiAr
MzAwLDggQEAgYm9vbCBBY2Nlc3NDYXNlOjpyZXF1aXJlc0lkZW50aWZpZXJOYW1lTWF0Y2goKSBj
b25zdAogICAgIGNhc2UgRGlyZWN0QXJndW1lbnRzTGVuZ3RoOgogICAgIGNhc2UgU2NvcGVkQXJn
dW1lbnRzTGVuZ3RoOgogICAgIGNhc2UgTW9kdWxlTmFtZXNwYWNlTG9hZDoKKyAgICBjYXNlIENo
ZWNrUHJpdmF0ZUJyYW5kOgorICAgIGNhc2UgU2V0UHJpdmF0ZUJyYW5kOgogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICBjYXNlIEluc3RhbmNlT2ZIaXQ6CiAgICAgY2FzZSBJbnN0YW5jZU9mTWlz
czoKQEAgLTM0MSw2ICszNTUsOCBAQCBib29sIEFjY2Vzc0Nhc2U6OnJlcXVpcmVzSW50MzJQcm9w
ZXJ0eUNoZWNrKCkgY29uc3QKICAgICBjYXNlIEluc3RhbmNlT2ZIaXQ6CiAgICAgY2FzZSBJbnN0
YW5jZU9mTWlzczoKICAgICBjYXNlIEluc3RhbmNlT2ZHZW5lcmljOgorICAgIGNhc2UgQ2hlY2tQ
cml2YXRlQnJhbmQ6CisgICAgY2FzZSBTZXRQcml2YXRlQnJhbmQ6CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBjYXNlIEluZGV4ZWRJbnQzMkxvYWQ6CiAgICAgY2FzZSBJbmRleGVkRG91Ymxl
TG9hZDoKQEAgLTM4Myw2ICszOTksOCBAQCBib29sIEFjY2Vzc0Nhc2U6Om5lZWRzU2NyYXRjaEZQ
UigpIGNvbnN0CiAgICAgY2FzZSBJbnRyaW5zaWNHZXR0ZXI6CiAgICAgY2FzZSBJbkhpdDoKICAg
ICBjYXNlIEluTWlzczoKKyAgICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5kOgorICAgIGNhc2UgU2V0
UHJpdmF0ZUJyYW5kOgogICAgIGNhc2UgQXJyYXlMZW5ndGg6CiAgICAgY2FzZSBTdHJpbmdMZW5n
dGg6CiAgICAgY2FzZSBEaXJlY3RBcmd1bWVudHNMZW5ndGg6CkBAIC00NzAsNiArNDg4LDggQEAg
dm9pZCBBY2Nlc3NDYXNlOjpmb3JFYWNoRGVwZW5kZW50Q2VsbChWTSYgdm0sIGNvbnN0IEZ1bmN0
b3ImIGZ1bmN0b3IpIGNvbnN0CiAgICAgY2FzZSBHZXRHZXR0ZXI6CiAgICAgY2FzZSBJbkhpdDoK
ICAgICBjYXNlIEluTWlzczoKKyAgICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5kOgorICAgIGNhc2Ug
U2V0UHJpdmF0ZUJyYW5kOgogICAgIGNhc2UgQXJyYXlMZW5ndGg6CiAgICAgY2FzZSBTdHJpbmdM
ZW5ndGg6CiAgICAgY2FzZSBEaXJlY3RBcmd1bWVudHNMZW5ndGg6CkBAIC01MTksNiArNTM5LDgg
QEAgYm9vbCBBY2Nlc3NDYXNlOjpkb2VzQ2FsbHMoVk0mIHZtLCBWZWN0b3I8SlNDZWxsKj4qIGNl
bGxzVG9NYXJrSWZEb2VzQ2FsbHMpIGNvbnMKICAgICBjYXNlIEludHJpbnNpY0dldHRlcjoKICAg
ICBjYXNlIEluSGl0OgogICAgIGNhc2UgSW5NaXNzOgorICAgIGNhc2UgQ2hlY2tQcml2YXRlQnJh
bmQ6CisgICAgY2FzZSBTZXRQcml2YXRlQnJhbmQ6CiAgICAgY2FzZSBBcnJheUxlbmd0aDoKICAg
ICBjYXNlIFN0cmluZ0xlbmd0aDoKICAgICBjYXNlIERpcmVjdEFyZ3VtZW50c0xlbmd0aDoKQEAg
LTY3MCw2ICs2OTIsOCBAQCBib29sIEFjY2Vzc0Nhc2U6OmNhblJlcGxhY2UoY29uc3QgQWNjZXNz
Q2FzZSYgb3RoZXIpIGNvbnN0CiAgICAgY2FzZSBDdXN0b21BY2Nlc3NvclNldHRlcjoKICAgICBj
YXNlIEluSGl0OgogICAgIGNhc2UgSW5NaXNzOgorICAgIGNhc2UgQ2hlY2tQcml2YXRlQnJhbmQ6
CisgICAgY2FzZSBTZXRQcml2YXRlQnJhbmQ6CiAgICAgICAgIGlmIChvdGhlci50eXBlKCkgIT0g
dHlwZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC03MDEsNyArNzI1LDcgQEAg
dm9pZCBBY2Nlc3NDYXNlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAgIG91
dC5wcmludChjb21tYSwgInByb3RvdHlwZSBhY2Nlc3MgY2hhaW4gPSAiKTsKICAgICAgICAgbV9w
b2x5UHJvdG9BY2Nlc3NDaGFpbi0+ZHVtcChzdHJ1Y3R1cmUoKSwgb3V0KTsKICAgICB9IGVsc2Ug
ewotICAgICAgICBpZiAobV90eXBlID09IFRyYW5zaXRpb24gfHwgbV90eXBlID09IERlbGV0ZSkK
KyAgICAgICAgaWYgKG1fdHlwZSA9PSBUcmFuc2l0aW9uIHx8IG1fdHlwZSA9PSBEZWxldGUgfHwg
bV90eXBlID09IFNldFByaXZhdGVCcmFuZCkKICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwg
InN0cnVjdHVyZSA9ICIsIHBvaW50ZXJEdW1wKHN0cnVjdHVyZSgpKSwgIiAtPiAiLCBwb2ludGVy
RHVtcChuZXdTdHJ1Y3R1cmUoKSkpOwogICAgICAgICBlbHNlIGlmIChtX3N0cnVjdHVyZSkKICAg
ICAgICAgICAgIG91dC5wcmludChjb21tYSwgInN0cnVjdHVyZSA9ICIsIHBvaW50ZXJEdW1wKG1f
c3RydWN0dXJlLmdldCgpKSk7CkBAIC0xMzMyLDYgKzEzNTYsMTIgQEAgdm9pZCBBY2Nlc3NDYXNl
OjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgICAgIHN0YXRlLmZhaWxBbmRJZ25vcmUuYXBw
ZW5kKGZhaWxBbmRJZ25vcmUpOwogICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgY2FzZSBD
aGVja1ByaXZhdGVCcmFuZDogeworICAgICAgICBlbWl0RGVmYXVsdEd1YXJkKCk7CisgICAgICAg
IHN0YXRlLnN1Y2NlZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICAgICAgCiAgICAg
ZGVmYXVsdDoKICAgICAgICAgZW1pdERlZmF1bHRHdWFyZCgpOwpAQCAtMjAzNCw2ICsyMDY0LDE5
IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYg
c3RhdGUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBjYXNlIFNldFByaXZhdGVCcmFu
ZDogeworICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0
SGFzQmVlbkludmFsaWRhdGVkKCkpOworICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlKCktPnRy
YW5zaXRpb25LaW5kKCkgPT0gVHJhbnNpdGlvbktpbmQ6OlNldEJyYW5kKTsKKworICAgICAgICB1
aW50MzJfdCBzdHJ1Y3R1cmVCaXRzID0gYml0d2lzZV9jYXN0PHVpbnQzMl90PihuZXdTdHJ1Y3R1
cmUoKS0+aWQoKSk7CisgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIoc3RydWN0dXJlQml0cyksCisgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CisKKyAg
ICAgICAgc3RhdGUuc3VjY2VlZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgY2Fz
ZSBEZWxldGVOb25Db25maWd1cmFibGU6IHsKICAgICAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW0zMihmYWxzZSksIHZhbHVlUmVncy5wYXlsb2FkR1BSKCkpOwogICAgICAg
ICBzdGF0ZS5zdWNjZWVkKCk7CkBAIC0yMTA3LDYgKzIxNTAsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6
OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgIGNhc2UgSW5k
ZXhlZFR5cGVkQXJyYXlGbG9hdDMyTG9hZDoKICAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5Rmxv
YXQ2NExvYWQ6CiAgICAgY2FzZSBJbmRleGVkU3RyaW5nTG9hZDoKKyAgICBjYXNlIENoZWNrUHJp
dmF0ZUJyYW5kOgogICAgICAgICAvLyBUaGVzZSBuZWVkIHRvIGJlIGhhbmRsZWQgYnkgZ2VuZXJh
dGVXaXRoR3VhcmQoKSwgc2luY2UgdGhlIGd1YXJkIGlzIHBhcnQgb2YgdGhlCiAgICAgICAgIC8v
IGFsZ29yaXRobS4gV2UgY2FuIGJlIHN1cmUgdGhhdCBub2JvZHkgd2lsbCBjYWxsIGdlbmVyYXRl
KCkgZGlyZWN0bHkgZm9yIHRoZXNlIHNpbmNlIHRoZXkKICAgICAgICAgLy8gYXJlIG5vdCBndWFy
ZGVkIGJ5IHN0cnVjdHVyZSBjaGVja3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0FjY2Vzc0Nhc2UuaAppbmRleCAxMDhmZWYzYjMzMDEyY2Y0ZTdkYjI3ZTIwYTYyNjAyMDc4NWQy
MTU5Li4zNmU5NDQ3ZTllMzYyY2RkMTBlOWM0MmY3NTA2ZjIxMmNhNzhmNjcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKQEAgLTEwOCw2ICsxMDgsOCBA
QCBwdWJsaWM6CiAgICAgICAgIEluc3RhbmNlT2ZIaXQsCiAgICAgICAgIEluc3RhbmNlT2ZNaXNz
LAogICAgICAgICBJbnN0YW5jZU9mR2VuZXJpYywKKyAgICAgICAgQ2hlY2tQcml2YXRlQnJhbmQs
CisgICAgICAgIFNldFByaXZhdGVCcmFuZCwKICAgICAgICAgSW5kZXhlZEludDMyTG9hZCwKICAg
ICAgICAgSW5kZXhlZERvdWJsZUxvYWQsCiAgICAgICAgIEluZGV4ZWRDb250aWd1b3VzTG9hZCwK
QEAgLTE1Myw2ICsxNTUsOSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PEFjY2Vzc0Nhc2U+IGNyZWF0ZURlbGV0ZShWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlk
ZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKICAgICAg
ICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpOworCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPiBjcmVhdGVDaGVja1ByaXZhdGVCcmFuZChWTSYsIEpTQ2VsbCogb3duZXIs
IENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlU2V0UHJpdmF0ZUJyYW5kKFZNJiwgSlNDZWxsKiBvd25l
ciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVy
ZSogbmV3U3RydWN0dXJlKTsKICAgICAKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vz
c0Nhc2U+IGZyb21TdHJ1Y3R1cmVTdHViSW5mbyhWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJs
ZUlkZW50aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiAKQEAgLTE2Miw3ICsxNjcsNyBAQCBw
dWJsaWM6CiAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSgpIGNvbnN0CiAgICAgewotICAgICAg
ICBpZiAobV90eXBlID09IFRyYW5zaXRpb24gfHwgbV90eXBlID09IERlbGV0ZSkKKyAgICAgICAg
aWYgKG1fdHlwZSA9PSBUcmFuc2l0aW9uIHx8IG1fdHlwZSA9PSBEZWxldGUgfHwgbV90eXBlID09
IFNldFByaXZhdGVCcmFuZCkKICAgICAgICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS0+cHJldmlv
dXNJRCgpOwogICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgfQpAQCAtMTcw
LDcgKzE3NSw3IEBAIHB1YmxpYzoKIAogICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKCkgY29u
c3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHJhbnNpdGlvbiB8fCBtX3R5cGUg
PT0gRGVsZXRlKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUcmFuc2l0aW9uIHx8IG1fdHlw
ZSA9PSBEZWxldGUgfHwgbV90eXBlID09IFNldFByaXZhdGVCcmFuZCk7CiAgICAgICAgIHJldHVy
biBtX3N0cnVjdHVyZS5nZXQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IDE1NjE5ZDNhNDhhMTQyYjczMTBiYmZmMzJk
YTdmMzdkMzYwNGExNDEuLjY1NGY1NjNmOGI0ZjQ1YWYxYTVhZWMxY2Y1OGM2OGE5YzExZjk0OTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
cmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpA
QCAtNTg4LDYgKzU4OCwyOCBAQCBvcCA6cHV0X3ByaXZhdGVfbmFtZSwKICAgICAgICAgbmV3U3Ry
dWN0dXJlSUQ6IFN0cnVjdHVyZUlELAogICAgIH0KIAorb3AgOnNldF9wcml2YXRlX2JyYW5kLAor
ICAgIGFyZ3M6IHsKKyAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBicmFu
ZDogVmlydHVhbFJlZ2lzdGVyLAorICAgIH0sCisgICAgbWV0YWRhdGE6IHsKKyAgICAgICAgb2xk
U3RydWN0dXJlSUQ6IFN0cnVjdHVyZUlELAorICAgICAgICBuZXdTdHJ1Y3R1cmVJRDogU3RydWN0
dXJlSUQsCisgICAgICAgIGJyYW5kOiBXcml0ZUJhcnJpZXJbSlNDZWxsXSwKKyAgICB9CisKK29w
IDpjaGVja19wcml2YXRlX2JyYW5kLAorICAgIGFyZ3M6IHsKKyAgICAgICAgYmFzZTogVmlydHVh
bFJlZ2lzdGVyLAorICAgICAgICBicmFuZDogVmlydHVhbFJlZ2lzdGVyLAorICAgIH0sCisgICAg
bWV0YWRhdGE6IHsKKyAgICAgICAgc3RydWN0dXJlSUQ6IFN0cnVjdHVyZUlELAorICAgICAgICBi
cmFuZDogV3JpdGVCYXJyaWVyW0pTQ2VsbF0sCisgICAgfQorICAgIAorCiBvcCA6cHV0X2J5X3Zh
bCwKICAgICBhcmdzOiB7CiAgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCmluZGV4IGIy
Njk4ZDg3OGU0YTkxNWUzODQ0NDFkZWI0MTE0ZDQ5ZDQ2MGEyNDQuLjQyNWFmMjViODA0OTI5ZjQ2
MWYwYmIxMzhjNjVhOGNmNTRiYjUyNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcApAQCAtMjI5LDYgKzIyOSw4IEBAIHZvaWQgY29t
cHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChWaXJ0dWFsUmVnaXN0ZXIgc2NvcGVSZWdpc3Rl
ciwgY29uc3QgSW5zdHJ1CiAgICAgVVNFUyhPcEdldEJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkKICAg
ICBVU0VTKE9wR2V0UHJpdmF0ZU5hbWUsIGJhc2UsIHByb3BlcnR5KQogICAgIFVTRVMoT3BQdXRQ
cml2YXRlTmFtZSwgYmFzZSwgcHJvcGVydHksIHZhbHVlKQorICAgIFVTRVMoT3BTZXRQcml2YXRl
QnJhbmQsIGJhc2UsIGJyYW5kKQorICAgIFVTRVMoT3BDaGVja1ByaXZhdGVCcmFuZCwgYmFzZSwg
YnJhbmQpCiAgICAgVVNFUyhPcEluQnlWYWwsIGJhc2UsIHByb3BlcnR5KQogICAgIFVTRVMoT3BP
dmVycmlkZXNIYXNJbnN0YW5jZSwgY29uc3RydWN0b3IsIGhhc0luc3RhbmNlVmFsdWUpCiAgICAg
VVNFUyhPcEluc3RhbmNlb2YsIHZhbHVlLCBwcm90b3R5cGUpCkBAIC0zOTcsNiArMzk5LDggQEAg
dm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKHVuc2lnbmVkIG51bVZhcnMsIGNv
bnN0IEluc3RydWN0aW9uKiBpbnN0cnUKICAgICBjYXNlIG9wX3B1dF9ieV92YWw6CiAgICAgY2Fz
ZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKICAgICBjYXNlIG9wX3B1dF9wcml2YXRlX25hbWU6Cisg
ICAgY2FzZSBvcF9zZXRfcHJpdmF0ZV9icmFuZDoKKyAgICBjYXNlIG9wX2NoZWNrX3ByaXZhdGVf
YnJhbmQ6CiAgICAgY2FzZSBvcF9wdXRfaW50ZXJuYWxfZmllbGQ6CiAgICAgY2FzZSBvcF9kZWZp
bmVfZGF0YV9wcm9wZXJ0eToKICAgICBjYXNlIG9wX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DaGVja1ByaXZhdGVC
cmFuZFN0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2
YXRlQnJhbmRTdGF0dXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyMWIwMTIwNDEyYzZhMDdkMjUwOGRiNDY5
OWZiNjQ4NDllOGUwMjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuY3BwCkBAIC0wLDAgKzEsMjcyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5BLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuaCIKKworI2luY2x1ZGUg
IkNhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisj
aW5jbHVkZSAiSUNTdGF0dXNVdGlscy5oIgorI2luY2x1ZGUgIlBvbHltb3JwaGljQWNjZXNzLmgi
CisjaW5jbHVkZSAiU3RydWN0dXJlU3R1YkluZm8uaCIKKyNpbmNsdWRlIDx3dGYvTGlzdER1bXAu
aD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2Jvb2wgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6OmFw
cGVuZFZhcmlhbnQoY29uc3QgQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50JiB2YXJpYW50KQorewor
ICAgIHJldHVybiBhcHBlbmRJQ1N0YXR1c1ZhcmlhbnQobV92YXJpYW50cywgdmFyaWFudCk7Cit9
CisKK0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOjpjb21w
dXRlRm9yQmFzZWxpbmUoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJQ1N0YXR1c01hcCYgbWFw
LCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIEV4aXRGbGFnIGRpZEV4aXQpCit7CisgICAg
Q29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihiYXNlbGluZUJsb2NrLT5tX2xvY2spOworCisgICAg
Q2hlY2tQcml2YXRlQnJhbmRTdGF0dXMgcmVzdWx0OworCisjaWYgRU5BQkxFKERGR19KSVQpCisg
ICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soCisg
ICAgICAgIGxvY2tlciwgYmFzZWxpbmVCbG9jaywgbWFwLmdldChDb2RlT3JpZ2luKGJ5dGVjb2Rl
SW5kZXgpKS5zdHViSW5mbyk7CisKKyAgICBpZiAoZGlkRXhpdCkKKyAgICAgICAgcmV0dXJuIHJl
c3VsdC5zbG93VmVyc2lvbigpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obWFwKTsKKyAgICBV
TlVTRURfUEFSQU0oZGlkRXhpdCk7CisgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOwor
I2VuZGlmCisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisjaWYgRU5BQkxFKEpJVCkKK0NoZWNr
UHJpdmF0ZUJyYW5kU3RhdHVzOjpDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyhTdHViSW5mb1N1bW1h
cnkgc3VtbWFyeSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQoreworICAgIHN3aXRjaCAo
c3VtbWFyeSkgeworICAgIGNhc2UgU3R1YkluZm9TdW1tYXJ5OjpOb0luZm9ybWF0aW9uOgorICAg
ICAgICBtX3N0YXRlID0gTm9JbmZvcm1hdGlvbjsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2Ug
U3R1YkluZm9TdW1tYXJ5OjpTaW1wbGU6CisgICAgY2FzZSBTdHViSW5mb1N1bW1hcnk6Ok1ha2Vz
Q2FsbHM6CisgICAgY2FzZSBTdHViSW5mb1N1bW1hcnk6OlRha2VzU2xvd1BhdGhBbmRNYWtlc0Nh
bGxzOgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1
cm47CisgICAgY2FzZSBTdHViSW5mb1N1bW1hcnk6OlRha2VzU2xvd1BhdGg6CisgICAgICAgIG1f
c3RhdGUgPSBzdHViSW5mby50b29rU2xvd1BhdGggPyBPYnNlcnZlZFRha2VzU2xvd1BhdGggOiBM
aWtlbHlUYWtlc1Nsb3dQYXRoOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzIENoZWNr
UHJpdmF0ZUJyYW5kU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVk
YmFjaygKKyAgICBjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqIGJsb2NrLCBT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8pCit7CisgICAgU3R1YkluZm9TdW1tYXJ5IHN1bW1h
cnkgPSBTdHJ1Y3R1cmVTdHViSW5mbzo6c3VtbWFyeShibG9jay0+dm0oKSwgc3R1YkluZm8pOwor
ICAgIGlmICghaXNJbmxpbmVhYmxlKHN1bW1hcnkpKQorICAgICAgICByZXR1cm4gQ2hlY2tQcml2
YXRlQnJhbmRTdGF0dXMoc3VtbWFyeSwgKnN0dWJJbmZvKTsKKworICAgIENoZWNrUHJpdmF0ZUJy
YW5kU3RhdHVzIHJlc3VsdDsKKyAgICByZXN1bHQubV9zdGF0ZSA9IFNpbXBsZTsKKyAgICBzd2l0
Y2ggKHN0dWJJbmZvLT5jYWNoZVR5cGUoKSkgeworICAgIGNhc2UgQ2FjaGVUeXBlOjpVbnNldDoK
KyAgICAgICAgcmV0dXJuIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzKE5vSW5mb3JtYXRpb24pOwor
CisgICAgY2FzZSBDYWNoZVR5cGU6OlN0dWI6IHsKKyAgICAgICAgUG9seW1vcnBoaWNBY2Nlc3Mq
IGxpc3QgPSBzdHViSW5mby0+dS5zdHViOworCisgICAgICAgIGZvciAodW5zaWduZWQgbGlzdElu
ZGV4ID0gMDsgbGlzdEluZGV4IDwgbGlzdC0+c2l6ZSgpOyArK2xpc3RJbmRleCkgeworICAgICAg
ICAgICAgY29uc3QgQWNjZXNzQ2FzZSYgYWNjZXNzID0gbGlzdC0+YXQobGlzdEluZGV4KTsKKwor
ICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBhY2Nlc3Muc3RydWN0dXJlKCk7Cisg
ICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlKTsKKyAgICAgICAgICAgIEFTU0VSVChhY2Nlc3Mu
dHlwZSgpID09IEFjY2Vzc0Nhc2U6OkNoZWNrUHJpdmF0ZUJyYW5kKTsKKworICAgICAgICAgICAg
Q2hlY2tQcml2YXRlQnJhbmRWYXJpYW50IHZhcmlhbnQoYWNjZXNzLmlkZW50aWZpZXIoKSwgU3Ry
dWN0dXJlU2V0KHN0cnVjdHVyZSkpOworICAgICAgICAgICAgaWYgKCFyZXN1bHQuYXBwZW5kVmFy
aWFudCh2YXJpYW50KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gQ2hlY2tQcml2YXRlQnJhbmRT
dGF0dXMoSlNDOjpzbG93VmVyc2lvbihzdW1tYXJ5KSwgKnN0dWJJbmZvKTsKKyAgICAgICAgfQor
CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgZGVmYXVsdDoKKyAgICAgICAg
cmV0dXJuIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzKEpTQzo6c2xvd1ZlcnNpb24oc3VtbWFyeSks
ICpzdHViSW5mbyk7CisgICAgfQorCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMoKTsKK30KKworQ2hlY2tQcml2YXRl
QnJhbmRTdGF0dXMgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAgQ29k
ZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJQ1N0YXR1c01hcCYgYmFzZWxpbmVNYXAsCisgICAgSUNT
dGF0dXNDb250ZXh0U3RhY2smIGNvbnRleHRTdGFjaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQor
eworICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IGNvZGVPcmlnaW4uYnl0ZWNvZGVJ
bmRleCgpOworICAgIEV4aXRGbGFnIGRpZEV4aXQgPSBoYXNCYWRDYWNoZUV4aXRTaXRlKGJhc2Vs
aW5lQmxvY2ssIGJ5dGVjb2RlSW5kZXgpOworCisgICAgZm9yIChJQ1N0YXR1c0NvbnRleHQqIGNv
bnRleHQgOiBjb250ZXh0U3RhY2spIHsKKyAgICAgICAgSUNTdGF0dXMgc3RhdHVzID0gY29udGV4
dC0+Z2V0KGNvZGVPcmlnaW4pOworCisgICAgICAgIGF1dG8gYmxlc3MgPSBbJl0gKGNvbnN0IENo
ZWNrUHJpdmF0ZUJyYW5kU3RhdHVzJiByZXN1bHQpIC0+IENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVz
IHsKKyAgICAgICAgICAgIGlmICghY29udGV4dC0+aXNJbmxpbmVkKGNvZGVPcmlnaW4pKSB7Cisg
ICAgICAgICAgICAgICAgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMgYmFzZWxpbmVSZXN1bHQgPSBj
b21wdXRlRm9yQmFzZWxpbmUoCisgICAgICAgICAgICAgICAgICAgIGJhc2VsaW5lQmxvY2ssIGJh
c2VsaW5lTWFwLCBieXRlY29kZUluZGV4LCBkaWRFeGl0KTsKKyAgICAgICAgICAgICAgICBiYXNl
bGluZVJlc3VsdC5tZXJnZShyZXN1bHQpOworICAgICAgICAgICAgICAgIHJldHVybiBiYXNlbGlu
ZVJlc3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChkaWRFeGl0LmlzU2V0KEV4
aXRGcm9tSW5saW5lZCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5zbG93VmVyc2lv
bigpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfTsKKworICAgICAgICBp
ZiAoc3RhdHVzLnN0dWJJbmZvKSB7CisgICAgICAgICAgICBDaGVja1ByaXZhdGVCcmFuZFN0YXR1
cyByZXN1bHQ7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9j
a2VyIGxvY2tlcihjb250ZXh0LT5vcHRpbWl6ZWRDb2RlQmxvY2stPm1fbG9jayk7CisgICAgICAg
ICAgICAgICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJh
Y2soCisgICAgICAgICAgICAgICAgICAgIGxvY2tlciwgY29udGV4dC0+b3B0aW1pemVkQ29kZUJs
b2NrLCBzdGF0dXMuc3R1YkluZm8pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHJl
c3VsdC5pc1NldCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBibGVzcyhyZXN1bHQpOworICAg
ICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGNvbXB1dGVGb3JCYXNlbGluZShiYXNlbGluZUJs
b2NrLCBiYXNlbGluZU1hcCwgYnl0ZWNvZGVJbmRleCwgZGlkRXhpdCk7Cit9CisKKyNlbmRpZiAv
LyBFTkFCTEUoSklUKQorCitDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyBDaGVja1ByaXZhdGVCcmFu
ZFN0YXR1czo6c2xvd1ZlcnNpb24oKSBjb25zdAoreworICAgIGlmIChvYnNlcnZlZFNsb3dQYXRo
KCkpCisgICAgICAgIHJldHVybiBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyhPYnNlcnZlZFRha2Vz
U2xvd1BhdGgpOworICAgIHJldHVybiBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyhMaWtlbHlUYWtl
c1Nsb3dQYXRoKTsKK30KKwordm9pZCBDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6bWVyZ2UoY29u
c3QgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMmIG90aGVyKQoreworICAgIGlmIChvdGhlci5tX3N0
YXRlID09IE5vSW5mb3JtYXRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbWVyZ2VT
bG93ID0gWyZdICgpIHsKKyAgICAgICAgaWYgKG9ic2VydmVkU2xvd1BhdGgoKSB8fCBvdGhlci5v
YnNlcnZlZFNsb3dQYXRoKCkpCisgICAgICAgICAgICAqdGhpcyA9IENoZWNrUHJpdmF0ZUJyYW5k
U3RhdHVzKE9ic2VydmVkVGFrZXNTbG93UGF0aCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICp0aGlzID0gQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMoTGlrZWx5VGFrZXNTbG93UGF0aCk7Cisg
ICAgfTsKKworICAgIHN3aXRjaCAobV9zdGF0ZSkgeworICAgIGNhc2UgTm9JbmZvcm1hdGlvbjoK
KyAgICAgICAgKnRoaXMgPSBvdGhlcjsKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBTaW1w
bGU6CisgICAgICAgIGlmIChtX3N0YXRlICE9IG90aGVyLm1fc3RhdGUpCisgICAgICAgICAgICBy
ZXR1cm4gbWVyZ2VTbG93KCk7CisKKyAgICAgICAgZm9yIChhdXRvJiBvdGhlclZhcmlhbnQgOiBv
dGhlci5tX3ZhcmlhbnRzKSB7CisgICAgICAgICAgICBpZiAoIWFwcGVuZFZhcmlhbnQob3RoZXJW
YXJpYW50KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbWVyZ2VTbG93KCk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBMaWtlbHlUYWtlc1Nsb3dQYXRoOgorICAgIGNh
c2UgT2JzZXJ2ZWRUYWtlc1Nsb3dQYXRoOgorICAgICAgICByZXR1cm4gbWVyZ2VTbG93KCk7Cisg
ICAgfQorCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBDaGVj
a1ByaXZhdGVCcmFuZFN0YXR1czo6ZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJl
U2V0KQoreworICAgIGlmIChtX3N0YXRlICE9IFNpbXBsZSkKKyAgICAgICAgcmV0dXJuOworICAg
IGZpbHRlcklDU3RhdHVzVmFyaWFudHMobV92YXJpYW50cywgc3RydWN0dXJlU2V0KTsKKyAgICBp
ZiAobV92YXJpYW50cy5pc0VtcHR5KCkpCisgICAgICAgIG1fc3RhdGUgPSBOb0luZm9ybWF0aW9u
OworfQorCitDYWNoZWFibGVJZGVudGlmaWVyIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOjpzaW5n
bGVJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICBpZiAobV92YXJpYW50cy5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgQ2FjaGVhYmxlSWRlbnRpZmllciByZXN1bHQg
PSBtX3ZhcmlhbnRzLmZpcnN0KCkuaWRlbnRpZmllcigpOworICAgIGlmICghcmVzdWx0KQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IG1fdmFyaWFu
dHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVy
ID0gbV92YXJpYW50c1tpXS5pZGVudGlmaWVyKCk7CisgICAgICAgIGlmICghaWRlbnRpZmllcikK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBpZiAoaWRlbnRpZmllciAhPSBy
ZXN1bHQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKwordm9pZCBDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6dmlzaXRBZ2dyZWdhdGUo
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgZm9yIChDaGVja1ByaXZhdGVCcmFuZFZhcmlh
bnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKQorICAgICAgICB2YXJpYW50LnZpc2l0QWdncmVnYXRl
KHZpc2l0b3IpOworfQorCit2b2lkIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOjptYXJrSWZDaGVh
cChTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBmb3IgKENoZWNrUHJpdmF0ZUJyYW5kVmFy
aWFudCYgdmFyaWFudCA6IG1fdmFyaWFudHMpCisgICAgICAgIHZhcmlhbnQubWFya0lmQ2hlYXAo
dmlzaXRvcik7Cit9CisKK2Jvb2wgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6OmZpbmFsaXplKFZN
JiB2bSkKK3sKKyAgICBmb3IgKGF1dG8mIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKSB7CisgICAgICAg
IGlmICghdmFyaWFudC5maW5hbGl6ZSh2bSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVz
OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KCIoIik7Cisg
ICAgc3dpdGNoIChtX3N0YXRlKSB7CisgICAgY2FzZSBOb0luZm9ybWF0aW9uOgorICAgICAgICBv
dXQucHJpbnQoIk5vSW5mb3JtYXRpb24iKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTaW1w
bGU6CisgICAgICAgIG91dC5wcmludCgiU2ltcGxlIik7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgTGlrZWx5VGFrZXNTbG93UGF0aDoKKyAgICAgICAgb3V0LnByaW50KCJMaWtlbHlUYWtlc1Ns
b3dQYXRoIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgT2JzZXJ2ZWRUYWtlc1Nsb3dQYXRo
OgorICAgICAgICBvdXQucHJpbnQoIk9ic2VydmVkVGFrZXNTbG93UGF0aCIpOworICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgb3V0LnByaW50KCIsICIsIGxpc3REdW1wKG1fdmFyaWFudHMpLCAi
KSIpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDkwYjhmNDM5NDQ1ZmRlOTE1NDc5M2NhNTczOWQzOGYxYjIzYjg4NgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFN0YXR1
cy5oCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5B
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlm
aWVyLmgiCisjaW5jbHVkZSAiQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50LmgiCisjaW5jbHVkZSAi
Q29kZU9yaWdpbi5oIgorI2luY2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIKKyNpbmNsdWRlICJF
eGl0RmxhZy5oIgorI2luY2x1ZGUgIklDU3RhdHVzTWFwLmgiCisjaW5jbHVkZSAiU3R1YkluZm9T
dW1tYXJ5LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBBY2Nlc3NDYXNlOworY2xhc3Mg
Q29kZUJsb2NrOworY2xhc3MgU3RydWN0dXJlU3R1YkluZm87CisKK2NsYXNzIENoZWNrUHJpdmF0
ZUJyYW5kU3RhdHVzIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1Ymxp
YzoKKyAgICBlbnVtIFN0YXRlIDogdWludDhfdCB7CisgICAgICAgIC8vIEl0J3MgdW5jYWNoZWQg
c28gd2UgaGF2ZSBubyBpbmZvcm1hdGlvbi4KKyAgICAgICAgTm9JbmZvcm1hdGlvbiwKKyAgICAg
ICAgLy8gSXQncyBjYWNoZWQgZm9yIGEgc2ltcGxlIGFjY2Vzcy4KKyAgICAgICAgU2ltcGxlLAor
ICAgICAgICAvLyBJdCB3aWxsIGxpa2VseSB0YWtlIHRoZSBzbG93IHBhdGguCisgICAgICAgIExp
a2VseVRha2VzU2xvd1BhdGgsCisgICAgICAgIC8vIEl0IGhhcyBiZWVuIHNlZW4gdG8gdGFrZSB0
aGUgc2xvdyBwYXRoLgorICAgICAgICBPYnNlcnZlZFRha2VzU2xvd1BhdGgsCisgICAgfTsKKwor
ICAgIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzKCkKKyAgICAgICAgOiBtX3N0YXRlKE5vSW5mb3Jt
YXRpb24pCisgICAgeworICAgIH0KKworICAgIGV4cGxpY2l0IENoZWNrUHJpdmF0ZUJyYW5kU3Rh
dHVzKFN0YXRlIHN0YXRlKQorICAgICAgICA6IG1fc3RhdGUoc3RhdGUpCisgICAgeworICAgICAg
ICBBU1NFUlQoc3RhdGUgIT0gU2ltcGxlKTsKKyAgICB9CisKKyAgICBzdGF0aWMgQ2hlY2tQcml2
YXRlQnJhbmRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIElDU3Rh
dHVzTWFwJiBiYXNlbGluZU1hcCwgSUNTdGF0dXNDb250ZXh0U3RhY2smIGRmZ0NvbnRleHRTdGFj
aywgQ29kZU9yaWdpbik7CisKKyAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGU7IH0KKworICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlICE9IE5vSW5m
b3JtYXRpb247IH0KKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFpc1NldCgp
OyB9CisgICAgYm9vbCBvYnNlcnZlZFNsb3dQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9
PSBPYnNlcnZlZFRha2VzU2xvd1BhdGg7IH0KKyAgICBib29sIGlzU2ltcGxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZSA9PSBTaW1wbGU7IH0KKyAgICBjb25zdCBWZWN0b3I8Q2hlY2tQcml2YXRl
QnJhbmRWYXJpYW50LCAxPiYgdmFyaWFudHMoKSB7IHJldHVybiBtX3ZhcmlhbnRzOyB9CisgICAg
Q2FjaGVhYmxlSWRlbnRpZmllciBzaW5nbGVJZGVudGlmaWVyKCkgY29uc3Q7CisKKyAgICBDaGVj
a1ByaXZhdGVCcmFuZFN0YXR1cyBzbG93VmVyc2lvbigpIGNvbnN0OworCisgICAgLy8gQXR0ZW1w
dHMgdG8gcmVkdWNlIHRoZSBzZXQgb2YgdmFyaWFudHMgdG8gZml0IHRoZSBnaXZlbiBzdHJ1Y3R1
cmUgc2V0LiBUaGlzIG1heSBiZSBhcHByb3hpbWF0ZS4KKyAgICB2b2lkIGZpbHRlcihjb25zdCBT
dHJ1Y3R1cmVTZXQmKTsKKworICAgIHZvaWQgdmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImKTsK
KyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7CisgICAgYm9vbCBmaW5hbGl6ZShW
TSYpOworCisgICAgYm9vbCBhcHBlbmRWYXJpYW50KGNvbnN0IENoZWNrUHJpdmF0ZUJyYW5kVmFy
aWFudCYpOworCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisKK3ByaXZhdGU6
CisgICAgZXhwbGljaXQgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMoU3R1YkluZm9TdW1tYXJ5LCBT
dHJ1Y3R1cmVTdHViSW5mbyYpOworICAgIHZvaWQgbWVyZ2UoY29uc3QgQ2hlY2tQcml2YXRlQnJh
bmRTdGF0dXMmKTsKKworICAgIHN0YXRpYyBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyBjb21wdXRl
Rm9yQmFzZWxpbmUoQ29kZUJsb2NrKiwgSUNTdGF0dXNNYXAmLCBCeXRlY29kZUluZGV4LCBFeGl0
RmxhZyk7CisjaWYgRU5BQkxFKEpJVCkKKyAgICBzdGF0aWMgQ2hlY2tQcml2YXRlQnJhbmRTdGF0
dXMgY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soCisgICAgICAgIGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgU3RydWN0
dXJlU3R1YkluZm8qKTsKKyNlbmRpZgorCisgICAgVmVjdG9yPENoZWNrUHJpdmF0ZUJyYW5kVmFy
aWFudCwgMT4gbV92YXJpYW50czsKKyAgICBTdGF0ZSBtX3N0YXRlOworfTsKKworfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hl
Y2tQcml2YXRlQnJhbmRWYXJpYW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5ZWM3YWVmNWU1MTRk
Y2IyMzA4MmJiN2MwNzBhYmNhN2U3ZTUzNmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50LmNwcApAQCAtMCww
ICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5BLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50Lmgi
CisKKyNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50OjpDaGVja1ByaXZhdGVCcmFuZFZhcmlh
bnQoQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0
cnVjdHVyZVNldCkKKyAgICA6IG1fc3RydWN0dXJlU2V0KHN0cnVjdHVyZVNldCkKKyAgICAsIG1f
aWRlbnRpZmllcihXVEZNb3ZlKGlkZW50aWZpZXIpKQoreyB9CisKK0NoZWNrUHJpdmF0ZUJyYW5k
VmFyaWFudDo6fkNoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudCgpIHsgfQorCitDaGVja1ByaXZhdGVC
cmFuZFZhcmlhbnQ6OkNoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudChjb25zdCBDaGVja1ByaXZhdGVC
cmFuZFZhcmlhbnQmIG90aGVyKQoreworICAgICp0aGlzID0gb3RoZXI7Cit9CisKK2Jvb2wgQ2hl
Y2tQcml2YXRlQnJhbmRWYXJpYW50OjphdHRlbXB0VG9NZXJnZShjb25zdCBDaGVja1ByaXZhdGVC
cmFuZFZhcmlhbnQmIG90aGVyKQoreworICAgIGlmICghIW1faWRlbnRpZmllciAhPSAhIW90aGVy
Lm1faWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1faWRlbnRp
ZmllciAmJiAobV9pZGVudGlmaWVyICE9IG90aGVyLm1faWRlbnRpZmllcikpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIG1fc3RydWN0dXJlU2V0Lm1lcmdlKG90aGVyLm1fc3RydWN0dXJl
U2V0KTsKKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIENoZWNrUHJpdmF0ZUJyYW5kVmFy
aWFudDo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgbV9zdHJ1Y3R1
cmVTZXQubWFya0lmQ2hlYXAodmlzaXRvcik7Cit9CisKK2Jvb2wgQ2hlY2tQcml2YXRlQnJhbmRW
YXJpYW50OjpmaW5hbGl6ZShWTSYgdm0pCit7CisgICAgaWYgKCFtX3N0cnVjdHVyZVNldC5pc1N0
aWxsQWxpdmUodm0pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK3ZvaWQgQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50Ojp2aXNpdEFnZ3JlZ2F0ZShTbG90Vmlz
aXRvciYgdmlzaXRvcikKK3sKKyAgICBtX2lkZW50aWZpZXIudmlzaXRBZ2dyZWdhdGUodmlzaXRv
cik7Cit9CisKK3ZvaWQgQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50OjpkdW1wKFByaW50U3RyZWFt
JiBvdXQpIGNvbnN0Cit7CisgICAgZHVtcEluQ29udGV4dChvdXQsIG51bGxwdHIpOworfQorCit2
b2lkIENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudDo6ZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYg
b3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3QKK3sKKyAgICBvdXQucHJpbnQoIjxpZD0n
IiwgbV9pZGVudGlmaWVyLCAiJywgIiwgaW5Db250ZXh0KHN0cnVjdHVyZVNldCgpLCBjb250ZXh0
KSwgIj4iKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZmU0YzQ2ZmZlZWU1Njc3ZDI0NzU4YzYwZmY2NmVlNmJmMzM5MmQ3OAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DaGVja1ByaXZhdGVCcmFu
ZFZhcmlhbnQuaApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2Fs
aWEgUy5BLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50
aWZpZXIuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVTZXQuaCIKKyNpbmNsdWRlIDx3dGYvQm94Lmg+
CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBDaGVja1ByaXZhdGVCcmFuZFN0YXR1czsKKwor
Y2xhc3MgQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK3B1YmxpYzoKKyAgICBDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQoQ2FjaGVhYmxlSWRl
bnRpZmllciwgY29uc3QgU3RydWN0dXJlU2V0JiA9IFN0cnVjdHVyZVNldCgpKTsKKworICAgIH5D
aGVja1ByaXZhdGVCcmFuZFZhcmlhbnQoKTsKKworICAgIENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFu
dChjb25zdCBDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQmKTsKKworICAgIGNvbnN0IFN0cnVjdHVy
ZVNldCYgc3RydWN0dXJlU2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmVTZXQ7IH0KKyAg
ICBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCgpIHsgcmV0dXJuIG1fc3RydWN0dXJlU2V0OyB9
CisKKyAgICBib29sIGF0dGVtcHRUb01lcmdlKGNvbnN0IENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFu
dCYgb3RoZXIpOworCisgICAgdm9pZCB2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYpOworICAg
IHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKTsKKyAgICBib29sIGZpbmFsaXplKFZNJik7
CisKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICB2b2lkIGR1bXBJbkNv
bnRleHQoUHJpbnRTdHJlYW0mLCBEdW1wQ29udGV4dCopIGNvbnN0OworCisgICAgQ2FjaGVhYmxl
SWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisK
KyAgICBib29sIG92ZXJsYXBzKGNvbnN0IENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudCYgb3RoZXIp
CisgICAgeworICAgICAgICBpZiAoISFtX2lkZW50aWZpZXIgIT0gISFvdGhlci5tX2lkZW50aWZp
ZXIpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKG1faWRlbnRpZmllcikg
eworICAgICAgICAgICAgaWYgKG1faWRlbnRpZmllciAhPSBvdGhlci5tX2lkZW50aWZpZXIpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBz
dHJ1Y3R1cmVTZXQoKS5vdmVybGFwcyhvdGhlci5zdHJ1Y3R1cmVTZXQoKSk7CisgICAgfQorCitw
cml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBDaGVja1ByaXZhdGVCcmFuZFN0YXR1czsKKworICAg
IFN0cnVjdHVyZVNldCBtX3N0cnVjdHVyZVNldDsKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIG1f
aWRlbnRpZmllcjsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBhZjJhYzRjOTFiYjcyMzJjNGJlMzk0
OTU5NzcxZjA5YTMyMThkZDQ4Li4wNjJkZmFjMmU0OWVmMDllOGNhOWJkOGM5NmQ2YzU0YjY2YjBl
MjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApA
QCAtNTQ0LDYgKzU0NCw5IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIExJTkso
T3BQdXRCeVZhbERpcmVjdCkKICAgICAgICAgTElOSyhPcFB1dFByaXZhdGVOYW1lKQogCisgICAg
ICAgIExJTksoT3BTZXRQcml2YXRlQnJhbmQpCisgICAgICAgIExJTksoT3BDaGVja1ByaXZhdGVC
cmFuZCkKKwogICAgICAgICBMSU5LKE9wTmV3QXJyYXkpCiAgICAgICAgIExJTksoT3BOZXdBcnJh
eVdpdGhTaXplKQogICAgICAgICBMSU5LKE9wTmV3QXJyYXlCdWZmZXIsIGFycmF5QWxsb2NhdGlv
blByb2ZpbGUpCkBAIC0xMzM4LDYgKzEzNDEsMzMgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXpl
TExJbnRJbmxpbmVDYWNoZXMoKQogICAgICAgICAgICAgbWV0YWRhdGEubV9wcm9wZXJ0eS5jbGVh
cigpOwogICAgICAgICB9KTsKIAorICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wU2V0UHJp
dmF0ZUJyYW5kPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICBTdHJ1Y3R1cmVJ
RCBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQ7CisgICAgICAgICAg
ICBTdHJ1Y3R1cmVJRCBuZXdTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQ7
CisgICAgICAgICAgICBKU0NlbGwqIGJyYW5kID0gbWV0YWRhdGEubV9icmFuZC5nZXQoKTsKKyAg
ICAgICAgICAgIGlmICgoIW9sZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVh
cC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKSkpCisgICAgICAgICAgICAg
ICAgJiYgKCFicmFuZCB8fCB2bS5oZWFwLmlzTWFya2VkKGJyYW5kKSkKKyAgICAgICAgICAgICAg
ICAmJiAoIW5ld1N0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1
cmVJRFRhYmxlKCkuZ2V0KG5ld1N0cnVjdHVyZUlEKSkpKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiQ2xl
YXJpbmcgTExJbnQgc2V0X3ByaXZhdGVfYnJhbmQgdHJhbnNpdGlvbi4iKTsKKyAgICAgICAgICAg
IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQgPSAwOworICAgICAgICAgICAgbWV0YWRhdGEubV9u
ZXdTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgICAgICBtZXRhZGF0YS5tX2JyYW5kLmNsZWFyKCk7
CisgICAgICAgIH0pOworCisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BDaGVja1ByaXZh
dGVCcmFuZD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeworICAgICAgICAgICAgU3RydWN0dXJlSUQg
c3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX3N0cnVjdHVyZUlEOworICAgICAgICAgICAgSlNDZWxs
KiBicmFuZCA9IG1ldGFkYXRhLm1fYnJhbmQuZ2V0KCk7CisgICAgICAgICAgICBpZiAoKCFzdHJ1
Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdl
dChzdHJ1Y3R1cmVJRCkpKQorICAgICAgICAgICAgICAgICYmICghYnJhbmQgfHwgdm0uaGVhcC5p
c01hcmtlZChicmFuZCkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAg
ZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiQ2xlYXJpbmcgTExJbnQgc2V0X3By
aXZhdGVfYnJhbmQgdHJhbnNpdGlvbi4iKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fc3RydWN0
dXJlSUQgPSAwOworICAgICAgICAgICAgbWV0YWRhdGEubV9icmFuZC5jbGVhcigpOworICAgICAg
ICB9KTsKKwogICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wVG9UaGlzPihbJl0gKGF1dG8m
IG1ldGFkYXRhKSB7CiAgICAgICAgICAgICBpZiAoIW1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJl
SUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobWV0
YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRCkpKQogICAgICAgICAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKaW5kZXgg
NDllZGQ1Mjg1ZDVjMmMyOGIxYzlhNGJjZWVmNDUxNzE5OTBiZTkxYy4uY2Q1OWZiNGE3MzNlOTI0
ZTRlYjEzYTljMDA2OTMwNDJkMzlkOWRlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKQEAgLTM2LDkgKzM2LDEwIEBAIGVudW0gY2xhc3Mg
TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgOiB1aW50OF90IHsgTm8sIFllcyB9OwogLy8gRklY
TUU6IFRoZXNlIGZsYWdzLCBQYXJzZXJNb2RlcyBhbmQgcHJvcGFnYXRpb24gdG8gWFhYQ29kZUJs
b2NrcyBzaG91bGQgYmUgcmVvcmdhbml6ZWQuCiAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTUxNTQ3CiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1
dGFibGVJbmZvKGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0
aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgSlNQYXJzZXJTY3Jp
cHRNb2RlIHNjcmlwdE1vZGUsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIFNvdXJjZVBhcnNl
TW9kZSBwYXJzZU1vZGUsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29s
IGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNDbGFzc0NvbnRleHQsIEV2YWxDb250ZXh0
VHlwZSBldmFsQ29udGV4dFR5cGUpCisgICAgRXhlY3V0YWJsZUluZm8oYm9vbCB1c2VzRXZhbCwg
Ym9vbCBpc0NvbnN0cnVjdG9yLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRS
ZXF1aXJlbWVudCwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JLaW5kIGNvbnN0
cnVjdG9yS2luZCwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIFN1cGVyQmluZGluZyBz
dXBlckJpbmRpbmcsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIERlcml2ZWRDb250ZXh0VHlw
ZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXND
bGFzc0NvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUpCiAgICAgICAgIDog
bV91c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzQ29uc3RydWN0b3IoaXNDb25zdHJ1
Y3RvcikKKyAgICAgICAgLCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50KHN0YXRpY19jYXN0PHVu
c2lnbmVkPihwcml2YXRlQnJhbmRSZXF1aXJlbWVudCkpCiAgICAgICAgICwgbV9pc0J1aWx0aW5G
dW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikKICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkKICAgICAgICAgLCBtX3N1cGVy
QmluZGluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3VwZXJCaW5kaW5nKSkKQEAgLTU3LDYgKzU4
LDcgQEAgc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKIAogICAgIGJvb2wgdXNlc0V2YWwoKSBjb25z
dCB7IHJldHVybiBtX3VzZXNFdmFsOyB9CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0NvbnN0cnVjdG9yOyB9CisgICAgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQg
cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxQcml2
YXRlQnJhbmRSZXF1aXJlbWVudD4obV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7IH0KICAgICBi
b29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlv
bjsgfQogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQogICAg
IFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxT
dXBlckJpbmRpbmc+KG1fc3VwZXJCaW5kaW5nKTsgfQpAQCAtNzEsNiArNzMsNyBAQCBzdHJ1Y3Qg
RXhlY3V0YWJsZUluZm8gewogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX3VzZXNFdmFsIDogMTsK
ICAgICB1bnNpZ25lZCBtX2lzQ29uc3RydWN0b3IgOiAxOworICAgIHVuc2lnbmVkIG1fcHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQgOiAxOwogICAgIHVuc2lnbmVkIG1faXNCdWlsdGluRnVuY3Rpb24g
OiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKICAgICB1bnNpZ25lZCBt
X3N1cGVyQmluZGluZyA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAppbmRleCAxMjAyZjI3OTU1YjU1NmExMTIwY2FmZWIw
NTQ2ZTBhYzdkZDlmZWZlLi5hOGI4MjAzZWU5OWI1NWZkNTkzYzI5ZmFjYThmNGJjZjQ1MzQ3YTc4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNB
Y2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhp
Y0FjY2Vzcy5jcHAKQEAgLTQ2OSw3ICs0NjksOCBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBv
bHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwog
ICAgIGFsbG9jYXRvci5sb2NrKHN0YXRlLmJhc2VHUFIpOwogICAgIGlmIChzdGF0ZS51LnRoaXNH
UFIgIT0gSW52YWxpZEdQUlJlZykKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3RhdGUudS50aGlz
R1BSKTsKLSAgICBhbGxvY2F0b3IubG9jayhzdGF0ZS52YWx1ZVJlZ3MpOworICAgIGlmIChzdGF0
ZS52YWx1ZVJlZ3MpCisgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0YXRlLnZhbHVlUmVncyk7CiAj
aWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlVGFn
R1BSKTsKICAgICBpZiAoc3R1YkluZm8udi50aGlzVGFnR1BSICE9IEludmFsaWRHUFJSZWcpCkBA
IC04NTIsNiArODUzLDEyIEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBB
Y2Nlc3NDYXNlOjpBY2Nlc3NUeXBlIHR5cGUpCiAgICAgY2FzZSBBY2Nlc3NDYXNlOjpJbk1pc3M6
CiAgICAgICAgIG91dC5wcmludCgiSW5NaXNzIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNl
IEFjY2Vzc0Nhc2U6OkNoZWNrUHJpdmF0ZUJyYW5kOgorICAgICAgICBvdXQucHJpbnQoIkNoZWNr
UHJpdmF0ZUJyYW5kIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEFjY2Vzc0Nhc2U6OlNl
dFByaXZhdGVCcmFuZDoKKyAgICAgICAgb3V0LnByaW50KCJTZXRQcml2YXRlQnJhbmQiKTsKKyAg
ICAgICAgcmV0dXJuOwogICAgIGNhc2UgQWNjZXNzQ2FzZTo6QXJyYXlMZW5ndGg6CiAgICAgICAg
IG91dC5wcmludCgiQXJyYXlMZW5ndGgiKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCmluZGV4IGQ2
MTVhMTNkOWMzYzQ3NWE2MTZjMmU1NDc3Mjk1NTQ2MTY5YzQ0NGQuLjdmZjUwZTQ4NTc4YTNmNjcz
MDQyZTc0OTM5YWMyYTJhZDY1NjQ2MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKQEAgLTM1LDYgKzM1LDggQEAgUmVjb3Jk
ZWRTdGF0dXNlcyYgUmVjb3JkZWRTdGF0dXNlczo6b3BlcmF0b3I9KFJlY29yZGVkU3RhdHVzZXMm
JiBvdGhlcikKICAgICBwdXRzID0gV1RGTW92ZShvdGhlci5wdXRzKTsKICAgICBpbnMgPSBXVEZN
b3ZlKG90aGVyLmlucyk7CiAgICAgZGVsZXRlcyA9IFdURk1vdmUob3RoZXIuZGVsZXRlcyk7Cisg
ICAgY2hlY2tQcml2YXRlQnJhbmRzID0gV1RGTW92ZShvdGhlci5jaGVja1ByaXZhdGVCcmFuZHMp
OworICAgIHNldFByaXZhdGVCcmFuZHMgPSBXVEZNb3ZlKG90aGVyLnNldFByaXZhdGVCcmFuZHMp
OwogICAgIHNocmlua1RvRml0KCk7CiAgICAgcmV0dXJuICp0aGlzOwogfQpAQCAtODQsMTIgKzg2
LDMyIEBAIERlbGV0ZUJ5U3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGREZWxldGVCeVN0YXR1
cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAor
Q2hlY2tQcml2YXRlQnJhbmRTdGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFkZENoZWNrUHJpdmF0
ZUJyYW5kU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIGNvbnN0IENoZWNrUHJp
dmF0ZUJyYW5kU3RhdHVzJiBzdGF0dXMpCit7CisgICAgYXV0byBzdGF0dXNQdHIgPSBtYWtlVW5p
cXVlPENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzPihzdGF0dXMpOworICAgIENoZWNrUHJpdmF0ZUJy
YW5kU3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQdHIuZ2V0KCk7CisgICAgY2hlY2tQcml2YXRlQnJh
bmRzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihjb2RlT3JpZ2luLCBXVEZNb3ZlKHN0YXR1c1B0cikp
KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitTZXRQcml2YXRlQnJhbmRTdGF0dXMqIFJlY29y
ZGVkU3RhdHVzZXM6OmFkZFNldFByaXZhdGVCcmFuZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBj
b2RlT3JpZ2luLCBjb25zdCBTZXRQcml2YXRlQnJhbmRTdGF0dXMmIHN0YXR1cykKK3sKKyAgICBh
dXRvIHN0YXR1c1B0ciA9IG1ha2VVbmlxdWU8U2V0UHJpdmF0ZUJyYW5kU3RhdHVzPihzdGF0dXMp
OworICAgIFNldFByaXZhdGVCcmFuZFN0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdldCgpOwor
ICAgIHNldFByaXZhdGVCcmFuZHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdU
Rk1vdmUoc3RhdHVzUHRyKSkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHZvaWQgUmVjb3Jk
ZWRTdGF0dXNlczo6dmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImIHNsb3RWaXNpdG9yKQogewog
ICAgIGZvciAoYXV0byYgcGFpciA6IGdldHMpCiAgICAgICAgIHBhaXIuc2Vjb25kLT52aXNpdEFn
Z3JlZ2F0ZShzbG90VmlzaXRvcik7CiAgICAgZm9yIChhdXRvJiBwYWlyIDogZGVsZXRlcykKICAg
ICAgICAgcGFpci5zZWNvbmQtPnZpc2l0QWdncmVnYXRlKHNsb3RWaXNpdG9yKTsKKyAgICBmb3Ig
KGF1dG8mIHBhaXIgOiBjaGVja1ByaXZhdGVCcmFuZHMpCisgICAgICAgIHBhaXIuc2Vjb25kLT52
aXNpdEFnZ3JlZ2F0ZShzbG90VmlzaXRvcik7CisgICAgZm9yIChhdXRvJiBwYWlyIDogc2V0UHJp
dmF0ZUJyYW5kcykKKyAgICAgICAgcGFpci5zZWNvbmQtPnZpc2l0QWdncmVnYXRlKHNsb3RWaXNp
dG9yKTsKIH0KIAogdm9pZCBSZWNvcmRlZFN0YXR1c2VzOjptYXJrSWZDaGVhcChTbG90VmlzaXRv
ciYgc2xvdFZpc2l0b3IpCkBAIC0xMDIsNiArMTI0LDEwIEBAIHZvaWQgUmVjb3JkZWRTdGF0dXNl
czo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHNsb3RWaXNpdG9yKQogICAgICAgICBwYWlyLnNl
Y29uZC0+bWFya0lmQ2hlYXAoc2xvdFZpc2l0b3IpOwogICAgIGZvciAoYXV0byYgcGFpciA6IGRl
bGV0ZXMpCiAgICAgICAgIHBhaXIuc2Vjb25kLT5tYXJrSWZDaGVhcChzbG90VmlzaXRvcik7Cisg
ICAgZm9yIChhdXRvJiBwYWlyIDogY2hlY2tQcml2YXRlQnJhbmRzKQorICAgICAgICBwYWlyLnNl
Y29uZC0+bWFya0lmQ2hlYXAoc2xvdFZpc2l0b3IpOworICAgIGZvciAoYXV0byYgcGFpciA6IHNl
dFByaXZhdGVCcmFuZHMpCisgICAgICAgIHBhaXIuc2Vjb25kLT5tYXJrSWZDaGVhcChzbG90Vmlz
aXRvcik7CiB9CiAKIHZvaWQgUmVjb3JkZWRTdGF0dXNlczo6ZmluYWxpemVXaXRob3V0RGVsZXRp
bmcoVk0mIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jl
Y29yZGVkU3RhdHVzZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRl
ZFN0YXR1c2VzLmgKaW5kZXggOWU3MDU1ZDI0M2YyNGFhNmFmNWFhMDkyYWQzMDJlZjE1YThkMDU3
NS4uZTg0M2I2NjgwMWUwMTE3YzllZjM3OWJiMDgzYzQ5NGQ3YjExODU3NCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5oCkBAIC0yNiwx
MCArMjYsMTIgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ2FsbExpbmtTdGF0dXMuaCIK
KyNpbmNsdWRlICJDaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5oIgogI2luY2x1ZGUgIkRlbGV0ZUJ5
U3RhdHVzLmgiCiAjaW5jbHVkZSAiR2V0QnlTdGF0dXMuaCIKICNpbmNsdWRlICJJbkJ5SWRTdGF0
dXMuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCisjaW5jbHVkZSAiU2V0UHJpdmF0ZUJy
YW5kU3RhdHVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00OSw2ICs1MSw4IEBAIHN0cnVj
dCBSZWNvcmRlZFN0YXR1c2VzIHsKICAgICBQdXRCeUlkU3RhdHVzKiBhZGRQdXRCeUlkU3RhdHVz
KGNvbnN0IENvZGVPcmlnaW4mLCBjb25zdCBQdXRCeUlkU3RhdHVzJik7CiAgICAgSW5CeUlkU3Rh
dHVzKiBhZGRJbkJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYsIGNvbnN0IEluQnlJZFN0YXR1
cyYpOwogICAgIERlbGV0ZUJ5U3RhdHVzKiBhZGREZWxldGVCeVN0YXR1cyhjb25zdCBDb2RlT3Jp
Z2luJiwgY29uc3QgRGVsZXRlQnlTdGF0dXMmKTsKKyAgICBDaGVja1ByaXZhdGVCcmFuZFN0YXR1
cyogYWRkQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYsIGNvbnN0IENo
ZWNrUHJpdmF0ZUJyYW5kU3RhdHVzJik7CisgICAgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzKiBhZGRT
ZXRQcml2YXRlQnJhbmRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYsIGNvbnN0IFNldFByaXZhdGVC
cmFuZFN0YXR1cyYpOwogICAgIAogICAgIHZvaWQgdmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3Im
KTsKICAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7CkBAIC02Niw2ICs3MCw4IEBA
IHN0cnVjdCBSZWNvcmRlZFN0YXR1c2VzIHsKICAgICAgICAgZnVuYyhwdXRzKTsKICAgICAgICAg
ZnVuYyhpbnMpOwogICAgICAgICBmdW5jKGRlbGV0ZXMpOworICAgICAgICBmdW5jKGNoZWNrUHJp
dmF0ZUJyYW5kcyk7CisgICAgICAgIGZ1bmMoc2V0UHJpdmF0ZUJyYW5kcyk7CiAgICAgfQogICAg
IAogICAgIFZlY3RvcjxzdGQ6OnBhaXI8Q29kZU9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPENhbGxM
aW5rU3RhdHVzPj4+IGNhbGxzOwpAQCAtNzMsNiArNzksOCBAQCBzdHJ1Y3QgUmVjb3JkZWRTdGF0
dXNlcyB7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8
UHV0QnlJZFN0YXR1cz4+PiBwdXRzOwogICAgIFZlY3RvcjxzdGQ6OnBhaXI8Q29kZU9yaWdpbiwg
c3RkOjp1bmlxdWVfcHRyPEluQnlJZFN0YXR1cz4+PiBpbnM7CiAgICAgVmVjdG9yPHN0ZDo6cGFp
cjxDb2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8RGVsZXRlQnlTdGF0dXM+Pj4gZGVsZXRlczsK
KyAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxDaGVja1By
aXZhdGVCcmFuZFN0YXR1cz4+PiBjaGVja1ByaXZhdGVCcmFuZHM7CisgICAgVmVjdG9yPHN0ZDo6
cGFpcjxDb2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8U2V0UHJpdmF0ZUJyYW5kU3RhdHVzPj4+
IHNldFByaXZhdGVCcmFuZHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TZXRQcml2YXRlQnJhbmRTdGF0dXMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NldFByaXZhdGVCcmFuZFN0YXR1cy5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTZjZjc0YmU1NWVjMmQ4YjlkMmU4OTM2YTIxNmIzOGEzNTlkOGI3Ngot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TZXRQcml2
YXRlQnJhbmRTdGF0dXMuY3BwCkBAIC0wLDAgKzEsMjc5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAyMSBJZ2FsaWEgUy5BLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
U2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmgiCisKKyNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVy
SW5saW5lcy5oIgorI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIklDU3RhdHVzVXRp
bHMuaCIKKyNpbmNsdWRlICJQb2x5bW9ycGhpY0FjY2Vzcy5oIgorI2luY2x1ZGUgIlN0cnVjdHVy
ZVN0dWJJbmZvLmgiCisjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+CisKK25hbWVzcGFjZSBKU0Mg
eworCitib29sIFNldFByaXZhdGVCcmFuZFN0YXR1czo6YXBwZW5kVmFyaWFudChjb25zdCBTZXRQ
cml2YXRlQnJhbmRWYXJpYW50JiB2YXJpYW50KQoreworICAgIHJldHVybiBhcHBlbmRJQ1N0YXR1
c1ZhcmlhbnQobV92YXJpYW50cywgdmFyaWFudCk7Cit9CisKK1NldFByaXZhdGVCcmFuZFN0YXR1
cyBTZXRQcml2YXRlQnJhbmRTdGF0dXM6OmNvbXB1dGVGb3JCYXNlbGluZShDb2RlQmxvY2sqIGJh
c2VsaW5lQmxvY2ssIElDU3RhdHVzTWFwJiBtYXAsIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRl
eCwgRXhpdEZsYWcgZGlkRXhpdCkKK3sKKyAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGJh
c2VsaW5lQmxvY2stPm1fbG9jayk7CisKKyAgICBTZXRQcml2YXRlQnJhbmRTdGF0dXMgcmVzdWx0
OworCisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZv
V2l0aG91dEV4aXRTaXRlRmVlZGJhY2soCisgICAgICAgIGxvY2tlciwgYmFzZWxpbmVCbG9jaywg
bWFwLmdldChDb2RlT3JpZ2luKGJ5dGVjb2RlSW5kZXgpKS5zdHViSW5mbyk7CisKKyAgICBpZiAo
ZGlkRXhpdCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5zbG93VmVyc2lvbigpOworI2Vsc2UKKyAg
ICBVTlVTRURfUEFSQU0obWFwKTsKKyAgICBVTlVTRURfUEFSQU0oZGlkRXhpdCk7CisgICAgVU5V
U0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOworI2VuZGlmCisKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCisjaWYgRU5BQkxFKEpJVCkKK1NldFByaXZhdGVCcmFuZFN0YXR1czo6U2V0UHJpdmF0ZUJy
YW5kU3RhdHVzKFN0dWJJbmZvU3VtbWFyeSBzdW1tYXJ5LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1
YkluZm8pCit7CisgICAgc3dpdGNoIChzdW1tYXJ5KSB7CisgICAgY2FzZSBTdHViSW5mb1N1bW1h
cnk6Ok5vSW5mb3JtYXRpb246CisgICAgICAgIG1fc3RhdGUgPSBOb0luZm9ybWF0aW9uOworICAg
ICAgICByZXR1cm47CisgICAgY2FzZSBTdHViSW5mb1N1bW1hcnk6OlNpbXBsZToKKyAgICBjYXNl
IFN0dWJJbmZvU3VtbWFyeTo6TWFrZXNDYWxsczoKKyAgICBjYXNlIFN0dWJJbmZvU3VtbWFyeTo6
VGFrZXNTbG93UGF0aEFuZE1ha2VzQ2FsbHM6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFN0dWJJbmZvU3VtbWFyeTo6VGFr
ZXNTbG93UGF0aDoKKyAgICAgICAgbV9zdGF0ZSA9IHN0dWJJbmZvLnRvb2tTbG93UGF0aCA/IE9i
c2VydmVkVGFrZXNTbG93UGF0aCA6IExpa2VseVRha2VzU2xvd1BhdGg7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworU2V0UHJp
dmF0ZUJyYW5kU3RhdHVzIFNldFByaXZhdGVCcmFuZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZv
V2l0aG91dEV4aXRTaXRlRmVlZGJhY2soCisgICAgY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwg
Q29kZUJsb2NrKiBibG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvKQoreworICAgIFN0
dWJJbmZvU3VtbWFyeSBzdW1tYXJ5ID0gU3RydWN0dXJlU3R1YkluZm86OnN1bW1hcnkoYmxvY2st
PnZtKCksIHN0dWJJbmZvKTsKKyAgICBpZiAoIWlzSW5saW5lYWJsZShzdW1tYXJ5KSkKKyAgICAg
ICAgcmV0dXJuIFNldFByaXZhdGVCcmFuZFN0YXR1cyhzdW1tYXJ5LCAqc3R1YkluZm8pOworCisg
ICAgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzIHJlc3VsdDsKKyAgICByZXN1bHQubV9zdGF0ZSA9IFNp
bXBsZTsKKyAgICBzd2l0Y2ggKHN0dWJJbmZvLT5jYWNoZVR5cGUoKSkgeworICAgIGNhc2UgQ2Fj
aGVUeXBlOjpVbnNldDoKKyAgICAgICAgcmV0dXJuIFNldFByaXZhdGVCcmFuZFN0YXR1cyhOb0lu
Zm9ybWF0aW9uKTsKKworICAgIGNhc2UgQ2FjaGVUeXBlOjpTdHViOiB7CisgICAgICAgIFBvbHlt
b3JwaGljQWNjZXNzKiBsaXN0ID0gc3R1YkluZm8tPnUuc3R1YjsKKworICAgICAgICBmb3IgKHVu
c2lnbmVkIGxpc3RJbmRleCA9IDA7IGxpc3RJbmRleCA8IGxpc3QtPnNpemUoKTsgKytsaXN0SW5k
ZXgpIHsKKyAgICAgICAgICAgIGNvbnN0IEFjY2Vzc0Nhc2UmIGFjY2VzcyA9IGxpc3QtPmF0KGxp
c3RJbmRleCk7CisKKyAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYWNjZXNzLnN0
cnVjdHVyZSgpOworICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSk7CisgICAgICAgICAgICBB
U1NFUlQoYWNjZXNzLnR5cGUoKSA9PSBBY2Nlc3NDYXNlOjpTZXRQcml2YXRlQnJhbmQpOworCisg
ICAgICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6c2V0QnJhbmRU
cmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlQ29uY3VycmVudGx5KHN0cnVjdHVyZSwgYWNj
ZXNzLmlkZW50aWZpZXIoKS51aWQoKSk7CisgICAgICAgICAgICBpZiAoIW5ld1N0cnVjdHVyZSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gU2V0UHJpdmF0ZUJyYW5kU3RhdHVzKEpTQzo6c2xvd1Zl
cnNpb24oc3VtbWFyeSksICpzdHViSW5mbyk7CisKKyAgICAgICAgICAgIFNldFByaXZhdGVCcmFu
ZFZhcmlhbnQgdmFyaWFudChhY2Nlc3MuaWRlbnRpZmllcigpLCBzdHJ1Y3R1cmUsIG5ld1N0cnVj
dHVyZSk7CisgICAgICAgICAgICBpZiAoIXJlc3VsdC5hcHBlbmRWYXJpYW50KHZhcmlhbnQpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBTZXRQcml2YXRlQnJhbmRTdGF0dXMoSlNDOjpzbG93VmVy
c2lvbihzdW1tYXJ5KSwgKnN0dWJJbmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfQorCisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIFNldFByaXZhdGVC
cmFuZFN0YXR1cyhKU0M6OnNsb3dWZXJzaW9uKHN1bW1hcnkpLCAqc3R1YkluZm8pOworICAgIH0K
KworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFNldFByaXZh
dGVCcmFuZFN0YXR1cygpOworfQorCitTZXRQcml2YXRlQnJhbmRTdGF0dXMgU2V0UHJpdmF0ZUJy
YW5kU3RhdHVzOjpjb21wdXRlRm9yKAorICAgIENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgSUNT
dGF0dXNNYXAmIGJhc2VsaW5lTWFwLAorICAgIElDU3RhdHVzQ29udGV4dFN0YWNrJiBjb250ZXh0
U3RhY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbikKK3sKKyAgICBCeXRlY29kZUluZGV4IGJ5dGVj
b2RlSW5kZXggPSBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgoKTsKKyAgICBFeGl0RmxhZyBkaWRF
eGl0ID0gaGFzQmFkQ2FjaGVFeGl0U2l0ZShiYXNlbGluZUJsb2NrLCBieXRlY29kZUluZGV4KTsK
KworICAgIGZvciAoSUNTdGF0dXNDb250ZXh0KiBjb250ZXh0IDogY29udGV4dFN0YWNrKSB7Cisg
ICAgICAgIElDU3RhdHVzIHN0YXR1cyA9IGNvbnRleHQtPmdldChjb2RlT3JpZ2luKTsKKworICAg
ICAgICBhdXRvIGJsZXNzID0gWyZdIChjb25zdCBTZXRQcml2YXRlQnJhbmRTdGF0dXMmIHJlc3Vs
dCkgLT4gU2V0UHJpdmF0ZUJyYW5kU3RhdHVzIHsKKyAgICAgICAgICAgIGlmICghY29udGV4dC0+
aXNJbmxpbmVkKGNvZGVPcmlnaW4pKSB7CisgICAgICAgICAgICAgICAgU2V0UHJpdmF0ZUJyYW5k
U3RhdHVzIGJhc2VsaW5lUmVzdWx0ID0gY29tcHV0ZUZvckJhc2VsaW5lKAorICAgICAgICAgICAg
ICAgICAgICBiYXNlbGluZUJsb2NrLCBiYXNlbGluZU1hcCwgYnl0ZWNvZGVJbmRleCwgZGlkRXhp
dCk7CisgICAgICAgICAgICAgICAgYmFzZWxpbmVSZXN1bHQubWVyZ2UocmVzdWx0KTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gYmFzZWxpbmVSZXN1bHQ7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAoZGlkRXhpdC5pc1NldChFeGl0RnJvbUlubGluZWQpKQorICAgICAgICAgICAgICAg
IHJldHVybiByZXN1bHQuc2xvd1ZlcnNpb24oKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHN0YXR1cy5zdHViSW5mbykgeworICAgICAgICAg
ICAgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzIHJlc3VsdDsKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvbnRleHQtPm9wdGltaXplZENvZGVC
bG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBjb21wdXRlRm9yU3R1Yklu
Zm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjaygKKyAgICAgICAgICAgICAgICAgICAgbG9ja2VyLCBj
b250ZXh0LT5vcHRpbWl6ZWRDb2RlQmxvY2ssIHN0YXR1cy5zdHViSW5mbyk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAocmVzdWx0LmlzU2V0KCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGJsZXNzKHJlc3VsdCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gY29tcHV0
ZUZvckJhc2VsaW5lKGJhc2VsaW5lQmxvY2ssIGJhc2VsaW5lTWFwLCBieXRlY29kZUluZGV4LCBk
aWRFeGl0KTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShKSVQpCisKK1NldFByaXZhdGVCcmFuZFN0
YXR1cyBTZXRQcml2YXRlQnJhbmRTdGF0dXM6OnNsb3dWZXJzaW9uKCkgY29uc3QKK3sKKyAgICBp
ZiAob2JzZXJ2ZWRTbG93UGF0aCgpKQorICAgICAgICByZXR1cm4gU2V0UHJpdmF0ZUJyYW5kU3Rh
dHVzKE9ic2VydmVkVGFrZXNTbG93UGF0aCk7CisgICAgcmV0dXJuIFNldFByaXZhdGVCcmFuZFN0
YXR1cyhMaWtlbHlUYWtlc1Nsb3dQYXRoKTsKK30KKwordm9pZCBTZXRQcml2YXRlQnJhbmRTdGF0
dXM6Om1lcmdlKGNvbnN0IFNldFByaXZhdGVCcmFuZFN0YXR1cyYgb3RoZXIpCit7CisgICAgaWYg
KG90aGVyLm1fc3RhdGUgPT0gTm9JbmZvcm1hdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byBtZXJnZVNsb3cgPSBbJl0gKCkgeworICAgICAgICBpZiAob2JzZXJ2ZWRTbG93UGF0aCgp
IHx8IG90aGVyLm9ic2VydmVkU2xvd1BhdGgoKSkKKyAgICAgICAgICAgICp0aGlzID0gU2V0UHJp
dmF0ZUJyYW5kU3RhdHVzKE9ic2VydmVkVGFrZXNTbG93UGF0aCk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICp0aGlzID0gU2V0UHJpdmF0ZUJyYW5kU3RhdHVzKExpa2VseVRha2VzU2xvd1Bh
dGgpOworICAgIH07CisKKyAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKKyAgICBjYXNlIE5vSW5mb3Jt
YXRpb246CisgICAgICAgICp0aGlzID0gb3RoZXI7CisgICAgICAgIHJldHVybjsKKworICAgIGNh
c2UgU2ltcGxlOgorICAgICAgICBpZiAobV9zdGF0ZSAhPSBvdGhlci5tX3N0YXRlKQorICAgICAg
ICAgICAgcmV0dXJuIG1lcmdlU2xvdygpOworCisgICAgICAgIGZvciAoYXV0byYgb3RoZXJWYXJp
YW50IDogb3RoZXIubV92YXJpYW50cykgeworICAgICAgICAgICAgaWYgKCFhcHBlbmRWYXJpYW50
KG90aGVyVmFyaWFudCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1lcmdlU2xvdygpOworICAg
ICAgICB9CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgTGlrZWx5VGFrZXNTbG93UGF0aDoK
KyAgICBjYXNlIE9ic2VydmVkVGFrZXNTbG93UGF0aDoKKyAgICAgICAgcmV0dXJuIG1lcmdlU2xv
dygpOworICAgIH0KKworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3Zv
aWQgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOjpmaWx0ZXIoY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1
Y3R1cmVTZXQpCit7CisgICAgaWYgKG1fc3RhdGUgIT0gU2ltcGxlKQorICAgICAgICByZXR1cm47
CisgICAgbV92YXJpYW50cy5yZW1vdmVBbGxNYXRjaGluZygKKyAgICAgICAgWyZdIChhdXRvJiB2
YXJpYW50KSAtPiBib29sIHsKKyAgICAgICAgICAgIHJldHVybiAhc3RydWN0dXJlU2V0LmNvbnRh
aW5zKHZhcmlhbnQub2xkU3RydWN0dXJlKCkpOworICAgICAgICB9KTsKKyAgICBpZiAobV92YXJp
YW50cy5pc0VtcHR5KCkpCisgICAgICAgIG1fc3RhdGUgPSBOb0luZm9ybWF0aW9uOworfQorCitD
YWNoZWFibGVJZGVudGlmaWVyIFNldFByaXZhdGVCcmFuZFN0YXR1czo6c2luZ2xlSWRlbnRpZmll
cigpIGNvbnN0Cit7CisgICAgaWYgKG1fdmFyaWFudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIENhY2hlYWJsZUlkZW50aWZpZXIgcmVzdWx0ID0gbV92YXJpYW50
cy5maXJzdCgpLmlkZW50aWZpZXIoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBtX3ZhcmlhbnRzLnNpemUoKTsg
KytpKSB7CisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IG1fdmFyaWFu
dHNbaV0uaWRlbnRpZmllcigpOworICAgICAgICBpZiAoIWlkZW50aWZpZXIpCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaWYgKGlkZW50aWZpZXIgIT0gcmVzdWx0KQorICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K3ZvaWQgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOjp2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYg
dmlzaXRvcikKK3sKKyAgICBmb3IgKFNldFByaXZhdGVCcmFuZFZhcmlhbnQmIHZhcmlhbnQgOiBt
X3ZhcmlhbnRzKQorICAgICAgICB2YXJpYW50LnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOworfQor
Cit2b2lkIFNldFByaXZhdGVCcmFuZFN0YXR1czo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCit7CisgICAgZm9yIChTZXRQcml2YXRlQnJhbmRWYXJpYW50JiB2YXJpYW50IDogbV92
YXJpYW50cykKKyAgICAgICAgdmFyaWFudC5tYXJrSWZDaGVhcCh2aXNpdG9yKTsKK30KKworYm9v
bCBTZXRQcml2YXRlQnJhbmRTdGF0dXM6OmZpbmFsaXplKFZNJiB2bSkKK3sKKyAgICBmb3IgKGF1
dG8mIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKSB7CisgICAgICAgIGlmICghdmFyaWFudC5maW5hbGl6
ZSh2bSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVl
OworfQorCit2b2lkIFNldFByaXZhdGVCcmFuZFN0YXR1czo6ZHVtcChQcmludFN0cmVhbSYgb3V0
KSBjb25zdAoreworICAgIG91dC5wcmludCgiKCIpOworICAgIHN3aXRjaCAobV9zdGF0ZSkgewor
ICAgIGNhc2UgTm9JbmZvcm1hdGlvbjoKKyAgICAgICAgb3V0LnByaW50KCJOb0luZm9ybWF0aW9u
Iik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2ltcGxlOgorICAgICAgICBvdXQucHJpbnQo
IlNpbXBsZSIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIExpa2VseVRha2VzU2xvd1BhdGg6
CisgICAgICAgIG91dC5wcmludCgiTGlrZWx5VGFrZXNTbG93UGF0aCIpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIE9ic2VydmVkVGFrZXNTbG93UGF0aDoKKyAgICAgICAgb3V0LnByaW50KCJP
YnNlcnZlZFRha2VzU2xvd1BhdGgiKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIG91dC5w
cmludCgiLCAiLCBsaXN0RHVtcChtX3ZhcmlhbnRzKSwgIikiKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2V0UHJp
dmF0ZUJyYW5kU3RhdHVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2V0UHJp
dmF0ZUJyYW5kU3RhdHVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWUxMjgyZjI0ZWQwYjk0N2QxZTg2M2RkNjEz
MGE4MTQ0YmE0ZDUzOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TZXRQcml2YXRlQnJhbmRTdGF0dXMuaApAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuQS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIkNvZGVPcmlnaW4u
aCIKKyNpbmNsdWRlICJDb25jdXJyZW50SlNMb2NrLmgiCisjaW5jbHVkZSAiRXhpdEZsYWcuaCIK
KyNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgorI2luY2x1ZGUgIlNldFByaXZhdGVCcmFuZFZhcmlh
bnQuaCIKKyNpbmNsdWRlICJTdHViSW5mb1N1bW1hcnkuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIEFjY2Vzc0Nhc2U7CitjbGFzcyBDb2RlQmxvY2s7CitjbGFzcyBTdHJ1Y3R1cmVTdHVi
SW5mbzsKKworY2xhc3MgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzIGZpbmFsIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBlbnVtIFN0YXRlIDogdWludDhfdCB7Cisg
ICAgICAgIC8vIEl0J3MgdW5jYWNoZWQgc28gd2UgaGF2ZSBubyBpbmZvcm1hdGlvbi4KKyAgICAg
ICAgTm9JbmZvcm1hdGlvbiwKKyAgICAgICAgLy8gSXQncyBjYWNoZWQgZm9yIGEgc2ltcGxlIGFj
Y2Vzcy4KKyAgICAgICAgU2ltcGxlLAorICAgICAgICAvLyBJdCB3aWxsIGxpa2VseSB0YWtlIHRo
ZSBzbG93IHBhdGguCisgICAgICAgIExpa2VseVRha2VzU2xvd1BhdGgsCisgICAgICAgIC8vIEl0
IGhhcyBiZWVuIHNlZW4gdG8gdGFrZSB0aGUgc2xvdyBwYXRoLgorICAgICAgICBPYnNlcnZlZFRh
a2VzU2xvd1BhdGgsCisgICAgfTsKKworICAgIFNldFByaXZhdGVCcmFuZFN0YXR1cygpCisgICAg
ICAgIDogbV9zdGF0ZShOb0luZm9ybWF0aW9uKQorICAgIHsKKyAgICB9CisKKyAgICBleHBsaWNp
dCBTZXRQcml2YXRlQnJhbmRTdGF0dXMoU3RhdGUgc3RhdGUpCisgICAgICAgIDogbV9zdGF0ZShz
dGF0ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChzdGF0ZSAhPSBTaW1wbGUpOworICAgIH0KKwor
ICAgIHN0YXRpYyBTZXRQcml2YXRlQnJhbmRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqIGJh
c2VsaW5lQmxvY2ssIElDU3RhdHVzTWFwJiBiYXNlbGluZU1hcCwgSUNTdGF0dXNDb250ZXh0U3Rh
Y2smIGRmZ0NvbnRleHRTdGFjaywgQ29kZU9yaWdpbik7CisKKyAgICBTdGF0ZSBzdGF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KKworICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVy
biBtX3N0YXRlICE9IE5vSW5mb3JtYXRpb247IH0KKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0
IHsgcmV0dXJuICFpc1NldCgpOyB9CisgICAgYm9vbCBvYnNlcnZlZFNsb3dQYXRoKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGF0ZSA9PSBPYnNlcnZlZFRha2VzU2xvd1BhdGg7IH0KKyAgICBib29sIGlz
U2ltcGxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBTaW1wbGU7IH0KKyAgICBjb25zdCBW
ZWN0b3I8U2V0UHJpdmF0ZUJyYW5kVmFyaWFudCwgMT4mIHZhcmlhbnRzKCkgeyByZXR1cm4gbV92
YXJpYW50czsgfQorICAgIENhY2hlYWJsZUlkZW50aWZpZXIgc2luZ2xlSWRlbnRpZmllcigpIGNv
bnN0OworCisgICAgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzIHNsb3dWZXJzaW9uKCkgY29uc3Q7CisK
KyAgICAvLyBBdHRlbXB0cyB0byByZWR1Y2UgdGhlIHNldCBvZiB2YXJpYW50cyB0byBmaXQgdGhl
IGdpdmVuIHN0cnVjdHVyZSBzZXQuIFRoaXMgbWF5IGJlIGFwcHJveGltYXRlLgorICAgIHZvaWQg
ZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYpOworCisgICAgdm9pZCB2aXNpdEFnZ3JlZ2F0ZShT
bG90VmlzaXRvciYpOworICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKTsKKyAgICBi
b29sIGZpbmFsaXplKFZNJik7CisKKyAgICBib29sIGFwcGVuZFZhcmlhbnQoY29uc3QgU2V0UHJp
dmF0ZUJyYW5kVmFyaWFudCYpOworCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7
CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzKFN0dWJJbmZv
U3VtbWFyeSwgU3RydWN0dXJlU3R1YkluZm8mKTsKKyAgICB2b2lkIG1lcmdlKGNvbnN0IFNldFBy
aXZhdGVCcmFuZFN0YXR1cyYpOworCisgICAgc3RhdGljIFNldFByaXZhdGVCcmFuZFN0YXR1cyBj
b21wdXRlRm9yQmFzZWxpbmUoQ29kZUJsb2NrKiwgSUNTdGF0dXNNYXAmLCBCeXRlY29kZUluZGV4
LCBFeGl0RmxhZyk7CisjaWYgRU5BQkxFKEpJVCkKKyAgICBzdGF0aWMgU2V0UHJpdmF0ZUJyYW5k
U3RhdHVzIGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKAorICAgICAg
ICBjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIFN0
cnVjdHVyZVN0dWJJbmZvKik7CisjZW5kaWYKKworICAgIFZlY3RvcjxTZXRQcml2YXRlQnJhbmRW
YXJpYW50LCAxPiBtX3ZhcmlhbnRzOworICAgIFN0YXRlIG1fc3RhdGU7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
ZXRQcml2YXRlQnJhbmRWYXJpYW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TZXRQcml2YXRlQnJhbmRWYXJpYW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZGRkZThhMjkxM2I2ZWU0
ODZiNjhhY2JmNDBhMDQ3N2Y5OTBiZGFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1NldFByaXZhdGVCcmFuZFZhcmlhbnQuY3BwCkBAIC0wLDAgKzEs
MTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5BLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2V0UHJpdmF0ZUJyYW5kVmFyaWFudC5oIgorCisj
aW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK1NldFByaXZhdGVCcmFuZFZhcmlhbnQ6OlNldFByaXZhdGVCcmFuZFZhcmlhbnQoQ2FjaGVh
YmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0
dXJlKiBuZXdTdHJ1Y3R1cmUpCisgICAgOiBtX29sZFN0cnVjdHVyZShvbGRTdHJ1Y3R1cmUpCisg
ICAgLCBtX25ld1N0cnVjdHVyZShuZXdTdHJ1Y3R1cmUpCisgICAgLCBtX2lkZW50aWZpZXIoV1RG
TW92ZShpZGVudGlmaWVyKSkKK3sgfQorCitTZXRQcml2YXRlQnJhbmRWYXJpYW50Ojp+U2V0UHJp
dmF0ZUJyYW5kVmFyaWFudCgpIHsgfQorCitTZXRQcml2YXRlQnJhbmRWYXJpYW50OjpTZXRQcml2
YXRlQnJhbmRWYXJpYW50KGNvbnN0IFNldFByaXZhdGVCcmFuZFZhcmlhbnQmIG90aGVyKQorewor
ICAgICp0aGlzID0gb3RoZXI7Cit9CisKK2Jvb2wgU2V0UHJpdmF0ZUJyYW5kVmFyaWFudDo6YXR0
ZW1wdFRvTWVyZ2UoY29uc3QgU2V0UHJpdmF0ZUJyYW5kVmFyaWFudCYgb3RoZXIpCit7CisgICAg
aWYgKCEhbV9pZGVudGlmaWVyICE9ICEhb3RoZXIubV9pZGVudGlmaWVyKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAobV9pZGVudGlmaWVyICYmIChtX2lkZW50aWZpZXIgIT0gb3Ro
ZXIubV9pZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fb2xk
U3RydWN0dXJlICE9IG90aGVyLm1fb2xkU3RydWN0dXJlKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgQVNTRVJUKG1fbmV3U3RydWN0dXJlID09IG90aGVyLm1fbmV3U3RydWN0dXJlKTsKKwor
ICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFNldFByaXZhdGVCcmFuZFZhcmlhbnQ6Om1hcmtJ
ZkNoZWFwKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGlmIChtX29sZFN0cnVjdHVyZSkK
KyAgICAgICAgbV9vbGRTdHJ1Y3R1cmUtPm1hcmtJZkNoZWFwKHZpc2l0b3IpOworICAgIGlmICht
X25ld1N0cnVjdHVyZSkKKyAgICAgICAgbV9uZXdTdHJ1Y3R1cmUtPm1hcmtJZkNoZWFwKHZpc2l0
b3IpOworfQorCitib29sIFNldFByaXZhdGVCcmFuZFZhcmlhbnQ6OmZpbmFsaXplKFZNJiB2bSkK
K3sKKyAgICBpZiAoIXZtLmhlYXAuaXNNYXJrZWQobV9vbGRTdHJ1Y3R1cmUpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fbmV3U3RydWN0dXJlICYmICF2bS5oZWFwLmlzTWFya2Vk
KG1fbmV3U3RydWN0dXJlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVl
OworfQorCit2b2lkIFNldFByaXZhdGVCcmFuZFZhcmlhbnQ6OnZpc2l0QWdncmVnYXRlKFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQoreworICAgIG1faWRlbnRpZmllci52aXNpdEFnZ3JlZ2F0ZSh2aXNp
dG9yKTsKK30KKwordm9pZCBTZXRQcml2YXRlQnJhbmRWYXJpYW50OjpkdW1wKFByaW50U3RyZWFt
JiBvdXQpIGNvbnN0Cit7CisgICAgZHVtcEluQ29udGV4dChvdXQsIG51bGxwdHIpOworfQorCit2
b2lkIFNldFByaXZhdGVCcmFuZFZhcmlhbnQ6OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91
dCwgRHVtcENvbnRleHQqKSBjb25zdAoreworICAgIG91dC5wcmludCgiPCIpOworICAgIG91dC5w
cmludCgiaWQ9JyIsIG1faWRlbnRpZmllciwgIiciKTsKKyAgICBpZiAobV9vbGRTdHJ1Y3R1cmUp
CisgICAgICAgIG91dC5wcmludCgiLCAiLCAqbV9vbGRTdHJ1Y3R1cmUpOworICAgIGlmIChtX25l
d1N0cnVjdHVyZSkKKyAgICAgICAgb3V0LnByaW50KCIgLT4gIiwgKm1fbmV3U3RydWN0dXJlKTsK
KyAgICBvdXQucHJpbnQoIj4iKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2V0UHJpdmF0ZUJyYW5kVmFyaWFudC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NldFByaXZhdGVCcmFuZFZhcmlhbnQu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iODVlNGEwZTAxYWZkNGRiYTBlOGM2ZTY0NjcyNDRiMGYzNmEwYjNhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NldFByaXZh
dGVCcmFuZFZhcmlhbnQuaApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAy
MSBJZ2FsaWEgUy5BLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNhY2hlYWJs
ZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYvQm94Lmg+CisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBTZXRQcml2YXRlQnJhbmRTdGF0dXM7CisKK2NsYXNzIFNldFByaXZhdGVCcmFuZFZh
cmlhbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFNldFBy
aXZhdGVCcmFuZFZhcmlhbnQoQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlKiBvbGRTdHJ1
Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKTsKKworICAgIH5TZXRQcml2YXRlQnJhbmRW
YXJpYW50KCk7CisKKyAgICBTZXRQcml2YXRlQnJhbmRWYXJpYW50KGNvbnN0IFNldFByaXZhdGVC
cmFuZFZhcmlhbnQmKTsKKworICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV9vbGRTdHJ1Y3R1cmU7IH0KKyAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbmV3U3RydWN0dXJlOyB9CisKKyAgICBib29sIGF0dGVtcHRUb01lcmdl
KGNvbnN0IFNldFByaXZhdGVCcmFuZFZhcmlhbnQmIG90aGVyKTsKKworICAgIHZvaWQgdmlzaXRB
Z2dyZWdhdGUoU2xvdFZpc2l0b3ImKTsKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9y
Jik7CisgICAgYm9vbCBmaW5hbGl6ZShWTSYpOworCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFt
JikgY29uc3Q7CisgICAgdm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRl
eHQqKSBjb25zdDsKKworICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0
IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCisgICAgYm9vbCBvdmVybGFwcyhjb25zdCBTZXRQ
cml2YXRlQnJhbmRWYXJpYW50JiBvdGhlcikKKyAgICB7CisgICAgICAgIGlmICghIW1faWRlbnRp
ZmllciAhPSAhIW90aGVyLm1faWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICBpZiAobV9pZGVudGlmaWVyKSB7CisgICAgICAgICAgICBpZiAobV9pZGVudGlmaWVy
ICE9IG90aGVyLm1faWRlbnRpZmllcikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1fb2xkU3RydWN0dXJlID09IG90aGVyLm1fb2xkU3Ry
dWN0dXJlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgU2V0UHJpdmF0ZUJy
YW5kU3RhdHVzOworCisgICAgU3RydWN0dXJlKiBtX29sZFN0cnVjdHVyZTsKKyAgICBTdHJ1Y3R1
cmUqIG1fbmV3U3RydWN0dXJlOworICAgIENhY2hlYWJsZUlkZW50aWZpZXIgbV9pZGVudGlmaWVy
OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAppbmRleCA1MjZmZGFiYmE1NGQ5Mjc0
YjNkNWI4MmI4N2NmOGYwODEzOGE2NDk2Li4yNjZkN2Q4NTc2NDZiMzg4NWVmODc0M2E4OTMwMTJh
NDQ0NWE5MWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Ry
dWN0dXJlU3R1YkluZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
dHJ1Y3R1cmVTdHViSW5mby5jcHAKQEAgLTI4NCw2ICsyODQsMTIgQEAgdm9pZCBTdHJ1Y3R1cmVT
dHViSW5mbzo6cmVzZXQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyQmFzZSYgbG9ja2VyLCBDb2Rl
QmxvY2sqIGMKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5VmFsOgogICAgICAgICByZXNl
dERlbEJ5KGNvZGVCbG9jaywgKnRoaXMsIERlbEJ5S2luZDo6Tm9ybWFsQnlWYWwpOwogICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0ZUJyYW5kOgorICAgICAg
ICByZXNldENoZWNrUHJpdmF0ZUJyYW5kKGNvZGVCbG9jaywgKnRoaXMpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVCcmFuZDoKKyAgICAgICAgcmVzZXRT
ZXRQcml2YXRlQnJhbmQoY29kZUJsb2NrLCAqdGhpcyk7CisgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICAKICAgICBkZXJlZigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3RydWN0dXJlU3R1YkluZm8uaAppbmRleCA4OWRmNGQ3YjEyOGNjYmMwNDk2ZDE1ZWRkNjI2
NmNmZTdkMjI4Y2QyLi5jNWJiOTVlMGMzNzdiN2M5Yjk0ZDM4YzViNDQ4MWFlMjliYmFjMmUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1Yklu
Zm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1Yklu
Zm8uaApAQCAtNTksNiArNTksOCBAQCBlbnVtIGNsYXNzIEFjY2Vzc1R5cGUgOiBpbnQ4X3Qgewog
ICAgIERlbGV0ZUJ5SUQsCiAgICAgRGVsZXRlQnlWYWwsCiAgICAgR2V0UHJpdmF0ZU5hbWUsCisg
ICAgQ2hlY2tQcml2YXRlQnJhbmQsCisgICAgU2V0UHJpdmF0ZUJyYW5kLAogfTsKIAogZW51bSBj
bGFzcyBDYWNoZVR5cGUgOiBpbnQ4X3QgewpAQCAtMzUyLDYgKzM1NCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgR1BSUmVnIHRoaXNHUFI7CiAgICAgICAgIEdQUlJlZyBwcm90b3R5cGVHUFI7CiAgICAg
ICAgIEdQUlJlZyBwcm9wZXJ0eUdQUjsKKyAgICAgICAgR1BSUmVnIGJyYW5kR1BSOwogICAgIH0g
cmVnczsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIEdQUlJlZyB2YWx1ZVRhZ0dQUjsKQEAg
LTM2MSw2ICszNjQsNyBAQCBwdWJsaWM6CiAgICAgdW5pb24gewogICAgICAgICBHUFJSZWcgdGhp
c1RhZ0dQUjsKICAgICAgICAgR1BSUmVnIHByb3BlcnR5VGFnR1BSOworICAgICAgICBHUFJSZWcg
YnJhbmRUYWdHUFI7CiAgICAgfSB2OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IGIzYWRjMGI3N2Vi
N2M3MjQxODZhOTgxYzYzNTNjMzE5YTU5OWIwZTAuLjkzZGZmNzc0MmQzNzRlZWMzZWZhMmRlMDc0
ZTI4NDgxZjk2OTYxNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtNjksNiArNjksMTAgQEAgVW5saW5rZWRDb2Rl
QmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENv
ZGVUeXBlIGNvZGUKICAgICAgICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeShob2xkTG9jayhj
ZWxsTG9jaygpKSk7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6
Olllcyk7CiAgICAgfQorICAgIGlmIChpbmZvLnByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkgPT0g
UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5lZWRlZCkgeworICAgICAgICBjcmVhdGVSYXJlRGF0
YUlmTmVjZXNzYXJ5KGhvbGRMb2NrKGNlbGxMb2NrKCkpKTsKKyAgICAgICAgbV9yYXJlRGF0YS0+
bV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcml2YXRl
QnJhbmRSZXF1aXJlbWVudDo6TmVlZGVkKTsKKyAgICB9CiB9CiAKIHZvaWQgVW5saW5rZWRDb2Rl
QmxvY2s6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmgKaW5kZXggMDBkYzYxNjMzNWZkMzFiMDQzMjUxZTM0NDAwZTU3ZGVmNTMxNWQ1Zi4uMWY1MWVj
ZTVkNmY4NmQ3MDk1MTFiNGE0YzE4MmM2NGNiZmExODNiZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTI2Niw2ICsyNjYs
MTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6
Ok5vOwogICAgIH0KIAorICAgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJl
cXVpcmVtZW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX3JhcmVEYXRhKQorICAgICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFByaXZhdGVCcmFuZFJlcXVpcmVtZW50PihtX3JhcmVE
YXRhLT5tX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50KTsKKyAgICAgICAgcmV0dXJuIFByaXZhdGVC
cmFuZFJlcXVpcmVtZW50OjpOb25lOworICAgIH0KKwogICAgIHZvaWQgZHVtcChQcmludFN0cmVh
bSYpIGNvbnN0OwogCiAgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBsaXZlbmVzc0FuYWx5
c2lzKENvZGVCbG9jayogY29kZUJsb2NrKQpAQCAtNDA3LDYgKzQxNCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgUmVmQ291bnRlZEFycmF5PENvbnN0YW50SWRlbnRpZmllclNldEVudHJ5PiBtX2NvbnN0
YW50SWRlbnRpZmllclNldHM7CiAKICAgICAgICAgdW5zaWduZWQgbV9uZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplciA6IDE7CisgICAgICAgIHVuc2lnbmVkIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQgOiAxOwogICAgIH07CiAKICAgICBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNldChJbnN0cnVjdGlv
blN0cmVhbTo6T2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmgKaW5kZXggMmViOTg0YzFiMDVh
NDVlMGFhNTIwZTFmZDM3OGFkOWUyZmM5MzIyMi4uOTRjNjg3MGU5OTRjMmJmNWM5ODJjZTk1MmU0
YzUzNGJkYzk2YjQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmgKQEAgLTUwLDYgKzUwLDcgQEAg
cHVibGljOgogICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBt
X2NvZGVCbG9jay0+c3VwZXJCaW5kaW5nKCk7IH0KICAgICBKU1BhcnNlclNjcmlwdE1vZGUgc2Ny
aXB0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5zY3JpcHRNb2RlKCk7IH0KICAg
ICBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigp
IGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigp
OyB9CisgICAgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQo
KSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKTsg
fQogICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+dXNlc0V2
YWwoKTsgfQogICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBt
X2NvZGVCbG9jay0+cGFyc2VNb2RlKCk7IH0KICAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIHsg
cmV0dXJuIG1fY29kZUJsb2NrLT5pc0Fycm93RnVuY3Rpb24oKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5jcHAKaW5kZXggN2VjYjRmYzc1OWFkMGYxMTM4OWI2NjY5NDNmMDU3ZGYzYjNkZDcxZS4u
ODA1ZGY4MGFkNTI2OTZkZTI0YTEwMmJhZThjMzQ4NGQ3NWFmYzk2YiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUuY3BwCkBAIC03MCwxMSArNzAsMTIgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKIAogICAgIGJvb2wg
aXNDbGFzc0NvbnRleHQgPSBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSA9PSBTdXBlckJpbmRp
bmc6Ok5lZWRlZCB8fCBleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6
OkNsYXNzRmllbGRJbml0aWFsaXplck1vZGU7CiAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrKiByZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUodm0sIEZ1bmN0
aW9uQ29kZSwgRXhlY3V0YWJsZUluZm8oZnVuY3Rpb24tPnVzZXNFdmFsKCksIGtpbmQgPT0gQ29k
ZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBl
eGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgc2NyaXB0TW9kZSwgZXhlY3V0YWJsZS0+c3Vw
ZXJCaW5kaW5nKCksIHBhcnNlTW9kZSwgZXhlY3V0YWJsZS0+ZGVyaXZlZENvbnRleHRUeXBlKCks
IGV4ZWN1dGFibGUtPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGZhbHNlLCBpc0NsYXNz
Q29udGV4dCwgRXZhbENvbnRleHRUeXBlOjpGdW5jdGlvbkV2YWxDb250ZXh0KSwgY29kZUdlbmVy
YXRpb25Nb2RlKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29kZSwgRXhlY3V0YWJs
ZUluZm8oZnVuY3Rpb24tPnVzZXNFdmFsKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZXhl
Y3V0YWJsZS0+cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSwgZnVuY3Rpb25LaW5kID09IFVubGlu
a2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgc2NyaXB0
TW9kZSwgZXhlY3V0YWJsZS0+c3VwZXJCaW5kaW5nKCksIHBhcnNlTW9kZSwgZXhlY3V0YWJsZS0+
ZGVyaXZlZENvbnRleHRUeXBlKCksIGV4ZWN1dGFibGUtPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyKCksIGZhbHNlLCBpc0NsYXNzQ29udGV4dCwgRXZhbENvbnRleHRUeXBlOjpGdW5jdGlvbkV2
YWxDb250ZXh0KSwgY29kZUdlbmVyYXRpb25Nb2RlKTsKIAogICAgIGF1dG8gcGFyZW50U2NvcGVU
RFpWYXJpYWJsZXMgPSBleGVjdXRhYmxlLT5wYXJlbnRTY29wZVREWlZhcmlhYmxlcygpOworICAg
IFByaXZhdGVOYW1lRW52aXJvbm1lbnQgcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCA9IGV4
ZWN1dGFibGUtPnBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQoKTsKICAgICBFQ01BTW9kZSBl
Y21hTW9kZSA9IGV4ZWN1dGFibGUtPmlzSW5TdHJpY3RDb250ZXh0KCkgPyBFQ01BTW9kZTo6c3Ry
aWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCk7Ci0gICAgZXJyb3IgPSBCeXRlY29kZUdlbmVyYXRv
cjo6Z2VuZXJhdGUodm0sIGZ1bmN0aW9uLmdldCgpLCBzb3VyY2UsIHJlc3VsdCwgY29kZUdlbmVy
YXRpb25Nb2RlLCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgZWNtYU1vZGUpOworICAgIGVycm9y
ID0gQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKHZtLCBmdW5jdGlvbi5nZXQoKSwgc291cmNl
LCByZXN1bHQsIGNvZGVHZW5lcmF0aW9uTW9kZSwgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsICZw
YXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50LCBlY21hTW9kZSk7CiAKICAgICBpZiAoZXJyb3Iu
aXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTgyLDcgKzgzLDcgQEAgc3Rh
dGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9jaygKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgY29uc3QgU291cmNlQ29kZSYgcGFyZW50U291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9k
ZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQga2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25z
dHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgUmVmUHRyPFREWkVu
dmlyb25tZW50TGluaz4gcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIERlcml2ZWRDb250ZXh0VHlw
ZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9y
KQorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHBhcmVudFNv
dXJjZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGtp
bmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2Rl
IHNjcmlwdE1vZGUsIFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+IHBhcmVudFNjb3BlVERaVmFy
aWFibGVzLCBPcHRpb25hbDxQcml2YXRlTmFtZUVudmlyb25tZW50PiBwYXJlbnRQcml2YXRlTmFt
ZUVudmlyb25tZW50LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGJvb2wgaXNCdWlsdGlu
RGVmYXVsdENsYXNzQ29uc3RydWN0b3IpCiAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCiAgICAg
LCBtX2ZpcnN0TGluZU9mZnNldChub2RlLT5maXJzdExpbmUoKSAtIHBhcmVudFNvdXJjZS5maXJz
dExpbmUoKS5vbmVCYXNlZEludCgpKQogICAgICwgbV9pc0luU3RyaWN0Q29udGV4dChub2RlLT5p
c0luU3RyaWN0Q29udGV4dCgpKQpAQCAtMTAzLDYgKzEwNCw3IEBAIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0CiAgICAgLCBtX3R5cGVQcm9maWxpbmdTdGFydE9mZnNldChub2RlLT5mdW5jdGlvbktl
eXdvcmRTdGFydCgpKQogICAgICwgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KG5vZGUtPnN0YXJ0
U3RhcnRPZmZzZXQoKSArIG5vZGUtPnNvdXJjZSgpLmxlbmd0aCgpIC0gMSkKICAgICAsIG1fcGFy
YW1ldGVyQ291bnQobm9kZS0+cGFyYW1ldGVyQ291bnQoKSkKKyAgICAsIG1fcHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHByaXZhdGVCcmFuZFJlcXVpcmVtZW50
KSkKICAgICAsIG1fZmVhdHVyZXMoMCkKICAgICAsIG1fc291cmNlUGFyc2VNb2RlKG5vZGUtPnBh
cnNlTW9kZSgpKQogICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSkKQEAgLTEyMiwxMiArMTI0LDE1IEBAIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0CiAgICAgQVNTRVJUKG1fc2NyaXB0TW9kZSA9PSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oc2NyaXB0TW9kZSkpOwogICAgIEFTU0VSVChtX3N1cGVyQmluZGluZyA9PSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+c3VwZXJCaW5kaW5nKCkpKTsKICAgICBBU1NFUlQobV9k
ZXJpdmVkQ29udGV4dFR5cGUgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlcml2ZWRDb250ZXh0
VHlwZSkpOworICAgIEFTU0VSVChtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID09IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihwcml2YXRlQnJhbmRSZXF1aXJlbWVudCkpOwogICAgIEFTU0VSVCghKG1f
aXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IgJiYgY29uc3RydWN0b3JLaW5kKCkgPT0g
Q29uc3RydWN0b3JLaW5kOjpOb25lKSk7CiAgICAgQVNTRVJUKCFtX25lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyIHx8IChpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIHx8IGRlcml2ZWRDb250
ZXh0VHlwZSA9PSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQp
KTsKICAgICBpZiAoIW5vZGUtPmNsYXNzU291cmNlKCkuaXNOdWxsKCkpCiAgICAgICAgIHNldENs
YXNzU291cmNlKG5vZGUtPmNsYXNzU291cmNlKCkpOwogICAgIGlmIChwYXJlbnRTY29wZVREWlZh
cmlhYmxlcykKICAgICAgICAgZW5zdXJlUmFyZURhdGEoKS5tX3BhcmVudFNjb3BlVERaVmFyaWFi
bGVzID0gV1RGTW92ZShwYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CisgICAgaWYgKHBhcmVudFBy
aXZhdGVOYW1lRW52aXJvbm1lbnQpCisgICAgICAgIGVuc3VyZVJhcmVEYXRhKCkubV9wYXJlbnRQ
cml2YXRlTmFtZUVudmlyb25tZW50ID0gV1RGTW92ZSgqcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9u
bWVudCk7CiB9CiAKIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp+VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCBiZWFmMWU1ZDViZThmMTFi
ZWZmM2VkM2IxYjgwNzk1OWM0NjI3YWI3Li5mYjdkYmE5ZWZiNGFhMDRkYWQzNmExMjgxYzAxMDhl
NTBmYmJlNGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtNzAsMTAgKzcwLDEwIEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuICZ2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNl
LnNwYWNlOwogICAgIH0KIAotICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
Y3JlYXRlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbk1ldGFkYXRh
Tm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQgdW5saW5rZWRGdW5jdGlvbktpbmQsIENv
bnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlw
dE1vZGUsIFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+IHBhcmVudFNjb3BlVERaVmFyaWFibGVz
LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0J1aWx0aW5EZWZh
dWx0Q2xhc3NDb25zdHJ1Y3RvciA9IGZhbHNlKQorICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogY3JlYXRlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5j
dGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQgdW5saW5rZWRGdW5j
dGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3Jp
cHRNb2RlIHNjcmlwdE1vZGUsIFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+IHBhcmVudFNjb3Bl
VERaVmFyaWFibGVzLCBPcHRpb25hbDxQcml2YXRlTmFtZUVudmlyb25tZW50PiBwYXJlbnRQcml2
YXRlTmFtZUVudmlyb25tZW50LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBl
LCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwg
UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGJvb2wgaXNC
dWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IgPSBmYWxzZSkKICAgICB7CiAgICAgICAgIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPih2bS5oZWFwKSkKLSAgICAgICAgICAg
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZVN0cnVjdHVyZS5nZXQoKSwgc291cmNlLCBub2RlLCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwg
Y29uc3RydWN0QWJpbGl0eSwgc2NyaXB0TW9kZSwgV1RGTW92ZShwYXJlbnRTY29wZVREWlZhcmlh
YmxlcyksIGRlcml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGlz
QnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKTsKKyAgICAgICAgICAgIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKHZtLCB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVy
ZS5nZXQoKSwgc291cmNlLCBub2RlLCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgY29uc3RydWN0QWJp
bGl0eSwgc2NyaXB0TW9kZSwgV1RGTW92ZShwYXJlbnRTY29wZVREWlZhcmlhYmxlcyksIFdURk1v
dmUocGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCksIGRlcml2ZWRDb250ZXh0VHlwZSwgbmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBpc0J1aWx0
aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3Rvcik7CiAgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVh
dGlvbih2bSk7CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9CkBAIC0xNDMsNiArMTQz
LDggQEAgcHVibGljOgogICAgIENvZGVGZWF0dXJlcyBmZWF0dXJlcygpIGNvbnN0IHsgcmV0dXJu
IG1fZmVhdHVyZXM7IH0KICAgICBib29sIGhhc0NhcHR1cmVkVmFyaWFibGVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9oYXNDYXB0dXJlZFZhcmlhYmxlczsgfQogCisgICAgUHJpdmF0ZUJyYW5kUmVxdWly
ZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxQcml2YXRlQnJhbmRSZXF1aXJlbWVudD4obV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7IH0K
KwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKICAg
ICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCkBAIC0xNzQsNiArMTc2LDEzIEBAIHB1
YmxpYzoKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICByZXR1cm4gbV9yYXJl
RGF0YS0+bV9wYXJlbnRTY29wZVREWlZhcmlhYmxlczsKICAgICB9CisKKyAgICBQcml2YXRlTmFt
ZUVudmlyb25tZW50IHBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQoKSBjb25zdAorICAgIHsK
KyAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICAgICAgcmV0dXJuIFByaXZhdGVOYW1l
RW52aXJvbm1lbnQoKTsKKyAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fcGFyZW50UHJpdmF0
ZU5hbWVFbnZpcm9ubWVudDsKKyAgICB9CiAgICAgCiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24o
KSBjb25zdCB7IHJldHVybiBpc0Fycm93RnVuY3Rpb25QYXJzZU1vZGUocGFyc2VNb2RlKCkpOyB9
CiAKQEAgLTIxMCw2ICsyMTksNyBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBtX3NvdXJjZU1h
cHBpbmdVUkxEaXJlY3RpdmU7CiAgICAgICAgIFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+IG1f
cGFyZW50U2NvcGVURFpWYXJpYWJsZXM7CiAgICAgICAgIFZlY3RvcjxKU1RleHRQb3NpdGlvbj4g
bV9jbGFzc0ZpZWxkTG9jYXRpb25zOworICAgICAgICBQcml2YXRlTmFtZUVudmlyb25tZW50IG1f
cGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudDsKICAgICB9OwogCiAgICAgTmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcj4obV9uZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplcik7IH0KQEAgLTIyOSw3ICsyMzksNyBAQCBwdWJsaWM6CiAgICAgfQogCiBw
cml2YXRlOgotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNJiwgU3RydWN0dXJlKiwg
Y29uc3QgU291cmNlQ29kZSYsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgVW5saW5rZWRGdW5jdGlv
bktpbmQsIENvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZSwgUmVmUHRyPFREWkVu
dmlyb25tZW50TGluaz4sICBKU0M6OkRlcml2ZWRDb250ZXh0VHlwZSwgSlNDOjpOZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplciwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3Rvcik7
CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0mLCBTdHJ1Y3R1cmUqLCBjb25zdCBT
b3VyY2VDb2RlJiwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCwg
Q29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlLCBSZWZQdHI8VERaRW52aXJvbm1l
bnRMaW5rPiwgT3B0aW9uYWw8UHJpdmF0ZU5hbWVFbnZpcm9ubWVudD4sIEpTQzo6RGVyaXZlZENv
bnRleHRUeXBlLCBKU0M6Ok5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRS
ZXF1aXJlbWVudCwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3Rvcik7CiAgICAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoRGVjb2RlciYsIGNvbnN0IENhY2hlZEZ1bmN0aW9u
RXhlY3V0YWJsZSYpOwogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBT
bG90VmlzaXRvciYpOwpAQCAtMjYxLDcgKzI3MSw4IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQg
bV9pc0NhY2hlZCA6IDE7CiAgICAgdW5zaWduZWQgbV90eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQ7
CiAgICAgdW5zaWduZWQgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0OwotICAgIHVuc2lnbmVkIG1f
cGFyYW1ldGVyQ291bnQ7CisgICAgdW5zaWduZWQgbV9wYXJhbWV0ZXJDb3VudCA6IDMxOworICAg
IHVuc2lnbmVkIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgOiAxOwogICAgIENvZGVGZWF0dXJl
cyBtX2ZlYXR1cmVzOwogICAgIFNvdXJjZVBhcnNlTW9kZSBtX3NvdXJjZVBhcnNlTW9kZTsKICAg
ICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDYx
N2NhMGNiYzU1YmNlNmNjMDdlNWVkYmU1MzRkOTdhOTg0Mjg5ZjQuLjRlNTcxOWVmODI1OGYzYjI5
ZmU2MGQ3NmRiMjAyZDJmOWIyOGE1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yODksNyArMjg5
LDcgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICByZXR1
cm4gUGFyc2VyRXJyb3IoUGFyc2VyRXJyb3I6OkVycm9yTm9uZSk7CiB9CiAKLUJ5dGVjb2RlR2Vu
ZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9k
ZSwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2Vu
ZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgUmVmUHRyPFREWkVudmlyb25t
ZW50TGluaz4mIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBFQ01BTW9kZSBlY21hTW9kZSkKK0J5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBw
cm9ncmFtTm9kZSwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNl
dDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgUmVmUHRyPFRE
WkVudmlyb25tZW50TGluaz4mIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBjb25zdCBQcml2YXRl
TmFtZUVudmlyb25tZW50KiwgRUNNQU1vZGUgZWNtYU1vZGUpCiAgICAgOiBCeXRlY29kZUdlbmVy
YXRvckJhc2UobWFrZVVuaXF1ZTxVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcj4odm0sIGNvZGVC
bG9jayksIENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJl
Z2lzdGVycygpKQogICAgICwgbV9jb2RlR2VuZXJhdGlvbk1vZGUoY29kZUdlbmVyYXRpb25Nb2Rl
KQogICAgICwgbV9zY29wZU5vZGUocHJvZ3JhbU5vZGUpCkBAIC0zMzYsNyArMzM2LDcgQEAgQnl0
ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHBy
b2dyYW1Ob2RlLCBVbmxpbmtlZFAKICAgICB9CiB9CiAKLUJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRl
Y29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1v
ZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4m
IHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBFQ01BTW9kZSBlY21hTW9kZSkKK0J5dGVjb2RlR2Vu
ZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25O
b2RlLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2Rl
R2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgUmVmUHRyPFREWkVudmly
b25tZW50TGluaz4mIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBjb25zdCBQcml2YXRlTmFtZUVu
dmlyb25tZW50KiBwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50LCBFQ01BTW9kZSBlY21hTW9k
ZSkKICAgICA6IEJ5dGVjb2RlR2VuZXJhdG9yQmFzZShtYWtlVW5pcXVlPFVubGlua2VkQ29kZUJs
b2NrR2VuZXJhdG9yPih2bSwgY29kZUJsb2NrKSwgQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2Fs
bGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkpCiAgICAgLCBtX2NvZGVHZW5lcmF0aW9u
TW9kZShjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAgLCBtX3Njb3BlTm9kZShmdW5jdGlvbk5vZGUp
CkBAIC0zNTksNiArMzU5LDggQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9y
KFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAsIG1fZWNt
YU1vZGUoZWNtYU1vZGUpCiAgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShjb2RlQmxvY2stPmRl
cml2ZWRDb250ZXh0VHlwZSgpKQogeworICAgIHB1c2hQcml2YXRlQWNjZXNzTmFtZXMocGFyZW50
UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCk7CisKICAgICBTeW1ib2xUYWJsZSogZnVuY3Rpb25TeW1i
b2xUYWJsZSA9IFN5bWJvbFRhYmxlOjpjcmVhdGUobV92bSk7CiAgICAgZnVuY3Rpb25TeW1ib2xU
YWJsZS0+c2V0VXNlc05vblN0cmljdEV2YWwobV91c2VzTm9uU3RyaWN0RXZhbCk7CiAgICAgaW50
IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCA9IDA7CkBAIC03MDcsNiArNzA5LDkgQEAgQnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5j
dGlvbk5vZGUsIFVubGlua2UKICAgICAgICAgICAgICAgICBjYXNlIENvbnN0cnVjdG9yS2luZDo6
Tm9uZToKICAgICAgICAgICAgICAgICBjYXNlIENvbnN0cnVjdG9yS2luZDo6QmFzZToKICAgICAg
ICAgICAgICAgICAgICAgZW1pdENyZWF0ZVRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVByaXZhdGVNZXRob2RzKCkgJiYgcHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQoKSA9PSBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6TmVlZGVkKQorICAg
ICAgICAgICAgICAgICAgICAgICAgZW1pdEluc3RhbGxQcml2YXRlQnJhbmQoJm1fdGhpc1JlZ2lz
dGVyKTsKKwogICAgICAgICAgICAgICAgICAgICBlbWl0SW5zdGFuY2VGaWVsZEluaXRpYWxpemF0
aW9uSWZOZWVkZWQoJm1fdGhpc1JlZ2lzdGVyLCAmbV9jYWxsZWVSZWdpc3RlciwgbV9zY29wZU5v
ZGUtPnBvc2l0aW9uKCksIG1fc2NvcGVOb2RlLT5wb3NpdGlvbigpLCBtX3Njb3BlTm9kZS0+cG9z
aXRpb24oKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNh
c2UgQ29uc3RydWN0b3JLaW5kOjpFeHRlbmRzOgpAQCAtODM4LDcgKzg0Myw3IEBAIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rp
b25Ob2RlLCBVbmxpbmtlCiAgICAgcHVzaExleGljYWxTY29wZShtX3Njb3BlTm9kZSwgVERaQ2hl
Y2tPcHRpbWl6YXRpb246Ok9wdGltaXplLCBOZXN0ZWRTY29wZVR5cGU6OklzTm90TmVzdGVkLCBu
dWxscHRyLCBzaG91bGRJbml0aWFsaXplQmxvY2tTY29wZWRGdW5jdGlvbnMpOwogfQogCi1CeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5v
ZGUsIFVubGlua2VkRXZhbENvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVy
YXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFJlZlB0cjxURFpFbnZpcm9ubWVu
dExpbms+JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRUNNQU1vZGUgZWNtYU1vZGUpCitCeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5v
ZGUsIFVubGlua2VkRXZhbENvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVy
YXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFJlZlB0cjxURFpFbnZpcm9ubWVu
dExpbms+JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9u
bWVudCogcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgRUNNQU1vZGUgZWNtYU1vZGUpCiAg
ICAgOiBCeXRlY29kZUdlbmVyYXRvckJhc2UobWFrZVVuaXF1ZTxVbmxpbmtlZENvZGVCbG9ja0dl
bmVyYXRvcj4odm0sIGNvZGVCbG9jayksIENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNh
dmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKQogICAgICwgbV9jb2RlR2VuZXJhdGlvbk1vZGUo
Y29kZUdlbmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5vZGUoZXZhbE5vZGUpCkBAIC04NTYs
NiArODYxLDggQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwg
RXZhbE5vZGUqIGV2YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2QKIHsKICAgICBtX2NvZGVCbG9jay0+
c2V0TnVtUGFyYW1ldGVycygxKTsKIAorICAgIHB1c2hQcml2YXRlQWNjZXNzTmFtZXMocGFyZW50
UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCk7CisKICAgICBtX2NhY2hlZFBhcmVudFREWiA9IHBhcmVu
dFNjb3BlVERaVmFyaWFibGVzOwogCiAgICAgZW1pdEVudGVyKCk7CkBAIC05MDEsNyArOTA4LDcg
QEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUq
IGV2YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2QKICAgICBwdXNoTGV4aWNhbFNjb3BlKG1fc2NvcGVO
b2RlLCBURFpDaGVja09wdGltaXphdGlvbjo6T3B0aW1pemUsIE5lc3RlZFNjb3BlVHlwZTo6SXNO
b3ROZXN0ZWQsIG51bGxwdHIsIHNob3VsZEluaXRpYWxpemVCbG9ja1Njb3BlZEZ1bmN0aW9ucyk7
CiB9CiAKLUJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIE1vZHVs
ZVByb2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9kZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5l
cmF0aW9uTW9kZSwgY29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4mIHBhcmVudFNjb3Bl
VERaVmFyaWFibGVzLCBFQ01BTW9kZSBlY21hTW9kZSkKK0J5dGVjb2RlR2VuZXJhdG9yOjpCeXRl
Y29kZUdlbmVyYXRvcihWTSYgdm0sIE1vZHVsZVByb2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9k
ZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxD
b2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgUmVmUHRyPFREWkVu
dmlyb25tZW50TGluaz4mIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBjb25zdCBQcml2YXRlTmFt
ZUVudmlyb25tZW50KiwgRUNNQU1vZGUgZWNtYU1vZGUpCiAgICAgOiBCeXRlY29kZUdlbmVyYXRv
ckJhc2UobWFrZVVuaXF1ZTxVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcj4odm0sIGNvZGVCbG9j
ayksIENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lz
dGVycygpKQogICAgICwgbV9jb2RlR2VuZXJhdGlvbk1vZGUoY29kZUdlbmVyYXRpb25Nb2RlKQog
ICAgICwgbV9zY29wZU5vZGUobW9kdWxlUHJvZ3JhbU5vZGUpCkBAIC0xODkzLDggKzE5MDAsMTAg
QEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6aW5zdGFudGlhdGVMZXhpY2FsVmFyaWFibGVzKGNv
bnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGwKIAogICAgICAgICAgICAgLy8gRklYTUU6IG9ubHkg
ZG8gdGhpcyBpZiB0aGVyZSBpcyBhbiBldmFsKCkgd2l0aGluIGEgbmVzdGVkIHNjb3BlIC0tLSBv
dGhlcndpc2UgaXQgaXNuJ3QgbmVlZGVkLgogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjY2MwotICAgICAgICAgICAgaWYgKGVudHJ5LnZh
bHVlLmlzUHJpdmF0ZU5hbWUoKSkKLSAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+YWRkUHJp
dmF0ZU5hbWUoZW50cnkua2V5LmdldCgpKTsKKyAgICAgICAgICAgIGlmIChlbnRyeS52YWx1ZS5p
c1ByaXZhdGVGaWVsZCgpKQorICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5hZGRQcml2YXRl
TmFtZShlbnRyeS5rZXkuZ2V0KCksIFByaXZhdGVOYW1lRW50cnkoUHJpdmF0ZU5hbWVFbnRyeTo6
VHJhaXRzOjpJc0RlY2xhcmVkKSk7CisgICAgICAgICAgICBlbHNlIGlmIChlbnRyeS52YWx1ZS5p
c1ByaXZhdGVNZXRob2QoKSkKKyAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+YWRkUHJpdmF0
ZU5hbWUoZW50cnkua2V5LmdldCgpLCBQcml2YXRlTmFtZUVudHJ5KFByaXZhdGVOYW1lRW50cnk6
OlRyYWl0czo6SXNEZWNsYXJlZCB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNNZXRob2Qp
KTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gaGFzQ2FwdHVyZWRWYXJpYWJsZXM7CkBA
IC0yNzE0LDcgKzI3MjMsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1
dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHRoaXNWYQogICAgIHJldHVybiB2
YWx1ZTsKIH0KIAotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RHZXRC
eVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3Bl
cnR5KQorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRQcml2YXRlTmFtZShS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5KQog
ewogICAgIE9wR2V0UHJpdmF0ZU5hbWU6OmVtaXQodGhpcywgZHN0LCBiYXNlLCBwcm9wZXJ0eSk7
CiAgICAgcmV0dXJuIGRzdDsKQEAgLTI3NTAsMTIgKzI3NTksNDQgQEAgUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWZpbmVQcml2YXRlRmllbGQoUmVnaXN0ZXJJRCogYmFzZSwg
UmVnaXN0ZXIKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRDcmVhdGVQcml2YXRlQnJhbmQoUmVnaXN0ZXJJRCogc2NvcGUsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKK3sKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY3JlYXRl
UHJpdmF0ZVN5bWJvbCA9IG1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29u
c3RhbnQ6OmNyZWF0ZVByaXZhdGVTeW1ib2wpOworCisgICAgQ2FsbEFyZ3VtZW50cyBhcmd1bWVu
dHMoKnRoaXMsIG51bGxwdHIsIDApOworICAgIGVtaXRMb2FkKGFyZ3VtZW50cy50aGlzUmVnaXN0
ZXIoKSwganNVbmRlZmluZWQoKSk7CisgICAgUmVnaXN0ZXJJRCogbmV3U3ltYm9sID0gZW1pdENh
bGwoZmluYWxEZXN0aW5hdGlvbihudWxscHRyLCBjcmVhdGVQcml2YXRlU3ltYm9sLmdldCgpKSwg
Y3JlYXRlUHJpdmF0ZVN5bWJvbC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBhcmd1bWVudHMs
IGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCwgRGVidWdnYWJsZUNhbGw6Ok5vKTsKKworICAg
IFZhcmlhYmxlIHByaXZhdGVCcmFuZFZhciA9IHZhcmlhYmxlKHByb3BlcnR5TmFtZXMoKS5idWls
dGluTmFtZXMoKS5wcml2YXRlQnJhbmRQcml2YXRlTmFtZSgpKTsKKworICAgIGVtaXRQdXRUb1Nj
b3BlKHNjb3BlLCBwcml2YXRlQnJhbmRWYXIsIG5ld1N5bWJvbCwgRG9Ob3RUaHJvd0lmTm90Rm91
bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6SW5pdGlhbGl6YXRpb24pOworfQorCit2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0SW5zdGFsbFByaXZhdGVCcmFuZChSZWdpc3RlcklEKiB0YXJnZXQp
Cit7CisgICAgVmFyaWFibGUgcHJpdmF0ZUJyYW5kVmFyID0gdmFyaWFibGUocHJvcGVydHlOYW1l
cygpLmJ1aWx0aW5OYW1lcygpLnByaXZhdGVCcmFuZFByaXZhdGVOYW1lKCkpOworICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBwcml2YXRlQnJhbmRWYXJTY29wZSA9IGVtaXRSZXNvbHZlU2NvcGUobnVs
bHB0ciwgcHJpdmF0ZUJyYW5kVmFyKTsKKyAgICBSZWdpc3RlcklEKiBwcml2YXRlQnJhbmRTeW1i
b2wgPSBlbWl0R2V0UHJpdmF0ZUJyYW5kKG5ld1RlbXBvcmFyeSgpLCBwcml2YXRlQnJhbmRWYXJT
Y29wZS5nZXQoKSk7CisgICAgT3BTZXRQcml2YXRlQnJhbmQ6OmVtaXQodGhpcywgdGFyZ2V0LCBw
cml2YXRlQnJhbmRTeW1ib2wpOworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEdldFByaXZhdGVCcmFuZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNjb3BlKQor
eworICAgIFZhcmlhYmxlIHByaXZhdGVCcmFuZFZhciA9IHZhcmlhYmxlKHByb3BlcnR5TmFtZXMo
KS5idWlsdGluTmFtZXMoKS5wcml2YXRlQnJhbmRQcml2YXRlTmFtZSgpKTsKKyAgICByZXR1cm4g
ZW1pdEdldEZyb21TY29wZShkc3QsIHNjb3BlLCBwcml2YXRlQnJhbmRWYXIsIFRocm93SWZOb3RG
b3VuZCk7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHJpdmF0ZUZp
ZWxkUHV0KFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklE
KiB2YWx1ZSkKIHsKICAgICBPcFB1dFByaXZhdGVOYW1lOjplbWl0KHRoaXMsIGJhc2UsIHByb3Bl
cnR5LCB2YWx1ZSwgUHJpdmF0ZUZpZWxkUHV0S2luZDo6c2V0KCkpOwogICAgIHJldHVybiB2YWx1
ZTsKIH0KIAordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENoZWNrUHJpdmF0ZUJyYW5kKFJl
Z2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIGJyYW5kU3ltYm9sKQoreworICAgIE9wQ2hlY2tQ
cml2YXRlQnJhbmQ6OmVtaXQodGhpcywgYmFzZSwgYnJhbmRTeW1ib2wpOworfQorCiB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0U3VwZXJTYW1wbGVyQmVnaW4oKQogewogICAgIE9wU3VwZXJT
YW1wbGVyQmVnaW46OmVtaXQodGhpcyk7CkBAIC0yODkwLDYgKzI5MzEsMzIgQEAgdm9pZCBCeXRl
Y29kZUdlbmVyYXRvcjo6bGlmdFREWkNoZWNrSWZQb3NzaWJsZShjb25zdCBWYXJpYWJsZSYgdmFy
aWFibGUpCiAgICAgfQogfQogCitib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjppc1ByaXZhdGVNZXRo
b2QoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gbV9w
cml2YXRlTmFtZXNTdGFjay5zaXplKCk7IGktLTsgKSB7CisgICAgICAgIGF1dG8mIG1hcCA9IG1f
cHJpdmF0ZU5hbWVzU3RhY2tbaV07CisgICAgICAgIGF1dG8gaXQgPSBtYXAuZmluZChpZGVudC5p
bXBsKCkpOworICAgICAgICBpZiAoaXQgIT0gbWFwLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJu
IGl0LT52YWx1ZS5pc01ldGhvZCgpOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwor
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cHVzaFByaXZhdGVBY2Nlc3NOYW1lcyhjb25zdCBQcml2
YXRlTmFtZUVudmlyb25tZW50KiBlbnZpcm9ubWVudCkKK3sKKyAgICBpZiAoIWVudmlyb25tZW50
IHx8ICFlbnZpcm9ubWVudC0+c2l6ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3ByaXZh
dGVOYW1lc1N0YWNrLmFwcGVuZCgqZW52aXJvbm1lbnQpOworfQorCit2b2lkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpwb3BQcml2YXRlQWNjZXNzTmFtZXMoKQoreworICAgIEFTU0VSVChtX3ByaXZhdGVO
YW1lc1N0YWNrLnNpemUoKSk7CisgICAgbV9wcml2YXRlTmFtZXNTdGFjay5yZW1vdmVMYXN0KCk7
Cit9CisKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnB1c2hURFpWYXJpYWJsZXMoY29uc3QgVmFy
aWFibGVFbnZpcm9ubWVudCYgZW52aXJvbm1lbnQsIFREWkNoZWNrT3B0aW1pemF0aW9uIG9wdGlt
aXphdGlvbiwgVERaUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQpCiB7CiAgICAgaWYgKCFlbnZpcm9u
bWVudC5zaXplKCkpCkBAIC0yOTExLDYgKzI5NzgsMjggQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRv
cjo6cHVzaFREWlZhcmlhYmxlcyhjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBlbnZpcm9ubWVu
dCwKICAgICBtX1REWlN0YWNrLmFwcGVuZChURFpTdGFja0VudHJ5IHsgV1RGTW92ZShtYXApLCBu
dWxscHRyIH0pOwogfQogCitPcHRpb25hbDxQcml2YXRlTmFtZUVudmlyb25tZW50PiBCeXRlY29k
ZUdlbmVyYXRvcjo6Z2V0QXZhaWxhYmxlUHJpdmF0ZUFjY2Vzc05hbWVzKCkKK3sKKyAgICBQcml2
YXRlTmFtZUVudmlyb25tZW50IHJlc3VsdDsKKyAgICBTbWFsbFB0clNldDxVbmlxdWVkU3RyaW5n
SW1wbCosIDE2PiBleGNsdWRlZE5hbWVzOworICAgIGZvciAodW5zaWduZWQgaSA9IG1fcHJpdmF0
ZU5hbWVzU3RhY2suc2l6ZSgpOyBpLS07ICkgeworICAgICAgICBhdXRvJiBtYXAgPSBtX3ByaXZh
dGVOYW1lc1N0YWNrW2ldOworICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbWFwKSAgeworICAg
ICAgICAgICAgaWYgKGVudHJ5LnZhbHVlLmlzUHJpdmF0ZU1ldGhvZE9yQWNlc3NvcigpKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCFleGNsdWRlZE5hbWVzLmNvbnRhaW5zKGVudHJ5LmtleS5nZXQo
KSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFkZChlbnRyeS5rZXksIGVudHJ5LnZh
bHVlKTsKKyAgICAgICAgICAgICAgICAgICAgZXhjbHVkZWROYW1lcy5hZGQoZW50cnkua2V5Lmdl
dCgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
ICAgICBleGNsdWRlZE5hbWVzLmFkZChlbnRyeS5rZXkuZ2V0KCkpOworICAgICAgICB9CisgICAg
fQorCisgICAgaWYgKCFyZXN1bHQuc2l6ZSgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+IEJ5
dGVjb2RlR2VuZXJhdG9yOjpnZXRWYXJpYWJsZXNVbmRlclREWigpCiB7CiAgICAgUmVmUHRyPFRE
WkVudmlyb25tZW50TGluaz4gcGFyZW50ID0gbV9jYWNoZWRQYXJlbnRURFo7CkBAIC0zMTIwLDkg
KzMyMDksOSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld01ldGhvZERl
ZmluaXRpb24oUmVnaXN0ZXJJRCogZHN0LCBNZXRob2REZQogfQogCiBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3RvcihSZWdpc3RlcklEKiBkc3Qs
IENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUs
Ci0gICAgY29uc3QgSWRlbnRpZmllciYgZWNtYU5hbWUsIGNvbnN0IFNvdXJjZUNvZGUmIGNsYXNz
U291cmNlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplcikKKyAgICBjb25zdCBJZGVudGlmaWVyJiBlY21hTmFtZSwgY29uc3QgU291cmNlQ29kZSYg
Y2xhc3NTb3VyY2UsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVu
dCkKIHsKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG1fdm0u
YnVpbHRpbkV4ZWN1dGFibGVzKCktPmNyZWF0ZURlZmF1bHRDb25zdHJ1Y3Rvcihjb25zdHJ1Y3Rv
cktpbmQsIG5hbWUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsKKyAgICBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG1fdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCkt
PmNyZWF0ZURlZmF1bHRDb25zdHJ1Y3Rvcihjb25zdHJ1Y3RvcktpbmQsIG5hbWUsIG5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyLCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7CiAgICAgZXhlY3V0
YWJsZS0+c2V0SW52YWxpZFR5cGVQcm9maWxpbmdPZmZzZXRzKCk7CiAgICAgZXhlY3V0YWJsZS0+
c2V0RWNtYU5hbWUoZWNtYU5hbWUpOwogICAgIGV4ZWN1dGFibGUtPnNldENsYXNzU291cmNlKGNs
YXNzU291cmNlKTsKQEAgLTMxNDYsMTMgKzMyMzUsMTQgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXROZXdDbGFzc0ZpZWxkSW5pdGlhbGl6ZXJGdW5jdGlvbihSZWdpc3RlcklE
KgogICAgIH0KIAogICAgIGF1dG8gdmFyaWFibGVzVW5kZXJURFogPSBnZXRWYXJpYWJsZXNVbmRl
clREWigpOworICAgIE9wdGlvbmFsPFByaXZhdGVOYW1lRW52aXJvbm1lbnQ+IHBhcmVudFByaXZh
dGVOYW1lRW52aXJvbm1lbnQgPSBnZXRBdmFpbGFibGVQcml2YXRlQWNjZXNzTmFtZXMoKTsKICAg
ICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXJNb2RlOwogICAgIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSA9
IENvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKIAogICAgIGNvbnN0IGJvb2wgYWx3
YXlzU3RyaWN0SW5DbGFzcyA9IHRydWU7CiAgICAgRnVuY3Rpb25NZXRhZGF0YU5vZGUgbWV0YWRh
dGEocGFyc2VyQXJlbmEoKSwgSlNUb2tlbkxvY2F0aW9uKCksIEpTVG9rZW5Mb2NhdGlvbigpLCAw
LCAwLCAwLCAwLCAwLCBhbHdheXNTdHJpY3RJbkNsYXNzLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUs
IHN1cGVyQmluZGluZywgMCwgcGFyc2VNb2RlLCBmYWxzZSk7CiAgICAgbWV0YWRhdGEuZmluaXNo
UGFyc2luZyhtX3Njb3BlTm9kZS0+c291cmNlKCksIElkZW50aWZpZXIoKSwgRnVuY3Rpb25Nb2Rl
OjpNZXRob2REZWZpbml0aW9uKTsKLSAgICBhdXRvIGluaXRpYWxpemVyID0gVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksICZtZXRh
ZGF0YSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5s
aW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwgc2NyaXB0TW9kZSgpLCBXVEZN
b3ZlKHZhcmlhYmxlc1VuZGVyVERaKSwgbmV3RGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplcjo6Tm8pOworICAgIGF1dG8gaW5pdGlhbGl6ZXIgPSBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgJm1l
dGFkYXRhLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBV
bmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCBzY3JpcHRNb2RlKCksIFdU
Rk1vdmUodmFyaWFibGVzVW5kZXJURFopLCBXVEZNb3ZlKHBhcmVudFByaXZhdGVOYW1lRW52aXJv
bm1lbnQpLCBuZXdEZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
OjpObywgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmUpOwogICAgIGluaXRpYWxpemVyLT5z
ZXRDbGFzc0ZpZWxkTG9jYXRpb25zKFdURk1vdmUoY2xhc3NGaWVsZExvY2F0aW9ucykpOwogCiAg
ICAgdW5zaWduZWQgaW5kZXggPSBtX2NvZGVCbG9jay0+YWRkRnVuY3Rpb25FeHByKGluaXRpYWxp
emVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA1MGI1NDY1ZjliNzViMjhiOWJjYjhkM2Q4ZTFlMzM5ZTFh
N2UwMzEwLi5iYmZiNTY4MTk4ZjQ0NDU1N2RhMzEzM2MyOTY2M2NkNDIwMWU3YmU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCkBAIC00MDgsMTAgKzQwOCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIHR5cGVkZWYgRGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2sgRnVuY3Rp
b25TdGFjazsKIAotICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIFByb2dyYW1Ob2RlKiwg
VW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4s
IGNvbnN0IFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+JiwgRUNNQU1vZGUpOwotICAgICAgICBC
eXRlY29kZUdlbmVyYXRvcihWTSYsIEZ1bmN0aW9uTm9kZSosIFVubGlua2VkRnVuY3Rpb25Db2Rl
QmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgUmVmUHRyPFREWkVu
dmlyb25tZW50TGluaz4mLCBFQ01BTW9kZSk7Ci0gICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZN
JiwgRXZhbE5vZGUqLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVy
YXRpb25Nb2RlPiwgY29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4mLCBFQ01BTW9kZSk7
Ci0gICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgTW9kdWxlUHJvZ3JhbU5vZGUqLCBVbmxp
bmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2Rl
PiwgY29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4mLCBFQ01BTW9kZSk7CisgICAgICAg
IEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgUHJvZ3JhbU5vZGUqLCBVbmxpbmtlZFByb2dyYW1Db2Rl
QmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgUmVmUHRyPFREWkVu
dmlyb25tZW50TGluaz4mLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiwgRUNNQU1vZGUp
OworICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIEZ1bmN0aW9uTm9kZSosIFVubGlua2Vk
RnVuY3Rpb25Db2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3Qg
UmVmUHRyPFREWkVudmlyb25tZW50TGluaz4mLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50
KiwgRUNNQU1vZGUpOworICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIEV2YWxOb2RlKiwg
VW5saW5rZWRFdmFsQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNv
bnN0IFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+JiwgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9u
bWVudCosIEVDTUFNb2RlKTsKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBNb2R1bGVQ
cm9ncmFtTm9kZSosIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayosIE9wdGlvblNldDxD
b2RlR2VuZXJhdGlvbk1vZGU+LCBjb25zdCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiYsIGNv
bnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqLCBFQ01BTW9kZSk7CiAKICAgICAgICAgfkJ5dGVj
b2RlR2VuZXJhdG9yKCk7CiAgICAgICAgIApAQCAtNDI1LDIwICs0MjUsMjEgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIGJvb2wgbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KCkg
Y29uc3QgeyByZXR1cm4gbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQ7IH0KICAg
ICAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVOb2RlLT51c2VzRXZh
bCgpOyB9CiAgICAgICAgIGJvb2wgdXNlc1RoaXMoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlTm9k
ZS0+dXNlc1RoaXMoKTsgfQorICAgICAgICBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRl
QnJhbmRSZXF1aXJlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5wcml2YXRlQnJh
bmRSZXF1aXJlbWVudCgpOyB9CiAgICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rvcktp
bmQoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+Y29uc3RydWN0b3JLaW5kKCk7IH0KICAg
ICAgICAgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJs
b2NrLT5zdXBlckJpbmRpbmcoKTsgfQogICAgICAgICBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5zY3JpcHRNb2RlKCk7IH0KICAgICAg
ICAgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIo
KSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIo
KTsgfQogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE5vZGUsIHR5cGVuYW1lIFVubGlua2Vk
Q29kZUJsb2NrPgotICAgICAgICBzdGF0aWMgUGFyc2VyRXJyb3IgZ2VuZXJhdGUoVk0mIHZtLCBO
b2RlKiBub2RlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBVbmxpbmtlZENvZGVCbG9j
ayogdW5saW5rZWRDb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVH
ZW5lcmF0aW9uTW9kZSwgY29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4mIHBhcmVudFNj
b3BlVERaVmFyaWFibGVzLCBFQ01BTW9kZSBlY21hTW9kZSkKKyAgICAgICAgc3RhdGljIFBhcnNl
ckVycm9yIGdlbmVyYXRlKFZNJiB2bSwgTm9kZSogbm9kZSwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlQ29kZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBPcHRpb25TZXQ8
Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFJlZlB0cjxURFpF
bnZpcm9ubWVudExpbms+JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgY29uc3QgUHJpdmF0ZU5h
bWVFbnZpcm9ubWVudCogcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgRUNNQU1vZGUgZWNtYU1vZGUp
CiAgICAgICAgIHsKICAgICAgICAgICAgIE1vbm90b25pY1RpbWUgYmVmb3JlOwogICAgICAgICAg
ICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnJlcG9ydEJ5dGVjb2RlQ29tcGlsZVRpbWVzKCkpKQog
ICAgICAgICAgICAgICAgIGJlZm9yZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogCiAgICAgICAg
ICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVjb2Rl
R2VuZXJhdG9yID0gbWFrZVVuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIG5vZGUsIHVubGlu
a2VkQ29kZUJsb2NrLCBjb2RlR2VuZXJhdGlvbk1vZGUsIHBhcmVudFNjb3BlVERaVmFyaWFibGVz
LCBlY21hTW9kZSk7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlR2VuZXJhdG9yID0gbWFrZVVu
aXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIG5vZGUsIHVubGlua2VkQ29kZUJsb2NrLCBjb2Rl
R2VuZXJhdGlvbk1vZGUsIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBwcml2YXRlTmFtZUVudmly
b25tZW50LCBlY21hTW9kZSk7CiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGJ5dGVjb2RlR2Vu
ZXJhdG9yLT5nZW5lcmF0ZSgpOwogCiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6
cmVwb3J0Qnl0ZWNvZGVDb21waWxlVGltZXMoKSkpIHsKQEAgLTc3NCw3ICs3NzUsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3RnVuY3Rpb24oUmVnaXN0
ZXJJRCogZHN0LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSopOwogICAgICAgICBSZWdpc3RlcklEKiBl
bWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY0V4cHJOb2RlKik7
Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJ
RCogZHN0LCBDb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIGNvbnN0IElk
ZW50aWZpZXImIGVjbWFOYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBjbGFzc1NvdXJjZSwgTmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3RGVmYXVs
dENvbnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVu
dGlmaWVyJiBuYW1lLCBjb25zdCBJZGVudGlmaWVyJiBlY21hTmFtZSwgY29uc3QgU291cmNlQ29k
ZSYgY2xhc3NTb3VyY2UsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRS
ZXF1aXJlbWVudCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXJGdW5jdGlvbihSZWdpc3RlcklEKiBkc3QsIFZlY3RvcjxKU1RleHRQb3NpdGlvbj4mJiBj
bGFzc0ZpZWxkTG9jYXRpb25zLCBib29sIGlzRGVyaXZlZCk7CiAgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiwgQXJyb3dGdW5jRXhw
ck5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld01ldGhvZERlZmluaXRpb24oUmVn
aXN0ZXJJRCogZHN0LCBNZXRob2REZWZpbml0aW9uTm9kZSopOwpAQCAtODE1LDcgKzgxNiw2IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGlyZWN0U2V0UHJvdG90
eXBlT2YoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvdG90eXBlKTsKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHBy
b3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRC
eVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmFsdWUsIFJlZ2lzdGVySUQq
IHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRE
aXJlY3RHZXRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVy
SUQqIHByb3BlcnR5KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERpcmVjdFB1dEJ5VmFsKFJl
Z2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREZWxldGVCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5KTsKIApAQCAtODIzLDYgKzgyMywx
MiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dEludGVybmFs
RmllbGQoUmVnaXN0ZXJJRCogYmFzZSwgdW5zaWduZWQgaW5kZXgsIFJlZ2lzdGVySUQqIHZhbHVl
KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlZmluZVByaXZhdGVGaWVsZChSZWdpc3RlcklE
KiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0UHJpdmF0ZUZpZWxkUHV0KFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lz
dGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CisgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRHZXRQcml2YXRlTmFtZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJl
Z2lzdGVySUQqIHByb3BlcnR5KTsKKworICAgICAgICB2b2lkIGVtaXRDcmVhdGVQcml2YXRlQnJh
bmQoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQp
OworICAgICAgICB2b2lkIGVtaXRJbnN0YWxsUHJpdmF0ZUJyYW5kKFJlZ2lzdGVySUQqIHRhcmdl
dCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRQcml2YXRlQnJhbmQoUmVnaXN0ZXJJRCog
ZHN0LCBSZWdpc3RlcklEKiBzY29wZSk7CisgICAgICAgIHZvaWQgZW1pdENoZWNrUHJpdmF0ZUJy
YW5kKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIGJyYW5kKTsKIAogICAgICAgICB2b2lk
IGVtaXRTdXBlclNhbXBsZXJCZWdpbigpOwogICAgICAgICB2b2lkIGVtaXRTdXBlclNhbXBsZXJF
bmQoKTsKQEAgLTExNzYsMTYgKzExODIsMTkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICBEZXJpdmVkQ29udGV4dFR5cGUgbmV3RGVyaXZlZENvbnRleHRUeXBlID0gRGVyaXZlZENvbnRl
eHRUeXBlOjpOb25lOwogCiAgICAgICAgICAgICBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBu
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9IG1ldGFkYXRhLT5pc0NvbnN0cnVjdG9yQW5kTmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSA/IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpZ
ZXMgOiBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm87CisgICAgICAgICAgICBQcml2YXRl
QnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9IG1ldGFkYXRhLT5wcml2
YXRlQnJhbmRSZXF1aXJlbWVudCgpOwogICAgICAgICAgICAgaWYgKFNvdXJjZVBhcnNlTW9kZVNl
dChTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlLCBTb3VyY2VQYXJzZU1vZGU6OkFz
eW5jQXJyb3dGdW5jdGlvbk1vZGUsIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9u
Qm9keU1vZGUpLmNvbnRhaW5zKG1ldGFkYXRhLT5wYXJzZU1vZGUoKSkpIHsKICAgICAgICAgICAg
ICAgICBpZiAoY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpFeHRlbmRzIHx8
IGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIG5l
d0Rlcml2ZWRDb250ZXh0VHlwZSA9IERlcml2ZWRDb250ZXh0VHlwZTo6RGVyaXZlZENvbnN0cnVj
dG9yQ29udGV4dDsKICAgICAgICAgICAgICAgICAgICAgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIgPSBtX2NvZGVCbG9jay0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKTsKKyAgICAgICAg
ICAgICAgICAgICAgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBtX2NvZGVCbG9jay0+cHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ZWxzZSBpZiAobV9jb2RlQmxvY2stPmlzQ2xhc3NDb250ZXh0KCkgfHwgaXNEZXJpdmVkQ2xhc3ND
b250ZXh0KCkpCiAgICAgICAgICAgICAgICAgICAgIG5ld0Rlcml2ZWRDb250ZXh0VHlwZSA9IERl
cml2ZWRDb250ZXh0VHlwZTo6RGVyaXZlZE1ldGhvZENvbnRleHQ7CiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIGF1dG8gb3B0aW9uYWxWYXJpYWJsZXNVbmRlclREWiA9IGdldFZhcmlhYmxl
c1VuZGVyVERaKCk7CisgICAgICAgICAgICBPcHRpb25hbDxQcml2YXRlTmFtZUVudmlyb25tZW50
PiBwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50ID0gZ2V0QXZhaWxhYmxlUHJpdmF0ZUFjY2Vz
c05hbWVzKCk7CiAKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGVzZSBmbGFncywgUGFyc2VyTW9k
ZXMgYW5kIHByb3BhZ2F0aW9uIHRvIFhYWENvZGVCbG9ja3Mgc2hvdWxkIGJlIHJlb3JnYW5pemVk
LgogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1MTU0NwpAQCAtMTE5NCwxMCArMTIwMywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlICYmIG1ldGFk
YXRhLT5jb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpCiAgICAgICAg
ICAgICAgICAgY29uc3RydWN0QWJpbGl0eSA9IENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVj
dDsKIAotICAgICAgICAgICAgcmV0dXJuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVh
dGUobV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgpLCBtZXRhZGF0YSwgaXNCdWlsdGluRnVuY3Rp
b24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwg
Y29uc3RydWN0QWJpbGl0eSwgc2NyaXB0TW9kZSgpLCBXVEZNb3ZlKG9wdGlvbmFsVmFyaWFibGVz
VW5kZXJURFopLCBuZXdEZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyKTsKKyAgICAgICAgICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3Jl
YXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgbWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0
aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24s
IGNvbnN0cnVjdEFiaWxpdHksIHNjcmlwdE1vZGUoKSwgV1RGTW92ZShvcHRpb25hbFZhcmlhYmxl
c1VuZGVyVERaKSwgV1RGTW92ZShwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50KSwgbmV3RGVy
aXZlZENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgcHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQpOwogICAgICAgICB9CiAKICAgICAgICAgUmVmUHRyPFREWkVudmlyb25tZW50
TGluaz4gZ2V0VmFyaWFibGVzVW5kZXJURFooKTsKKyAgICAgICAgT3B0aW9uYWw8UHJpdmF0ZU5h
bWVFbnZpcm9ubWVudD4gZ2V0QXZhaWxhYmxlUHJpdmF0ZUFjY2Vzc05hbWVzKCk7CiAKICAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdENvbnN0cnVjdFZhcmFyZ3MoUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBmdW5jLCBSZWdpc3RlcklEKiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGFyZ3Vt
ZW50cywgUmVnaXN0ZXJJRCogZmlyc3RGcmVlUmVnaXN0ZXIsIGludDMyX3QgZmlyc3RWYXJBcmdP
ZmZzZXQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgRGVidWdnYWJsZUNh
bGwpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsT3A+CkBAIC0xMjUzLDYgKzEyNjMs
MTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBtX2xhc3RJbnN0cnVjdGlvbiA9IHBy
ZXZMYXN0SW5zdHJ1Y3Rpb247CiAgICAgICAgIH0KIAorICAgICAgICBib29sIGlzUHJpdmF0ZU1l
dGhvZChjb25zdCBJZGVudGlmaWVyJik7CisKKyAgICAgICAgdm9pZCBwdXNoUHJpdmF0ZUFjY2Vz
c05hbWVzKGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqKTsKKyAgICAgICAgdm9pZCBwb3BQ
cml2YXRlQWNjZXNzTmFtZXMoKTsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIE9wdGlvblNldDxD
b2RlR2VuZXJhdGlvbk1vZGU+IG1fY29kZUdlbmVyYXRpb25Nb2RlOwogCkBAIC0xMjY2LDYgKzEy
ODEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBSZWZQdHI8VERaRW52aXJvbm1lbnRM
aW5rPiBtX2NhY2hlZFBhcmVudFREWjsKICAgICAgICAgVmVjdG9yPFREWlN0YWNrRW50cnk+IG1f
VERaU3RhY2s7CisgICAgICAgIFZlY3RvcjxQcml2YXRlTmFtZUVudmlyb25tZW50PiBtX3ByaXZh
dGVOYW1lc1N0YWNrOwogICAgICAgICBPcHRpb25hbDxzaXplX3Q+IG1fdmFyU2NvcGVMZXhpY2Fs
U2NvcGVTdGFja0luZGV4OwogICAgICAgICB2b2lkIHB1c2hURFpWYXJpYWJsZXMoY29uc3QgVmFy
aWFibGVFbnZpcm9ubWVudCYsIFREWkNoZWNrT3B0aW1pemF0aW9uLCBURFpSZXF1aXJlbWVudCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcAppbmRleCAwZTFiOTVmNGY2YTgyMzQwMjljMzYyYTZiMjMzY2ViNTZkNDZlMDNhLi5m
YjAyNzJmNDE4MmY1M2QzODc3YTA3MzAxYWJiMWY1MmU4NTJmYjQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC01NjMs
NyArNTYzLDcgQEAgdm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0RGVjbGFyZVByaXZhdGVGaWVs
ZE5hbWVzKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IKICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gY3JlYXRlUHJpdmF0ZVN5bWJvbDsKICAgICBmb3IgKFByb3BlcnR5TGlzdE5vZGUqIHAgPSB0
aGlzOyBwOyBwID0gcC0+bV9uZXh0KSB7CiAgICAgICAgIGNvbnN0IFByb3BlcnR5Tm9kZSYgbm9k
ZSA9ICpwLT5tX25vZGU7Ci0gICAgICAgIGlmIChub2RlLnR5cGUoKSAmIFByb3BlcnR5Tm9kZTo6
UHJpdmF0ZSkgeworICAgICAgICBpZiAobm9kZS50eXBlKCkgJiBQcm9wZXJ0eU5vZGU6OlByaXZh
dGVGaWVsZCkgewogICAgICAgICAgICAgaWYgKCFjcmVhdGVQcml2YXRlU3ltYm9sKQogICAgICAg
ICAgICAgICAgIGNyZWF0ZVByaXZhdGVTeW1ib2wgPSBnZW5lcmF0b3IubW92ZUxpbmtUaW1lQ29u
c3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6Y3JlYXRlUHJpdmF0ZVN5bWJvbCk7CiAK
QEAgLTU4OSw3ICs1ODksNyBAQCBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZQogICAgICAgICBpZiAo
cC0+aXNDb21wdXRlZENsYXNzRmllbGQoKSkKICAgICAgICAgICAgIGVtaXRTYXZlQ29tcHV0ZWRG
aWVsZE5hbWUoZ2VuZXJhdG9yLCAqcC0+bV9ub2RlKTsKIAotICAgICAgICBpZiAocC0+aXNJbnN0
YW5jZUNsYXNzRmllbGQoKSkgeworICAgICAgICBpZiAocC0+aXNJbnN0YW5jZUNsYXNzRmllbGQo
KSAmJiAhKHAtPm1fbm9kZS0+dHlwZSgpICYgUHJvcGVydHlOb2RlOjpQcml2YXRlTWV0aG9kKSkg
ewogICAgICAgICAgICAgQVNTRVJUKGluc3RhbmNlRmllbGRMb2NhdGlvbnMpOwogICAgICAgICAg
ICAgaW5zdGFuY2VGaWVsZExvY2F0aW9ucy0+YXBwZW5kKHAtPnBvc2l0aW9uKCkpOwogICAgICAg
ICAgICAgY29udGludWU7CkBAIC03NTcsNyArNzU3LDcgQEAgUmVnaXN0ZXJJRCogUHJvcGVydHlM
aXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGUKIHZvaWQgUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogbmV3T2JqLCBQcm9wZXJ0eU5vZGUm
IG5vZGUpCiB7CiAgICAgLy8gUHJpdmF0ZSBmaWVsZHMgYXJlIGhhbmRsZWQgaW4gYSBzeW50aGV0
aWMgY2xhc3NGaWVsZEluaXRpYWxpemVyIGZ1bmN0aW9uLCBub3QgaGVyZS4KLSAgICBBU1NFUlQo
IShub2RlLnR5cGUoKSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0ZSkpOworICAgIEFTU0VSVCghKG5v
ZGUudHlwZSgpICYgUHJvcGVydHlOb2RlOjpQcml2YXRlRmllbGQpKTsKIAogICAgIGlmIChQcm9w
ZXJ0eU5vZGU6OmlzVW5kZXJzY29yZVByb3RvU2V0dGVyKGdlbmVyYXRvci52bSgpLCBub2RlKSkg
ewogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvdG90eXBlID0gZ2VuZXJhdG9yLmVtaXRO
b2RlKG5vZGUubV9hc3NpZ24pOwpAQCAtNzgyLDYgKzc4MiwxNCBAQCB2b2lkIFByb3BlcnR5TGlz
dE5vZGU6OmVtaXRQdXRDb25zdGFudFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZwogCiAgICAgaWYgKG5vZGUuaXNDbGFzc1Byb3BlcnR5KCkpIHsKICAgICAgICAgQVNT
RVJUKG5vZGUubmVlZHNTdXBlckJpbmRpbmcoKSk7CisKKyAgICAgICAgaWYgKG5vZGUudHlwZSgp
ICYgUHJvcGVydHlOb2RlOjpQcml2YXRlTWV0aG9kKSB7CisgICAgICAgICAgICBWYXJpYWJsZSB2
YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoKm5vZGUubmFtZSgpKTsKKyAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0UHV0VG9TY29wZShnZW5lcmF0b3Iuc2NvcGVSZWdpc3RlcigpLCB2YXIsIHZhbHVl
LmdldCgpLCBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpDb25zdElu
aXRpYWxpemF0aW9uKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eU5hbWVSZWdpc3RlcjsKICAgICAgICAgaWYgKG5v
ZGUubmFtZSgpKQogICAgICAgICAgICAgcHJvcGVydHlOYW1lID0gZ2VuZXJhdG9yLmVtaXRMb2Fk
KG51bGxwdHIsICpub2RlLm5hbWUoKSk7CiAKQEAgLTkxMCwxNCArOTE4LDI0IEBAIFJlZ2lzdGVy
SUQqIERvdEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVyCiAKIFJlZ2lzdGVySUQqIEJhc2VEb3ROb2RlOjplbWl0R2V0UHJvcGVy
dHlWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIGJhc2UsIFJlZlB0cjxSZWdpc3RlcklEPiYgdGhpc1ZhbHVlKQogewotICAgIGlm
IChpc1ByaXZhdGVGaWVsZCgpKSB7CisgICAgaWYgKGlzUHJpdmF0ZU1lbWJlcigpKSB7CisgICAg
ICAgIGlmIChnZW5lcmF0b3IuaXNQcml2YXRlTWV0aG9kKGlkZW50aWZpZXIoKSkpIHsKKyAgICAg
ICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudGlmaWVyKCkpOwor
ICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNv
bHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKKworICAgICAgICAgICAgUmVnaXN0ZXJJRCogcHJpdmF0
ZUJyYW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENo
ZWNrUHJpdmF0ZUJyYW5kKGJhc2UsIHByaXZhdGVCcmFuZFN5bWJvbCk7CisKKyAgICAgICAgICAg
IHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShkc3QsIHNjb3BlLmdldCgpLCB2YXIs
IFRocm93SWZOb3RGb3VuZCk7CisgICAgICAgIH0KKwogICAgICAgICBWYXJpYWJsZSB2YXIgPSBn
ZW5lcmF0b3IudmFyaWFibGUobV9pZGVudCk7CiAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
IXZhci5sb2NhbCgpLCAiUHJpdmF0ZSBGaWVsZCBuYW1lcyBtdXN0IGJlIHN0b3JlZCBpbiBjYXB0
dXJlZCB2YXJpYWJsZXMiKTsKIAogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBn
ZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwogICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAg
ICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHByaXZhdGVOYW1lLmdldCgpLCBzY29wZS5n
ZXQoKSwgdmFyLCBEb05vdFRocm93SWZOb3RGb3VuZCk7Ci0gICAgICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdERpcmVjdEdldEJ5VmFsKGRzdCwgYmFzZSwgcHJpdmF0ZU5hbWUuZ2V0KCkpOworICAg
ICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlTmFtZShkc3QsIGJhc2UsIHByaXZh
dGVOYW1lLmdldCgpKTsKICAgICB9CiAKICAgICBpZiAobV9iYXNlLT5pc1N1cGVyTm9kZSgpKSB7
CkBAIC05MzcsNyArOTU1LDE4IEBAIFJlZ2lzdGVySUQqIEJhc2VEb3ROb2RlOjplbWl0R2V0UHJv
cGVydHlWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpCiAKIFJlZ2lzdGVy
SUQqIEJhc2VEb3ROb2RlOjplbWl0UHV0UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdmFsdWUsIFJlZlB0cjxSZWdpc3Rl
cklEPiYgdGhpc1ZhbHVlKQogewotICAgIGlmIChpc1ByaXZhdGVGaWVsZCgpKSB7CisgICAgaWYg
KGlzUHJpdmF0ZU1lbWJlcigpKSB7CisgICAgICAgIGF1dG8gaWRlbnRpZmllck5hbWUgPSBpZGVu
dGlmaWVyKCk7CisgICAgICAgIGlmIChnZW5lcmF0b3IuaXNQcml2YXRlTWV0aG9kKGlkZW50aWZp
ZXJOYW1lKSkgeworICAgICAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxl
KGlkZW50aWZpZXJOYW1lKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9
IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CisKKyAgICAgICAgICAg
IFJlZ2lzdGVySUQqIHByaXZhdGVCcmFuZFN5bWJvbCA9IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0
ZUJyYW5kKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCkpOworICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRDaGVja1ByaXZhdGVCcmFuZChiYXNlLCBwcml2YXRlQnJhbmRTeW1i
b2wpOworCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFRocm93VHlwZUVycm9yKCJUcnlpbmcg
dG8gYWNjZXNzIGEgbm90IGRlZmluZWQgcHJpdmF0ZSBzZXR0ZXIiKTsKKyAgICAgICAgfQorCiAg
ICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShtX2lkZW50KTsKICAgICAg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghdmFyLmxvY2FsKCksICJQcml2YXRlIEZpZWxkIG5hbWVz
IG11c3QgYmUgc3RvcmVkIGluIGNhcHR1cmVkIHZhcmlhYmxlcyIpOwogCkBAIC0xMDk1LDEyICsx
MTI0LDE0IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlCiAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdFB1dFRoaXNUb0Fycm93RnVuY3Rpb25Db250ZXh0U2NvcGUoKTsKIAogICAgICAgICAvLyBJ
bml0aWFsaXplIGluc3RhbmNlIGZpZWxkcyBhZnRlciBzdXBlci1jYWxsLgorICAgICAgICBpZiAo
T3B0aW9uczo6dXNlUHJpdmF0ZU1ldGhvZHMoKSAmJiBnZW5lcmF0b3IucHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQoKSA9PSBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6TmVlZGVkKQorICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRJbnN0YWxsUHJpdmF0ZUJyYW5kKGdlbmVyYXRvci50aGlzUmVnaXN0
ZXIoKSk7CisKICAgICAgICAgaWYgKGdlbmVyYXRvci5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
cigpID09IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpZZXMpIHsKICAgICAgICAgICAgIEFT
U0VSVChnZW5lcmF0b3IuaXNDb25zdHJ1Y3RvcigpIHx8IGdlbmVyYXRvci5pc0Rlcml2ZWRDb25z
dHJ1Y3RvckNvbnRleHQoKSk7CiAgICAgICAgICAgICBmdW5jID0gZ2VuZXJhdG9yLmVtaXRMb2Fk
RGVyaXZlZENvbnN0cnVjdG9yKCk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEluc3RhbmNl
RmllbGRJbml0aWFsaXphdGlvbklmTmVlZGVkKGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSwgZnVu
Yy5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgfQot
CiAgICAgICAgIHJldHVybiByZXQ7CiAgICAgfQogCkBAIC0yMjU0LDE0ICsyMjg1LDE0IEBAIFJl
Z2lzdGVySUQqIFBvc3RmaXhOb2RlOjplbWl0RG90KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdCkKIAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8o
ZG90QWNjZXNzb3ItPmRpdm90KCksIGRvdEFjY2Vzc29yLT5kaXZvdFN0YXJ0KCksIGRvdEFjY2Vz
c29yLT5kaXZvdEVuZCgpKTsKIAotICAgIGlmIChkb3RBY2Nlc3Nvci0+aXNQcml2YXRlRmllbGQo
KSkgeworICAgIGlmIChkb3RBY2Nlc3Nvci0+aXNQcml2YXRlTWVtYmVyKCkpIHsKICAgICAgICAg
QVNTRVJUKCFiYXNlSXNTdXBlcik7CiAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52
YXJpYWJsZShpZGVudCk7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVy
YXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CiAgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgp
LCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsKIAotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdERpcmVjdEdldEJ5VmFsKGdlbmVyYXRvci5uZXdUZW1w
b3JhcnkoKSwgYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCkpOworICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldFByaXZhdGVOYW1lKGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKSwgYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCkpOwogICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gb2xkVmFsdWUgPSBlbWl0UG9zdEluY09yRGVjKGdlbmVyYXRv
ciwgZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCB2YWx1ZS5nZXQoKSwgbV9vcGVyYXRv
cik7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RT
dGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcml2YXRlRmllbGRQ
dXQoYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCksIHZhbHVlLmdldCgpKTsKQEAgLTI0OTMs
MTQgKzI1MjQsMTQgQEAgUmVnaXN0ZXJJRCogUHJlZml4Tm9kZTo6ZW1pdERvdChCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAKICAgICBnZW5lcmF0b3IuZW1p
dEV4cHJlc3Npb25JbmZvKGRvdEFjY2Vzc29yLT5kaXZvdCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RT
dGFydCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RFbmQoKSk7CiAgICAgUmVnaXN0ZXJJRCogdmFsdWU7
Ci0gICAgaWYgKGRvdEFjY2Vzc29yLT5pc1ByaXZhdGVGaWVsZCgpKSB7CisgICAgaWYgKGRvdEFj
Y2Vzc29yLT5pc1ByaXZhdGVNZW1iZXIoKSkgewogICAgICAgICBBU1NFUlQoIWJhc2VOb2RlLT5p
c1N1cGVyTm9kZSgpKTsKICAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxl
KGlkZW50KTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVt
aXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHByaXZhdGVOYW1lID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICBnZW5lcmF0
b3IuZW1pdEdldEZyb21TY29wZShwcml2YXRlTmFtZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwg
RG9Ob3RUaHJvd0lmTm90Rm91bmQpOwogCi0gICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRE
aXJlY3RHZXRCeVZhbChwcm9wRHN0LmdldCgpLCBiYXNlLmdldCgpLCBwcml2YXRlTmFtZS5nZXQo
KSk7CisgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlTmFtZShwcm9wRHN0
LmdldCgpLCBiYXNlLmdldCgpLCBwcml2YXRlTmFtZS5nZXQoKSk7CiAgICAgICAgIGVtaXRJbmNP
ckRlYyhnZW5lcmF0b3IsIHZhbHVlLCBtX29wZXJhdG9yKTsKICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAg
ICAgICBnZW5lcmF0b3IuZW1pdFByaXZhdGVGaWVsZFB1dChiYXNlLmdldCgpLCBwcml2YXRlTmFt
ZS5nZXQoKSwgdmFsdWUpOwpAQCAtNDg5Nyw2ICs0OTI4LDEzIEBAIFJlZ2lzdGVySUQqIENsYXNz
RXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklECiAgICAgaWYgKG1fbmVlZHNMZXhpY2FsU2NvcGUpCiAgICAgICAgIGdlbmVyYXRvci5w
dXNoTGV4aWNhbFNjb3BlKHRoaXMsIEJ5dGVjb2RlR2VuZXJhdG9yOjpURFpDaGVja09wdGltaXph
dGlvbjo6T3B0aW1pemUsIEJ5dGVjb2RlR2VuZXJhdG9yOjpOZXN0ZWRTY29wZVR5cGU6OklzTmVz
dGVkKTsKIAorICAgIGJvb2wgaGFzUHJpdmF0ZU5hbWVzID0gISFtX2xleGljYWxWYXJpYWJsZXMu
cHJpdmF0ZU5hbWVzU2l6ZSgpOworICAgIGJvb2wgc2hvdWxkRW1pdFByaXZhdGVCcmFuZCA9IG1f
bGV4aWNhbFZhcmlhYmxlcy5oYXNQcml2YXRlTWV0aG9kT3JBY2Nlc3NvcigpOworICAgIGlmICho
YXNQcml2YXRlTmFtZXMpCisgICAgICAgIGdlbmVyYXRvci5wdXNoUHJpdmF0ZUFjY2Vzc05hbWVz
KG1fbGV4aWNhbFZhcmlhYmxlcy5wcml2YXRlTmFtZUVudmlyb25tZW50KCkpOworICAgIGlmIChz
aG91bGRFbWl0UHJpdmF0ZUJyYW5kKQorICAgICAgICBnZW5lcmF0b3IuZW1pdENyZWF0ZVByaXZh
dGVCcmFuZChnZW5lcmF0b3Iuc2NvcGVSZWdpc3RlcigpLCBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9u
LCBtX3Bvc2l0aW9uKTsKKwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzdXBlcmNsYXNzOwogICAg
IGlmIChtX2NsYXNzSGVyaXRhZ2UpIHsKICAgICAgICAgc3VwZXJjbGFzcyA9IGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKTsKQEAgLTQ5MDcsMTcgKzQ5NDUsMTggQEAgUmVnaXN0ZXJJRCogQ2xhc3NF
eHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQKICAgICBib29sIG5lZWRzSG9tZU9iamVjdCA9IGZhbHNlOwogCiAgICAgYXV0byBuZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplciA9IHRoaXMtPmhhc0luc3RhbmNlRmllbGRzKCkgPyBOZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplcjo6WWVzIDogTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6
Ok5vOwotCisgICAgYXV0byBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9IHNob3VsZEVtaXRQcml2
YXRlQnJhbmQgPyBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6TmVlZGVkIDogUHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQ6Ok5vbmU7CiAgICAgaWYgKG1fY29uc3RydWN0b3JFeHByZXNzaW9uKSB7CiAg
ICAgICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yRXhwcmVzc2lvbi0+aXNGdW5jRXhwck5vZGUoKSk7
CiAgICAgICAgIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBtZXRhZGF0YSA9IHN0YXRpY19jYXN0PEZ1
bmNFeHByTm9kZSo+KG1fY29uc3RydWN0b3JFeHByZXNzaW9uKS0+bWV0YWRhdGEoKTsKICAgICAg
ICAgbWV0YWRhdGEtPnNldEVjbWFOYW1lKGVjbWFOYW1lKCkpOwogICAgICAgICBtZXRhZGF0YS0+
c2V0Q2xhc3NTb3VyY2UobV9jbGFzc1NvdXJjZSk7CiAgICAgICAgIG1ldGFkYXRhLT5zZXROZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplcihuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9PSBOZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplcjo6WWVzKTsKKyAgICAgICAgbWV0YWRhdGEtPnNldFByaXZh
dGVCcmFuZFJlcXVpcmVtZW50KHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KTsKICAgICAgICAgY29u
c3RydWN0b3IgPSBnZW5lcmF0b3IuZW1pdE5vZGUoY29uc3RydWN0b3IuZ2V0KCksIG1fY29uc3Ry
dWN0b3JFeHByZXNzaW9uKTsKICAgICAgICAgbmVlZHNIb21lT2JqZWN0ID0gbV9jbGFzc0hlcml0
YWdlIHx8IG1ldGFkYXRhLT5zdXBlckJpbmRpbmcoKSA9PSBTdXBlckJpbmRpbmc6Ok5lZWRlZDsK
ICAgICB9IGVsc2UKLSAgICAgICAgY29uc3RydWN0b3IgPSBnZW5lcmF0b3IuZW1pdE5ld0RlZmF1
bHRDb25zdHJ1Y3Rvcihjb25zdHJ1Y3Rvci5nZXQoKSwgbV9jbGFzc0hlcml0YWdlID8gQ29uc3Ry
dWN0b3JLaW5kOjpFeHRlbmRzIDogQ29uc3RydWN0b3JLaW5kOjpCYXNlLCBtX25hbWUsIGVjbWFO
YW1lKCksIG1fY2xhc3NTb3VyY2UsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsKKyAgICAg
ICAgY29uc3RydWN0b3IgPSBnZW5lcmF0b3IuZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3Rvcihjb25z
dHJ1Y3Rvci5nZXQoKSwgbV9jbGFzc0hlcml0YWdlID8gQ29uc3RydWN0b3JLaW5kOjpFeHRlbmRz
IDogQ29uc3RydWN0b3JLaW5kOjpCYXNlLCBtX25hbWUsIGVjbWFOYW1lKCksIG1fY2xhc3NTb3Vy
Y2UsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7
CiAKICAgICBjb25zdCBhdXRvJiBwcm9wZXJ0eU5hbWVzID0gZ2VuZXJhdG9yLnByb3BlcnR5TmFt
ZXMoKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvdG90eXBlID0gZ2VuZXJhdG9yLmVtaXRO
ZXdPYmplY3QoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpKTsKQEAgLTQ5OTYsNiArNTAzNSw5IEBA
IFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAgICAgaWYgKG1fbmVlZHNMZXhpY2FsU2NvcGUpCiAg
ICAgICAgIGdlbmVyYXRvci5wb3BMZXhpY2FsU2NvcGUodGhpcyk7CiAKKyAgICBpZiAoaGFzUHJp
dmF0ZU5hbWVzKQorICAgICAgICBnZW5lcmF0b3IucG9wUHJpdmF0ZUFjY2Vzc05hbWVzKCk7CisK
ICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0
LCBjb25zdHJ1Y3Rvci5nZXQoKSksIGNvbnN0cnVjdG9yLmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKaW5k
ZXggODc3ZTYzMjU1MGJjZDUyMDYwYTc1NDVhZWY1MDg2ZGMxOTNhNGZkZi4uNzQwYWQ4MmM3OTU0
YTBmOTgyODIyODM1NjhiMTNlMTlmODQxYmZmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCkBAIC0yNTksMTEgKzI1OSwx
MSBAQCBKU1ZhbHVlIERlYnVnZ2VyQ2FsbEZyYW1lOjpldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lv
bihjb25zdCBTdHJpbmcmIHNjcmlwdCwgSlNPYgogICAgICAgICBldmFsQ29udGV4dFR5cGUgPSBF
dmFsQ29udGV4dFR5cGU6Ok5vbmU7CiAKICAgICBURFpFbnZpcm9ubWVudCB2YXJpYWJsZXNVbmRl
clREWjsKLSAgICBWYXJpYWJsZUVudmlyb25tZW50IHByaXZhdGVOYW1lczsKLSAgICBKU1Njb3Bl
Ojpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKHNjb3BlKCktPmpzU2NvcGUoKSwgdmFy
aWFibGVzVW5kZXJURFosIHByaXZhdGVOYW1lcyk7CisgICAgUHJpdmF0ZU5hbWVFbnZpcm9ubWVu
dCBwcml2YXRlTmFtZUVudmlyb25tZW50OworICAgIEpTU2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFy
aWFibGVzVW5kZXJURFooc2NvcGUoKS0+anNTY29wZSgpLCB2YXJpYWJsZXNVbmRlclREWiwgcHJp
dmF0ZU5hbWVFbnZpcm9ubWVudCk7CiAKICAgICBFQ01BTW9kZSBlY21hTW9kZSA9IGNvZGVCbG9j
ay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5TdHJpY3RDb250ZXh0KCkgPyBFQ01BTW9kZTo6c3Ry
aWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCk7Ci0gICAgYXV0byogZXZhbCA9IERpcmVjdEV2YWxF
eGVjdXRhYmxlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtYWtlU291cmNlKHNjcmlwdCwgY2FsbEZy
YW1lLT5jYWxsZXJTb3VyY2VPcmlnaW4odm0pKSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9j
aygpLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygp
LT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJs
b2NrKCktPmlzQXJyb3dGdW5jdGlvbigpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5p
c0luc2lkZU9yZGluYXJ5RnVuY3Rpb24oKSwgZXZhbENvbnRleHRUeXBlLCAmdmFyaWFibGVzVW5k
ZXJURFosICZwcml2YXRlTmFtZXMsIGVjbWFNb2RlKTsKKyAgICBhdXRvKiBldmFsID0gRGlyZWN0
RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShnbG9iYWxPYmplY3QsIG1ha2VTb3VyY2Uoc2NyaXB0LCBj
YWxsRnJhbWUtPmNhbGxlclNvdXJjZU9yaWdpbih2bSkpLCBjb2RlQmxvY2stPnVubGlua2VkQ29k
ZUJsb2NrKCktPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJs
b2NrKCktPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGNvZGVCbG9jay0+dW5saW5rZWRD
b2RlQmxvY2soKS0+cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSwgY29kZUJsb2NrLT51bmxpbmtl
ZENvZGVCbG9jaygpLT5pc0Fycm93RnVuY3Rpb24oKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFi
bGUoKS0+aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKCksIGV2YWxDb250ZXh0VHlwZSwgJnZhcmlh
Ymxlc1VuZGVyVERaLCAmcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgZWNtYU1vZGUpOwogICAgIGlm
IChVTkxJS0VMWShjYXRjaFNjb3BlLmV4Y2VwdGlvbigpKSkgewogICAgICAgICBleGNlcHRpb24g
PSBjYXRjaFNjb3BlLmV4Y2VwdGlvbigpOwogICAgICAgICBjYXRjaFNjb3BlLmNsZWFyRXhjZXB0
aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggN2I1YjY4NDU4ODVhNDVkMzJjZjkwMjJjMDkw
ZWFhZmVlODczZDZiZC4uNDYwYTYwZTQyMzkwMTBkNGY5YjRlNGQ3OWZhYWU3YWFmMjc4MzI5NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkFycmF5Q29u
c3RydWN0b3IuaCIKICNpbmNsdWRlICJBcnJheVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkNhY2hl
YWJsZUlkZW50aWZpZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiQ2hlY2tQcml2YXRlQnJhbmRTdGF0
dXMuaCIKICNpbmNsdWRlICJERkdBYnN0cmFjdEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiREZH
QWJzdHJhY3RJbnRlcnByZXRlckNsb2JiZXJTdGF0ZS5oIgogI2luY2x1ZGUgIkRPTUpJVEdldHRl
clNldHRlci5oIgpAQCAtNDcsNiArNDgsNyBAQAogI2luY2x1ZGUgIk1hdGhDb21tb24uaCIKICNp
bmNsdWRlICJOdW1iZXJDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIK
KyNpbmNsdWRlICJTZXRQcml2YXRlQnJhbmRTdGF0dXMuaCIKICNpbmNsdWRlICJTdHJpbmdPYmpl
Y3QuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVDYWNoZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVJh
cmVEYXRhSW5saW5lcy5oIgpAQCAtNDAzNSw2ICs0MDM3LDggQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJl
ckxpbWkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBDaGVja1ByaXZhdGVCcmFu
ZDoKKyAgICBjYXNlIFNldFByaXZhdGVCcmFuZDoKICAgICBjYXNlIFB1dFByaXZhdGVOYW1lOiB7
CiAgICAgICAgIGNsb2JiZXJXb3JsZCgpOwogICAgICAgICBicmVhazsKQEAgLTQzNjUsNiArNDM2
OSw4IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1
dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3Rh
dHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVyRGVsZXRl
QnlTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1czoKKyAgICBj
YXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czoKICAgICBjYXNlIENsZWFyQ2F0Y2hMb2Nh
bHM6CiAgICAgICAgIGJyZWFrOwogCkBAIC00NTUzLDYgKzQ1NTksMjEgQEAgdm9pZCBBYnN0cmFj
dEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZmlsdGVySUNTdGF0dXMoTm9kZSogbm9k
ZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVC
cmFuZFN0YXR1czogeworICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICBpZiAodmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkK
KyAgICAgICAgICAgIG5vZGUtPmNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzKCktPmZpbHRlcih2YWx1
ZS5tX3N0cnVjdHVyZS50b1N0cnVjdHVyZVNldCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CisgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6IHsKKyAgICAgICAgQWJzdHJh
Y3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgaWYgKHZh
bHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpCisgICAgICAgICAgICBub2RlLT5zZXRQcml2YXRl
QnJhbmRTdGF0dXMoKS0+ZmlsdGVyKHZhbHVlLm1fc3RydWN0dXJlLnRvU3RydWN0dXJlU2V0KCkp
OworICAgICAgICBicmVhazsKKyAgICB9CisKKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5j
cHAKaW5kZXggNmIzNjE5OTVlMmQ4NTZjY2NjODRjOTk1MmZkMGNkM2NjYjUzYWM4Zi4uNmY4MTcz
ODhhYzM4ZmU1YWZlMDIwZTQwZjA0ZTM2NzM1NDE1NTYzOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3Bw
CkBAIC00MDYsNiArNDA2LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRl
ckNhbGxMaW5rU3RhdHVzOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVz
OgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CisgICAgICAgICAg
ICAgICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1czoKKyAgICAgICAgICAgICAg
ICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czoKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAKICAgICAgICAgICAgICAgICBjYXNlIENoZWNrQXJyYXlPckVtcHR5OgpAQCAtMTI2
Niw3ICsxMjY4LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlclB1dEJ5
SWRTdGF0dXM6CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKICAg
ICAgICAgICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKLSAgICAgICAgICAgICAgICBj
YXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOiB7CisgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJE
ZWxldGVCeVN0YXR1czoKKyAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJy
YW5kU3RhdHVzOgorICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3Rh
dHVzOiB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghaXNFbGltaW5hdGVkQWxsb2NhdGlvbihu
b2RlLT5jaGlsZDEoKS5ub2RlKCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZShtX2dyYXBoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggYzMwMmJjZWQwODlj
OWM0M2MyOWRkZjg4MWVhMjg3NzI2NDNkNzQwZC4uMzkzYzA1YjE5ZTM1YzA4YTM5NDI0ZTcxMTk5
OTU0NzY4MTRhYzAzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJCeXRlY29kZU9wZXJh
bmRzRm9yQ2hlY2twb2ludC5oIgogI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtTdGF0dXMuaCIKKyNpbmNsdWRlICJDaGVja1ByaXZhdGVC
cmFuZFN0YXR1cy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvZGVCbG9j
a1dpdGhKSVRUeXBlLmgiCiAjaW5jbHVkZSAiQ29tbW9uU2xvd1BhdGhzLmgiCkBAIC03NCw2ICs3
NSw3IEBACiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1
cy5oIgogI2luY2x1ZGUgIlJlZ0V4cFByb3RvdHlwZS5oIgorI2luY2x1ZGUgIlNldFByaXZhdGVC
cmFuZFN0YXR1cy5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCiAjaW5jbHVkZSAiU3Ry
aW5nQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgpAQCAtNjI1
OCw2ICs2MjYwLDkxIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQg
bGltaXQpCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wdXRfYnlfdmFsX3dpdGhfdGhpcyk7
CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX2NoZWNrX3ByaXZhdGVfYnJhbmQ6IHsKKyAg
ICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQ2hlY2tQ
cml2YXRlQnJhbmQ+KCk7CisgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1f
YmFzZSk7CisgICAgICAgICAgICBOb2RlKiBicmFuZCA9IGdldChieXRlY29kZS5tX2JyYW5kKTsK
KyAgICAgICAgICAgIGJvb2wgY29tcGlsZWRBc0NoZWNrU3RydWN0dXJlID0gZmFsc2U7CisKKyAg
ICAgICAgICAgIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzIGNoZWNrU3RhdHVzID0gQ2hlY2tQcml2
YXRlQnJhbmRTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFj
a1RvcC0+bV9wcm9maWxlZEJsb2NrLAorICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3At
Pm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ssCisgICAgICAgICAgICAgICAgY3VycmVu
dENvZGVPcmlnaW4oKSk7CisKKyAgICAgICAgICAgIGlmICghbV9pbmxpbmVTdGFja1RvcC0+bV9l
eGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkSWRlbnQpCisgICAgICAg
ICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUo
bV9jdXJyZW50SW5kZXgsIEJhZFR5cGUpCisgICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3Rh
Y2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENvbnN0
YW50VmFsdWUpKSB7CisKKyAgICAgICAgICAgICAgICBpZiAoQ2FjaGVhYmxlSWRlbnRpZmllciBp
ZGVudGlmaWVyID0gY2hlY2tTdGF0dXMuc2luZ2xlSWRlbnRpZmllcigpKSB7CisgICAgICAgICAg
ICAgICAgICAgIG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUoaWRlbnRpZmllci51aWQoKSk7
CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChpZGVudGlmaWVyLmlzU3ltYm9sKCkpOworICAg
ICAgICAgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJv
bmcoaWRlbnRpZmllci5jZWxsKCkpOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENo
ZWNrSXNDb25zdGFudCwgT3BJbmZvKGZyb3plbiksIGJyYW5kKTsKKworICAgICAgICAgICAgICAg
ICAgICBpZiAoY2hlY2tTdGF0dXMuaXNTaW1wbGUoKSAmJiBjaGVja1N0YXR1cy52YXJpYW50cygp
LnNpemUoKSAmJiBPcHRpb25zOjp1c2VBY2Nlc3NJbmxpbmluZygpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQoY2hlY2tTdGF0dXMudmFyaWFudHMoKS5zaXplKCkgPT0gMSk7IC8v
IElmIHdlIGhhdmUgc2luZ2xlIGlkZW50aWZpZXIsIHdlIHNob3VsZCBoYXZlIG9ubHkgMSB2YXJp
YW50LgorICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50IHZh
cmlhbnQgPSBjaGVja1N0YXR1cy52YXJpYW50cygpWzBdOworCisgICAgICAgICAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLCBPcEluZm8obV9n
cmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFkZENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVz
KGN1cnJlbnRDb2RlT3JpZ2luKCksIGNoZWNrU3RhdHVzKSksIGJhc2UpOworICAgICAgICAgICAg
ICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRk
U3RydWN0dXJlU2V0KHZhcmlhbnQuc3RydWN0dXJlU2V0KCkpKSwgYmFzZSk7CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbXBpbGVkQXNDaGVja1N0cnVjdHVyZSA9IHRydWU7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmICghY29tcGlsZWRBc0NoZWNrU3RydWN0dXJlKQorICAgICAgICAgICAgICAgIGFk
ZFRvR3JhcGgoQ2hlY2tQcml2YXRlQnJhbmQsIGJhc2UsIGJyYW5kKTsKKworICAgICAgICAgICAg
TkVYVF9PUENPREUob3BfY2hlY2tfcHJpdmF0ZV9icmFuZCk7CisgICAgICAgIH0KKworICAgICAg
ICBjYXNlIG9wX3NldF9wcml2YXRlX2JyYW5kOiB7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFNldFByaXZhdGVCcmFuZD4oKTsKKyAgICAgICAg
ICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKKyAgICAgICAgICAgIE5vZGUq
IGJyYW5kID0gZ2V0KGJ5dGVjb2RlLm1fYnJhbmQpOworCisgICAgICAgICAgICBib29sIGlubGlu
ZWRTZXRQcml2YXRlQnJhbmQgPSBmYWxzZTsKKyAgICAgICAgICAgIFNldFByaXZhdGVCcmFuZFN0
YXR1cyBzZXRTdGF0dXMgPSBTZXRQcml2YXRlQnJhbmRTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAg
ICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLAorICAgICAgICAg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ss
CisgICAgICAgICAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSk7CisKKyAgICAgICAgICAgIGlm
ICghbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJ
bmRleCwgQmFkSWRlbnQpCisgICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1f
ZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZFR5cGUpCisgICAgICAg
ICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUo
bV9jdXJyZW50SW5kZXgsIEJhZENvbnN0YW50VmFsdWUpKSB7CisKKyAgICAgICAgICAgICAgICBp
ZiAoQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gc2V0U3RhdHVzLnNpbmdsZUlkZW50
aWZpZXIoKSkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaWRlbnRpZmllci5pc1N5bWJv
bCgpKTsKKyAgICAgICAgICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plbiA9IG1fZ3JhcGgu
ZnJlZXplU3Ryb25nKGlkZW50aWZpZXIuY2VsbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgYWRk
VG9HcmFwaChDaGVja0lzQ29uc3RhbnQsIE9wSW5mbyhmcm96ZW4pLCBicmFuZCk7CisKKworICAg
ICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGluY2x1ZGUgYSBNdWx0aVNldFBy
aXZhdGVCcmFuZCB0byBoYW5kbGUgcG9seW1vcnBoaWMgY2FzZXMKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHNldFN0YXR1cy5pc1NpbXBsZSgpICYmIHNldFN0YXR1cy52YXJpYW50cygpLnNpemUo
KSA9PSAxICYmIE9wdGlvbnM6OnVzZUFjY2Vzc0lubGluaW5nKCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIFNldFByaXZhdGVCcmFuZFZhcmlhbnQgdmFyaWFudCA9IHNldFN0YXR1cy52YXJp
YW50cygpWzBdOworCisgICAgICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEZpbHRlclNl
dFByaXZhdGVCcmFuZFN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVz
ZXMoKS5hZGRTZXRQcml2YXRlQnJhbmRTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgc2V0U3Rh
dHVzKSksIGJhc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja1N0
cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHZhcmlhbnQub2xkU3RydWN0
dXJlKCkpKSwgYmFzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQodmFyaWFudC5v
bGRTdHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQo
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQodmFyaWFudC5uZXdTdHJ1Y3R1cmUo
KSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24qIHRyYW5zaXRpb24gPSBt
X2dyYXBoLm1fdHJhbnNpdGlvbnMuYWRkKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
Z3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSksIG1fZ3JhcGgu
cmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSkpOworCisgICAgICAgICAg
ICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dFN0cnVjdHVyZSwgT3BJbmZvKHRyYW5zaXRpb24p
LCBiYXNlKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lZFNldFByaXZhdGVCcmFu
ZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghaW5saW5lZFNldFByaXZhdGVCcmFuZCkKKyAg
ICAgICAgICAgICAgICBhZGRUb0dyYXBoKFNldFByaXZhdGVCcmFuZCwgYmFzZSwgYnJhbmQpOwor
CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9zZXRfcHJpdmF0ZV9icmFuZCk7CisgICAgICAg
IH0KKwogICAgICAgICBjYXNlIG9wX3B1dF9wcml2YXRlX25hbWU6IHsKICAgICAgICAgICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7
CiAgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1fYmFzZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggMTBiODVhZDkx
NWE5YmFiMjJmZmY0NTAwNjJhMTMxYWZkYTc1NmRiMy4uYWNhMDBkZTRmNjUxZjk0ZWE0OGM5NGM2
ODU5OWVhNWQyN2VkYmMxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2Fw
YWJpbGl0aWVzLmNwcApAQCAtMjk0LDYgKzI5NCw4IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmls
aXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJ
CiAgICAgY2FzZSBvcF9zdXBlcl9zYW1wbGVyX2VuZDoKICAgICBjYXNlIG9wX2dldF9wcml2YXRl
X25hbWU6CiAgICAgY2FzZSBvcF9wdXRfcHJpdmF0ZV9uYW1lOgorICAgIGNhc2Ugb3Bfc2V0X3By
aXZhdGVfYnJhbmQ6CisgICAgY2FzZSBvcF9jaGVja19wcml2YXRlX2JyYW5kOgogICAgICAgICBy
ZXR1cm4gQ2FuQ29tcGlsZUFuZElubGluZTsKIAogICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzog
Ly8gRG9uJ3QgaW5saW5lIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBjb3B5IHN0cmluZyB0YWJs
ZXMgaW4gdGhlIGNvbmN1cnJlbnQgSklULgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaAppbmRleCA1NGUzNWU3YzU2OGE1MDYxOTZmMTNmYTU5Njc0ODNmZTdhZTg0NjA2
Li5kZjIxYmRlMTg4YTBiZDRjYTIxOWJiNWQyNTcwZTE4ZjQwN2I4NDFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtNTA1LDYgKzUwNSw4IEBAIHZvaWQg
Y2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiBy
ZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNh
c2UgRmlsdGVySW5CeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6Cisg
ICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlclNl
dFByaXZhdGVCcmFuZFN0YXR1czoKICAgICAgICAgd3JpdGUoU2lkZVN0YXRlKTsKICAgICAgICAg
cmV0dXJuOwogICAgICAgICAKQEAgLTY3Nyw2ICs2NzksOSBAQCB2b2lkIGNsb2JiZXJpemUoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3Jp
dGVGdQogICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgogICAgIGNhc2UgR2V0UHJpdmF0ZU5h
bWU6CiAgICAgY2FzZSBHZXRQcml2YXRlTmFtZUJ5SWQ6CisgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCBoYXZlIGEgYmV0dGVyIGNsb2Jlcml6ZSBydWxlIGZvciBib3RoIENoZWNrUHJpdmF0ZUJyYW5k
IFNldFByaXZhdGVCcmFuZAorICAgIGNhc2UgQ2hlY2tQcml2YXRlQnJhbmQ6CisgICAgY2FzZSBT
ZXRQcml2YXRlQnJhbmQ6CiAgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6CiAgICAgY2FzZSBE
ZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAgIGNhc2UgRGVsZXRlQnlJZDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKaW5kZXggYjk1
ZjI0MzUwYmI3NTlkZWQ2ODk2Y2ZlNjMwMWU0ZmJlNTkwYmM3ZS4uNmZkNGE3NmI2MThmODkyYmE1
NTdiOTgzZDNmZTU1MzI2NGM0ZDhjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKQEAgLTg0LDYgKzg0LDggQEAgYm9vbCBjbG9i
YmVyc0V4aXRTdGF0ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBGaWx0ZXJQ
dXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgogICAgIGNhc2UgRmls
dGVyRGVsZXRlQnlTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1
czoKKyAgICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czoKICAgICBjYXNlIFRyeUdl
dEJ5SWQ6CiAgICAgICAgIC8vIFRoZXNlIGRvIGNsb2JiZXIgbWVtb3J5LCBidXQgbm90aGluZyB0
aGF0IGlzIG9ic2VydmFibGUuIEl0IG1heSBiZSBuaWNlIHRvIHNlcGFyYXRlIHRoZQogICAgICAg
ICAvLyBoZWFwcyBpbnRvIHRob3NlIHRoYXQgYXJlIG9ic2VydmFibGUgYW5kIHRob3NlIHRoYXQg
YXJlbid0LCBidXQgd2UgZG9uJ3QgZG8gdGhhdCByaWdodCBub3cuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggZTk5M2ZiMDYxYWIzOWQwNjg1YzIxMTJjZTUzYTY0
NDYwYWQ3ZmU5ZC4uYjcxNjEwYTUxZGI3MTdlNTNkYmU1ZTQ5YjNjYWU2YmIwNzg1MjY2MiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMjUwLDYgKzI1MCw4IEBA
IGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEZpbHRlclB1
dEJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0
ZXJEZWxldGVCeVN0YXR1czoKKyAgICBjYXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVz
OgorICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOgogICAgIGNhc2UgRGF0ZUdl
dEludDMyT3JOYU46CiAgICAgY2FzZSBEYXRlR2V0VGltZToKICAgICBjYXNlIERhdGFWaWV3R2V0
SW50OgpAQCAtMzI3LDYgKzMyOSw4IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZSkKICAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKICAgICBjYXNlIEdldFByaXZhdGVO
YW1lOgogICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOgorICAgIGNhc2UgU2V0UHJpdmF0ZUJy
YW5kOgorICAgIGNhc2UgQ2hlY2tQcml2YXRlQnJhbmQ6CiAgICAgY2FzZSBQdXRTdGFjazoKICAg
ICBjYXNlIFB1dFRvQXJndW1lbnRzOgogICAgIGNhc2UgUmVnRXhwRXhlYzoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IGMyYTQ1ZDA0OGQ4NzdhNGM3
Y2E4YTEyZGUzMjU3YjNiNTA4OTNlNDMuLjE4MWNiMmI2ZjljODc0OGMyNzFkODVjYTYzYTdlYTI5
NDljOGEzNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cApAQCAtMTkzMSw2ICsxOTMxLDEzIEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogCisgICAgICAg
IGNhc2UgU2V0UHJpdmF0ZUJyYW5kOiB7CisgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8U3ltYm9sVXNlPihub2RlLT5jaGls
ZDIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgQ2hl
Y2tQcml2YXRlQnJhbmQ6CiAgICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6IHsKICAgICAgICAg
ICAgIGZpeEVkZ2U8U3ltYm9sVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICBicmVh
azsKQEAgLTI4MjcsNiArMjgzNCw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgRmlsdGVyUHV0
QnlJZFN0YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CiAgICAgICAgIGNh
c2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRl
QnJhbmRTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOgog
ICAgICAgICBjYXNlIEludmFsaWRhdGlvblBvaW50OgogICAgICAgICBjYXNlIENyZWF0ZUFyZ3Vt
ZW50c0J1dHRlcmZseToKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5oCmluZGV4IGIzYTliZmY1Y2QyYWFlNzkyMTQ3ZGU4ZjJjYmE1YjRkNjE3YWFmZDQu
Ljk3NGZmZmMyZWVmMGRjMTMyMjdiOTFiMjZmMTVhMWZmNGYxMDMxOWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmgKQEAgLTExODIsNiArMTE4Miw3IEBAIHB1YmxpYzoKICAgICBS
ZWdpc3RlcmVkU3RydWN0dXJlIHN5bWJvbFN0cnVjdHVyZTsKIAogICAgIEhhc2hTZXQ8Tm9kZSo+
IG1fc2xvd0dldEJ5VmFsOworICAgIEhhc2hTZXQ8Tm9kZSo+IG1fcHJpdmF0ZUJyYW5kQWNjZXNz
OwogCiBwcml2YXRlOgogICAgIGJvb2wgaXNTdHJpbmdQcm90b3R5cGVNZXRob2RTYW5lKEpTR2xv
YmFsT2JqZWN0KiwgVW5pcXVlZFN0cmluZ0ltcGwqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5jcHAKaW5kZXggZDg2YWNhNDFkNmM0OWRmYjZhNjFjMWM1OGMz
NTMxZWYxZGU2NzAxZC4uNzgyNjRjZWEwMTc1YzRkNjJhNDJlYTBjMTU3ZTA0NDFiNWI1ODFiNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKQEAgLTI0
NSw2ICsyNDUsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCdWZm
ZXIpCiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9kZWxCeVZhbHMsIGxpbmtCdWZmZXIpOwog
ICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5CeUlkcywgbGlua0J1ZmZlcik7CiAgICAgZmlu
YWxpemVJbmxpbmVDYWNoZXMobV9pbnN0YW5jZU9mcywgbGlua0J1ZmZlcik7CisgICAgZmluYWxp
emVJbmxpbmVDYWNoZXMobV9wcml2YXRlQnJhbmRBY2Nlc3NlcywgbGlua0J1ZmZlcik7CiAKICAg
ICBhdXRvIGxpbmtDYWxsVGh1bmsgPSBGdW5jdGlvblB0cjxOb1B0clRhZz4odm0oKS5nZXRDVElT
dHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAg
ICAgZm9yIChhdXRvJiByZWNvcmQgOiBtX2pzQ2FsbHMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29tcGlsZXIuaAppbmRleCA5OWZiYjgyYTg4YmNmZjQzMDVjOTMzMzdiNGZi
ZTIyOWZmMzE0ZTBkLi44OGQ2Mjc2NzI0OGUxODhlZjAzNzU5NjNkYzE3MmJmYzU0YmJkODBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCkBAIC0yMTIsNiAr
MjEyLDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9pbkJ5SWRzLmFwcGVuZChJbmxpbmVDYWNoZVdy
YXBwZXI8SklUSW5CeUlkR2VuZXJhdG9yPihnZW4sIHNsb3dQYXRoKSk7CiAgICAgfQogCisgICAg
dm9pZCBhZGRQcml2YXRlQnJhbmRBY2Nlc3MoY29uc3QgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2Vu
ZXJhdG9yJiBnZW4sIFNsb3dQYXRoR2VuZXJhdG9yKiBzbG93UGF0aCkKKyAgICB7CisgICAgICAg
IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMuYXBwZW5kKElubGluZUNhY2hlV3JhcHBlcjxKSVRQcml2
YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I+KGdlbiwgc2xvd1BhdGgpKTsKKyAgICB9CisKICAgICB2
b2lkIGFkZEpTQ2FsbChDYWxsIGZhc3RDYWxsLCBDYWxsIHNsb3dDYWxsLCBEYXRhTGFiZWxQdHIg
dGFyZ2V0VG9DaGVjaywgQ2FsbExpbmtJbmZvKiBpbmZvKQogICAgIHsKICAgICAgICAgbV9qc0Nh
bGxzLmFwcGVuZChKU0NhbGxSZWNvcmQoZmFzdENhbGwsIHNsb3dDYWxsLCB0YXJnZXRUb0NoZWNr
LCBpbmZvKSk7CkBAIC0zNjIsNiArMzY3LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8SW5saW5l
Q2FjaGVXcmFwcGVyPEpJVERlbEJ5VmFsR2VuZXJhdG9yPiwgND4gbV9kZWxCeVZhbHM7CiAgICAg
VmVjdG9yPElubGluZUNhY2hlV3JhcHBlcjxKSVRJbkJ5SWRHZW5lcmF0b3I+LCA0PiBtX2luQnlJ
ZHM7CiAgICAgVmVjdG9yPElubGluZUNhY2hlV3JhcHBlcjxKSVRJbnN0YW5jZU9mR2VuZXJhdG9y
PiwgND4gbV9pbnN0YW5jZU9mczsKKyAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVFBy
aXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcj4sIDQ+IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXM7CiAg
ICAgVmVjdG9yPEpTQ2FsbFJlY29yZCwgND4gbV9qc0NhbGxzOwogICAgIFZlY3RvcjxKU0RpcmVj
dENhbGxSZWNvcmQsIDQ+IG1fanNEaXJlY3RDYWxsczsKICAgICBWZWN0b3I8SlNEaXJlY3RUYWls
Q2FsbFJlY29yZCwgND4gbV9qc0RpcmVjdFRhaWxDYWxsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR01heUV4aXQuY3BwCmluZGV4IDA1YjkzYmUwOTFhZmExYzExMGU1YjhkMzhiZGMzYzFh
ZDM5N2MxNTUuLjY3YmExODQ1ZDE2YmY4MzNiZDU2OTMzM2I5NWE4NGM4YTJiY2UyNDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcApAQCAtMTA4LDYgKzEwOCw4IEBA
IEV4aXRNb2RlIG1heUV4aXRJbXBsKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgU3RhdGVUeXBl
JiBzdGF0ZSkKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJJ
bkJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKKyAgICBjYXNlIEZp
bHRlckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0ZUJy
YW5kU3RhdHVzOgogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU3RyQ2F0OgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaAppbmRleCAyNjA0YzdlN2FkOTM0OWY5NzNiMDI0Y2Y5MmVkZWRm
MTJhMzhjMWU2Li41ODkzYmU4MDY2MDE2OTliNjcwMTQwYjIxY2U5Yjc0ZWFmOTNkMTFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVk
ZSAiQjNTcGFyc2VDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiQmFzaWNCbG9ja0xvY2F0aW9uLmgi
CisjaW5jbHVkZSAiQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50LmgiCiAjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCiAjaW5jbHVkZSAiREZHQWRqYWNlbmN5TGlzdC5oIgogI2luY2x1ZGUgIkRGR0FyaXRo
TW9kZS5oIgpAQCAtNTQsNiArNTUsNyBAQAogI2luY2x1ZGUgIk9wZXJhbmRzLmgiCiAjaW5jbHVk
ZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUgIlB1dEJ5SWRWYXJpYW50LmgiCisj
aW5jbHVkZSAiU2V0UHJpdmF0ZUJyYW5kVmFyaWFudC5oIgogI2luY2x1ZGUgIlNwZWN1bGF0ZWRU
eXBlLmgiCiAjaW5jbHVkZSAiVHlwZUxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiVmFsdWVQcm9maWxl
LmgiCkBAIC0zMTQwLDYgKzMxNDIsMjggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9vcElu
Zm8uYXM8RGVsZXRlQnlTdGF0dXMqPigpOwogICAgIH0KIAorICAgIGJvb2wgaGFzQ2hlY2tQcml2
YXRlQnJhbmRTdGF0dXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gRmlsdGVyQ2hl
Y2tQcml2YXRlQnJhbmRTdGF0dXM7CisgICAgfQorCisgICAgQ2hlY2tQcml2YXRlQnJhbmRTdGF0
dXMqIGNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXND
aGVja1ByaXZhdGVCcmFuZFN0YXR1cygpKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPENo
ZWNrUHJpdmF0ZUJyYW5kU3RhdHVzKj4oKTsKKyAgICB9CisKKyAgICBib29sIGhhc1NldFByaXZh
dGVCcmFuZFN0YXR1cygpCisgICAgeworICAgICAgICByZXR1cm4gb3AoKSA9PSBGaWx0ZXJTZXRQ
cml2YXRlQnJhbmRTdGF0dXM7CisgICAgfQorCisgICAgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzKiBz
ZXRQcml2YXRlQnJhbmRTdGF0dXMoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc1NldFByaXZh
dGVCcmFuZFN0YXR1cygpKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPFNldFByaXZhdGVC
cmFuZFN0YXR1cyo+KCk7CisgICAgfQorCiAgICAgdm9pZCBkdW1wQ2hpbGRyZW4oUHJpbnRTdHJl
YW0mIG91dCkKICAgICB7CiAgICAgICAgIGlmICghY2hpbGQxKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggNjQ5NmMxNzgwNDFjOTE5ZTk0MGFmNDQ0ODg1YmQ0
ZWQ5YjFjMGM1MS4uMjM3MWZiZmRkYjI3M2ZiODFkODdjZWU1YTM0ZTliMDQxZjI3OTJlYSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMjEyLDYgKzIxMiw4IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhQdXRCeVZhbEFsaWFz
LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNybyhQdXRQcml2
YXRlTmFtZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFB1dFByaXZhdGVOYW1lQnlJ
ZCwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKENoZWNrUHJpdmF0ZUJyYW5kLCBOb2Rl
TXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oU2V0UHJpdmF0ZUJyYW5kLCBOb2RlTXVzdEdlbmVy
YXRlKSBcCiAgICAgbWFjcm8oVHJ5R2V0QnlJZCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8o
R2V0QnlJZCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdl
dEJ5SWRGbHVzaCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXApAQCAtNTQ0LDYg
KzU0Niw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhGaWx0
ZXJJbkJ5SWRTdGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhGaWx0ZXJQdXRC
eUlkU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oRmlsdGVyRGVsZXRlQnlT
dGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhGaWx0ZXJDaGVja1ByaXZhdGVC
cmFuZFN0YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKEZpbHRlclNldFByaXZh
dGVCcmFuZFN0YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIC8qIERhdGEgdmlldyBhY2Nl
c3MgKi8gXAogICAgIG1hY3JvKERhdGFWaWV3R2V0SW50LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9k
ZVJlc3VsdEpTKSAvKiBUaGUgZ2V0cyBhcmUgbXVzdCBnZW5lcmF0ZSBmb3Igbm93IGJlY2F1c2Ug
dGhleSBkbyBib3VuZHMgY2hlY2tzICovIFwKICAgICBtYWNybyhEYXRhVmlld0dldEZsb2F0LCBO
b2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdERvdWJsZSkgXApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFz
ZS5jcHAKaW5kZXggOTk1NGQ1OTEyMmVmYmIxOWZiOTA4YzExMGY2ZjdkYmM1Yzg1ZDUyMS4uN2E2
OWU0ZThkNWZlNThlNzU4OWFiNTU1OTlhYzMzOWVmMGQzNGIxMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5n
UGhhc2UuY3BwCkBAIC0xMjYxLDYgKzEyNjEsOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEZp
bHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgogICAg
ICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlckNoZWNr
UHJpdmF0ZUJyYW5kU3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0
YXR1czoKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGRlZmF1bHQ6CkBAIC0yNjExLDYg
KzI2MTMsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0
YXR1czoKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKICAgICAgICAg
ICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgorICAgICAgICAgICAgICAgIGNhc2Ug
RmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CisgICAgICAgICAgICAgICAgY2FzZSBGaWx0
ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5j
aGlsZDEoKS0+aXNQaGFudG9tQWxsb2NhdGlvbigpKQogICAgICAgICAgICAgICAgICAgICAgICAg
bm9kZS0+cmVtb3ZlV2l0aG91dENoZWNrcygpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggYWIxZmU4YWVjYTEzOWNkYmE4NzQwOGQ3ODFjNThh
MmM5Mjk0MjVmZC4uNWQ3M2ZjNzI4ODc3MTliOTViMzFkOWQ2OWYwYTUzYjZkNzg1Yjc0OCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTEzODQsNiArMTM4NCw4IEBAIHByaXZhdGU6CiAgICAg
ICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CiAgICAgICAg
IGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgorICAgICAgICBjYXNlIFNldFByaXZhdGVCcmFuZDoK
KyAgICAgICAgY2FzZSBDaGVja1ByaXZhdGVCcmFuZDoKICAgICAgICAgY2FzZSBQdXRDbG9zdXJl
VmFyOgogICAgICAgICBjYXNlIFB1dEludGVybmFsRmllbGQ6CiAgICAgICAgIGNhc2UgUHV0VG9B
cmd1bWVudHM6CkBAIC0xNDUwLDYgKzE0NTIsOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEZp
bHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgogICAg
ICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlckNoZWNr
UHJpdmF0ZUJyYW5kU3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0
YXR1czoKICAgICAgICAgY2FzZSBDbGVhckNhdGNoTG9jYWxzOgogICAgICAgICBjYXNlIERhdGFW
aWV3U2V0OgogICAgICAgICBjYXNlIEludmFsaWRhdGlvblBvaW50OgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCBhNGY0Yzc1Nzc0YWQ3ZTY3ZTA3
ZjljODQ5M2ZmOTBkMmJiNDU0NzViLi4wMGE0NTEzN2E4ZjE3ZDY5ZmNkOGRkZDFjMTVjOTNjZWE5
ZDY2NGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aApAQCAtMzYyLDYgKzM2Miw4IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlw
ZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBG
aWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgogICAgIGNh
c2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFu
ZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czoKICAgICAgICAg
Ly8gV2UgZG9uJ3Qgd2FudCB0aGVzZSB0byBiZSBtb3ZlZCBhbnl3aGVyZSBvdGhlciB0aGFuIHdo
ZXJlIHdlIHB1dCB0aGVtLCBzaW5jZSB3ZSB3YW50IHRoZW0KICAgICAgICAgLy8gdG8gY2FwdHVy
ZSAicHJvZmlsaW5nIiBhdCB0aGUgcG9pbnQgaW4gY29udHJvbCBmbG93IGhlcmUgdGhlIHVzZXIg
cHV0IHRoZW0uCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTUzMiw2ICs1MzQsOCBAQCBib29s
IHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgogICAgIGNh
c2UgR2V0UHJpdmF0ZU5hbWU6CiAgICAgY2FzZSBHZXRQcml2YXRlTmFtZUJ5SWQ6CisgICAgY2Fz
ZSBDaGVja1ByaXZhdGVCcmFuZDoKKyAgICBjYXNlIFNldFByaXZhdGVCcmFuZDoKICAgICBjYXNl
IERlZmluZURhdGFQcm9wZXJ0eToKICAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAg
ICAgY2FzZSBBcnJheWlmeToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKaW5kZXggMGMzMzQyMjhmMjQ4NDY0NDAzYWQyY2VkOGFlZThjYTY4NWE3
MDMyNS4uZmUwYTExMDkyYjk5ODVkOTdkZDkxZjc3NmUwMDZhNGRiZTM2OWRkNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTM2Njcs
NiArMzY2Nyw3NSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWVC
eUlkKE5vZGUqIG5vZGUpCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVDaGVja1ByaXZhdGVCcmFuZChOb2RlKiBub2RlKQoreworICAgIEpTVmFs
dWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIGJyYW5kVmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworCisgICAgSlNWYWx1ZVJl
Z3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CisKKyAgICBHUFJSZWcgYnJhbmRHUFIg
PSBicmFuZFZhbHVlLmdwcigpOworCisgICAgc3BlY3VsYXRlU3ltYm9sKG5vZGUtPmNoaWxkMigp
LCBicmFuZEdQUik7CisKKyAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4u
c2VtYW50aWM7CisgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxT
aXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2lu
LCBtX3N0cmVhbS0+c2l6ZSgpKTsKKyAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhp
cy0+dXNlZFJlZ2lzdGVycygpOworCisgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNl
czsKKyAgICBpZiAobmVlZHNUeXBlQ2hlY2sobm9kZS0+Y2hpbGQxKCksIFNwZWNDZWxsKSkKKyAg
ICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZVJlZ3MpKTsK
KworICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCisgICAgICAgIG1faml0
LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2
YXRlQnJhbmQsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIGJhc2VSZWdzLCBKU1ZhbHVlUmVnczo6
cGF5bG9hZE9ubHkoYnJhbmRHUFIpKTsKKworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0
KTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAor
ICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1p
emUsIE5vUmVzdWx0LAorICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBi
YXNlUmVncywgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKKworICAgIG1faml0
LmFkZFByaXZhdGVCcmFuZEFjY2VzcyhnZW4sIHNsb3dQYXRoLmdldCgpKTsKKyAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CisKKyAgICBub1Jlc3VsdChub2RlKTsK
K30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNldFByaXZhdGVCcmFuZChOb2RlKiBu
b2RlKQoreworICAgIEFTU0VSVChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSk7
CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Cisg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYnJhbmRWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7
CisKKyAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisgICAgR1BSUmVnIGJyYW5kR1BS
ID0gYnJhbmRWYWx1ZS5ncHIoKTsKKworICAgIHNwZWN1bGF0ZVN5bWJvbChub2RlLT5jaGlsZDIo
KSwgYnJhbmRHUFIpOworCisgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2lu
LnNlbWFudGljOworICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxs
U2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdp
biwgbV9zdHJlYW0tPnNpemUoKSk7CisgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRo
aXMtPnVzZWRSZWdpc3RlcnMoKTsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2Fz
ZXM7CisgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9q
aXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpTZXRQcml2
YXRlQnJhbmQsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25s
eShiYXNlR1BSKSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJyYW5kR1BSKSk7CisKKyAgICBn
ZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xv
d1BhdGhKdW1wKCkpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBz
bG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRp
b25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQsIAorICAgICAgICBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3Jp
Z2luKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwg
Q0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKKworICAgIG1faml0LmFkZFByaXZh
dGVCcmFuZEFjY2VzcyhnZW4sIHNsb3dQYXRoLmdldCgpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CisKKyAgICBub1Jlc3VsdChub2RlKTsKK30KKwogdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrVHlwZUluZm9GbGFncyhOb2RlKiBub2RlKQog
ewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDNj
NjkxMmUzZjgxYTE1YzdkMGFkMGFkODE3Mzc0ZDQ3NGZiZDIzM2QuLmI5YWU2ZTNmYWJjNDBhZTQz
MDlhNjg0YTdlY2EzYTRiNWI0OTY5Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTEzNzMsNiArMTM3Myw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIGNvbXBpbGVHZXRCeVZhbFdpdGhUaGlzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVQdXRQ
cml2YXRlTmFtZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKE5v
ZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVDaGVja1ByaXZhdGVCcmFuZChOb2RlKik7CisgICAgdm9p
ZCBjb21waWxlU2V0UHJpdmF0ZUJyYW5kKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeU9m
ZnNldChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlUHV0QnlPZmZzZXQoTm9kZSopOwogICAgIHZv
aWQgY29tcGlsZU1hdGNoU3RydWN0dXJlKE5vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDFlOGI4YzI5NmM0
MDI2MDc2MzQ0OGUzNjQwMzk2YjY5YTg1ZDgxMTUuLjA3MzI5MDdhN2ZjMmQwNTJhMjYxNTZmN2Ji
ZmViNGE1NzFlYzc3YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMjYwNiw2ICsyNjA2LDE2IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQog
CisgICAgY2FzZSBDaGVja1ByaXZhdGVCcmFuZDogeworICAgICAgICBjb21waWxlQ2hlY2tQcml2
YXRlQnJhbmQobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgU2V0UHJp
dmF0ZUJyYW5kOiB7CisgICAgICAgIGNvbXBpbGVTZXRQcml2YXRlQnJhbmQobm9kZSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CiAgICAgY2FzZSBQ
dXRCeVZhbDoKICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6IHsKQEAgLTQyNDEsNiArNDI1MSw4IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEZpbHRl
clB1dEJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CiAgICAgY2FzZSBG
aWx0ZXJEZWxldGVCeVN0YXR1czoKKyAgICBjYXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5kU3Rh
dHVzOgorICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOgogICAgICAgICBtX2lu
dGVycHJldGVyLmZpbHRlcklDU3RhdHVzKG5vZGUpOwogICAgICAgICBub1Jlc3VsdChub2RlKTsK
ICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAppbmRleCA5YTk3NzI4MWNjN2Q4ZmU3Yjk4NDMyNzg4MTVlYTE0ZDQ2
OGZkYmM5Li5iYzk0MDU3NWJhODQ2YTI3ZWQyODkyNzVjZDUzZTY4NjZjMjE1ZWU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAg
LTI5NjQsNiArMjk2NCwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgQ2hlY2tQcml2YXRlQnJhbmQ6
IHsKKyAgICAgICAgY29tcGlsZUNoZWNrUHJpdmF0ZUJyYW5kKG5vZGUpOworICAgICAgICBicmVh
azsKKyAgICB9CisKKyAgICBjYXNlIFNldFByaXZhdGVCcmFuZDogeworICAgICAgICBjb21waWxl
U2V0UHJpdmF0ZUJyYW5kKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNl
IFB1dEJ5VmFsRGlyZWN0OgogICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgY2FzZSBQdXRCeVZhbEFs
aWFzOiB7CkBAIC01Njc3LDYgKzU2ODcsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmls
dGVySW5CeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CisgICAgY2Fz
ZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlclNldFByaXZh
dGVCcmFuZFN0YXR1czoKICAgICAgICAgbV9pbnRlcnByZXRlci5maWx0ZXJJQ1N0YXR1cyhub2Rl
KTsKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBo
YXNlLmNwcAppbmRleCA3MGU3ODM5OGMzNmEyODY4ZmFmNzI3YzQ4ZWYxMzkxMmQ4ZDM5YTY4Li5i
OTA2NjVlY2NlNTJjNTdmNDRiNzBkNDY3YzRhNGU1YTVmMzcwMmUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBo
YXNlLmNwcApAQCAtMjczLDYgKzI3Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIGNhc2UgU2V0UHJpdmF0ZUJyYW5kOgog
ICAgICAgICAgICAgY2FzZSBQdXRCeUlkOgogICAgICAgICAgICAgY2FzZSBQdXRCeUlkRmx1c2g6
CiAgICAgICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcAppbmRleCA2Njll
NWJiODIzNjczY2FkYmE2OWI1ZmYyNzI5YmM4Y2Q0MzMxMzM5Li4wNjNlZTMxYjA1NWQ2NDA1YmFh
OGVhNTgxYjg3MGQyZGE4NmRlMDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAKQEAgLTE5OSw2ICsxOTksOCBA
QCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKICAgICAg
ICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJE
ZWxldGVCeVN0YXR1czoKKyAgICAgICAgICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRT
dGF0dXM6CisgICAgICAgICAgICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czoKICAg
ICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgY2FzZSBHZXRCeU9mZnNldDogewpA
QCAtNDAyLDYgKzQwNCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIEZpbHRlckNhbGxM
aW5rU3RhdHVzOgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CiAgICAgICAg
ICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgorICAgICAgICAgICAgY2FzZSBGaWx0ZXJD
aGVja1ByaXZhdGVCcmFuZFN0YXR1czoKKyAgICAgICAgICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0
ZUJyYW5kU3RhdHVzOgogICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS5ub2RlKCkg
PT0gY2FuZGlkYXRlKQogICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUobV9ncmFwaCk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENhcGFiaWxpdGllcy5jcHAKaW5kZXggMzUyNTNiNjA0ZTQ3OGRmMGEyMjhkM2IxM2Y1Y2NhMzUy
MmI0NmIyNC4uM2QxNDkyNTNmNmQ2YjdkMTYyNTc1NGIwMmQwY2NiMTJjZWZlMGY0NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtNDAwLDEy
ICs0MDAsMTYgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUp
CiAgICAgY2FzZSBQdXRQcml2YXRlTmFtZUJ5SWQ6CiAgICAgY2FzZSBHZXRQcml2YXRlTmFtZToK
ICAgICBjYXNlIEdldFByaXZhdGVOYW1lQnlJZDoKKyAgICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5k
OgorICAgIGNhc2UgU2V0UHJpdmF0ZUJyYW5kOgogICAgIGNhc2UgTWF0Y2hTdHJ1Y3R1cmU6CiAg
ICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVz
OgogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRlckluQnlJZFN0
YXR1czoKICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgorICAgIGNhc2UgRmlsdGVyQ2hl
Y2tQcml2YXRlQnJhbmRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0
dXM6CiAgICAgY2FzZSBDcmVhdGVUaGlzOgogICAgIGNhc2UgQ3JlYXRlUHJvbWlzZToKICAgICBj
YXNlIENyZWF0ZUdlbmVyYXRvcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcAppbmRleCBlYTFmMzcyMzljMjg5ZGYxMmNjZDMxYmVmNGY1NTlkYmE3ZjYx
MDVjLi44Y2QzZWNjNzJhYzRkOTBkYjRjYWZkNzBlMjc1MmZlYjM4YTczODlkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC05NjEsNiArOTYx
LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSW5CeVZhbDoKICAgICAgICAgICAgIGNvbXBp
bGVJbkJ5VmFsKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDaGVja1ByaXZh
dGVCcmFuZDoKKyAgICAgICAgICAgIGNvbXBpbGVDaGVja1ByaXZhdGVCcmFuZCgpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU2V0UHJpdmF0ZUJyYW5kOgorICAgICAgICAgICAg
Y29tcGlsZVNldFByaXZhdGVCcmFuZCgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgSGFzT3duUHJvcGVydHk6CiAgICAgICAgICAgICBjb21waWxlSGFzT3duUHJvcGVydHkoKTsK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTYzOCw2ICsxNjQ0LDggQEAgcHJpdmF0ZToKICAgICAg
ICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0
YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKKyAgICAgICAgY2FzZSBG
aWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJTZXRQcml2
YXRlQnJhbmRTdGF0dXM6CiAgICAgICAgICAgICBjb21waWxlRmlsdGVySUNTdGF0dXMoKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERhdGVHZXRJbnQzMk9yTmFOOgpAQCAtNDA4
Myw2ICs0MDkxLDgzIEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lkIGNv
bXBpbGVQcml2YXRlQnJhbmRBY2Nlc3MoTFZhbHVlIGJhc2UsIExWYWx1ZSBicmFuZCwgQWNjZXNz
VHlwZSBhY2Nlc3NUeXBlKQorICAgIHsKKyAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKKyAg
ICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChWb2lk
KTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGJhc2UpOworICAgICAg
ICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoYnJhbmQpOworICAgICAgICBwYXRjaHBv
aW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90
Q2VsbE1hc2tSZWdpc3RlcikpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJU
YWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CisgICAg
ICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVy
cygpKTsKKworICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0
aW9uSGFuZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwor
CisgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOworICAgICAgICBib29sIGJhc2VJ
c0NlbGwgPSBhYnN0cmFjdFZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpLmlzVHlwZShTcGVjQ2VsbCk7
CisgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0
LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAg
QWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworCisgICAg
ICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPSBzdGF0ZS0+aml0Q29kZS0+Y29t
bW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyk7CisKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGRpcmVjdCBleGl0IHRhcmdldCBm
b3Igb3BlcmF0aW9uIGNhbGxzLgorICAgICAgICAgICAgQm94PENDYWxsSGVscGVyczo6SnVtcExp
c3Q+IGV4Y2VwdGlvbnMgPSBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBh
cmFtcyktPmp1bXBzKGppdCk7CisKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGV4aXQgZm9y
IGNhbGwgSUMncyBjcmVhdGVkIGJ5IHRoZSBJQyBmb3IgZ2V0dGVycy4gV2UgZG9uJ3QgaGF2ZQor
ICAgICAgICAgICAgLy8gdG8gZG8gYW55dGhpbmcgd2VpcmQgb3RoZXIgdGhhbiBjYWxsIHRoaXMs
IHNpbmNlIGl0IHdpbGwgYXNzb2NpYXRlIHRoZSBleGl0IHdpdGgKKyAgICAgICAgICAgIC8vIHRo
ZSBjYWxsc2l0ZSBpbmRleC4KKyAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVF
eGl0Q3JlYXRpb25Gb3JVbndpbmQocGFyYW1zLCBjYWxsU2l0ZUluZGV4KTsKKworICAgICAgICAg
ICAgR1BSUmVnIGJhc2VHUFIgPSBwYXJhbXNbMF0uZ3ByKCk7CisgICAgICAgICAgICBHUFJSZWcg
YnJhbmRHUFIgPSBwYXJhbXNbMV0uZ3ByKCk7CisKKyAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9y
ID0gQm94PEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcj46OmNyZWF0ZSgKKyAgICAgICAg
ICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJ
bmRleCwgYWNjZXNzVHlwZSwKKyAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKGJyYW5kR1BSKSk7CisK
KyAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBub3RDZWxsOworICAgICAgICAgICAgaWYg
KCFiYXNlSXNDZWxsKQorICAgICAgICAgICAgICAgIG5vdENlbGwgPSBqaXQuYnJhbmNoSWZOb3RD
ZWxsKGJhc2VHUFIpOworCisgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgo
aml0KTsKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgp
OworCisgICAgICAgICAgICBwYXJhbXMuYWRkTGF0ZVBhdGgoWz1dIChDQ2FsbEhlbHBlcnMmIGpp
dCkgeworICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxv
d1NjcmF0Y2goaml0KTsKKworICAgICAgICAgICAgICAgIGF1dG8gb3BlcmF0aW9uVG9DYWxsID0g
YWNjZXNzVHlwZSA9PSBBY2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZCA/IG9wZXJhdGlvbkNo
ZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUgOiBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6
ZTsKKworICAgICAgICAgICAgICAgIGlmIChub3RDZWxsLmlzU2V0KCkpCisgICAgICAgICAgICAg
ICAgICAgIG5vdENlbGwubGluaygmaml0KTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNs
b3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpM
YWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7CisgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAg
ICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+
b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBv
cGVyYXRpb25Ub0NhbGwsIEludmFsaWRHUFJSZWcsCisgICAgICAgICAgICAgICAgICAgIGppdC5j
b2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0
dWJJbmZvKCkpLCBiYXNlR1BSLCBicmFuZEdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgIGpp
dC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOworCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKKworICAg
ICAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIp
IHsKKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5maW5hbGl6ZShsaW5rQnVmZmVyLCBs
aW5rQnVmZmVyKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9KTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVDaGVja1ByaXZhdGVCcmFuZCgpCisgICAg
eworICAgICAgICBjb21waWxlUHJpdmF0ZUJyYW5kQWNjZXNzKGxvd0pTVmFsdWUobV9ub2RlLT5j
aGlsZDEoKSksIGxvd1N5bWJvbChtX25vZGUtPmNoaWxkMigpKSwgQWNjZXNzVHlwZTo6Q2hlY2tQ
cml2YXRlQnJhbmQpOworICAgIH0KKworICAgIHZvaWQgY29tcGlsZVNldFByaXZhdGVCcmFuZCgp
CisgICAgeworICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5jaGls
ZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpOwor
ICAgICAgICBjb21waWxlUHJpdmF0ZUJyYW5kQWNjZXNzKGxvd0NlbGwobV9ub2RlLT5jaGlsZDEo
KSksIGxvd1N5bWJvbChtX25vZGUtPmNoaWxkMigpKSwgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJy
YW5kKTsKKyAgICB9CisKICAgICB2b2lkIGNvbXBpbGVQdXRCeUlkV2l0aFRoaXMoKQogICAgIHsK
ICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGIwNTE3YmQ5NzdjMTRiNWEzMWNmNTBl
YzU2YzI1YjZmZDI1NjZkMTUuLjdlZjk1OTE5OTVjZWRlZWVjN2UxNmQ2ODBjMjdkYmZhNDk5MjA1
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcApAQCAtMTQ0LDkgKzE0NCw5IEBAIEpTVmFsdWUgZXZhbChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgRUNNQU1vZGUgZWNtYU1vCiAgICAg
ICAgIH0KICAgICAgICAgCiAgICAgICAgIFREWkVudmlyb25tZW50IHZhcmlhYmxlc1VuZGVyVERa
OwotICAgICAgICBWYXJpYWJsZUVudmlyb25tZW50IHByaXZhdGVOYW1lczsKLSAgICAgICAgSlNT
Y29wZTo6Y29sbGVjdENsb3N1cmVWYXJpYWJsZXNVbmRlclREWihjYWxsZXJTY29wZUNoYWluLCB2
YXJpYWJsZXNVbmRlclREWiwgcHJpdmF0ZU5hbWVzKTsKLSAgICAgICAgZXZhbCA9IERpcmVjdEV2
YWxFeGVjdXRhYmxlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtYWtlU291cmNlKHByb2dyYW1Tb3Vy
Y2UsIGNhbGxlckNvZGVCbG9jay0+c291cmNlKCkucHJvdmlkZXIoKS0+c291cmNlT3JpZ2luKCkp
LCBkZXJpdmVkQ29udGV4dFR5cGUsIGNhbGxlclVubGlua2VkQ29kZUJsb2NrLT5uZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplcigpLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBjYWxsZXJDb2RlQmxv
Y2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24oKSwgZXZhbENv
bnRleHRUeXBlLCAmdmFyaWFibGVzVW5kZXJURFosICZwcml2YXRlTmFtZXMsIGVjbWFNb2RlKTsK
KyAgICAgICAgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCBwcml2YXRlTmFtZUVudmlyb25tZW50Owor
ICAgICAgICBKU1Njb3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKGNhbGxlclNj
b3BlQ2hhaW4sIHZhcmlhYmxlc1VuZGVyVERaLCBwcml2YXRlTmFtZUVudmlyb25tZW50KTsKKyAg
ICAgICAgZXZhbCA9IERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBt
YWtlU291cmNlKHByb2dyYW1Tb3VyY2UsIGNhbGxlckNvZGVCbG9jay0+c291cmNlKCkucHJvdmlk
ZXIoKS0+c291cmNlT3JpZ2luKCkpLCBkZXJpdmVkQ29udGV4dFR5cGUsIGNhbGxlclVubGlua2Vk
Q29kZUJsb2NrLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBjYWxsZXJVbmxpbmtlZENv
ZGVCbG9jay0+cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4
dCwgY2FsbGVyQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJbnNpZGVPcmRpbmFyeUZ1
bmN0aW9uKCksIGV2YWxDb250ZXh0VHlwZSwgJnZhcmlhYmxlc1VuZGVyVERaLCAmcHJpdmF0ZU5h
bWVFbnZpcm9ubWVudCwgZWNtYU1vZGUpOwogICAgICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2Nv
cGUuZXhjZXB0aW9uKCkgPT0gIWV2YWwpOwogICAgICAgICBpZiAoIWV2YWwpCiAgICAgICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBh
Y2MzNGQwZWE4YmMzNGM5Y2YxYmQxYTgxYjA1ZmNmNDdjOTBkNzkyLi42YTNmYmQ3NmM1MWRhNGQ3
YWQ1YTAyYWQ5MzkyOTM1MjFhNTMwMmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBA
IC0zNTgsNiArMzU4LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAg
ICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X2lkX2RpcmVjdCkKICAgICAgICAgREVGSU5FX09QKG9w
X2dldF9ieV92YWwpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfcHJpdmF0ZV9uYW1lKQorICAg
ICAgICBERUZJTkVfT1Aob3Bfc2V0X3ByaXZhdGVfYnJhbmQpCisgICAgICAgIERFRklORV9PUChv
cF9jaGVja19wcml2YXRlX2JyYW5kKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X3Byb3RvdHlw
ZV9vZikKICAgICAgICAgREVGSU5FX09QKG9wX292ZXJyaWRlc19oYXNfaW5zdGFuY2UpCiAgICAg
ICAgIERFRklORV9PUChvcF9pbnN0YW5jZW9mKQpAQCAtNTA4LDYgKzUxMCw3IEBAIHZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgbV9kZWxCeVZhbEluZGV4ID0gMDsKICAg
ICBtX2RlbEJ5SWRJbmRleCA9IDA7CiAgICAgbV9pbnN0YW5jZU9mSW5kZXggPSAwOworICAgIG1f
cHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXggPSAwOwogICAgIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4
ID0gMDsKICAgICBtX2NhbGxMaW5rSW5mb0luZGV4ID0gMDsKIApAQCAtNTY0LDYgKzU2Nyw4IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9X
Q0FTRV9PUChvcF9nZXRfYnlfaWRfZGlyZWN0KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Ao
b3BfZ2V0X2J5X3ZhbCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2dldF9wcml2YXRl
X25hbWUpCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9zZXRfcHJpdmF0ZV9icmFuZCkK
KyAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2NoZWNrX3ByaXZhdGVfYnJhbmQpCiAgICAg
ICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9pbnN0YW5jZW9mKQogICAgICAgICBERUZJTkVfU0xP
V0NBU0VfT1Aob3BfaW5zdGFuY2VvZl9jdXN0b20pCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9qbGVzcykKQEAgLTY1NCw2ICs2NTksNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMoKQogICAgIFJFTEVBU0VfQVNTRVJUKG1fcHV0QnlJZEluZGV4ID09IG1fcHV0QnlJ
ZHMuc2l6ZSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVChtX2luQnlJZEluZGV4ID09IG1faW5CeUlk
cy5zaXplKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKG1faW5zdGFuY2VPZkluZGV4ID09IG1faW5z
dGFuY2VPZnMuc2l6ZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChtX3ByaXZhdGVCcmFuZEFjY2Vz
c0luZGV4ID09IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMuc2l6ZSgpKTsKICAgICBSRUxFQVNFX0FT
U0VSVChtX2NhbGxMaW5rSW5mb0luZGV4ID09IG1fY2FsbENvbXBpbGF0aW9uSW5mby5zaXplKCkp
OwogCiAgICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmcoKSkKQEAgLTkwMiw2ICs5MDgsNyBAQCBD
b21waWxhdGlvblJlc3VsdCBKSVQ6OmxpbmsoKQogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1f
ZGVsQnlWYWxzLCBwYXRjaEJ1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9pbkJ5
SWRzLCBwYXRjaEJ1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9pbnN0YW5jZU9m
cywgcGF0Y2hCdWZmZXIpOworICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fcHJpdmF0ZUJyYW5k
QWNjZXNzZXMsIHBhdGNoQnVmZmVyKTsKIAogICAgIGlmIChtX2J5VmFsQ29tcGlsYXRpb25JbmZv
LnNpemUoKSkgewogICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxFeGNlcHRpb25IYW5kbGVyUHRy
VGFnPiBleGNlcHRpb25IYW5kbGVyID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZjxFeGNlcHRpb25I
YW5kbGVyUHRyVGFnPihtX2V4Y2VwdGlvbkhhbmRsZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgK
aW5kZXggN2MzNWI1NjczNDc3NWUzNmVmYzM5NmQ1NzJiOTkyMTVjNTllNmRmMi4uMmVhZDU1ZGMw
NTRjMDcyNjExMGI4NDVhZDA4Yzg3YjdjM2E5ODQwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
CkBAIC01NjMsNiArNTYzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1p
dF9vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAg
ICB2b2lkIGVtaXRfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiopOwog
ICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X3Byb3RvdHlwZV9vZihjb25zdCBJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKQEAg
LTY5NSw2ICs2OTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0U2xvd19v
cF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9ieV92YWwoY29u
c3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAg
ICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xv
d19vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jaGVja19wcml2
YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9hcmd1bWVudF9ieV92YWwoY29u
c3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAg
ICAgIHZvaWQgZW1pdFNsb3dfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaW5z
dGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImKTsKQEAgLTk4NSw2ICs5ODksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9y
PEpJVERlbEJ5SWRHZW5lcmF0b3I+IG1fZGVsQnlJZHM7CiAgICAgICAgIFZlY3RvcjxKSVREZWxC
eVZhbEdlbmVyYXRvcj4gbV9kZWxCeVZhbHM7CiAgICAgICAgIFZlY3RvcjxKSVRJbnN0YW5jZU9m
R2VuZXJhdG9yPiBtX2luc3RhbmNlT2ZzOworICAgICAgICBWZWN0b3I8SklUUHJpdmF0ZUJyYW5k
QWNjZXNzR2VuZXJhdG9yPiBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzOwogICAgICAgICBWZWN0b3I8
QnlWYWxDb21waWxhdGlvbkluZm8+IG1fYnlWYWxDb21waWxhdGlvbkluZm87CiAgICAgICAgIFZl
Y3RvcjxDYWxsQ29tcGlsYXRpb25JbmZvPiBtX2NhbGxDb21waWxhdGlvbkluZm87CiAgICAgICAg
IFZlY3RvcjxKdW1wVGFibGU+IG1fam1wVGFibGU7CkBAIC0xMDA4LDYgKzEwMTMsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQgbV9kZWxCeVZhbEluZGV4IHsgVUlOVF9NQVgg
fTsKICAgICAgICAgdW5zaWduZWQgbV9kZWxCeUlkSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAg
ICB1bnNpZ25lZCBtX2luc3RhbmNlT2ZJbmRleCB7IFVJTlRfTUFYIH07CisgICAgICAgIHVuc2ln
bmVkIG1fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNp
Z25lZCBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCB7IFVJTlRfTUFYIH07CiAgICAgICAgIHVuc2ln
bmVkIG1fY2FsbExpbmtJbmZvSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBt
X2J5dGVjb2RlQ291bnRIYXZpbmdTbG93Q2FzZSB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKaW5kZXggOWJjMjYy
M2IzZmQ1MDdkYzlhZmM5OGE3NzAxODZmMWU1ODFiNWM4ZS4uOTFlZGNmNzJjMTg2Y2ViNzgzNTI2
MWI1NmVmMWI5YTY4MWNmZjk5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKQEAgLTMyNCw2ICszMjQsMzYgQEAgdm9p
ZCBKSVRHZXRCeVZhbEdlbmVyYXRvcjo6ZmluYWxpemUoCiAgICAgICAgIGZhc3RQYXRoLCBzbG93
UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkp
OwogfQogCitKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OkpJVFByaXZhdGVCcmFuZEFj
Y2Vzc0dlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
LCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwgY29u
c3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVS
ZWdzIGJyYW5kKQorICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5k
ZXgsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMpCit7CisgICAgbV9zdHViSW5mby0+aGFzQ29u
c3RhbnRJZGVudGlmaWVyID0gZmFsc2U7CisKKyAgICBtX3N0dWJJbmZvLT5iYXNlR1BSID0gYmFz
ZS5wYXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+cmVncy5icmFuZEdQUiA9IGJyYW5kLnBh
eWxvYWRHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT52YWx1ZUdQUiA9IEludmFsaWRHUFJSZWc7Cisj
aWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gYmFzZS50
YWdHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT52LmJyYW5kVGFnR1BSID0gYnJhbmQudGFnR1BSKCk7
CisgICAgbV9zdHViSW5mby0+dmFsdWVUYWdHUFIgPSBJbnZhbGlkR1BSUmVnOworI2VuZGlmCit9
CisKK3ZvaWQgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRo
KE1hY3JvQXNzZW1ibGVyJiBqaXQpCit7CisgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOworICAg
IG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBtX2RvbmUgPSBqaXQu
bGFiZWwoKTsKK30KKwordm9pZCBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OmZpbmFs
aXplKAorICAgIExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKK3sK
KyAgICBBU1NFUlQobV9zdGFydC5pc1NldCgpKTsKKyAgICBCYXNlOjpmaW5hbGl6ZSgKKyAgICAg
ICAgZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPihtX3N0YXJ0KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8g
RU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IuaAppbmRleCA4NTM4MzVhMzkzNTg1MjkxMjdkZTJmMzk3YjQ5Nzk5ODI0
ZTM2ZjZiLi5kNmNhNmUxNmEzZjMyYzY0MGY5NmNiMjU1MTk1NTQ4YjBmMmViNjUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5o
CkBAIC0yNDYsMTIgKzI0NiwzNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEpTVmFsdWVSZWdz
IG1fYmFzZTsKICAgICBKU1ZhbHVlUmVncyBtX3Jlc3VsdDsKLSAgICBKU1ZhbHVlUmVncyBtXzsK
IAogICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX3N0YXJ0OwogICAgIE1hY3JvQXNzZW1ibGVy
OjpQYXRjaGFibGVKdW1wIG1fc2xvd1BhdGhKdW1wOwogfTsKIAorY2xhc3MgSklUUHJpdmF0ZUJy
YW5kQWNjZXNzR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKKyAg
ICB1c2luZyBCYXNlID0gSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I7CitwdWJsaWM6CisgICAgSklU
UHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKCkgeyB9CisKKyAgICBKSVRQcml2YXRlQnJhbmRB
Y2Nlc3NHZW5lcmF0b3IoCisgICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRl
SW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAorICAg
ICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBicmFuZCk7CisKKyAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1bXAoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJU
KG1fc2xvd1BhdGhKdW1wLm1fanVtcC5pc1NldCgpKTsKKyAgICAgICAgcmV0dXJuIG1fc2xvd1Bh
dGhKdW1wLm1fanVtcDsKKyAgICB9CisKKyAgICB2b2lkIGZpbmFsaXplKAorICAgICAgICBMaW5r
QnVmZmVyJiBmYXN0UGF0aExpbmtCdWZmZXIsIExpbmtCdWZmZXImIHNsb3dQYXRoTGlua0J1ZmZl
cik7CisgICAgCisgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CisK
K3ByaXZhdGU6CisgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG1fc3RhcnQ7CisgICAgTWFjcm9B
c3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbV9zbG93UGF0aEp1bXA7Cit9OworCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBWZWN0b3JUeXBlPgogdm9pZCBmaW5hbGl6ZUlubGluZUNhY2hlcyhWZWN0b3JUeXBl
JiB2ZWN0b3IsIExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDZjY2Ex
YzkyNDQ5YWRhNGJhMzFhNjhhOTE5NzQyYjk4MTBhMTI5NTguLjkxODU3MDU1NmYwZjk3YTJjZDZh
NWNlMjdkYTQyOGE5ZDQ3NmNkYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcApAQCAtMTA5NCw2ICsxMDk0LDEwMSBAQCBKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljLCB2b2lkLCAoSlNHbG9iYWxPYmpl
Y3QqCiAgICAgZGlyZWN0UHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBhc09iamVjdChiYXNlVmFsdWUp
LCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8sIGVjbWFNb2RlKTsKIH0KIAorSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplLCB2b2lkLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QnJhbmQpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOworICAgIEpTVmFsdWUgYnJhbmQg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJyYW5kKTsKKworICAgIEFTU0VSVChiYXNlVmFsdWUu
aXNPYmplY3QoKSk7CisgICAgQVNTRVJUKGJyYW5kLmlzU3ltYm9sKCkpOworCisgICAgSlNPYmpl
Y3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOworICAgIFN0cnVjdHVyZSogb2xk
U3RydWN0dXJlID0gYmFzZU9iamVjdC0+c3RydWN0dXJlKHZtKTsKKyAgICBiYXNlT2JqZWN0LT5z
ZXRQcml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0LCBicmFuZCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZy
YW1lLT5jb2RlQmxvY2soKTsKKyAgICBpZiAoQ2FjaGVhYmxlSWRlbnRpZmllcjo6aXNDYWNoZWFi
bGVJZGVudGlmaWVyQ2VsbChicmFuZCkpIHsKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBp
ZGVudGlmaWVyID0gQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUNlbGwoYnJhbmQuYXND
ZWxsKCkpOworICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZ0J5KHZtLCBjb2Rl
QmxvY2ssIGJhc2VPYmplY3QtPnN0cnVjdHVyZSh2bSksIGlkZW50aWZpZXIpKQorICAgICAgICAg
ICAgcmVwYXRjaFNldFByaXZhdGVCcmFuZChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9i
amVjdCwgb2xkU3RydWN0dXJlLCBpZGVudGlmaWVyLCAqc3R1YkluZm8pOworICAgIH0KKworfQor
CitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kR2VuZXJp
Yywgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZv
KiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJyYW5kKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVl
IGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZVZhbHVlKTsKKyAgICBKU1Zh
bHVlIGJyYW5kID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCcmFuZCk7CisKKyAgICBpZiAoc3R1
YkluZm8pCisgICAgICAgIHN0dWJJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOworCisgICAgQVNT
RVJUKGJhc2VWYWx1ZS5pc09iamVjdCgpKTsKKyAgICBBU1NFUlQoYnJhbmQuaXNTeW1ib2woKSk7
CisKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAg
YmFzZU9iamVjdC0+c2V0UHJpdmF0ZUJyYW5kKGdsb2JhbE9iamVjdCwgYnJhbmQpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Cit9CisKK0pTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplLCB2b2lkLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQnJhbmQp
KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOworICAgIEpTVmFsdWUgYnJhbmQgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZEJyYW5kKTsKKworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0g
YmFzZVZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgdm9pZCgpKTsKKworICAgIEFTU0VSVChicmFuZC5pc1N5bWJvbCgpKTsKKworICAg
IGJhc2VPYmplY3QtPmNoZWNrUHJpdmF0ZUJyYW5kKGdsb2JhbE9iamVjdCwgYnJhbmQpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CisgICAgaWYgKENhY2hlYWJsZUlkZW50
aWZpZXI6OmlzQ2FjaGVhYmxlSWRlbnRpZmllckNlbGwoYnJhbmQpKSB7CisgICAgICAgIENhY2hl
YWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZy
b21DZWxsKGJyYW5kLmFzQ2VsbCgpKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNh
Y2hpbmdCeSh2bSwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLCBpZGVudGlm
aWVyKSkKKyAgICAgICAgICAgIHJlcGF0Y2hDaGVja1ByaXZhdGVCcmFuZChnbG9iYWxPYmplY3Qs
IGNvZGVCbG9jaywgYmFzZU9iamVjdCwgaWRlbnRpZmllciwgKnN0dWJJbmZvKTsKKyAgICB9Cit9
CisKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZEdl
bmVyaWMsIHZvaWQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCcmFuZCkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAg
ICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNW
YWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2VWYWx1ZSk7CisgICAg
SlNWYWx1ZSBicmFuZCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQnJhbmQpOworCisgICAgc3R1
YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CisKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9
IGJhc2VWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBBU1NFUlQoYnJhbmQuaXNTeW1ib2woKSk7CisKKyAg
ICBiYXNlT2JqZWN0LT5jaGVja1ByaXZhdGVCcmFuZChnbG9iYWxPYmplY3QsIGJyYW5kKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworfQorCiBKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgdm9pZCwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0S2luZCkp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMjI3Niw2ICsyMzcxLDgg
QEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNWYWx1ZSBnZXRQcml2YXRlTmFtZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnIKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBKU1ZhbHVlKCkpOwogCiAgICAgSlNPYmplY3QqIGJhc2UgPSBiYXNlVmFsdWUudG9PYmplY3Qo
Z2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkp
OworCiAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1l
dGhvZFR5cGU6OkdldE93blByb3BlcnR5KTsKICAgICBiYXNlLT5nZXRQcml2YXRlRmllbGQoZ2xv
YmFsT2JqZWN0LCBmaWVsZE5hbWUsIHNsb3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIEpTVmFsdWUoKSk7CkBAIC0yMzgyLDcgKzI0NzksNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVCeUlkT3B0aW1pemUsIEVuY29kZWRKU1ZhbHVl
LCAoSgogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QuZ2V0VmFsdWUoZ2xvYmFs
T2JqZWN0LCBmaWVsZE5hbWUpKTsKICAgICB9CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGdldFByaXZhdGVOYW1lKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlVmFsdWUsIGZpZWxk
TmFtZSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGdl
dFByaXZhdGVOYW1lKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlVmFsdWUsIGZpZWxkTmFt
ZSkpKTsKIH0KIAogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldFByaXZhdGVO
YW1lQnlJZEdlbmVyaWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgdWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZp
ZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCA5NDI1
YjUxN2Y5OGVlZjYzZTM0OWQwNzk1MWMxOTgwZWRkNTk5MTg4Li4yZmMzYTVjNjYyMDI0NjRhMDRi
ZTQyMTBkYTI2ODRiMmZiZWIwMWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuaApAQCAtMTkyLDYgKzE5MiwxMSBAQCBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZSwgdm9pZAog
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxk
U3RyaWN0LCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRw
dHJfdCkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeUlkU2V0UHJp
dmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkQmFzZSwgdWludHB0cl90KSk7CiAKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSk7CitKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUs
IHZvaWQsIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
blNldFByaXZhdGVCcmFuZEdlbmVyaWMsIHZvaWQsIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSk7CitKU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kR2VuZXJpYywgdm9pZCwg
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUpKTsKKwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRQ
cml2YXRlTmFtZU9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBQcml2YXRlRmll
bGRQdXRLaW5kKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dFByaXZh
dGVOYW1lR2VuZXJpYywgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgUHJpdmF0ZUZpZWxkUHV0
S2luZCkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeVZhbE9wdGlt
aXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCAwYmQ5ZmM2M2Fh
OThlMGY0OWFmNjllNjA4Nzg0MTc2NTc2NjdhNDNkLi43YTBhMTk2NjQ5NzU2NDc1ZDBjOWUyOTQw
YzA2NzM4ZmNjMzhjNjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcApAQCAtMTQyLDYgKzE0Miw3OSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZQogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiB9
CiAKK3ZvaWQgSklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BTZXRQcml2YXRlQnJhbmQ+KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJh
c2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJyYW5kID0gYnl0ZWNv
ZGUubV9icmFuZDsKKyAgICBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOworICAgIEdQUlJlZyBicmFu
ZEdQUiA9IHJlZ1QxOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUdQUik7
CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihicmFuZCwgYnJhbmRHUFIpOworCisgICAgZW1p
dEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2VHUFIsIGJhc2UpOworCisgICAgSklUUHJpdmF0
ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmln
aW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nl
c3NUeXBlOjpTZXRQcml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKGJyYW5k
R1BSKSk7CisgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgIGFkZFNsb3dDYXNl
KGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgbV9wcml2YXRlQnJhbmRBY2Nlc3Nlcy5hcHBlbmQo
Z2VuKTsKKworICAgIC8vIFdlIHNob3VsZCBlbWl0IHdyaXRlLWJhcnJpZXIgYXQgdGhlIGVuZCBv
ZiBzZXF1ZW5jZSBzaW5jZSB3cml0ZS1iYXJyaWVyIGNsb2JiZXJzIHJlZ2lzdGVycy4KKyAgICAv
LyBJQyBjYW4gd3JpdGUgbmV3IFN0cnVjdHVyZSB3aXRob3V0IHdyaXRlLWJhcnJpZXIgaWYgYSBi
YXNlIGlzIGNlbGwuCisgICAgLy8gRklYTUU6IFVzZSBVbmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVy
IGluIEJhc2VsaW5lIGVmZmVjdGl2ZWx5IHRvIHJlZHVjZSBjb2RlIHNpemUuCisgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTM5NQorICAgIGVtaXRXcml0
ZUJhcnJpZXIoYmFzZSwgU2hvdWxkRmlsdGVyQmFzZSk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xv
d19vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsK
KyAgICBHUFJSZWcgYnJhbmRHUFIgPSByZWdUMTsKKworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRl
cik7CisKKyAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0
ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleF07CisgICAgKyttX3ByaXZh
dGVCcmFuZEFjY2Vzc0luZGV4OworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwor
ICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0
aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0
dWJJbmZvKCksIGJhc2VHUFIsIGJyYW5kR1BSKTsKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxs
KGNvbGRQYXRoQmVnaW4sIGNhbGwpOworfQorCit2b2lkIEpJVDo6ZW1pdF9vcF9jaGVja19wcml2
YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BDaGVja1ByaXZhdGVCcmFu
ZD4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBW
aXJ0dWFsUmVnaXN0ZXIgYnJhbmQgPSBieXRlY29kZS5tX2JyYW5kOworCisgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihi
cmFuZCwgcmVnVDEpOworCisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBi
YXNlKTsKKworICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCisgICAgICAg
IG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgo
bV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIFJlZ2lzdGVy
U2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVn
VDApLCBKU1ZhbHVlUmVncyhyZWdUMSkpOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlz
KTsKKyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIG1fcHJpdmF0ZUJy
YW5kQWNjZXNzZXMuYXBwZW5kKGdlbik7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9jaGVj
a19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOworICAgIEdQ
UlJlZyBicmFuZEdQUiA9IHJlZ1QxOworCisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKwor
ICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9wcml2YXRlQnJhbmRB
Y2Nlc3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4XTsKKyAgICArK21fcHJpdmF0ZUJyYW5k
QWNjZXNzSW5kZXg7CisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgQ2Fs
bCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXpl
LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5m
bygpLCBiYXNlR1BSLCBicmFuZEdQUik7CisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xk
UGF0aEJlZ2luLCBjYWxsKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbF9kaXJl
Y3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0X29w
X3B1dF9ieV92YWw8T3BQdXRCeVZhbERpcmVjdD4oY3VycmVudEluc3RydWN0aW9uKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3Bw
CmluZGV4IGIxNGE1MDYzNDk0NTE1OTM4M2U3ZDA5YWI1YjlkZTRjMzUwZGRlODIuLjlhZDUwNzUw
NmM3MjU2MDRiNjlkODk2YmQxNGI3NjA2NDE1NWE1Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtMzgwLDYgKzM4
MCw4MCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZQogICAgIG1fYnlWYWxJbnN0cnVjdGlvbklu
ZGV4Kys7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BTZXRQcml2YXRlQnJhbmQ+KCk7CisgICAgVmlydHVhbFJl
Z2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJyYW5k
ID0gYnl0ZWNvZGUubV9icmFuZDsKKyAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyhyZWdUMSwgcmVn
VDApOworICAgIEpTVmFsdWVSZWdzIGJyYW5kUmVncyhyZWdUMywgcmVnVDIpOworICAgIGVtaXRM
b2FkKGJhc2UsIGJhc2VSZWdzLnRhZ0dQUigpLCBiYXNlUmVncy5wYXlsb2FkR1BSKCkpOworICAg
IGVtaXRMb2FkKGJyYW5kLCBicmFuZFJlZ3MudGFnR1BSKCksIGJyYW5kUmVncy5wYXlsb2FkR1BS
KCkpOworCisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIGJhc2VSZWdzLnRh
Z0dQUigpKTsKKworICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCisgICAg
ICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5k
ZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5kLCBSZWdpc3Rl
clNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIGJhc2VSZWdzLCBicmFu
ZFJlZ3MpOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBhZGRTbG93Q2Fz
ZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMuYXBwZW5k
KGdlbik7CisKKyAgICAvLyBXZSBzaG91bGQgZW1pdCB3cml0ZS1iYXJyaWVyIGF0IHRoZSBlbmQg
b2Ygc2VxdWVuY2Ugc2luY2Ugd3JpdGUtYmFycmllciBjbG9iYmVycyByZWdpc3RlcnMuCisgICAg
Ly8gSUMgY2FuIHdyaXRlIG5ldyBTdHJ1Y3R1cmUgd2l0aG91dCB3cml0ZS1iYXJyaWVyIGlmIGEg
YmFzZSBpcyBjZWxsLgorICAgIC8vIEZJWE1FOiBVc2UgVW5jb25kaXRpb25hbFdyaXRlQmFycmll
ciBpbiBCYXNlbGluZSBlZmZlY3RpdmVseSB0byByZWR1Y2UgY29kZSBzaXplLgorICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkzOTUKKyAgICBlbWl0V3Jp
dGVCYXJyaWVyKGJhc2UsIFNob3VsZEZpbHRlckJhc2UpOworfQorCit2b2lkIEpJVDo6ZW1pdFNs
b3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzKHJl
Z1QxLCByZWdUMCk7CisgICAgSlNWYWx1ZVJlZ3MgYnJhbmRSZWdzKHJlZ1QzLCByZWdUMik7CisK
KyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworCisgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNz
R2VuZXJhdG9yJiBnZW4gPSBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzW21fcHJpdmF0ZUJyYW5kQWNj
ZXNzSW5kZXhdOworICAgICsrbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleDsKKyAgICBMYWJlbCBj
b2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBiYXNlUmVncywgYnJhbmRSZWdzKTsK
KyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOworfQorCit2
b2lkIEpJVDo6ZW1pdF9vcF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BTZXRQcml2YXRlQnJhbmQ+KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2Ug
PSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJyYW5kID0gYnl0ZWNvZGUu
bV9icmFuZDsKKyAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyhyZWdUMSwgcmVnVDApOworICAgIEpT
VmFsdWVSZWdzIGJyYW5kUmVncyhyZWdUMywgcmVnVDIpOworICAgIGVtaXRMb2FkKGJhc2UsIGJh
c2VSZWdzLnRhZ0dQUigpLCBiYXNlUmVncy5wYXlsb2FkR1BSKCkpOworICAgIGVtaXRMb2FkKGJy
YW5kLCBicmFuZFJlZ3MudGFnR1BSKCksIGJyYW5kUmVncy5wYXlsb2FkR1BSKCkpOworCisgICAg
ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIGJhc2VSZWdzLnRhZ0dQUigpKTsKKwor
ICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCisgICAgICAgIG1fY29kZUJs
b2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29k
ZUluZGV4KSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHVi
VW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgYmFzZVJlZ3MsIGJyYW5kUmVncyk7Cisg
ICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93
UGF0aEp1bXAoKSk7CisgICAgbV9wcml2YXRlQnJhbmRBY2Nlc3Nlcy5hcHBlbmQoZ2VuKTsKK30K
Kwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIEpT
VmFsdWVSZWdzIGJhc2VSZWdzKHJlZ1QxLCByZWdUMCk7CisgICAgSlNWYWx1ZVJlZ3MgYnJhbmRS
ZWdzKHJlZ1QzLCByZWdUMik7CisKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworCisgICAg
SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yJiBnZW4gPSBtX3ByaXZhdGVCcmFuZEFjY2Vz
c2VzW21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXhdOworICAgICsrbV9wcml2YXRlQnJhbmRBY2Nl
c3NJbmRleDsKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBDYWxsIGNh
bGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUsIFRy
dXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCks
IGJhc2VSZWdzLCBicmFuZFJlZ3MpOworICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBh
dGhCZWdpbiwgY2FsbCk7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWxfZGlyZWN0
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdF9vcF9w
dXRfYnlfdmFsPE9wUHV0QnlWYWxEaXJlY3Q+KGN1cnJlbnRJbnN0cnVjdGlvbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCA1N2I2YzEzM2Y4ZjI3ZDNiZDMwZDVjYTM5
NDE3Y2RjOTkyMjViYzE4Li4xOTZjNzUwNTk1NDk2OTE4OTRlMzViMDFjMDYxNDcwNDk3NTY5ZDFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTEwMDUsNiArMTAwNSwx
MTAgQEAgdm9pZCByZXBhdGNoSW5CeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENv
ZGVCbG9jayogY29kZUJsb2NrLCBKU09iamVjdCoKICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0
Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlv
bkluQnlJZCk7CiB9CiAKK3N0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUNoZWNrUHJp
dmF0ZUJyYW5kKAorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayog
Y29kZUJsb2NrLCBKU09iamVjdCogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBicmFuZElELAor
ICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCByZXN1bHQ7CisgICAgSWRl
bnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIGJyYW5kSUQudWlkKCkpOwor
CisgICAgeworICAgICAgICBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9j
ay0+bV9sb2NrLCB2bS5oZWFwKTsKKyAgICAgICAgaWYgKGZvcmNlSUNGYWlsdXJlKGdsb2JhbE9i
amVjdCkpCisgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKworICAgICAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2UtPnN0cnVjdHVyZSh2bSk7CisKKyAgICAgICAgSW5saW5l
Q2FjaGVBY3Rpb24gYWN0aW9uID0gYWN0aW9uRm9yQ2VsbCh2bSwgYmFzZSk7CisgICAgICAgIGlm
IChhY3Rpb24gIT0gQXR0ZW1wdFRvQ2FjaGUpCisgICAgICAgICAgICByZXR1cm4gYWN0aW9uOwor
CisgICAgICAgIC8vIExPR19JQygoSUNFdmVudDo6SW5BZGRBY2Nlc3NDYXNlLCBzdHJ1Y3R1cmUt
PmNsYXNzSW5mbygpLCBpZGVudCwgc2xvdC5zbG90QmFzZSgpID09IGJhc2UpKTsKKworICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0
ZUNoZWNrUHJpdmF0ZUJyYW5kKHZtLCBjb2RlQmxvY2ssIGJyYW5kSUQsIHN0cnVjdHVyZSk7CisK
KyAgICAgICAgcmVzdWx0ID0gc3R1YkluZm8uYWRkQWNjZXNzQ2FzZShsb2NrZXIsIGdsb2JhbE9i
amVjdCwgY29kZUJsb2NrLCBFQ01BTW9kZTo6c3RyaWN0KCksIGJyYW5kSUQsIFdURk1vdmUobmV3
Q2FzZSkpOworCisgICAgICAgIGlmIChyZXN1bHQuZ2VuZXJhdGVkU29tZUNvZGUoKSkgeworICAg
ICAgICAgICAgLy8gTE9HX0lDKChJQ0V2ZW50OjpJblJlcGxhY2VXaXRoSnVtcCwgc3RydWN0dXJl
LT5jbGFzc0luZm8oKSwgaWRlbnQsIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlKSk7CisKKyAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOworICAgICAgICAgICAgSW5saW5l
QWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRT
dHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICB9CisgICAgfQorCisg
ICAgZmlyZVdhdGNocG9pbnRzQW5kQ2xlYXJTdHViSWZOZWVkZWQodm0sIHN0dWJJbmZvLCBjb2Rl
QmxvY2ssIHJlc3VsdCk7CisKKyAgICByZXR1cm4gcmVzdWx0LnNob3VsZEdpdmVVcE5vdygpID8g
R2l2ZVVwT25DYWNoZSA6IFJldHJ5Q2FjaGVMYXRlcjsKK30KKwordm9pZCByZXBhdGNoQ2hlY2tQ
cml2YXRlQnJhbmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBDYWNoZWFibGVJZGVudGlmaWVyIGJyYW5kSUQs
IFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKK3sKKyAgICBTdXBlclNhbXBsZXJTY29wZSBz
dXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisKKyAgICBpZiAodHJ5Q2FjaGVDaGVja1ByaXZhdGVC
cmFuZChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgYnJhbmRJRCwgc3R1Yklu
Zm8pID09IEdpdmVVcE9uQ2FjaGUpCisgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChj
b2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25DaGVja1By
aXZhdGVCcmFuZEdlbmVyaWMpOworfQorCitzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2Fj
aGVTZXRQcml2YXRlQnJhbmQoCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIEpTT2JqZWN0KiBiYXNlLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVy
ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBicmFuZElELAorICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBz
dHViSW5mbykKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQWNjZXNz
R2VuZXJhdGlvblJlc3VsdCByZXN1bHQ7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZp
ZXI6OmZyb21VaWQodm0sIGJyYW5kSUQudWlkKCkpOworCisgICAgeworICAgICAgICBHQ1NhZmVD
b25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrLCB2bS5oZWFwKTsKKyAg
ICAgICAgaWYgKGZvcmNlSUNGYWlsdXJlKGdsb2JhbE9iamVjdCkpCisgICAgICAgICAgICByZXR1
cm4gR2l2ZVVwT25DYWNoZTsKKyAgICAgICAgCisgICAgICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUp
OworCisgICAgICAgIGlmIChvbGRTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQorICAgICAgICAg
ICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKKworICAgICAgICBJbmxpbmVDYWNoZUFjdGlvbiBh
Y3Rpb24gPSBhY3Rpb25Gb3JDZWxsKHZtLCBiYXNlKTsKKyAgICAgICAgaWYgKGFjdGlvbiAhPSBB
dHRlbXB0VG9DYWNoZSkKKyAgICAgICAgICAgIHJldHVybiBhY3Rpb247CisKKyAgICAgICAgLy8g
TE9HX0lDKChJQ0V2ZW50OjpJbkFkZEFjY2Vzc0Nhc2UsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCks
IGlkZW50LCBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZSkpOworICAgICAgICAKKyAgICAgICAgU3Ry
dWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OnNldEJyYW5kVHJhbnNpdGlvbkZyb21F
eGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseShvbGRTdHJ1Y3R1cmUsIGJyYW5kSUQudWlkKCkp
OworICAgICAgICBpZiAoIW5ld1N0cnVjdHVyZSkKKyAgICAgICAgICAgIHJldHVybiBSZXRyeUNh
Y2hlTGF0ZXI7CisgICAgICAgIGlmIChuZXdTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQorICAg
ICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1
cmUtPnByZXZpb3VzSUQoKSA9PSBvbGRTdHJ1Y3R1cmUpOworICAgICAgICBBU1NFUlQobmV3U3Ry
dWN0dXJlLT50cmFuc2l0aW9uS2luZCgpID09IFRyYW5zaXRpb25LaW5kOjpTZXRCcmFuZCk7Cisg
ICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOworICAgICAgICAKKyAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVh
dGVTZXRQcml2YXRlQnJhbmQodm0sIGNvZGVCbG9jaywgYnJhbmRJRCwgb2xkU3RydWN0dXJlLCBu
ZXdTdHJ1Y3R1cmUpOworCisgICAgICAgIHJlc3VsdCA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2Uo
bG9ja2VyLCBnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgRUNNQU1vZGU6OnN0cmljdCgpLCBicmFu
ZElELCBXVEZNb3ZlKG5ld0Nhc2UpKTsKKworICAgICAgICBpZiAocmVzdWx0LmdlbmVyYXRlZFNv
bWVDb2RlKCkpIHsKKyAgICAgICAgICAgIC8vIExPR19JQygoSUNFdmVudDo6SW5SZXBsYWNlV2l0
aEp1bXAsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBzbG90LnNsb3RCYXNlKCkgPT0g
YmFzZSkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQu
Y29kZSgpKTsKKyAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHVi
SW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2Rl
KCkpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZpcmVXYXRjaHBvaW50c0FuZENsZWFyU3R1
YklmTmVlZGVkKHZtLCBzdHViSW5mbywgY29kZUJsb2NrLCByZXN1bHQpOworICAgIAorICAgIHJl
dHVybiByZXN1bHQuc2hvdWxkR2l2ZVVwTm93KCkgPyBHaXZlVXBPbkNhY2hlIDogUmV0cnlDYWNo
ZUxhdGVyOworfQorCit2b2lkIHJlcGF0Y2hTZXRQcml2YXRlQnJhbmQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTT2JqZWN0KiBiYXNlT2JqZWN0
LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBicmFuZElELCBT
dHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCit7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3Vw
ZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworCisgICAgaWYgKHRyeUNhY2hlU2V0UHJpdmF0ZUJyYW5k
KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBvbGRTdHJ1Y3R1cmUsICBicmFu
ZElELCBzdHViSW5mbykgPT0gR2l2ZVVwT25DYWNoZSkKKyAgICAgICAgZnRsVGh1bmtBd2FyZVJl
cGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJh
dGlvblNldFByaXZhdGVCcmFuZEdlbmVyaWMpOworfQorCiBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rp
b24gdHJ5Q2FjaGVJbnN0YW5jZU9mKAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlIHZhbHVlVmFsdWUsIEpTVmFsdWUgcHJvdG90
eXBlVmFsdWUsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywKICAgICBib29sIHdhc0ZvdW5k
KQpAQCAtMTU4MCw2ICsxNjg0LDE4IEBAIHZvaWQgcmVzZXRJbnN0YW5jZU9mKFN0cnVjdHVyZVN0
dWJJbmZvJiBzdHViSW5mbykKICAgICByZXNldFBhdGNoYWJsZUp1bXAoc3R1YkluZm8pOwogfQog
Cit2b2lkIHJlc2V0Q2hlY2tQcml2YXRlQnJhbmQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVj
dHVyZVN0dWJJbmZvJiBzdHViSW5mbykKK3sKKyAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwo
Y29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uQ2hlY2tQ
cml2YXRlQnJhbmRPcHRpbWl6ZSk7CisgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1w
KHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworfQorCit2b2lkIHJl
c2V0U2V0UHJpdmF0ZUJyYW5kKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5m
byYgc3R1YkluZm8pCit7CisgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywg
c3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9w
dGltaXplKTsKKyAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIHN0
dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7Cit9CisKIE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjxKU0VudHJ5UHRyVGFnPiBqc1RvV2FzbUlDQ29kZVB0cihWTSYgdm0sIENvZGVTcGVjaWFsaXph
dGlvbktpbmQga2luZCwgSlNPYmplY3QqIGNhbGxlZSkKIHsKICNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCmluZGV4IDVkZDIwYzYzNmEwNTE2ODdk
OTE2ZTgwYWI3ODNiMGU5ZTY2ZDMxZGEuLmVlNmQ2ZjNmYzg2ZmQxMGNmODk0OTc4MzdhNGE4YjZh
NTRiNzMzNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCkBAIC01Myw2ICs1Myw4
IEBAIHZvaWQgcmVwYXRjaEdldEJ5KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1
ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29uCiB2b2lkIHJlcGF0Y2hQdXRCeUlEKEpTR2xvYmFs
T2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSwgU3RydWN0dXJlKiwgQ2FjaGVhYmxlSWRlbnRp
ZmllciwgY29uc3QgUHV0UHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBQdXRLaW5k
KTsKIHZvaWQgcmVwYXRjaERlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgRGVs
ZXRlUHJvcGVydHlTbG90JiwgSlNWYWx1ZSwgU3RydWN0dXJlKiwgQ2FjaGVhYmxlSWRlbnRpZmll
ciwgU3RydWN0dXJlU3R1YkluZm8mLCBEZWxCeUtpbmQsIEVDTUFNb2RlKTsKIHZvaWQgcmVwYXRj
aEluQnlJRChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTT2JqZWN0KiwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgYm9vbCB3YXNGb3VuZCwgY29uc3QgUHJvcGVydHlTbG90JiwgU3RydWN0dXJl
U3R1YkluZm8mKTsKK3ZvaWQgcmVwYXRjaENoZWNrUHJpdmF0ZUJyYW5kKEpTR2xvYmFsT2JqZWN0
KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmVT
dHViSW5mbyYpOwordm9pZCByZXBhdGNoU2V0UHJpdmF0ZUJyYW5kKEpTR2xvYmFsT2JqZWN0Kiwg
Q29kZUJsb2NrKiwgSlNPYmplY3QqLCBTdHJ1Y3R1cmUqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBT
dHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXBhdGNoSW5zdGFuY2VPZihKU0dsb2JhbE9iamVj
dCosIENvZGVCbG9jayosIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlLCBTdHJ1Y3R1
cmVTdHViSW5mbyYsIGJvb2wgd2FzRm91bmQpOwogdm9pZCBsaW5rRm9yKFZNJiwgQ2FsbEZyYW1l
KiwgQ2FsbExpbmtJbmZvJiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqIGNhbGxlZSwgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KTsKIHZvaWQgbGlua0RpcmVjdEZvcihDYWxsRnJh
bWUqLCBDYWxsTGlua0luZm8mLCBDb2RlQmxvY2sqLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNF
bnRyeVB0clRhZz4pOwpAQCAtNjQsNiArNjYsOCBAQCB2b2lkIHJlc2V0UHV0QnlJRChDb2RlQmxv
Y2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXNldERlbEJ5KENvZGVCbG9jayosIFN0
cnVjdHVyZVN0dWJJbmZvJiwgRGVsQnlLaW5kKTsKIHZvaWQgcmVzZXRJbkJ5SUQoQ29kZUJsb2Nr
KiwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVzZXRJbnN0YW5jZU9mKFN0cnVjdHVyZVN0
dWJJbmZvJik7Cit2b2lkIHJlc2V0Q2hlY2tQcml2YXRlQnJhbmQoQ29kZUJsb2NrKiwgU3RydWN0
dXJlU3R1YkluZm8mKTsKK3ZvaWQgcmVzZXRTZXRQcml2YXRlQnJhbmQoQ29kZUJsb2NrKiwgU3Ry
dWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKENvZGVCbG9j
ayosIENvZGVMb2NhdGlvbkNhbGw8SlNJbnRlcm5hbFB0clRhZz4sIEZ1bmN0aW9uUHRyPENGdW5j
dGlvblB0clRhZz4gbmV3Q2FsbGVlRnVuY3Rpb24pOwogTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpT
RW50cnlQdHJUYWc+IGpzVG9XYXNtSUNDb2RlUHRyKFZNJiwgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCwgSlNPYmplY3QqIGNhbGxlZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCmluZGV4IGQxNWFiYTgxZjBiZGM4N2U4N2NlZTJkMjgzZWM3M2Nm
NjUwNzYxNTEuLmJlNWE3ZmJhYWI4ZTE2NTkzNmJmMWNlYzMwZmJkYWIwMmU5YWI5ZmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMTMw
MSw2ICsxMzAxLDc4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfcHJpdmF0
ZV9uYW1lKQogICAgIExMSU5UX0VORCgpOyAgICAKIH0KIAorTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX3NldF9wcml2YXRlX2JyYW5kKQoreworICAgIExMSU5UX0JFR0lOKCk7CisKKyAg
ICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wU2V0UHJpdmF0ZUJyYW5kPigpOworICAgIEpTVmFs
dWUgYmFzZVZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSk7Cisg
ICAgSlNWYWx1ZSBicmFuZCA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2JyYW5k
KTsKKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7Cisg
ICAgQVNTRVJUKGJhc2VWYWx1ZS5pc09iamVjdCgpKTsKKyAgICBBU1NFUlQoYnJhbmQuaXNTeW1i
b2woKSk7CisKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7
CisgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUodm0p
OworCisgICAgYmFzZU9iamVjdC0+c2V0UHJpdmF0ZUJyYW5kKGdsb2JhbE9iamVjdCwgYnJhbmQp
OworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworCisgICAgaWYgKCFMTElOVF9BTFdBWVNf
QUNDRVNTX1NMT1cgJiYgIW9sZFN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpIHsKKyAgICAgICAg
R0NTYWZlQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jaywgdm0uaGVh
cCk7CisgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gYmFzZU9iamVjdC0+c3RydWN0
dXJlKHZtKTsKKworICAgICAgICBBU1NFUlQob2xkU3RydWN0dXJlID09IG5ld1N0cnVjdHVyZS0+
cHJldmlvdXNJRCgpKTsKKyAgICAgICAgQVNTRVJUKG9sZFN0cnVjdHVyZS0+dHJhbnNpdGlvbldh
dGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKSk7CisKKyAgICAgICAgLy8gU3RhcnQgb3V0
IGJ5IGNsZWFyaW5nIG91dCB0aGUgb2xkIGNhY2hlLgorICAgICAgICBtZXRhZGF0YS5tX29sZFN0
cnVjdHVyZUlEID0gMDsKKyAgICAgICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRCA9IDA7Cisg
ICAgICAgIG1ldGFkYXRhLm1fYnJhbmQuY2xlYXIoKTsKKworICAgICAgICBpZiAoIW5ld1N0cnVj
dHVyZS0+aXNEaWN0aW9uYXJ5KCkpIHsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fb2xkU3RydWN0
dXJlSUQgPSBvbGRTdHJ1Y3R1cmUtPmlkKCk7CisgICAgICAgICAgICBtZXRhZGF0YS5tX25ld1N0
cnVjdHVyZUlEID0gbmV3U3RydWN0dXJlLT5pZCgpOworICAgICAgICAgICAgbWV0YWRhdGEubV9i
cmFuZC5zZXQodm0sIGNvZGVCbG9jaywgYnJhbmQuYXNDZWxsKCkpOworICAgICAgICB9CisgICAg
ICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CisgICAgfQorCisgICAgTExJTlRf
RU5EKCk7ICAgIAorfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2hlY2tfcHJp
dmF0ZV9icmFuZCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworCisgICAgYXV0byBieXRlY29kZSA9
IHBjLT5hczxPcENoZWNrUHJpdmF0ZUJyYW5kPigpOworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0
ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IGdldE9w
ZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2Jhc2UpOworICAgIEpTVmFsdWUgYnJhbmQgPSBn
ZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9icmFuZCk7CisKKyAgICBKU09iamVjdCog
YmFzZU9iamVjdCA9IGJhc2VWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIExMSU5U
X0NIRUNLX0VYQ0VQVElPTigpOworCisgICAgQVNTRVJUKGJyYW5kLmlzU3ltYm9sKCkpOworCisg
ICAgYmFzZU9iamVjdC0+Y2hlY2tQcml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0LCBicmFuZCk7Cisg
ICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisKKyAgICAvLyBPT1BTOiBJcyB0aGVyZSByZWFs
bHkgYSBjYXNlIHdoZXJlIHdlIGRvbid0IHdhbnQgdG8gY2FjaGUgaGVyZT8KKyAgICAvLyBTaW5j
ZSBhIGJyYW5kIGNhbiBuZXZlciBiZSBkZWxldGVkLCBpdCdzIHNhZmUgdG8gcmVseSBvbiBTdHJ1
Y3R1cmVJRAorICAgIC8vIGV2ZW4gaWYgaXQncyBhbiB1bmNhY2hlYWJsZSBkaWN0aW9uYXJ5Lgor
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZU9iamVjdC0+c3RydWN0dXJlKHZtKTsKKyAg
ICBpZiAoIUxMSU5UX0FMV0FZU19BQ0NFU1NfU0xPVykgeworICAgICAgICBHQ1NhZmVDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrLCB2bS5oZWFwKTsKKworICAgICAg
ICBtZXRhZGF0YS5tX3N0cnVjdHVyZUlEID0gc3RydWN0dXJlLT5pZCgpOworICAgICAgICBtZXRh
ZGF0YS5tX2JyYW5kLnNldCh2bSwgY29kZUJsb2NrLCBicmFuZC5hc0NlbGwoKSk7CisgICAgICAg
IHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CisgICAgfQorCisgICAgTExJTlRfRU5E
KCk7ICAgIAorfQorCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCkK
IHsKICAgICBMTElOVF9CRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuaAppbmRleCA5ODFiMzZlNWU4MDQ1Mjg4YzBlYjUxZThmOGJmNGVmZDk1MzBj
OThmLi40NzExYThlYTUyNTI3ZWYwMzFkODZkNTY2NjlkZmQyNWYzMDMxNGQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaApAQCAtNzcsNiArNzcsOCBA
QCBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9hcmd1bWVudF9ieV92
YWwpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsKTsK
IExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbF9kaXJlY3Qp
OwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfcHJpdmF0ZV9uYW1l
KTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY2hlY2tfcHJpdmF0ZV9i
cmFuZCk7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3NldF9wcml2YXRl
X2JyYW5kKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZGVsX2J5X3Zh
bCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9nZXR0ZXJfYnlf
aWQpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfc2V0dGVyX2J5
X2lkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggZWE0MzFjZTczZWQ4MjE4NjJkMzZlMmYwNTZkMmUw
ZjJkM2E4ZTk0NS4uNjY1NzFiZWI1YzYwYjExNzliNGE3YzBiYWY5NDhiYTIyOTJkZGY2YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIz
Ml82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIzMl82NC5hc20KQEAgLTI5OTEsMyArMjk5MSw0OCBAQCBlbmQpCiBvcChmdXp6ZXJfcmV0
dXJuX2Vhcmx5X2Zyb21fbG9vcF9oaW50LCBtYWNybyAoKQogICAgIG5vdFN1cHBvcnRlZCgpCiBl
bmQpCisKKworbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9jaGVja19wcml2YXRlX2JyYW5kLCBPcENo
ZWNrUHJpdmF0ZUJyYW5kLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJl
dHVybikKKyAgICBtZXRhZGF0YSh0NSwgdDIpCisgICAgZ2V0KG1fYmFzZSwgdDMpCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDMsIENlbGxUYWcsIHQwLCAub3BDaGVj
a1ByaXZhdGVCcmFuZFNsb3cpCisgICAgZ2V0KG1fYnJhbmQsIHQzKQorICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQzLCBDZWxsVGFnLCB0MSwgLm9wQ2hlY2tQcml2YXRl
QnJhbmRTbG93KQorCisgICAgbG9hZGkgT3BDaGVja1ByaXZhdGVCcmFuZDo6TWV0YWRhdGE6Om1f
c3RydWN0dXJlSURbdDVdLCB0MworICAgIGJpbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0s
IHQzLCAub3BDaGVja1ByaXZhdGVCcmFuZFNsb3cKKworICAgIGxvYWRwIE9wQ2hlY2tQcml2YXRl
QnJhbmQ6Ok1ldGFkYXRhOjptX2JyYW5kW3Q1XSwgdDMKKyAgICBicG5lcSB0MywgdDEsIC5vcENo
ZWNrUHJpdmF0ZUJyYW5kU2xvdworICAgIGRpc3BhdGNoKCkKKworLm9wQ2hlY2tQcml2YXRlQnJh
bmRTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2NoZWNrX3ByaXZhdGVf
YnJhbmQpCisgICAgZGlzcGF0Y2goKQorZW5kKQorCisKK2xsaW50T3BXaXRoTWV0YWRhdGEob3Bf
c2V0X3ByaXZhdGVfYnJhbmQsIE9wU2V0UHJpdmF0ZUJyYW5kLCBtYWNybyAoc2l6ZSwgZ2V0LCBk
aXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKKyAgICBtZXRhZGF0YSh0NSwgdDIpCisgICAgZ2V0
KG1fYmFzZSwgdDMpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDMs
IENlbGxUYWcsIHQwLCAub3BTZXRQcml2YXRlQnJhbmRTbG93KQorICAgIGdldChtX2JyYW5kLCB0
MykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MywgQ2VsbFRhZywg
dDEsIC5vcFNldFByaXZhdGVCcmFuZFNsb3cpCisKKyAgICBsb2FkaSBPcFNldFByaXZhdGVCcmFu
ZDo6TWV0YWRhdGE6Om1fb2xkU3RydWN0dXJlSURbdDVdLCB0MgorICAgIGJpbmVxIHQyLCBKU0Nl
bGw6Om1fc3RydWN0dXJlSURbdDBdLCAub3BTZXRQcml2YXRlQnJhbmRTbG93CisKKyAgICBsb2Fk
cCBPcFNldFByaXZhdGVCcmFuZDo6TWV0YWRhdGE6Om1fYnJhbmRbdDVdLCB0MworICAgIGJwbmVx
IHQzLCB0MSwgLm9wU2V0UHJpdmF0ZUJyYW5kU2xvdworCisgICAgbG9hZGkgT3BTZXRQcml2YXRl
QnJhbmQ6Ok1ldGFkYXRhOjptX25ld1N0cnVjdHVyZUlEW3Q1XSwgdDEKKyAgICBzdG9yZWkgdDEs
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0KKyAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmQoc2l6
ZSwgZ2V0LCBtX2Jhc2UpCisgICAgZGlzcGF0Y2goKQorCisub3BTZXRQcml2YXRlQnJhbmRTbG93
OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3NldF9wcml2YXRlX2JyYW5kKQor
ICAgIGRpc3BhdGNoKCkKK2VuZCkKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCBlMTJkYzM4M2JjZTc2M2ZiOGI2
MTczYjMyMTJhNmEzNTZlNjEzZTNkLi4yY2I5ZjdhZjVjOGRhNzU0NDY5OTdhNDY1OGIyMTFjZTQy
NTYwMzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMTgxNSw2ICsxODE1LDQ3IEBAIGxsaW50T3BXaXRoTWV0
YWRhdGEob3BfcHV0X3ByaXZhdGVfbmFtZSwgT3BQdXRQcml2YXRlTmFtZSwgbWFjcm8gKHNpemUs
IGdldCwgZGlzCiAgICAgZGlzcGF0Y2goKQogZW5kKQogCitsbGludE9wV2l0aE1ldGFkYXRhKG9w
X3NldF9wcml2YXRlX2JyYW5kLCBPcFNldFByaXZhdGVCcmFuZCwgbWFjcm8gKHNpemUsIGdldCwg
ZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisgICAgZ2V0KG1fYmFzZSwgdDMpCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDMsIHQwLCAub3BTZXRQcml2YXRlQnJhbmRT
bG93KQorICAgIGdldChtX2JyYW5kLCB0MykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2Vs
bChzaXplLCB0MywgdDEsIC5vcFNldFByaXZhdGVCcmFuZFNsb3cpCisgICAgbWV0YWRhdGEodDUs
IHQyKQorICAgIGxvYWRpIE9wU2V0UHJpdmF0ZUJyYW5kOjpNZXRhZGF0YTo6bV9vbGRTdHJ1Y3R1
cmVJRFt0NV0sIHQyCisgICAgYmluZXEgdDIsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIC5v
cFNldFByaXZhdGVCcmFuZFNsb3cKKworICAgIGxvYWRwIE9wU2V0UHJpdmF0ZUJyYW5kOjpNZXRh
ZGF0YTo6bV9icmFuZFt0NV0sIHQzCisgICAgYnBuZXEgdDMsIHQxLCAub3BTZXRQcml2YXRlQnJh
bmRTbG93CisKKyAgICBsb2FkaSBPcFNldFByaXZhdGVCcmFuZDo6TWV0YWRhdGE6Om1fbmV3U3Ry
dWN0dXJlSURbdDVdLCB0MQorICAgIHN0b3JlaSB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3Qw
XQorICAgIHdyaXRlQmFycmllck9uT3BlcmFuZChzaXplLCBnZXQsIG1fYmFzZSkKKyAgICBkaXNw
YXRjaCgpCisKKy5vcFNldFByaXZhdGVCcmFuZFNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGlu
dF9zbG93X3BhdGhfc2V0X3ByaXZhdGVfYnJhbmQpCisgICAgZGlzcGF0Y2goKQorZW5kKQorCits
bGludE9wV2l0aE1ldGFkYXRhKG9wX2NoZWNrX3ByaXZhdGVfYnJhbmQsIE9wQ2hlY2tQcml2YXRl
QnJhbmQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorICAg
IG1ldGFkYXRhKHQ1LCB0MikKKyAgICBnZXQobV9iYXNlLCB0MykKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlQ2VsbChzaXplLCB0MywgdDAsIC5vcENoZWNrUHJpdmF0ZUJyYW5kU2xvdykKKyAg
ICBnZXQobV9icmFuZCwgdDMpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwg
dDMsIHQxLCAub3BDaGVja1ByaXZhdGVCcmFuZFNsb3cpCisKKyAgICBsb2FkcCBPcFNldFByaXZh
dGVCcmFuZDo6TWV0YWRhdGE6Om1fYnJhbmRbdDVdLCB0MworICAgIGJxbmVxIHQzLCB0MSwgLm9w
Q2hlY2tQcml2YXRlQnJhbmRTbG93CisKKyAgICBsb2FkaSBPcENoZWNrUHJpdmF0ZUJyYW5kOjpN
ZXRhZGF0YTo6bV9zdHJ1Y3R1cmVJRFt0NV0sIHQyCisgICAgYmluZXEgdDIsIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVJRFt0MF0sIC5vcENoZWNrUHJpdmF0ZUJyYW5kU2xvdworICAgIGRpc3BhdGNoKCkK
KworLm9wQ2hlY2tQcml2YXRlQnJhbmRTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xv
d19wYXRoX2NoZWNrX3ByaXZhdGVfYnJhbmQpCisgICAgZGlzcGF0Y2goKQorZW5kKQorCiBtYWNy
byBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgb3NyRXhpdFBvaW50KQogICAg
IGxsaW50T3BXaXRoTWV0YWRhdGEob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3Jv
IChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgICAgICBtYWNybyBj
b250aWd1b3VzUHV0QnlWYWwoc3RvcmVDYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Ob2Rlcy5jcHAKaW5kZXggNjRhNjZmNzY1YzhmNGQyODQ5NmRhOWNlNmM0NGFiYjA4YWE4ODFi
OS4uMDJiNzg3NWNjYWY2YWZmNjYzYWMxZWVmNWFkZGI4ZGJkMzQwOTM3NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKQEAgLTIwMiw2ICsyMDIsNyBAQCBGdW5jdGlvbk1l
dGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUoCiAgICAgICAgICwgbV9jb25zdHJ1Y3Rv
cktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCiAgICAgICAgICwg
bV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vKSkKICAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbkJv
ZHlFeHByZXNzaW9uKGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQorICAgICAgICAsIG1f
cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50OjpOb25lKSkKICAgICAgICAgLCBtX3BhcnNlTW9kZShtb2RlKQogICAgICAg
ICAsIG1fc3RhcnRDb2x1bW4oc3RhcnRDb2x1bW4pCiAgICAgICAgICwgbV9lbmRDb2x1bW4oZW5k
Q29sdW1uKQpAQCAtMjI2LDYgKzIyNyw3IEBAIEZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpGdW5jdGlv
bk1ldGFkYXRhTm9kZSgKICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkKICAgICAgICAgLCBtX25lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihOZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
cjo6Tm8pKQogICAgICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24oaXNBcnJv
d0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCisgICAgICAgICwgbV9wcml2YXRlQnJhbmRSZXF1aXJl
bWVudChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmUp
KQogICAgICAgICAsIG1fcGFyc2VNb2RlKG1vZGUpCiAgICAgICAgICwgbV9zdGFydENvbHVtbihz
dGFydENvbHVtbikKICAgICAgICAgLCBtX2VuZENvbHVtbihlbmRDb2x1bW4pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggZWQ5MDc3NTM5MDU3ZjUzNjE2MjNmYzc5ZDdlYmJj
Yjk4YzAxN2JkZi4uNGJmOTM4NmYyNmYwMjk4M2I3ODg2OWU0YTI1MDI1ZjYwZWM4YWIzNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtNzIxLDcgKzcyMSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIGVudW0gY2xhc3MgQ2xhc3NFbGVtZW50VGFnIDogdWludDhfdCB7IE5v
LCBJbnN0YW5jZSwgU3RhdGljLCBMYXN0VGFnIH07CiAgICAgY2xhc3MgUHJvcGVydHlOb2RlIGZp
bmFsIDogcHVibGljIFBhcnNlckFyZW5hRnJlZWFibGUgewogICAgIHB1YmxpYzoKLSAgICAgICAg
ZW51bSBUeXBlIDogdWludDhfdCB7IENvbnN0YW50ID0gMSwgR2V0dGVyID0gMiwgU2V0dGVyID0g
NCwgQ29tcHV0ZWQgPSA4LCBTaG9ydGhhbmQgPSAxNiwgU3ByZWFkID0gMzIsIFByaXZhdGUgPSA2
NCB9OworICAgICAgICBlbnVtIFR5cGUgOiB1aW50OF90IHsgQ29uc3RhbnQgPSAxLCBHZXR0ZXIg
PSAyLCBTZXR0ZXIgPSA0LCBDb21wdXRlZCA9IDgsIFNob3J0aGFuZCA9IDE2LCBTcHJlYWQgPSAz
MiwgUHJpdmF0ZUZpZWxkID0gNjQsIFByaXZhdGVNZXRob2QgPSAxMjggfTsKIAogICAgICAgICBQ
cm9wZXJ0eU5vZGUoY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiwgVHlwZSwgU3Vw
ZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcpOwogICAgICAgICBQcm9wZXJ0eU5vZGUoRXhwcmVz
c2lvbk5vZGUqLCBUeXBlLCBTdXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZyk7CkBAIC03NDAs
NyArNzQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgaXNJbnN0YW5jZUNsYXNz
RmllbGQoKSBjb25zdCB7IHJldHVybiBpc0luc3RhbmNlQ2xhc3NQcm9wZXJ0eSgpICYmICFuZWVk
c1N1cGVyQmluZGluZygpOyB9CiAgICAgICAgIGJvb2wgaXNTdGF0aWNDbGFzc0ZpZWxkKCkgY29u
c3QgeyByZXR1cm4gaXNTdGF0aWNDbGFzc1Byb3BlcnR5KCkgJiYgIW5lZWRzU3VwZXJCaW5kaW5n
KCk7IH0KICAgICAgICAgYm9vbCBpc092ZXJyaWRkZW5CeUR1cGxpY2F0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1faXNPdmVycmlkZGVuQnlEdXBsaWNhdGU7IH0KLSAgICAgICAgYm9vbCBpc1ByaXZhdGUo
KSBjb25zdCB7IHJldHVybiBtX3R5cGUgJiBQcml2YXRlOyB9CisgICAgICAgIGJvb2wgaXNQcml2
YXRlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlICYgKFByaXZhdGVGaWVsZCB8IFByaXZhdGVNZXRo
b2QpOyB9CiAgICAgICAgIGJvb2wgaGFzQ29tcHV0ZWROYW1lKCkgY29uc3QgeyByZXR1cm4gbV9l
eHByZXNzaW9uOyB9CiAgICAgICAgIGJvb2wgaXNDb21wdXRlZENsYXNzRmllbGQoKSBjb25zdCB7
IHJldHVybiBpc0NsYXNzRmllbGQoKSAmJiBoYXNDb21wdXRlZE5hbWUoKTsgfQogICAgICAgICB2
b2lkIHNldElzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlKCkgeyBtX2lzT3ZlcnJpZGRlbkJ5RHVwbGlj
YXRlID0gdHJ1ZTsgfQpAQCAtNzYwLDcgKzc2MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBjb25zdCBJZGVudGlmaWVyKiBtX25hbWU7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4
cHJlc3Npb247CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Fzc2lnbjsKLSAgICAgICAgdW5z
aWduZWQgbV90eXBlIDogNzsKKyAgICAgICAgdW5zaWduZWQgbV90eXBlOwogICAgICAgICB1bnNp
Z25lZCBtX25lZWRzU3VwZXJCaW5kaW5nIDogMTsKICAgICAgICAgc3RhdGljX2Fzc2VydCgxIDw8
IDIgPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ2xhc3NFbGVtZW50VGFnOjpMYXN0VGFnKSwgIkNs
YXNzRWxlbWVudFRhZyBzaG91bGRuJ3QgdXNlIG1vcmUgdGhhbiB0d28gYml0cyIpOwogICAgICAg
ICB1bnNpZ25lZCBtX2NsYXNzRWxlbWVudFRhZyA6IDI7CkBAIC04MzgsNyArODM4LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9zdWJzY3JpcHRIYXNBc3NpZ25tZW50czsKICAg
ICB9OwogCi0gICAgZW51bSBjbGFzcyBEb3RUeXBlIHsgTmFtZSwgUHJpdmF0ZUZpZWxkIH07Cisg
ICAgZW51bSBjbGFzcyBEb3RUeXBlIHsgTmFtZSwgUHJpdmF0ZU1lbWJlciB9OwogICAgIGNsYXNz
IEJhc2VEb3ROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6CiAgICAg
ICAgIEJhc2VEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBi
YXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRG90VHlwZSk7CkBAIC04NDYsNyArODQ2LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBiYXNlKCkgY29uc3QgeyByZXR1
cm4gbV9iYXNlOyB9CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25z
dCB7IHJldHVybiBtX2lkZW50OyB9CiAgICAgICAgIERvdFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZTsgfQotICAgICAgICBib29sIGlzUHJpdmF0ZUZpZWxkKCkgY29uc3QgeyByZXR1
cm4gbV90eXBlID09IERvdFR5cGU6OlByaXZhdGVGaWVsZDsgfQorICAgICAgICBib29sIGlzUHJp
dmF0ZU1lbWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBEb3RUeXBlOjpQcml2YXRlTWVt
YmVyOyB9CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldFByb3BlcnR5VmFsdWUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZlB0cjxS
ZWdpc3RlcklEPiYgdGhpc1ZhbHVlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldFByb3Bl
cnR5VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IGJhc2UpOwpAQCAtODcwLDcgKzg3MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdp
c3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51
bGxwdHIpIGZpbmFsOwogCiAgICAgICAgIGJvb2wgaXNMb2NhdGlvbigpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KLSAgICAgICAgYm9vbCBpc1ByaXZhdGVMb2NhdGlvbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fdHlwZSA9PSBEb3RUeXBlOjpQcml2YXRlRmllbGQ7IH0KKyAgICAg
ICAgYm9vbCBpc1ByaXZhdGVMb2NhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fdHlw
ZSA9PSBEb3RUeXBlOjpQcml2YXRlTWVtYmVyOyB9CiAgICAgICAgIGJvb2wgaXNEb3RBY2Nlc3Nv
ck5vZGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgfTsKIApAQCAtMjE2MSw2
ICsyMTYxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgc2V0RWNtYU5hbWUoY29u
c3QgSWRlbnRpZmllciYgZWNtYU5hbWUpIHsgbV9lY21hTmFtZSA9IGVjbWFOYW1lOyB9CiAgICAg
ICAgIGNvbnN0IElkZW50aWZpZXImIGVjbWFOYW1lKCkgeyByZXR1cm4gbV9pZGVudC5pc0VtcHR5
KCkgPyBtX2VjbWFOYW1lIDogbV9pZGVudDsgfQogCisgICAgICAgIHZvaWQgc2V0UHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQoUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWly
ZW1lbnQpIHsgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
Pihwcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7IH0KKyAgICAgICAgUHJpdmF0ZUJyYW5kUmVxdWly
ZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxQcml2
YXRlQnJhbmRSZXF1aXJlbWVudD4obV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7IH0KKwogICAg
ICAgICBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2RlKCkgeyByZXR1cm4gbV9mdW5jdGlvbk1vZGU7
IH0KIAogICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQoKSBjb25zdCB7IHJldHVybiBtX2Z1
bmN0aW9uTmFtZVN0YXJ0OyB9CkBAIC0yMjA5LDYgKzIyMTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwogICAgICAgICB1bnNpZ25l
ZCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIDogMTsKICAgICAgICAgdW5zaWduZWQgbV9p
c0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA6IDE7CisgICAgICAgIHVuc2lnbmVkIG1fcHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQgOiAxOwogICAgICAgICBTb3VyY2VQYXJzZU1vZGUgbV9wYXJz
ZU1vZGU7CiAgICAgICAgIEZ1bmN0aW9uTW9kZSBtX2Z1bmN0aW9uTW9kZTsKICAgICAgICAgSWRl
bnRpZmllciBtX2lkZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmlu
ZGV4IDcwNjc0YzQ4YjYyMzI3NDUxNTBjOTcxMDI4NzMyMjBkYTEzMDc1N2MuLmFkM2QxMjc1ZGJk
NWY5NzM0YzNmNDFmN2VjMWMyMzU3ZmU4YWVkNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAKQEAgLTI4NjIsNiArMjg2Miw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZUNsYXNzRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFz
cyhUCiAgICAgY2xhc3NTY29wZS0+c2V0SXNMZXhpY2FsU2NvcGUoKTsKICAgICBjbGFzc1Njb3Bl
LT5wcmV2ZW50VmFyRGVjbGFyYXRpb25zKCk7CiAgICAgY2xhc3NTY29wZS0+c2V0U3RyaWN0TW9k
ZSgpOworICAgIGJvb2wgZGVjbGFyZXNQcml2YXRlTWV0aG9kID0gZmFsc2U7CiAgICAgbmV4dCgp
OwogCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShyZXF1aXJlbWVudHMgIT0gRnVuY3Rpb25OYW1l
UmVxdWlyZW1lbnRzOjpVbm5hbWVkLCAiQ3VycmVudGx5LCB0aGVyZSBpcyBubyBjYWxsZXIgdGhh
dCB1c2VzIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50czo6VW5uYW1lZCBmb3IgY2xhc3Mgc3ludGF4
LiIpOwpAQCAtMjk4MSwxNiArMjk4MiwyMiBAQCBwYXJzZU1ldGhvZDoKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIFBSSVZBVEVOQU1FOiB7CiAgICAgICAgICAgICBBU1NFUlQoT3B0
aW9uczo6dXNlUHJpdmF0ZUNsYXNzRmllbGRzKCkpOwotICAgICAgICAgICAgSlNUb2tlbiB0b2tl
biA9IG1fdG9rZW47CiAgICAgICAgICAgICBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50Owog
ICAgICAgICAgICAgaWYgKCFPcHRpb25zOjp1c2VQcml2YXRlU3RhdGljQ2xhc3NGaWVsZHMoKSkK
ICAgICAgICAgICAgICAgICBmYWlsSWZUcnVlKHRhZyA9PSBDbGFzc0VsZW1lbnRUYWc6OlN0YXRp
YywgIlN0YXRpYyBjbGFzcyBlbGVtZW50IGNhbm5vdCBiZSBwcml2YXRlIik7CiAgICAgICAgICAg
ICBmYWlsSWZUcnVlKGlzR2V0dGVyIHx8IGlzU2V0dGVyLCAiQ2Fubm90IHBhcnNlIGNsYXNzIG1l
dGhvZCB3aXRoIHByaXZhdGUgbmFtZSIpOwogICAgICAgICAgICAgQVNTRVJUKGlkZW50KTsKICAg
ICAgICAgICAgIG5leHQoKTsKLSAgICAgICAgICAgIGZhaWxJZlRydWUobWF0Y2hBbmRVcGRhdGUo
T1BFTlBBUkVOLCB0b2tlbiksICJDYW5ub3QgcGFyc2UgY2xhc3MgbWV0aG9kIHdpdGggcHJpdmF0
ZSBuYW1lIik7Ci0gICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoY2xhc3NTY29wZS0+ZGVj
bGFyZVByaXZhdGVOYW1lKCppZGVudCkgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxp
Y2F0ZURlY2xhcmF0aW9uLCAiQ2Fubm90IGRlY2xhcmUgcHJpdmF0ZSBmaWVsZCB0d2ljZSIpOwot
ICAgICAgICAgICAgdHlwZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4odHlwZSB8
IFByb3BlcnR5Tm9kZTo6UHJpdmF0ZSk7CisgICAgICAgICAgICBpZiAoT3B0aW9uczo6dXNlUHJp
dmF0ZU1ldGhvZHMoKSAmJiBtYXRjaChPUEVOUEFSRU4pKSB7CisgICAgICAgICAgICAgICAgc2Vt
YW50aWNGYWlsSWZUcnVlKGNsYXNzU2NvcGUtPmRlY2xhcmVQcml2YXRlTWV0aG9kKCppZGVudCkg
JiBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uLCAiQ2Fubm90
IGRlY2xhcmUgcHJpdmF0ZSBtZXRob2QgdHdpY2UiKTsKKyAgICAgICAgICAgICAgICBkZWNsYXJl
c1ByaXZhdGVNZXRob2QgPSB0cnVlOworICAgICAgICAgICAgICAgIHR5cGUgPSBzdGF0aWNfY2Fz
dDxQcm9wZXJ0eU5vZGU6OlR5cGU+KHR5cGUgfCBQcm9wZXJ0eU5vZGU6OlByaXZhdGVNZXRob2Qp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBm
YWlsSWZUcnVlKG1hdGNoKE9QRU5QQVJFTiksICJDYW5ub3QgcGFyc2UgY2xhc3MgbWV0aG9kIHdp
dGggcHJpdmF0ZSBuYW1lIik7CisgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoY2xhc3NT
Y29wZS0+ZGVjbGFyZVByaXZhdGVGaWVsZCgqaWRlbnQpICYgRGVjbGFyYXRpb25SZXN1bHQ6Oklu
dmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbiwgIkNhbm5vdCBkZWNsYXJlIHByaXZhdGUgZmllbGQg
dHdpY2UiKTsKKyAgICAgICAgICAgIHR5cGUgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5
cGU+KHR5cGUgfCBQcm9wZXJ0eU5vZGU6OlByaXZhdGVGaWVsZCk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgpAQCAtMzA3NSwxMCArMzA4MiwxOSBAQCBw
YXJzZU1ldGhvZDoKICAgICBpbmZvLmVuZE9mZnNldCA9IHRva2VuTG9jYXRpb24oKS5lbmRPZmZz
ZXQgLSAxOwogICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VCUkFDRSwgIkV4cGVjdGVkIGEgY2xvc2lu
ZyAnfScgYWZ0ZXIgYSBjbGFzcyBib2R5Iik7CiAKKyAgICBpZiAoZGVjbGFyZXNQcml2YXRlTWV0
aG9kKSB7CisgICAgICAgIElkZW50aWZpZXIgcHJpdmF0ZUJyYW5kSWRlbnRpZmllciA9IG1fdm0u
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucHJpdmF0ZUJyYW5kUHJpdmF0ZU5hbWUoKTsK
KyAgICAgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmF0aW9uUmVzdWx0ID0gY2xhc3NT
Y29wZS0+ZGVjbGFyZUxleGljYWxWYXJpYWJsZSgmcHJpdmF0ZUJyYW5kSWRlbnRpZmllciwgdHJ1
ZSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoZGVjbGFyYXRpb25SZXN1bHQsIGRlY2xhcmF0aW9u
UmVzdWx0ID09IERlY2xhcmF0aW9uUmVzdWx0OjpWYWxpZCk7CisgICAgICAgIGNsYXNzU2NvcGUt
PnVzZVZhcmlhYmxlKCZwcml2YXRlQnJhbmRJZGVudGlmaWVyLCBmYWxzZSk7CisgICAgICAgIGNs
YXNzU2NvcGUtPmFkZENsb3NlZFZhcmlhYmxlQ2FuZGlkYXRlVW5jb25kaXRpb25hbGx5KHByaXZh
dGVCcmFuZElkZW50aWZpZXIuaW1wbCgpKTsKKyAgICB9CisKICAgICBpZiAoT3B0aW9uczo6dXNl
UHJpdmF0ZUNsYXNzRmllbGRzKCkpIHsKICAgICAgICAgLy8gRmFpbCBpZiB0aGVyZSBhcmUgbm8g
cGFyZW50IHByaXZhdGUgbmFtZSBzY29wZXMgYW5kIGFueSB1c2VkLWJ1dC11bmRlY2xhcmVkIHBy
aXZhdGUgbmFtZXMuCiAgICAgICAgIHNlbWFudGljRmFpbElmRmFsc2UoY29weVVuZGVjbGFyZWRQ
cml2YXRlTmFtZXNUb091dGVyU2NvcGUoKSwgIkNhbm5vdCByZWZlcmVuY2UgdW5kZWNsYXJlZCBw
cml2YXRlIG5hbWVzIik7CiAgICAgfQorCiAgICAgYXV0byBjbGFzc0V4cHJlc3Npb24gPSBjb250
ZXh0LmNyZWF0ZUNsYXNzRXhwcihsb2NhdGlvbiwgaW5mbywgY2xhc3NTY29wZS0+ZmluYWxpemVM
ZXhpY2FsRW52aXJvbm1lbnQoKSwgY29uc3RydWN0b3IsIHBhcmVudENsYXNzLCBjbGFzc0VsZW1l
bnRzKTsKICAgICBwb3BTY29wZShjbGFzc1Njb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFy
aWFibGVJbmZvKTsKICAgICByZXR1cm4gY2xhc3NFeHByZXNzaW9uOwpAQCAtNTE0OCw3ICs1MTY0
LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXMKICAgICAgICAgICAgICAgICAgICAgc2VtYW50
aWNGYWlsSWZGYWxzZSh1c2VQcml2YXRlTmFtZShpZGVudCksICJDYW5ub3QgcmVmZXJlbmNlIHBy
aXZhdGUgbmFtZXMgb3V0c2lkZSBvZiBjbGFzcyIpOwogICAgICAgICAgICAgICAgICAgICBtX3Bh
cnNlclN0YXRlLmxhc3RQcml2YXRlTmFtZSA9IGlkZW50OwogICAgICAgICAgICAgICAgICAgICBj
dXJyZW50U2NvcGUoKS0+dXNlVmFyaWFibGUoaWRlbnQsIGZhbHNlKTsKLSAgICAgICAgICAgICAg
ICAgICAgdHlwZSA9IERvdFR5cGU6OlByaXZhdGVGaWVsZDsKKyAgICAgICAgICAgICAgICAgICAg
dHlwZSA9IERvdFR5cGU6OlByaXZhdGVNZW1iZXI7CiAgICAgICAgICAgICAgICAgICAgIG1fdG9r
ZW4ubV90eXBlID0gSURFTlQ7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG1h
dGNoT3JGYWlsKElERU5ULCAiRXhwZWN0ZWQgYSBwcm9wZXJ0eSBuYW1lIGFmdGVyICIsIG9wdGlv
bmFsQ2hhaW5CYXNlID8gIic/LiciIDogIicuJyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmgKaW5kZXggYmUzM2MxYmU5NWU5ZGE0NTAwYmFmMWI4MDU5YmEzNTA4NDdhODg2MS4u
MzA4OTE5MGFiMWI3NTJlNDMzYzdhZjA1YTgzNWYzN2QzNTkxNDAxMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC01MDAsMTEgKzUwMCwyOCBAQCBwdWJsaWM6CiAgICAg
ICAgIG1fbGV4aWNhbFZhcmlhYmxlcy51c2VQcml2YXRlTmFtZShpZGVudCk7CiAgICAgfQogCi0g
ICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmVQcml2YXRlTmFtZShjb25zdCBJZGVudGlm
aWVyJiBpZGVudCkKKyAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyZVByaXZhdGVNZXRo
b2QoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiAgICAgewogICAgICAgICBBU1NFUlQobV9hbGxv
d3NMZXhpY2FsRGVjbGFyYXRpb25zKTsKICAgICAgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIHJl
c3VsdCA9IERlY2xhcmF0aW9uUmVzdWx0OjpWYWxpZDsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQg
PSBtX2xleGljYWxWYXJpYWJsZXMuZGVjbGFyZVByaXZhdGVOYW1lKGlkZW50KTsKKyAgICAgICAg
Ym9vbCBhZGRSZXN1bHQgPSBtX2xleGljYWxWYXJpYWJsZXMuZGVjbGFyZVByaXZhdGVNZXRob2Qo
aWRlbnQpOworCisgICAgICAgIGlmICghYWRkUmVzdWx0KSB7CisgICAgICAgICAgICByZXN1bHQg
fD0gRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbjsKKyAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICB1c2VWYXJpYWJsZSgm
aWRlbnQsIGZhbHNlKTsKKyAgICAgICAgYWRkQ2xvc2VkVmFyaWFibGVDYW5kaWRhdGVVbmNvbmRp
dGlvbmFsbHkoaWRlbnQuaW1wbCgpKTsKKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0K
KworICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJlUHJpdmF0ZUZpZWxkKGNvbnN0IElk
ZW50aWZpZXImIGlkZW50KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYWxsb3dzTGV4aWNhbERl
Y2xhcmF0aW9ucyk7CisgICAgICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayByZXN1bHQgPSBEZWNs
YXJhdGlvblJlc3VsdDo6VmFsaWQ7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9sZXhpY2Fs
VmFyaWFibGVzLmRlY2xhcmVQcml2YXRlRmllbGQoaWRlbnQpOwogICAgICAgICBpZiAoIWFkZFJl
c3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAgcmVzdWx0IHw9IERlY2xhcmF0aW9uUmVzdWx0
OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb247CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBA
IC05NDQsNyArOTYxLDcgQEAgcHVibGljOgogICAgIH5QYXJzZXIoKTsKIAogICAgIHRlbXBsYXRl
IDxjbGFzcyBQYXJzZWROb2RlPgotICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJz
ZShQYXJzZXJFcnJvciYsIGNvbnN0IElkZW50aWZpZXImLCBTb3VyY2VQYXJzZU1vZGUsIFBhcnNp
bmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5k
UG9zaXRpb24gPSBXVEY6Om51bGxvcHQsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqID0gbnVs
bHB0ciwgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogPSBudWxscHRyKTsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFyc2VyRXJyb3ImLCBjb25zdCBJZGVudGlm
aWVyJiwgU291cmNlUGFyc2VNb2RlLCBQYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5j
dGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gV1RGOjpudWxsb3B0LCBjb25z
dCBQcml2YXRlTmFtZUVudmlyb25tZW50KiA9IG51bGxwdHIsIGNvbnN0IFZlY3RvcjxKU1RleHRQ
b3NpdGlvbj4qID0gbnVsbHB0cik7CiAKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9y
ZUxhc3ROZXdsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+cG9zaXRpb25CZWZvcmVMYXN0
TmV3bGluZSgpOyB9CiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uQmVmb3JlTGFzdFRva2Vu
KCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+bGFzdFRva2VuTG9jYXRpb24oKTsgfQpAQCAtMjA3
OCw3ICsyMDk1LDcgQEAgcHJpdmF0ZToKIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4K
IHRlbXBsYXRlIDxjbGFzcyBQYXJzZWROb2RlPgotc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IElkZW50
aWZpZXImIGNhbGxlZU5hbWUsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIFBhcnNpbmdDb250
ZXh0IHBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJh
bWV0ZXJzRW5kUG9zaXRpb24sIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3Bl
UHJpdmF0ZU5hbWVzLCBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBjbGFzc0ZpZWxkTG9j
YXRpb25zKQorc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFNv
dXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIFBhcnNpbmdDb250ZXh0IHBhcnNpbmdDb250ZXh0LCBP
cHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIGNv
bnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzLCBjb25z
dCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBjbGFzc0ZpZWxkTG9jYXRpb25zKQogewogICAgIGlu
dCBlcnJMaW5lOwogICAgIFN0cmluZyBlcnJNc2c7CkBAIC0yMDkzLDkgKzIxMTAsOSBAQCBzdGQ6
OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlKFBhcnNlckVy
cm9yJiBlcnJvciwgY29uc3QgSQogICAgIEFTU0VSVChtX3NvdXJjZS0+c3RhcnRDb2x1bW4oKSA+
IE9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCkpOwogICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1u
ID0gbV9zb3VyY2UtPnN0YXJ0Q29sdW1uKCkuemVyb0Jhc2VkSW50KCk7CiAKLSAgICBpZiAoaXNF
dmFsTm9kZTxQYXJzZWROb2RlPigpICYmIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzICYmIHBhcmVu
dFNjb3BlUHJpdmF0ZU5hbWVzLT5wcml2YXRlTmFtZXNTaXplKCkpIHsKKyAgICBpZiAoaXNFdmFs
Tm9kZTxQYXJzZWROb2RlPigpICYmIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzICYmIHBhcmVudFNj
b3BlUHJpdmF0ZU5hbWVzLT5zaXplKCkpIHsKICAgICAgICAgY3VycmVudFNjb3BlKCktPnNldElz
UHJpdmF0ZU5hbWVTY29wZSgpOwotICAgICAgICBwYXJlbnRTY29wZVByaXZhdGVOYW1lcy0+Y29w
eVByaXZhdGVOYW1lc1RvKGN1cnJlbnRTY29wZSgpLT5sZXhpY2FsVmFyaWFibGVzKCkpOworICAg
ICAgICBjdXJyZW50U2NvcGUoKS0+bGV4aWNhbFZhcmlhYmxlcygpLmFkZFByaXZhdGVOYW1lc0Zy
b20ocGFyZW50U2NvcGVQcml2YXRlTmFtZXMpOwogICAgIH0KIAogICAgIGF1dG8gcGFyc2VSZXN1
bHQgPSBwYXJzZUlubmVyKGNhbGxlZU5hbWUsIHBhcnNlTW9kZSwgcGFyc2luZ0NvbnRleHQsIGZ1
bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIGNsYXNzRmllbGRMb2NhdGlv
bnMpOwpAQCAtMjE4Miw3ICsyMTk5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBh
cnNlKAogICAgIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUgPSBEZXJpdmVk
Q29udGV4dFR5cGU6Ok5vbmUsCiAgICAgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSA9
IEV2YWxDb250ZXh0VHlwZTo6Tm9uZSwKICAgICBEZWJ1Z2dlclBhcnNlRGF0YSogZGVidWdnZXJQ
YXJzZURhdGEgPSBudWxscHRyLAotICAgIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVu
dFNjb3BlUHJpdmF0ZU5hbWVzID0gbnVsbHB0ciwKKyAgICBjb25zdCBQcml2YXRlTmFtZUVudmly
b25tZW50KiBwYXJlbnRTY29wZVByaXZhdGVOYW1lcyA9IG51bGxwdHIsCiAgICAgY29uc3QgVmVj
dG9yPEpTVGV4dFBvc2l0aW9uPiogY2xhc3NGaWVsZExvY2F0aW9ucyA9IG51bGxwdHIsCiAgICAg
Ym9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24gPSBmYWxzZSkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAppbmRleCA3OTUxOGEzMDU0ZDdmNjU1YTg5Nzc4
NjNmYTQxOWY0M2I2ODVkMDE5Li4xY2RhZmM1ODU5MjYwNzZjZjEzYjYzOGZhMjE2MjdkMmY3NTVk
YjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCkBAIC0z
Nyw2ICszNyw4IEBAIGVudW0gY2xhc3MgSlNQYXJzZXJTY3JpcHRNb2RlIHsgQ2xhc3NpYywgTW9k
dWxlIH07CiAKIGVudW0gY2xhc3MgU3VwZXJCaW5kaW5nIHsgTmVlZGVkLCBOb3ROZWVkZWQgfTsK
IAorZW51bSBjbGFzcyBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCB7IE5vbmUsIE5lZWRlZCB9Owor
CiBlbnVtIGNsYXNzIENvZGVHZW5lcmF0aW9uTW9kZSA6IHVpbnQ4X3QgewogICAgIERlYnVnZ2Vy
ID0gMSA8PCAwLAogICAgIFR5cGVQcm9maWxlciA9IDEgPDwgMSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKaW5kZXggODU2MWYxNTZiZjczMDA0ZGFiYjlm
N2Q3ZjQyYWVlNmE4ZWE0YTkxOS4uOWVmMmVmN2JkMjFmNDMzMTliNDZkOTcyNjJlNDVhZTcyZjU5
ZGFmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVj
a2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgK
QEAgLTE3OSw3ICsxNzksNyBAQCBwdWJsaWM6CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQm9v
bGVhbihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBib29sKSB7IHJldHVybiBCb29sRXhwcjsgfQog
ICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU51bGwoY29uc3QgSlNUb2tlbkxvY2F0aW9uJikgeyBy
ZXR1cm4gTnVsbEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCcmFja2V0QWNjZXNz
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwg
Ym9vbCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gQnJhY2tldEV4cHI7IH0KLSAgICBFeHByZXNz
aW9uVHlwZSBjcmVhdGVEb3RBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lv
blR5cGUsIGNvbnN0IElkZW50aWZpZXIqLCBEb3RUeXBlIHR5cGUsIGludCwgaW50LCBpbnQpIHsg
cmV0dXJuIHR5cGUgPT0gRG90VHlwZTo6UHJpdmF0ZUZpZWxkID8gUHJpdmF0ZURvdEV4cHIgOiBE
b3RFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRG90QWNjZXNzKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBjb25zdCBJZGVudGlmaWVyKiwgRG90VHlwZSB0
eXBlLCBpbnQsIGludCwgaW50KSB7IHJldHVybiB0eXBlID09IERvdFR5cGU6OlByaXZhdGVNZW1i
ZXIgPyBQcml2YXRlRG90RXhwciA6IERvdEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVh
dGVSZWdFeHAoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYgcGF0dGVy
biwgY29uc3QgSWRlbnRpZmllciYgZmxhZ3MsIGludCkgeyByZXR1cm4gWWFycjo6aGFzRXJyb3Io
WWFycjo6Y2hlY2tTeW50YXgocGF0dGVybi5zdHJpbmcoKSwgZmxhZ3Muc3RyaW5nKCkpKSA/IDAg
OiBSZWdFeHBFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTmV3RXhwcihjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQsIGludCwgaW50KSB7IHJl
dHVybiBOZXdFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTmV3RXhwcihjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQpIHsgcmV0dXJuIE5ld0V4
cHI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVF
bnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52
aXJvbm1lbnQuY3BwCmluZGV4IDgxYTljOTM4ZGMxMWE0MjAwZGNjNDI4NmNmMzRlNzVlNTI0Njhj
NjUuLjNlYzU3YzNlMmFiYTVkYjM3YjdmYjYyZTNjOWYwYTE2M2ZiNWRlNjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcApA
QCAtMTA0LDYgKzEwNCw0MCBAQCB2b2lkIFZhcmlhYmxlRW52aXJvbm1lbnQ6Om1hcmtWYXJpYWJs
ZUFzRXhwb3J0ZWQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPgogICAgIGZpbmRSZXN1
bHQtPnZhbHVlLnNldElzRXhwb3J0ZWQoKTsKIH0KIAorYm9vbCBWYXJpYWJsZUVudmlyb25tZW50
OjpkZWNsYXJlUHJpdmF0ZU1ldGhvZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBp
ZGVudGlmaWVyKQoreworICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgbV9yYXJlRGF0YSA9
IG1ha2VVbmlxdWU8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+KCk7CisKKyAgICBhdXRv
IGZpbmRSZXN1bHQgPSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5maW5kKGlkZW50aWZpZXIp
OworCisgICAgaWYgKGZpbmRSZXN1bHQgPT0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZW5k
KCkpIHsKKyAgICAgICAgUHJpdmF0ZU5hbWVFbnRyeSBtZXRhKFByaXZhdGVOYW1lRW50cnk6OlRy
YWl0czo6SXNEZWNsYXJlZCB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNNZXRob2QpOwor
CisgICAgICAgIGF1dG8gZW50cnkgPSBWYXJpYWJsZUVudmlyb25tZW50RW50cnkoKTsKKyAgICAg
ICAgZW50cnkuc2V0SXNQcml2YXRlTWV0aG9kKCk7CisgICAgICAgIGVudHJ5LnNldElzQ29uc3Qo
KTsKKyAgICAgICAgZW50cnkuc2V0SXNDYXB0dXJlZCgpOworICAgICAgICBtX21hcC5hZGQoaWRl
bnRpZmllciwgZW50cnkpOworCisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yYXJlRGF0YS0+
bV9wcml2YXRlTmFtZXMuYWRkKGlkZW50aWZpZXIsIG1ldGEpOworICAgICAgICByZXR1cm4gYWRk
UmVzdWx0LmlzTmV3RW50cnk7CisgICAgfQorCisgICAgaWYgKGZpbmRSZXN1bHQtPnZhbHVlLmlz
RGVjbGFyZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBFcnJvcjogZGVjbGFyaW5nIGEg
ZHVwbGljYXRlIHByaXZhdGUgbmFtZS4KKworICAgIGF1dG8gZW50cnkgPSBWYXJpYWJsZUVudmly
b25tZW50RW50cnkoKTsKKyAgICBlbnRyeS5zZXRJc1ByaXZhdGVNZXRob2QoKTsKKyAgICBlbnRy
eS5zZXRJc0NvbnN0KCk7CisgICAgZW50cnkuc2V0SXNDYXB0dXJlZCgpOworICAgIG1fbWFwLmFk
ZChpZGVudGlmaWVyLCBlbnRyeSk7CisKKyAgICAvLyBpdCB3YXMgcHJldmlvdXNseSB1c2VkLCBt
YXJrIGl0IGFzIGRlY2xhcmVkLgorICAgIFByaXZhdGVOYW1lRW50cnkgbWV0YShQcml2YXRlTmFt
ZUVudHJ5OjpUcmFpdHM6OklzRGVjbGFyZWQgfCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6Oklz
VXNlZCB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNNZXRob2QpOworICAgIGF1dG8gYWRk
UmVzdWx0ID0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuc2V0KGlkZW50aWZpZXIsIG1ldGEp
OworICAgIHJldHVybiAhYWRkUmVzdWx0LmlzTmV3RW50cnk7Cit9CiAKIHZvaWQgQ29tcGFjdFRE
WkVudmlyb25tZW50Ojpzb3J0Q29tcGFjdChDb21wYWN0JiBjb21wYWN0KQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaAppbmRleCA1
MmU5YWE0NjU4Mzc1NjkzMDgxYjM3NzdlOWM3YWI3Y2E5MWJlZTQzLi5mNmQzNThiMTk3MDAyZDIw
ZGU5N2Y0MDY5M2MzM2Y2OWQ1NTczODJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaApAQCAtNDUsNyArNDUsOCBAQCBwdWJsaWM6
CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Jp
dHMgJiBJc0Z1bmN0aW9uOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzUGFyYW1ldGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNQYXJhbWV0ZXI7IH0KICAgICBBTFdBWVNfSU5MSU5F
IGJvb2wgaXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGUoKSBjb25zdCB7IHJldHVybiBtX2Jp
dHMgJiBJc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZTsgfQotICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBpc1ByaXZhdGVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNQcml2YXRlTmFt
ZTsgfQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1ByaXZhdGVGaWVsZCgpIGNvbnN0IHsgcmV0
dXJuIG1fYml0cyAmIElzUHJpdmF0ZUZpZWxkOyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlz
UHJpdmF0ZU1ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzUHJpdmF0ZU1ldGhvZDsg
fQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzQ2FwdHVyZWQoKSB7IG1fYml0cyB8PSBJ
c0NhcHR1cmVkOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzQ29uc3QoKSB7IG1fYml0
cyB8PSBJc0NvbnN0OyB9CkBAIC01Nyw3ICs1OCw4IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0SXNGdW5jdGlvbigpIHsgbV9iaXRzIHw9IElzRnVuY3Rpb247IH0KICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNQYXJhbWV0ZXIoKSB7IG1fYml0cyB8PSBJc1BhcmFtZXRl
cjsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRp
ZGF0ZSgpIHsgbV9iaXRzIHw9IElzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlOyB9Ci0gICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldElzUHJpdmF0ZU5hbWUoKSB7IG1fYml0cyB8PSBJc1ByaXZh
dGVOYW1lOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzUHJpdmF0ZUZpZWxkKCkgeyBt
X2JpdHMgfD0gSXNQcml2YXRlRmllbGQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNQ
cml2YXRlTWV0aG9kKCkgeyBtX2JpdHMgfD0gSXNQcml2YXRlTWV0aG9kOyB9CiAKICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgY2xlYXJJc1ZhcigpIHsgbV9iaXRzICY9IH5Jc1ZhcjsgfQogCkBAIC04
MCw3ICs4Miw4IEBAIHByaXZhdGU6CiAgICAgICAgIElzRnVuY3Rpb24gPSAxIDw8IDcsCiAgICAg
ICAgIElzUGFyYW1ldGVyID0gMSA8PCA4LAogICAgICAgICBJc1Nsb3BweU1vZGVIb2lzdGluZ0Nh
bmRpZGF0ZSA9IDEgPDwgOSwKLSAgICAgICAgSXNQcml2YXRlTmFtZSA9IDEgPDwgMTAsCisgICAg
ICAgIElzUHJpdmF0ZUZpZWxkID0gMSA8PCAxMCwKKyAgICAgICAgSXNQcml2YXRlTWV0aG9kID0g
MSA8PCAxMSwKICAgICB9OwogICAgIHVpbnQxNl90IG1fYml0cyB7IDAgfTsKIH07CkBAIC05MCwx
MSArOTMsMTYgQEAgc3RydWN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeUhhc2hUcmFpdHMgOiBI
YXNoVHJhaXRzPFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeT4KIH07CiAKIHN0cnVjdCBQcml2YXRl
TmFtZUVudHJ5IHsKKyAgICBmcmllbmQgY2xhc3MgQ2FjaGVkUHJpdmF0ZU5hbWVFbnRyeTsKKwog
cHVibGljOgogICAgIFByaXZhdGVOYW1lRW50cnkodWludDE2X3QgdHJhaXRzID0gMCkgeyBtX2Jp
dHMgPSB0cmFpdHM7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1VzZWQoKSBjb25zdCB7
IHJldHVybiBtX2JpdHMgJiBJc1VzZWQ7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNEZWNs
YXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzRGVjbGFyZWQ7IH0KKyAgICBBTFdBWVNf
SU5MSU5FIGJvb2wgaXNNZXRob2QoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc01ldGhvZDsg
fQorCisgICAgYm9vbCBpc1ByaXZhdGVNZXRob2RPckFjZXNzb3IoKSBjb25zdCB7IHJldHVybiBp
c01ldGhvZCgpOyB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNVc2VkKCkgeyBtX2Jp
dHMgfD0gSXNVc2VkOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzRGVjbGFyZWQoKSB7
IG1fYml0cyB8PSBJc0RlY2xhcmVkOyB9CkBAIC0xMDcsOCArMTE1LDEwIEBAIHB1YmxpYzoKICAg
ICB9CiAKICAgICBlbnVtIFRyYWl0cyA6IHVpbnQxNl90IHsKKyAgICAgICAgTm9uZSA9IDAsCiAg
ICAgICAgIElzVXNlZCA9IDEgPDwgMCwKICAgICAgICAgSXNEZWNsYXJlZCA9IDEgPDwgMSwKKyAg
ICAgICAgSXNNZXRob2QgPSAxIDw8IDIsCiAgICAgfTsKIAogcHJpdmF0ZToKQEAgLTExNiwxNSAr
MTI2LDE4IEBAIHByaXZhdGU6CiB9OwogCiBzdHJ1Y3QgUHJpdmF0ZU5hbWVFbnRyeUhhc2hUcmFp
dHMgOiBIYXNoVHJhaXRzPFByaXZhdGVOYW1lRW50cnk+IHsKLSAgICBzdGF0aWMgY29uc3QgYm9v
bCBuZWVkc0Rlc3RydWN0aW9uID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5l
ZWRzRGVzdHJ1Y3Rpb24gPSBmYWxzZTsKIH07CiAKK3R5cGVkZWYgSGFzaE1hcDxQYWNrZWRSZWZQ
dHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBQcml2YXRlTmFtZUVudHJ5LCBJZGVudGlmaWVyUmVwSGFz
aCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiwgUHJpdmF0ZU5hbWVFbnRy
eUhhc2hUcmFpdHM+IFByaXZhdGVOYW1lRW52aXJvbm1lbnQ7CisKIGNsYXNzIFZhcmlhYmxlRW52
aXJvbm1lbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHJpdmF0ZToKICAgICB0
eXBlZGVmIEhhc2hNYXA8UGFja2VkUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgVmFyaWFibGVF
bnZpcm9ubWVudEVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5p
cXVlZFN0cmluZ0ltcGw+PiwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5SGFzaFRyYWl0cz4gTWFw
OwotICAgIHR5cGVkZWYgSGFzaE1hcDxQYWNrZWRSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBQ
cml2YXRlTmFtZUVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5p
cXVlZFN0cmluZ0ltcGw+PiwgUHJpdmF0ZU5hbWVFbnRyeUhhc2hUcmFpdHM+IFByaXZhdGVOYW1l
czsKKwogcHVibGljOgorCiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCgpIHsgfQogICAgIFZhcmlh
YmxlRW52aXJvbm1lbnQoVmFyaWFibGVFbnZpcm9ubWVudCYmIG90aGVyKQogICAgICAgICA6IG1f
bWFwKFdURk1vdmUob3RoZXIubV9tYXApKQpAQCAtMTQ2LDYgKzE1OSwxNiBAQCBwdWJsaWM6CiAg
ICAgQUxXQVlTX0lOTElORSBNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJu
IG1fbWFwLmVuZCgpOyB9CiAgICAgQUxXQVlTX0lOTElORSBNYXA6OkFkZFJlc3VsdCBhZGQoY29u
c3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikgeyByZXR1cm4gbV9tYXAu
YWRkKGlkZW50aWZpZXIsIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpKTsgfQogICAgIEFMV0FZ
U19JTkxJTkUgTWFwOjpBZGRSZXN1bHQgYWRkKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIp
IHsgcmV0dXJuIGFkZChpZGVudGlmaWVyLmltcGwoKSk7IH0KKworICAgIEFMV0FZU19JTkxJTkUg
UHJpdmF0ZU5hbWVFbnZpcm9ubWVudDo6QWRkUmVzdWx0IGFkZFByaXZhdGVOYW1lKGNvbnN0IElk
ZW50aWZpZXImIGlkZW50aWZpZXIpIHsgcmV0dXJuIGFkZFByaXZhdGVOYW1lKGlkZW50aWZpZXIu
aW1wbCgpKTsgfQorICAgIEFMV0FZU19JTkxJTkUgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudDo6QWRk
UmVzdWx0IGFkZFByaXZhdGVOYW1lKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlk
ZW50aWZpZXIpCisgICAgeworICAgICAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgICAgICBt
X3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4oKTsK
KworICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKGlkZW50aWZp
ZXIsIFByaXZhdGVOYW1lRW50cnkoKSk7CisgICAgfQorCiAgICAgQUxXQVlTX0lOTElORSB1bnNp
Z25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuc2l6ZSgpICsgcHJpdmF0ZU5hbWVzU2l6
ZSgpOyB9CiAgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBtYXBTaXplKCkgY29uc3QgeyByZXR1
cm4gbV9tYXAuc2l6ZSgpOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGNvbnRhaW5zKGNvbnN0
IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpIGNvbnN0IHsgcmV0dXJuIG1f
bWFwLmNvbnRhaW5zKGlkZW50aWZpZXIpOyB9CkBAIC0xNjQsMTcgKzE4NywyMCBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpc0V2ZXJ5dGhpbmdDYXB0dXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNFdmVy
eXRoaW5nQ2FwdHVyZWQ7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9t
YXAuc2l6ZSgpOyB9CiAKLSAgICB1c2luZyBQcml2YXRlTmFtZXNSYW5nZSA9IFdURjo6SXRlcmF0
b3JSYW5nZTxQcml2YXRlTmFtZXM6Oml0ZXJhdG9yPjsKKyAgICB1c2luZyBQcml2YXRlTmFtZXNS
YW5nZSA9IFdURjo6SXRlcmF0b3JSYW5nZTxQcml2YXRlTmFtZUVudmlyb25tZW50OjppdGVyYXRv
cj47CiAKLSAgICBBTFdBWVNfSU5MSU5FIE1hcDo6QWRkUmVzdWx0IGRlY2xhcmVQcml2YXRlTmFt
ZShjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBkZWNsYXJlUHJpdmF0ZU5h
bWUoaWRlbnRpZmllci5pbXBsKCkpOyB9CisgICAgQUxXQVlTX0lOTElORSBNYXA6OkFkZFJlc3Vs
dCBkZWNsYXJlUHJpdmF0ZUZpZWxkKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsgcmV0
dXJuIGRlY2xhcmVQcml2YXRlRmllbGQoaWRlbnRpZmllci5pbXBsKCkpOyB9CiAgICAgQUxXQVlT
X0lOTElORSB2b2lkIHVzZVByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIp
IHsgdXNlUHJpdmF0ZU5hbWUoaWRlbnRpZmllci5pbXBsKCkpOyB9CiAKLSAgICBNYXA6OkFkZFJl
c3VsdCBkZWNsYXJlUHJpdmF0ZU5hbWUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYg
aWRlbnRpZmllcikKKyAgICBib29sIGRlY2xhcmVQcml2YXRlTWV0aG9kKGNvbnN0IElkZW50aWZp
ZXImIGlkZW50aWZpZXIpIHsgcmV0dXJuIGRlY2xhcmVQcml2YXRlTWV0aG9kKGlkZW50aWZpZXIu
aW1wbCgpKTsgfQorICAgIGJvb2wgZGVjbGFyZVByaXZhdGVNZXRob2QoY29uc3QgUmVmUHRyPFVu
aXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcik7CisKKyAgICBNYXA6OkFkZFJlc3VsdCBkZWNs
YXJlUHJpdmF0ZUZpZWxkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZp
ZXIpCiAgICAgewogICAgICAgICBhdXRvJiBtZXRhID0gZ2V0T3JBZGRQcml2YXRlTmFtZShpZGVu
dGlmaWVyLmdldCgpKTsKICAgICAgICAgbWV0YS5zZXRJc0RlY2xhcmVkKCk7CiAgICAgICAgIGF1
dG8gZW50cnkgPSBWYXJpYWJsZUVudmlyb25tZW50RW50cnkoKTsKLSAgICAgICAgZW50cnkuc2V0
SXNQcml2YXRlTmFtZSgpOworICAgICAgICBlbnRyeS5zZXRJc1ByaXZhdGVGaWVsZCgpOwogICAg
ICAgICBlbnRyeS5zZXRJc0NvbnN0KCk7CiAgICAgICAgIGVudHJ5LnNldElzQ2FwdHVyZWQoKTsK
ICAgICAgICAgcmV0dXJuIG1fbWFwLmFkZChpZGVudGlmaWVyLCBlbnRyeSk7CkBAIC0yMDEsNiAr
MjI3LDI2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5h
bWVzLnNpemUoKTsKICAgICB9CiAKKyAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IFByaXZhdGVOYW1l
RW52aXJvbm1lbnQqIHByaXZhdGVOYW1lRW52aXJvbm1lbnQoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
IHJldHVybiAmbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXM7CisgICAgfQorCisgICAgQUxXQVlT
X0lOTElORSBib29sIGhhc1ByaXZhdGVNZXRob2RPckFjY2Vzc29yKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
ICAgICBmb3IgKGF1dG8gZW50cnkgOiBwcml2YXRlTmFtZXMoKSkgeworICAgICAgICAgICAgaWYg
KGVudHJ5LnZhbHVlLmlzUHJpdmF0ZU1ldGhvZE9yQWNlc3NvcigpKQorICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KwogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBoYXNQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVy
JiBpZGVudGlmaWVyKQogICAgIHsKICAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQpAQCAtMjIyLDYg
KzI2OCwyMCBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgYWRkUHJpdmF0ZU5hbWVzRnJvbShjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiBw
cml2YXRlTmFtZUVudmlyb25tZW50KQorICAgIHsKKyAgICAgICAgaWYgKCFwcml2YXRlTmFtZUVu
dmlyb25tZW50KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICghbV9yYXJlRGF0
YSkKKyAgICAgICAgICAgIG1fcmFyZURhdGEgPSBtYWtlVW5pcXVlPFZhcmlhYmxlRW52aXJvbm1l
bnQ6OlJhcmVEYXRhPigpOworCisgICAgICAgIGZvciAoYXV0byBlbnRyeSA6ICpwcml2YXRlTmFt
ZUVudmlyb25tZW50KSB7CisgICAgICAgICAgICBBU1NFUlQoZW50cnkudmFsdWUuaXNEZWNsYXJl
ZCgpKTsKKyAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChlbnRyeS5r
ZXksIGVudHJ5LnZhbHVlKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBjb3B5VW5kZWNsYXJlZFByaXZhdGVOYW1lc1RvKFZhcmlhYmxlRW52aXJvbm1lbnQmIG91
dGVyKSBjb25zdCB7CiAgICAgICAgIC8vIFVzZWQgYnkgdGhlIFBhcnNlciB0byB0cmFuc2ZlciBy
ZWNvcmRlZCB1c2VzIG9mIFByaXZhdGVOYW1lcyBmcm9tIGFuCiAgICAgICAgIC8vIGlubmVyIFBy
aXZhdGVOYW1lRW52aXJvbm1lbnQgaW50byBhbiBvdXRlciBvbmUsIGluIGNhc2UgYSBQTkUgaXMg
dXNlZApAQCAtMjQ0LDcgKzMwNCw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICBSYXJl
RGF0YShjb25zdCBSYXJlRGF0YSYpID0gZGVmYXVsdDsKICAgICAgICAgUmFyZURhdGEmIG9wZXJh
dG9yPShjb25zdCBSYXJlRGF0YSYpID0gZGVmYXVsdDsKLSAgICAgICAgUHJpdmF0ZU5hbWVzIG1f
cHJpdmF0ZU5hbWVzOworICAgICAgICBQcml2YXRlTmFtZUVudmlyb25tZW50IG1fcHJpdmF0ZU5h
bWVzOwogICAgIH07CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DYWNoZWRUeXBlcy5jcHAKaW5kZXggY2ZkYzllZGIwNTVhODMxOTAxN2E4OTNjNGViNjVkNDY1
OGFiZDQ4YS4uMmJiMzBkNTc5NTAzYjMyMzE1ZDRiZTVhM2U3OTIzODQxMDJjNzBlZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcApAQCAtOTk0LDYg
Kzk5NCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9iaXRWZWN0b3JzLmVuY29kZShlbmNvZGVyLCBy
YXJlRGF0YS5tX2JpdFZlY3RvcnMpOwogICAgICAgICBtX2NvbnN0YW50SWRlbnRpZmllclNldHMu
ZW5jb2RlKGVuY29kZXIsIHJhcmVEYXRhLm1fY29uc3RhbnRJZGVudGlmaWVyU2V0cyk7CiAgICAg
ICAgIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSByYXJlRGF0YS5tX25lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyOworICAgICAgICBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID0gcmFy
ZURhdGEubV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudDsKICAgICB9CiAKICAgICBVbmxpbmtlZENv
ZGVCbG9jazo6UmFyZURhdGEqIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKSBjb25zdApAQCAtMTAw
OCw2ICsxMDA5LDcgQEAgcHVibGljOgogICAgICAgICBtX2JpdFZlY3RvcnMuZGVjb2RlKGRlY29k
ZXIsIHJhcmVEYXRhLT5tX2JpdFZlY3RvcnMpOwogICAgICAgICBtX2NvbnN0YW50SWRlbnRpZmll
clNldHMuZGVjb2RlKGRlY29kZXIsIHJhcmVEYXRhLT5tX2NvbnN0YW50SWRlbnRpZmllclNldHMp
OwogICAgICAgICByYXJlRGF0YS0+bV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9IG1fbmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI7CisgICAgICAgIHJhcmVEYXRhLT5tX3ByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50ID0gbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudDsKICAgICAgICAgcmV0dXJu
IHJhcmVEYXRhOwogICAgIH0KIApAQCAtMTAyMSw4ICsxMDIzLDExIEBAIHByaXZhdGU6CiAgICAg
Q2FjaGVkVmVjdG9yPENhY2hlZEJpdFZlY3Rvcj4gbV9iaXRWZWN0b3JzOwogICAgIENhY2hlZFZl
Y3RvcjxDYWNoZWRDb25zdGFudElkZW50aWZpZXJTZXRFbnRyeT4gbV9jb25zdGFudElkZW50aWZp
ZXJTZXRzOwogICAgIHVuc2lnbmVkIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgOiAxOwor
ICAgIHVuc2lnbmVkIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgOiAxOwogfTsKIAordHlwZWRl
ZiBDYWNoZWRIYXNoTWFwPENhY2hlZFJlZlB0cjxDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbCwgVW5p
cXVlZFN0cmluZ0ltcGwsIFdURjo6UGFja2VkUHRyVHJhaXRzPFVuaXF1ZWRTdHJpbmdJbXBsPj4s
IFByaXZhdGVOYW1lRW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxV
bmlxdWVkU3RyaW5nSW1wbD4+LCBQcml2YXRlTmFtZUVudHJ5SGFzaFRyYWl0cz4gQ2FjaGVkUHJp
dmF0ZU5hbWVFbnZpcm9ubWVudDsKKwogY2xhc3MgQ2FjaGVkVmFyaWFibGVFbnZpcm9ubWVudFJh
cmVEYXRhIDogcHVibGljIENhY2hlZE9iamVjdDxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0
YT4gewogcHVibGljOgogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZh
cmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhJiByYXJlRGF0YSkKQEAgLTEwMzYsNyArMTA0MSw3
IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgQ2FjaGVkSGFzaE1hcDxDYWNoZWRS
ZWZQdHI8Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGwsIFVuaXF1ZWRTdHJpbmdJbXBsLCBXVEY6OlBh
Y2tlZFB0clRyYWl0czxVbmlxdWVkU3RyaW5nSW1wbD4+LCBQcml2YXRlTmFtZUVudHJ5LCBJZGVu
dGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiwgUHJp
dmF0ZU5hbWVFbnRyeUhhc2hUcmFpdHM+IG1fcHJpdmF0ZU5hbWVzOworICAgIENhY2hlZFByaXZh
dGVOYW1lRW52aXJvbm1lbnQgbV9wcml2YXRlTmFtZXM7CiB9OwogCiBjbGFzcyBDYWNoZWRWYXJp
YWJsZUVudmlyb25tZW50IDogcHVibGljIENhY2hlZE9iamVjdDxWYXJpYWJsZUVudmlyb25tZW50
PiB7CkBAIC0xMjEzLDcgKzEyMTgsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAg
IENhY2hlZEhhc2hTZXQ8Q2FjaGVkUmVmUHRyPENhY2hlZFVuaXF1ZWRTdHJpbmdJbXBsPiwgSWRl
bnRpZmllclJlcEhhc2g+IG1fcHJpdmF0ZU5hbWVzOworICAgIENhY2hlZEhhc2hNYXA8Q2FjaGVk
UmVmUHRyPENhY2hlZFVuaXF1ZWRTdHJpbmdJbXBsLCBVbmlxdWVkU3RyaW5nSW1wbCwgV1RGOjpQ
YWNrZWRQdHJUcmFpdHM8VW5pcXVlZFN0cmluZ0ltcGw+PiwgUHJpdmF0ZU5hbWVFbnRyeSwgSWRl
bnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFBy
aXZhdGVOYW1lRW50cnlIYXNoVHJhaXRzPiBtX3ByaXZhdGVOYW1lczsKIH07CiAKIGNsYXNzIENh
Y2hlZFN5bWJvbFRhYmxlIDogcHVibGljIENhY2hlZE9iamVjdDxTeW1ib2xUYWJsZT4gewpAQCAt
MTc5MCw2ICsxNzk1LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9jbGFzc1NvdXJjZS5l
bmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9jbGFzc1NvdXJjZSk7CiAgICAgICAgIG1fcGFyZW50
U2NvcGVURFpWYXJpYWJsZXMuZW5jb2RlKGVuY29kZXIsIHJhcmVEYXRhLm1fcGFyZW50U2NvcGVU
RFpWYXJpYWJsZXMpOworICAgICAgICBtX3BhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQuZW5j
b2RlKGVuY29kZXIsIHJhcmVEYXRhLm1fcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCk7CiAg
ICAgfQogCiAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlJhcmVEYXRhKiBkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikgY29uc3QKQEAgLTE3OTcsMTIgKzE4MDMsMTQgQEAgcHVibGljOgog
ICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6UmFyZURhdGEqIHJhcmVEYXRhID0g
bmV3IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpSYXJlRGF0YSB7IH07CiAgICAgICAgIG1f
Y2xhc3NTb3VyY2UuZGVjb2RlKGRlY29kZXIsIHJhcmVEYXRhLT5tX2NsYXNzU291cmNlKTsKICAg
ICAgICAgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5kZWNvZGUoZGVjb2RlciwgcmFyZURhdGEt
Pm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOworICAgICAgICBtX3BhcmVudFByaXZhdGVOYW1l
RW52aXJvbm1lbnQuZGVjb2RlKGRlY29kZXIsIHJhcmVEYXRhLT5tX3BhcmVudFByaXZhdGVOYW1l
RW52aXJvbm1lbnQpOwogICAgICAgICByZXR1cm4gcmFyZURhdGE7CiAgICAgfQogCiBwcml2YXRl
OgogICAgIENhY2hlZFNvdXJjZUNvZGVXaXRob3V0UHJvdmlkZXIgbV9jbGFzc1NvdXJjZTsKICAg
ICBDYWNoZWRSZWZQdHI8Q2FjaGVkVERaRW52aXJvbm1lbnRMaW5rPiBtX3BhcmVudFNjb3BlVERa
VmFyaWFibGVzOworICAgIENhY2hlZFByaXZhdGVOYW1lRW52aXJvbm1lbnQgbV9wYXJlbnRQcml2
YXRlTmFtZUVudmlyb25tZW50OwogfTsKIAogY2xhc3MgQ2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxl
IDogcHVibGljIENhY2hlZE9iamVjdDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4gewpAQCAt
MTgzOCw2ICsxODQ2LDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIHN1cGVyQmluZGluZygpIGNv
bnN0IHsgcmV0dXJuIG1fc3VwZXJCaW5kaW5nOyB9CiAgICAgdW5zaWduZWQgZGVyaXZlZENvbnRl
eHRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9kZXJpdmVkQ29udGV4dFR5cGU7IH0KICAgICB1bnNp
Z25lZCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXI7IH0KKyAgICB1bnNpZ25lZCBwcml2YXRlQnJhbmRSZXF1aXJl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ7IH0KIAogICAg
IElkZW50aWZpZXIgbmFtZShEZWNvZGVyJiBkZWNvZGVyKSBjb25zdCB7IHJldHVybiBtX25hbWUu
ZGVjb2RlKGRlY29kZXIpOyB9CiAgICAgSWRlbnRpZmllciBlY21hTmFtZShEZWNvZGVyJiBkZWNv
ZGVyKSBjb25zdCB7IHJldHVybiBtX2VjbWFOYW1lLmRlY29kZShkZWNvZGVyKTsgfQpAQCAtMTg2
Niw3ICsxODc1LDggQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX3BhcmFtZXRlcnNTdGFydE9m
ZnNldCA6IDMxOwogICAgIHVuc2lnbmVkIG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0OwogICAg
IHVuc2lnbmVkIG1fdHlwZVByb2ZpbGluZ0VuZE9mZnNldDsKLSAgICB1bnNpZ25lZCBtX3BhcmFt
ZXRlckNvdW50OworICAgIHVuc2lnbmVkIG1fcGFyYW1ldGVyQ291bnQ6MzE7CisgICAgdW5zaWdu
ZWQgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA6IDE7CiAgICAgU291cmNlUGFyc2VNb2RlIG1f
c291cmNlUGFyc2VNb2RlOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKICAg
ICB1bnNpZ25lZCBtX2Z1bmN0aW9uTW9kZSA6IDI7IC8vIEZ1bmN0aW9uTW9kZQpAQCAtMTkyMyw3
ICsxOTMzLDYgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGlzQ2xhc3NDb250ZXh0KCkgY29uc3Qg
eyByZXR1cm4gbV9pc0NsYXNzQ29udGV4dDsgfQogICAgIHVuc2lnbmVkIGNvbnN0cnVjdG9yS2lu
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RydWN0b3JLaW5kOyB9CiAgICAgdW5zaWduZWQgZGVy
aXZlZENvbnRleHRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9kZXJpdmVkQ29udGV4dFR5cGU7IH0K
LSAgICB1bnNpZ25lZCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpIGNvbnN0IHsgcmV0dXJu
IG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI7IH0KICAgICB1bnNpZ25lZCBldmFsQ29udGV4
dFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2V2YWxDb250ZXh0VHlwZTsgfQogICAgIHVuc2lnbmVk
IGhhc1RhaWxDYWxscygpIGNvbnN0IHsgcmV0dXJuIG1faGFzVGFpbENhbGxzOyB9CiAgICAgdW5z
aWduZWQgaGFzQ2hlY2twb2ludHMoKSBjb25zdCB7IHJldHVybiBtX2hhc0NoZWNrcG9pbnRzOyB9
CkBAIC0xOTU1LDcgKzE5NjQsNiBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1faXNDbGFzc0Nv
bnRleHQgOiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKICAgICB1bnNp
Z25lZCBtX2Rlcml2ZWRDb250ZXh0VHlwZSA6IDI7Ci0gICAgdW5zaWduZWQgbV9uZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplciA6IDE7CiAgICAgdW5zaWduZWQgbV9ldmFsQ29udGV4dFR5cGUgOiAy
OwogICAgIHVuc2lnbmVkIG1faGFzVGFpbENhbGxzIDogMTsKICAgICB1bnNpZ25lZCBtX2NvZGVU
eXBlIDogMjsKQEAgLTIyMzYsNiArMjI0NCw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBDYWNoZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBVbmxpCiAg
ICAgbV9zdXBlckJpbmRpbmcgPSBleGVjdXRhYmxlLm1fc3VwZXJCaW5kaW5nOwogICAgIG1fZGVy
aXZlZENvbnRleHRUeXBlID0gZXhlY3V0YWJsZS5tX2Rlcml2ZWRDb250ZXh0VHlwZTsKICAgICBt
X25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyID0gZXhlY3V0YWJsZS5tX25lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyOworICAgIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBleGVjdXRhYmxl
Lm1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ7CiAKICAgICBtX3JhcmVEYXRhLmVuY29kZShlbmNv
ZGVyLCBleGVjdXRhYmxlLm1fcmFyZURhdGEuZ2V0KCkpOwogCkBAIC0yMjc3LDYgKzIyODYsNyBA
QCBBTFdBWVNfSU5MSU5FIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZShEZWNvZGVyJiBkZQogICAgICwgbV90eXBlUHJvZmlsaW5nU3RhcnRPZmZz
ZXQoY2FjaGVkRXhlY3V0YWJsZS50eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQoKSkKICAgICAsIG1f
dHlwZVByb2ZpbGluZ0VuZE9mZnNldChjYWNoZWRFeGVjdXRhYmxlLnR5cGVQcm9maWxpbmdFbmRP
ZmZzZXQoKSkKICAgICAsIG1fcGFyYW1ldGVyQ291bnQoY2FjaGVkRXhlY3V0YWJsZS5wYXJhbWV0
ZXJDb3VudCgpKQorICAgICwgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudChjYWNoZWRFeGVjdXRh
YmxlLnByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkpCiAgICAgLCBtX2ZlYXR1cmVzKGNhY2hlZEV4
ZWN1dGFibGUuZmVhdHVyZXMoKSkKICAgICAsIG1fc291cmNlUGFyc2VNb2RlKGNhY2hlZEV4ZWN1
dGFibGUuc291cmNlUGFyc2VNb2RlKCkpCiAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChjYWNoZWRF
eGVjdXRhYmxlLmNvbnN0cnVjdG9yS2luZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXggMWM3M2I0YzMyNDJmYjA3ZTI4ZmFlM2QxYmExZGU3Mzhh
YmI1N2EyNS4uYzQyOTcyYWZmZGM5ZjI3YWMxMWM5ZGRjNWM5ZDMxOGU5MmE2NGQyYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCkBAIC03MSwxMyArNzEs
MTMgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ZvckZ1bmN0aW9ucyhW
TSYgdm0sIFVubGlua2VkQ29kZUJsb2NrKiB1bmwKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFVubGlu
a2VkQ29kZUJsb2NrVHlwZSwgY2xhc3MgRXhlY3V0YWJsZVR5cGUgPSBTY3JpcHRFeGVjdXRhYmxl
PgotVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrSW1wbChW
TSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmlj
dE1vZGUsIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBPcHRpb25TZXQ8Q29kZUdlbmVy
YXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIFBhcnNlckVycm9yJiBlcnJvciwgRXZhbENv
bnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250
ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBjb25zdCBURFpFbnZpcm9ubWVu
dCogdmFyaWFibGVzVW5kZXJURFogPSBudWxscHRyLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50
KiBwYXJlbnRTY29wZVByaXZhdGVOYW1lcyA9IG51bGxwdHIsIEV4ZWN1dGFibGVUeXBlKiBleGVj
dXRhYmxlID0gbnVsbHB0cikKK1VubGlua2VkQ29kZUJsb2NrVHlwZSogZ2VuZXJhdGVVbmxpbmtl
ZENvZGVCbG9ja0ltcGwoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTUGFyc2Vy
U3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgT3B0
aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBQYXJzZXJFcnJv
ciYgZXJyb3IsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIERlcml2ZWRDb250ZXh0
VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgY29u
c3QgVERaRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaID0gbnVsbHB0ciwgY29uc3QgUHJp
dmF0ZU5hbWVFbnZpcm9ubWVudCogcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCA9IG51bGxwdHIsIEV4
ZWN1dGFibGVUeXBlKiBleGVjdXRhYmxlID0gbnVsbHB0cikKIHsKICAgICB0eXBlZGVmIHR5cGVu
YW1lIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6Um9vdE5vZGUgUm9vdE5vZGU7
CiAgICAgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24gPSBleGVjdXRhYmxlICYmIGV4ZWN1
dGFibGUtPmlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbigpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRy
PFJvb3ROb2RlPiByb290Tm9kZSA9IHBhcnNlPFJvb3ROb2RlPigKLSAgICAgICAgdm0sIHNvdXJj
ZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBzdHJpY3RN
b2RlLCBzY3JpcHRNb2RlLCBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNl
TW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGVycm9yLCBudWxscHRyLCBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUsIGRlcml2ZWRDb250ZXh0VHlwZSwgZXZhbENvbnRleHRUeXBlLCBudWxscHRy
LCBwYXJlbnRTY29wZVByaXZhdGVOYW1lcywgbnVsbHB0ciwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0
aW9uKTsKKyAgICAgICAgdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5N
b2RlOjpOb3RCdWlsdGluLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2RlLCBDYWNoZVR5cGVzPFVubGlu
a2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGVy
cm9yLCBudWxscHRyLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGRlcml2ZWRDb250ZXh0VHlwZSwg
ZXZhbENvbnRleHRUeXBlLCBudWxscHRyLCBwcml2YXRlTmFtZUVudmlyb25tZW50LCBudWxscHRy
LCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24pOwogCiAgICAgaWYgKCFyb290Tm9kZSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC05NCw5ICs5NCwxMiBAQCBVbmxpbmtlZENvZGVCbG9ja1R5
cGUqIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsKFZNJiB2bSwgY29uc3QgU291cmNlQ29k
ZSYgcwogICAgIGJvb2wgdXNlc0V2YWwgPSByb290Tm9kZS0+ZmVhdHVyZXMoKSAmIEV2YWxGZWF0
dXJlOwogICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gcm9vdE5vZGUtPmZlYXR1cmVzKCkgJiBTdHJp
Y3RNb2RlRmVhdHVyZSA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpzbG9wcHkoKTsK
ICAgICBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
ciA9IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObzsKLSAgICBpZiBjb25zdGV4cHIgKHN0
ZDo6aXNfc2FtZV92PEV4ZWN1dGFibGVUeXBlLCBEaXJlY3RFdmFsRXhlY3V0YWJsZT4pCisgICAg
UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBQcml2YXRl
QnJhbmRSZXF1aXJlbWVudDo6Tm9uZTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZV92
PEV4ZWN1dGFibGVUeXBlLCBEaXJlY3RFdmFsRXhlY3V0YWJsZT4pIHsKICAgICAgICAgbmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSBleGVjdXRhYmxlLT5uZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplcigpOwotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsLCBmYWxz
ZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgc2NyaXB0TW9kZSwgU3VwZXJCaW5kaW5n
OjpOb3ROZWVkZWQsIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2Rl
LCBkZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBpc0Fycm93
RnVuY3Rpb25Db250ZXh0LCBmYWxzZSwgZXZhbENvbnRleHRUeXBlKTsKKyAgICAgICAgcHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQgPSBleGVjdXRhYmxlLT5wcml2YXRlQnJhbmRSZXF1aXJlbWVudCgp
OworICAgIH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbyh1c2VzRXZhbCwgZmFs
c2UsIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25l
LCBzY3JpcHRNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgQ2FjaGVUeXBlczxVbmxpbmtl
ZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGZhbHNlLCBldmFsQ29u
dGV4dFR5cGUpOwogCiAgICAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiB1bmxpbmtlZENvZGVCbG9j
ayA9IFVubGlua2VkQ29kZUJsb2NrVHlwZTo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlSW5mbywgY29k
ZUdlbmVyYXRpb25Nb2RlKTsKICAgICB1bmxpbmtlZENvZGVCbG9jay0+cmVjb3JkUGFyc2Uocm9v
dE5vZGUtPmZlYXR1cmVzKCksIHJvb3ROb2RlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCBsaW5l
Q291bnQsIHVubGlua2VkRW5kQ29sdW1uKTsKQEAgLTEwOCw3ICsxMTEsNyBAQCBVbmxpbmtlZENv
ZGVCbG9ja1R5cGUqIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsKFZNJiB2bSwgY29uc3Qg
U291cmNlQ29kZSYgcwogICAgIFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+IHBhcmVudFZhcmlh
Ymxlc1VuZGVyVERaOwogICAgIGlmICh2YXJpYWJsZXNVbmRlclREWikKICAgICAgICAgcGFyZW50
VmFyaWFibGVzVW5kZXJURFogPSBURFpFbnZpcm9ubWVudExpbms6OmNyZWF0ZSh2bS5tX2NvbXBh
Y3RWYXJpYWJsZU1hcC0+Z2V0KCp2YXJpYWJsZXNVbmRlclREWiksIG51bGxwdHIpOwotICAgIGVy
cm9yID0gQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKHZtLCByb290Tm9kZS5nZXQoKSwgc291
cmNlLCB1bmxpbmtlZENvZGVCbG9jaywgY29kZUdlbmVyYXRpb25Nb2RlLCBwYXJlbnRWYXJpYWJs
ZXNVbmRlclREWiwgZWNtYU1vZGUpOworICAgIGVycm9yID0gQnl0ZWNvZGVHZW5lcmF0b3I6Omdl
bmVyYXRlKHZtLCByb290Tm9kZS5nZXQoKSwgc291cmNlLCB1bmxpbmtlZENvZGVCbG9jaywgY29k
ZUdlbmVyYXRpb25Nb2RlLCBwYXJlbnRWYXJpYWJsZXNVbmRlclREWiwgcHJpdmF0ZU5hbWVFbnZp
cm9ubWVudCwgZWNtYU1vZGUpOwogCiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC0xMTcsMTQgKzEyMCwxNCBAQCBVbmxpbmtlZENvZGVCbG9ja1R5
cGUqIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsKFZNJiB2bSwgY29uc3QgU291cmNlQ29k
ZSYgcwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgVW5saW5rZWRDb2RlQmxvY2tUeXBlLCBjbGFzcyBF
eGVjdXRhYmxlVHlwZT4KLVVubGlua2VkQ29kZUJsb2NrVHlwZSogZ2VuZXJhdGVVbmxpbmtlZENv
ZGVCbG9jayhWTSYgdm0sIEV4ZWN1dGFibGVUeXBlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBKU1BhcnNlclNjcmlw
dE1vZGUgc2NyaXB0TW9kZSwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVy
YXRpb25Nb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4
dFR5cGUsIGNvbnN0IFREWkVudmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclREWiA9IG51bGxwdHIs
IGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzID0gbnVs
bHB0cikKK1VubGlua2VkQ29kZUJsb2NrVHlwZSogZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9jayhW
TSYgdm0sIEV4ZWN1dGFibGVUeXBlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGUgc2Ny
aXB0TW9kZSwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2Rl
LCBQYXJzZXJFcnJvciYgZXJyb3IsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIGNv
bnN0IFREWkVudmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclREWiA9IG51bGxwdHIsIGNvbnN0IFBy
aXZhdGVOYW1lRW52aXJvbm1lbnQqIHByaXZhdGVOYW1lRW52aXJvbm1lbnQgPSBudWxscHRyKQog
ewotICAgIHJldHVybiBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrSW1wbDxVbmxpbmtlZENvZGVC
bG9ja1R5cGUsIEV4ZWN1dGFibGVUeXBlPih2bSwgc291cmNlLCBzdHJpY3RNb2RlLCBzY3JpcHRN
b2RlLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVycm9yLCBldmFsQ29udGV4dFR5cGUsIGV4ZWN1dGFi
bGUtPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBleGVjdXRhYmxlLT5pc0Fycm93RnVuY3Rpb25Db250
ZXh0KCksIHZhcmlhYmxlc1VuZGVyVERaLCBwYXJlbnRTY29wZVByaXZhdGVOYW1lcywgZXhlY3V0
YWJsZSk7CisgICAgcmV0dXJuIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsPFVubGlua2Vk
Q29kZUJsb2NrVHlwZSwgRXhlY3V0YWJsZVR5cGU+KHZtLCBzb3VyY2UsIHN0cmljdE1vZGUsIHNj
cmlwdE1vZGUsIGNvZGVHZW5lcmF0aW9uTW9kZSwgZXJyb3IsIGV2YWxDb250ZXh0VHlwZSwgZXhl
Y3V0YWJsZS0+ZGVyaXZlZENvbnRleHRUeXBlKCksIGV4ZWN1dGFibGUtPmlzQXJyb3dGdW5jdGlv
bkNvbnRleHQoKSwgdmFyaWFibGVzVW5kZXJURFosIHByaXZhdGVOYW1lRW52aXJvbm1lbnQsIGV4
ZWN1dGFibGUpOwogfQogCi1VbmxpbmtlZEV2YWxDb2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRD
b2RlQmxvY2tGb3JEaXJlY3RFdmFsKFZNJiB2bSwgRGlyZWN0RXZhbEV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmlj
dE1vZGUsIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBPcHRpb25TZXQ8Q29kZUdlbmVy
YXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIFBhcnNlckVycm9yJiBlcnJvciwgRXZhbENv
bnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgY29uc3QgVERaRW52aXJvbm1lbnQqIHZhcmlhYmxl
c1VuZGVyVERaLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVByaXZhdGVO
YW1lcykKK1VubGlua2VkRXZhbENvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0Zv
ckRpcmVjdEV2YWwoVk0mIHZtLCBEaXJlY3RFdmFsRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgSlNQ
YXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+
IGNvZGVHZW5lcmF0aW9uTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yLCBFdmFsQ29udGV4dFR5cGUg
ZXZhbENvbnRleHRUeXBlLCBjb25zdCBURFpFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFos
IGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHByaXZhdGVOYW1lRW52aXJvbm1lbnQpCiB7
Ci0gICAgcmV0dXJuIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2s8VW5saW5rZWRFdmFsQ29kZUJs
b2NrPih2bSwgZXhlY3V0YWJsZSwgc291cmNlLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2RlLCBjb2Rl
R2VuZXJhdGlvbk1vZGUsIGVycm9yLCBldmFsQ29udGV4dFR5cGUsIHZhcmlhYmxlc1VuZGVyVERa
LCBwYXJlbnRTY29wZVByaXZhdGVOYW1lcyk7CisgICAgcmV0dXJuIGdlbmVyYXRlVW5saW5rZWRD
b2RlQmxvY2s8VW5saW5rZWRFdmFsQ29kZUJsb2NrPih2bSwgZXhlY3V0YWJsZSwgc291cmNlLCBz
dHJpY3RNb2RlLCBzY3JpcHRNb2RlLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVycm9yLCBldmFsQ29u
dGV4dFR5cGUsIHZhcmlhYmxlc1VuZGVyVERaLCBwcml2YXRlTmFtZUVudmlyb25tZW50KTsKIH0K
IAogdGVtcGxhdGUgPGNsYXNzIFVubGlua2VkQ29kZUJsb2NrVHlwZT4KQEAgLTI0OCw3ICsyNTEs
NyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQ29kZUNhY2hlOjpnZXRVbmxpbmtlZEds
b2JhbEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYgdgogICAgIC8vIFRoZSBGdW5jdGlvbiBjb25zdHJ1
Y3RvciBvbmx5IGhhcyBhY2Nlc3MgdG8gZ2xvYmFsIHZhcmlhYmxlcywgc28gbm8gdmFyaWFibGVz
IHdpbGwgYmUgdW5kZXIgVERaIHVubGVzcyB0aGV5J3JlCiAgICAgLy8gaW4gdGhlIGdsb2JhbCBs
ZXhpY2FsIGVudmlyb25tZW50LCB3aGljaCB3ZSBhbHdheXMgVERaIGNoZWNrIGFjY2Vzc2VzIGZy
b20uCiAgICAgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5ID0gY29uc3RydWN0QWJp
bGl0eUZvclBhcnNlTW9kZShtZXRhZGF0YS0+cGFyc2VNb2RlKCkpOwotICAgIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6Y3JlYXRlKHZtLCBzb3VyY2UsIG1ldGFkYXRhLCBVbmxpbmtlZE5vcm1hbEZ1bmN0
aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIG51bGxw
dHIsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6
Ok5vKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxl
ID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSh2bSwgc291cmNlLCBtZXRhZGF0
YSwgVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3Jp
cHRNb2RlOjpDbGFzc2ljLCBudWxscHRyLCBXVEY6Om51bGxvcHQsIERlcml2ZWRDb250ZXh0VHlw
ZTo6Tm9uZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vLCBQcml2YXRlQnJhbmRSZXF1
aXJlbWVudDo6Tm9uZSk7CiAKICAgICBpZiAoIXNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2VVUkxE
aXJlY3RpdmUoKS5pc051bGwoKSkKICAgICAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5zZXRTb3Vy
Y2VVUkxEaXJlY3RpdmUoc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZVVSTERpcmVjdGl2ZSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKaW5kZXggOWNjMWNhNzAw
NDQ3OWNlNTdkMjNjNjQ0N2M4NGMxY2M4ZDZjOWZkYi4uNjBhNzdkMmFmM2FkMGFiNzQyYjQwNDdi
NDk2NzJmOGYzMjE5Yzk3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29kZUNhY2hlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNh
Y2hlLmgKQEAgLTI1NCw3ICsyNTQsNyBAQCB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgQ2FjaGVUeXBlczxV
bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s+IHsKICAgICBzdGF0aWMgY29uc3RleHByIFNv
dXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUV2YWx1YXRl
TW9kZTsKIH07CiAKLVVubGlua2VkRXZhbENvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZENvZGVC
bG9ja0ZvckRpcmVjdEV2YWwoVk0mLCBEaXJlY3RFdmFsRXhlY3V0YWJsZSosIGNvbnN0IFNvdXJj
ZUNvZGUmLCBKU1BhcnNlclN0cmljdE1vZGUsIEpTUGFyc2VyU2NyaXB0TW9kZSwgT3B0aW9uU2V0
PENvZGVHZW5lcmF0aW9uTW9kZT4sIFBhcnNlckVycm9yJiwgRXZhbENvbnRleHRUeXBlLCBjb25z
dCBURFpFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFosIGNvbnN0IFZhcmlhYmxlRW52aXJv
bm1lbnQqIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzKTsKK1VubGlua2VkRXZhbENvZGVCbG9jayog
Z2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ZvckRpcmVjdEV2YWwoVk0mLCBEaXJlY3RFdmFsRXhl
Y3V0YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlclN0cmljdE1vZGUsIEpTUGFyc2Vy
U2NyaXB0TW9kZSwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIFBhcnNlckVycm9yJiwg
RXZhbENvbnRleHRUeXBlLCBjb25zdCBURFpFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFos
IGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqKTsKIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9j
ayogcmVjdXJzaXZlbHlHZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrRm9yUHJvZ3JhbShWTSYsIGNv
bnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlclN0cmljdE1vZGUsIEpTUGFyc2VyU2NyaXB0TW9kZSwg
T3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIFBhcnNlckVycm9yJiwgRXZhbENvbnRleHRU
eXBlKTsKIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogcmVjdXJzaXZlbHlHZW5lcmF0
ZVVubGlua2VkQ29kZUJsb2NrRm9yTW9kdWxlUHJvZ3JhbShWTSYsIGNvbnN0IFNvdXJjZUNvZGUm
LCBKU1BhcnNlclN0cmljdE1vZGUsIEpTUGFyc2VyU2NyaXB0TW9kZSwgT3B0aW9uU2V0PENvZGVH
ZW5lcmF0aW9uTW9kZT4sIFBhcnNlckVycm9yJiwgRXZhbENvbnRleHRUeXBlKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUu
Y3BwCmluZGV4IGM3YzI5YzA1MDI5NjIzMTBkMzY5ZjRlOTQ2MTZiOWQxMDJkYjY5MjYuLmY2Zjc5
MzA3ZGZlNzlmOGEyYjFiODgwYjFiODZmYmIyNjljNDI1Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKQEAgLTM0
LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLURpcmVjdEV2YWxFeGVjdXRhYmxlKiBE
aXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250
ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5
RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIGNvbnN0IFREWkVudmly
b25tZW50KiB2YXJpYWJsZXNVbmRlclREWiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcHJp
dmF0ZU5hbWVzLCBFQ01BTW9kZSBlY21hTW9kZSkKK0RpcmVjdEV2YWxFeGVjdXRhYmxlKiBEaXJl
Y3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0
VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29s
IGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBF
dmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlLCBjb25zdCBURFpFbnZpcm9ubWVudCogdmFy
aWFibGVzVW5kZXJURFosIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHByaXZhdGVOYW1l
RW52aXJvbm1lbnQsIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBA
IC00NCw3ICs0NCw3IEBAIERpcmVjdEV2YWxFeGVjdXRhYmxlKiBEaXJlY3RFdmFsRXhlY3V0YWJs
ZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAotICAgIGF1dG8qIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxEaXJlY3RFdmFsRXhlY3V0YWJsZT4odm0uaGVhcCkpIERpcmVjdEV2YWxFeGVj
dXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNlLCBlY21hTW9kZS5pc1N0cmljdCgpLCBkZXJpdmVk
Q29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBpc0Fycm93RnVuY3Rpb25D
b250ZXh0LCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250ZXh0VHlwZSk7CisgICAg
YXV0byogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERpcmVjdEV2YWxF
eGVjdXRhYmxlPih2bS5oZWFwKSkgRGlyZWN0RXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBz
b3VyY2UsIGVjbWFNb2RlLmlzU3RyaWN0KCksIGRlcml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBpc0Fycm93RnVuY3Rp
b25Db250ZXh0LCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250ZXh0VHlwZSk7CiAg
ICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogCiAgICAgUGFyc2VyRXJyb3IgZXJy
b3I7CkBAIC01Miw3ICs1Miw3IEBAIERpcmVjdEV2YWxFeGVjdXRhYmxlKiBEaXJlY3RFdmFsRXhl
Y3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgT3B0aW9u
U2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlID0gZ2xvYmFsT2JqZWN0
LT5kZWZhdWx0Q29kZUdlbmVyYXRpb25Nb2RlKCk7CiAKICAgICAvLyBXZSBkb24ndCBib3RoZXIg
d2l0aCBDb2RlQ2FjaGUgaGVyZSBiZWNhdXNlIGRpcmVjdCBldmFsIHVzZXMgYSBzcGVjaWFsaXpl
ZCBEaXJlY3RFdmFsQ29kZUNhY2hlLgotICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogdW5saW5r
ZWRFdmFsQ29kZSA9IGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tGb3JEaXJlY3RFdmFsKHZtLCBl
eGVjdXRhYmxlLCBleGVjdXRhYmxlLT5zb3VyY2UoKSwgc3RyaWN0TW9kZSwgSlNQYXJzZXJTY3Jp
cHRNb2RlOjpDbGFzc2ljLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVycm9yLCBldmFsQ29udGV4dFR5
cGUsIHZhcmlhYmxlc1VuZGVyVERaLCBwcml2YXRlTmFtZXMpOworICAgIFVubGlua2VkRXZhbENv
ZGVCbG9jayogdW5saW5rZWRFdmFsQ29kZSA9IGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tGb3JE
aXJlY3RFdmFsKHZtLCBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT5zb3VyY2UoKSwgc3RyaWN0TW9k
ZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVycm9y
LCBldmFsQ29udGV4dFR5cGUsIHZhcmlhYmxlc1VuZGVyVERaLCBwcml2YXRlTmFtZUVudmlyb25t
ZW50KTsKIAogICAgIGlmIChnbG9iYWxPYmplY3QtPmhhc0RlYnVnZ2VyKCkpCiAgICAgICAgIGds
b2JhbE9iamVjdC0+ZGVidWdnZXIoKS0+c291cmNlUGFyc2VkKGdsb2JhbE9iamVjdCwgZXhlY3V0
YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKSwgZXJyb3IubGluZSgpLCBlcnJvci5tZXNzYWdlKCkp
OwpAQCAtNjcsMTAgKzY3LDEwIEBAIERpcmVjdEV2YWxFeGVjdXRhYmxlKiBEaXJlY3RFdmFsRXhl
Y3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgcmV0dXJu
IGV4ZWN1dGFibGU7CiB9CiAKLURpcmVjdEV2YWxFeGVjdXRhYmxlOjpEaXJlY3RFdmFsRXhlY3V0
YWJsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRl
eHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlG
dW5jdGlvbiwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSkKLSAgICA6IEV2YWxFeGVj
dXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNlLCBpblN0cmljdENvbnRleHQsIGRlcml2ZWRDb250
ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9u
LCBldmFsQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKQorRGlyZWN0RXZh
bEV4ZWN1dGFibGU6OkRpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpblN0cmljdENvbnRleHQsIERl
cml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVu
dCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBi
b29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0
VHlwZSkKKyAgICA6IEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNlLCBpblN0cmlj
dENvbnRleHQsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgaXNJ
bnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBldmFsQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyLCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCkKIHsKLSAgICBBU1NFUlQobmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPT0gTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vIHx8
IGRlcml2ZWRDb250ZXh0VHlwZSA9PSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRDb25zdHJ1
Y3RvckNvbnRleHQpOworICAgIEFTU0VSVCgobmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPT0g
TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vICYmIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50
ID09IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lKSB8fCBkZXJpdmVkQ29udGV4dFR5cGUg
PT0gRGVyaXZlZENvbnRleHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuaAppbmRleCA4YzUyY2I2ODFlOGQwNWQyNjRlYWYzMGQ2
Yzk0ZDEzYmU3MWQzNTg4Li4zNjJjZWQ4ZDdiMTcxMTIwZjJiMmJlNWZkNWM5NTYwZTMwNTllZTMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhl
Y3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxF
eGVjdXRhYmxlLmgKQEAgLTMxLDkgKzMxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIERp
cmVjdEV2YWxFeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEV2YWxFeGVjdXRhYmxlIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgRGlyZWN0RXZhbEV4ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2JhbE9iamVj
dCosIGNvbnN0IFNvdXJjZUNvZGUmLCBEZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVP
cmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUsIGNvbnN0IFREWkVudmlyb25tZW50KiBw
YXJlbnRTY29wZVREWlZhcmlhYmxlcywgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcHJpdmF0
ZU5hbWVzLCBFQ01BTW9kZSk7CisgICAgc3RhdGljIERpcmVjdEV2YWxFeGVjdXRhYmxlKiBjcmVh
dGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgRGVyaXZlZENvbnRleHRUeXBl
LCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGJv
b2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24s
IEV2YWxDb250ZXh0VHlwZSwgY29uc3QgVERaRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFy
aWFibGVzLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiwgRUNNQU1vZGUpOwogcHJpdmF0
ZToKLSAgICBEaXJlY3RFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJj
ZUNvZGUmLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlz
SW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBlKTsKKyAgICBEaXJlY3RFdmFs
RXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGluU3Ry
aWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
ciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwg
Ym9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSk7CiB9OwogCiBz
dGF0aWNfYXNzZXJ0KHNpemVvZihEaXJlY3RFdmFsRXhlY3V0YWJsZSkgPT0gc2l6ZW9mKEV2YWxF
eGVjdXRhYmxlKSwgIiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXZhbEV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZh
bEV4ZWN1dGFibGUuY3BwCmluZGV4IDJlYzEzN2E3MzYyMjQyMWI1ZjlkMTIyYzI3MzUxOGQ1ZTYz
ODY0OWMuLjBiM2Q0MTY0YWE2NWFiZDAwNGZlZTk4YjhjZWNlODc5NmRmYmMyYTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5jcHAKQEAgLTMy
LDkgKzMyLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gRXZhbEV4ZWN1
dGFibGU6OnNfaW5mbyA9IHsgIkV2YWxFeGVjdXRhYmxlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0
ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShFdmFsRXhlY3V0YWJsZSkgfTsKIAotRXZh
bEV4ZWN1dGFibGU6OkV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRD
b250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4
dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSBldmFsQ29u
dGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyKQorRXZhbEV4ZWN1dGFibGU6OkV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpblN0cmljdENvbnRl
eHQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uQ29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0
VHlwZSBldmFsQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRS
ZXF1aXJlbWVudCkKICAgICA6IEJhc2UoZ2xvYmFsT2JqZWN0LT52bSgpLmV2YWxFeGVjdXRhYmxl
U3RydWN0dXJlLmdldCgpLCBnbG9iYWxPYmplY3QtPnZtKCksIHNvdXJjZSwgaW5TdHJpY3RDb250
ZXh0LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGlzSW5zaWRl
T3JkaW5hcnlGdW5jdGlvbiwgZXZhbENvbnRleHRUeXBlLCBOb0ludHJpbnNpYykKICAgICAsIG1f
bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyKSkKKyAgICAsIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KSkKIHsKICAgICBBU1NF
UlQoc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZVR5cGUoKSA9PSBTb3VyY2VQcm92aWRlclNvdXJj
ZVR5cGU6OlByb2dyYW0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXZhbEV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2
YWxFeGVjdXRhYmxlLmgKaW5kZXggNjdlNjljODYyOWJhM2ZiMzgxMTQ4MTEzNmI4ZTdlOTk0ODBl
ZDc3MS4uNTI2MDI1MWFjZWUyMjVlOWI1NzlmOGU4MmY2ZWRjODEwYzdhZGVkMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oCkBAIC02MiwxMyAr
NjIsMTQgQEAgcHVibGljOgogCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUlu
Zm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1c2VzRXZh
bCgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRN
b2RlOjpDbGFzc2ljLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQ
cm9ncmFtTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyKCksIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgZmFsc2UsIGV2YWxDb250ZXh0VHlwZSgp
KTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4g
RXhlY3V0YWJsZUluZm8odXNlc0V2YWwoKSwgZmFsc2UsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50
OjpOb25lLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6
OkNsYXNzaWMsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dy
YW1Nb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUoKSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIo
KSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgZXZhbENvbnRleHRUeXBlKCkpOyB9
CiAKICAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENv
ZGVCbG9jay0+bnVtVmFyaWFibGVzKCk7IH0KICAgICB1bnNpZ25lZCBudW1GdW5jdGlvbkhvaXN0
aW5nQ2FuZGlkYXRlcygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1GdW5j
dGlvbkhvaXN0aW5nQ2FuZGlkYXRlcygpOyB9CiAgICAgdW5zaWduZWQgbnVtVG9wTGV2ZWxGdW5j
dGlvbkRlY2xzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bWJlck9mRnVu
Y3Rpb25EZWNscygpOyB9CiAgICAgYm9vbCBhbGxvd0RpcmVjdEV2YWxDYWNoZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5hbGxvd0RpcmVjdEV2YWxDYWNoZSgpOyB9
CiAgICAgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxOZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
cj4obV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcik7IH0KKyAgICBQcml2YXRlQnJhbmRSZXF1
aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PFByaXZhdGVCcmFuZFJlcXVpcmVtZW50PihtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50KTsg
fQogICAgIFRlbXBsYXRlT2JqZWN0TWFwJiBlbnN1cmVUZW1wbGF0ZU9iamVjdE1hcChWTSYpOwog
CiBwcm90ZWN0ZWQ6CkBAIC03NiwxMSArNzcsMTIgQEAgcHJvdGVjdGVkOgogICAgIGZyaWVuZCBj
bGFzcyBTY3JpcHRFeGVjdXRhYmxlOwogCiAgICAgdXNpbmcgQmFzZTo6ZmluaXNoQ3JlYXRpb247
Ci0gICAgRXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwg
Ym9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVu
Y3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZhbENvbnRleHRU
eXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcik7CisgICAgRXZhbEV4ZWN1dGFibGUoSlNH
bG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBpblN0cmljdENvbnRleHQsIERl
cml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5z
aWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOwogCiAgICAgc3RhdGljIHZvaWQgdmlz
aXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgdW5zaWduZWQgbV9uZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplciA6IDE7CisgICAgdW5zaWduZWQgbV9wcml2YXRlQnJhbmRS
ZXF1aXJlbWVudCA6IDE7CiAKICAgICBXcml0ZUJhcnJpZXI8RXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZT4gbV9ldmFsQ29kZUJsb2NrOwogICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZEV2YWxDb2Rl
QmxvY2s+IG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAppbmRleCA0MTRlN2JkZjc3YWI0ZmM3
NjRiNTY1ZGY2ZjFiZDRhMGQ2NGIzMGNiLi43YTI5MTBlODg3ZjJhMTRlMmY1ODkyNzVhMGNiMjE4
YzdiNWVkODI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNl
cHRpb25IZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNl
cHRpb25IZWxwZXJzLmNwcApAQCAtMzI2LDcgKzMyNiw3IEBAIEpTT2JqZWN0KiBjcmVhdGVURFpF
cnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiBKU09iamVjdCogY3JlYXRlSW52
YWxpZFByaXZhdGVOYW1lRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAg
ICByZXR1cm4gY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygiQ2Fubm90
IGFjY2VzcyBpbnZhbGlkIHByaXZhdGUgZmllbGQiKSwgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBU
eXBlTm90aGluZyk7CisgICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIG1h
a2VTdHJpbmcoIkludmFsaWQgcHJpdmF0ZSBtZW1iZXIgYWNjZXNzIiksIGRlZmF1bHRTb3VyY2VB
cHBlbmRlciwgVHlwZU5vdGhpbmcpOwogfQogCiBKU09iamVjdCogY3JlYXRlUmVkZWZpbmVkUHJp
dmF0ZU5hbWVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNw
cAppbmRleCA5OGQ3ZTJiODNhMjc5MTJmYTU0YzJjMjVlZTE4M2JmYjRlMDQ2YzczLi43NDk4MjA1
MDE4Y2RlZjhmM2Y4MzY3YjRiYmUyZWY3OWRiZDE3YzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcApAQCAt
NjksNyArNjksNyBAQCBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRh
YmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogY29uc3RleHByIGJvb2wgaW5T
dHJpY3RDb250ZXh0ID0gZmFsc2U7CiBjb25zdGV4cHIgYm9vbCBpbnNpZGVPcmRpbmFyeUZ1bmN0
aW9uID0gZmFsc2U7CiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpJbmRpcmVjdEV2YWxFeGVjdXRh
YmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVu
Y3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKQotICAgIDogRXZh
bEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGluU3RyaWN0Q29udGV4dCwgZGVyaXZl
ZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBpbnNpZGVPcmRpbmFyeUZ1bmN0
aW9uLCBldmFsQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObykKKyAg
ICA6IEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNlLCBpblN0cmljdENvbnRleHQs
IGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgaW5zaWRlT3JkaW5h
cnlGdW5jdGlvbiwgZXZhbENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6
Tm8sIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lKQogewogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCA5YjkzOGIzZTVlN2EwNDU0NGE1NThmMDBl
MzQ5NWJhYTVhZmY5MTQ3Li44Mjk2NWQxODczMjE3NDc0ZDM3MDU5YWI0NzY0YTkzNjYwYmFlYzIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTE4NCw2ICsx
ODQsOCBAQCBwdWJsaWM6CiAgICAgaW5saW5lIGJvb2wgZ2V0UHJpdmF0ZUZpZWxkKEpTR2xvYmFs
T2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBpbmxpbmUgdm9pZCBz
ZXRQcml2YXRlRmllbGQoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOwogICAgIGlubGluZSB2b2lkIGRlZmluZVByaXZhdGVGaWVsZChKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Cisg
ICAgaW5saW5lIGJvb2wgY2hlY2tQcml2YXRlQnJhbmQoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
IGJyYW5kKTsKKyAgICBpbmxpbmUgdm9pZCBzZXRQcml2YXRlQnJhbmQoSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlIGJyYW5kKTsKIAogICAgIHVuc2lnbmVkIGdldEFycmF5TGVuZ3RoKCkgY29uc3QK
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5l
cy5oCmluZGV4IDAwNWVlMTQ2NjQzNTU4ZmNiNzc0ODZkYjMwMjU4MDRjNzAwMGRiY2QuLjY4ZDEx
Mzk2MDUyNzMxNWRmMGVmODgwMGIzYjJmZGExOGFmMDg5MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCkBAIC02NjksNCArNjY5LDQ1IEBA
IEFMV0FZU19JTkxJTkUgdm9pZCBKU09iamVjdDo6Z2V0Tm9uUmVpZmllZFN0YXRpY1Byb3BlcnR5
TmFtZXMoVk0mIHZtLCBQcm9wZXJ0eU5hCiAgICAgfQogfQogCitpbmxpbmUgYm9vbCBKU09iamVj
dDo6Y2hlY2tQcml2YXRlQnJhbmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBicmFuZCkKK3sKKyAgICBBU1NFUlQoYnJhbmQuaXNTeW1ib2woKSk7CisgICAgVk0mIHZtID0g
Z2V0Vk0oZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSh2bSk7
CisgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzQnJhbmRlZFN0cnVjdHVyZSgpIHx8ICFqc0Nhc3Q8QnJh
bmRlZFN0cnVjdHVyZSo+KHN0cnVjdHVyZSktPmNoZWNrQnJhbmQoYXNTeW1ib2woYnJhbmQpKSkg
eworICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVJbnZh
bGlkUHJpdmF0ZU5hbWVFcnJvcihnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBmYWxzZSk7CisgICAgfQorICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3Bl
LmV4Y2VwdGlvbigpKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitpbmxpbmUgdm9pZCBKU09i
amVjdDo6c2V0UHJpdmF0ZUJyYW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgYnJhbmQpCit7CisgICAgQVNTRVJUKGJyYW5kLmlzU3ltYm9sKCkpOworICAgIFZNJiB2bSA9
IGdldFZNKGdsb2JhbE9iamVjdCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0p
OworICAgIGlmIChzdHJ1Y3R1cmUtPmlzQnJhbmRlZFN0cnVjdHVyZSgpICYmIGpzQ2FzdDxCcmFu
ZGVkU3RydWN0dXJlKj4oc3RydWN0dXJlKS0+Y2hlY2tCcmFuZChhc1N5bWJvbChicmFuZCkpKSB7
CisgICAgICAgIC8vIFdlIGFyZSB0cnlpbmcgdG8gaW5zdGFsbCBhIGJyYW5kIGFscmVhZHkgaW5z
dGFsbGVkCisgICAgICAgIC8vIEZJWE1FOiBQdXQgYSBiZXR0ZXIgZXJyb3IgbWVzc2FnZQorICAg
ICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVJbnZhbGlkUHJp
dmF0ZU5hbWVFcnJvcihnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCB2b2lkKCkpOworICAgIH0KKyAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNl
cHRpb24oKSk7CisKKyAgICBzY29wZS5yZWxlYXNlKCk7CisKKyAgICBEZWZlcnJlZFN0cnVjdHVy
ZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSBkZWZlcnJlZFdhdGNocG9pbnRGaXJlKHZtLCBzdHJ1
Y3R1cmUpOworCisgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OnNldEJy
YW5kVHJhbnNpdGlvbih2bSwgc3RydWN0dXJlLCBhc1N5bWJvbChicmFuZCksICZkZWZlcnJlZFdh
dGNocG9pbnRGaXJlKTsKKyAgICBBU1NFUlQobmV3U3RydWN0dXJlLT5pc0JyYW5kZWRTdHJ1Y3R1
cmUoKSk7CisgICAgQVNTRVJUKG5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSB8fCAh
dGhpcy0+c3RydWN0dXJlKHZtKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CisgICAgdGhpcy0+c2V0
U3RydWN0dXJlKHZtLCBuZXdTdHJ1Y3R1cmUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKaW5kZXggNGZiMjRhMjgyNzMz
NWNiNzU5YmZjZmE5OGI5Nzk4NWE1OTQ5ODgxYS4uZmM3NzQyZTIzMDg5NjdlOTkxMjViZjA2ZmIz
MWM3ZTYzYjhiNzBkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTY29wZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5j
cHAKQEAgLTMyMSw3ICszMjEsNyBAQCBSZXNvbHZlT3AgSlNTY29wZTo6YWJzdHJhY3RSZXNvbHZl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHNpemVfdCBkZXB0aE9mZgogICAgIHJldHVy
biBvcDsKIH0KIAotdm9pZCBKU1Njb3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERa
KEpTU2NvcGUqIHNjb3BlLCBURFpFbnZpcm9ubWVudCYgcmVzdWx0LCBWYXJpYWJsZUVudmlyb25t
ZW50JiBwcml2YXRlTmFtZXMpCit2b2lkIEpTU2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVz
VW5kZXJURFooSlNTY29wZSogc2NvcGUsIFREWkVudmlyb25tZW50JiByZXN1bHQsIFByaXZhdGVO
YW1lRW52aXJvbm1lbnQmIHByaXZhdGVOYW1lRW52aXJvbm1lbnQpCiB7CiAgICAgZm9yICg7IHNj
b3BlOyBzY29wZSA9IHNjb3BlLT5uZXh0KCkpIHsKICAgICAgICAgaWYgKCFzY29wZS0+aXNMZXhp
Y2FsU2NvcGUoKSAmJiAhc2NvcGUtPmlzQ2F0Y2hTY29wZSgpKQpAQCAtMzQwLDggKzM0MCw5IEBA
IHZvaWQgSlNTY29wZTo6Y29sbGVjdENsb3N1cmVWYXJpYWJsZXNVbmRlclREWihKU1Njb3BlKiBz
Y29wZSwgVERaRW52aXJvbm1lbnQmIHJlCiAgICAgICAgICAgICByZXN1bHQuYWRkKGl0ZXItPmtl
eSk7CiAKICAgICAgICAgaWYgKHN5bWJvbFRhYmxlLT5oYXNQcml2YXRlTmFtZXMoKSkgewotICAg
ICAgICAgICAgZm9yIChhdXRvIG5hbWUgOiBzeW1ib2xUYWJsZS0+cHJpdmF0ZU5hbWVzKCkpCi0g
ICAgICAgICAgICAgICAgcHJpdmF0ZU5hbWVzLnVzZVByaXZhdGVOYW1lKG5hbWUpOyAgICAKKyAg
ICAgICAgICAgIGF1dG8gcHJpdmF0ZU5hbWVzID0gc3ltYm9sVGFibGUtPnByaXZhdGVOYW1lcygp
OworICAgICAgICAgICAgZm9yIChhdXRvIGVuZCA9IHByaXZhdGVOYW1lcy5lbmQoKSwgaXRlciA9
IHByaXZhdGVOYW1lcy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKQorICAgICAgICAgICAg
ICAgIHByaXZhdGVOYW1lRW52aXJvbm1lbnQuYWRkKGl0ZXItPmtleSwgaXRlci0+dmFsdWUpOwog
ICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTY29wZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5o
CmluZGV4IDdhM2MyNDE1MTFiODdlZDNkYWQ5Y2RjOTMxMWQxNTA1YjkxM2JlN2MuLmU0Y2QwYmIz
MDk3ZmRjMzE2ZDMwYWNkNmZmOTA3YzkyZjg2MDEzMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Njb3BlLmgKQEAgLTI3LDEyICsyNywxMiBAQAogCiAjaW5jbHVkZSAiR2V0UHV0
SW5mby5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiVmFyaWFibGVFbnZpcm9u
bWVudC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgU2NvcGVDaGFpbkl0ZXJhdG9yOwog
Y2xhc3MgU3ltYm9sVGFibGU7Ci1jbGFzcyBWYXJpYWJsZUVudmlyb25tZW50OwogY2xhc3MgV2F0
Y2hwb2ludFNldDsKIAogdXNpbmcgVERaRW52aXJvbm1lbnQgPSBIYXNoU2V0PFJlZlB0cjxVbmlx
dWVkU3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPjsKQEAgLTYyLDcgKzYyLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBib29sIGhhc0NvbnN0YW50U2NvcGUoUmVzb2x2ZVR5cGUpOwogICAg
IHN0YXRpYyBKU1Njb3BlKiBjb25zdGFudFNjb3BlRm9yQ29kZUJsb2NrKFJlc29sdmVUeXBlLCBD
b2RlQmxvY2sqKTsKIAotICAgIHN0YXRpYyB2b2lkIGNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5k
ZXJURFooSlNTY29wZSosIFREWkVudmlyb25tZW50JiByZXN1bHQsIFZhcmlhYmxlRW52aXJvbm1l
bnQmIHByaXZhdGVOYW1lcyk7CisgICAgc3RhdGljIHZvaWQgY29sbGVjdENsb3N1cmVWYXJpYWJs
ZXNVbmRlclREWihKU1Njb3BlKiwgVERaRW52aXJvbm1lbnQmIHJlc3VsdCwgUHJpdmF0ZU5hbWVF
bnZpcm9ubWVudCYpOwogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBT
bG90VmlzaXRvciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaAppbmRleCAwOTlkODk5YWQ1ZTYzYTc0MzM1OGUy
YWJiMjBhYjM0ZjU5Yjk2MGVjLi5iODU5MTRmZjhlYTBkZDAzYzYyNDc3NTM1OTZmZjQyZDU2MTY2
YjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogCiAgICAgREVD
TEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7
IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1c2VzRXZhbCgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVj
dG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUsIFN1cGVyQmluZGluZzo6
Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUV2YWx1YXRlTW9kZSwgZGVyaXZlZENv
bnRleHRUeXBlKCksIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObywgaXNBcnJvd0Z1bmN0
aW9uQ29udGV4dCgpLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsgfQorICAgIEV4ZWN1
dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8o
dXNlc0V2YWwoKSwgZmFsc2UsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lLCBmYWxzZSwg
Q29uc3RydWN0b3JLaW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6Ok1vZHVsZSwgU3VwZXJC
aW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVNb2RlLCBk
ZXJpdmVkQ29udGV4dFR5cGUoKSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vLCBpc0Fy
cm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUpOyB9CiAK
ICAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jaygpIHsgcmV0dXJuIG1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmdl
dCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKaW5kZXgg
MGNhZjM0MDFhZDMyYjk3YTdkOGQxNTZlZjU5ZGUzYjIzMmJlZjEwNS4uYTVjN2VhY2ExYmVhY2U5
NDMxMzY5NjM0NzUzMTY5NjUzZWFkYzc4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9ucy5jcHAKQEAgLTUzOCw2ICs1MzgsOSBAQCB2b2lkIE9wdGlvbnM6OnJlY29tcHV0
ZURlcGVuZGVudE9wdGlvbnMoKQogICAgICAgICBPcHRpb25zOjpyYW5kb21JbnRlZ3JpdHlBdWRp
dFJhdGUoKSA9IDA7CiAgICAgZWxzZSBpZiAoT3B0aW9uczo6cmFuZG9tSW50ZWdyaXR5QXVkaXRS
YXRlKCkgPiAxLjApCiAgICAgICAgIE9wdGlvbnM6OnJhbmRvbUludGVncml0eUF1ZGl0UmF0ZSgp
ID0gMS4wOworICAgIAorICAgIGlmIChPcHRpb25zOjp1c2VQcml2YXRlTWV0aG9kcygpKQorICAg
ICAgICBPcHRpb25zOjp1c2VQcml2YXRlQ2xhc3NGaWVsZHMoKSA9IHRydWU7CiAKICAgICBpZiAo
IU9wdGlvbnM6OmFsbG93VW5zdXBwb3J0ZWRUaWVycygpKSB7CiAjZGVmaW5lIERJU0FCTEVfVElF
UlMob3B0aW9uLCBmbGFncywgLi4uKSBkbyB7IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zTGlzdC5oCmluZGV4IDM0ODU4NmVkYzZkMDUyNTA3OWJmODE2YzQ5ODQwYTEw
M2UwYTdmNjkuLjA2MGE1ZjgwOGE2N2ViMWEwZDNiMjk0MjZiZmNiNDAxODg5YmZkZmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaApAQCAtNTEyLDYgKzUx
Miw3IEBAIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2FuVXNlSklUQ2FnZSgpOwogICAgIHYoQm9v
bCwgZXhwb3NlUHJvZmlsZXJzT25HbG9iYWxPYmplY3QsIGZhbHNlLCBOb3JtYWwsICJJZiB0cnVl
LCB3ZSB3aWxsIGV4cG9zZSBmdW5jdGlvbnMgdG8gZW5hYmxlL2Rpc2FibGUgYm90aCB0aGUgc2Ft
cGxpbmcgcHJvZmlsZXIgYW5kIHRoZSBzdXBlciBzYW1wbGVyIikgXAogICAgIHYoQm9vbCwgYWxs
b3dVbnN1cHBvcnRlZFRpZXJzLCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCBub3Qg
ZGlzYWJsZSBERkcgb3IgRlRMIHdoZW4gYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUgaXMgZW5hYmxl
ZC4iKSBcCiAgICAgdihCb29sLCB1c2VQcml2YXRlQ2xhc3NGaWVsZHMsIHRydWUsIE5vcm1hbCwg
IklmIHRydWUsIHRoZSBwYXJzZXIgd2lsbCB1bmRlcnN0YW5kIHByaXZhdGUgZGF0YSBmaWVsZHMg
aW5zaWRlIGNsYXNzZXMuIikgXAorICAgIHYoQm9vbCwgdXNlUHJpdmF0ZU1ldGhvZHMsIGZhbHNl
LCBOb3JtYWwsICJJZiB0cnVlLCB0aGUgcGFyc2VyIHdpbGwgdW5kZXJzdGFuZCBwcml2YXRlIG1l
dGhvZHMgaW5zaWRlIGNsYXNzZXMuIikgXAogICAgIHYoQm9vbCwgcmV0dXJuRWFybHlGcm9tSW5m
aW5pdGVMb29wc0ZvckZ1enppbmcsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KFNp
emUsIGVhcmx5UmV0dXJuRnJvbUluZmluaXRlTG9vcHNMaW1pdCwgMTMwMDAwMDAwMCwgTm9ybWFs
LCAiV2hlbiByZXR1cm5FYXJseUZyb21JbmZpbml0ZUxvb3BzRm9yRnV6emluZyBpcyB0cnVlLCB0
aGlzIGRldGVybWluZXMgdGhlIG51bWJlciBvZiBleGVjdXRpb25zIGEgbG9vcCBjYW4gcnVuIGZv
ciBiZWZvcmUganVzdCByZXR1cm5pbmcuIFRoaXMgaXMgaGVscGZ1bCBmb3IgdGhlIGZ1enplciBz
byBpdCBkb2Vzbid0IGdldCBzdHVjayBpbiBpbmZpbml0ZSBsb29wcy4iKSBcCiAgICAgdihCb29s
LCB1c2VMSUNNRnV6emluZywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXApAQCAtNTY4LDcgKzU2
OSw4IEBAIGVudW0gRXhwZXJpbWVudGFsT3B0aW9uRmxhZ3MgewogfTsKIAogI2RlZmluZSBGT1Jf
RUFDSF9KU0NfRVhQRVJJTUVOVEFMX09QVElPTih2KSBcCi0gICAgdih1c2VQcml2YXRlQ2xhc3NG
aWVsZHMsIChTdXBwb3J0c0ZUTCB8IFN1cHBvcnRzREZHKSwgImh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI3ODEiLCAiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMjc4NCIpCisgICAgdih1c2VQcml2YXRlQ2xhc3NGaWVsZHMsIChTdXBw
b3J0c0ZUTCB8IFN1cHBvcnRzREZHKSwgImh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTI3ODEiLCAiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxMjc4NCIpIFwKKyAgICB2KHVzZVByaXZhdGVNZXRob2RzLCAoU3VwcG9ydHNGVEwgfCBTdXBw
b3J0c0RGRyksICJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNzgx
IiwgImh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI3ODQiKQogCiBj
b25zdGV4cHIgc2l6ZV90IGNvdW50TnVtYmVyT2ZKU0NPcHRpb25zKCkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCmluZGV4IGI4NzE1
YWE3MmJiY2I3MzM5ZDZlMzQxM2FjNTljNzQ0MTE3YjgyYTguLjk0OTc2MzEyMDVjYTBlNGQwYTI5
NGUwNDVjZTc2YjcxYWQxMTQ0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaApAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJ
bmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8odXNlc0V2YWwoKSwgZmFsc2UsIGZh
bHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywg
U3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGRl
cml2ZWRDb250ZXh0VHlwZSgpLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8sIGlzQXJy
b3dGdW5jdGlvbkNvbnRleHQoKSwgZmFsc2UsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSk7IH0KKyAg
ICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFi
bGVJbmZvKHVzZXNFdmFsKCksIGZhbHNlLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZSwg
ZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2lj
LCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwg
ZGVyaXZlZENvbnRleHRUeXBlKCksIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObywgaXNB
cnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsgfQog
CiAgICAgVGVtcGxhdGVPYmplY3RNYXAmIGVuc3VyZVRlbXBsYXRlT2JqZWN0TWFwKFZNJik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IGQzOGMz
OWU0NDdkNjMxM2FhZjE4Y2UxMjE3ZDcyMzNlN2Y2MGM4MWYuLjljYTFhYWY2YWNjMDY4NDQ1YTdm
OWUyMGE2ZWFlMTdmNDhiYzg4NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmNwcApAQCAtNDI0LDcgKzQyNCw3IEBAIFByb3BlcnR5VGFibGUqIFN0cnVjdHVy
ZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eVRhYmxlKFZNJiB2bSwgYm9vbCBzZXRQcm9wZXJ0eVRhYmxl
CiAKICAgICBmb3IgKHNpemVfdCBpID0gc3RydWN0dXJlcy5zaXplKCk7IGktLTspIHsKICAgICAg
ICAgc3RydWN0dXJlID0gc3RydWN0dXJlc1tpXTsKLSAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPm1f
dHJhbnNpdGlvblByb3BlcnR5TmFtZSkKKyAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPm1fdHJhbnNp
dGlvblByb3BlcnR5TmFtZSB8fCBzdHJ1Y3R1cmUtPnRyYW5zaXRpb25LaW5kKCkgPT0gVHJhbnNp
dGlvbktpbmQ6OlNldEJyYW5kKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIHN3aXRj
aCAoc3RydWN0dXJlLT50cmFuc2l0aW9uS2luZCgpKSB7CiAgICAgICAgIGNhc2UgVHJhbnNpdGlv
bktpbmQ6OlByb3BlcnR5QWRkaXRpb246IHsKQEAgLTE0OTYsNCArMTQ5Niw5MCBAQCBhdXRvIFN0
cnVjdHVyZTo6ZmluZFByb3BlcnR5SGFzaEVudHJ5KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
IGNvbnN0IC0+IE9wdGlvbgogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKK0JyYW5kZWRT
dHJ1Y3R1cmU6OkJyYW5kZWRTdHJ1Y3R1cmUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHByZXZpb3VzLCBV
bmlxdWVkU3RyaW5nSW1wbCogYnJhbmRVaWQsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldh
dGNocG9pbnRGaXJlKiBkZWZlcnJlZCkKKyAgICA6IFN0cnVjdHVyZSh2bSwgcHJldmlvdXMsIGRl
ZmVycmVkKQorICAgICwgbV9icmFuZChicmFuZFVpZCkKK3sKKyAgICBpZiAocHJldmlvdXMtPmlz
QnJhbmRlZFN0cnVjdHVyZSgpKQorICAgICAgICBtX3BhcmVudEJyYW5kLnNldCh2bSwgdGhpcywg
anNDYXN0PEJyYW5kZWRTdHJ1Y3R1cmUqPihwcmV2aW91cykpOworICAgIHRoaXMtPnNldElzQnJh
bmRlZFN0cnVjdHVyZSh0cnVlKTsKK30KKworQnJhbmRlZFN0cnVjdHVyZTo6QnJhbmRlZFN0cnVj
dHVyZShWTSYgdm0sIEJyYW5kZWRTdHJ1Y3R1cmUqIHByZXZpb3VzLCBEZWZlcnJlZFN0cnVjdHVy
ZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogZGVmZXJyZWQpCisgICAgOiBTdHJ1Y3R1cmUodm0s
IHByZXZpb3VzLCBkZWZlcnJlZCkKKyAgICAsIG1fYnJhbmQocHJldmlvdXMtPm1fYnJhbmQpCisg
ICAgLCBtX3BhcmVudEJyYW5kKHZtLCB0aGlzLCBwcmV2aW91cy0+bV9wYXJlbnRCcmFuZC5nZXQo
KSwgV3JpdGVCYXJyaWVyPEJyYW5kZWRTdHJ1Y3R1cmU+OjpNYXlCZU51bGwpCit7CisgICAgdGhp
cy0+c2V0SXNCcmFuZGVkU3RydWN0dXJlKHRydWUpOworfQorCitTdHJ1Y3R1cmUqIEJyYW5kZWRT
dHJ1Y3R1cmU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogcHJldmlvdXMsIFVuaXF1ZWRTdHJp
bmdJbXBsKiBicmFuZFVpZCwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZp
cmUqIGRlZmVycmVkKQoreworICAgIEFTU0VSVCh2bS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUpOworICAg
IEJyYW5kZWRTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEJyYW5kZWRTdHJ1Y3R1cmU+KHZtLmhlYXApKSBCcmFuZGVkU3RydWN0dXJlKHZtLCBwcmV2
aW91cywgYnJhbmRVaWQsIGRlZmVycmVkKTsKKyAgICBuZXdTdHJ1Y3R1cmUtPmZpbmlzaENyZWF0
aW9uKHZtLCBwcmV2aW91cyk7CisgICAgcmV0dXJuIG5ld1N0cnVjdHVyZTsKK30KKworYm9vbCBC
cmFuZGVkU3RydWN0dXJlOjpjaGVja0JyYW5kKFN5bWJvbCogYnJhbmQpCit7CisgICAgVW5pcXVl
ZFN0cmluZ0ltcGwqIGJyYW5kVWlkID0gJmJyYW5kLT51aWQoKTsKKyAgICBmb3IgKEJyYW5kZWRT
dHJ1Y3R1cmUqIGN1cnJlbnRTdHJ1Y3R1cmUgPSB0aGlzOyBjdXJyZW50U3RydWN0dXJlOyBjdXJy
ZW50U3RydWN0dXJlID0gY3VycmVudFN0cnVjdHVyZS0+bV9wYXJlbnRCcmFuZC5nZXQoKSkgewor
ICAgICAgICBpZiAoYnJhbmRVaWQgPT0gY3VycmVudFN0cnVjdHVyZS0+bV9icmFuZCkKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1N0cnVj
dHVyZSogU3RydWN0dXJlOjpzZXRCcmFuZFRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVJ
bXBsKFN0cnVjdHVyZSogc3RydWN0dXJlLCBVbmlxdWVkU3RyaW5nSW1wbCogYnJhbmRJRCkKK3sK
KyAgICBBU1NFUlQoc3RydWN0dXJlLT5pc09iamVjdCgpKTsKKworICAgIGlmIChzdHJ1Y3R1cmUt
Pmhhc0JlZW5EaWN0aW9uYXJ5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYg
KFN0cnVjdHVyZSogZXhpc3RpbmdUcmFuc2l0aW9uID0gc3RydWN0dXJlLT5tX3RyYW5zaXRpb25U
YWJsZS5nZXQoYnJhbmRJRCwgMCwgVHJhbnNpdGlvbktpbmQ6OlNldEJyYW5kKSkKKyAgICAgICAg
cmV0dXJuIGV4aXN0aW5nVHJhbnNpdGlvbjsKKworICAgIHJldHVybiBudWxscHRyOworfQorCitT
dHJ1Y3R1cmUqIFN0cnVjdHVyZTo6c2V0QnJhbmRUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0
dXJlQ29uY3VycmVudGx5KFN0cnVjdHVyZSogc3RydWN0dXJlLCBVbmlxdWVkU3RyaW5nSW1wbCog
YnJhbmRJRCkKK3sKKyAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHN0cnVjdHVyZS0+bV9s
b2NrKTsKKyAgICByZXR1cm4gc2V0QnJhbmRUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJl
SW1wbChzdHJ1Y3R1cmUsIGJyYW5kSUQpOworfQorCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6c2V0
QnJhbmRUcmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN5bWJvbCogYnJh
bmQsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiBkZWZlcnJlZCkK
K3sKKyAgICBpZiAoIXN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpIHsKKyAgICAgICAgaWYgKFN0
cnVjdHVyZSogZXhpc3RpbmdUcmFuc2l0aW9uID0gc3RydWN0dXJlLT5tX3RyYW5zaXRpb25UYWJs
ZS5nZXQoJmJyYW5kLT51aWQoKSwgMCwgVHJhbnNpdGlvbktpbmQ6OlNldEJyYW5kKSkgeworICAg
ICAgICAgICAgQVNTRVJUKGV4aXN0aW5nVHJhbnNpdGlvbi0+dHJhbnNpdGlvbktpbmQoKSA9PSBU
cmFuc2l0aW9uS2luZDo6U2V0QnJhbmQpOworICAgICAgICAgICAgcmV0dXJuIGV4aXN0aW5nVHJh
bnNpdGlvbjsKKyAgICAgICAgfQorICAgIH0KKworICAgIFN0cnVjdHVyZSogdHJhbnNpdGlvbiA9
IEJyYW5kZWRTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgc3RydWN0dXJlLCAmYnJhbmQtPnVpZCgpLCBk
ZWZlcnJlZCk7CisgICAgdHJhbnNpdGlvbi0+c2V0VHJhbnNpdGlvbktpbmQoVHJhbnNpdGlvbktp
bmQ6OlNldEJyYW5kKTsKKworICAgIHRyYW5zaXRpb24tPm1fY2FjaGVkUHJvdG90eXBlQ2hhaW4u
c2V0TWF5QmVOdWxsKHZtLCB0cmFuc2l0aW9uLCBzdHJ1Y3R1cmUtPm1fY2FjaGVkUHJvdG90eXBl
Q2hhaW4uZ2V0KCkpOworICAgIHRyYW5zaXRpb24tPm1fYmxvYi5zZXRJbmRleGluZ01vZGVJbmNs
dWRpbmdIaXN0b3J5KHN0cnVjdHVyZS0+aW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeSgpKTsK
KyAgICB0cmFuc2l0aW9uLT5tX3RyYW5zaXRpb25Qcm9wZXJ0eU5hbWUgPSAmYnJhbmQtPnVpZCgp
OworICAgIHRyYW5zaXRpb24tPnNldFRyYW5zaXRpb25Qcm9wZXJ0eUF0dHJpYnV0ZXMoMCk7Cisg
ICAgdHJhbnNpdGlvbi0+c2V0UHJvcGVydHlUYWJsZSh2bSwgc3RydWN0dXJlLT50YWtlUHJvcGVy
dHlUYWJsZU9yQ2xvbmVJZlBpbm5lZCh2bSkpOworICAgIHRyYW5zaXRpb24tPnNldE1heE9mZnNl
dCh2bSwgc3RydWN0dXJlLT5tYXhPZmZzZXQoKSk7CisgICAgY2hlY2tPZmZzZXQodHJhbnNpdGlv
bi0+bWF4T2Zmc2V0KCksIHRyYW5zaXRpb24tPmlubGluZUNhcGFjaXR5KCkpOworCisgICAgaWYg
KHN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpIHsKKyAgICAgICAgUHJvcGVydHlUYWJsZSogdGFi
bGUgPSB0cmFuc2l0aW9uLT5lbnN1cmVQcm9wZXJ0eVRhYmxlKHZtKTsKKyAgICAgICAgdHJhbnNp
dGlvbi0+cGluKGhvbGRMb2NrKHRyYW5zaXRpb24tPm1fbG9jayksIHZtLCB0YWJsZSk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhzdHJ1Y3R1cmUtPm1fbG9j
ayk7CisgICAgICAgIHN0cnVjdHVyZS0+bV90cmFuc2l0aW9uVGFibGUuYWRkKHZtLCB0cmFuc2l0
aW9uKTsKKyAgICB9CisKKyAgICB0cmFuc2l0aW9uLT5jaGVja09mZnNldENvbnNpc3RlbmN5KCk7
CisgICAgcmV0dXJuIHRyYW5zaXRpb247Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAppbmRleCAzZTQ3NTE0YzljZDYxYTk4
NmEzMDBhMDk5NmRhMDlkNzc2ZGRmMjA2Li5mOWU0OWVhOWI0NWFkOTVmY2RlOWM3MGVmNmIxYjdm
NDE2NDljYTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaApA
QCAtMTIzLDcgKzEyMyw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgU3RydWN0dXJlKiBtX3N0cnVj
dHVyZTsKIH07CiAKLWNsYXNzIFN0cnVjdHVyZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgeworY2xh
c3MgU3RydWN0dXJlIDogcHVibGljIEpTQ2VsbCB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50
MTZfdCBzaG9ydEludmFsaWRPZmZzZXQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6
bWF4KCkgLSAxOwogICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDE2X3QgdXNlUmFyZURhdGFGbGFn
ID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MTZfdD46Om1heCgpOwogcHVibGljOgpAQCAtMTQ2
LDEzICsxNDYsNyBAQCBwdWJsaWM6CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9v
bCBpc1ZhbGlkUHJvdG90eXBlKEpTVmFsdWUpOwogCi1wcml2YXRlOgotICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mIHZtKQotICAgIHsKLSAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0p
OwotICAgICAgICBBU1NFUlQobV9wcm90b3R5cGUuZ2V0KCkuaXNFbXB0eSgpIHx8IGlzVmFsaWRQ
cm90b3R5cGUobV9wcm90b3R5cGUuZ2V0KCkpKTsKLSAgICB9Ci0KK3Byb3RlY3RlZDoKICAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSwgY29uc3QgU3RydWN0dXJlKiBwcmV2aW91cykKICAg
ICB7CiAgICAgICAgIHRoaXMtPmZpbmlzaENyZWF0aW9uKHZtKTsKQEAgLTE2NSw2ICsxNTksMTMg
QEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KIAorcHJpdmF0ZToKKyAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKFZNJiB2bSkKKyAgICB7CisgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
KTsKKyAgICAgICAgQVNTRVJUKG1fcHJvdG90eXBlLmdldCgpLmlzRW1wdHkoKSB8fCBpc1ZhbGlk
UHJvdG90eXBlKG1fcHJvdG90eXBlLmdldCgpKSk7CisgICAgfQorCiAgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIENyZWF0aW5nRWFybHlDZWxsVGFnKQogICAgIHsKICAgICAgICAgQmFz
ZTo6ZmluaXNoQ3JlYXRpb24odm0sIHRoaXMsIENyZWF0aW5nRWFybHlDZWxsKTsKQEAgLTIwNiw2
ICsyMDcsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cnVjdHVyZSogcHJldmVudEV4dGVuc2lv
bnNUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogbm9u
UHJvcGVydHlUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKiwgVHJhbnNpdGlvbktpbmQpOwogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIG5vblByb3BlcnR5VHJhbnNpdGlv
blNsb3coVk0mLCBTdHJ1Y3R1cmUqLCBUcmFuc2l0aW9uS2luZCk7CisgICAgc3RhdGljIFN0cnVj
dHVyZSogc2V0QnJhbmRUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlQ29uY3VycmVudGx5
KFN0cnVjdHVyZSosIFVuaXF1ZWRTdHJpbmdJbXBsKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSog
c2V0QnJhbmRUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKiwgU3ltYm9sKiBicmFuZCwgRGVmZXJy
ZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqID0gbnVsbHB0cik7CiAKICAgICBK
U19FWFBPUlRfUFJJVkFURSBib29sIGlzU2VhbGVkKFZNJik7CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgYm9vbCBpc0Zyb3plbihWTSYpOwpAQCAtNzE1LDIxICs3MTgsMjUgQEAgcHVibGljOgogICAg
IERFRklORV9CSVRGSUVMRChib29sLCBoYXNCZWVuRGljdGlvbmFyeSwgSGFzQmVlbkRpY3Rpb25h
cnksIDEsIDI3KTsKICAgICBERUZJTkVfQklURklFTEQoYm9vbCwgcHJvdGVjdFByb3BlcnR5VGFi
bGVXaGlsZVRyYW5zaXRpb25pbmcsIFByb3RlY3RQcm9wZXJ0eVRhYmxlV2hpbGVUcmFuc2l0aW9u
aW5nLCAxLCAyOCk7CiAgICAgREVGSU5FX0JJVEZJRUxEKGJvb2wsIGhhc1VuZGVyc2NvcmVQcm90
b1Byb3BlcnR5RXhjbHVkaW5nT3JpZ2luYWxQcm90bywgSGFzVW5kZXJzY29yZVByb3RvUHJvcGVy
dHlFeGNsdWRpbmdPcmlnaW5hbFByb3RvLCAxLCAyOSk7CisgICAgREVGSU5FX0JJVEZJRUxEKGJv
b2wsIGlzQnJhbmRlZFN0cnVjdHVyZSwgSXNCcmFuZGVkU3RydWN0dXJlLCAxLCAzMCk7CiAKICAg
ICBzdGF0aWNfYXNzZXJ0KHNfYml0V2lkdGhPZlRyYW5zaXRpb25Qcm9wZXJ0eUF0dHJpYnV0ZXMg
PD0gc2l6ZW9mKFRyYW5zaXRpb25Qcm9wZXJ0eUF0dHJpYnV0ZXMpICogOCk7CiAgICAgc3RhdGlj
X2Fzc2VydChzX2JpdFdpZHRoT2ZUcmFuc2l0aW9uS2luZCA8PSBzaXplb2YoVHJhbnNpdGlvbktp
bmQpICogOCk7CiAKK3Byb3RlY3RlZDoKKyAgICBTdHJ1Y3R1cmUoVk0mLCBTdHJ1Y3R1cmUqLCBE
ZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSopOworCiBwcml2YXRlOgog
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBKU19FWFBPUlRf
UFJJVkFURSBTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBl
LCBjb25zdCBUeXBlSW5mbyYsIGNvbnN0IENsYXNzSW5mbyosIEluZGV4aW5nVHlwZSwgdW5zaWdu
ZWQgaW5saW5lQ2FwYWNpdHkpOwogICAgIFN0cnVjdHVyZShWTSYpOwotICAgIFN0cnVjdHVyZShW
TSYsIFN0cnVjdHVyZSosIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJl
Kik7CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBEZWZl
cnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogPSBudWxscHRyKTsKICAgICAK
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3Ry
dWN0dXJlSW1wbChTdHJ1Y3R1cmUqLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYpOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92
ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUltcGwoU3RydWN0dXJlKiwg
UHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYpOworICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIHNldEJyYW5kVHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVy
ZUltcGwoU3RydWN0dXJlKiwgVW5pcXVlZFN0cmluZ0ltcGwqKTsKIAogICAgIC8vIFRoaXMgd2ls
bCByZXR1cm4gdGhlIHN0cnVjdHVyZSB0aGF0IGhhcyBhIHVzYWJsZSBwcm9wZXJ0eSB0YWJsZSwg
dGhhdCBwcm9wZXJ0eSB0YWJsZSwKICAgICAvLyBhbmQgdGhlIGxpc3Qgb2Ygc3RydWN0dXJlcyB0
aGF0IHdlIHZpc2l0ZWQgYmVmb3JlIHdlIGdvdCB0byBpdC4gSWYgaXQgcmV0dXJucyBhCkBAIC04
NzQsNCArODgxLDI5IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEpTRG9sbGFyVk1IZWxw
ZXI7CiB9OwogCitjbGFzcyBCcmFuZGVkU3RydWN0dXJlIGZpbmFsIDogcHVibGljIFN0cnVjdHVy
ZSB7CisgICAgdHlwZWRlZiBTdHJ1Y3R1cmUgQmFzZTsKKworcHVibGljOgorCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgorICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuICZ2bS5icmFu
ZGVkU3RydWN0dXJlU3BhY2U7CisgICAgfQorCisgICAgYm9vbCBjaGVja0JyYW5kKFN5bWJvbCog
YnJhbmQpOworCitwcml2YXRlOiAKKyAgICBCcmFuZGVkU3RydWN0dXJlKFZNJiwgU3RydWN0dXJl
KiwgVW5pcXVlZFN0cmluZ0ltcGwqIGJyYW5kLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25X
YXRjaHBvaW50RmlyZSopOworICAgIEJyYW5kZWRTdHJ1Y3R1cmUoVk0mLCBCcmFuZGVkU3RydWN0
dXJlKiwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqKTsKKworICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIFVuaXF1ZWRTdHJpbmdJ
bXBsKiBicmFuZCwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqID0g
bnVsbHB0cik7CisKKyAgICBVbmlxdWVkU3RyaW5nSW1wbCogbV9icmFuZDsKKyAgICBXcml0ZUJh
cnJpZXI8QnJhbmRlZFN0cnVjdHVyZT4gbV9wYXJlbnRCcmFuZDsKKworICAgIGZyaWVuZCBjbGFz
cyBTdHJ1Y3R1cmU7Cit9OworCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAppbmRleCA3MzllMWVmM2I5Yzdj
ZWMyMzU0YjZhNmM1NGNhOTk3ZmM1ZmQyYWM1Li5kNGU1YTUwNzJmMzAzMjM3Zjg5ZTVjMDk4ZTQz
OTY0MjY1ZGE1YmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlSW5saW5lcy5oCkBAIC02MSw3ICs2MSwxMiBAQCBpbmxpbmUgU3RydWN0dXJlKiBTdHJ1
Y3R1cmU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0pCiBpbmxpbmUgU3RydWN0dXJlKiBTdHJ1Y3R1
cmU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogcHJldmlvdXMsIERlZmVycmVkU3RydWN0dXJl
VHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiBkZWZlcnJlZCkKIHsKICAgICBBU1NFUlQodm0uc3Ry
dWN0dXJlU3RydWN0dXJlKTsKLSAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPFN0cnVjdHVyZT4odm0uaGVhcCkpIFN0cnVjdHVyZSh2bSwgcHJl
dmlvdXMsIGRlZmVycmVkKTsKKyAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZTsKKyAgICBpZiAo
cHJldmlvdXMtPmlzQnJhbmRlZFN0cnVjdHVyZSgpKQorICAgICAgICBuZXdTdHJ1Y3R1cmUgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxCcmFuZGVkU3RydWN0dXJlPih2bS5oZWFwKSkgQnJh
bmRlZFN0cnVjdHVyZSh2bSwganNDYXN0PEJyYW5kZWRTdHJ1Y3R1cmUqPihwcmV2aW91cyksIGRl
ZmVycmVkKTsKKyAgICBlbHNlCisgICAgICAgIG5ld1N0cnVjdHVyZSA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPFN0cnVjdHVyZT4odm0uaGVhcCkpIFN0cnVjdHVyZSh2bSwgcHJldmlvdXMs
IGRlZmVycmVkKTsKKwogICAgIG5ld1N0cnVjdHVyZS0+ZmluaXNoQ3JlYXRpb24odm0sIHByZXZp
b3VzKTsKICAgICByZXR1cm4gbmV3U3RydWN0dXJlOwogfQpAQCAtMTgxLDYgKzE4Niw3IEBAIHZv
aWQgU3RydWN0dXJlOjpmb3JFYWNoUHJvcGVydHlDb25jdXJyZW50bHkoY29uc3QgRnVuY3RvciYg
ZnVuY3RvcikKICAgICAgICAgY2FzZSBUcmFuc2l0aW9uS2luZDo6UHJvcGVydHlBdHRyaWJ1dGVD
aGFuZ2U6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUcmFuc2l0aW9uS2luZDo6
UHJvcGVydHlEZWxldGlvbjoKKyAgICAgICAgY2FzZSBUcmFuc2l0aW9uS2luZDo6U2V0QnJhbmQ6
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaAppbmRleCA2M2NmOGUwMjEyMjExNDVl
YzFjOWUzZjY0MzUwZTRhMzdhZTM5N2M2Li44MDYyYzJjNzg3YzNmNWE4YmQ2YjJiYWM3ZTM4OGEy
YzYzYjQ2ZmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmVUcmFuc2l0aW9uVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaApAQCAtNTUsNyArNTUsMTAgQEAgZW51bSBjbGFz
cyBUcmFuc2l0aW9uS2luZCA6IHVpbnQ4X3QgewogICAgIEFkZEluZGV4ZWRBY2Nlc3NvcnMsCiAg
ICAgUHJldmVudEV4dGVuc2lvbnMsCiAgICAgU2VhbCwKLSAgICBGcmVlemUKKyAgICBGcmVlemUs
CisKKyAgICAvLyBTdXBwb3J0IGZvciB0cmFuc2l0aW9ucyByZWxhdGVkIHdpdGggcHJpdmF0ZSBi
cmFuZAorICAgIFNldEJyYW5kCiB9OwogCiBzdGF0aWMgY29uc3RleHByIGF1dG8gRmlyc3ROb25Q
cm9wZXJ0eVRyYW5zaXRpb25LaW5kID0gVHJhbnNpdGlvbktpbmQ6OkFsbG9jYXRlVW5kZWNpZGVk
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCmluZGV4
IDE2NGNhNmQ0MzEwZTZiYjM4ZTY0N2UyZjZiZTJmOWY3ZDlmMzI2NWMuLmZiNDYwMDFiYWVkMmY5
YzFjODdlNTcyMmUyNjE1YjQxNDVkMTg3MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TeW1ib2xUYWJsZS5jcHAKQEAgLTE4NCw3ICsxODQsNyBAQCBTeW1ib2xUYWJsZSog
U3ltYm9sVGFibGU6OmNsb25lU2NvcGVQYXJ0KFZNJiB2bSkKIAogICAgICAgICB7CiAgICAgICAg
ICAgICBmb3IgKGF1dG8gbmFtZSA6IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzKQotICAgICAg
ICAgICAgICAgIHJlc3VsdC0+bV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKG5hbWUpOwor
ICAgICAgICAgICAgICAgIHJlc3VsdC0+bV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKG5h
bWUua2V5LCBuYW1lLnZhbHVlKTsKICAgICAgICAgfQogICAgIH0KICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCmluZGV4IDU5YTcyMzA1ZDNhNzA0MjBh
YmIxYWY0ZWZiZTY3ZmQ2Y2NkZmRlYTAuLmE1MzgxY2NiZWUxY2I3YzNiY2NkNjVlYTdlMDgxNmVi
NDNhNTk1NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJv
bFRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUu
aApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50c1RhYmxlLmgiCiAj
aW5jbHVkZSAiVHlwZUxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiVmFyT2Zmc2V0LmgiCisjaW5jbHVk
ZSAiVmFyaWFibGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKICNpbmNs
dWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KQEAgLTQ1MCw4ICs0NTEs
NyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1w
bD4sIFJlZlB0cjxUeXBlU2V0PiwgSWRlbnRpZmllclJlcEhhc2g+IFVuaXF1ZVR5cGVTZXRNYXA7
CiAgICAgdHlwZWRlZiBIYXNoTWFwPFZhck9mZnNldCwgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBs
Pj4gT2Zmc2V0VG9WYXJpYWJsZU1hcDsKICAgICB0eXBlZGVmIFZlY3RvcjxTeW1ib2xUYWJsZUVu
dHJ5Kj4gTG9jYWxUb0VudHJ5VmVjOwotICAgIHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+LCBJZGVudGlmaWVyUmVwSGFzaD4gUHJpdmF0ZU5hbWVTZXQ7Ci0gICAgdHlw
ZWRlZiBXVEY6Okl0ZXJhdG9yUmFuZ2U8dHlwZW5hbWUgUHJpdmF0ZU5hbWVTZXQ6Oml0ZXJhdG9y
PiBQcml2YXRlTmFtZUl0ZXJhdG9yUmFuZ2U7CisgICAgdHlwZWRlZiBXVEY6Okl0ZXJhdG9yUmFu
Z2U8dHlwZW5hbWUgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudDo6aXRlcmF0b3I+IFByaXZhdGVOYW1l
SXRlcmF0b3JSYW5nZTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFj
ZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKQEAg
LTYwNSwxNCArNjA1LDE0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1ha2VJdGVyYXRvclJh
bmdlKG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmJlZ2luKCksIG1fcmFyZURhdGEtPm1fcHJp
dmF0ZU5hbWVzLmVuZCgpKTsKICAgICB9CiAKLSAgICB2b2lkIGFkZFByaXZhdGVOYW1lKFVuaXF1
ZWRTdHJpbmdJbXBsKiBrZXkpCisgICAgdm9pZCBhZGRQcml2YXRlTmFtZShjb25zdCBSZWZQdHI8
VW5pcXVlZFN0cmluZ0ltcGw+JiBrZXksIFByaXZhdGVOYW1lRW50cnkgdmFsdWUpCiAgICAgewog
ICAgICAgICBBU1NFUlQoa2V5ICYmICFrZXktPmlzU3ltYm9sKCkpOwogICAgICAgICBpZiAoIW1f
cmFyZURhdGEpCiAgICAgICAgICAgICBtX3JhcmVEYXRhID0gV1RGOjptYWtlVW5pcXVlPFN5bWJv
bFRhYmxlUmFyZURhdGE+KCk7CiAKLSAgICAgICAgQVNTRVJUKCFtX3JhcmVEYXRhLT5tX3ByaXZh
dGVOYW1lcy5jb250YWlucyhrZXkpKTsKLSAgICAgICAgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFt
ZXMuYWRkKGtleSk7CisgICAgICAgIEFTU0VSVChtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5m
aW5kKGtleSkgPT0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZW5kKCkpOworICAgICAgICBt
X3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoa2V5LCB2YWx1ZSk7CiAgICAgfQogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgRW50cnk+CkBAIC03NTYsNyArNzU2LDcgQEAgcHVibGljOgogICAg
ICAgICBPZmZzZXRUb1ZhcmlhYmxlTWFwIG1fb2Zmc2V0VG9WYXJpYWJsZU1hcDsKICAgICAgICAg
VW5pcXVlVHlwZVNldE1hcCBtX3VuaXF1ZVR5cGVTZXRNYXA7CiAgICAgICAgIFdyaXRlQmFycmll
cjxDb2RlQmxvY2s+IG1fY29kZUJsb2NrOwotICAgICAgICBQcml2YXRlTmFtZVNldCBtX3ByaXZh
dGVOYW1lczsKKyAgICAgICAgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCBtX3ByaXZhdGVOYW1lczsK
ICAgICB9OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4
IDg0MDNlMmM4MWM3MjY4MWMwZDUxMDg3OWE4YmU5ODBmNmUxZTBmOGMuLmMzMmRlM2YzNTk2ODdm
MGQyZTY2YzFmZTAzNWMzNjU0Y2QzNTY1YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAKQEAgLTM2OSw2ICszNjksNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUg
aGVhcFR5cGUsIFdURjo6UnVuTG9vcCogcnVuTG9vcCwgYm9vbCogc3VjY2VzcykKICAgICAsIHN0
cnVjdHVyZUNoYWluU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgY2VsbEhlYXBDZWxsVHlw
ZS5nZXQoKSwgU3RydWN0dXJlQ2hhaW4pCiAgICAgLCBzdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlIElT
T19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IFN0cnVjdHVyZVJhcmVEYXRhKSAvLyBIYXNoOjB4YWNhNGU2MmQKICAgICAsIHN0cnVjdHVyZVNw
YWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUu
Z2V0KCksIFN0cnVjdHVyZSkgLy8gSGFzaDoweDFmMWJjZGNhCisgICAgLCBicmFuZGVkU3RydWN0
dXJlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxs
VHlwZS5nZXQoKSwgQnJhbmRlZFN0cnVjdHVyZSkKICAgICAsIHN5bWJvbFRhYmxlU3BhY2UgSVNP
X1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwg
U3ltYm9sVGFibGUpIC8vIEhhc2g6MHhjNTIxNWFmZAogICAgICwgZXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZXNXaXRoQ29uc3RyYWludHMoZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlKQog
ICAgICwgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycyhleGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlU3BhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCAy
N2FhZmMwMzI2NmZkMzdjMjVhYTJhNDMxMjJlYjZhMTNlNjU4Yzk3Li4yZTg3NjYzN2RjOWM5MGJl
YjJmNGRmMWUwZDQxYjQwNjkyMGZjZDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgK
QEAgLTQ2NSw2ICs0NjUsNyBAQCBwdWJsaWM6CiAgICAgSXNvU3Vic3BhY2Ugc3RydWN0dXJlQ2hh
aW5TcGFjZTsKICAgICBJc29TdWJzcGFjZSBzdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlOwogICAgIElz
b1N1YnNwYWNlIHN0cnVjdHVyZVNwYWNlOworICAgIElzb1N1YnNwYWNlIGJyYW5kZWRTdHJ1Y3R1
cmVTcGFjZTsKICAgICBJc29TdWJzcGFjZSBzeW1ib2xUYWJsZVNwYWNlOwogCiAjZGVmaW5lIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIobmFtZSkgXApkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBlMTk1YWViYzQ2YzIzMTdi
OTRlNDA3ZjZlNjBiZTRiN2E5ZGQwZTAzLi40N2ZjODc5MGYzMjhlYmI1ZTNiNjg0YzIzM2I4ZWQ1
NTJhMjE1MTA4IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIxLTAxLTI5ICBDYWlvIExpbWEgIDx0aWNhaW9s
aW1hQGdtYWlsLmNvbT4KKworICAgICAgICBbRVNOZXh0XSBJbXBsZW1lbnQgcHJpdmF0ZSBtZXRo
b2RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ0
MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0
cmVzcy9wcml2YXRlLWJyYW5kLWluc3RhbGxlZC1hZnRlci1zdXBlci1jYWxsLWZyb20tYXJyb3ct
ZnVuY3Rpb24uanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLWJyYW5kLWluc3Rh
bGxlZC1hZnRlci1zdXBlci1jYWxsLWZyb20tZXZhbC5qczogQWRkZWQuCisgICAgICAgICogc3Ry
ZXNzL3ByaXZhdGUtbWV0aG9kLWJyYW5kLWNoZWNrLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJl
c3MvcHJpdmF0ZS1tZXRob2QtY2hhbmdlLWF0dHJpYnV0ZS1mcm9tLWJyYW5kZWQtc3RydWN0dXJl
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2QtY2hhbmdlLXByb3Rv
dHlwZS1mcm9tLWJyYW5kZWQtc3RydWN0dXJlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3Mv
cHJpdmF0ZS1tZXRob2QtY2hlY2stcHJpdmF0ZS1icmFuZC1pYy5qczogQWRkZWQuCisgICAgICAg
ICogc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWNoZWNrLXN0cnVjdHVyZS1taXNzLmpzOiBBZGRlZC4K
KyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2QtY29tcGFyaXNvbi5qczogQWRkZWQuCisg
ICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWRlbGV0ZS1wcm9wZXJ0eS1mcm9tLWJyYW5k
ZWQtc3RydWN0dXJlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2Qt
ZXh0ZW5kcy1icmFuZC1jaGVjay5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUt
bWV0aG9kLWdldC1hbmQtY2FsbC5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUt
bWV0aG9kLWludmFsaWQtbXVsdGlwbGUtYnJhbmQtaW5zdGFsbGF0aW9uLmpzOiBBZGRlZC4KKyAg
ICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2QtaW52YWxpZGF0ZS1jb21waWxlZC13aXRoLWNv
bnN0YW50LXN5bWJvbC5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9k
LW5lc3RlZC1jbGFzcy5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9k
LW9uLXNlYWxlZC1vYmplY3RzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1t
ZXRob2Qtb24tdW5jYWNoZWFibGUtZGljdGlvbmFyeS5qczogQWRkZWQuCisgICAgICAgICogc3Ry
ZXNzL3ByaXZhdGUtbWV0aG9kLXBvbHltb3JwaGljLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzOiBB
ZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2Qtc2V0LWJyYW5kLXNob3VsZC1o
YXZlLXdyaXRlLWJhcnJpZXIuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1l
dGhvZC11bnR5cGVkLXVzZS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0
aG9kLXdpdGgtdW5jYWNoZWFibGUtZGljdGlvbmFyeS10cmFuc2l0aW9uLmpzOiBBZGRlZC4KKyAg
ICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2RzLWlubGluZS1jYWNoZS5qczogQWRkZWQuCisg
ICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1tZWdhbW9ycGhpYy1pYy5qczogQWRkZWQu
CisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1vbi1wcm94eS5qczogQWRkZWQuCisg
ICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1wb2x5LWljLW11bHRpcGxlLWNsYXNzZXMu
anM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZHMtcG9seS1pYy1zaW5n
bGUtY2xhc3MuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW5hbWVzLWF2YWls
YWJsZS1vbi1kaXJlY3QtZXZhbC5qczogQWRkZWQuCisgICAgICAgICogdGVzdDI2Mi9jb25maWcu
eWFtbDoKKwogMjAyMS0wMS0yOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJlY292ZXIgcmVtb3ZlZCB0ZXN0cwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1icmFuZC1pbnN0YWxsZWQtYWZ0ZXItc3VwZXItY2FsbC1m
cm9tLWFycm93LWZ1bmN0aW9uLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1icmFuZC1pbnN0
YWxsZWQtYWZ0ZXItc3VwZXItY2FsbC1mcm9tLWFycm93LWZ1bmN0aW9uLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjdlMjljN2JjMTFjMzYzNDM5MTViZDIwMmU4MDIyMzdhODgwNDFlNGYKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLWJyYW5kLWluc3RhbGxlZC1hZnRlci1zdXBlci1j
YWxsLWZyb20tYXJyb3ctZnVuY3Rpb24uanMKQEAgLTAsMCArMSwyNyBAQAorLy9AIHJlcXVpcmVP
cHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitmdW5jdGlvbiBhc3NlcnQoYSwg
ZSkgeworICAgIGlmIChhICE9PSBlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVk
OiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworfQorCitjbGFzcyBBIHt9CisKK2NsYXNzIEMg
ZXh0ZW5kcyBBIHsKKyAgICAjbWV0aG9kKCkgeworICAgICAgICByZXR1cm4gImJhc2UiOworICAg
IH0KKworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICBsZXQgaW5pdCA9ICgpID0+IHN1cGVy
KCk7CisgICAgICAgIGluaXQoKTsKKyAgICB9CisKKyAgICBiYXNlQWNjZXNzKCkgeworICAgICAg
ICByZXR1cm4gdGhpcy4jbWV0aG9kKCk7CisgICAgfQorfQorCitsZXQgYyA9IG5ldyBDKCk7Cith
c3NlcnQoYy5iYXNlQWNjZXNzKCksICJiYXNlIik7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL3ByaXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVyLWNhbGwtZnJvbS1ldmFsLmpz
IGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1icmFuZC1pbnN0YWxsZWQtYWZ0ZXItc3VwZXItY2Fs
bC1mcm9tLWV2YWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWUxNmVlMzhlMzQxY2NjMTYxMDU0ZGIxNzJiNWUy
MjFmYjY4NmM4MgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYnJh
bmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVyLWNhbGwtZnJvbS1ldmFsLmpzCkBAIC0wLDAgKzEsMjYg
QEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworZnVu
Y3Rpb24gYXNzZXJ0KGEsIGUpIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKK30KKworY2xhc3Mg
QSB7fQorCitjbGFzcyBDIGV4dGVuZHMgQSB7CisgICAgI21ldGhvZCgpIHsKKyAgICAgICAgcmV0
dXJuICJiYXNlIjsKKyAgICB9CisKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgZXZhbCgi
c3VwZXIoKSIpOworICAgIH0KKworICAgIGJhc2VBY2Nlc3MoKSB7CisgICAgICAgIHJldHVybiB0
aGlzLiNtZXRob2QoKTsKKyAgICB9Cit9CisKK2xldCBjID0gbmV3IEMoKTsKK2Fzc2VydChjLmJh
c2VBY2Nlc3MoKSwgImJhc2UiKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0
ZS1tZXRob2QtYnJhbmQtY2hlY2suanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1i
cmFuZC1jaGVjay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTUxNzVhM2Y1YmNhZjliMjQwYjE5NjAwYTdiN2Jk
ZDFlYjA1ZTQ5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRo
b2QtYnJhbmQtY2hlY2suanMKQEAgLTAsMCArMSwzMyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCIt
LXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitmdW5jdGlvbiBhc3NlcnQoYSwgZSkgeworICAg
IGlmIChhICE9PSBlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSAr
ICIgYnV0IGdvdDogIiArIGEpOworfQorCitjbGFzcyBDIHsKKyAgICAjbSgpIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuI2Y7CisgICAgfQorCisgICAgbWV0aG9kKCkgeworICAgICAgICByZXR1cm4g
dGhpcy4jbSgpOworICAgIH0KKworICAgICNmID0gNDsKK30KKworbGV0IGMgPSBuZXcgQygpOwor
YXNzZXJ0KGMubWV0aG9kKCksIDQpOworCit0cnkgeworICAgIGNsYXNzIEMgeworICAgICAgICAj
bSgpIHsgcmV0dXJuIDM7IH0KKyAgICB9CisKKyAgICBsZXQgbyA9IG5ldyBDKCk7CisgICAgYy5t
ZXRob2QuY2FsbChvKTsKK30gY2F0Y2ggKGUpIHsKKyAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIFR5
cGVFcnJvciwgdHJ1ZSk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUt
bWV0aG9kLWNoYW5nZS1hdHRyaWJ1dGUtZnJvbS1icmFuZGVkLXN0cnVjdHVyZS5qcyBiL0pTVGVz
dHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWNoYW5nZS1hdHRyaWJ1dGUtZnJvbS1icmFuZGVkLXN0
cnVjdHVyZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzkwYzQwMzU5Yzk5ZTBjNzZlNjc3MTU1ZDIzZDE3MWNh
MzY0NGQyCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2Qt
Y2hhbmdlLWF0dHJpYnV0ZS1mcm9tLWJyYW5kZWQtc3RydWN0dXJlLmpzCkBAIC0wLDAgKzEsNTAg
QEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0
IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkKSB7
CisgICAgICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJFeHBlY3RlZDogIiArIGV4cGVjdGVkICsgIiBidXQgZ290OiAiICsgYWN0dWFsKTsK
KyAgICB9LAorCisgICAgdGhyb3dzOiBmdW5jdGlvbiAoZXhwZWN0ZWRFcnJvciwgb3ApIHsKKyAg
ICAgICAgdHJ5IHsKKyAgICAgICAgICBvcCgpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAg
ICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEVycm9yKSkKKyAgICAgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhwZWN0ZWRFcnJvciAr
ICIgYnV0IHRocmV3OiAiICsgZSk7CisgICAgICAgIH0KKyAgICB9Cit9OworCitjbGFzcyBDIHsK
KyAgICAjbSgpIHsgcmV0dXJuICd0ZXN0JzsgfQorCisgICAgYWNjZXNzKCkgeworICAgICAgICBy
ZXR1cm4gdGhpcy4jbSgpOworICAgIH0KK30KKworbGV0IGMxID0gbmV3IEMoKTsKK2MxLmZvbyA9
ICd0ZXN0JzsKK2Fzc2VydC5zYW1lVmFsdWUoYzEuYWNjZXNzKCksICd0ZXN0Jyk7Cithc3NlcnQu
c2FtZVZhbHVlKGMxLmZvbywgJ3Rlc3QnKTsKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5j
dGlvbiAoKSB7CisgICAgYzEuYWNjZXNzLmNhbGwoe30pOworfSk7CisKK09iamVjdC5kZWZpbmVQ
cm9wZXJ0eShjMSwgJ2ZvbycsIHsKKyAgICB3cml0YWJsZTogZmFsc2UsCisgICAgZW51bWVyYWJs
ZTogZmFsc2UKK30pOworCithc3NlcnQuc2FtZVZhbHVlKGMxLmFjY2VzcygpLCAndGVzdCcpOwor
YXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgpIHsKKyAgICBjMS5hY2Nlc3MuY2Fs
bCh7fSk7Cit9KTsKKworbGV0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKGMxLCAnZm9vJyk7CisKK2Fzc2VydC5zYW1lVmFsdWUoZGVzY3JpcHRvci52YWx1ZSwg
J3Rlc3QnKTsKK2Fzc2VydC5zYW1lVmFsdWUoZGVzY3JpcHRvci5lbnVtZXJhYmxlLCBmYWxzZSk7
Cithc3NlcnQuc2FtZVZhbHVlKGRlc2NyaXB0b3Iud3JpdGFibGUsIGZhbHNlKTsKKwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtY2hhbmdlLXByb3RvdHlwZS1mcm9t
LWJyYW5kZWQtc3RydWN0dXJlLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtY2hh
bmdlLXByb3RvdHlwZS1mcm9tLWJyYW5kZWQtc3RydWN0dXJlLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVkYjFm
NjY5Y2EwMmZkNzY0ZWUxZmE0M2Y1NmY3MDlmYTUzNmQzM2YKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1jaGFuZ2UtcHJvdG90eXBlLWZyb20tYnJhbmRl
ZC1zdHJ1Y3R1cmUuanMKQEAgLTAsMCArMSw0MCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVz
ZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTog
ZnVuY3Rpb24gKGxocywgcmhzKSB7CisgICAgICAgIGlmIChsaHMgIT09IHJocykKKyAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBsaHMgKyAiIGJ1ZyBnb3Q6ICIgKyBy
aHMpOworICAgIH0sCisKKyAgICB0aHJvd3M6IGZ1bmN0aW9uIChleHBlY3RlZEVycm9yLCBvcCkg
eworICAgICAgICB0cnkgeworICAgICAgICAgIG9wKCk7CisgICAgICAgIH0gY2F0Y2goZSkgewor
ICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVkRXJyb3IpKQorICAgICAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleHBlY3RlZEVy
cm9yICsgIiBidXQgdGhyZXc6ICIgKyBlKTsKKyAgICAgICAgfQorICAgIH0KK307CisKK2NsYXNz
IEMgeworICAgICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisKKyAgICBhY2Nlc3MoKSB7CisgICAg
ICAgIHJldHVybiB0aGlzLiNtKCk7CisgICAgfQorfQorCitsZXQgYzEgPSBuZXcgQygpOworYXNz
ZXJ0LnNhbWVWYWx1ZShjMS5hY2Nlc3MoKSwgJ3Rlc3QnKTsKK2Fzc2VydC50aHJvd3MoVHlwZUVy
cm9yLCBmdW5jdGlvbiAoKSB7CisgICAgYzEuYWNjZXNzLmNhbGwoe30pOworfSk7CisKK09iamVj
dC5zZXRQcm90b3R5cGVPZihjMSwgbnVsbCk7CisKK2Fzc2VydC5zYW1lVmFsdWUoYzEuYWNjZXNz
LCB1bmRlZmluZWQpOworYXNzZXJ0LnNhbWVWYWx1ZShDLnByb3RvdHlwZS5hY2Nlc3MuY2FsbChj
MSksICd0ZXN0Jyk7Cithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAg
IGMxLmFjY2Vzcy5jYWxsKHt9KTsKK30pOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9w
cml2YXRlLW1ldGhvZC1jaGVjay1wcml2YXRlLWJyYW5kLWljLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
cHJpdmF0ZS1tZXRob2QtY2hlY2stcHJpdmF0ZS1icmFuZC1pYy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44N2Qz
MmU2NDMyMjdjMTkwMThjNDBiNzFlZDk3ODJlMWU5NmYzMjJjCi0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtY2hlY2stcHJpdmF0ZS1icmFuZC1pYy5qcwpA
QCAtMCwwICsxLDQwIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9
dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYWN0dWFs
LCBleHBlY3RlZCkgeworICAgICAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBhY3R1YWwgKyAiIGJ1ZyBnb3Q6ICIg
KyBleHBlY3RlZCk7CisgICAgfSwKKyAgICB0aHJvd3M6IGZ1bmN0aW9uIChleHBlY3RlZEVycm9y
LCBvcCkgeworICAgICAgICB0cnkgeworICAgICAgICAgIG9wKCk7CisgICAgICAgIH0gY2F0Y2go
ZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVkRXJyb3IpKQorICAg
ICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleHBl
Y3RlZEVycm9yICsgIiBidXQgdGhyZXc6ICIgKyBlKTsKKyAgICAgICAgfQorICAgIH0KK307CisK
K2Z1bmN0aW9uIGNsYXNzRmFjdG9yeSgpIHsKKyAgICByZXR1cm4gY2xhc3MgeworICAgICAgICAj
bWV0aG9kKCkgeworICAgICAgICAgICAgcmV0dXJuICd0ZXN0JzsKKyAgICAgICAgfQorCisgICAg
ICAgIGFjY2VzcygpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLiNtZXRob2QoKTsKKyAgICAg
ICAgfQorICAgIH0KK30KKworbGV0IEMxID0gY2xhc3NGYWN0b3J5KCk7CitsZXQgQzIgPSBjbGFz
c0ZhY3RvcnkoKTsKKworbGV0IGMxID0gbmV3IEMxKCk7CitsZXQgYzIgPSBuZXcgQzIoKTsKKwor
YXNzZXJ0LnNhbWVWYWx1ZShjMS5hY2Nlc3MoKSwgJ3Rlc3QnKTsKK2Fzc2VydC50aHJvd3MoVHlw
ZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgYzIuYWNjZXNzLmNhbGwoYzEpCit9KTsKKwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtY2hlY2stc3RydWN0dXJlLW1p
c3MuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1jaGVjay1zdHJ1Y3R1cmUtbWlz
cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41ODBkN2Y3ZWVlNzA0ZWYwY2I4ZDkwOTgwMDM1MTAxMWFmMzMwMzFj
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtY2hlY2st
c3RydWN0dXJlLW1pc3MuanMKQEAgLTAsMCArMSw1MSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCIt
LXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1
ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93
IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfSwK
KyAgICBzaG91bGRUaHJvdzogZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAg
IGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3Io
KTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2go
ZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYg
KCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGl0IHRocm93
czogIiArIGUubmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9u
KQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4
Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKKyAgICB9
Cit9CisKK2xldCBpID0gMDsKKworY2xhc3MgQyB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAg
ICAgIGlmIChpID49IDUwMDApCisgICAgICAgICAgICB0aGlzLnByb3BlcnR5ID0gaTsKKyAgICB9
CisKKyAgICAjbWV0aG9kKHYpIHsKKyAgICAgICAgdGhpcy5maWVsZCA9IHY7CisgICAgfQorCisg
ICAgYWNjZXNzKHYpIHsKKyAgICAgICAgdGhpcy4jbWV0aG9kKHYpOworICAgIH0KK30KK25vSW5s
aW5lKEMucHJvdG90eXBlLmFjY2Vzcyk7CisKK2xldCBjID0gbmV3IEMoKTsKK2ZvciAoOyBpIDwg
MTAwMDA7IGkrKykgeworICAgIGMuYWNjZXNzKCdmb28nICsgaSk7CisgICAgYXNzZXJ0LnNhbWVW
YWx1ZShjLmZpZWxkLCAnZm9vJyArIGkpOworfQorCithc3NlcnQuc2hvdWxkVGhyb3coVHlwZUVy
cm9yLCBmdW5jdGlvbigpIHsKKyAgICBjLmFjY2Vzcy5jYWxsKHt9LCAndGVzdCcpOworfSk7CisK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWNvbXBhcmlzb24uanMg
Yi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1jb21wYXJpc29uLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQ2ZGE3ODY3YmE0OGViNzdhMWI0MDE0Y2Y0ZWY2NDE2ZDEyNGE3ZDYKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1jb21wYXJpc29uLmpzCkBAIC0wLDAg
KzEsMzEgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikK
KworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChsaHMsIHJocykgewor
ICAgICAgICBpZiAobGhzICE9PSByaHMpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4
cGVjdGVkOiAiICsgbGhzICsgIiBidWcgZ290OiAiICsgcmhzKTsKKyAgICB9LAorCisgICAgdGhy
b3dzOiBmdW5jdGlvbiAoZXhwZWN0ZWRFcnJvciwgb3ApIHsKKyAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICBvcCgpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGlmICghKGUgaW5z
dGFuY2VvZiBleHBlY3RlZEVycm9yKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhwZWN0ZWRFcnJvciArICIgYnV0IHRocmV3OiAiICsg
ZSk7CisgICAgICAgIH0KKyAgICB9Cit9OworCitjbGFzcyBDIHsKKyAgICAjbSgpIHsgcmV0dXJu
ICd0ZXN0MjYyJzsgfQorCisgICAgZ2V0UHJpdmF0ZU1ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuI207CisgICAgfQorfQorCitsZXQgYzEgPSBuZXcgQygpOworbGV0IGMyID0gbmV3IEMo
KTsKKworYXNzZXJ0LnNhbWVWYWx1ZShjMS5nZXRQcml2YXRlTWV0aG9kKCksIGMyLmdldFByaXZh
dGVNZXRob2QoKSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9k
LWRlbGV0ZS1wcm9wZXJ0eS1mcm9tLWJyYW5kZWQtc3RydWN0dXJlLmpzIGIvSlNUZXN0cy9zdHJl
c3MvcHJpdmF0ZS1tZXRob2QtZGVsZXRlLXByb3BlcnR5LWZyb20tYnJhbmRlZC1zdHJ1Y3R1cmUu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZmVmYWU1ZjIxY2NkODI2MmMxYWVlYzdmNjVkYmU3Yjk2ZGY5MDI3ZQot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWRlbGV0ZS1w
cm9wZXJ0eS1mcm9tLWJyYW5kZWQtc3RydWN0dXJlLmpzCkBAIC0wLDAgKzEsNDIgQEAKKy8vQCBy
ZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9
IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChsaHMsIHJocykgeworICAgICAgICBpZiAobGhz
ICE9PSByaHMpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgbGhz
ICsgIiBidWcgZ290OiAiICsgcmhzKTsKKyAgICB9LAorCisgICAgdGhyb3dzOiBmdW5jdGlvbiAo
ZXhwZWN0ZWRFcnJvciwgb3ApIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICBvcCgpOworICAg
ICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3Rl
ZEVycm9yKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRo
cm93OiAiICsgZXhwZWN0ZWRFcnJvciArICIgYnV0IHRocmV3OiAiICsgZSk7CisgICAgICAgIH0K
KyAgICB9Cit9OworCitjbGFzcyBDIHsKKyAgICAjbSgpIHsgcmV0dXJuICd0ZXN0JzsgfQorCisg
ICAgYWNjZXNzKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jbSgpOworICAgIH0KK30KKworbGV0
IGMxID0gbmV3IEMoKTsKK2MxLmZvbyA9ICd0ZXN0JzsKK2Fzc2VydC5zYW1lVmFsdWUoYzEuYWNj
ZXNzKCksICd0ZXN0Jyk7Cithc3NlcnQuc2FtZVZhbHVlKGMxLmZvbywgJ3Rlc3QnKTsKK2Fzc2Vy
dC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgYzEuYWNjZXNzLmNhbGwoe30p
OworfSk7CisKK2RlbGV0ZSBjMS5mb287CisKK2Fzc2VydC5zYW1lVmFsdWUoYzEuYWNjZXNzKCks
ICd0ZXN0Jyk7Cithc3NlcnQuc2FtZVZhbHVlKGMxLmZvbywgdW5kZWZpbmVkKTsKK2Fzc2VydC50
aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgYzEuYWNjZXNzLmNhbGwoe30pOwor
fSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWV4dGVuZHMt
YnJhbmQtY2hlY2suanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1leHRlbmRzLWJy
YW5kLWNoZWNrLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMyNjY0YjJmY2NjZjY4OTVjMjE0NTFmNzY5NzhjN2Ey
ODRjN2EzZDEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhv
ZC1leHRlbmRzLWJyYW5kLWNoZWNrLmpzCkBAIC0wLDAgKzEsNDEgQEAKKy8vQCByZXF1aXJlT3B0
aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGEsIGUp
IHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDog
IiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKK30KKworY2xhc3MgQmFzZSB7CisgICAgI21CYXNl
KCkgeworICAgICAgICByZXR1cm4gNDsKKyAgICB9CisKKyAgICBtZXRob2RCYXNlKCkgeworICAg
ICAgICByZXR1cm4gdGhpcy4jbUJhc2UoKTsKKyAgICB9Cit9CisKK2NsYXNzIEMgZXh0ZW5kcyBC
YXNlIHsKKyAgICAjbSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI2Y7CisgICAgfQorCisgICAg
bWV0aG9kKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jbSgpOworICAgIH0KKworICAgICNmID0g
MTU7Cit9CisKK2xldCBjID0gbmV3IEMoKTsKK2Fzc2VydChjLm1ldGhvZCgpLCAxNSk7Cithc3Nl
cnQoYy5tZXRob2RCYXNlKCksIDQpOworCitsZXQgYmFzZSA9IG5ldyBCYXNlICgpOworYXNzZXJ0
KGJhc2UubWV0aG9kQmFzZSgpLCA0KTsKK3RyeSB7CisgICAgYy5tZXRob2QuY2FsbChiYXNlKTsK
K30gY2F0Y2ggKGUpIHsKKyAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIFR5cGVFcnJvciwgdHJ1ZSk7
Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWdldC1hbmQt
Y2FsbC5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWdldC1hbmQtY2FsbC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xMzE3ZTFlNzdlNDMzNmQ0ZWRiOGI4MzA3ZjYzNWJkODBhNmEyZjg4Ci0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtZ2V0LWFuZC1jYWxs
LmpzCkBAIC0wLDAgKzEsMjQgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0
aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChs
aHMsIHJocykgeworICAgICAgICBpZiAobGhzICE9PSByaHMpCisgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgbGhzICsgIiBidWcgZ290OiAiICsgcmhzKTsKKyAgICB9
Cit9OworCitjbGFzcyBDIHsKKyAgICAjbSgpIHsgcmV0dXJuIHRoaXMuX3Y7IH0KKworICAgIGdl
dFByaXZhdGVNZXRob2QoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtOworICAgIH0KK30KKwor
bGV0IGMgPSBuZXcgQygpOworCitsZXQgbzEgPSB7X3Y6ICd0ZXN0MjYyJ307CitsZXQgbzIgPSB7
X3Y6ICdmb28nfTsKK2Fzc2VydC5zYW1lVmFsdWUoYy5nZXRQcml2YXRlTWV0aG9kKCkuY2FsbChv
MSksICd0ZXN0MjYyJyk7Cithc3NlcnQuc2FtZVZhbHVlKGMuZ2V0UHJpdmF0ZU1ldGhvZCgpLmNh
bGwobzIpLCAnZm9vJyk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0
aG9kLWludmFsaWQtbXVsdGlwbGUtYnJhbmQtaW5zdGFsbGF0aW9uLmpzIGIvSlNUZXN0cy9zdHJl
c3MvcHJpdmF0ZS1tZXRob2QtaW52YWxpZC1tdWx0aXBsZS1icmFuZC1pbnN0YWxsYXRpb24uanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uN2Q3NzUwNzlmMzE0ZDA4ODBjZjdiOGM2NjE4NjdhZDVlZjkyMmE0MwotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWludmFsaWQtbXVs
dGlwbGUtYnJhbmQtaW5zdGFsbGF0aW9uLmpzCkBAIC0wLDAgKzEsNTEgQEAKKy8vQCByZXF1aXJl
T3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAg
ICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEp
OworICAgIH0sCisgICAgc2hvdWxkVGhyb3c6IGZ1bmN0aW9uKGV4Y2VwdGlvbiwgZnVuY3Rvcikg
eworICAgICAgICBsZXQgdGhyZXdFeGNlcHRpb247CisgICAgICAgIHRyeSB7CisgICAgICAgICAg
ICBmdW5jdG9yKCk7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IGZhbHNlOworICAgICAg
ICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAg
ICAgICAgIGlmICghZSBpbnN0YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1
dCBpdCB0aHJvd3M6ICIgKyBlLm5hbWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aHJl
d0V4Y2VwdGlvbikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhy
b3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9u
Iik7CisgICAgfQorfQorCitsZXQgaSA9IDA7CisKK2xldCBvID0ge307CitjbGFzcyBCYXNlIHsK
KyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgcmV0dXJuIG87CisgICAgfQorfQorCitjbGFz
cyBDIGV4dGVuZHMgQmFzZSB7CisgICAgI21ldGhvZCh2KSB7CisgICAgICAgIHRoaXMuZmllbGQg
PSB2OworICAgIH0KKworICAgIGFjY2Vzcyh2KSB7CisgICAgICAgIHRoaXMuI21ldGhvZCh2KTsK
KyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5hY2Nlc3MpOworCitsZXQgYyA9IG5ldyBD
KCk7CitDLnByb3RvdHlwZS5hY2Nlc3MuY2FsbChjLCAnZm9vJyk7Cithc3NlcnQuc2FtZVZhbHVl
KGMuZmllbGQsICdmb28nKTsKKworYXNzZXJ0LnNob3VsZFRocm93KFR5cGVFcnJvciwgZnVuY3Rp
b24oKSB7CisgICAgYyA9IG5ldyBDKCk7Cit9KTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvcHJpdmF0ZS1tZXRob2QtaW52YWxpZGF0ZS1jb21waWxlZC13aXRoLWNvbnN0YW50LXN5bWJv
bC5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWludmFsaWRhdGUtY29tcGlsZWQt
d2l0aC1jb25zdGFudC1zeW1ib2wuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjlkM2M3MmIwMzhiYjBhZDdlZTc5
OWQ1MjE0N2MyMmJkODZiYTU5NAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3By
aXZhdGUtbWV0aG9kLWludmFsaWRhdGUtY29tcGlsZWQtd2l0aC1jb25zdGFudC1zeW1ib2wuanMK
QEAgLTAsMCArMSw2MiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2Rz
PXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUp
IHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0
ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfSwKKyAgICB0aHJvd3M6IGZ1bmN0
aW9uKGV4Y2VwdGlvbiwgZnVuY3RvcikgeworICAgICAgICBsZXQgdGhyZXdFeGNlcHRpb247Cisg
ICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7CisgICAgICAgICAgICB0aHJld0V4
Y2VwdGlvbiA9IGZhbHNlOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3
RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICghZSBpbnN0YW5jZW9mIGV4Y2VwdGlv
bikKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAi
ICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBpdCB0aHJvd3M6ICIgKyBlLm5hbWUpOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKCF0aHJld0V4Y2VwdGlvbikKKyAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGV4
ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7CisgICAgfQorfQorCitmdW5jdGlvbiBmYWN0b3J5
Q2xhc3MoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgICNtZXRob2QoKSB7CisgICAgICAgICAg
ICByZXR1cm4gJ3Rlc3QnOworICAgICAgICB9CisgICAgCisgICAgICAgIGFjY2VzcygpIHsKKyAg
ICAgICAgICAgIHJldHVybiB0aGlzLiNtZXRob2QoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBu
b0lubGluZShDLnByb3RvdHlwZS5hY2Nlc3MpOworCisgICAgcmV0dXJuIEM7Cit9CisKK2xldCBD
ID0gZmFjdG9yeUNsYXNzKCk7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgewor
ICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuYWNjZXNzKCksICd0
ZXN0Jyk7CisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICAgICAgYy5h
Y2Nlc3MuY2FsbCh7fSk7CisgICAgfSk7Cit9CisKK2xldCBDMiA9IGZhY3RvcnlDbGFzcygpOwor
CitsZXQgYzIgPSBuZXcgQzIoKTsKK2Fzc2VydC5zYW1lVmFsdWUoYzIuYWNjZXNzKCksICd0ZXN0
Jyk7CisKK2xldCBjID0gbmV3IEMoKTsKKworYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsICgpID0+
IHsKKyAgICBjLmFjY2Vzcy5jYWxsKGMyKTsKK30pOworCithc3NlcnQudGhyb3dzKFR5cGVFcnJv
ciwgKCkgPT4geworICAgIGMyLmFjY2Vzcy5jYWxsKGMpOworfSk7CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1uZXN0ZWQtY2xhc3MuanMgYi9KU1Rlc3RzL3N0cmVz
cy9wcml2YXRlLW1ldGhvZC1uZXN0ZWQtY2xhc3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGNkZjQ4OTlhNDNl
NjllZDBkYWIzNGMyMjYzZWZkMzg4M2Q5YTIyZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL3ByaXZhdGUtbWV0aG9kLW5lc3RlZC1jbGFzcy5qcwpAQCAtMCwwICsxLDY4IEBACisv
L0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2Z1bmN0aW9u
IGFzc2VydChhLCBlKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7Cit9CisKKygoKSA9PiB7Cisg
ICAgY2xhc3MgQmFzZSB7CisgICAgICAgIEMgPSBjbGFzcyB7CisgICAgICAgICAgICBtZXRob2Qo
KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuI21CYXNlKCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICAjbUJhc2UoKSB7CisgICAgICAgICAgICByZXR1cm4gNDsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBiYXNlID0gbmV3IEJhc2UoKTsKKyAgICBsZXQg
YyA9IG5ldyBiYXNlLkMoKTsKKyAgICBhc3NlcnQoYy5tZXRob2QuY2FsbChiYXNlKSwgNCk7CisK
KyAgICB0cnkgeworICAgICAgICBjLm1ldGhvZCgpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBUeXBlRXJyb3IsIHRydWUpOworICAgIH0KK30pKCk7CisK
Ky8vIFRlc3Qgc2hhZG93IG1ldGhvZHMKKworKCgpID0+IHsKKyAgICBjbGFzcyBCYXNlIHsKKyAg
ICAgICAgbWV0aG9kKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI20oKTsKKyAgICAgICAg
fQorCisgICAgICAgIEMgPSBjbGFzcyB7CisgICAgICAgICAgICBtZXRob2QobykgeworICAgICAg
ICAgICAgICAgIHJldHVybiBvLiNtKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICNt
KCkgeworICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZvbzsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgZm9vID0gNDsKKyAgICAgICAgfTsKKworICAgICAgICAjbSgpIHsKKyAgICAg
ICAgICAgIHJldHVybiAiZm9vIjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBiYXNlID0g
bmV3IEJhc2UoKTsKKyAgICBsZXQgYyA9IG5ldyBiYXNlLkMoKTsKKyAgICBhc3NlcnQoYy5tZXRo
b2QoYyksIDQpOworICAgIGFzc2VydChiYXNlLm1ldGhvZCgpLCAiZm9vIik7CisKKyAgICB0cnkg
eworICAgICAgICBjLm1ldGhvZChiYXNlKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGFz
c2VydChlIGluc3RhbmNlb2YgVHlwZUVycm9yLCB0cnVlKTsKKyAgICB9Cit9KSgpOworCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1vbi1zZWFsZWQtb2JqZWN0cy5q
cyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLW9uLXNlYWxlZC1vYmplY3RzLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmE2MmYwOTk0MzEyMjU3MTQ5MjFhYmQ1ZTE1YmFkYTRmYjg1MDZjNjAKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1vbi1zZWFsZWQtb2Jq
ZWN0cy5qcwpAQCAtMCwwICsxLDY0IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0
ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlv
biAoYWN0dWFsLCBleHBlY3RlZCkgeworICAgICAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkK
KyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBhY3R1YWwgKyAiIGJ1
ZyBnb3Q6ICIgKyBleHBlY3RlZCk7CisgICAgfSwKKworICAgIHRocm93czogZnVuY3Rpb24gKGV4
cGVjdGVkRXJyb3IsIG9wKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgb3AoKTsKKyAgICAg
ICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgZXhwZWN0ZWRF
cnJvcikpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJv
dzogIiArIGV4cGVjdGVkRXJyb3IgKyAiIGJ1dCB0aHJldzogIiArIGUpOworICAgICAgICB9Cisg
ICAgfQorfTsKKworY2xhc3MgQyB7CisgICAgI20oKSB7IHJldHVybiAndGVzdCc7IH0KKworICAg
IGFjY2VzcygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI20oKTsKKyAgICB9Cit9CisKK2xldCBj
MSA9IG5ldyBDKCk7Cithc3NlcnQuc2FtZVZhbHVlKGMxLmFjY2VzcygpLCAndGVzdCcpOworYXNz
ZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgpIHsKKyAgICBjMS5hY2Nlc3MuY2FsbCh7
fSk7Cit9KTsKKworT2JqZWN0LnNlYWwoYzEpOworCithc3NlcnQuc2FtZVZhbHVlKGMxLmFjY2Vz
cygpLCAndGVzdCcpOworYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgpIHsKKyAg
ICBjMS5hY2Nlc3MuY2FsbCh7fSk7Cit9KTsKKworLy8gUGVyZm9ybSBhIHNldCBicmFuZCB0cmFu
c2l0aW9uIG9uIGZyb3plbiBvYmplY3QKK2xldCBzZWFsZWRPYmplY3QgPSB7fTsKK09iamVjdC5m
cmVlemUoc2VhbGVkT2JqZWN0KTsKKworY2xhc3MgQmFzZSB7CisgICAgY29uc3RydWN0b3IoKSB7
CisgICAgICAgIHJldHVybiBzZWFsZWRPYmplY3Q7CisgICAgfQorfQorCitjbGFzcyBEIGV4dGVu
ZHMgQmFzZSB7CisgICAgI20oKSB7IHJldHVybiAndGVzdCBEJzsgfQorCisgICAgc3RhdGljIGFj
Y2VzcyhvKSB7CisgICAgICAgIHJldHVybiBvLiNtKCk7CisgICAgfQorfQorCitsZXQgZCA9IG5l
dyBEKCk7CisKK2Fzc2VydC5zYW1lVmFsdWUoRC5hY2Nlc3MoZCksICd0ZXN0IEQnKTsKK2Fzc2Vy
dC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgRC5hY2Nlc3Moe30pOworfSk7
CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLW9uLXVuY2FjaGVh
YmxlLWRpY3Rpb25hcnkuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1vbi11bmNh
Y2hlYWJsZS1kaWN0aW9uYXJ5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEwNTUxNTBlZDc0NTRhNWIwMDllNzEy
MWM1NDY4NmE4MzAwOTQ3NGEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2
YXRlLW1ldGhvZC1vbi11bmNhY2hlYWJsZS1kaWN0aW9uYXJ5LmpzCkBAIC0wLDAgKzEsNjQgQEAK
Ky8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFz
c2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkKSB7Cisg
ICAgICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJFeHBlY3RlZDogIiArIGFjdHVhbCArICIgYnVnIGdvdDogIiArIGV4cGVjdGVkKTsKKyAg
ICB9LAorCisgICAgdGhyb3dzOiBmdW5jdGlvbiAoZXhwZWN0ZWRFcnJvciwgb3ApIHsKKyAgICAg
ICAgdHJ5IHsKKyAgICAgICAgICBvcCgpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAg
ICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEVycm9yKSkKKyAgICAgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhwZWN0ZWRFcnJvciArICIg
YnV0IHRocmV3OiAiICsgZSk7CisgICAgICAgIH0KKyAgICB9Cit9OworCitjbGFzcyBDIHsKKyAg
ICAjbSgpIHsgcmV0dXJuICd0ZXN0JzsgfQorCisgICAgYWNjZXNzKCkgeworICAgICAgICByZXR1
cm4gdGhpcy4jbSgpOworICAgIH0KK30KKworbGV0IGMxID0gbmV3IEMoKTsKK2Fzc2VydC5zYW1l
VmFsdWUoYzEuYWNjZXNzKCksICd0ZXN0Jyk7Cithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVu
Y3Rpb24gKCkgeworICAgIGMxLmFjY2Vzcy5jYWxsKHt9KTsKK30pOworCitPYmplY3QuZnJlZXpl
KGMxKTsKKworYXNzZXJ0LnNhbWVWYWx1ZShjMS5hY2Nlc3MoKSwgJ3Rlc3QnKTsKK2Fzc2VydC50
aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgYzEuYWNjZXNzLmNhbGwoe30pOwor
fSk7CisKKy8vIFBlcmZvcm0gYSBzZXQgYnJhbmQgdHJhbnNpdGlvbiBvbiBmcm96ZW4gb2JqZWN0
CitsZXQgZnJvemVuT2JqZWN0ID0ge307CitPYmplY3QuZnJlZXplKGZyb3plbk9iamVjdCk7CisK
K2NsYXNzIEJhc2UgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICByZXR1cm4gZnJvemVu
T2JqZWN0OworICAgIH0KK30KKworY2xhc3MgRCBleHRlbmRzIEJhc2UgeworICAgICNtKCkgeyBy
ZXR1cm4gJ3Rlc3QgRCc7IH0KKworICAgIHN0YXRpYyBhY2Nlc3MobykgeworICAgICAgICByZXR1
cm4gby4jbSgpOworICAgIH0KK30KKworbGV0IGQgPSBuZXcgRCgpOworCithc3NlcnQuc2FtZVZh
bHVlKEQuYWNjZXNzKGQpLCAndGVzdCBEJyk7Cithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVu
Y3Rpb24gKCkgeworICAgIEQuYWNjZXNzKHt9KTsKK30pOworCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9wcml2YXRlLW1ldGhvZC1wb2x5bW9ycGhpYy13aXRoLWNvbnN0YW50LXN5bWJvbC5q
cyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLXBvbHltb3JwaGljLXdpdGgtY29uc3Rh
bnQtc3ltYm9sLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwMTc2MjdhNTMwOTlhMjAxZmJlYWViM2Q5MTdiMDM2
YmY5MzFjMTYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhv
ZC1wb2x5bW9ycGhpYy13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpAQCAtMCwwICsxLDUzIEBACisv
L0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3Nl
cnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9
PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBn
b3Q6ICIgKyBhKTsKKyAgICB9LAorICAgIHNob3VsZFRocm93OiBmdW5jdGlvbihleGNlcHRpb24s
IGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9uOworICAgICAgICB0cnkgewor
ICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSBmYWxz
ZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRy
dWU7CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRpb24pCisgICAgICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5u
YW1lICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAgICAgICAgfQorCisgICAgICAg
IGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVj
dGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBleGVjdXRlZCB3aXRob3V0
IGV4Y2VwdGlvbiIpOworICAgIH0KK30KKworbGV0IGkgPSAwOworCitjbGFzcyBCYXNlIHsKKyAg
ICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgaWYgKGkgJSAyKQorICAgICAgICAgICAgdGhpcy5h
bm90aGVyRmllbGQgPSBpOworICAgIH0KK30KKworY2xhc3MgQyBleHRlbmRzIEJhc2UgeworICAg
ICNtZXRob2QoKSB7CisgICAgICAgIHJldHVybiAndGVzdCc7CisgICAgfQorCisgICAgYWNjZXNz
KCkgeworICAgICAgICByZXR1cm4gdGhpcy4jbWV0aG9kKCk7CisgICAgfQorfQorbm9JbmxpbmUo
Qy5wcm90b3R5cGUuYWNjZXNzKTsKKworZm9yICg7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgY291
bnQgPSBpOworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuYWNj
ZXNzKCksICd0ZXN0Jyk7Cit9CisKK2Fzc2VydC5zaG91bGRUaHJvdyhUeXBlRXJyb3IsICgpID0+
IHsKKyAgICBjLmFjY2Vzcy5jYWxsKHt9KTsKK30pOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9wcml2YXRlLW1ldGhvZC1zZXQtYnJhbmQtc2hvdWxkLWhhdmUtd3JpdGUtYmFycmllci5q
cyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLXNldC1icmFuZC1zaG91bGQtaGF2ZS13
cml0ZS1iYXJyaWVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiMzliN2E1ZTczY2IzM2Y0NDQ0ZTFmZjQwMzJk
Y2Q0NTY1MTVjNTMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1l
dGhvZC1zZXQtYnJhbmQtc2hvdWxkLWhhdmUtd3JpdGUtYmFycmllci5qcwpAQCAtMCwwICsxLDQx
IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xl
dCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbihhLCBlKSB7CisgICAgICAgIGlm
IChhICE9PSBlKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUg
KyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9Cit9OworCitsZXQgb2JqID0ge307CitsZXQgb3Zl
cnJpZGVTdXBlciA9IGZhbHNlCitjbGFzcyBCYXNlIHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAg
ICAgICAgaWYgKG92ZXJyaWRlU3VwZXIpCisgICAgICAgICAgICByZXR1cm4gb2JqOworICAgICAg
ICByZXR1cm4ge307CisgICAgfQorfQorCitjbGFzcyBDIGV4dGVuZHMgQmFzZSB7CisgICAgI21l
dGhvZCgpIHsKKyAgICAgICAgcmV0dXJuICd0ZXN0JzsKKyAgICB9CisKKyAgICBzdGF0aWMgYWNj
ZXNzKG8pIHsKKyAgICAgICAgcmV0dXJuIG8uI21ldGhvZCgpOworICAgIH0KK30KK25vSW5saW5l
KEMuYWNjZXNzKTsKKworZ2MoKTsKK2xldCBjID0gbmV3IEMoKTsgLy8gVGhpcyBpcyBkb25lIHRv
IGZpbGwgSUMgcGF0aAorYyA9IG51bGw7CisKK292ZXJyaWRlU3VwZXIgPSB0cnVlOworbmV3IEMo
KTsKK2VkZW5HQygpOyAvLyB0aGlzIGxlYXZlcyBvYmogd2l0aCBhIFN0cnVjdXRyZSB0aGF0IHdh
cyBmcmVlZAorZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgYXNzZXJ0LnNh
bWVWYWx1ZShDLmFjY2VzcyhvYmopLCAndGVzdCcpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9wcml2YXRlLW1ldGhvZC11bnR5cGVkLXVzZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3By
aXZhdGUtbWV0aG9kLXVudHlwZWQtdXNlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4N2M5ODUxNzYxOTM2ZTFh
MDczMjcxMWRmNjFjOTExYzJkYjgwOWMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9wcml2YXRlLW1ldGhvZC11bnR5cGVkLXVzZS5qcwpAQCAtMCwwICsxLDU3IEBACisvL0AgcmVx
dWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIsICItLXVzZUFjY2Vzc0lubGlu
aW5nPWZhbHNlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzaG91bGRUaHJvdzogZnVuY3Rpb24o
ZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAg
ICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0
aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNl
cHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQor
ICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBl
eGNlcHRpb24ubmFtZSArICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7CisgICAgICAgIH0K
KworICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0
ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2NsYXNzIEMgeworICAjbWV0aG9k
KCkge30KKworICBhY2Nlc3ModikgeworICAgICAgbGV0IG8gPSB0aGlzOworICAgICAgLy8gVGhp
cyBicmFuY2ggaXMgaGVyZSB0byBhdm9pZCBDaGVja1ByaXZhdGVCcmFuZCB0byBiZSBmb2xkZWQu
CisgICAgICBpZiAodiA+IDEwMCkKKyAgICAgICAgICBvID0ge307CisgICAgICBvLiNtZXRob2Qo
KTsKKyAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuYWNjZXNzKTsKKworbGV0IGMgPSBuZXcg
QygpOworCisvLyBMZXQncyB0cmlnZ2VyIEpJVCBjb21waWxhdGlvbiBmb3IgYEMucHJvdG90eXBl
LmFjY2Vzc2AKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGMuYWNjZXNz
KDE1KTsKK30KKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgYXNzZXJ0
LnNob3VsZFRocm93KFR5cGVFcnJvciwgKCkgPT4geworICAgICAgICBjLmFjY2Vzcy5jYWxsKHt9
LCAwKTsKKyAgICB9KTsKKworICAgIGFzc2VydC5zaG91bGRUaHJvdyhUeXBlRXJyb3IsICgpID0+
IHsKKyAgICAgICAgYy5hY2Nlc3MuY2FsbCgxNSwgMCk7CisgICAgfSk7CisKKyAgICBhc3NlcnQu
c2hvdWxkVGhyb3coVHlwZUVycm9yLCAoKSA9PiB7CisgICAgICAgIGMuc2V0RmllbGQuY2FsbCgn
c3RyaW5nJywgMCk7CisgICAgfSk7CisKKyAgICBhc3NlcnQuc2hvdWxkVGhyb3coVHlwZUVycm9y
LCAoKSA9PiB7CisgICAgICAgIGMuc2V0RmllbGQuY2FsbChTeW1ib2woJ3N5bWJvbCcpLCAwKTsK
KyAgICB9KTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2Qt
d2l0aC11bmNhY2hlYWJsZS1kaWN0aW9uYXJ5LXRyYW5zaXRpb24uanMgYi9KU1Rlc3RzL3N0cmVz
cy9wcml2YXRlLW1ldGhvZC13aXRoLXVuY2FjaGVhYmxlLWRpY3Rpb25hcnktdHJhbnNpdGlvbi5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mMjEyODhlYmU2ZDgyMWYzM2NiMWUyZTVmMzhkNjUxMTRmNzIzMWRlCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2Qtd2l0aC11bmNh
Y2hlYWJsZS1kaWN0aW9uYXJ5LXRyYW5zaXRpb24uanMKQEAgLTAsMCArMSwzOSBAQAorLy9AIHJl
cXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0g
eworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICAgICAg
aWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4
cGVjdGVkOiAiICsgYWN0dWFsICsgIiBidWcgZ290OiAiICsgZXhwZWN0ZWQpOworICAgIH0sCisK
KyAgICB0aHJvd3M6IGZ1bmN0aW9uIChleHBlY3RlZEVycm9yLCBvcCkgeworICAgICAgICB0cnkg
eworICAgICAgICAgIG9wKCk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYg
KCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVkRXJyb3IpKQorICAgICAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleHBlY3RlZEVycm9yICsgIiBidXQgdGhy
ZXc6ICIgKyBlKTsKKyAgICAgICAgfQorICAgIH0KK307CisKK2NsYXNzIEMgeworICAgICNtKCkg
eyByZXR1cm4gJ3Rlc3QnOyB9CisKKyAgICBhY2Nlc3MoKSB7CisgICAgICAgIHJldHVybiB0aGlz
LiNtKCk7CisgICAgfQorfQorCitsZXQgYzEgPSBuZXcgQygpOworYXNzZXJ0LnNhbWVWYWx1ZShj
MS5hY2Nlc3MoKSwgJ3Rlc3QnKTsKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAo
KSB7CisgICAgYzEuYWNjZXNzLmNhbGwoe30pOworfSk7CisKKyR2bS50b1VuY2FjaGVhYmxlRGlj
dGlvbmFyeShjMSk7CisKK2Fzc2VydC5zYW1lVmFsdWUoYzEuYWNjZXNzKCksICd0ZXN0Jyk7Cith
c3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgIGMxLmFjY2Vzcy5jYWxs
KHt9KTsKK30pOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZHMt
aW5saW5lLWNhY2hlLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2RzLWlubGluZS1j
YWNoZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45N2NiN2Y4OWUxYzAxY2NlMTVjYmM3MTQ2MTM2YjFhYWYzN2I3
OWY2Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2RzLWlu
bGluZS1jYWNoZS5qcwpAQCAtMCwwICsxLDIyIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNl
UHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChhY3R1YWwsIGV4cGVjdGVk
KSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IEVycm9yKCJF
eHBlY3RlZDogIiArIGV4cGVjdGVkICsgIiBBY3R1YWw6ICIgKyBhY3R1YWwpOworfQorCitjbGFz
cyBDIHsKKyAgICAjbWV0aG9kKCkgeworICAgICAgICByZXR1cm4gJ2Zvbyc7CisgICAgfQorCisg
ICAgYWNjZXNzKCkgeworICAgICAgIHJldHVybiB0aGlzLiNtZXRob2QoKTsKKyAgICB9Cit9CisK
K2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBjID0gbmV3IEMoKTsK
KyAgICBhc3NlcnQoYy5hY2Nlc3MoKSwgJ2ZvbycpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9wcml2YXRlLW1ldGhvZHMtbWVnYW1vcnBoaWMtaWMuanMgYi9KU1Rlc3RzL3N0cmVz
cy9wcml2YXRlLW1ldGhvZHMtbWVnYW1vcnBoaWMtaWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2MxNjZkNmI3
NmI3ODVkYWI4MzQ2NzQyZDUwYTIxNmJkYzZhMGVkMQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1tZWdhbW9ycGhpYy1pYy5qcwpAQCAtMCwwICsxLDI1
IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2Z1
bmN0aW9uIGFzc2VydChhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhw
ZWN0ZWQpCisgICAgICAgIHRocm93IEVycm9yKCJFeHBlY3RlZDogIiArIGV4cGVjdGVkICsgIiBB
Y3R1YWw6ICIgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiBjbGFzc0V4cHIoKSB7CisgICAgcmV0
dXJuIGNsYXNzIHsKKyAgICAgICAgI21ldGhvZCgpIHsKKyAgICAgICAgICAgIHJldHVybiAnZm9v
JzsKKyAgICAgICAgfQorCisgICAgICAgIGFjY2VzcygpIHsKKyAgICAgICAgICAgcmV0dXJuIHRo
aXMuI21ldGhvZCgpOworICAgICAgICB9CisgICAgfQorfQorCitmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgQyA9IGNsYXNzRXhwcigpOworICAgIGxldCBjID0gbmV3
IEMoKTsKKyAgICBhc3NlcnQoYy5hY2Nlc3MoKSwgJ2ZvbycpOworfQorCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZHMtb24tcHJveHkuanMgYi9KU1Rlc3RzL3N0cmVz
cy9wcml2YXRlLW1ldGhvZHMtb24tcHJveHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmI1ZmRmY2I2MjM0ZDU0
MGFhMGZhMTJlOGU3Nzc2ZDA2M2FhNWE5ZgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL3ByaXZhdGUtbWV0aG9kcy1vbi1wcm94eS5qcwpAQCAtMCwwICsxLDQyIEBACisvL0AgcmVx
dWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2Vy
dChhLCBlLCBtKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvciht
KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0QXJyYXlDb250ZW50KGEsIGUpIHsKKyAgICBhc3NlcnQo
YS5sZW5ndGgsIGUubGVuZ3RoLCAiU2l6ZSBvZiBhcnJheXMgZG9lc24ndCBtYXRjaCIpOworICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykKKyAgICAgICAgYXNzZXJ0KGFbaV0s
IGVbaV0sICJhWyIgKyBpICsgIl0gPSAiICsgYVtpXSArICIgYnV0IGVbIiArIGkgKyAiXSA9ICIg
KyBlW2ldKTsKK30KKworbGV0IGFyciA9IFtdOworCitjbGFzcyBQcm94eUJhc2UgeworICAgIGNv
bnN0cnVjdG9yKCkgeworICAgICAgICByZXR1cm4gbmV3IFByb3h5KHRoaXMsIHsKKyAgICAgICAg
ICAgIGdldDogZnVuY3Rpb24gKG9iaiwgcHJvcCkgeworICAgICAgICAgICAgICAgIGFyci5wdXNo
KHByb3ApOworICAgICAgICAgICAgICAgIHJldHVybiBvYmpbcHJvcF07CisgICAgICAgICAgICB9
CisgICAgICAgIH0pOworICAgIH0KK30KKworY2xhc3MgVGVzdCBleHRlbmRzIFByb3h5QmFzZSB7
CisgICAgI20oKSB7CisgICAgICAgIHJldHVybiAzOworICAgIH0KKworICAgIG1ldGhvZCgpIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMuI20oKTsKKyAgICB9Cit9CisKK2xldCB0ID0gbmV3IFRlc3Qo
KTsKK2xldCByID0gdC5tZXRob2QoKTsKK2Fzc2VydChyLCAzLCAiRXhwZWN0ZWQ6IDMgYnV0IGdv
dDogIiArIHIpOworCithc3NlcnRBcnJheUNvbnRlbnQoYXJyLCBbJ21ldGhvZCddKTsKKwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2RzLXBvbHktaWMtbXVsdGlwbGUt
Y2xhc3Nlcy5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1wb2x5LWljLW11bHRp
cGxlLWNsYXNzZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWY2YzZkNmE2NTU2ZTgzMTU2NjMwODc2YTgxMzll
Zjg1MmRiMWQ4MAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0
aG9kcy1wb2x5LWljLW11bHRpcGxlLWNsYXNzZXMuanMKQEAgLTAsMCArMSwyOCBAQAorLy9AIHJl
cXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitmdW5jdGlvbiBhc3Nl
cnQoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAg
ICAgICB0aHJvdyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBleHBlY3RlZCArICIgQWN0dWFsOiAiICsg
YWN0dWFsKTsKK30KKworZnVuY3Rpb24gY2xhc3NFeHByKCkgeworICAgIHJldHVybiBjbGFzcyB7
CisgICAgICAgICNtZXRob2QoKSB7CisgICAgICAgICAgICByZXR1cm4gJ2Zvbyc7CisgICAgICAg
IH0KKworICAgICAgICBhY2Nlc3MoKSB7CisgICAgICAgICAgIHJldHVybiB0aGlzLiNtZXRob2Qo
KTsKKyAgICAgICAgfQorICAgIH0KK30KKworbGV0IEMxID0gY2xhc3NFeHByKCk7CitsZXQgQzIg
PSBjbGFzc0V4cHIoKTsKKworbGV0IGFyciA9IFtDMSwgQzJdOworZm9yIChsZXQgaSA9IDA7IGkg
PCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IGMgPSBuZXcgYXJyW2kgJSBhcnIubGVuZ3RoXSgpOwor
ICAgIGFzc2VydChjLmFjY2VzcygpLCAnZm9vJyk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1wb2x5LWljLXNpbmdsZS1jbGFzcy5qcyBiL0pTVGVzdHMv
c3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1wb2x5LWljLXNpbmdsZS1jbGFzcy5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41YzQ4NWI0Zjg4ZTk0NDU5MjM2OGI4ZDVmNWY4MDU0OTlmY2YyNTY0Ci0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2RzLXBvbHktaWMtc2luZ2xlLWNsYXNz
LmpzCkBAIC0wLDAgKzEsMjUgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0
aG9kcz10cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBp
ZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgRXJyb3IoIkV4cGVjdGVkOiAi
ICsgZXhwZWN0ZWQgKyAiIEFjdHVhbDogIiArIGFjdHVhbCk7Cit9CisKK2NsYXNzIEMgeworICAg
ICNtZXRob2QoKSB7CisgICAgICAgIHJldHVybiAnZm9vJzsKKyAgICB9CisKKyAgICBhY2Nlc3Mo
KSB7CisgICAgICAgcmV0dXJuIHRoaXMuI21ldGhvZCgpOworICAgIH0KK30KKworbGV0IGMxID0g
bmV3IEMoKTsKK2xldCBjMiA9IG5ldyBDKCk7CitjMi5iYXIgPSAnYmFyJzsKK2xldCBhcnIgPSBb
YzEsIGMyXTsKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGFzc2VydChh
cnJbaSAlIGFyci5sZW5ndGhdLmFjY2VzcygpLCAnZm9vJyk7Cit9CisKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWRpcmVjdC1ldmFsLmpzIGIv
SlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1lcy1hdmFpbGFibGUtb24tZGlyZWN0LWV2YWwuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjRjZTBlMGFmODA1NzhlODk3MTZhMTY3MmVkYzE3NzMwNWIwNjRmMwotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9u
LWRpcmVjdC1ldmFsLmpzCkBAIC0wLDAgKzEsMjMgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11
c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6
IGZ1bmN0aW9uIChsaHMsIHJocykgeworICAgICAgICBpZiAobGhzICE9PSByaHMpCisgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgcmhzICsgIiBidWcgZ290OiAiICsg
bGhzKTsKKyAgICB9Cit9OworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEMgeworICAgICAg
ICAjbSgpIHsgcmV0dXJuICd0ZXN0JzsgfQorCisgICAgICAgIGNhbGxNZXRob2RGcm9tRXZhbCgp
IHsKKyAgICAgICAgICAgIGxldCBzZWxmID0gdGhpczsKKyAgICAgICAgICAgIHJldHVybiBldmFs
KCdzZWxmLiNtKCknKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsK
KyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuY2FsbE1ldGhvZEZyb21FdmFsKCksICd0ZXN0Jyk7Cit9
KSgpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwgYi9KU1Rlc3Rz
L3Rlc3QyNjIvY29uZmlnLnlhbWwKaW5kZXggODNhNmE3MmQ0Y2YzZjRjMWM5Y2Y4YWI3MTk5Y2Jk
ZmM0ZTBjODhmNi4uYTE3NjQ2ODZhNGJiM2I0MWVlNDNjY2RkOTAwYzljOTI3ZGFjZGYwMyAxMDA2
NDQKLS0tIGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2
Mi9jb25maWcueWFtbApAQCAtNCw2ICs0LDcgQEAgZmxhZ3M6CiAgIFdlYWtSZWY6IHVzZVdlYWtS
ZWZzCiAgIEZpbmFsaXphdGlvblJlZ2lzdHJ5OiB1c2VXZWFrUmVmcwogICBjbGFzcy1maWVsZHMt
cHJpdmF0ZTogdXNlUHJpdmF0ZUNsYXNzRmllbGRzCisgIGNsYXNzLW1ldGhvZHMtcHJpdmF0ZTog
dXNlUHJpdmF0ZU1ldGhvZHMKICAgY2xhc3Mtc3RhdGljLWZpZWxkcy1wdWJsaWM6IHVzZVB1Ymxp
Y1N0YXRpY0NsYXNzRmllbGRzCiAgIGNsYXNzLXN0YXRpYy1maWVsZHMtcHJpdmF0ZTogdXNlUHJp
dmF0ZVN0YXRpY0NsYXNzRmllbGRzCiAgIEludGwuRGF0ZVRpbWVGb3JtYXQtZGF5UGVyaW9kOiB1
c2VJbnRsRGF0ZVRpbWVGb3JtYXREYXlQZXJpb2QKQEAgLTE5LDcgKzIwLDYgQEAgc2tpcDoKICAg
ICAtIHJlZ2V4cC1sb29rYmVoaW5kCiAgICAgLSBsZWdhY3ktcmVnZXhwCiAKLSAgICAtIGNsYXNz
LW1ldGhvZHMtcHJpdmF0ZQogICAgIC0gY2xhc3Mtc3RhdGljLW1ldGhvZHMtcHJpdmF0ZQogICAg
IC0gY2xlYW51cFNvbWUKICAgICAtIGhvc3QtZ2MtcmVxdWlyZWQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418881</attachid>
            <date>2021-02-01 08:48:43 -0800</date>
            <delta_ts>2021-02-01 09:34:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194434-20210201134840.patch</filename>
            <type>text/plain</type>
            <size>340390</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMDU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
YjhmYzVmZGIxMmZlMjUyMGJkNzg0NTA1MGMwNTg0MTYwMTIxZjFiLi5lODYxZjVkYjI2MjcxMWQy
NzM2OWQ5NzExZTEzNmI3ZWY0YWJhNjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MTkgQEAKKzIwMjEtMDEtMjkgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtFU05leHRdIEltcGxlbWVudCBwcml2YXRlIG1ldGhvZHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDQzNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYWRk
aW5nIHN1cHBvcnQgdG8gcHJpdmF0ZSBtZXRob2RzIGZvbGxvd2luZyB0aGUKKyAgICAgICAgc3Bl
Y2lmaWNhdGlvbiBvbiBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtcHJpdmF0ZS1tZXRob2RzLy4K
KyAgICAgICAgVGhpcyBpcyBpbnRyb2R1Y2luZyBhIG5ldyB3YXkgdG8gZGVjbGFyZSBwcml2YXRl
IG1ldGhvZHMgb24KKyAgICAgICAgY2xhc3Mgc3ludGF4LiBQcml2YXRlIG1ldGhvZHMgYXJlIG9u
bHkgYWNjZXNzaWJsZSB3aXRoaW4KKyAgICAgICAgY2xhc3NlcyB0aGV5IHdlcmUgZGVjbGFyZWQs
IGFuZCBvbmx5IGNhbiBiZSBjYWxsZWQgZnJvbQorICAgICAgICBvYmplY3RzIHRoYXQgYXJlIGlu
c3RhbmNlIG9mIHRoZXNlIGNsYXNzZXMuCisgICAgICAgIFRvIGd1YXJhbnRlZSBzdWNoIHJ1bGVz
LCB0aGUgcHJvcG9zYWwgcHJlc2VudHMgdGhlIGNvbmNlcHQgb2YKKyAgICAgICAgQnJhbmQgQ2hl
Y2suIER1cmluZyBjbGFzcyBldmFsdWF0aW9uLCBpZiBhIHByaXZhdGUgbWV0aG9kIGlzIHByZXNl
bnQsCisgICAgICAgIGEgYGJyYW5kYCBpcyBpbnN0YWxsZWQgaW4gdGhpcyBjbGFzcy4gRXZlcnkg
aW5zdGFuY2Ugb2Ygc3VjaCBjbGFzcworICAgICAgICB0aGVuIGdldHMgdGhpcyBicmFuZCBpbnN0
YWxsZWQgZHVyaW5nIGBbW0NvbnN0cnVjdF1dYCBvcGVyYXRpb24uIEl0CisgICAgICAgIG1lYW5z
IHRoYXQgYW4gb2JqZWN0IGNhbiBoYXZlIG11bHRpcGxlIGJyYW5kcyAoZS5nIHdoZW4gdGhlcmUg
aXMgYWxzbworICAgICAgICBwcml2YXRlIG1ldGhvZHMgZGVjbGFyZWQgb24gc3VwZXIgY2xhc3Mp
LiBCZWZvcmUgYWNjZXNzaW5nIGEgcHJpdmF0ZQorICAgICAgICBtZXRob2QsIHRoZXJlIGlzIGEg
Y2hlY2sgdG8gdmFsaWRhdGUgaWYgdGhlIHRhcmdldCBvZiB0aGUgY2FsbCBoYXMgdGhlCisgICAg
ICAgIGJyYW5kIG9mIGNhbGxlZSBtZXRob2QuCisgICAgICAgIFRoZSBicmFuZCBjaGVjayBtZWNo
YW5pc20gaXMgaW1wbGVtZW50ZWQgdXNpbmcgYSBgQHByaXZhdGVCcmFuZGAKKyAgICAgICAgc3Rv
cmVkIG9uIGNsYXNzIHNjb3BlLiBIZXJlIGlzIGEgcmVwcmVzZW50YXRpb24gb2YgaG93IHRoaXMg
bWVjaGFuaXNtCisgICAgICAgIHdvcmtzOgorCisgICAgICAgIGBgYAorICAgICAgICBjbGFzcyBD
IHsKKyAgICAgICAgICAgICNtKCkgeyByZXR1cm4gMzsgfQorICAgICAgICAgICAgbWV0aG9kKCkg
eyByZXR1cm4gdGhpcy4jbSgpOyB9CisgICAgICAgIH0KKworICAgICAgICBsZXQgYyA9IG5ldyBD
KCk7CisgICAgICAgIGNvbnNvbGUubG9nKGMubWV0aG9kKCkpOyAvLyBwcmludHMgMworICAgICAg
ICBgYGAKKworICAgICAgICBHZW5lcmF0ZWQgYnl0ZWNvZGUgZm9yIHRoZSBmb2xsb3dpbmcgcmVw
cmVzZW50YXRpb246CisgICAgICAgIGBgYAorICAgICAgICB7IC8vIGNsYXNzIGxleGljYWwgc2Nv
cGUKKyAgICAgICAgICAgIGNvbnN0IEBwcml2YXRlQnJhbmQgPSBAY3JlYXRlUHJpdmF0ZVN5bWJv
bCgpOworICAgICAgICAgICAgY29uc3QgI20gPSBmdW5jdGlvbiAoKSB7IHJldHVybiAzOyB9Cisg
ICAgICAgICAgICBDLnByb3RvdHlwZS5tZXRob2QgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICAgICBAY2hlY2tfcHJpdmF0ZV9icmFuZCh0aGlzLCBAcHJpdmF0ZUJyYW5kKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gI20uY2FsbCh0aGlzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IEMgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBAc2V0X3ByaXZhdGVfYnJhbmQodGhp
cywgQHByaXZhdGVCcmFuZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBs
ZXQgYyA9IG5ldyBDKCk7CisgICAgICAgIGNvbnNvbGUubG9nKGMubWV0aG9kKCkpOyAvLyBwcmlu
dHMgMworICAgICAgICBgYGAKKworICAgICAgICAjIFJlc29sdmluZyBjb3JyZWN0IGJyYW5kIHRv
IGNoZWNrCisKKyAgICAgICAgSW4gdGhlIGNhc2Ugb2Ygc2hhZG93aW5nIG9yIG5lc3RlZCBzY29w
ZSwgd2UgbmVlZCB0byBlbWl0IGJyYW5kCisgICAgICAgIGNoZWNrcyB0byB0aGUgcmlnaHQgcHJp
dmF0ZSBicmFuZC4gU2VlIGNvZGUgYmVsb3c6CisKKyAgICAgICAgYGBgCisgICAgICAgIGNsYXNz
IEMgeworICAgICAgICAgICAgI20oKSB7IHJldHVybiAzOyB9CisgICAgICAgICAgICBtZXRob2Qo
KSB7IHJldHVybiB0aGlzLiNtKCk7fQorCisgICAgICAgICAgICBBID0gY2xhc3MgeworICAgICAg
ICAgICAgICAgICNtMigpIHsgcmV0dXJuIDM7IH0KKyAgICAgICAgICAgICAgICBmb28obykgeyBy
ZXR1cm4gdGhpcy4jbSgpOyB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYGBg
CisKKyAgICAgICAgVGhlIGNhbGwgb2YgIiNtIiBpbiBgZm9vYCByZWZlcnMgdG8gIkM6OiNtIi4g
SW4gc3VjaCBjYXNlLCB3ZSBuZWVkIHRvCisgICAgICAgIGNoZWNrIEMncyBwcml2YXRlIGJyYW5k
LCBpbnN0ZWFkIG9mIEEncyBwcml2YXRlIGJyYW5kLgorICAgICAgICBUbyBwZXJmb3JtIHRoZSBw
cm9wZXIgY2hlY2ssIHdlIGZpcnN0IHJlc29sdmUgc2NvcGUgb2YgIiNtIiBhbmQgdGhlbgorICAg
ICAgICBjaGVjayB0aGUgcHJpdmF0ZSBicmFuZCBvZiB0aGlzIHNjb3BlICh0aGUgc2NvcGUgd2hl
cmUgdGhlIHByaXZhdGUKKyAgICAgICAgbWV0aG9kIGFuZCBicmFuZCBhcmUgc3RvcmVkIGlzIHRo
ZSBzYW1lKS4KKyAgICAgICAgU28gdGhlIGJ5dGVjb2RlIHRvIGxvb2t1cCB0aGUgcmlnaHQgYnJh
bmQgaXM6CisKKyAgICAgICAgYGBgCisgICAgICAgIHJlc29sdmVfc2NvcGUgbG9jMTAsICIjbSIK
KyAgICAgICAgZ2V0X2Zyb21fc2NvcGUgbG9jMTEsIGxvYzEwLCAiQHByaXZhdGVCcmFuZCIKKyAg
ICAgICAgY2hlY2tfcHJpdmF0ZV9icmFuZCB0aGlzLCBsb2MxMQorICAgICAgICBnZXRfZnJvbV9z
Y29wZSBsb2MxMSwgbG9jMTAsICIjbSIKKyAgICAgICAgLy8gc2V0dXAgY2FsbCBmcmFtZQorICAg
ICAgICBjYWxsIGxvYzExLCAuLi4KKyAgICAgICAgLy8gLi4uCisgICAgICAgIGBgYAorCisgICAg
ICAgICMgQnJhbmQgY2hlY2sgbWVjaGFuaXNtCisKKyAgICAgICAgV2UgYXJlIGludHJvZHVjaW5n
IGluIHRoaXMgcGF0Y2ggMiBuZXcgYnl0ZWNvZGVzIHRvIGFsbG93IGJyYW5kIGNoZWNrCisgICAg
ICAgIG9mIG9iamVjdHM6IGBvcF9zZXRfYnJhbmRgIGFuZCBgb3BfY2hlY2tfYnJhbmRgLgorICAg
ICAgICBgb3Bfc2V0X2JyYW5kYCBzZXRzIGEgbmV3IGJyYW5kIGluIGFuIG9iamVjdCwgc28gd2Ug
Y2FuIHBlcmZvcm0gdGhlIGJyYW5kCisgICAgICAgIGNoZWNrIGxhdGVyIHdoZW4gYWNjZXNzaW5n
IHByaXZhdGUgbWV0aG9kcy4gVGhpcyBvcGVyYXRpb25zIHRocm93cyB3aGVuCisgICAgICAgIHRy
eWluZyB0byBhZGQgdGhlIHNhbWUgYnJhbmQgdHdpY2UgaW4gYW4gT2JqZWN0LgorICAgICAgICBg
b3BfY2hlY2tfYnJhbmRgIGNoZWNrcyBpZiB0aGUgZ2l2ZW4gb2JqZWN0IGNvbnRhaW5zIHRoZSBi
cmFuZCB3ZSBhcmUKKyAgICAgICAgbG9va2luZyBmb3IuIEl0IHRyYXZlcnNlcyB0aGUgYnJhbmQg
Y2hhaW4gdG8gdmVyaWZ5IGlmIHRoZSBicmFuZCBpcworICAgICAgICBwcmVzZW50LCBhbmQgdGhy
b3dzIGBUeXBlRXJyb3JgIG90aGVyd2lzZS4KKworICAgICAgICBXZSBhcmUgYWxzbyBpbnRyb2R1
Y2luZyBhIHN1YmNsYXNzIGZvciBTdHJ1Y3R1cmUgY2FsbGVkIEJyYW5kZWRTdHJ1Y3R1cmUuCisg
ICAgICAgIEl0IGlzIHVzZWQgdG8gc3RvcmUgYnJhbmRzIGFuZCB0byBhbGxvdyBicmFuZCBjaGVj
ayBtZWNoYW5pc20uIEJyYW5kZWRTdHJ1Y3R1cmUKKyAgICAgICAgc3RvcmVzIGEgYnJhbmQgYW5k
IGEgcGFyZW50IHBvaW50ZXIgdG8gYW5vdGhlciBCcmFuZGVkU3RydWN0dXJlIHRoYXQgYWxsb3cK
KyAgICAgICAgdXMgdHJhdmVyc2UgdGhlIGJyYW5kIGNoYWluLiBXaXRoIGBCcmFuZGVkU3RydWN0
dXJlYCwgd2UgY2FuIHRoZW4KKyAgICAgICAgaW5mZXIgdGhhdCBhIGdpdmVuIG9iamVjdCBoYXMg
dGhlIGJyYW5kIHdlIGFyZSBsb29raW5nIGZvciBqdXN0CisgICAgICAgIGNoZWNraW5nIGl0cyBz
dHJ1Y3R1cmVJZC4gVGhpcyBpcyB2ZXJ5IGdvb2Qgb3B0aW1pemF0aW9uLCBzaW5jZSB3ZSBjYW4K
KyAgICAgICAgcmVkdWNlIG1vc3Qgb2YgYnJhbmQgY2hlY2tzIHRvIHN0cnVjdHVyZSBjaGVja3Mu
CisKKyAgICAgICAgV2UgY3JlYXRlZCBhIG5ldyBraW5kIG9mIHRyYW5zaXRpb24gY2FsbGVkIGBT
ZXRCcmFuZGAgdGhhdCBoYXBwZW5zIHdoZW4KKyAgICAgICAgYG9wX3NldF9icmFuZGAgaXMgZXhl
Y3V0ZWQuIFRoaXMgYWxsb3cgdXMgdG8gY2FjaGUgc3VjaCBraW5kIG9mCisgICAgICAgIHRyYXNp
dGlvbnMgb24gdHJhc2l0aW9uIHRhYmxlIHVzaW5nIHRoZSBrZXkgYDxicmFuZC0+dWlkLCAwLAor
ICAgICAgICBUcmFuc2l0aW9uS2luZDo6U2V0QnJhbmQ+YC4gRHVyaW5nIHRoaXMgdHJhbnNpdGlv
biwgd2UgdGFrZSBwcmV2aW91cworICAgICAgICBzdHJ1Y3R1cmUgYW5kIGFwcGx5IG9uZSBvZiB0
aGUgZm9sbG93aW5nIHJ1bGVzOgorCisgICAgICAgICAgICAxLiBJZiBpdOKAmXMgYSBCcmFuZGVk
U3RydWN0dXJlLCB3ZSB0aGVuIHNldCBpdCB0byBgbV9wYXJlbnRCcmFuZGAsCisgICAgICAgICAg
ICB0byBhbGxvdyBwcm9wZXIgYnJhbmQgY2hhaW4gY2hlY2suCisgICAgICAgIAorICAgICAgICAg
ICAgMi4gSWYgaXTigJlzIG5vdCBhIEJyYW5kZWRTdHJ1Y3R1cmUsIHdlIHNldCBgbV9wYXJlbnRC
cmFuZGAgdG8gbnVsbHB0ciwKKyAgICAgICAgICAgIG1lYW5pbmcgdGhhdCB0aGlzIGlzIHRoZSBm
aXJzdCBicmFuZCBiZWluZyBhZGRlZCB0byB0aGUgb2JqZWN0CisgICAgICAgICAgICB3aXRoIHRo
aXMgc3RydWN0dXJlLgorICAgICAgICAKKyAgICAgICAgRm9yIG5vdywgd2UgYXJlIHVzaW5nIHRo
ZSBmbGFnIGBpc0JyYW5kZWRTdHJ1Y3R1cmVgIHRvIGlkZW50aWZ5IHRoYXQgYQorICAgICAgICBn
aXZlbiBTdHJ1Y3R1cmUgaXMgYSBCcmFuZGVkU3RydWN0dXJlLiBUaGlzIGlzIGRvbmUgdG8gYXZv
aWQgY2hhbmdlcworICAgICAgICBvbiBwbGFjZXMgd2hlcmUgd2UgYXJlIGNoZWNraW5nIGZvciBg
dm0uc3RydWN0dXJlU3RydWN0dXJlKClgLgorICAgICAgICBIb3dldmVyLCBpZiB3ZSBldmVyIG5l
ZWQgc3BhY2Ugb24gU3RydWN0dXJlLCB0aGlzIGZsYWcgaXMgYSBnb29kCisgICAgICAgIGNhbmRp
ZGF0ZSB0byBiZSBkZWxldGVkIGFuZCB3ZSBjYW4gbW92ZSB0byBhIHNvbHV0aW9uIHRoYXQgdXNl
cworICAgICAgICBgdm0uYnJhbmRlZFN0cnVjdHVyZVN0cnVjdHVyZSgpYDsKKworICAgICAgICAg
IyBKSVQgU3VwcG9ydAorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBpbmNsdWRlcyBpbml0aWFs
IEpJVCBzdXBwb3J0IGZvciBgc2V0X3ByaXZhdGVfYnJhbmRgCisgICAgICAgIGFuZCBgY2hlY2tf
cHJpdmF0ZV9icmFuZGAuIE9uIEJhc2VsaW5lIEpJVCwgd2UgYXJlIHVzaW5nCisgICAgICAgIGBK
SVRQcmF2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3JgIHRvIHN1cHBvcnQgSUMgZm9yIGJvdGggb3Bl
cmFuZHMuCisgICAgICAgIE9uIERGR0J5dGVDb2RlUGFyc2VyIHdlIGFyZSB0cnlpbmcgdG8gaW5s
aW5lIGJyYW5kIGFjY2VzcyB3aGVuZXZlcgorICAgICAgICBwb3NzaWJsZSwgYW5kIGZhbGxiYWNr
aW5nIHRvIGBTZXRQcml2YXRlQnJhbmRgIGFuZAorICAgICAgICBgQ2hlY2tQcml2YXRlQnJhbmRg
IG90aGVyd2lzZS4gVGhvc2Ugbm9kZXMgYXJlIG5vdCBiZWluZyBvcHRpbWl6ZWQgYXQKKyAgICAg
ICAgdGhlaXIgZnVsbCBwb3RlbnRpYWwsIGJ1dCB0aGUgY29kZSBnZW5lcmF0ZWQgYnkgdGhlbSBp
cyBhbHNvIHJlbHlpbmcgb24gCisgICAgICAgIGBKSVRQcmF2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0
b3JgIHRvIGhhdmUgSUMgc3VwcG9ydCBmb3IgYm90aCBERkcgYW5kCisgICAgICAgIEZUTC4gRHVy
aW5nIERGRyBwYXJzaW5nIHdlIHRyeSByZWR1Y2UgdGhvc2UgYWNjZXNzICB0byBgQ2hlY2tJZGVu
dGlmZWlyYAorICAgICAgICBhbmQgYENoZWNrU3RydWN0dXJlYCAod2l0aCBgUHV0U3RydWN0dXJl
YCBmb3IgYHNldF9wcml2YXRlX2JyYW5kYCBjYXNlcykKKyAgICAgICAgYmFzZWQgb24gYXZhaWxh
YmxlIHByb2ZpbGVkIGRhdGEuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNv
dXJjZXMudHh0OgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6Cisg
ICAgICAgIChKU0M6OkJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9y
KToKKyAgICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKToK
KyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaDoKKworICAgICAgICBXZSBh
cmUgYWRkaW5nIGEgbmV3IHBhcmFtZXRlciBgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnRgIHRvIHBy
b3BhZ2F0ZQorICAgICAgICB3aGVuIGEgZGVmYXVsdCBjb25zdHJ1Y3RvciBuZWVkcyB0byBlbWl0
IGNvZGUgdG8gc2V0dXAgcHJpdmF0ZSBicmFuZAorICAgICAgICBvbiBpbnN0YW5jZXMuCisKKyAg
ICAgICAgKiBidWlsdGlucy9CdWlsdGluTmFtZXMuaDoKKworICAgICAgICBBZGRpbmcgYEBwcml2
YXRlQnJhbmRgIHRoYXQgIHdlIHVzZSB0byBzdG9yZSBwcml2YXRlIGJyYW5kIG9uCisgICAgICAg
IGNsYXNzJ3Mgc2NvcGUuCisKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y3JlYXRlQ2hlY2tQcml2YXRlQnJhbmQpOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGVTZXRQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlND
OjpBY2Nlc3NDYXNlOjpyZXF1aXJlc0lkZW50aWZpZXJOYW1lTWF0Y2ggY29uc3QpOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpyZXF1aXJlc0ludDMyUHJvcGVydHlDaGVjayBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6Om5lZWRzU2NyYXRjaEZQUiBjb25zdCk6CisgICAgICAg
IChKU0M6OkFjY2Vzc0Nhc2U6OmZvckVhY2hEZXBlbmRlbnRDZWxsIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6QWNjZXNzQ2FzZTo6ZG9lc0NhbGxzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNz
Q2FzZTo6Y2FuUmVwbGFjZSBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmR1bXAg
Y29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCk6Cisg
ICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbCk6CisgICAgICAgICogYnl0ZWNv
ZGUvQWNjZXNzQ2FzZS5oOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpzdHJ1Y3R1cmUgY29u
c3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpuZXdTdHJ1Y3R1cmUgY29uc3QpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRl
eEltcGwpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToK
KyAgICAgICAgKiBieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5jcHA6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6YXBwZW5kVmFyaWFudCk6Cisg
ICAgICAgIChKU0M6OkNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOjpjb21wdXRlRm9yQmFzZWxpbmUp
OgorICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6Q2hlY2tQcml2YXRlQnJh
bmRTdGF0dXMpOgorICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6Y29tcHV0
ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2spOgorICAgICAgICAoSlNDOjpDaGVj
a1ByaXZhdGVCcmFuZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgIChKU0M6OkNoZWNrUHJp
dmF0ZUJyYW5kU3RhdHVzOjpzbG93VmVyc2lvbiBjb25zdCk6CisgICAgICAgIChKU0M6OkNoZWNr
UHJpdmF0ZUJyYW5kU3RhdHVzOjptZXJnZSk6CisgICAgICAgIChKU0M6OkNoZWNrUHJpdmF0ZUJy
YW5kU3RhdHVzOjpmaWx0ZXIpOgorICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVCcmFuZFN0YXR1
czo6c2luZ2xlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChKU0M6OkNoZWNrUHJpdmF0ZUJy
YW5kU3RhdHVzOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChKU0M6OkNoZWNrUHJpdmF0ZUJy
YW5kU3RhdHVzOjptYXJrSWZDaGVhcCk6CisgICAgICAgIChKU0M6OkNoZWNrUHJpdmF0ZUJyYW5k
U3RhdHVzOjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVz
OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFN0YXR1
cy5oOiBBZGRlZC4KKyAgICAgICAgKiBieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q2hlY2tQcml2YXRlQnJhbmRWYXJpYW50OjpDaGVj
a1ByaXZhdGVCcmFuZFZhcmlhbnQpOgorICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVCcmFuZFZh
cmlhbnQ6On5DaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQpOgorICAgICAgICAoSlNDOjpDaGVja1By
aXZhdGVCcmFuZFZhcmlhbnQ6OmF0dGVtcHRUb01lcmdlKToKKyAgICAgICAgKEpTQzo6Q2hlY2tQ
cml2YXRlQnJhbmRWYXJpYW50OjptYXJrSWZDaGVhcCk6CisgICAgICAgIChKU0M6OkNoZWNrUHJp
dmF0ZUJyYW5kVmFyaWFudDo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVC
cmFuZFZhcmlhbnQ6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKEpTQzo6Q2hlY2tQcml2YXRl
QnJhbmRWYXJpYW50OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2hlY2tQcml2YXRlQnJh
bmRWYXJpYW50OjpkdW1wSW5Db250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9DaGVj
a1ByaXZhdGVCcmFuZFZhcmlhbnQuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkNoZWNrUHJpdmF0
ZUJyYW5kVmFyaWFudDo6c3RydWN0dXJlU2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2hlY2tQ
cml2YXRlQnJhbmRWYXJpYW50OjpzdHJ1Y3R1cmVTZXQpOgorICAgICAgICAoSlNDOjpDaGVja1By
aXZhdGVCcmFuZFZhcmlhbnQ6OmlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpDaGVj
a1ByaXZhdGVCcmFuZFZhcmlhbnQ6Om92ZXJsYXBzKToKKyAgICAgICAgKiBieXRlY29kZS9Db2Rl
QmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKToKKyAgICAg
ICAgKiBieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxl
SW5mbzo6RXhlY3V0YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6cHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3Jw
aGljQWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJh
dGUpOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBieXRlY29kZS9S
ZWNvcmRlZFN0YXR1c2VzLmNwcDoKKyAgICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNlczo6b3Bl
cmF0b3I9KToKKyAgICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNlczo6YWRkQ2hlY2tQcml2YXRl
QnJhbmRTdGF0dXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1c2VzOjphZGRTZXRQcml2
YXRlQnJhbmRTdGF0dXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1c2VzOjp2aXNpdEFn
Z3JlZ2F0ZSk6CisgICAgICAgIChKU0M6OlJlY29yZGVkU3RhdHVzZXM6Om1hcmtJZkNoZWFwKToK
KyAgICAgICAgKiBieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmg6CisgICAgICAgIChKU0M6OlJl
Y29yZGVkU3RhdHVzZXM6OmZvckVhY2hWZWN0b3IpOgorICAgICAgICAqIGJ5dGVjb2RlL1NldFBy
aXZhdGVCcmFuZFN0YXR1cy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpTZXRQcml2YXRlQnJh
bmRTdGF0dXM6OmFwcGVuZFZhcmlhbnQpOgorICAgICAgICAoSlNDOjpTZXRQcml2YXRlQnJhbmRT
dGF0dXM6OmNvbXB1dGVGb3JCYXNlbGluZSk6CisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFu
ZFN0YXR1czo6U2V0UHJpdmF0ZUJyYW5kU3RhdHVzKToKKyAgICAgICAgKEpTQzo6U2V0UHJpdmF0
ZUJyYW5kU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjayk6
CisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAg
ICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFN0YXR1czo6c2xvd1ZlcnNpb24gY29uc3QpOgorICAg
ICAgICAoSlNDOjpTZXRQcml2YXRlQnJhbmRTdGF0dXM6Om1lcmdlKToKKyAgICAgICAgKEpTQzo6
U2V0UHJpdmF0ZUJyYW5kU3RhdHVzOjpmaWx0ZXIpOgorICAgICAgICAoSlNDOjpTZXRQcml2YXRl
QnJhbmRTdGF0dXM6OnNpbmdsZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpTZXRQ
cml2YXRlQnJhbmRTdGF0dXM6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKEpTQzo6U2V0UHJp
dmF0ZUJyYW5kU3RhdHVzOjptYXJrSWZDaGVhcCk6CisgICAgICAgIChKU0M6OlNldFByaXZhdGVC
cmFuZFN0YXR1czo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpTZXRQcml2YXRlQnJhbmRTdGF0
dXM6OmR1bXAgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1NldFByaXZhdGVCcmFuZFN0YXR1
cy5oOiBBZGRlZC4KKyAgICAgICAgKiBieXRlY29kZS9TZXRQcml2YXRlQnJhbmRWYXJpYW50LmNw
cDogQWRkZWQuCisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFZhcmlhbnQ6OlNldFByaXZh
dGVCcmFuZFZhcmlhbnQpOgorICAgICAgICAoSlNDOjpTZXRQcml2YXRlQnJhbmRWYXJpYW50Ojp+
U2V0UHJpdmF0ZUJyYW5kVmFyaWFudCk6CisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFZh
cmlhbnQ6OmF0dGVtcHRUb01lcmdlKToKKyAgICAgICAgKEpTQzo6U2V0UHJpdmF0ZUJyYW5kVmFy
aWFudDo6bWFya0lmQ2hlYXApOgorICAgICAgICAoSlNDOjpTZXRQcml2YXRlQnJhbmRWYXJpYW50
OjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFZhcmlhbnQ6OnZpc2l0
QWdncmVnYXRlKToKKyAgICAgICAgKEpTQzo6U2V0UHJpdmF0ZUJyYW5kVmFyaWFudDo6ZHVtcCBj
b25zdCk6CisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFZhcmlhbnQ6OmR1bXBJbkNvbnRl
eHQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1NldFByaXZhdGVCcmFuZFZhcmlhbnQuaDog
QWRkZWQuCisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFZhcmlhbnQ6Om9sZFN0cnVjdHVy
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFZhcmlhbnQ6Om5ld1N0cnVj
dHVyZSBjb25zdCk6CisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFZhcmlhbnQ6OmlkZW50
aWZpZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpTZXRQcml2YXRlQnJhbmRWYXJpYW50OjpvdmVy
bGFwcyk6CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6cmVzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0
cnVjdHVyZVN0dWJJbmZvLmg6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
Y3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2sp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OlVubGlua2VkQ29kZUJsb2NrOjpwcml2YXRlQnJhbmRSZXF1aXJlbWVudCBjb25zdCk6CisgICAg
ICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpT
Qzo6VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6OnByaXZhdGVCcmFuZFJlcXVpcmVtZW50IGNv
bnN0KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHA6
CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayk6CisgICAg
ICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUu
aDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorCisgICAgICAg
IFdlIGNoYW5nZWQgQnl0ZWNvZGVHZW5lcmF0b3IgZm9yIEZ1bmN0aW9uTm9kZSBhbmQgRXZhbE5v
ZGUgdG8KKyAgICAgICAgcHJvcGFnYXRlIHBhcmVudFNjb3BlIFZhcmlhYmxlRW52aXJvbm1lbnQu
IFRoZXNlIGVudmlyb25tZW50cyBzdG9yZXMKKyAgICAgICAgcHJpdmF0ZSBuYW1lIGVudHJpZXMg
dGhhdCBhcmUgdmlzaWJsZSBpbnRvIHRoZSBzY29wZSBvZiB0aGUKKyAgICAgICAgZnVuY3Rpb24v
ZXZhbCBpbiBhZGRpdGlvbiB0byBURFogdmFyaWFibGVzLgorICAgICAgICBUaGlzIGlzIHJlcXVp
cmVkIHRvIGlkZW50aWZ5IHRoZSBraW5kIG9mIGFjY2VzcyBhIHByaXZhdGUgbmFtZSBpcworICAg
ICAgICByZWZlcnJpbmcgdG8sIHNpbmNlIGl0IGNhbiBiZSBhIHByaXZhdGUgZmllbGQgb3IgYSBw
cml2YXRlIG1ldGhvZC4KKyAgICAgICAgR2l2ZW4gdGhpcyBjaGFuZ2UsIHdlIGNoYW5nZWQgdGhl
IG5hbWUgb2YgVmFyaWFibGVFbnZpcm9ubWVudAorICAgICAgICBmcm9tIGBwYXJlbnRTY29wZVRE
WlZhcmlhYmxlc2AgdG8gYHBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudGAuCisKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Omluc3RhbnRpYXRlTGV4aWNhbFZhcmlhYmxlcyk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0UHJpdmF0ZU5hbWUpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZVByaXZhdGVCcmFuZCk6
CisKKyAgICAgICAgVGhlIHByb2Nlc3MgdG8gY3JlYXRlIGEgcHJpdmF0ZSBicmFuZCBpcyBhcyBm
b2xsb3dzOgorICAgICAgICAgICAgMS4gQ3JlYXRlIGEgUHJpdmF0ZVN5bWJvbCB1c2luZyBgQGNy
ZWF0ZVByaXZhdGVTeW1ib2xgLgorICAgICAgICAgICAgMi4gU3RvcmUgdGhpcyBzeW1ib2wgaW50
byBhIGdpdmVuIHNjb3BlIChpLmUgY2xhc3MgbGV4aWNhbCBzY29wZSkKKyAgICAgICAgICAgICAg
IG9uIGBAcHJpdmF0ZUJyYW5kYCB2YXJpYWJsZS4KKworICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEluc3RhbGxQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEdldFByaXZhdGVCcmFuZCk6CisKKyAgICAgICAgV2UgYWRkZWQgYG1f
cHJpdmF0ZU5hbWVzU3RhY2tgIHRvIEJ5dGVjb2RlR2VuZXJhdG9yIHRvIHJlcHJlc2VudCB0aGUK
KyAgICAgICAgc2NvcGUgY2hhaW4gb2YgYXZhaWxhYmxlIHByaXZhdGUgbmFtZXMgd2hpbGUgZ2Vu
ZXJhdGluZyBieXRlY29kZS4KKworICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dENoZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Omlz
UHJpdmF0ZU1ldGhvZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoUHJp
dmF0ZUFjY2Vzc05hbWVzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnBvcFBy
aXZhdGVBY2Nlc3NOYW1lcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZXRB
dmFpbGFibGVQcml2YXRlQWNjZXNzTmFtZXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0TmV3Q2xhc3NGaWVsZEluaXRpYWxpemVyRnVuY3Rpb24pOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdEdldEJ5VmFsKTogRGVsZXRlZC4K
KyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnByaXZhdGVCcmFuZFJlcXVpcmVtZW50IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6Om1ha2VGdW5jdGlvbik6CisKKyAgICAgICAgVGhpcyBjaGFuZ2Ug
aXMgcmVxdWlyZWQgdG8gcHJvcGVybHkgcHJvcGFnYXRlIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50
CisgICAgICAgIHRvIGFycm93IGZ1bmN0aW9ucyB0aGF0IGNhbiBwb3RlbnRpYWxseSBjYWxsIGBz
dXBlcigpYC4KKworICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAg
ICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjplbWl0RGVjbGFyZVByaXZhdGVGaWVsZE5hbWVz
KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkpOgorICAg
ICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6ZW1pdEdldFByb3BlcnR5VmFsdWUpOgorCisgICAgICAg
IEFkZGluZyBzdXBwb3J0IHRvIHByb3Blcmx5IGFjY2VzcyBwcml2YXRlIG1ldGhvZC4gU2luY2Ug
d2Ugc3RvcmUKKyAgICAgICAgcHJpdmF0ZSBtZXRob2RzIG9uIGNsYXNzIGxleGljYWwgc2NvcGUs
IHdlIG5lZWQgYSBkaWZmZXJlbnQgc2V0IG9mCisgICAgICAgIGluc3RydWN0aW9ucyB0byBhY2Nl
c3MgYSBwcml2YXRlIG1ldGhvZC4KKworICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6ZW1pdFB1
dFByb3BlcnR5KToKKworICAgICAgICBJbiB0aGUgY2FzZSBvZiB3ZSB0cnlpbmcgdG8gd3JpdGUg
aW4gYSBwcml2YXRlIG1ldGhvZCwgd2UgbmVlZCB0bworICAgICAgICB0aHJvdyBhIFR5cGVFcnJv
ciBhY2NvcmRpbmcgdG8gc3BlY2lmaWNhdGlvbgorICAgICAgICAoaHR0cHM6Ly90YzM5LmVzL3By
b3Bvc2FsLXByaXZhdGUtbWV0aG9kcy8jc2VjLXByaXZhdGVmaWVsZHNldCkuCisKKyAgICAgICAg
KEpTQzo6RnVuY3Rpb25DYWxsVmFsdWVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpQb3N0Zml4Tm9kZTo6ZW1pdERvdCk6CisgICAgICAgIChKU0M6OlByZWZpeE5vZGU6OmVtaXRE
b3QpOgorICAgICAgICAoSlNDOjpDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAg
ICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdn
ZXJDYWxsRnJhbWU6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKiBkZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAg
ICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpm
aWx0ZXJJQ1N0YXR1cyk6CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhh
c2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdD
YXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6Cisg
ICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVy
aXplKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OmNsb2JiZXJzRXhpdFN0YXRlKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBo
YXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAg
ICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmspOgorICAgICAgICAqIGRmZy9E
RkdKSVRDb21waWxlci5oOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjphZGRQcml2
YXRlQnJhbmRBY2Nlc3MpOgorICAgICAgICAqIGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAgICAg
KiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0NoZWNrUHJpdmF0
ZUJyYW5kU3RhdHVzKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjaGVja1ByaXZhdGVCcmFu
ZFN0YXR1cyk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzU2V0UHJpdmF0ZUJyYW5kU3Rh
dHVzKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzZXRQcml2YXRlQnJhbmRTdGF0dXMpOgor
ICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPYmplY3RBbGxv
Y2F0aW9uU2lua2luZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNo
ZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVNldFByaXZhdGVCcmFuZCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHA6Cisg
ICAgICAgICogZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwOgorICAgICAgICAqIGZ0
bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgor
ICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVQcml2YXRlQnJhbmRBY2Nlc3MpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlU2V0UHJpdmF0ZUJyYW5kKToK
KyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmV2
YWwpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVD
b21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nh
c2VzKToKKyAgICAgICAgKEpTQzo6SklUOjpsaW5rKToKKyAgICAgICAgKiBqaXQvSklULmg6Cisg
ICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5l
cmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5l
cmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Iu
aDoKKyAgICAgICAgKEpTQzo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpKSVRQcml2
YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQcml2YXRlQnJhbmRB
Y2Nlc3NHZW5lcmF0b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6CisgICAgICAgICogaml0L0pJVE9w
ZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgor
ICAgICAgICAoSlNDOjpnZXRQcml2YXRlTmFtZSk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlv
bnMuaDoKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2NoZWNrX3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2No
ZWNrX3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5kKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9zZXRfcHJpdmF0ZV9icmFuZCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9jaGVja19wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0U2xvd19vcF9jaGVja19wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKiBqaXQvUmVw
YXRjaC5jcHA6CisgICAgICAgIChKU0M6OnRyeUNhY2hlQ2hlY2tQcml2YXRlQnJhbmQpOgorICAg
ICAgICAoSlNDOjpyZXBhdGNoQ2hlY2tQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjp0cnlD
YWNoZVNldFByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OnJlcGF0Y2hTZXRQcml2YXRlQnJh
bmQpOgorICAgICAgICAoSlNDOjpyZXNldENoZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpT
Qzo6cmVzZXRTZXRQcml2YXRlQnJhbmQpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmg6CisgICAg
ICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJ
TlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmg6Cisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBs
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5j
cHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpGdW5jdGlvbk1ldGFkYXRh
Tm9kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OkJhc2VEb3RO
b2RlOjppc1ByaXZhdGVNZW1iZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6
aXNQcml2YXRlRmllbGQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9QYXJzZXIu
Y3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlc3Npb24pOgorICAg
ICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OmRlY2xhcmVQcml2
YXRlTWV0aG9kKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OmRlY2xhcmVQcml2YXRlRmllbGQpOgor
ICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UpOgorICAgICAgICAoSlNDOjpw
YXJzZSk6CisgICAgICAgIChKU0M6OlNjb3BlOjpkZWNsYXJlUHJpdmF0ZU5hbWUpOiBEZWxldGVk
LgorICAgICAgICAqIHBhcnNlci9QYXJzZXJNb2Rlcy5oOgorICAgICAgICAqIHBhcnNlci9TeW50
YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZURvdEFjY2Vz
cyk6CisgICAgICAgICogcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwOgorICAgICAgICAo
SlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZU1ldGhvZCk6CisgICAgICAg
ICogcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKEpTQzo6VmFyaWFibGVF
bnZpcm9ubWVudEVudHJ5Ojppc1ByaXZhdGVGaWVsZCBjb25zdCk6CisgICAgICAgIChKU0M6OlZh
cmlhYmxlRW52aXJvbm1lbnRFbnRyeTo6aXNQcml2YXRlTWV0aG9kIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5OjpzZXRJc1ByaXZhdGVGaWVsZCk6CisgICAg
ICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeTo6c2V0SXNQcml2YXRlTWV0aG9kKToK
KyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6aXNNZXRob2QgY29uc3QpOgorICAgICAg
ICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5Ojppc1ByaXZhdGVNZXRob2RPckFjZXNzb3IgY29uc3Qp
OgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjphZGRQcml2YXRlTmFtZSk6Cisg
ICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlRmllbGQpOgor
ICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZU1ldGhvZCk6
CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OnByaXZhdGVOYW1lRW52aXJvbm1l
bnQgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpoYXNQcml2YXRl
TWV0aG9kT3JBY2Nlc3NvciBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1l
bnQ6OmFkZFByaXZhdGVOYW1lc0Zyb20pOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25t
ZW50RW50cnk6OmlzUHJpdmF0ZU5hbWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpW
YXJpYWJsZUVudmlyb25tZW50RW50cnk6OnNldElzUHJpdmF0ZU5hbWUpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZU5hbWUpOiBEZWxl
dGVkLgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAgICAoSlNDOjpD
YWNoZWRDb2RlQmxvY2tSYXJlRGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ29k
ZUJsb2NrUmFyZURhdGE6OmRlY29kZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZEZ1bmN0
aW9uRXhlY3V0YWJsZVJhcmVEYXRhOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRGdW5j
dGlvbkV4ZWN1dGFibGVSYXJlRGF0YTo6ZGVjb2RlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2Fj
aGVkRnVuY3Rpb25FeGVjdXRhYmxlOjpwcml2YXRlQnJhbmRSZXF1aXJlbWVudCBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkNhY2hlZENvZGVCbG9jazo6ZGVyaXZlZENvbnRleHRUeXBlIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6Q2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlOjplbmNvZGUpOgorICAgICAg
ICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRDb2RlQmxvY2s6Om5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5j
cHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsKToKKyAgICAg
ICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtlZENvZGVCbG9jayk6CisgICAgICAgIChKU0M6OmdlbmVy
YXRlVW5saW5rZWRDb2RlQmxvY2tGb3JEaXJlY3RFdmFsKToKKyAgICAgICAgKEpTQzo6Q29kZUNh
Y2hlOjpnZXRVbmxpbmtlZEdsb2JhbEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgICogcnVu
dGltZS9Db2RlQ2FjaGUuaDoKKyAgICAgICAgKiBydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxl
LmNwcDoKKyAgICAgICAgKEpTQzo6RGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OkRpcmVjdEV2YWxFeGVjdXRhYmxlOjpEaXJlY3RFdmFsRXhlY3V0YWJsZSk6Cisg
ICAgICAgICogcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRp
bWUvRXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6RXZh
bEV4ZWN1dGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaDoKKyAgICAg
ICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OmV4ZWN1dGFibGVJbmZvIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6RXZhbEV4ZWN1dGFibGU6OnByaXZhdGVCcmFuZFJlcXVpcmVtZW50IGNvbnN0KToKKyAg
ICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpjcmVh
dGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcik6CisgICAgICAgICogcnVudGltZS9JbmRpcmVjdEV2
YWxFeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6SW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6
SW5kaXJlY3RFdmFsRXhlY3V0YWJsZSk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpjaGVja1ByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRQcml2
YXRlQnJhbmQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5jcHA6CisgICAgICAgIChKU0M6
OkpTU2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFopOgorICAgICAgICAqIHJ1
bnRpbWUvSlNTY29wZS5oOgorICAgICAgICAqIHJ1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGUuaDoKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpPcHRp
b25zOjpyZWNvbXB1dGVEZXBlbmRlbnRPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1lL09wdGlv
bnNMaXN0Lmg6CisgICAgICAgICogcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oOgorICAgICAg
ICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjptYXRl
cmlhbGl6ZVByb3BlcnR5VGFibGUpOgorICAgICAgICAoSlNDOjpCcmFuZGVkU3RydWN0dXJlOjpC
cmFuZGVkU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6QnJhbmRlZFN0cnVjdHVyZTo6Y3JlYXRl
KToKKyAgICAgICAgKEpTQzo6QnJhbmRlZFN0cnVjdHVyZTo6Y2hlY2tCcmFuZCk6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6c2V0QnJhbmRUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJl
SW1wbCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6c2V0QnJhbmRUcmFuc2l0aW9uRnJvbUV4
aXN0aW5nU3RydWN0dXJlQ29uY3VycmVudGx5KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpz
ZXRCcmFuZFRyYW5zaXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUv
U3RydWN0dXJlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Zm9yRWFjaFByb3BlcnR5Q29uY3VycmVudGx5KToKKyAg
ICAgICAgKiBydW50aW1lL1N0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oOgorICAgICAgICAqIHJ1
bnRpbWUvU3ltYm9sVGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZTo6Y2xvbmVT
Y29wZVBhcnQpOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuaDoKKyAgICAgICAgKiBy
dW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1l
L1ZNLmg6CisKIDIwMjEtMDEtMjggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4K
IAogICAgICAgICBbSlNDXSBBZGQgSlNQcm9taXNlOjpyZWplY3RlZFByb21pc2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBhNjRhMzY1NDJhZWY5NWExMDk4M2FmOGQ5OTRh
ZWViZTNmZGJkYWUxLi42Y2RkMmMxNjIzYWM2Y2FkYWUzYWUyNGIwNmMxNjQwZTllNzJmZTg5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01MzgsNiArNTM4LDggQEAgc2V0
KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBieXRlY29kZS9D
YWxsTGlua0luZm8uaAogICAgIGJ5dGVjb2RlL0NhbGxNb2RlLmgKICAgICBieXRlY29kZS9DYWxs
VmFyaWFudC5oCisgICAgYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuaAorICAgIGJ5
dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudC5oCiAgICAgYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgKICAgICBieXRlY29kZS9Db2RlQmxvY2tIYXNoLmgKICAgICBieXRlY29kZS9Db2RlT3JpZ2lu
LmgKQEAgLTU3Myw2ICs1NzUsOCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdP
UktfSEVBREVSUwogICAgIGJ5dGVjb2RlL09wZXJhbmRzLmgKICAgICBieXRlY29kZS9Qcm9wZXJ0
eUNvbmRpdGlvbi5oCiAgICAgYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmgKKyAgICBieXRlY29kZS9T
ZXRQcml2YXRlQnJhbmRTdGF0dXMuaAorICAgIGJ5dGVjb2RlL1NldFByaXZhdGVCcmFuZFZhcmlh
bnQuaAogICAgIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKICAgICBieXRlY29kZS9TdHJ1Y3R1
cmVTZXQuaAogICAgIGJ5dGVjb2RlL1N1cGVyU2FtcGxlci5oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDgzZGU3OWI4NDFmOWIxZmEzOTUzNzI1ZDI1ZTIxMTk1YjBkMDA0NTguLjRk
NmU4MTk0Yzk2NjljODY0ODMwOTdhMWNjZWRlMjJiOGYwZjJkZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xMjQzLDkgKzEyNDMsMTMgQEAKIAkJODYxNThBQjMxNTVDOEI0MDAw
QjQ1QzlDIC8qIFByb3BlcnR5TmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODYxNThBQjIxNTVDOEIzRjAwQjQ1QzlDIC8qIFByb3BlcnR5TmFtZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2MTgx
Njc3MUZCNzkyNDIwMEVDQzRFQyAvKiBCaWdJbnRPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MTgxNjc2MUZCNzkyMkYwMEVDQzRFQyAvKiBC
aWdJbnRPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk4NjI1NTNEMjE2MTM2RTFBMDA5RjE3RDAgLyogSlNQcm94eS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYyNTUzQ0YxNjEzNkFBNTAwOUYx
N0QwIC8qIEpTUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk4NjI4MUVGMDI1QjYxNjAwMDAzNjcwMDQgLyogQ2hlY2tQcml2YXRlQnJhbmRW
YXJpYW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NjI4MUVFRjI1QjYxNjAwMDAzNjcwMDQgLyogQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50LmggKi87
IH07CisJCTg2MjgxRUY0MjVCNjFBRjAwMDM2NzAwNCAvKiBDaGVja1ByaXZhdGVCcmFuZFN0YXR1
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYyODFF
RjMyNUI2MUFGMDAwMzY3MDA0IC8qIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmggKi87IH07CiAJ
CTg2M0IyM0UwMEZDNjExODkwMDcwM0FBNCAvKiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2M0IyM0RGMEZDNjBF
NjIwMDcwM0FBNCAvKiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjNGQkM1QTI1QjA5M0I5MDBGNkM5MzAg
LyogV2FzbVZhbHVlTG9jYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2M0ZCQzU4MjVCMDkzQjkwMEY2QzkzMCAvKiBXYXNtVmFsdWVMb2NhdGlv
bi5oICovOyB9OwogCQk4NjVBMzBGMTEzNTAwN0UxMDBDREI0OUUgLyogSlNDSlNWYWx1ZUlubGlu
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NUEz
MEYwMTM1MDA3RTEwMENEQjQ5RSAvKiBKU0NKU1ZhbHVlSW5saW5lcy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2NURBMEM1MjVCODk1NzQwMDg3
NTc3MiAvKiBTZXRQcml2YXRlQnJhbmRWYXJpYW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjVEQTBDNDI1Qjg5NTc0MDA4NzU3NzIgLyogU2V0UHJp
dmF0ZUJyYW5kVmFyaWFudC5oICovOyB9OworCQk4NjVEQTBDODI1Qjg5NjBDMDA4NzU3NzIgLyog
U2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NjVEQTBDNzI1Qjg5NjBDMDA4NzU3NzIgLyogU2V0UHJpdmF0ZUJyYW5k
U3RhdHVzLmggKi87IH07CiAJCTg2NjczOUQyMTNCRkRFNzEwMDIzRDg3QyAvKiBCaWdJbnRlZ2Vy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjY3MzlE
MDEzQkZERTcxMDAyM0Q4N0MgLyogQmlnSW50ZWdlci5oICovOyB9OwogCQk4NjY3MzlEMzEzQkZE
RTcxMDAyM0Q4N0MgLyogVWludDE2V2l0aEZyYWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjY3MzlEMTEzQkZERTcxMDAyM0Q4N0MgLyogVWlu
dDE2V2l0aEZyYWN0aW9uLmggKi87IH07CiAJCTg2NzA0QjQzMTJEQjhBODEwMEE5RkU3QiAvKiBZ
YXJyU3ludGF4Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODY3MDRCNDExMkRCOEE4MTAwQTlGRTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmgg
Ki87IH07CkBAIC00MTQwLDYgKzQxNDQsMTAgQEAKIAkJODYxODE2NzgxRkI3OTMxMzAwRUNDNEVD
IC8qIEJpZ0ludE9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCaWdJbnRPYmplY3QuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjI1NTNDRTE2MTM2QUE1MDA5RjE3RDAg
LyogSlNQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1By
b3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYyNTUzQ0YxNjEzNkFBNTAw
OUYxN0QwIC8qIEpTUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQ
cm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NjI4MUVFRjI1QjYxNjAwMDAz
NjcwMDQgLyogQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENoZWNr
UHJpdmF0ZUJyYW5kVmFyaWFudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NjI4
MUVGMTI1QjYxNjVFMDAzNjcwMDQgLyogQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTg2MjgxRUYzMjVCNjFBRjAwMDM2NzAwNCAvKiBDaGVja1ByaXZh
dGVCcmFuZFN0YXR1cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NjI4MUVGNTI1QjYxQjA2MDAzNjcwMDQg
LyogQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2hlY2tQ
cml2YXRlQnJhbmRTdGF0dXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjNC
MjNERjBGQzYwRTYyMDA3MDNBQTQgLyogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4NjNDNkQ5ODE1MjExMTEyMDA1ODVFNEUgLyogWWFyckNh
bm9uaWNhbGl6ZVVDUzIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
WWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwOyBwYXRoID0geWFyci9ZYXJyQ2Fub25pY2FsaXplVUNT
Mi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2M0M2RDk5MTUyMTExMTIwMDU4
NUU0RSAvKiBZYXJyQ2Fub25pY2FsaXplLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IFlhcnJDYW5vbmljYWxpemUuaDsgcGF0aCA9IHlhcnIvWWFyckNhbm9uaWNhbGl6ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDE1MCw2ICs0MTU4LDEwIEBACiAJCTg2NDA5
MjNCMTU2RUVEM0IwMDU2NkNDMiAvKiBBUk02NFJlZ2lzdGVycy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBUk02NFJlZ2lzdGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4NjQwOTIzQzE1NkVFRDNCMDA1NjZDQjIgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxlckFSTTY0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2NUEzMEYwMTM1MDA3RTEwMENEQjQ5RSAv
KiBKU0NKU1ZhbHVlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0NKU1ZhbHVlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NjVEQTBD
NDI1Qjg5NTc0MDA4NzU3NzIgLyogU2V0UHJpdmF0ZUJyYW5kVmFyaWFudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTZXRQcml2YXRlQnJhbmRWYXJpYW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTg2NURBMEM2MjVCODk1OUUwMDg3NTc3MiAvKiBTZXRQcml2YXRlQnJhbmRWYXJpYW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNldFByaXZhdGVCcmFuZFZhcmlhbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk4NjVEQTBDNzI1Qjg5NjBDMDA4NzU3NzIgLyogU2V0UHJp
dmF0ZUJyYW5kU3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNldFByaXZhdGVCcmFuZFN0YXR1cy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NjVEQTBDOTI1Qjg5NjJBMDA4NzU3NzIg
LyogU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNldFByaXZh
dGVCcmFuZFN0YXR1cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2NjczOUQw
MTNCRkRFNzEwMDIzRDg3QyAvKiBCaWdJbnRlZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEJpZ0ludGVnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY2
NzM5RDExM0JGREU3MTAwMjNEODdDIC8qIFVpbnQxNldpdGhGcmFjdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBVaW50MTZXaXRoRnJhY3Rpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODY3MDRCNDAxMkRCOEE4MTAwQTlGRTdCIC8qIFlhcnJTeW50YXhD
aGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFlhcnJTeW50
YXhDaGVja2VyLmNwcDsgcGF0aCA9IHlhcnIvWWFyclN5bnRheENoZWNrZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtODQwOSw2ICs4NDIxLDEwIEBACiAJCQkJNjI3NjczMjIx
QjY4MEMxRTAwRkQ5RjJFIC8qIENhbGxNb2RlLmggKi8sCiAJCQkJMEYzQjdFMjQxOUExMUI4MDAw
RDlCQzU2IC8qIENhbGxWYXJpYW50LmNwcCAqLywKIAkJCQkwRjNCN0UyNTE5QTExQjgwMDBEOUJD
NTYgLyogQ2FsbFZhcmlhbnQuaCAqLywKKwkJCQk4NjI4MUVGNTI1QjYxQjA2MDAzNjcwMDQgLyog
Q2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuY3BwICovLAorCQkJCTg2MjgxRUYzMjVCNjFBRjAwMDM2
NzAwNCAvKiBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5oICovLAorCQkJCTg2MjgxRUYxMjVCNjE2
NUUwMDM2NzAwNCAvKiBDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQuY3BwICovLAorCQkJCTg2Mjgx
RUVGMjVCNjE2MDAwMDM2NzAwNCAvKiBDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQuaCAqLywKIAkJ
CQk5NjlBMDc5MDBFRDFEM0FFMDBGMUY2ODEgLyogQ29kZUJsb2NrLmNwcCAqLywKIAkJCQk5NjlB
MDc5MTBFRDFEM0FFMDBGMUY2ODEgLyogQ29kZUJsb2NrLmggKi8sCiAJCQkJMEY4Rjk0M0QxNjY3
NjMyRDAwRDYxOTcxIC8qIENvZGVCbG9ja0hhc2guY3BwICovLApAQCAtODU0Myw2ICs4NTU5LDEw
IEBACiAJCQkJMEY0NEE3QUEyMEJGNjg1RTAwMjJCMTcxIC8qIFJlY29yZGVkU3RhdHVzZXMuaCAq
LywKIAkJCQkwRkY2MEFCRjE2NzQwRjgxMDAwMjk3NzkgLyogUmVkdWNlV2hpdGVzcGFjZS5jcHAg
Ki8sCiAJCQkJMEZGNjBBQzAxNjc0MEY4MTAwMDI5Nzc5IC8qIFJlZHVjZVdoaXRlc3BhY2UuaCAq
LywKKwkJCQk4NjVEQTBDOTI1Qjg5NjJBMDA4NzU3NzIgLyogU2V0UHJpdmF0ZUJyYW5kU3RhdHVz
LmNwcCAqLywKKwkJCQk4NjVEQTBDNzI1Qjg5NjBDMDA4NzU3NzIgLyogU2V0UHJpdmF0ZUJyYW5k
U3RhdHVzLmggKi8sCisJCQkJODY1REEwQzYyNUI4OTU5RTAwODc1NzcyIC8qIFNldFByaXZhdGVC
cmFuZFZhcmlhbnQuY3BwICovLAorCQkJCTg2NURBMEM0MjVCODk1NzQwMDg3NTc3MiAvKiBTZXRQ
cml2YXRlQnJhbmRWYXJpYW50LmggKi8sCiAJCQkJMEZEODJFODQxNDFGM0ZEQTAwMTc5Qzk0IC8q
IFNwZWN1bGF0ZWRUeXBlLmNwcCAqLywKIAkJCQkwRkQ4MkU0RjE0MURBRUExMDAxNzlDOTQgLyog
U3BlY3VsYXRlZFR5cGUuaCAqLywKIAkJCQkwRkI0MzhBMjE5MjcwQjFEMDBFMUZCQzkgLyogU3Ry
dWN0dXJlU2V0LmNwcCAqLywKQEAgLTkzMzEsNiArOTM1MSw4IEBACiAJCQkJRkVDMTYwMzIyMzM5
RTlGOTAwQTA0Q0I4IC8qIENlbGxTaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjFDM0REQTFC
QkNFMDlFMDBFNTIzRTQgLyogQ2VsbFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MzM4RTJB
NzIzOTZFRkZCMDBDNjFCQUQgLyogQ2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTg2MjgxRUY0MjVCNjFBRjAwMDM2NzAwNCAvKiBDaGVja1ByaXZhdGVCcmFu
ZFN0YXR1cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJODYyODFFRjAyNUI2MTYwMDAwMzY3MDA0IC8q
IENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2QUFBRTUw
RTFGNDI2NTAwQUQ4N0Q4IC8qIENsYXNzSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUw
MjYxQUE5MDk1NjAwRDMzQjMzIC8qIENsb25lZEFyZ3VtZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMxOEM0NUUwRTE2RjVDRDAwQjM0NDYwIC8qIENMb29wU3RhY2suaCBpbiBIZWFkZXJzICov
LApAQCAtMTAzODIsNiArMTA0MDQsOCBAQAogCQkJCUE1NENGMkY2MTg0RUFCMjQwMDIzN0YxOSAv
KiBTY3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyOTlEQTYxN0QxMjg1ODAwNUY1
RkY5IC8qIFNldENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzkwREQ2RTE4MkY0
OTk3MDA1ODg4MDcgLyogU2V0SXRlcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTg2NURBMEM4MjVCODk2MEMwMDg3NTc3MiAvKiBTZXRQcml2YXRlQnJhbmRTdGF0dXMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTg2NURBMEM1MjVCODk1NzQwMDg3NTc3MiAvKiBTZXRQcml2YXRlQnJh
bmRWYXJpYW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzI5OURBMjE3RDEyODQ4MDA1RjVGRjkg
LyogU2V0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVFOTg0MTFBODg2NUI3MDA3
NTRFOTMgLyogU2V0dXBWYXJhcmdzRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCURDMTdFODE4
MUM5QzkxRDkwMDhBNkFCMyAvKiBTaGFkb3dDaGlja2VuLmggaW4gSGVhZGVycyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCAxN2MzOTcwNWQyOWY2Zjg5NTMzNmQ3YmYxNzU2NThk
Yzc0NDFmODkxLi42YTliMzFjMTY4YjQwNjE3OGJjMDg4NmE5ZDYyMDAxZjVhZmFlM2M1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0yMTEsNiArMjExLDggQEAgYnl0ZWNvZGUvQ2Fs
bExpbmtJbmZvLmNwcAogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCiBieXRlY29kZS9DYWxs
TW9kZS5jcHAKIGJ5dGVjb2RlL0NhbGxWYXJpYW50LmNwcAorYnl0ZWNvZGUvQ2hlY2tQcml2YXRl
QnJhbmRTdGF0dXMuY3BwCitieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQuY3BwCiBi
eXRlY29kZS9Db2RlQmxvY2suY3BwCiBieXRlY29kZS9Db2RlQmxvY2tIYXNoLmNwcAogYnl0ZWNv
ZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcApAQCAtMjcxLDYgKzI3Myw4IEBA
IGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCiBieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAK
IGJ5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCiBieXRlY29kZS9SZWR1Y2VXaGl0ZXNwYWNl
LmNwcAorYnl0ZWNvZGUvU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmNwcAorYnl0ZWNvZGUvU2V0UHJp
dmF0ZUJyYW5kVmFyaWFudC5jcHAKIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAogYnl0ZWNv
ZGUvU3RydWN0dXJlU2V0LmNwcAogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hw
b2ludC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWls
dGluRXhlY3V0YWJsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5FeGVjdXRhYmxlcy5jcHAKaW5kZXggMWEyMTQ5MmE2NTFlMTBlMGQ4NzNmYTRkOWJkZTEyOTE2
YWI5YWI0OS4uNjY0MTdjNDEzMjFkMjQ3OWI1Njg4OGZhYWZhZGRhOWNjZDljM2VjMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxl
cy5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgU291cmNlQ29kZSBCdWlsdGluRXhlY3V0YWJsZXM6OmRl
ZmF1bHRDb25zdHJ1Y3RvclNvdXJjZUNvZGUoQ29uc3RydWN0b3JLaW5kIGNvbnMKICAgICByZXR1
cm4gU291cmNlQ29kZSgpOwogfQogCi1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRp
bkV4ZWN1dGFibGVzOjpjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoQ29uc3RydWN0b3JLaW5kIGNv
bnN0cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpCitVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoQ29u
c3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZh
dGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KQogewogICAgIHN3aXRj
aCAoY29uc3RydWN0b3JLaW5kKSB7CiAgICAgY2FzZSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU6CkBA
IC02Nyw3ICs2Nyw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0
YWJsZXM6OmNyZWF0ZURlZmF1bHRDb25zdHJ1Y3RvcihDb25zdHJ1CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQ29uc3RydWN0b3JLaW5kOjpCYXNlOgogICAgIGNhc2UgQ29uc3RydWN0b3JLaW5k
OjpFeHRlbmRzOgotICAgICAgICByZXR1cm4gY3JlYXRlRXhlY3V0YWJsZShtX3ZtLCBkZWZhdWx0
Q29uc3RydWN0b3JTb3VyY2VDb2RlKGNvbnN0cnVjdG9yS2luZCksIG5hbWUsIGNvbnN0cnVjdG9y
S2luZCwgQ29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0LCBuZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplcik7CisgICAgICAgIHJldHVybiBjcmVhdGVFeGVjdXRhYmxlKG1fdm0sIGRlZmF1bHRD
b25zdHJ1Y3RvclNvdXJjZUNvZGUoY29uc3RydWN0b3JLaW5kKSwgbmFtZSwgY29uc3RydWN0b3JL
aW5kLCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3QsIG5lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyLCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7CiAgICAgfQogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwpAQCAtNzgsNyArNzgsNyBAQCBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGluRXhl
Y3V0YWJsZShjb25zdCBTbwogICAgIHJldHVybiBjcmVhdGVFeGVjdXRhYmxlKG1fdm0sIGNvZGUs
IG5hbWUsIGNvbnN0cnVjdG9yS2luZCwgY29uc3RydWN0QWJpbGl0eSwgTmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXI6Ok5vKTsKIH0KIAotVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0
aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVj
dG9yS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBOZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcikKK1VubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUoVk0mIHZt
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIENvbnN0
cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJp
bGl0eSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KQogewog
ICAgIC8vIEZJWE1FOiBDYW4gd2UganVzdCBtYWtlIE1ldGFEYXRhIGNvbXB1dGF0aW9uIGJlIGNv
bnN0ZXhwciBhbmQgaGF2ZSB0aGUgY29tcGlsZXIgZG8gdGhpcyBmb3IgdXM/CiAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzI3MgpAQCAtMjUxLDcgKzI1
MSw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNy
ZWF0ZUV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSh2bSwgc291cmNlLCAmbWV0YWRhdGEsIGtpbmQsIGNv
bnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgbnVsbHB0ciwgRGVy
aXZlZENvbnRleHRUeXBlOjpOb25lLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgaXNCdWls
dGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3Jl
YXRlKHZtLCBzb3VyY2UsICZtZXRhZGF0YSwga2luZCwgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJz
ZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBudWxscHRyLCBXVEY6Om51bGxvcHQsIERlcml2ZWRDb250
ZXh0VHlwZTo6Tm9uZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFuZFJl
cXVpcmVtZW50LCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3Rvcik7CiAgICAgcmV0dXJu
IGZ1bmN0aW9uRXhlY3V0YWJsZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCmluZGV4IDQ1MTYzOGU4NzNmNzk2YzhjNGQy
NjI5YzdiNWFhZmJmYWViMjRiOTguLjQzZTM4Mjc1YjFiOWFhMzYxNjdhMmFlOTFkMzU4Nzg2MDM4
MDc4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGlu
RXhlY3V0YWJsZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bkV4ZWN1dGFibGVzLmgKQEAgLTU4LDkgKzU4LDkgQEAgU291cmNlQ29kZSBuYW1lIyNTb3VyY2Uo
KTsKICN1bmRlZiBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUwogCiAgICAgc3RhdGljIFNvdXJj
ZUNvZGUgZGVmYXVsdENvbnN0cnVjdG9yU291cmNlQ29kZShDb25zdHJ1Y3RvcktpbmQpOwotICAg
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoQ29u
c3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplcik7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZURlZmF1bHRD
b25zdHJ1Y3RvcihDb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7CiAKLSAgICBz
dGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUV4ZWN1dGFibGUoVk0mLCBj
b25zdCBTb3VyY2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYsIENvbnN0cnVjdG9yS2luZCwgQ29u
c3RydWN0QWJpbGl0eSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpOworICAgIHN0YXRpYyBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlRXhlY3V0YWJsZShWTSYsIGNvbnN0IFNv
dXJjZUNvZGUmLCBjb25zdCBJZGVudGlmaWVyJiwgQ29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RB
YmlsaXR5LCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQgPSBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZSk7CiAKICAgICB2b2lkIGZpbmFsaXpl
VW5jb25kaXRpb25hbGx5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9C
dWlsdGluTmFtZXMuaAppbmRleCA0NGM2YjIzNWVmZWNkMzUwNDZjNzFmN2FiZTlkMmIzZjc1ZDM5
ZjkxLi5lYjE2MTA0ZTEyZGQxMGQ4OTYwNTJkZmVhMzA5NTM0ZjM1MjU4M2M3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCkBAIC0xNzIsNiArMTcy
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8od2ViQXNzZW1ibHlDb21waWxlU3RyZWFt
aW5nSW50ZXJuYWwpIFwKICAgICBtYWNybyh3ZWJBc3NlbWJseUluc3RhbnRpYXRlU3RyZWFtaW5n
SW50ZXJuYWwpIFwKICAgICBtYWNybyhpbnN0YW5jZUZpZWxkSW5pdGlhbGl6ZXIpIFwKKyAgICBt
YWNybyhwcml2YXRlQnJhbmQpIFwKICAgICBtYWNybyhoYXNPd25Qcm9wZXJ0eUZ1bmN0aW9uKSBc
CiAgICAgbWFjcm8oY3JlYXRlUHJpdmF0ZVN5bWJvbCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmluZGV4IDYyNWU4NTcyYmM4NWU5YzM4YmYxYjVh
YWNlOThjZmVhOGQ2NTZlNDkuLjNlYmEzMTg3MjhiYjM0ZmRkMTllMDBjOGIzZjYzYzNlZDFkODhh
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAK
QEAgLTEzMyw2ICsxMzMsMTggQEAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nh
c2U6OmNyZWF0ZURlbGV0ZSgKICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
KG5ldyBBY2Nlc3NDYXNlKHZtLCBvd25lciwgRGVsZXRlLCBpZGVudGlmaWVyLCBvZmZzZXQsIG5l
d1N0cnVjdHVyZSwgeyB9LCB7IH0pKTsKIH0KIAorc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IEFjY2Vzc0Nhc2U6OmNyZWF0ZUNoZWNrUHJpdmF0ZUJyYW5kKFZNJiB2bSwgSlNDZWxsKiBvd25l
ciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
K3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBBY2Nlc3NDYXNl
KHZtLCBvd25lciwgQ2hlY2tQcml2YXRlQnJhbmQsIGlkZW50aWZpZXIsIGludmFsaWRPZmZzZXQs
IHN0cnVjdHVyZSwgeyB9LCB7IH0pKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IEFjY2Vzc0Nhc2U6OmNyZWF0ZVNldFByaXZhdGVCcmFuZCgKKyAgICBWTSYgdm0sIEpTQ2VsbCog
b3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgU3RydWN0dXJlKiBvbGRTdHJ1
Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG9s
ZFN0cnVjdHVyZSA9PSBuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7CisgICAgcmV0dXJuIHN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIFNldFBy
aXZhdGVCcmFuZCwgaWRlbnRpZmllciwgaW52YWxpZE9mZnNldCwgbmV3U3RydWN0dXJlLCB7IH0s
IHsgfSkpOworfQorCiBBY2Nlc3NDYXNlOjp+QWNjZXNzQ2FzZSgpCiB7CiB9CkBAIC0yODgsNiAr
MzAwLDggQEAgYm9vbCBBY2Nlc3NDYXNlOjpyZXF1aXJlc0lkZW50aWZpZXJOYW1lTWF0Y2goKSBj
b25zdAogICAgIGNhc2UgRGlyZWN0QXJndW1lbnRzTGVuZ3RoOgogICAgIGNhc2UgU2NvcGVkQXJn
dW1lbnRzTGVuZ3RoOgogICAgIGNhc2UgTW9kdWxlTmFtZXNwYWNlTG9hZDoKKyAgICBjYXNlIENo
ZWNrUHJpdmF0ZUJyYW5kOgorICAgIGNhc2UgU2V0UHJpdmF0ZUJyYW5kOgogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICBjYXNlIEluc3RhbmNlT2ZIaXQ6CiAgICAgY2FzZSBJbnN0YW5jZU9mTWlz
czoKQEAgLTM0MSw2ICszNTUsOCBAQCBib29sIEFjY2Vzc0Nhc2U6OnJlcXVpcmVzSW50MzJQcm9w
ZXJ0eUNoZWNrKCkgY29uc3QKICAgICBjYXNlIEluc3RhbmNlT2ZIaXQ6CiAgICAgY2FzZSBJbnN0
YW5jZU9mTWlzczoKICAgICBjYXNlIEluc3RhbmNlT2ZHZW5lcmljOgorICAgIGNhc2UgQ2hlY2tQ
cml2YXRlQnJhbmQ6CisgICAgY2FzZSBTZXRQcml2YXRlQnJhbmQ6CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBjYXNlIEluZGV4ZWRJbnQzMkxvYWQ6CiAgICAgY2FzZSBJbmRleGVkRG91Ymxl
TG9hZDoKQEAgLTM4Myw2ICszOTksOCBAQCBib29sIEFjY2Vzc0Nhc2U6Om5lZWRzU2NyYXRjaEZQ
UigpIGNvbnN0CiAgICAgY2FzZSBJbnRyaW5zaWNHZXR0ZXI6CiAgICAgY2FzZSBJbkhpdDoKICAg
ICBjYXNlIEluTWlzczoKKyAgICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5kOgorICAgIGNhc2UgU2V0
UHJpdmF0ZUJyYW5kOgogICAgIGNhc2UgQXJyYXlMZW5ndGg6CiAgICAgY2FzZSBTdHJpbmdMZW5n
dGg6CiAgICAgY2FzZSBEaXJlY3RBcmd1bWVudHNMZW5ndGg6CkBAIC00NzAsNiArNDg4LDggQEAg
dm9pZCBBY2Nlc3NDYXNlOjpmb3JFYWNoRGVwZW5kZW50Q2VsbChWTSYgdm0sIGNvbnN0IEZ1bmN0
b3ImIGZ1bmN0b3IpIGNvbnN0CiAgICAgY2FzZSBHZXRHZXR0ZXI6CiAgICAgY2FzZSBJbkhpdDoK
ICAgICBjYXNlIEluTWlzczoKKyAgICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5kOgorICAgIGNhc2Ug
U2V0UHJpdmF0ZUJyYW5kOgogICAgIGNhc2UgQXJyYXlMZW5ndGg6CiAgICAgY2FzZSBTdHJpbmdM
ZW5ndGg6CiAgICAgY2FzZSBEaXJlY3RBcmd1bWVudHNMZW5ndGg6CkBAIC01MTksNiArNTM5LDgg
QEAgYm9vbCBBY2Nlc3NDYXNlOjpkb2VzQ2FsbHMoVk0mIHZtLCBWZWN0b3I8SlNDZWxsKj4qIGNl
bGxzVG9NYXJrSWZEb2VzQ2FsbHMpIGNvbnMKICAgICBjYXNlIEludHJpbnNpY0dldHRlcjoKICAg
ICBjYXNlIEluSGl0OgogICAgIGNhc2UgSW5NaXNzOgorICAgIGNhc2UgQ2hlY2tQcml2YXRlQnJh
bmQ6CisgICAgY2FzZSBTZXRQcml2YXRlQnJhbmQ6CiAgICAgY2FzZSBBcnJheUxlbmd0aDoKICAg
ICBjYXNlIFN0cmluZ0xlbmd0aDoKICAgICBjYXNlIERpcmVjdEFyZ3VtZW50c0xlbmd0aDoKQEAg
LTY3MCw2ICs2OTIsOCBAQCBib29sIEFjY2Vzc0Nhc2U6OmNhblJlcGxhY2UoY29uc3QgQWNjZXNz
Q2FzZSYgb3RoZXIpIGNvbnN0CiAgICAgY2FzZSBDdXN0b21BY2Nlc3NvclNldHRlcjoKICAgICBj
YXNlIEluSGl0OgogICAgIGNhc2UgSW5NaXNzOgorICAgIGNhc2UgQ2hlY2tQcml2YXRlQnJhbmQ6
CisgICAgY2FzZSBTZXRQcml2YXRlQnJhbmQ6CiAgICAgICAgIGlmIChvdGhlci50eXBlKCkgIT0g
dHlwZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC03MDEsNyArNzI1LDcgQEAg
dm9pZCBBY2Nlc3NDYXNlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAgIG91
dC5wcmludChjb21tYSwgInByb3RvdHlwZSBhY2Nlc3MgY2hhaW4gPSAiKTsKICAgICAgICAgbV9w
b2x5UHJvdG9BY2Nlc3NDaGFpbi0+ZHVtcChzdHJ1Y3R1cmUoKSwgb3V0KTsKICAgICB9IGVsc2Ug
ewotICAgICAgICBpZiAobV90eXBlID09IFRyYW5zaXRpb24gfHwgbV90eXBlID09IERlbGV0ZSkK
KyAgICAgICAgaWYgKG1fdHlwZSA9PSBUcmFuc2l0aW9uIHx8IG1fdHlwZSA9PSBEZWxldGUgfHwg
bV90eXBlID09IFNldFByaXZhdGVCcmFuZCkKICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwg
InN0cnVjdHVyZSA9ICIsIHBvaW50ZXJEdW1wKHN0cnVjdHVyZSgpKSwgIiAtPiAiLCBwb2ludGVy
RHVtcChuZXdTdHJ1Y3R1cmUoKSkpOwogICAgICAgICBlbHNlIGlmIChtX3N0cnVjdHVyZSkKICAg
ICAgICAgICAgIG91dC5wcmludChjb21tYSwgInN0cnVjdHVyZSA9ICIsIHBvaW50ZXJEdW1wKG1f
c3RydWN0dXJlLmdldCgpKSk7CkBAIC0xMzMyLDYgKzEzNTYsMTIgQEAgdm9pZCBBY2Nlc3NDYXNl
OjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgICAgIHN0YXRlLmZhaWxBbmRJZ25vcmUuYXBw
ZW5kKGZhaWxBbmRJZ25vcmUpOwogICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgY2FzZSBD
aGVja1ByaXZhdGVCcmFuZDogeworICAgICAgICBlbWl0RGVmYXVsdEd1YXJkKCk7CisgICAgICAg
IHN0YXRlLnN1Y2NlZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICAgICAgCiAgICAg
ZGVmYXVsdDoKICAgICAgICAgZW1pdERlZmF1bHRHdWFyZCgpOwpAQCAtMjAzNCw2ICsyMDY0LDE5
IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYg
c3RhdGUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBjYXNlIFNldFByaXZhdGVCcmFu
ZDogeworICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0
SGFzQmVlbkludmFsaWRhdGVkKCkpOworICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlKCktPnRy
YW5zaXRpb25LaW5kKCkgPT0gVHJhbnNpdGlvbktpbmQ6OlNldEJyYW5kKTsKKworICAgICAgICB1
aW50MzJfdCBzdHJ1Y3R1cmVCaXRzID0gYml0d2lzZV9jYXN0PHVpbnQzMl90PihuZXdTdHJ1Y3R1
cmUoKS0+aWQoKSk7CisgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIoc3RydWN0dXJlQml0cyksCisgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CisKKyAg
ICAgICAgc3RhdGUuc3VjY2VlZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgY2Fz
ZSBEZWxldGVOb25Db25maWd1cmFibGU6IHsKICAgICAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW0zMihmYWxzZSksIHZhbHVlUmVncy5wYXlsb2FkR1BSKCkpOwogICAgICAg
ICBzdGF0ZS5zdWNjZWVkKCk7CkBAIC0yMTA3LDYgKzIxNTAsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6
OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgIGNhc2UgSW5k
ZXhlZFR5cGVkQXJyYXlGbG9hdDMyTG9hZDoKICAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5Rmxv
YXQ2NExvYWQ6CiAgICAgY2FzZSBJbmRleGVkU3RyaW5nTG9hZDoKKyAgICBjYXNlIENoZWNrUHJp
dmF0ZUJyYW5kOgogICAgICAgICAvLyBUaGVzZSBuZWVkIHRvIGJlIGhhbmRsZWQgYnkgZ2VuZXJh
dGVXaXRoR3VhcmQoKSwgc2luY2UgdGhlIGd1YXJkIGlzIHBhcnQgb2YgdGhlCiAgICAgICAgIC8v
IGFsZ29yaXRobS4gV2UgY2FuIGJlIHN1cmUgdGhhdCBub2JvZHkgd2lsbCBjYWxsIGdlbmVyYXRl
KCkgZGlyZWN0bHkgZm9yIHRoZXNlIHNpbmNlIHRoZXkKICAgICAgICAgLy8gYXJlIG5vdCBndWFy
ZGVkIGJ5IHN0cnVjdHVyZSBjaGVja3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0FjY2Vzc0Nhc2UuaAppbmRleCAxMDhmZWYzYjMzMDEyY2Y0ZTdkYjI3ZTIwYTYyNjAyMDc4NWQy
MTU5Li4zNmU5NDQ3ZTllMzYyY2RkMTBlOWM0MmY3NTA2ZjIxMmNhNzhmNjcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKQEAgLTEwOCw2ICsxMDgsOCBA
QCBwdWJsaWM6CiAgICAgICAgIEluc3RhbmNlT2ZIaXQsCiAgICAgICAgIEluc3RhbmNlT2ZNaXNz
LAogICAgICAgICBJbnN0YW5jZU9mR2VuZXJpYywKKyAgICAgICAgQ2hlY2tQcml2YXRlQnJhbmQs
CisgICAgICAgIFNldFByaXZhdGVCcmFuZCwKICAgICAgICAgSW5kZXhlZEludDMyTG9hZCwKICAg
ICAgICAgSW5kZXhlZERvdWJsZUxvYWQsCiAgICAgICAgIEluZGV4ZWRDb250aWd1b3VzTG9hZCwK
QEAgLTE1Myw2ICsxNTUsOSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PEFjY2Vzc0Nhc2U+IGNyZWF0ZURlbGV0ZShWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlk
ZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKICAgICAg
ICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpOworCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPiBjcmVhdGVDaGVja1ByaXZhdGVCcmFuZChWTSYsIEpTQ2VsbCogb3duZXIs
IENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlU2V0UHJpdmF0ZUJyYW5kKFZNJiwgSlNDZWxsKiBvd25l
ciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVy
ZSogbmV3U3RydWN0dXJlKTsKICAgICAKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vz
c0Nhc2U+IGZyb21TdHJ1Y3R1cmVTdHViSW5mbyhWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJs
ZUlkZW50aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiAKQEAgLTE2Miw3ICsxNjcsNyBAQCBw
dWJsaWM6CiAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSgpIGNvbnN0CiAgICAgewotICAgICAg
ICBpZiAobV90eXBlID09IFRyYW5zaXRpb24gfHwgbV90eXBlID09IERlbGV0ZSkKKyAgICAgICAg
aWYgKG1fdHlwZSA9PSBUcmFuc2l0aW9uIHx8IG1fdHlwZSA9PSBEZWxldGUgfHwgbV90eXBlID09
IFNldFByaXZhdGVCcmFuZCkKICAgICAgICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS0+cHJldmlv
dXNJRCgpOwogICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgfQpAQCAtMTcw
LDcgKzE3NSw3IEBAIHB1YmxpYzoKIAogICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKCkgY29u
c3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHJhbnNpdGlvbiB8fCBtX3R5cGUg
PT0gRGVsZXRlKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUcmFuc2l0aW9uIHx8IG1fdHlw
ZSA9PSBEZWxldGUgfHwgbV90eXBlID09IFNldFByaXZhdGVCcmFuZCk7CiAgICAgICAgIHJldHVy
biBtX3N0cnVjdHVyZS5nZXQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IDE1NjE5ZDNhNDhhMTQyYjczMTBiYmZmMzJk
YTdmMzdkMzYwNGExNDEuLjY1NGY1NjNmOGI0ZjQ1YWYxYTVhZWMxY2Y1OGM2OGE5YzExZjk0OTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
cmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpA
QCAtNTg4LDYgKzU4OCwyOCBAQCBvcCA6cHV0X3ByaXZhdGVfbmFtZSwKICAgICAgICAgbmV3U3Ry
dWN0dXJlSUQ6IFN0cnVjdHVyZUlELAogICAgIH0KIAorb3AgOnNldF9wcml2YXRlX2JyYW5kLAor
ICAgIGFyZ3M6IHsKKyAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBicmFu
ZDogVmlydHVhbFJlZ2lzdGVyLAorICAgIH0sCisgICAgbWV0YWRhdGE6IHsKKyAgICAgICAgb2xk
U3RydWN0dXJlSUQ6IFN0cnVjdHVyZUlELAorICAgICAgICBuZXdTdHJ1Y3R1cmVJRDogU3RydWN0
dXJlSUQsCisgICAgICAgIGJyYW5kOiBXcml0ZUJhcnJpZXJbSlNDZWxsXSwKKyAgICB9CisKK29w
IDpjaGVja19wcml2YXRlX2JyYW5kLAorICAgIGFyZ3M6IHsKKyAgICAgICAgYmFzZTogVmlydHVh
bFJlZ2lzdGVyLAorICAgICAgICBicmFuZDogVmlydHVhbFJlZ2lzdGVyLAorICAgIH0sCisgICAg
bWV0YWRhdGE6IHsKKyAgICAgICAgc3RydWN0dXJlSUQ6IFN0cnVjdHVyZUlELAorICAgICAgICBi
cmFuZDogV3JpdGVCYXJyaWVyW0pTQ2VsbF0sCisgICAgfQorICAgIAorCiBvcCA6cHV0X2J5X3Zh
bCwKICAgICBhcmdzOiB7CiAgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCmluZGV4IGIy
Njk4ZDg3OGU0YTkxNWUzODQ0NDFkZWI0MTE0ZDQ5ZDQ2MGEyNDQuLjQyNWFmMjViODA0OTI5ZjQ2
MWYwYmIxMzhjNjVhOGNmNTRiYjUyNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcApAQCAtMjI5LDYgKzIyOSw4IEBAIHZvaWQgY29t
cHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChWaXJ0dWFsUmVnaXN0ZXIgc2NvcGVSZWdpc3Rl
ciwgY29uc3QgSW5zdHJ1CiAgICAgVVNFUyhPcEdldEJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkKICAg
ICBVU0VTKE9wR2V0UHJpdmF0ZU5hbWUsIGJhc2UsIHByb3BlcnR5KQogICAgIFVTRVMoT3BQdXRQ
cml2YXRlTmFtZSwgYmFzZSwgcHJvcGVydHksIHZhbHVlKQorICAgIFVTRVMoT3BTZXRQcml2YXRl
QnJhbmQsIGJhc2UsIGJyYW5kKQorICAgIFVTRVMoT3BDaGVja1ByaXZhdGVCcmFuZCwgYmFzZSwg
YnJhbmQpCiAgICAgVVNFUyhPcEluQnlWYWwsIGJhc2UsIHByb3BlcnR5KQogICAgIFVTRVMoT3BP
dmVycmlkZXNIYXNJbnN0YW5jZSwgY29uc3RydWN0b3IsIGhhc0luc3RhbmNlVmFsdWUpCiAgICAg
VVNFUyhPcEluc3RhbmNlb2YsIHZhbHVlLCBwcm90b3R5cGUpCkBAIC0zOTcsNiArMzk5LDggQEAg
dm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKHVuc2lnbmVkIG51bVZhcnMsIGNv
bnN0IEluc3RydWN0aW9uKiBpbnN0cnUKICAgICBjYXNlIG9wX3B1dF9ieV92YWw6CiAgICAgY2Fz
ZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKICAgICBjYXNlIG9wX3B1dF9wcml2YXRlX25hbWU6Cisg
ICAgY2FzZSBvcF9zZXRfcHJpdmF0ZV9icmFuZDoKKyAgICBjYXNlIG9wX2NoZWNrX3ByaXZhdGVf
YnJhbmQ6CiAgICAgY2FzZSBvcF9wdXRfaW50ZXJuYWxfZmllbGQ6CiAgICAgY2FzZSBvcF9kZWZp
bmVfZGF0YV9wcm9wZXJ0eToKICAgICBjYXNlIG9wX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DaGVja1ByaXZhdGVC
cmFuZFN0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2
YXRlQnJhbmRTdGF0dXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyMWIwMTIwNDEyYzZhMDdkMjUwOGRiNDY5
OWZiNjQ4NDllOGUwMjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuY3BwCkBAIC0wLDAgKzEsMjcyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5BLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuaCIKKworI2luY2x1ZGUg
IkNhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisj
aW5jbHVkZSAiSUNTdGF0dXNVdGlscy5oIgorI2luY2x1ZGUgIlBvbHltb3JwaGljQWNjZXNzLmgi
CisjaW5jbHVkZSAiU3RydWN0dXJlU3R1YkluZm8uaCIKKyNpbmNsdWRlIDx3dGYvTGlzdER1bXAu
aD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2Jvb2wgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6OmFw
cGVuZFZhcmlhbnQoY29uc3QgQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50JiB2YXJpYW50KQorewor
ICAgIHJldHVybiBhcHBlbmRJQ1N0YXR1c1ZhcmlhbnQobV92YXJpYW50cywgdmFyaWFudCk7Cit9
CisKK0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOjpjb21w
dXRlRm9yQmFzZWxpbmUoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJQ1N0YXR1c01hcCYgbWFw
LCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIEV4aXRGbGFnIGRpZEV4aXQpCit7CisgICAg
Q29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihiYXNlbGluZUJsb2NrLT5tX2xvY2spOworCisgICAg
Q2hlY2tQcml2YXRlQnJhbmRTdGF0dXMgcmVzdWx0OworCisjaWYgRU5BQkxFKERGR19KSVQpCisg
ICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soCisg
ICAgICAgIGxvY2tlciwgYmFzZWxpbmVCbG9jaywgbWFwLmdldChDb2RlT3JpZ2luKGJ5dGVjb2Rl
SW5kZXgpKS5zdHViSW5mbyk7CisKKyAgICBpZiAoZGlkRXhpdCkKKyAgICAgICAgcmV0dXJuIHJl
c3VsdC5zbG93VmVyc2lvbigpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obWFwKTsKKyAgICBV
TlVTRURfUEFSQU0oZGlkRXhpdCk7CisgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOwor
I2VuZGlmCisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisjaWYgRU5BQkxFKEpJVCkKK0NoZWNr
UHJpdmF0ZUJyYW5kU3RhdHVzOjpDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyhTdHViSW5mb1N1bW1h
cnkgc3VtbWFyeSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQoreworICAgIHN3aXRjaCAo
c3VtbWFyeSkgeworICAgIGNhc2UgU3R1YkluZm9TdW1tYXJ5OjpOb0luZm9ybWF0aW9uOgorICAg
ICAgICBtX3N0YXRlID0gTm9JbmZvcm1hdGlvbjsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2Ug
U3R1YkluZm9TdW1tYXJ5OjpTaW1wbGU6CisgICAgY2FzZSBTdHViSW5mb1N1bW1hcnk6Ok1ha2Vz
Q2FsbHM6CisgICAgY2FzZSBTdHViSW5mb1N1bW1hcnk6OlRha2VzU2xvd1BhdGhBbmRNYWtlc0Nh
bGxzOgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1
cm47CisgICAgY2FzZSBTdHViSW5mb1N1bW1hcnk6OlRha2VzU2xvd1BhdGg6CisgICAgICAgIG1f
c3RhdGUgPSBzdHViSW5mby50b29rU2xvd1BhdGggPyBPYnNlcnZlZFRha2VzU2xvd1BhdGggOiBM
aWtlbHlUYWtlc1Nsb3dQYXRoOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzIENoZWNr
UHJpdmF0ZUJyYW5kU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVk
YmFjaygKKyAgICBjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqIGJsb2NrLCBT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8pCit7CisgICAgU3R1YkluZm9TdW1tYXJ5IHN1bW1h
cnkgPSBTdHJ1Y3R1cmVTdHViSW5mbzo6c3VtbWFyeShibG9jay0+dm0oKSwgc3R1YkluZm8pOwor
ICAgIGlmICghaXNJbmxpbmVhYmxlKHN1bW1hcnkpKQorICAgICAgICByZXR1cm4gQ2hlY2tQcml2
YXRlQnJhbmRTdGF0dXMoc3VtbWFyeSwgKnN0dWJJbmZvKTsKKworICAgIENoZWNrUHJpdmF0ZUJy
YW5kU3RhdHVzIHJlc3VsdDsKKyAgICByZXN1bHQubV9zdGF0ZSA9IFNpbXBsZTsKKyAgICBzd2l0
Y2ggKHN0dWJJbmZvLT5jYWNoZVR5cGUoKSkgeworICAgIGNhc2UgQ2FjaGVUeXBlOjpVbnNldDoK
KyAgICAgICAgcmV0dXJuIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzKE5vSW5mb3JtYXRpb24pOwor
CisgICAgY2FzZSBDYWNoZVR5cGU6OlN0dWI6IHsKKyAgICAgICAgUG9seW1vcnBoaWNBY2Nlc3Mq
IGxpc3QgPSBzdHViSW5mby0+dS5zdHViOworCisgICAgICAgIGZvciAodW5zaWduZWQgbGlzdElu
ZGV4ID0gMDsgbGlzdEluZGV4IDwgbGlzdC0+c2l6ZSgpOyArK2xpc3RJbmRleCkgeworICAgICAg
ICAgICAgY29uc3QgQWNjZXNzQ2FzZSYgYWNjZXNzID0gbGlzdC0+YXQobGlzdEluZGV4KTsKKwor
ICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBhY2Nlc3Muc3RydWN0dXJlKCk7Cisg
ICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlKTsKKyAgICAgICAgICAgIEFTU0VSVChhY2Nlc3Mu
dHlwZSgpID09IEFjY2Vzc0Nhc2U6OkNoZWNrUHJpdmF0ZUJyYW5kKTsKKworICAgICAgICAgICAg
Q2hlY2tQcml2YXRlQnJhbmRWYXJpYW50IHZhcmlhbnQoYWNjZXNzLmlkZW50aWZpZXIoKSwgU3Ry
dWN0dXJlU2V0KHN0cnVjdHVyZSkpOworICAgICAgICAgICAgaWYgKCFyZXN1bHQuYXBwZW5kVmFy
aWFudCh2YXJpYW50KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gQ2hlY2tQcml2YXRlQnJhbmRT
dGF0dXMoSlNDOjpzbG93VmVyc2lvbihzdW1tYXJ5KSwgKnN0dWJJbmZvKTsKKyAgICAgICAgfQor
CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgZGVmYXVsdDoKKyAgICAgICAg
cmV0dXJuIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzKEpTQzo6c2xvd1ZlcnNpb24oc3VtbWFyeSks
ICpzdHViSW5mbyk7CisgICAgfQorCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMoKTsKK30KKworQ2hlY2tQcml2YXRl
QnJhbmRTdGF0dXMgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAgQ29k
ZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJQ1N0YXR1c01hcCYgYmFzZWxpbmVNYXAsCisgICAgSUNT
dGF0dXNDb250ZXh0U3RhY2smIGNvbnRleHRTdGFjaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQor
eworICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IGNvZGVPcmlnaW4uYnl0ZWNvZGVJ
bmRleCgpOworICAgIEV4aXRGbGFnIGRpZEV4aXQgPSBoYXNCYWRDYWNoZUV4aXRTaXRlKGJhc2Vs
aW5lQmxvY2ssIGJ5dGVjb2RlSW5kZXgpOworCisgICAgZm9yIChJQ1N0YXR1c0NvbnRleHQqIGNv
bnRleHQgOiBjb250ZXh0U3RhY2spIHsKKyAgICAgICAgSUNTdGF0dXMgc3RhdHVzID0gY29udGV4
dC0+Z2V0KGNvZGVPcmlnaW4pOworCisgICAgICAgIGF1dG8gYmxlc3MgPSBbJl0gKGNvbnN0IENo
ZWNrUHJpdmF0ZUJyYW5kU3RhdHVzJiByZXN1bHQpIC0+IENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVz
IHsKKyAgICAgICAgICAgIGlmICghY29udGV4dC0+aXNJbmxpbmVkKGNvZGVPcmlnaW4pKSB7Cisg
ICAgICAgICAgICAgICAgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMgYmFzZWxpbmVSZXN1bHQgPSBj
b21wdXRlRm9yQmFzZWxpbmUoCisgICAgICAgICAgICAgICAgICAgIGJhc2VsaW5lQmxvY2ssIGJh
c2VsaW5lTWFwLCBieXRlY29kZUluZGV4LCBkaWRFeGl0KTsKKyAgICAgICAgICAgICAgICBiYXNl
bGluZVJlc3VsdC5tZXJnZShyZXN1bHQpOworICAgICAgICAgICAgICAgIHJldHVybiBiYXNlbGlu
ZVJlc3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChkaWRFeGl0LmlzU2V0KEV4
aXRGcm9tSW5saW5lZCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5zbG93VmVyc2lv
bigpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfTsKKworICAgICAgICBp
ZiAoc3RhdHVzLnN0dWJJbmZvKSB7CisgICAgICAgICAgICBDaGVja1ByaXZhdGVCcmFuZFN0YXR1
cyByZXN1bHQ7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9j
a2VyIGxvY2tlcihjb250ZXh0LT5vcHRpbWl6ZWRDb2RlQmxvY2stPm1fbG9jayk7CisgICAgICAg
ICAgICAgICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJh
Y2soCisgICAgICAgICAgICAgICAgICAgIGxvY2tlciwgY29udGV4dC0+b3B0aW1pemVkQ29kZUJs
b2NrLCBzdGF0dXMuc3R1YkluZm8pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHJl
c3VsdC5pc1NldCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBibGVzcyhyZXN1bHQpOworICAg
ICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGNvbXB1dGVGb3JCYXNlbGluZShiYXNlbGluZUJs
b2NrLCBiYXNlbGluZU1hcCwgYnl0ZWNvZGVJbmRleCwgZGlkRXhpdCk7Cit9CisKKyNlbmRpZiAv
LyBFTkFCTEUoSklUKQorCitDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyBDaGVja1ByaXZhdGVCcmFu
ZFN0YXR1czo6c2xvd1ZlcnNpb24oKSBjb25zdAoreworICAgIGlmIChvYnNlcnZlZFNsb3dQYXRo
KCkpCisgICAgICAgIHJldHVybiBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyhPYnNlcnZlZFRha2Vz
U2xvd1BhdGgpOworICAgIHJldHVybiBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyhMaWtlbHlUYWtl
c1Nsb3dQYXRoKTsKK30KKwordm9pZCBDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6bWVyZ2UoY29u
c3QgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMmIG90aGVyKQoreworICAgIGlmIChvdGhlci5tX3N0
YXRlID09IE5vSW5mb3JtYXRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbWVyZ2VT
bG93ID0gWyZdICgpIHsKKyAgICAgICAgaWYgKG9ic2VydmVkU2xvd1BhdGgoKSB8fCBvdGhlci5v
YnNlcnZlZFNsb3dQYXRoKCkpCisgICAgICAgICAgICAqdGhpcyA9IENoZWNrUHJpdmF0ZUJyYW5k
U3RhdHVzKE9ic2VydmVkVGFrZXNTbG93UGF0aCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICp0aGlzID0gQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMoTGlrZWx5VGFrZXNTbG93UGF0aCk7Cisg
ICAgfTsKKworICAgIHN3aXRjaCAobV9zdGF0ZSkgeworICAgIGNhc2UgTm9JbmZvcm1hdGlvbjoK
KyAgICAgICAgKnRoaXMgPSBvdGhlcjsKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBTaW1w
bGU6CisgICAgICAgIGlmIChtX3N0YXRlICE9IG90aGVyLm1fc3RhdGUpCisgICAgICAgICAgICBy
ZXR1cm4gbWVyZ2VTbG93KCk7CisKKyAgICAgICAgZm9yIChhdXRvJiBvdGhlclZhcmlhbnQgOiBv
dGhlci5tX3ZhcmlhbnRzKSB7CisgICAgICAgICAgICBpZiAoIWFwcGVuZFZhcmlhbnQob3RoZXJW
YXJpYW50KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbWVyZ2VTbG93KCk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBMaWtlbHlUYWtlc1Nsb3dQYXRoOgorICAgIGNh
c2UgT2JzZXJ2ZWRUYWtlc1Nsb3dQYXRoOgorICAgICAgICByZXR1cm4gbWVyZ2VTbG93KCk7Cisg
ICAgfQorCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBDaGVj
a1ByaXZhdGVCcmFuZFN0YXR1czo6ZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJl
U2V0KQoreworICAgIGlmIChtX3N0YXRlICE9IFNpbXBsZSkKKyAgICAgICAgcmV0dXJuOworICAg
IGZpbHRlcklDU3RhdHVzVmFyaWFudHMobV92YXJpYW50cywgc3RydWN0dXJlU2V0KTsKKyAgICBp
ZiAobV92YXJpYW50cy5pc0VtcHR5KCkpCisgICAgICAgIG1fc3RhdGUgPSBOb0luZm9ybWF0aW9u
OworfQorCitDYWNoZWFibGVJZGVudGlmaWVyIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOjpzaW5n
bGVJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICBpZiAobV92YXJpYW50cy5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgQ2FjaGVhYmxlSWRlbnRpZmllciByZXN1bHQg
PSBtX3ZhcmlhbnRzLmZpcnN0KCkuaWRlbnRpZmllcigpOworICAgIGlmICghcmVzdWx0KQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IG1fdmFyaWFu
dHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVy
ID0gbV92YXJpYW50c1tpXS5pZGVudGlmaWVyKCk7CisgICAgICAgIGlmICghaWRlbnRpZmllcikK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBpZiAoaWRlbnRpZmllciAhPSBy
ZXN1bHQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKwordm9pZCBDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6dmlzaXRBZ2dyZWdhdGUo
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgZm9yIChDaGVja1ByaXZhdGVCcmFuZFZhcmlh
bnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKQorICAgICAgICB2YXJpYW50LnZpc2l0QWdncmVnYXRl
KHZpc2l0b3IpOworfQorCit2b2lkIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOjptYXJrSWZDaGVh
cChTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBmb3IgKENoZWNrUHJpdmF0ZUJyYW5kVmFy
aWFudCYgdmFyaWFudCA6IG1fdmFyaWFudHMpCisgICAgICAgIHZhcmlhbnQubWFya0lmQ2hlYXAo
dmlzaXRvcik7Cit9CisKK2Jvb2wgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6OmZpbmFsaXplKFZN
JiB2bSkKK3sKKyAgICBmb3IgKGF1dG8mIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKSB7CisgICAgICAg
IGlmICghdmFyaWFudC5maW5hbGl6ZSh2bSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVz
OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KCIoIik7Cisg
ICAgc3dpdGNoIChtX3N0YXRlKSB7CisgICAgY2FzZSBOb0luZm9ybWF0aW9uOgorICAgICAgICBv
dXQucHJpbnQoIk5vSW5mb3JtYXRpb24iKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTaW1w
bGU6CisgICAgICAgIG91dC5wcmludCgiU2ltcGxlIik7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgTGlrZWx5VGFrZXNTbG93UGF0aDoKKyAgICAgICAgb3V0LnByaW50KCJMaWtlbHlUYWtlc1Ns
b3dQYXRoIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgT2JzZXJ2ZWRUYWtlc1Nsb3dQYXRo
OgorICAgICAgICBvdXQucHJpbnQoIk9ic2VydmVkVGFrZXNTbG93UGF0aCIpOworICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgb3V0LnByaW50KCIsICIsIGxpc3REdW1wKG1fdmFyaWFudHMpLCAi
KSIpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDkwYjhmNDM5NDQ1ZmRlOTE1NDc5M2NhNTczOWQzOGYxYjIzYjg4NgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFN0YXR1
cy5oCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5B
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlm
aWVyLmgiCisjaW5jbHVkZSAiQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50LmgiCisjaW5jbHVkZSAi
Q29kZU9yaWdpbi5oIgorI2luY2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIKKyNpbmNsdWRlICJF
eGl0RmxhZy5oIgorI2luY2x1ZGUgIklDU3RhdHVzTWFwLmgiCisjaW5jbHVkZSAiU3R1YkluZm9T
dW1tYXJ5LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBBY2Nlc3NDYXNlOworY2xhc3Mg
Q29kZUJsb2NrOworY2xhc3MgU3RydWN0dXJlU3R1YkluZm87CisKK2NsYXNzIENoZWNrUHJpdmF0
ZUJyYW5kU3RhdHVzIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1Ymxp
YzoKKyAgICBlbnVtIFN0YXRlIDogdWludDhfdCB7CisgICAgICAgIC8vIEl0J3MgdW5jYWNoZWQg
c28gd2UgaGF2ZSBubyBpbmZvcm1hdGlvbi4KKyAgICAgICAgTm9JbmZvcm1hdGlvbiwKKyAgICAg
ICAgLy8gSXQncyBjYWNoZWQgZm9yIGEgc2ltcGxlIGFjY2Vzcy4KKyAgICAgICAgU2ltcGxlLAor
ICAgICAgICAvLyBJdCB3aWxsIGxpa2VseSB0YWtlIHRoZSBzbG93IHBhdGguCisgICAgICAgIExp
a2VseVRha2VzU2xvd1BhdGgsCisgICAgICAgIC8vIEl0IGhhcyBiZWVuIHNlZW4gdG8gdGFrZSB0
aGUgc2xvdyBwYXRoLgorICAgICAgICBPYnNlcnZlZFRha2VzU2xvd1BhdGgsCisgICAgfTsKKwor
ICAgIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzKCkKKyAgICAgICAgOiBtX3N0YXRlKE5vSW5mb3Jt
YXRpb24pCisgICAgeworICAgIH0KKworICAgIGV4cGxpY2l0IENoZWNrUHJpdmF0ZUJyYW5kU3Rh
dHVzKFN0YXRlIHN0YXRlKQorICAgICAgICA6IG1fc3RhdGUoc3RhdGUpCisgICAgeworICAgICAg
ICBBU1NFUlQoc3RhdGUgIT0gU2ltcGxlKTsKKyAgICB9CisKKyAgICBzdGF0aWMgQ2hlY2tQcml2
YXRlQnJhbmRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIElDU3Rh
dHVzTWFwJiBiYXNlbGluZU1hcCwgSUNTdGF0dXNDb250ZXh0U3RhY2smIGRmZ0NvbnRleHRTdGFj
aywgQ29kZU9yaWdpbik7CisKKyAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGU7IH0KKworICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlICE9IE5vSW5m
b3JtYXRpb247IH0KKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFpc1NldCgp
OyB9CisgICAgYm9vbCBvYnNlcnZlZFNsb3dQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9
PSBPYnNlcnZlZFRha2VzU2xvd1BhdGg7IH0KKyAgICBib29sIGlzU2ltcGxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZSA9PSBTaW1wbGU7IH0KKyAgICBjb25zdCBWZWN0b3I8Q2hlY2tQcml2YXRl
QnJhbmRWYXJpYW50LCAxPiYgdmFyaWFudHMoKSB7IHJldHVybiBtX3ZhcmlhbnRzOyB9CisgICAg
Q2FjaGVhYmxlSWRlbnRpZmllciBzaW5nbGVJZGVudGlmaWVyKCkgY29uc3Q7CisKKyAgICBDaGVj
a1ByaXZhdGVCcmFuZFN0YXR1cyBzbG93VmVyc2lvbigpIGNvbnN0OworCisgICAgLy8gQXR0ZW1w
dHMgdG8gcmVkdWNlIHRoZSBzZXQgb2YgdmFyaWFudHMgdG8gZml0IHRoZSBnaXZlbiBzdHJ1Y3R1
cmUgc2V0LiBUaGlzIG1heSBiZSBhcHByb3hpbWF0ZS4KKyAgICB2b2lkIGZpbHRlcihjb25zdCBT
dHJ1Y3R1cmVTZXQmKTsKKworICAgIHZvaWQgdmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImKTsK
KyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7CisgICAgYm9vbCBmaW5hbGl6ZShW
TSYpOworCisgICAgYm9vbCBhcHBlbmRWYXJpYW50KGNvbnN0IENoZWNrUHJpdmF0ZUJyYW5kVmFy
aWFudCYpOworCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisKK3ByaXZhdGU6
CisgICAgZXhwbGljaXQgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMoU3R1YkluZm9TdW1tYXJ5LCBT
dHJ1Y3R1cmVTdHViSW5mbyYpOworICAgIHZvaWQgbWVyZ2UoY29uc3QgQ2hlY2tQcml2YXRlQnJh
bmRTdGF0dXMmKTsKKworICAgIHN0YXRpYyBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyBjb21wdXRl
Rm9yQmFzZWxpbmUoQ29kZUJsb2NrKiwgSUNTdGF0dXNNYXAmLCBCeXRlY29kZUluZGV4LCBFeGl0
RmxhZyk7CisjaWYgRU5BQkxFKEpJVCkKKyAgICBzdGF0aWMgQ2hlY2tQcml2YXRlQnJhbmRTdGF0
dXMgY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soCisgICAgICAgIGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgU3RydWN0
dXJlU3R1YkluZm8qKTsKKyNlbmRpZgorCisgICAgVmVjdG9yPENoZWNrUHJpdmF0ZUJyYW5kVmFy
aWFudCwgMT4gbV92YXJpYW50czsKKyAgICBTdGF0ZSBtX3N0YXRlOworfTsKKworfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hl
Y2tQcml2YXRlQnJhbmRWYXJpYW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5ZWM3YWVmNWU1MTRk
Y2IyMzA4MmJiN2MwNzBhYmNhN2U3ZTUzNmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50LmNwcApAQCAtMCww
ICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5BLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50Lmgi
CisKKyNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50OjpDaGVja1ByaXZhdGVCcmFuZFZhcmlh
bnQoQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0
cnVjdHVyZVNldCkKKyAgICA6IG1fc3RydWN0dXJlU2V0KHN0cnVjdHVyZVNldCkKKyAgICAsIG1f
aWRlbnRpZmllcihXVEZNb3ZlKGlkZW50aWZpZXIpKQoreyB9CisKK0NoZWNrUHJpdmF0ZUJyYW5k
VmFyaWFudDo6fkNoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudCgpIHsgfQorCitDaGVja1ByaXZhdGVC
cmFuZFZhcmlhbnQ6OkNoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudChjb25zdCBDaGVja1ByaXZhdGVC
cmFuZFZhcmlhbnQmIG90aGVyKQoreworICAgICp0aGlzID0gb3RoZXI7Cit9CisKK2Jvb2wgQ2hl
Y2tQcml2YXRlQnJhbmRWYXJpYW50OjphdHRlbXB0VG9NZXJnZShjb25zdCBDaGVja1ByaXZhdGVC
cmFuZFZhcmlhbnQmIG90aGVyKQoreworICAgIGlmICghIW1faWRlbnRpZmllciAhPSAhIW90aGVy
Lm1faWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1faWRlbnRp
ZmllciAmJiAobV9pZGVudGlmaWVyICE9IG90aGVyLm1faWRlbnRpZmllcikpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIG1fc3RydWN0dXJlU2V0Lm1lcmdlKG90aGVyLm1fc3RydWN0dXJl
U2V0KTsKKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIENoZWNrUHJpdmF0ZUJyYW5kVmFy
aWFudDo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgbV9zdHJ1Y3R1
cmVTZXQubWFya0lmQ2hlYXAodmlzaXRvcik7Cit9CisKK2Jvb2wgQ2hlY2tQcml2YXRlQnJhbmRW
YXJpYW50OjpmaW5hbGl6ZShWTSYgdm0pCit7CisgICAgaWYgKCFtX3N0cnVjdHVyZVNldC5pc1N0
aWxsQWxpdmUodm0pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK3ZvaWQgQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50Ojp2aXNpdEFnZ3JlZ2F0ZShTbG90Vmlz
aXRvciYgdmlzaXRvcikKK3sKKyAgICBtX2lkZW50aWZpZXIudmlzaXRBZ2dyZWdhdGUodmlzaXRv
cik7Cit9CisKK3ZvaWQgQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50OjpkdW1wKFByaW50U3RyZWFt
JiBvdXQpIGNvbnN0Cit7CisgICAgZHVtcEluQ29udGV4dChvdXQsIG51bGxwdHIpOworfQorCit2
b2lkIENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudDo6ZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYg
b3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3QKK3sKKyAgICBvdXQucHJpbnQoIjxpZD0n
IiwgbV9pZGVudGlmaWVyLCAiJywgIiwgaW5Db250ZXh0KHN0cnVjdHVyZVNldCgpLCBjb250ZXh0
KSwgIj4iKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZmU0YzQ2ZmZlZWU1Njc3ZDI0NzU4YzYwZmY2NmVlNmJmMzM5MmQ3OAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DaGVja1ByaXZhdGVCcmFu
ZFZhcmlhbnQuaApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2Fs
aWEgUy5BLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50
aWZpZXIuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVTZXQuaCIKKyNpbmNsdWRlIDx3dGYvQm94Lmg+
CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBDaGVja1ByaXZhdGVCcmFuZFN0YXR1czsKKwor
Y2xhc3MgQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK3B1YmxpYzoKKyAgICBDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQoQ2FjaGVhYmxlSWRl
bnRpZmllciwgY29uc3QgU3RydWN0dXJlU2V0JiA9IFN0cnVjdHVyZVNldCgpKTsKKworICAgIH5D
aGVja1ByaXZhdGVCcmFuZFZhcmlhbnQoKTsKKworICAgIENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFu
dChjb25zdCBDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQmKTsKKworICAgIGNvbnN0IFN0cnVjdHVy
ZVNldCYgc3RydWN0dXJlU2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmVTZXQ7IH0KKyAg
ICBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCgpIHsgcmV0dXJuIG1fc3RydWN0dXJlU2V0OyB9
CisKKyAgICBib29sIGF0dGVtcHRUb01lcmdlKGNvbnN0IENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFu
dCYgb3RoZXIpOworCisgICAgdm9pZCB2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYpOworICAg
IHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKTsKKyAgICBib29sIGZpbmFsaXplKFZNJik7
CisKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICB2b2lkIGR1bXBJbkNv
bnRleHQoUHJpbnRTdHJlYW0mLCBEdW1wQ29udGV4dCopIGNvbnN0OworCisgICAgQ2FjaGVhYmxl
SWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisK
KyAgICBib29sIG92ZXJsYXBzKGNvbnN0IENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudCYgb3RoZXIp
CisgICAgeworICAgICAgICBpZiAoISFtX2lkZW50aWZpZXIgIT0gISFvdGhlci5tX2lkZW50aWZp
ZXIpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKG1faWRlbnRpZmllcikg
eworICAgICAgICAgICAgaWYgKG1faWRlbnRpZmllciAhPSBvdGhlci5tX2lkZW50aWZpZXIpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBz
dHJ1Y3R1cmVTZXQoKS5vdmVybGFwcyhvdGhlci5zdHJ1Y3R1cmVTZXQoKSk7CisgICAgfQorCitw
cml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBDaGVja1ByaXZhdGVCcmFuZFN0YXR1czsKKworICAg
IFN0cnVjdHVyZVNldCBtX3N0cnVjdHVyZVNldDsKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIG1f
aWRlbnRpZmllcjsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBhZjJhYzRjOTFiYjcyMzJjNGJlMzk0
OTU5NzcxZjA5YTMyMThkZDQ4Li4wNjJkZmFjMmU0OWVmMDllOGNhOWJkOGM5NmQ2YzU0YjY2YjBl
MjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApA
QCAtNTQ0LDYgKzU0NCw5IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIExJTkso
T3BQdXRCeVZhbERpcmVjdCkKICAgICAgICAgTElOSyhPcFB1dFByaXZhdGVOYW1lKQogCisgICAg
ICAgIExJTksoT3BTZXRQcml2YXRlQnJhbmQpCisgICAgICAgIExJTksoT3BDaGVja1ByaXZhdGVC
cmFuZCkKKwogICAgICAgICBMSU5LKE9wTmV3QXJyYXkpCiAgICAgICAgIExJTksoT3BOZXdBcnJh
eVdpdGhTaXplKQogICAgICAgICBMSU5LKE9wTmV3QXJyYXlCdWZmZXIsIGFycmF5QWxsb2NhdGlv
blByb2ZpbGUpCkBAIC0xMzM4LDYgKzEzNDEsMzMgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXpl
TExJbnRJbmxpbmVDYWNoZXMoKQogICAgICAgICAgICAgbWV0YWRhdGEubV9wcm9wZXJ0eS5jbGVh
cigpOwogICAgICAgICB9KTsKIAorICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wU2V0UHJp
dmF0ZUJyYW5kPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICBTdHJ1Y3R1cmVJ
RCBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQ7CisgICAgICAgICAg
ICBTdHJ1Y3R1cmVJRCBuZXdTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQ7
CisgICAgICAgICAgICBKU0NlbGwqIGJyYW5kID0gbWV0YWRhdGEubV9icmFuZC5nZXQoKTsKKyAg
ICAgICAgICAgIGlmICgoIW9sZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVh
cC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKSkpCisgICAgICAgICAgICAg
ICAgJiYgKCFicmFuZCB8fCB2bS5oZWFwLmlzTWFya2VkKGJyYW5kKSkKKyAgICAgICAgICAgICAg
ICAmJiAoIW5ld1N0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1
cmVJRFRhYmxlKCkuZ2V0KG5ld1N0cnVjdHVyZUlEKSkpKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiQ2xl
YXJpbmcgTExJbnQgc2V0X3ByaXZhdGVfYnJhbmQgdHJhbnNpdGlvbi4iKTsKKyAgICAgICAgICAg
IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQgPSAwOworICAgICAgICAgICAgbWV0YWRhdGEubV9u
ZXdTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgICAgICBtZXRhZGF0YS5tX2JyYW5kLmNsZWFyKCk7
CisgICAgICAgIH0pOworCisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BDaGVja1ByaXZh
dGVCcmFuZD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeworICAgICAgICAgICAgU3RydWN0dXJlSUQg
c3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX3N0cnVjdHVyZUlEOworICAgICAgICAgICAgSlNDZWxs
KiBicmFuZCA9IG1ldGFkYXRhLm1fYnJhbmQuZ2V0KCk7CisgICAgICAgICAgICBpZiAoKCFzdHJ1
Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdl
dChzdHJ1Y3R1cmVJRCkpKQorICAgICAgICAgICAgICAgICYmICghYnJhbmQgfHwgdm0uaGVhcC5p
c01hcmtlZChicmFuZCkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAg
ZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiQ2xlYXJpbmcgTExJbnQgc2V0X3By
aXZhdGVfYnJhbmQgdHJhbnNpdGlvbi4iKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fc3RydWN0
dXJlSUQgPSAwOworICAgICAgICAgICAgbWV0YWRhdGEubV9icmFuZC5jbGVhcigpOworICAgICAg
ICB9KTsKKwogICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wVG9UaGlzPihbJl0gKGF1dG8m
IG1ldGFkYXRhKSB7CiAgICAgICAgICAgICBpZiAoIW1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJl
SUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobWV0
YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRCkpKQogICAgICAgICAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKaW5kZXgg
NDllZGQ1Mjg1ZDVjMmMyOGIxYzlhNGJjZWVmNDUxNzE5OTBiZTkxYy4uY2Q1OWZiNGE3MzNlOTI0
ZTRlYjEzYTljMDA2OTMwNDJkMzlkOWRlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKQEAgLTM2LDkgKzM2LDEwIEBAIGVudW0gY2xhc3Mg
TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgOiB1aW50OF90IHsgTm8sIFllcyB9OwogLy8gRklY
TUU6IFRoZXNlIGZsYWdzLCBQYXJzZXJNb2RlcyBhbmQgcHJvcGFnYXRpb24gdG8gWFhYQ29kZUJs
b2NrcyBzaG91bGQgYmUgcmVvcmdhbml6ZWQuCiAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTUxNTQ3CiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1
dGFibGVJbmZvKGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0
aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgSlNQYXJzZXJTY3Jp
cHRNb2RlIHNjcmlwdE1vZGUsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIFNvdXJjZVBhcnNl
TW9kZSBwYXJzZU1vZGUsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29s
IGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNDbGFzc0NvbnRleHQsIEV2YWxDb250ZXh0
VHlwZSBldmFsQ29udGV4dFR5cGUpCisgICAgRXhlY3V0YWJsZUluZm8oYm9vbCB1c2VzRXZhbCwg
Ym9vbCBpc0NvbnN0cnVjdG9yLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRS
ZXF1aXJlbWVudCwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JLaW5kIGNvbnN0
cnVjdG9yS2luZCwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIFN1cGVyQmluZGluZyBz
dXBlckJpbmRpbmcsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIERlcml2ZWRDb250ZXh0VHlw
ZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXND
bGFzc0NvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUpCiAgICAgICAgIDog
bV91c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzQ29uc3RydWN0b3IoaXNDb25zdHJ1
Y3RvcikKKyAgICAgICAgLCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50KHN0YXRpY19jYXN0PHVu
c2lnbmVkPihwcml2YXRlQnJhbmRSZXF1aXJlbWVudCkpCiAgICAgICAgICwgbV9pc0J1aWx0aW5G
dW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikKICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkKICAgICAgICAgLCBtX3N1cGVy
QmluZGluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3VwZXJCaW5kaW5nKSkKQEAgLTU3LDYgKzU4
LDcgQEAgc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKIAogICAgIGJvb2wgdXNlc0V2YWwoKSBjb25z
dCB7IHJldHVybiBtX3VzZXNFdmFsOyB9CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0NvbnN0cnVjdG9yOyB9CisgICAgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQg
cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxQcml2
YXRlQnJhbmRSZXF1aXJlbWVudD4obV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7IH0KICAgICBi
b29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlv
bjsgfQogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQogICAg
IFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxT
dXBlckJpbmRpbmc+KG1fc3VwZXJCaW5kaW5nKTsgfQpAQCAtNzEsNiArNzMsNyBAQCBzdHJ1Y3Qg
RXhlY3V0YWJsZUluZm8gewogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX3VzZXNFdmFsIDogMTsK
ICAgICB1bnNpZ25lZCBtX2lzQ29uc3RydWN0b3IgOiAxOworICAgIHVuc2lnbmVkIG1fcHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQgOiAxOwogICAgIHVuc2lnbmVkIG1faXNCdWlsdGluRnVuY3Rpb24g
OiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKICAgICB1bnNpZ25lZCBt
X3N1cGVyQmluZGluZyA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAppbmRleCAxMjAyZjI3OTU1YjU1NmExMTIwY2FmZWIw
NTQ2ZTBhYzdkZDlmZWZlLi5hOGI4MjAzZWU5OWI1NWZkNTkzYzI5ZmFjYThmNGJjZjQ1MzQ3YTc4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNB
Y2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhp
Y0FjY2Vzcy5jcHAKQEAgLTQ2OSw3ICs0NjksOCBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBv
bHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwog
ICAgIGFsbG9jYXRvci5sb2NrKHN0YXRlLmJhc2VHUFIpOwogICAgIGlmIChzdGF0ZS51LnRoaXNH
UFIgIT0gSW52YWxpZEdQUlJlZykKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3RhdGUudS50aGlz
R1BSKTsKLSAgICBhbGxvY2F0b3IubG9jayhzdGF0ZS52YWx1ZVJlZ3MpOworICAgIGlmIChzdGF0
ZS52YWx1ZVJlZ3MpCisgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0YXRlLnZhbHVlUmVncyk7CiAj
aWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlVGFn
R1BSKTsKICAgICBpZiAoc3R1YkluZm8udi50aGlzVGFnR1BSICE9IEludmFsaWRHUFJSZWcpCkBA
IC04NTIsNiArODUzLDEyIEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBB
Y2Nlc3NDYXNlOjpBY2Nlc3NUeXBlIHR5cGUpCiAgICAgY2FzZSBBY2Nlc3NDYXNlOjpJbk1pc3M6
CiAgICAgICAgIG91dC5wcmludCgiSW5NaXNzIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNl
IEFjY2Vzc0Nhc2U6OkNoZWNrUHJpdmF0ZUJyYW5kOgorICAgICAgICBvdXQucHJpbnQoIkNoZWNr
UHJpdmF0ZUJyYW5kIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEFjY2Vzc0Nhc2U6OlNl
dFByaXZhdGVCcmFuZDoKKyAgICAgICAgb3V0LnByaW50KCJTZXRQcml2YXRlQnJhbmQiKTsKKyAg
ICAgICAgcmV0dXJuOwogICAgIGNhc2UgQWNjZXNzQ2FzZTo6QXJyYXlMZW5ndGg6CiAgICAgICAg
IG91dC5wcmludCgiQXJyYXlMZW5ndGgiKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCmluZGV4IGQ2
MTVhMTNkOWMzYzQ3NWE2MTZjMmU1NDc3Mjk1NTQ2MTY5YzQ0NGQuLjdmZjUwZTQ4NTc4YTNmNjcz
MDQyZTc0OTM5YWMyYTJhZDY1NjQ2MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKQEAgLTM1LDYgKzM1LDggQEAgUmVjb3Jk
ZWRTdGF0dXNlcyYgUmVjb3JkZWRTdGF0dXNlczo6b3BlcmF0b3I9KFJlY29yZGVkU3RhdHVzZXMm
JiBvdGhlcikKICAgICBwdXRzID0gV1RGTW92ZShvdGhlci5wdXRzKTsKICAgICBpbnMgPSBXVEZN
b3ZlKG90aGVyLmlucyk7CiAgICAgZGVsZXRlcyA9IFdURk1vdmUob3RoZXIuZGVsZXRlcyk7Cisg
ICAgY2hlY2tQcml2YXRlQnJhbmRzID0gV1RGTW92ZShvdGhlci5jaGVja1ByaXZhdGVCcmFuZHMp
OworICAgIHNldFByaXZhdGVCcmFuZHMgPSBXVEZNb3ZlKG90aGVyLnNldFByaXZhdGVCcmFuZHMp
OwogICAgIHNocmlua1RvRml0KCk7CiAgICAgcmV0dXJuICp0aGlzOwogfQpAQCAtODQsMTIgKzg2
LDMyIEBAIERlbGV0ZUJ5U3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGREZWxldGVCeVN0YXR1
cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAor
Q2hlY2tQcml2YXRlQnJhbmRTdGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFkZENoZWNrUHJpdmF0
ZUJyYW5kU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIGNvbnN0IENoZWNrUHJp
dmF0ZUJyYW5kU3RhdHVzJiBzdGF0dXMpCit7CisgICAgYXV0byBzdGF0dXNQdHIgPSBtYWtlVW5p
cXVlPENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzPihzdGF0dXMpOworICAgIENoZWNrUHJpdmF0ZUJy
YW5kU3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQdHIuZ2V0KCk7CisgICAgY2hlY2tQcml2YXRlQnJh
bmRzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihjb2RlT3JpZ2luLCBXVEZNb3ZlKHN0YXR1c1B0cikp
KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitTZXRQcml2YXRlQnJhbmRTdGF0dXMqIFJlY29y
ZGVkU3RhdHVzZXM6OmFkZFNldFByaXZhdGVCcmFuZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBj
b2RlT3JpZ2luLCBjb25zdCBTZXRQcml2YXRlQnJhbmRTdGF0dXMmIHN0YXR1cykKK3sKKyAgICBh
dXRvIHN0YXR1c1B0ciA9IG1ha2VVbmlxdWU8U2V0UHJpdmF0ZUJyYW5kU3RhdHVzPihzdGF0dXMp
OworICAgIFNldFByaXZhdGVCcmFuZFN0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdldCgpOwor
ICAgIHNldFByaXZhdGVCcmFuZHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdU
Rk1vdmUoc3RhdHVzUHRyKSkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHZvaWQgUmVjb3Jk
ZWRTdGF0dXNlczo6dmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImIHNsb3RWaXNpdG9yKQogewog
ICAgIGZvciAoYXV0byYgcGFpciA6IGdldHMpCiAgICAgICAgIHBhaXIuc2Vjb25kLT52aXNpdEFn
Z3JlZ2F0ZShzbG90VmlzaXRvcik7CiAgICAgZm9yIChhdXRvJiBwYWlyIDogZGVsZXRlcykKICAg
ICAgICAgcGFpci5zZWNvbmQtPnZpc2l0QWdncmVnYXRlKHNsb3RWaXNpdG9yKTsKKyAgICBmb3Ig
KGF1dG8mIHBhaXIgOiBjaGVja1ByaXZhdGVCcmFuZHMpCisgICAgICAgIHBhaXIuc2Vjb25kLT52
aXNpdEFnZ3JlZ2F0ZShzbG90VmlzaXRvcik7CisgICAgZm9yIChhdXRvJiBwYWlyIDogc2V0UHJp
dmF0ZUJyYW5kcykKKyAgICAgICAgcGFpci5zZWNvbmQtPnZpc2l0QWdncmVnYXRlKHNsb3RWaXNp
dG9yKTsKIH0KIAogdm9pZCBSZWNvcmRlZFN0YXR1c2VzOjptYXJrSWZDaGVhcChTbG90VmlzaXRv
ciYgc2xvdFZpc2l0b3IpCkBAIC0xMDIsNiArMTI0LDEwIEBAIHZvaWQgUmVjb3JkZWRTdGF0dXNl
czo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHNsb3RWaXNpdG9yKQogICAgICAgICBwYWlyLnNl
Y29uZC0+bWFya0lmQ2hlYXAoc2xvdFZpc2l0b3IpOwogICAgIGZvciAoYXV0byYgcGFpciA6IGRl
bGV0ZXMpCiAgICAgICAgIHBhaXIuc2Vjb25kLT5tYXJrSWZDaGVhcChzbG90VmlzaXRvcik7Cisg
ICAgZm9yIChhdXRvJiBwYWlyIDogY2hlY2tQcml2YXRlQnJhbmRzKQorICAgICAgICBwYWlyLnNl
Y29uZC0+bWFya0lmQ2hlYXAoc2xvdFZpc2l0b3IpOworICAgIGZvciAoYXV0byYgcGFpciA6IHNl
dFByaXZhdGVCcmFuZHMpCisgICAgICAgIHBhaXIuc2Vjb25kLT5tYXJrSWZDaGVhcChzbG90Vmlz
aXRvcik7CiB9CiAKIHZvaWQgUmVjb3JkZWRTdGF0dXNlczo6ZmluYWxpemVXaXRob3V0RGVsZXRp
bmcoVk0mIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jl
Y29yZGVkU3RhdHVzZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRl
ZFN0YXR1c2VzLmgKaW5kZXggOWU3MDU1ZDI0M2YyNGFhNmFmNWFhMDkyYWQzMDJlZjE1YThkMDU3
NS4uZTg0M2I2NjgwMWUwMTE3YzllZjM3OWJiMDgzYzQ5NGQ3YjExODU3NCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5oCkBAIC0yNiwx
MCArMjYsMTIgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ2FsbExpbmtTdGF0dXMuaCIK
KyNpbmNsdWRlICJDaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5oIgogI2luY2x1ZGUgIkRlbGV0ZUJ5
U3RhdHVzLmgiCiAjaW5jbHVkZSAiR2V0QnlTdGF0dXMuaCIKICNpbmNsdWRlICJJbkJ5SWRTdGF0
dXMuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCisjaW5jbHVkZSAiU2V0UHJpdmF0ZUJy
YW5kU3RhdHVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00OSw2ICs1MSw4IEBAIHN0cnVj
dCBSZWNvcmRlZFN0YXR1c2VzIHsKICAgICBQdXRCeUlkU3RhdHVzKiBhZGRQdXRCeUlkU3RhdHVz
KGNvbnN0IENvZGVPcmlnaW4mLCBjb25zdCBQdXRCeUlkU3RhdHVzJik7CiAgICAgSW5CeUlkU3Rh
dHVzKiBhZGRJbkJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYsIGNvbnN0IEluQnlJZFN0YXR1
cyYpOwogICAgIERlbGV0ZUJ5U3RhdHVzKiBhZGREZWxldGVCeVN0YXR1cyhjb25zdCBDb2RlT3Jp
Z2luJiwgY29uc3QgRGVsZXRlQnlTdGF0dXMmKTsKKyAgICBDaGVja1ByaXZhdGVCcmFuZFN0YXR1
cyogYWRkQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYsIGNvbnN0IENo
ZWNrUHJpdmF0ZUJyYW5kU3RhdHVzJik7CisgICAgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzKiBhZGRT
ZXRQcml2YXRlQnJhbmRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYsIGNvbnN0IFNldFByaXZhdGVC
cmFuZFN0YXR1cyYpOwogICAgIAogICAgIHZvaWQgdmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3Im
KTsKICAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7CkBAIC02Niw2ICs3MCw4IEBA
IHN0cnVjdCBSZWNvcmRlZFN0YXR1c2VzIHsKICAgICAgICAgZnVuYyhwdXRzKTsKICAgICAgICAg
ZnVuYyhpbnMpOwogICAgICAgICBmdW5jKGRlbGV0ZXMpOworICAgICAgICBmdW5jKGNoZWNrUHJp
dmF0ZUJyYW5kcyk7CisgICAgICAgIGZ1bmMoc2V0UHJpdmF0ZUJyYW5kcyk7CiAgICAgfQogICAg
IAogICAgIFZlY3RvcjxzdGQ6OnBhaXI8Q29kZU9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPENhbGxM
aW5rU3RhdHVzPj4+IGNhbGxzOwpAQCAtNzMsNiArNzksOCBAQCBzdHJ1Y3QgUmVjb3JkZWRTdGF0
dXNlcyB7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8
UHV0QnlJZFN0YXR1cz4+PiBwdXRzOwogICAgIFZlY3RvcjxzdGQ6OnBhaXI8Q29kZU9yaWdpbiwg
c3RkOjp1bmlxdWVfcHRyPEluQnlJZFN0YXR1cz4+PiBpbnM7CiAgICAgVmVjdG9yPHN0ZDo6cGFp
cjxDb2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8RGVsZXRlQnlTdGF0dXM+Pj4gZGVsZXRlczsK
KyAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxDaGVja1By
aXZhdGVCcmFuZFN0YXR1cz4+PiBjaGVja1ByaXZhdGVCcmFuZHM7CisgICAgVmVjdG9yPHN0ZDo6
cGFpcjxDb2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8U2V0UHJpdmF0ZUJyYW5kU3RhdHVzPj4+
IHNldFByaXZhdGVCcmFuZHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TZXRQcml2YXRlQnJhbmRTdGF0dXMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NldFByaXZhdGVCcmFuZFN0YXR1cy5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTZjZjc0YmU1NWVjMmQ4YjlkMmU4OTM2YTIxNmIzOGEzNTlkOGI3Ngot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TZXRQcml2
YXRlQnJhbmRTdGF0dXMuY3BwCkBAIC0wLDAgKzEsMjc5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAyMSBJZ2FsaWEgUy5BLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
U2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmgiCisKKyNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVy
SW5saW5lcy5oIgorI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIklDU3RhdHVzVXRp
bHMuaCIKKyNpbmNsdWRlICJQb2x5bW9ycGhpY0FjY2Vzcy5oIgorI2luY2x1ZGUgIlN0cnVjdHVy
ZVN0dWJJbmZvLmgiCisjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+CisKK25hbWVzcGFjZSBKU0Mg
eworCitib29sIFNldFByaXZhdGVCcmFuZFN0YXR1czo6YXBwZW5kVmFyaWFudChjb25zdCBTZXRQ
cml2YXRlQnJhbmRWYXJpYW50JiB2YXJpYW50KQoreworICAgIHJldHVybiBhcHBlbmRJQ1N0YXR1
c1ZhcmlhbnQobV92YXJpYW50cywgdmFyaWFudCk7Cit9CisKK1NldFByaXZhdGVCcmFuZFN0YXR1
cyBTZXRQcml2YXRlQnJhbmRTdGF0dXM6OmNvbXB1dGVGb3JCYXNlbGluZShDb2RlQmxvY2sqIGJh
c2VsaW5lQmxvY2ssIElDU3RhdHVzTWFwJiBtYXAsIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRl
eCwgRXhpdEZsYWcgZGlkRXhpdCkKK3sKKyAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGJh
c2VsaW5lQmxvY2stPm1fbG9jayk7CisKKyAgICBTZXRQcml2YXRlQnJhbmRTdGF0dXMgcmVzdWx0
OworCisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZv
V2l0aG91dEV4aXRTaXRlRmVlZGJhY2soCisgICAgICAgIGxvY2tlciwgYmFzZWxpbmVCbG9jaywg
bWFwLmdldChDb2RlT3JpZ2luKGJ5dGVjb2RlSW5kZXgpKS5zdHViSW5mbyk7CisKKyAgICBpZiAo
ZGlkRXhpdCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5zbG93VmVyc2lvbigpOworI2Vsc2UKKyAg
ICBVTlVTRURfUEFSQU0obWFwKTsKKyAgICBVTlVTRURfUEFSQU0oZGlkRXhpdCk7CisgICAgVU5V
U0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOworI2VuZGlmCisKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCisjaWYgRU5BQkxFKEpJVCkKK1NldFByaXZhdGVCcmFuZFN0YXR1czo6U2V0UHJpdmF0ZUJy
YW5kU3RhdHVzKFN0dWJJbmZvU3VtbWFyeSBzdW1tYXJ5LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1
YkluZm8pCit7CisgICAgc3dpdGNoIChzdW1tYXJ5KSB7CisgICAgY2FzZSBTdHViSW5mb1N1bW1h
cnk6Ok5vSW5mb3JtYXRpb246CisgICAgICAgIG1fc3RhdGUgPSBOb0luZm9ybWF0aW9uOworICAg
ICAgICByZXR1cm47CisgICAgY2FzZSBTdHViSW5mb1N1bW1hcnk6OlNpbXBsZToKKyAgICBjYXNl
IFN0dWJJbmZvU3VtbWFyeTo6TWFrZXNDYWxsczoKKyAgICBjYXNlIFN0dWJJbmZvU3VtbWFyeTo6
VGFrZXNTbG93UGF0aEFuZE1ha2VzQ2FsbHM6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFN0dWJJbmZvU3VtbWFyeTo6VGFr
ZXNTbG93UGF0aDoKKyAgICAgICAgbV9zdGF0ZSA9IHN0dWJJbmZvLnRvb2tTbG93UGF0aCA/IE9i
c2VydmVkVGFrZXNTbG93UGF0aCA6IExpa2VseVRha2VzU2xvd1BhdGg7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworU2V0UHJp
dmF0ZUJyYW5kU3RhdHVzIFNldFByaXZhdGVCcmFuZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZv
V2l0aG91dEV4aXRTaXRlRmVlZGJhY2soCisgICAgY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwg
Q29kZUJsb2NrKiBibG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvKQoreworICAgIFN0
dWJJbmZvU3VtbWFyeSBzdW1tYXJ5ID0gU3RydWN0dXJlU3R1YkluZm86OnN1bW1hcnkoYmxvY2st
PnZtKCksIHN0dWJJbmZvKTsKKyAgICBpZiAoIWlzSW5saW5lYWJsZShzdW1tYXJ5KSkKKyAgICAg
ICAgcmV0dXJuIFNldFByaXZhdGVCcmFuZFN0YXR1cyhzdW1tYXJ5LCAqc3R1YkluZm8pOworCisg
ICAgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzIHJlc3VsdDsKKyAgICByZXN1bHQubV9zdGF0ZSA9IFNp
bXBsZTsKKyAgICBzd2l0Y2ggKHN0dWJJbmZvLT5jYWNoZVR5cGUoKSkgeworICAgIGNhc2UgQ2Fj
aGVUeXBlOjpVbnNldDoKKyAgICAgICAgcmV0dXJuIFNldFByaXZhdGVCcmFuZFN0YXR1cyhOb0lu
Zm9ybWF0aW9uKTsKKworICAgIGNhc2UgQ2FjaGVUeXBlOjpTdHViOiB7CisgICAgICAgIFBvbHlt
b3JwaGljQWNjZXNzKiBsaXN0ID0gc3R1YkluZm8tPnUuc3R1YjsKKworICAgICAgICBmb3IgKHVu
c2lnbmVkIGxpc3RJbmRleCA9IDA7IGxpc3RJbmRleCA8IGxpc3QtPnNpemUoKTsgKytsaXN0SW5k
ZXgpIHsKKyAgICAgICAgICAgIGNvbnN0IEFjY2Vzc0Nhc2UmIGFjY2VzcyA9IGxpc3QtPmF0KGxp
c3RJbmRleCk7CisKKyAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYWNjZXNzLnN0
cnVjdHVyZSgpOworICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSk7CisgICAgICAgICAgICBB
U1NFUlQoYWNjZXNzLnR5cGUoKSA9PSBBY2Nlc3NDYXNlOjpTZXRQcml2YXRlQnJhbmQpOworCisg
ICAgICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6c2V0QnJhbmRU
cmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlQ29uY3VycmVudGx5KHN0cnVjdHVyZSwgYWNj
ZXNzLmlkZW50aWZpZXIoKS51aWQoKSk7CisgICAgICAgICAgICBpZiAoIW5ld1N0cnVjdHVyZSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gU2V0UHJpdmF0ZUJyYW5kU3RhdHVzKEpTQzo6c2xvd1Zl
cnNpb24oc3VtbWFyeSksICpzdHViSW5mbyk7CisKKyAgICAgICAgICAgIFNldFByaXZhdGVCcmFu
ZFZhcmlhbnQgdmFyaWFudChhY2Nlc3MuaWRlbnRpZmllcigpLCBzdHJ1Y3R1cmUsIG5ld1N0cnVj
dHVyZSk7CisgICAgICAgICAgICBpZiAoIXJlc3VsdC5hcHBlbmRWYXJpYW50KHZhcmlhbnQpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBTZXRQcml2YXRlQnJhbmRTdGF0dXMoSlNDOjpzbG93VmVy
c2lvbihzdW1tYXJ5KSwgKnN0dWJJbmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfQorCisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIFNldFByaXZhdGVC
cmFuZFN0YXR1cyhKU0M6OnNsb3dWZXJzaW9uKHN1bW1hcnkpLCAqc3R1YkluZm8pOworICAgIH0K
KworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFNldFByaXZh
dGVCcmFuZFN0YXR1cygpOworfQorCitTZXRQcml2YXRlQnJhbmRTdGF0dXMgU2V0UHJpdmF0ZUJy
YW5kU3RhdHVzOjpjb21wdXRlRm9yKAorICAgIENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgSUNT
dGF0dXNNYXAmIGJhc2VsaW5lTWFwLAorICAgIElDU3RhdHVzQ29udGV4dFN0YWNrJiBjb250ZXh0
U3RhY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbikKK3sKKyAgICBCeXRlY29kZUluZGV4IGJ5dGVj
b2RlSW5kZXggPSBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgoKTsKKyAgICBFeGl0RmxhZyBkaWRF
eGl0ID0gaGFzQmFkQ2FjaGVFeGl0U2l0ZShiYXNlbGluZUJsb2NrLCBieXRlY29kZUluZGV4KTsK
KworICAgIGZvciAoSUNTdGF0dXNDb250ZXh0KiBjb250ZXh0IDogY29udGV4dFN0YWNrKSB7Cisg
ICAgICAgIElDU3RhdHVzIHN0YXR1cyA9IGNvbnRleHQtPmdldChjb2RlT3JpZ2luKTsKKworICAg
ICAgICBhdXRvIGJsZXNzID0gWyZdIChjb25zdCBTZXRQcml2YXRlQnJhbmRTdGF0dXMmIHJlc3Vs
dCkgLT4gU2V0UHJpdmF0ZUJyYW5kU3RhdHVzIHsKKyAgICAgICAgICAgIGlmICghY29udGV4dC0+
aXNJbmxpbmVkKGNvZGVPcmlnaW4pKSB7CisgICAgICAgICAgICAgICAgU2V0UHJpdmF0ZUJyYW5k
U3RhdHVzIGJhc2VsaW5lUmVzdWx0ID0gY29tcHV0ZUZvckJhc2VsaW5lKAorICAgICAgICAgICAg
ICAgICAgICBiYXNlbGluZUJsb2NrLCBiYXNlbGluZU1hcCwgYnl0ZWNvZGVJbmRleCwgZGlkRXhp
dCk7CisgICAgICAgICAgICAgICAgYmFzZWxpbmVSZXN1bHQubWVyZ2UocmVzdWx0KTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gYmFzZWxpbmVSZXN1bHQ7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAoZGlkRXhpdC5pc1NldChFeGl0RnJvbUlubGluZWQpKQorICAgICAgICAgICAgICAg
IHJldHVybiByZXN1bHQuc2xvd1ZlcnNpb24oKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHN0YXR1cy5zdHViSW5mbykgeworICAgICAgICAg
ICAgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzIHJlc3VsdDsKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvbnRleHQtPm9wdGltaXplZENvZGVC
bG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBjb21wdXRlRm9yU3R1Yklu
Zm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjaygKKyAgICAgICAgICAgICAgICAgICAgbG9ja2VyLCBj
b250ZXh0LT5vcHRpbWl6ZWRDb2RlQmxvY2ssIHN0YXR1cy5zdHViSW5mbyk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAocmVzdWx0LmlzU2V0KCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGJsZXNzKHJlc3VsdCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gY29tcHV0
ZUZvckJhc2VsaW5lKGJhc2VsaW5lQmxvY2ssIGJhc2VsaW5lTWFwLCBieXRlY29kZUluZGV4LCBk
aWRFeGl0KTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShKSVQpCisKK1NldFByaXZhdGVCcmFuZFN0
YXR1cyBTZXRQcml2YXRlQnJhbmRTdGF0dXM6OnNsb3dWZXJzaW9uKCkgY29uc3QKK3sKKyAgICBp
ZiAob2JzZXJ2ZWRTbG93UGF0aCgpKQorICAgICAgICByZXR1cm4gU2V0UHJpdmF0ZUJyYW5kU3Rh
dHVzKE9ic2VydmVkVGFrZXNTbG93UGF0aCk7CisgICAgcmV0dXJuIFNldFByaXZhdGVCcmFuZFN0
YXR1cyhMaWtlbHlUYWtlc1Nsb3dQYXRoKTsKK30KKwordm9pZCBTZXRQcml2YXRlQnJhbmRTdGF0
dXM6Om1lcmdlKGNvbnN0IFNldFByaXZhdGVCcmFuZFN0YXR1cyYgb3RoZXIpCit7CisgICAgaWYg
KG90aGVyLm1fc3RhdGUgPT0gTm9JbmZvcm1hdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byBtZXJnZVNsb3cgPSBbJl0gKCkgeworICAgICAgICBpZiAob2JzZXJ2ZWRTbG93UGF0aCgp
IHx8IG90aGVyLm9ic2VydmVkU2xvd1BhdGgoKSkKKyAgICAgICAgICAgICp0aGlzID0gU2V0UHJp
dmF0ZUJyYW5kU3RhdHVzKE9ic2VydmVkVGFrZXNTbG93UGF0aCk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICp0aGlzID0gU2V0UHJpdmF0ZUJyYW5kU3RhdHVzKExpa2VseVRha2VzU2xvd1Bh
dGgpOworICAgIH07CisKKyAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKKyAgICBjYXNlIE5vSW5mb3Jt
YXRpb246CisgICAgICAgICp0aGlzID0gb3RoZXI7CisgICAgICAgIHJldHVybjsKKworICAgIGNh
c2UgU2ltcGxlOgorICAgICAgICBpZiAobV9zdGF0ZSAhPSBvdGhlci5tX3N0YXRlKQorICAgICAg
ICAgICAgcmV0dXJuIG1lcmdlU2xvdygpOworCisgICAgICAgIGZvciAoYXV0byYgb3RoZXJWYXJp
YW50IDogb3RoZXIubV92YXJpYW50cykgeworICAgICAgICAgICAgaWYgKCFhcHBlbmRWYXJpYW50
KG90aGVyVmFyaWFudCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1lcmdlU2xvdygpOworICAg
ICAgICB9CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgTGlrZWx5VGFrZXNTbG93UGF0aDoK
KyAgICBjYXNlIE9ic2VydmVkVGFrZXNTbG93UGF0aDoKKyAgICAgICAgcmV0dXJuIG1lcmdlU2xv
dygpOworICAgIH0KKworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3Zv
aWQgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOjpmaWx0ZXIoY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1
Y3R1cmVTZXQpCit7CisgICAgaWYgKG1fc3RhdGUgIT0gU2ltcGxlKQorICAgICAgICByZXR1cm47
CisgICAgbV92YXJpYW50cy5yZW1vdmVBbGxNYXRjaGluZygKKyAgICAgICAgWyZdIChhdXRvJiB2
YXJpYW50KSAtPiBib29sIHsKKyAgICAgICAgICAgIHJldHVybiAhc3RydWN0dXJlU2V0LmNvbnRh
aW5zKHZhcmlhbnQub2xkU3RydWN0dXJlKCkpOworICAgICAgICB9KTsKKyAgICBpZiAobV92YXJp
YW50cy5pc0VtcHR5KCkpCisgICAgICAgIG1fc3RhdGUgPSBOb0luZm9ybWF0aW9uOworfQorCitD
YWNoZWFibGVJZGVudGlmaWVyIFNldFByaXZhdGVCcmFuZFN0YXR1czo6c2luZ2xlSWRlbnRpZmll
cigpIGNvbnN0Cit7CisgICAgaWYgKG1fdmFyaWFudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIENhY2hlYWJsZUlkZW50aWZpZXIgcmVzdWx0ID0gbV92YXJpYW50
cy5maXJzdCgpLmlkZW50aWZpZXIoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBtX3ZhcmlhbnRzLnNpemUoKTsg
KytpKSB7CisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IG1fdmFyaWFu
dHNbaV0uaWRlbnRpZmllcigpOworICAgICAgICBpZiAoIWlkZW50aWZpZXIpCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaWYgKGlkZW50aWZpZXIgIT0gcmVzdWx0KQorICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K3ZvaWQgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOjp2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYg
dmlzaXRvcikKK3sKKyAgICBmb3IgKFNldFByaXZhdGVCcmFuZFZhcmlhbnQmIHZhcmlhbnQgOiBt
X3ZhcmlhbnRzKQorICAgICAgICB2YXJpYW50LnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOworfQor
Cit2b2lkIFNldFByaXZhdGVCcmFuZFN0YXR1czo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCit7CisgICAgZm9yIChTZXRQcml2YXRlQnJhbmRWYXJpYW50JiB2YXJpYW50IDogbV92
YXJpYW50cykKKyAgICAgICAgdmFyaWFudC5tYXJrSWZDaGVhcCh2aXNpdG9yKTsKK30KKworYm9v
bCBTZXRQcml2YXRlQnJhbmRTdGF0dXM6OmZpbmFsaXplKFZNJiB2bSkKK3sKKyAgICBmb3IgKGF1
dG8mIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKSB7CisgICAgICAgIGlmICghdmFyaWFudC5maW5hbGl6
ZSh2bSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVl
OworfQorCit2b2lkIFNldFByaXZhdGVCcmFuZFN0YXR1czo6ZHVtcChQcmludFN0cmVhbSYgb3V0
KSBjb25zdAoreworICAgIG91dC5wcmludCgiKCIpOworICAgIHN3aXRjaCAobV9zdGF0ZSkgewor
ICAgIGNhc2UgTm9JbmZvcm1hdGlvbjoKKyAgICAgICAgb3V0LnByaW50KCJOb0luZm9ybWF0aW9u
Iik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2ltcGxlOgorICAgICAgICBvdXQucHJpbnQo
IlNpbXBsZSIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIExpa2VseVRha2VzU2xvd1BhdGg6
CisgICAgICAgIG91dC5wcmludCgiTGlrZWx5VGFrZXNTbG93UGF0aCIpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIE9ic2VydmVkVGFrZXNTbG93UGF0aDoKKyAgICAgICAgb3V0LnByaW50KCJP
YnNlcnZlZFRha2VzU2xvd1BhdGgiKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIG91dC5w
cmludCgiLCAiLCBsaXN0RHVtcChtX3ZhcmlhbnRzKSwgIikiKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2V0UHJp
dmF0ZUJyYW5kU3RhdHVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2V0UHJp
dmF0ZUJyYW5kU3RhdHVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWUxMjgyZjI0ZWQwYjk0N2QxZTg2M2RkNjEz
MGE4MTQ0YmE0ZDUzOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TZXRQcml2YXRlQnJhbmRTdGF0dXMuaApAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuQS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIkNvZGVPcmlnaW4u
aCIKKyNpbmNsdWRlICJDb25jdXJyZW50SlNMb2NrLmgiCisjaW5jbHVkZSAiRXhpdEZsYWcuaCIK
KyNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgorI2luY2x1ZGUgIlNldFByaXZhdGVCcmFuZFZhcmlh
bnQuaCIKKyNpbmNsdWRlICJTdHViSW5mb1N1bW1hcnkuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIEFjY2Vzc0Nhc2U7CitjbGFzcyBDb2RlQmxvY2s7CitjbGFzcyBTdHJ1Y3R1cmVTdHVi
SW5mbzsKKworY2xhc3MgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzIGZpbmFsIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBlbnVtIFN0YXRlIDogdWludDhfdCB7Cisg
ICAgICAgIC8vIEl0J3MgdW5jYWNoZWQgc28gd2UgaGF2ZSBubyBpbmZvcm1hdGlvbi4KKyAgICAg
ICAgTm9JbmZvcm1hdGlvbiwKKyAgICAgICAgLy8gSXQncyBjYWNoZWQgZm9yIGEgc2ltcGxlIGFj
Y2Vzcy4KKyAgICAgICAgU2ltcGxlLAorICAgICAgICAvLyBJdCB3aWxsIGxpa2VseSB0YWtlIHRo
ZSBzbG93IHBhdGguCisgICAgICAgIExpa2VseVRha2VzU2xvd1BhdGgsCisgICAgICAgIC8vIEl0
IGhhcyBiZWVuIHNlZW4gdG8gdGFrZSB0aGUgc2xvdyBwYXRoLgorICAgICAgICBPYnNlcnZlZFRh
a2VzU2xvd1BhdGgsCisgICAgfTsKKworICAgIFNldFByaXZhdGVCcmFuZFN0YXR1cygpCisgICAg
ICAgIDogbV9zdGF0ZShOb0luZm9ybWF0aW9uKQorICAgIHsKKyAgICB9CisKKyAgICBleHBsaWNp
dCBTZXRQcml2YXRlQnJhbmRTdGF0dXMoU3RhdGUgc3RhdGUpCisgICAgICAgIDogbV9zdGF0ZShz
dGF0ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChzdGF0ZSAhPSBTaW1wbGUpOworICAgIH0KKwor
ICAgIHN0YXRpYyBTZXRQcml2YXRlQnJhbmRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqIGJh
c2VsaW5lQmxvY2ssIElDU3RhdHVzTWFwJiBiYXNlbGluZU1hcCwgSUNTdGF0dXNDb250ZXh0U3Rh
Y2smIGRmZ0NvbnRleHRTdGFjaywgQ29kZU9yaWdpbik7CisKKyAgICBTdGF0ZSBzdGF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KKworICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVy
biBtX3N0YXRlICE9IE5vSW5mb3JtYXRpb247IH0KKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0
IHsgcmV0dXJuICFpc1NldCgpOyB9CisgICAgYm9vbCBvYnNlcnZlZFNsb3dQYXRoKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGF0ZSA9PSBPYnNlcnZlZFRha2VzU2xvd1BhdGg7IH0KKyAgICBib29sIGlz
U2ltcGxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBTaW1wbGU7IH0KKyAgICBjb25zdCBW
ZWN0b3I8U2V0UHJpdmF0ZUJyYW5kVmFyaWFudCwgMT4mIHZhcmlhbnRzKCkgeyByZXR1cm4gbV92
YXJpYW50czsgfQorICAgIENhY2hlYWJsZUlkZW50aWZpZXIgc2luZ2xlSWRlbnRpZmllcigpIGNv
bnN0OworCisgICAgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzIHNsb3dWZXJzaW9uKCkgY29uc3Q7CisK
KyAgICAvLyBBdHRlbXB0cyB0byByZWR1Y2UgdGhlIHNldCBvZiB2YXJpYW50cyB0byBmaXQgdGhl
IGdpdmVuIHN0cnVjdHVyZSBzZXQuIFRoaXMgbWF5IGJlIGFwcHJveGltYXRlLgorICAgIHZvaWQg
ZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYpOworCisgICAgdm9pZCB2aXNpdEFnZ3JlZ2F0ZShT
bG90VmlzaXRvciYpOworICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKTsKKyAgICBi
b29sIGZpbmFsaXplKFZNJik7CisKKyAgICBib29sIGFwcGVuZFZhcmlhbnQoY29uc3QgU2V0UHJp
dmF0ZUJyYW5kVmFyaWFudCYpOworCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7
CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzKFN0dWJJbmZv
U3VtbWFyeSwgU3RydWN0dXJlU3R1YkluZm8mKTsKKyAgICB2b2lkIG1lcmdlKGNvbnN0IFNldFBy
aXZhdGVCcmFuZFN0YXR1cyYpOworCisgICAgc3RhdGljIFNldFByaXZhdGVCcmFuZFN0YXR1cyBj
b21wdXRlRm9yQmFzZWxpbmUoQ29kZUJsb2NrKiwgSUNTdGF0dXNNYXAmLCBCeXRlY29kZUluZGV4
LCBFeGl0RmxhZyk7CisjaWYgRU5BQkxFKEpJVCkKKyAgICBzdGF0aWMgU2V0UHJpdmF0ZUJyYW5k
U3RhdHVzIGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKAorICAgICAg
ICBjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIFN0
cnVjdHVyZVN0dWJJbmZvKik7CisjZW5kaWYKKworICAgIFZlY3RvcjxTZXRQcml2YXRlQnJhbmRW
YXJpYW50LCAxPiBtX3ZhcmlhbnRzOworICAgIFN0YXRlIG1fc3RhdGU7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
ZXRQcml2YXRlQnJhbmRWYXJpYW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TZXRQcml2YXRlQnJhbmRWYXJpYW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZGRkZThhMjkxM2I2ZWU0
ODZiNjhhY2JmNDBhMDQ3N2Y5OTBiZGFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1NldFByaXZhdGVCcmFuZFZhcmlhbnQuY3BwCkBAIC0wLDAgKzEs
MTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5BLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2V0UHJpdmF0ZUJyYW5kVmFyaWFudC5oIgorCisj
aW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK1NldFByaXZhdGVCcmFuZFZhcmlhbnQ6OlNldFByaXZhdGVCcmFuZFZhcmlhbnQoQ2FjaGVh
YmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0
dXJlKiBuZXdTdHJ1Y3R1cmUpCisgICAgOiBtX29sZFN0cnVjdHVyZShvbGRTdHJ1Y3R1cmUpCisg
ICAgLCBtX25ld1N0cnVjdHVyZShuZXdTdHJ1Y3R1cmUpCisgICAgLCBtX2lkZW50aWZpZXIoV1RG
TW92ZShpZGVudGlmaWVyKSkKK3sgfQorCitTZXRQcml2YXRlQnJhbmRWYXJpYW50Ojp+U2V0UHJp
dmF0ZUJyYW5kVmFyaWFudCgpIHsgfQorCitTZXRQcml2YXRlQnJhbmRWYXJpYW50OjpTZXRQcml2
YXRlQnJhbmRWYXJpYW50KGNvbnN0IFNldFByaXZhdGVCcmFuZFZhcmlhbnQmIG90aGVyKQorewor
ICAgICp0aGlzID0gb3RoZXI7Cit9CisKK2Jvb2wgU2V0UHJpdmF0ZUJyYW5kVmFyaWFudDo6YXR0
ZW1wdFRvTWVyZ2UoY29uc3QgU2V0UHJpdmF0ZUJyYW5kVmFyaWFudCYgb3RoZXIpCit7CisgICAg
aWYgKCEhbV9pZGVudGlmaWVyICE9ICEhb3RoZXIubV9pZGVudGlmaWVyKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAobV9pZGVudGlmaWVyICYmIChtX2lkZW50aWZpZXIgIT0gb3Ro
ZXIubV9pZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fb2xk
U3RydWN0dXJlICE9IG90aGVyLm1fb2xkU3RydWN0dXJlKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgQVNTRVJUKG1fbmV3U3RydWN0dXJlID09IG90aGVyLm1fbmV3U3RydWN0dXJlKTsKKwor
ICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFNldFByaXZhdGVCcmFuZFZhcmlhbnQ6Om1hcmtJ
ZkNoZWFwKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGlmIChtX29sZFN0cnVjdHVyZSkK
KyAgICAgICAgbV9vbGRTdHJ1Y3R1cmUtPm1hcmtJZkNoZWFwKHZpc2l0b3IpOworICAgIGlmICht
X25ld1N0cnVjdHVyZSkKKyAgICAgICAgbV9uZXdTdHJ1Y3R1cmUtPm1hcmtJZkNoZWFwKHZpc2l0
b3IpOworfQorCitib29sIFNldFByaXZhdGVCcmFuZFZhcmlhbnQ6OmZpbmFsaXplKFZNJiB2bSkK
K3sKKyAgICBpZiAoIXZtLmhlYXAuaXNNYXJrZWQobV9vbGRTdHJ1Y3R1cmUpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fbmV3U3RydWN0dXJlICYmICF2bS5oZWFwLmlzTWFya2Vk
KG1fbmV3U3RydWN0dXJlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVl
OworfQorCit2b2lkIFNldFByaXZhdGVCcmFuZFZhcmlhbnQ6OnZpc2l0QWdncmVnYXRlKFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQoreworICAgIG1faWRlbnRpZmllci52aXNpdEFnZ3JlZ2F0ZSh2aXNp
dG9yKTsKK30KKwordm9pZCBTZXRQcml2YXRlQnJhbmRWYXJpYW50OjpkdW1wKFByaW50U3RyZWFt
JiBvdXQpIGNvbnN0Cit7CisgICAgZHVtcEluQ29udGV4dChvdXQsIG51bGxwdHIpOworfQorCit2
b2lkIFNldFByaXZhdGVCcmFuZFZhcmlhbnQ6OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91
dCwgRHVtcENvbnRleHQqKSBjb25zdAoreworICAgIG91dC5wcmludCgiPCIpOworICAgIG91dC5w
cmludCgiaWQ9JyIsIG1faWRlbnRpZmllciwgIiciKTsKKyAgICBpZiAobV9vbGRTdHJ1Y3R1cmUp
CisgICAgICAgIG91dC5wcmludCgiLCAiLCAqbV9vbGRTdHJ1Y3R1cmUpOworICAgIGlmIChtX25l
d1N0cnVjdHVyZSkKKyAgICAgICAgb3V0LnByaW50KCIgLT4gIiwgKm1fbmV3U3RydWN0dXJlKTsK
KyAgICBvdXQucHJpbnQoIj4iKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2V0UHJpdmF0ZUJyYW5kVmFyaWFudC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NldFByaXZhdGVCcmFuZFZhcmlhbnQu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iODVlNGEwZTAxYWZkNGRiYTBlOGM2ZTY0NjcyNDRiMGYzNmEwYjNhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NldFByaXZh
dGVCcmFuZFZhcmlhbnQuaApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAy
MSBJZ2FsaWEgUy5BLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNhY2hlYWJs
ZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYvQm94Lmg+CisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBTZXRQcml2YXRlQnJhbmRTdGF0dXM7CisKK2NsYXNzIFNldFByaXZhdGVCcmFuZFZh
cmlhbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFNldFBy
aXZhdGVCcmFuZFZhcmlhbnQoQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlKiBvbGRTdHJ1
Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKTsKKworICAgIH5TZXRQcml2YXRlQnJhbmRW
YXJpYW50KCk7CisKKyAgICBTZXRQcml2YXRlQnJhbmRWYXJpYW50KGNvbnN0IFNldFByaXZhdGVC
cmFuZFZhcmlhbnQmKTsKKworICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV9vbGRTdHJ1Y3R1cmU7IH0KKyAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbmV3U3RydWN0dXJlOyB9CisKKyAgICBib29sIGF0dGVtcHRUb01lcmdl
KGNvbnN0IFNldFByaXZhdGVCcmFuZFZhcmlhbnQmIG90aGVyKTsKKworICAgIHZvaWQgdmlzaXRB
Z2dyZWdhdGUoU2xvdFZpc2l0b3ImKTsKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9y
Jik7CisgICAgYm9vbCBmaW5hbGl6ZShWTSYpOworCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFt
JikgY29uc3Q7CisgICAgdm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRl
eHQqKSBjb25zdDsKKworICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0
IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCisgICAgYm9vbCBvdmVybGFwcyhjb25zdCBTZXRQ
cml2YXRlQnJhbmRWYXJpYW50JiBvdGhlcikKKyAgICB7CisgICAgICAgIGlmICghIW1faWRlbnRp
ZmllciAhPSAhIW90aGVyLm1faWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICBpZiAobV9pZGVudGlmaWVyKSB7CisgICAgICAgICAgICBpZiAobV9pZGVudGlmaWVy
ICE9IG90aGVyLm1faWRlbnRpZmllcikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1fb2xkU3RydWN0dXJlID09IG90aGVyLm1fb2xkU3Ry
dWN0dXJlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgU2V0UHJpdmF0ZUJy
YW5kU3RhdHVzOworCisgICAgU3RydWN0dXJlKiBtX29sZFN0cnVjdHVyZTsKKyAgICBTdHJ1Y3R1
cmUqIG1fbmV3U3RydWN0dXJlOworICAgIENhY2hlYWJsZUlkZW50aWZpZXIgbV9pZGVudGlmaWVy
OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAppbmRleCA1MjZmZGFiYmE1NGQ5Mjc0
YjNkNWI4MmI4N2NmOGYwODEzOGE2NDk2Li4yNjZkN2Q4NTc2NDZiMzg4NWVmODc0M2E4OTMwMTJh
NDQ0NWE5MWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Ry
dWN0dXJlU3R1YkluZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
dHJ1Y3R1cmVTdHViSW5mby5jcHAKQEAgLTI4NCw2ICsyODQsMTIgQEAgdm9pZCBTdHJ1Y3R1cmVT
dHViSW5mbzo6cmVzZXQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyQmFzZSYgbG9ja2VyLCBDb2Rl
QmxvY2sqIGMKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5VmFsOgogICAgICAgICByZXNl
dERlbEJ5KGNvZGVCbG9jaywgKnRoaXMsIERlbEJ5S2luZDo6Tm9ybWFsQnlWYWwpOwogICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0ZUJyYW5kOgorICAgICAg
ICByZXNldENoZWNrUHJpdmF0ZUJyYW5kKGNvZGVCbG9jaywgKnRoaXMpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVCcmFuZDoKKyAgICAgICAgcmVzZXRT
ZXRQcml2YXRlQnJhbmQoY29kZUJsb2NrLCAqdGhpcyk7CisgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICAKICAgICBkZXJlZigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3RydWN0dXJlU3R1YkluZm8uaAppbmRleCA4OWRmNGQ3YjEyOGNjYmMwNDk2ZDE1ZWRkNjI2
NmNmZTdkMjI4Y2QyLi5jNWJiOTVlMGMzNzdiN2M5Yjk0ZDM4YzViNDQ4MWFlMjliYmFjMmUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1Yklu
Zm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1Yklu
Zm8uaApAQCAtNTksNiArNTksOCBAQCBlbnVtIGNsYXNzIEFjY2Vzc1R5cGUgOiBpbnQ4X3Qgewog
ICAgIERlbGV0ZUJ5SUQsCiAgICAgRGVsZXRlQnlWYWwsCiAgICAgR2V0UHJpdmF0ZU5hbWUsCisg
ICAgQ2hlY2tQcml2YXRlQnJhbmQsCisgICAgU2V0UHJpdmF0ZUJyYW5kLAogfTsKIAogZW51bSBj
bGFzcyBDYWNoZVR5cGUgOiBpbnQ4X3QgewpAQCAtMzUyLDYgKzM1NCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgR1BSUmVnIHRoaXNHUFI7CiAgICAgICAgIEdQUlJlZyBwcm90b3R5cGVHUFI7CiAgICAg
ICAgIEdQUlJlZyBwcm9wZXJ0eUdQUjsKKyAgICAgICAgR1BSUmVnIGJyYW5kR1BSOwogICAgIH0g
cmVnczsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIEdQUlJlZyB2YWx1ZVRhZ0dQUjsKQEAg
LTM2MSw2ICszNjQsNyBAQCBwdWJsaWM6CiAgICAgdW5pb24gewogICAgICAgICBHUFJSZWcgdGhp
c1RhZ0dQUjsKICAgICAgICAgR1BSUmVnIHByb3BlcnR5VGFnR1BSOworICAgICAgICBHUFJSZWcg
YnJhbmRUYWdHUFI7CiAgICAgfSB2OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IGIzYWRjMGI3N2Vi
N2M3MjQxODZhOTgxYzYzNTNjMzE5YTU5OWIwZTAuLjkzZGZmNzc0MmQzNzRlZWMzZWZhMmRlMDc0
ZTI4NDgxZjk2OTYxNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtNjksNiArNjksMTAgQEAgVW5saW5rZWRDb2Rl
QmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENv
ZGVUeXBlIGNvZGUKICAgICAgICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeShob2xkTG9jayhj
ZWxsTG9jaygpKSk7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6
Olllcyk7CiAgICAgfQorICAgIGlmIChpbmZvLnByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkgPT0g
UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5lZWRlZCkgeworICAgICAgICBjcmVhdGVSYXJlRGF0
YUlmTmVjZXNzYXJ5KGhvbGRMb2NrKGNlbGxMb2NrKCkpKTsKKyAgICAgICAgbV9yYXJlRGF0YS0+
bV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcml2YXRl
QnJhbmRSZXF1aXJlbWVudDo6TmVlZGVkKTsKKyAgICB9CiB9CiAKIHZvaWQgVW5saW5rZWRDb2Rl
QmxvY2s6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmgKaW5kZXggMDBkYzYxNjMzNWZkMzFiMDQzMjUxZTM0NDAwZTU3ZGVmNTMxNWQ1Zi4uMWY1MWVj
ZTVkNmY4NmQ3MDk1MTFiNGE0YzE4MmM2NGNiZmExODNiZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTI2Niw2ICsyNjYs
MTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6
Ok5vOwogICAgIH0KIAorICAgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJl
cXVpcmVtZW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX3JhcmVEYXRhKQorICAgICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFByaXZhdGVCcmFuZFJlcXVpcmVtZW50PihtX3JhcmVE
YXRhLT5tX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50KTsKKyAgICAgICAgcmV0dXJuIFByaXZhdGVC
cmFuZFJlcXVpcmVtZW50OjpOb25lOworICAgIH0KKwogICAgIHZvaWQgZHVtcChQcmludFN0cmVh
bSYpIGNvbnN0OwogCiAgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBsaXZlbmVzc0FuYWx5
c2lzKENvZGVCbG9jayogY29kZUJsb2NrKQpAQCAtNDA3LDYgKzQxNCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgUmVmQ291bnRlZEFycmF5PENvbnN0YW50SWRlbnRpZmllclNldEVudHJ5PiBtX2NvbnN0
YW50SWRlbnRpZmllclNldHM7CiAKICAgICAgICAgdW5zaWduZWQgbV9uZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplciA6IDE7CisgICAgICAgIHVuc2lnbmVkIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQgOiAxOwogICAgIH07CiAKICAgICBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNldChJbnN0cnVjdGlv
blN0cmVhbTo6T2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmgKaW5kZXggMmViOTg0YzFiMDVh
NDVlMGFhNTIwZTFmZDM3OGFkOWUyZmM5MzIyMi4uOTRjNjg3MGU5OTRjMmJmNWM5ODJjZTk1MmU0
YzUzNGJkYzk2YjQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmgKQEAgLTUwLDYgKzUwLDcgQEAg
cHVibGljOgogICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBt
X2NvZGVCbG9jay0+c3VwZXJCaW5kaW5nKCk7IH0KICAgICBKU1BhcnNlclNjcmlwdE1vZGUgc2Ny
aXB0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5zY3JpcHRNb2RlKCk7IH0KICAg
ICBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigp
IGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigp
OyB9CisgICAgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQo
KSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKTsg
fQogICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+dXNlc0V2
YWwoKTsgfQogICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBt
X2NvZGVCbG9jay0+cGFyc2VNb2RlKCk7IH0KICAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIHsg
cmV0dXJuIG1fY29kZUJsb2NrLT5pc0Fycm93RnVuY3Rpb24oKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5jcHAKaW5kZXggN2VjYjRmYzc1OWFkMGYxMTM4OWI2NjY5NDNmMDU3ZGYzYjNkZDcxZS4u
ODA1ZGY4MGFkNTI2OTZkZTI0YTEwMmJhZThjMzQ4NGQ3NWFmYzk2YiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUuY3BwCkBAIC03MCwxMSArNzAsMTIgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKIAogICAgIGJvb2wg
aXNDbGFzc0NvbnRleHQgPSBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSA9PSBTdXBlckJpbmRp
bmc6Ok5lZWRlZCB8fCBleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6
OkNsYXNzRmllbGRJbml0aWFsaXplck1vZGU7CiAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrKiByZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUodm0sIEZ1bmN0
aW9uQ29kZSwgRXhlY3V0YWJsZUluZm8oZnVuY3Rpb24tPnVzZXNFdmFsKCksIGtpbmQgPT0gQ29k
ZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBl
eGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgc2NyaXB0TW9kZSwgZXhlY3V0YWJsZS0+c3Vw
ZXJCaW5kaW5nKCksIHBhcnNlTW9kZSwgZXhlY3V0YWJsZS0+ZGVyaXZlZENvbnRleHRUeXBlKCks
IGV4ZWN1dGFibGUtPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGZhbHNlLCBpc0NsYXNz
Q29udGV4dCwgRXZhbENvbnRleHRUeXBlOjpGdW5jdGlvbkV2YWxDb250ZXh0KSwgY29kZUdlbmVy
YXRpb25Nb2RlKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29kZSwgRXhlY3V0YWJs
ZUluZm8oZnVuY3Rpb24tPnVzZXNFdmFsKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZXhl
Y3V0YWJsZS0+cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSwgZnVuY3Rpb25LaW5kID09IFVubGlu
a2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgc2NyaXB0
TW9kZSwgZXhlY3V0YWJsZS0+c3VwZXJCaW5kaW5nKCksIHBhcnNlTW9kZSwgZXhlY3V0YWJsZS0+
ZGVyaXZlZENvbnRleHRUeXBlKCksIGV4ZWN1dGFibGUtPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyKCksIGZhbHNlLCBpc0NsYXNzQ29udGV4dCwgRXZhbENvbnRleHRUeXBlOjpGdW5jdGlvbkV2
YWxDb250ZXh0KSwgY29kZUdlbmVyYXRpb25Nb2RlKTsKIAogICAgIGF1dG8gcGFyZW50U2NvcGVU
RFpWYXJpYWJsZXMgPSBleGVjdXRhYmxlLT5wYXJlbnRTY29wZVREWlZhcmlhYmxlcygpOworICAg
IFByaXZhdGVOYW1lRW52aXJvbm1lbnQgcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCA9IGV4
ZWN1dGFibGUtPnBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQoKTsKICAgICBFQ01BTW9kZSBl
Y21hTW9kZSA9IGV4ZWN1dGFibGUtPmlzSW5TdHJpY3RDb250ZXh0KCkgPyBFQ01BTW9kZTo6c3Ry
aWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCk7Ci0gICAgZXJyb3IgPSBCeXRlY29kZUdlbmVyYXRv
cjo6Z2VuZXJhdGUodm0sIGZ1bmN0aW9uLmdldCgpLCBzb3VyY2UsIHJlc3VsdCwgY29kZUdlbmVy
YXRpb25Nb2RlLCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgZWNtYU1vZGUpOworICAgIGVycm9y
ID0gQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKHZtLCBmdW5jdGlvbi5nZXQoKSwgc291cmNl
LCByZXN1bHQsIGNvZGVHZW5lcmF0aW9uTW9kZSwgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsICZw
YXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50LCBlY21hTW9kZSk7CiAKICAgICBpZiAoZXJyb3Iu
aXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTgyLDcgKzgzLDcgQEAgc3Rh
dGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9jaygKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgY29uc3QgU291cmNlQ29kZSYgcGFyZW50U291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9k
ZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQga2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25z
dHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgUmVmUHRyPFREWkVu
dmlyb25tZW50TGluaz4gcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIERlcml2ZWRDb250ZXh0VHlw
ZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9y
KQorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHBhcmVudFNv
dXJjZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGtp
bmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2Rl
IHNjcmlwdE1vZGUsIFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+IHBhcmVudFNjb3BlVERaVmFy
aWFibGVzLCBPcHRpb25hbDxQcml2YXRlTmFtZUVudmlyb25tZW50PiBwYXJlbnRQcml2YXRlTmFt
ZUVudmlyb25tZW50LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGJvb2wgaXNCdWlsdGlu
RGVmYXVsdENsYXNzQ29uc3RydWN0b3IpCiAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCiAgICAg
LCBtX2ZpcnN0TGluZU9mZnNldChub2RlLT5maXJzdExpbmUoKSAtIHBhcmVudFNvdXJjZS5maXJz
dExpbmUoKS5vbmVCYXNlZEludCgpKQogICAgICwgbV9pc0luU3RyaWN0Q29udGV4dChub2RlLT5p
c0luU3RyaWN0Q29udGV4dCgpKQpAQCAtMTAzLDYgKzEwNCw3IEBAIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0CiAgICAgLCBtX3R5cGVQcm9maWxpbmdTdGFydE9mZnNldChub2RlLT5mdW5jdGlvbktl
eXdvcmRTdGFydCgpKQogICAgICwgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KG5vZGUtPnN0YXJ0
U3RhcnRPZmZzZXQoKSArIG5vZGUtPnNvdXJjZSgpLmxlbmd0aCgpIC0gMSkKICAgICAsIG1fcGFy
YW1ldGVyQ291bnQobm9kZS0+cGFyYW1ldGVyQ291bnQoKSkKKyAgICAsIG1fcHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHByaXZhdGVCcmFuZFJlcXVpcmVtZW50
KSkKICAgICAsIG1fZmVhdHVyZXMoMCkKICAgICAsIG1fc291cmNlUGFyc2VNb2RlKG5vZGUtPnBh
cnNlTW9kZSgpKQogICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSkKQEAgLTEyMiwxMiArMTI0LDE1IEBAIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0CiAgICAgQVNTRVJUKG1fc2NyaXB0TW9kZSA9PSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oc2NyaXB0TW9kZSkpOwogICAgIEFTU0VSVChtX3N1cGVyQmluZGluZyA9PSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+c3VwZXJCaW5kaW5nKCkpKTsKICAgICBBU1NFUlQobV9k
ZXJpdmVkQ29udGV4dFR5cGUgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlcml2ZWRDb250ZXh0
VHlwZSkpOworICAgIEFTU0VSVChtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID09IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihwcml2YXRlQnJhbmRSZXF1aXJlbWVudCkpOwogICAgIEFTU0VSVCghKG1f
aXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IgJiYgY29uc3RydWN0b3JLaW5kKCkgPT0g
Q29uc3RydWN0b3JLaW5kOjpOb25lKSk7CiAgICAgQVNTRVJUKCFtX25lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyIHx8IChpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIHx8IGRlcml2ZWRDb250
ZXh0VHlwZSA9PSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQp
KTsKICAgICBpZiAoIW5vZGUtPmNsYXNzU291cmNlKCkuaXNOdWxsKCkpCiAgICAgICAgIHNldENs
YXNzU291cmNlKG5vZGUtPmNsYXNzU291cmNlKCkpOwogICAgIGlmIChwYXJlbnRTY29wZVREWlZh
cmlhYmxlcykKICAgICAgICAgZW5zdXJlUmFyZURhdGEoKS5tX3BhcmVudFNjb3BlVERaVmFyaWFi
bGVzID0gV1RGTW92ZShwYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CisgICAgaWYgKHBhcmVudFBy
aXZhdGVOYW1lRW52aXJvbm1lbnQpCisgICAgICAgIGVuc3VyZVJhcmVEYXRhKCkubV9wYXJlbnRQ
cml2YXRlTmFtZUVudmlyb25tZW50ID0gV1RGTW92ZSgqcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9u
bWVudCk7CiB9CiAKIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp+VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCBiZWFmMWU1ZDViZThmMTFi
ZWZmM2VkM2IxYjgwNzk1OWM0NjI3YWI3Li5mYjdkYmE5ZWZiNGFhMDRkYWQzNmExMjgxYzAxMDhl
NTBmYmJlNGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtNzAsMTAgKzcwLDEwIEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuICZ2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNl
LnNwYWNlOwogICAgIH0KIAotICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
Y3JlYXRlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbk1ldGFkYXRh
Tm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQgdW5saW5rZWRGdW5jdGlvbktpbmQsIENv
bnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlw
dE1vZGUsIFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+IHBhcmVudFNjb3BlVERaVmFyaWFibGVz
LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0J1aWx0aW5EZWZh
dWx0Q2xhc3NDb25zdHJ1Y3RvciA9IGZhbHNlKQorICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogY3JlYXRlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5j
dGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQgdW5saW5rZWRGdW5j
dGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3Jp
cHRNb2RlIHNjcmlwdE1vZGUsIFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+IHBhcmVudFNjb3Bl
VERaVmFyaWFibGVzLCBPcHRpb25hbDxQcml2YXRlTmFtZUVudmlyb25tZW50PiBwYXJlbnRQcml2
YXRlTmFtZUVudmlyb25tZW50LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBl
LCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwg
UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGJvb2wgaXNC
dWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IgPSBmYWxzZSkKICAgICB7CiAgICAgICAgIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPih2bS5oZWFwKSkKLSAgICAgICAgICAg
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZVN0cnVjdHVyZS5nZXQoKSwgc291cmNlLCBub2RlLCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwg
Y29uc3RydWN0QWJpbGl0eSwgc2NyaXB0TW9kZSwgV1RGTW92ZShwYXJlbnRTY29wZVREWlZhcmlh
YmxlcyksIGRlcml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGlz
QnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKTsKKyAgICAgICAgICAgIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKHZtLCB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVy
ZS5nZXQoKSwgc291cmNlLCBub2RlLCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgY29uc3RydWN0QWJp
bGl0eSwgc2NyaXB0TW9kZSwgV1RGTW92ZShwYXJlbnRTY29wZVREWlZhcmlhYmxlcyksIFdURk1v
dmUocGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCksIGRlcml2ZWRDb250ZXh0VHlwZSwgbmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBpc0J1aWx0
aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3Rvcik7CiAgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVh
dGlvbih2bSk7CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9CkBAIC0xNDMsNiArMTQz
LDggQEAgcHVibGljOgogICAgIENvZGVGZWF0dXJlcyBmZWF0dXJlcygpIGNvbnN0IHsgcmV0dXJu
IG1fZmVhdHVyZXM7IH0KICAgICBib29sIGhhc0NhcHR1cmVkVmFyaWFibGVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9oYXNDYXB0dXJlZFZhcmlhYmxlczsgfQogCisgICAgUHJpdmF0ZUJyYW5kUmVxdWly
ZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxQcml2YXRlQnJhbmRSZXF1aXJlbWVudD4obV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7IH0K
KwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKICAg
ICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCkBAIC0xNzQsNiArMTc2LDEzIEBAIHB1
YmxpYzoKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICByZXR1cm4gbV9yYXJl
RGF0YS0+bV9wYXJlbnRTY29wZVREWlZhcmlhYmxlczsKICAgICB9CisKKyAgICBQcml2YXRlTmFt
ZUVudmlyb25tZW50IHBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQoKSBjb25zdAorICAgIHsK
KyAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICAgICAgcmV0dXJuIFByaXZhdGVOYW1l
RW52aXJvbm1lbnQoKTsKKyAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fcGFyZW50UHJpdmF0
ZU5hbWVFbnZpcm9ubWVudDsKKyAgICB9CiAgICAgCiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24o
KSBjb25zdCB7IHJldHVybiBpc0Fycm93RnVuY3Rpb25QYXJzZU1vZGUocGFyc2VNb2RlKCkpOyB9
CiAKQEAgLTIxMCw2ICsyMTksNyBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBtX3NvdXJjZU1h
cHBpbmdVUkxEaXJlY3RpdmU7CiAgICAgICAgIFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+IG1f
cGFyZW50U2NvcGVURFpWYXJpYWJsZXM7CiAgICAgICAgIFZlY3RvcjxKU1RleHRQb3NpdGlvbj4g
bV9jbGFzc0ZpZWxkTG9jYXRpb25zOworICAgICAgICBQcml2YXRlTmFtZUVudmlyb25tZW50IG1f
cGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudDsKICAgICB9OwogCiAgICAgTmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcj4obV9uZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplcik7IH0KQEAgLTIyOSw3ICsyMzksNyBAQCBwdWJsaWM6CiAgICAgfQogCiBw
cml2YXRlOgotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNJiwgU3RydWN0dXJlKiwg
Y29uc3QgU291cmNlQ29kZSYsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgVW5saW5rZWRGdW5jdGlv
bktpbmQsIENvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZSwgUmVmUHRyPFREWkVu
dmlyb25tZW50TGluaz4sICBKU0M6OkRlcml2ZWRDb250ZXh0VHlwZSwgSlNDOjpOZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplciwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3Rvcik7
CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0mLCBTdHJ1Y3R1cmUqLCBjb25zdCBT
b3VyY2VDb2RlJiwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCwg
Q29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlLCBSZWZQdHI8VERaRW52aXJvbm1l
bnRMaW5rPiwgT3B0aW9uYWw8UHJpdmF0ZU5hbWVFbnZpcm9ubWVudD4sIEpTQzo6RGVyaXZlZENv
bnRleHRUeXBlLCBKU0M6Ok5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRS
ZXF1aXJlbWVudCwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3Rvcik7CiAgICAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoRGVjb2RlciYsIGNvbnN0IENhY2hlZEZ1bmN0aW9u
RXhlY3V0YWJsZSYpOwogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBT
bG90VmlzaXRvciYpOwpAQCAtMjYxLDcgKzI3MSw4IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQg
bV9pc0NhY2hlZCA6IDE7CiAgICAgdW5zaWduZWQgbV90eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQ7
CiAgICAgdW5zaWduZWQgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0OwotICAgIHVuc2lnbmVkIG1f
cGFyYW1ldGVyQ291bnQ7CisgICAgdW5zaWduZWQgbV9wYXJhbWV0ZXJDb3VudCA6IDMxOworICAg
IHVuc2lnbmVkIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgOiAxOwogICAgIENvZGVGZWF0dXJl
cyBtX2ZlYXR1cmVzOwogICAgIFNvdXJjZVBhcnNlTW9kZSBtX3NvdXJjZVBhcnNlTW9kZTsKICAg
ICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDYx
N2NhMGNiYzU1YmNlNmNjMDdlNWVkYmU1MzRkOTdhOTg0Mjg5ZjQuLjRlNTcxOWVmODI1OGYzYjI5
ZmU2MGQ3NmRiMjAyZDJmOWIyOGE1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yODksNyArMjg5
LDcgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICByZXR1
cm4gUGFyc2VyRXJyb3IoUGFyc2VyRXJyb3I6OkVycm9yTm9uZSk7CiB9CiAKLUJ5dGVjb2RlR2Vu
ZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9k
ZSwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2Vu
ZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgUmVmUHRyPFREWkVudmlyb25t
ZW50TGluaz4mIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBFQ01BTW9kZSBlY21hTW9kZSkKK0J5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBw
cm9ncmFtTm9kZSwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNl
dDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgUmVmUHRyPFRE
WkVudmlyb25tZW50TGluaz4mIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBjb25zdCBQcml2YXRl
TmFtZUVudmlyb25tZW50KiwgRUNNQU1vZGUgZWNtYU1vZGUpCiAgICAgOiBCeXRlY29kZUdlbmVy
YXRvckJhc2UobWFrZVVuaXF1ZTxVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcj4odm0sIGNvZGVC
bG9jayksIENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJl
Z2lzdGVycygpKQogICAgICwgbV9jb2RlR2VuZXJhdGlvbk1vZGUoY29kZUdlbmVyYXRpb25Nb2Rl
KQogICAgICwgbV9zY29wZU5vZGUocHJvZ3JhbU5vZGUpCkBAIC0zMzYsNyArMzM2LDcgQEAgQnl0
ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHBy
b2dyYW1Ob2RlLCBVbmxpbmtlZFAKICAgICB9CiB9CiAKLUJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRl
Y29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1v
ZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4m
IHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBFQ01BTW9kZSBlY21hTW9kZSkKK0J5dGVjb2RlR2Vu
ZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25O
b2RlLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2Rl
R2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgUmVmUHRyPFREWkVudmly
b25tZW50TGluaz4mIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBjb25zdCBQcml2YXRlTmFtZUVu
dmlyb25tZW50KiBwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50LCBFQ01BTW9kZSBlY21hTW9k
ZSkKICAgICA6IEJ5dGVjb2RlR2VuZXJhdG9yQmFzZShtYWtlVW5pcXVlPFVubGlua2VkQ29kZUJs
b2NrR2VuZXJhdG9yPih2bSwgY29kZUJsb2NrKSwgQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2Fs
bGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkpCiAgICAgLCBtX2NvZGVHZW5lcmF0aW9u
TW9kZShjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAgLCBtX3Njb3BlTm9kZShmdW5jdGlvbk5vZGUp
CkBAIC0zNTksNiArMzU5LDggQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9y
KFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAsIG1fZWNt
YU1vZGUoZWNtYU1vZGUpCiAgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShjb2RlQmxvY2stPmRl
cml2ZWRDb250ZXh0VHlwZSgpKQogeworICAgIHB1c2hQcml2YXRlQWNjZXNzTmFtZXMocGFyZW50
UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCk7CisKICAgICBTeW1ib2xUYWJsZSogZnVuY3Rpb25TeW1i
b2xUYWJsZSA9IFN5bWJvbFRhYmxlOjpjcmVhdGUobV92bSk7CiAgICAgZnVuY3Rpb25TeW1ib2xU
YWJsZS0+c2V0VXNlc05vblN0cmljdEV2YWwobV91c2VzTm9uU3RyaWN0RXZhbCk7CiAgICAgaW50
IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCA9IDA7CkBAIC03MDcsNiArNzA5LDkgQEAgQnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5j
dGlvbk5vZGUsIFVubGlua2UKICAgICAgICAgICAgICAgICBjYXNlIENvbnN0cnVjdG9yS2luZDo6
Tm9uZToKICAgICAgICAgICAgICAgICBjYXNlIENvbnN0cnVjdG9yS2luZDo6QmFzZToKICAgICAg
ICAgICAgICAgICAgICAgZW1pdENyZWF0ZVRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVByaXZhdGVNZXRob2RzKCkgJiYgcHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQoKSA9PSBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6TmVlZGVkKQorICAg
ICAgICAgICAgICAgICAgICAgICAgZW1pdEluc3RhbGxQcml2YXRlQnJhbmQoJm1fdGhpc1JlZ2lz
dGVyKTsKKwogICAgICAgICAgICAgICAgICAgICBlbWl0SW5zdGFuY2VGaWVsZEluaXRpYWxpemF0
aW9uSWZOZWVkZWQoJm1fdGhpc1JlZ2lzdGVyLCAmbV9jYWxsZWVSZWdpc3RlciwgbV9zY29wZU5v
ZGUtPnBvc2l0aW9uKCksIG1fc2NvcGVOb2RlLT5wb3NpdGlvbigpLCBtX3Njb3BlTm9kZS0+cG9z
aXRpb24oKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNh
c2UgQ29uc3RydWN0b3JLaW5kOjpFeHRlbmRzOgpAQCAtODM4LDcgKzg0Myw3IEBAIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rp
b25Ob2RlLCBVbmxpbmtlCiAgICAgcHVzaExleGljYWxTY29wZShtX3Njb3BlTm9kZSwgVERaQ2hl
Y2tPcHRpbWl6YXRpb246Ok9wdGltaXplLCBOZXN0ZWRTY29wZVR5cGU6OklzTm90TmVzdGVkLCBu
dWxscHRyLCBzaG91bGRJbml0aWFsaXplQmxvY2tTY29wZWRGdW5jdGlvbnMpOwogfQogCi1CeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5v
ZGUsIFVubGlua2VkRXZhbENvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVy
YXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFJlZlB0cjxURFpFbnZpcm9ubWVu
dExpbms+JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRUNNQU1vZGUgZWNtYU1vZGUpCitCeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5v
ZGUsIFVubGlua2VkRXZhbENvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVy
YXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFJlZlB0cjxURFpFbnZpcm9ubWVu
dExpbms+JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9u
bWVudCogcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgRUNNQU1vZGUgZWNtYU1vZGUpCiAg
ICAgOiBCeXRlY29kZUdlbmVyYXRvckJhc2UobWFrZVVuaXF1ZTxVbmxpbmtlZENvZGVCbG9ja0dl
bmVyYXRvcj4odm0sIGNvZGVCbG9jayksIENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNh
dmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKQogICAgICwgbV9jb2RlR2VuZXJhdGlvbk1vZGUo
Y29kZUdlbmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5vZGUoZXZhbE5vZGUpCkBAIC04NTYs
NiArODYxLDggQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwg
RXZhbE5vZGUqIGV2YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2QKIHsKICAgICBtX2NvZGVCbG9jay0+
c2V0TnVtUGFyYW1ldGVycygxKTsKIAorICAgIHB1c2hQcml2YXRlQWNjZXNzTmFtZXMocGFyZW50
UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCk7CisKICAgICBtX2NhY2hlZFBhcmVudFREWiA9IHBhcmVu
dFNjb3BlVERaVmFyaWFibGVzOwogCiAgICAgZW1pdEVudGVyKCk7CkBAIC05MDEsNyArOTA4LDcg
QEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUq
IGV2YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2QKICAgICBwdXNoTGV4aWNhbFNjb3BlKG1fc2NvcGVO
b2RlLCBURFpDaGVja09wdGltaXphdGlvbjo6T3B0aW1pemUsIE5lc3RlZFNjb3BlVHlwZTo6SXNO
b3ROZXN0ZWQsIG51bGxwdHIsIHNob3VsZEluaXRpYWxpemVCbG9ja1Njb3BlZEZ1bmN0aW9ucyk7
CiB9CiAKLUJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIE1vZHVs
ZVByb2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9kZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5l
cmF0aW9uTW9kZSwgY29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4mIHBhcmVudFNjb3Bl
VERaVmFyaWFibGVzLCBFQ01BTW9kZSBlY21hTW9kZSkKK0J5dGVjb2RlR2VuZXJhdG9yOjpCeXRl
Y29kZUdlbmVyYXRvcihWTSYgdm0sIE1vZHVsZVByb2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9k
ZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxD
b2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgUmVmUHRyPFREWkVu
dmlyb25tZW50TGluaz4mIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBjb25zdCBQcml2YXRlTmFt
ZUVudmlyb25tZW50KiwgRUNNQU1vZGUgZWNtYU1vZGUpCiAgICAgOiBCeXRlY29kZUdlbmVyYXRv
ckJhc2UobWFrZVVuaXF1ZTxVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcj4odm0sIGNvZGVCbG9j
ayksIENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lz
dGVycygpKQogICAgICwgbV9jb2RlR2VuZXJhdGlvbk1vZGUoY29kZUdlbmVyYXRpb25Nb2RlKQog
ICAgICwgbV9zY29wZU5vZGUobW9kdWxlUHJvZ3JhbU5vZGUpCkBAIC0xODkzLDggKzE5MDAsMTAg
QEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6aW5zdGFudGlhdGVMZXhpY2FsVmFyaWFibGVzKGNv
bnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGwKIAogICAgICAgICAgICAgLy8gRklYTUU6IG9ubHkg
ZG8gdGhpcyBpZiB0aGVyZSBpcyBhbiBldmFsKCkgd2l0aGluIGEgbmVzdGVkIHNjb3BlIC0tLSBv
dGhlcndpc2UgaXQgaXNuJ3QgbmVlZGVkLgogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjY2MwotICAgICAgICAgICAgaWYgKGVudHJ5LnZh
bHVlLmlzUHJpdmF0ZU5hbWUoKSkKLSAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+YWRkUHJp
dmF0ZU5hbWUoZW50cnkua2V5LmdldCgpKTsKKyAgICAgICAgICAgIGlmIChlbnRyeS52YWx1ZS5p
c1ByaXZhdGVGaWVsZCgpKQorICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5hZGRQcml2YXRl
TmFtZShlbnRyeS5rZXkuZ2V0KCksIFByaXZhdGVOYW1lRW50cnkoUHJpdmF0ZU5hbWVFbnRyeTo6
VHJhaXRzOjpJc0RlY2xhcmVkKSk7CisgICAgICAgICAgICBlbHNlIGlmIChlbnRyeS52YWx1ZS5p
c1ByaXZhdGVNZXRob2QoKSkKKyAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+YWRkUHJpdmF0
ZU5hbWUoZW50cnkua2V5LmdldCgpLCBQcml2YXRlTmFtZUVudHJ5KFByaXZhdGVOYW1lRW50cnk6
OlRyYWl0czo6SXNEZWNsYXJlZCB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNNZXRob2Qp
KTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gaGFzQ2FwdHVyZWRWYXJpYWJsZXM7CkBA
IC0yNzE0LDcgKzI3MjMsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1
dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHRoaXNWYQogICAgIHJldHVybiB2
YWx1ZTsKIH0KIAotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RHZXRC
eVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3Bl
cnR5KQorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRQcml2YXRlTmFtZShS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5KQog
ewogICAgIE9wR2V0UHJpdmF0ZU5hbWU6OmVtaXQodGhpcywgZHN0LCBiYXNlLCBwcm9wZXJ0eSk7
CiAgICAgcmV0dXJuIGRzdDsKQEAgLTI3NTAsMTIgKzI3NTksNDQgQEAgUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWZpbmVQcml2YXRlRmllbGQoUmVnaXN0ZXJJRCogYmFzZSwg
UmVnaXN0ZXIKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRDcmVhdGVQcml2YXRlQnJhbmQoUmVnaXN0ZXJJRCogc2NvcGUsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKK3sKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY3JlYXRl
UHJpdmF0ZVN5bWJvbCA9IG1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29u
c3RhbnQ6OmNyZWF0ZVByaXZhdGVTeW1ib2wpOworCisgICAgQ2FsbEFyZ3VtZW50cyBhcmd1bWVu
dHMoKnRoaXMsIG51bGxwdHIsIDApOworICAgIGVtaXRMb2FkKGFyZ3VtZW50cy50aGlzUmVnaXN0
ZXIoKSwganNVbmRlZmluZWQoKSk7CisgICAgUmVnaXN0ZXJJRCogbmV3U3ltYm9sID0gZW1pdENh
bGwoZmluYWxEZXN0aW5hdGlvbihudWxscHRyLCBjcmVhdGVQcml2YXRlU3ltYm9sLmdldCgpKSwg
Y3JlYXRlUHJpdmF0ZVN5bWJvbC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBhcmd1bWVudHMs
IGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCwgRGVidWdnYWJsZUNhbGw6Ok5vKTsKKworICAg
IFZhcmlhYmxlIHByaXZhdGVCcmFuZFZhciA9IHZhcmlhYmxlKHByb3BlcnR5TmFtZXMoKS5idWls
dGluTmFtZXMoKS5wcml2YXRlQnJhbmRQcml2YXRlTmFtZSgpKTsKKworICAgIGVtaXRQdXRUb1Nj
b3BlKHNjb3BlLCBwcml2YXRlQnJhbmRWYXIsIG5ld1N5bWJvbCwgRG9Ob3RUaHJvd0lmTm90Rm91
bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6SW5pdGlhbGl6YXRpb24pOworfQorCit2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0SW5zdGFsbFByaXZhdGVCcmFuZChSZWdpc3RlcklEKiB0YXJnZXQp
Cit7CisgICAgVmFyaWFibGUgcHJpdmF0ZUJyYW5kVmFyID0gdmFyaWFibGUocHJvcGVydHlOYW1l
cygpLmJ1aWx0aW5OYW1lcygpLnByaXZhdGVCcmFuZFByaXZhdGVOYW1lKCkpOworICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBwcml2YXRlQnJhbmRWYXJTY29wZSA9IGVtaXRSZXNvbHZlU2NvcGUobnVs
bHB0ciwgcHJpdmF0ZUJyYW5kVmFyKTsKKyAgICBSZWdpc3RlcklEKiBwcml2YXRlQnJhbmRTeW1i
b2wgPSBlbWl0R2V0UHJpdmF0ZUJyYW5kKG5ld1RlbXBvcmFyeSgpLCBwcml2YXRlQnJhbmRWYXJT
Y29wZS5nZXQoKSk7CisgICAgT3BTZXRQcml2YXRlQnJhbmQ6OmVtaXQodGhpcywgdGFyZ2V0LCBw
cml2YXRlQnJhbmRTeW1ib2wpOworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEdldFByaXZhdGVCcmFuZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNjb3BlKQor
eworICAgIFZhcmlhYmxlIHByaXZhdGVCcmFuZFZhciA9IHZhcmlhYmxlKHByb3BlcnR5TmFtZXMo
KS5idWlsdGluTmFtZXMoKS5wcml2YXRlQnJhbmRQcml2YXRlTmFtZSgpKTsKKyAgICByZXR1cm4g
ZW1pdEdldEZyb21TY29wZShkc3QsIHNjb3BlLCBwcml2YXRlQnJhbmRWYXIsIFRocm93SWZOb3RG
b3VuZCk7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHJpdmF0ZUZp
ZWxkUHV0KFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklE
KiB2YWx1ZSkKIHsKICAgICBPcFB1dFByaXZhdGVOYW1lOjplbWl0KHRoaXMsIGJhc2UsIHByb3Bl
cnR5LCB2YWx1ZSwgUHJpdmF0ZUZpZWxkUHV0S2luZDo6c2V0KCkpOwogICAgIHJldHVybiB2YWx1
ZTsKIH0KIAordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENoZWNrUHJpdmF0ZUJyYW5kKFJl
Z2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIGJyYW5kU3ltYm9sKQoreworICAgIE9wQ2hlY2tQ
cml2YXRlQnJhbmQ6OmVtaXQodGhpcywgYmFzZSwgYnJhbmRTeW1ib2wpOworfQorCiB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0U3VwZXJTYW1wbGVyQmVnaW4oKQogewogICAgIE9wU3VwZXJT
YW1wbGVyQmVnaW46OmVtaXQodGhpcyk7CkBAIC0yODkwLDYgKzI5MzEsMzIgQEAgdm9pZCBCeXRl
Y29kZUdlbmVyYXRvcjo6bGlmdFREWkNoZWNrSWZQb3NzaWJsZShjb25zdCBWYXJpYWJsZSYgdmFy
aWFibGUpCiAgICAgfQogfQogCitib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjppc1ByaXZhdGVNZXRo
b2QoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gbV9w
cml2YXRlTmFtZXNTdGFjay5zaXplKCk7IGktLTsgKSB7CisgICAgICAgIGF1dG8mIG1hcCA9IG1f
cHJpdmF0ZU5hbWVzU3RhY2tbaV07CisgICAgICAgIGF1dG8gaXQgPSBtYXAuZmluZChpZGVudC5p
bXBsKCkpOworICAgICAgICBpZiAoaXQgIT0gbWFwLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJu
IGl0LT52YWx1ZS5pc01ldGhvZCgpOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwor
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cHVzaFByaXZhdGVBY2Nlc3NOYW1lcyhjb25zdCBQcml2
YXRlTmFtZUVudmlyb25tZW50KiBlbnZpcm9ubWVudCkKK3sKKyAgICBpZiAoIWVudmlyb25tZW50
IHx8ICFlbnZpcm9ubWVudC0+c2l6ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3ByaXZh
dGVOYW1lc1N0YWNrLmFwcGVuZCgqZW52aXJvbm1lbnQpOworfQorCit2b2lkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpwb3BQcml2YXRlQWNjZXNzTmFtZXMoKQoreworICAgIEFTU0VSVChtX3ByaXZhdGVO
YW1lc1N0YWNrLnNpemUoKSk7CisgICAgbV9wcml2YXRlTmFtZXNTdGFjay5yZW1vdmVMYXN0KCk7
Cit9CisKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnB1c2hURFpWYXJpYWJsZXMoY29uc3QgVmFy
aWFibGVFbnZpcm9ubWVudCYgZW52aXJvbm1lbnQsIFREWkNoZWNrT3B0aW1pemF0aW9uIG9wdGlt
aXphdGlvbiwgVERaUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQpCiB7CiAgICAgaWYgKCFlbnZpcm9u
bWVudC5zaXplKCkpCkBAIC0yOTExLDYgKzI5NzgsMjggQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRv
cjo6cHVzaFREWlZhcmlhYmxlcyhjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBlbnZpcm9ubWVu
dCwKICAgICBtX1REWlN0YWNrLmFwcGVuZChURFpTdGFja0VudHJ5IHsgV1RGTW92ZShtYXApLCBu
dWxscHRyIH0pOwogfQogCitPcHRpb25hbDxQcml2YXRlTmFtZUVudmlyb25tZW50PiBCeXRlY29k
ZUdlbmVyYXRvcjo6Z2V0QXZhaWxhYmxlUHJpdmF0ZUFjY2Vzc05hbWVzKCkKK3sKKyAgICBQcml2
YXRlTmFtZUVudmlyb25tZW50IHJlc3VsdDsKKyAgICBTbWFsbFB0clNldDxVbmlxdWVkU3RyaW5n
SW1wbCosIDE2PiBleGNsdWRlZE5hbWVzOworICAgIGZvciAodW5zaWduZWQgaSA9IG1fcHJpdmF0
ZU5hbWVzU3RhY2suc2l6ZSgpOyBpLS07ICkgeworICAgICAgICBhdXRvJiBtYXAgPSBtX3ByaXZh
dGVOYW1lc1N0YWNrW2ldOworICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbWFwKSAgeworICAg
ICAgICAgICAgaWYgKGVudHJ5LnZhbHVlLmlzUHJpdmF0ZU1ldGhvZE9yQWNlc3NvcigpKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCFleGNsdWRlZE5hbWVzLmNvbnRhaW5zKGVudHJ5LmtleS5nZXQo
KSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFkZChlbnRyeS5rZXksIGVudHJ5LnZh
bHVlKTsKKyAgICAgICAgICAgICAgICAgICAgZXhjbHVkZWROYW1lcy5hZGQoZW50cnkua2V5Lmdl
dCgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
ICAgICBleGNsdWRlZE5hbWVzLmFkZChlbnRyeS5rZXkuZ2V0KCkpOworICAgICAgICB9CisgICAg
fQorCisgICAgaWYgKCFyZXN1bHQuc2l6ZSgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+IEJ5
dGVjb2RlR2VuZXJhdG9yOjpnZXRWYXJpYWJsZXNVbmRlclREWigpCiB7CiAgICAgUmVmUHRyPFRE
WkVudmlyb25tZW50TGluaz4gcGFyZW50ID0gbV9jYWNoZWRQYXJlbnRURFo7CkBAIC0zMTIwLDkg
KzMyMDksOSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld01ldGhvZERl
ZmluaXRpb24oUmVnaXN0ZXJJRCogZHN0LCBNZXRob2REZQogfQogCiBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3RvcihSZWdpc3RlcklEKiBkc3Qs
IENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUs
Ci0gICAgY29uc3QgSWRlbnRpZmllciYgZWNtYU5hbWUsIGNvbnN0IFNvdXJjZUNvZGUmIGNsYXNz
U291cmNlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplcikKKyAgICBjb25zdCBJZGVudGlmaWVyJiBlY21hTmFtZSwgY29uc3QgU291cmNlQ29kZSYg
Y2xhc3NTb3VyY2UsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVu
dCkKIHsKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG1fdm0u
YnVpbHRpbkV4ZWN1dGFibGVzKCktPmNyZWF0ZURlZmF1bHRDb25zdHJ1Y3Rvcihjb25zdHJ1Y3Rv
cktpbmQsIG5hbWUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsKKyAgICBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG1fdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCkt
PmNyZWF0ZURlZmF1bHRDb25zdHJ1Y3Rvcihjb25zdHJ1Y3RvcktpbmQsIG5hbWUsIG5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyLCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7CiAgICAgZXhlY3V0
YWJsZS0+c2V0SW52YWxpZFR5cGVQcm9maWxpbmdPZmZzZXRzKCk7CiAgICAgZXhlY3V0YWJsZS0+
c2V0RWNtYU5hbWUoZWNtYU5hbWUpOwogICAgIGV4ZWN1dGFibGUtPnNldENsYXNzU291cmNlKGNs
YXNzU291cmNlKTsKQEAgLTMxNDYsMTMgKzMyMzUsMTQgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXROZXdDbGFzc0ZpZWxkSW5pdGlhbGl6ZXJGdW5jdGlvbihSZWdpc3RlcklE
KgogICAgIH0KIAogICAgIGF1dG8gdmFyaWFibGVzVW5kZXJURFogPSBnZXRWYXJpYWJsZXNVbmRl
clREWigpOworICAgIE9wdGlvbmFsPFByaXZhdGVOYW1lRW52aXJvbm1lbnQ+IHBhcmVudFByaXZh
dGVOYW1lRW52aXJvbm1lbnQgPSBnZXRBdmFpbGFibGVQcml2YXRlQWNjZXNzTmFtZXMoKTsKICAg
ICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXJNb2RlOwogICAgIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSA9
IENvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKIAogICAgIGNvbnN0IGJvb2wgYWx3
YXlzU3RyaWN0SW5DbGFzcyA9IHRydWU7CiAgICAgRnVuY3Rpb25NZXRhZGF0YU5vZGUgbWV0YWRh
dGEocGFyc2VyQXJlbmEoKSwgSlNUb2tlbkxvY2F0aW9uKCksIEpTVG9rZW5Mb2NhdGlvbigpLCAw
LCAwLCAwLCAwLCAwLCBhbHdheXNTdHJpY3RJbkNsYXNzLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUs
IHN1cGVyQmluZGluZywgMCwgcGFyc2VNb2RlLCBmYWxzZSk7CiAgICAgbWV0YWRhdGEuZmluaXNo
UGFyc2luZyhtX3Njb3BlTm9kZS0+c291cmNlKCksIElkZW50aWZpZXIoKSwgRnVuY3Rpb25Nb2Rl
OjpNZXRob2REZWZpbml0aW9uKTsKLSAgICBhdXRvIGluaXRpYWxpemVyID0gVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksICZtZXRh
ZGF0YSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5s
aW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwgc2NyaXB0TW9kZSgpLCBXVEZN
b3ZlKHZhcmlhYmxlc1VuZGVyVERaKSwgbmV3RGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplcjo6Tm8pOworICAgIGF1dG8gaW5pdGlhbGl6ZXIgPSBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgJm1l
dGFkYXRhLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBV
bmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCBzY3JpcHRNb2RlKCksIFdU
Rk1vdmUodmFyaWFibGVzVW5kZXJURFopLCBXVEZNb3ZlKHBhcmVudFByaXZhdGVOYW1lRW52aXJv
bm1lbnQpLCBuZXdEZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
OjpObywgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmUpOwogICAgIGluaXRpYWxpemVyLT5z
ZXRDbGFzc0ZpZWxkTG9jYXRpb25zKFdURk1vdmUoY2xhc3NGaWVsZExvY2F0aW9ucykpOwogCiAg
ICAgdW5zaWduZWQgaW5kZXggPSBtX2NvZGVCbG9jay0+YWRkRnVuY3Rpb25FeHByKGluaXRpYWxp
emVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA1MGI1NDY1ZjliNzViMjhiOWJjYjhkM2Q4ZTFlMzM5ZTFh
N2UwMzEwLi5iYmZiNTY4MTk4ZjQ0NDU1N2RhMzEzM2MyOTY2M2NkNDIwMWU3YmU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCkBAIC00MDgsMTAgKzQwOCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIHR5cGVkZWYgRGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2sgRnVuY3Rp
b25TdGFjazsKIAotICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIFByb2dyYW1Ob2RlKiwg
VW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4s
IGNvbnN0IFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+JiwgRUNNQU1vZGUpOwotICAgICAgICBC
eXRlY29kZUdlbmVyYXRvcihWTSYsIEZ1bmN0aW9uTm9kZSosIFVubGlua2VkRnVuY3Rpb25Db2Rl
QmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgUmVmUHRyPFREWkVu
dmlyb25tZW50TGluaz4mLCBFQ01BTW9kZSk7Ci0gICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZN
JiwgRXZhbE5vZGUqLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVy
YXRpb25Nb2RlPiwgY29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4mLCBFQ01BTW9kZSk7
Ci0gICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgTW9kdWxlUHJvZ3JhbU5vZGUqLCBVbmxp
bmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2Rl
PiwgY29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4mLCBFQ01BTW9kZSk7CisgICAgICAg
IEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgUHJvZ3JhbU5vZGUqLCBVbmxpbmtlZFByb2dyYW1Db2Rl
QmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgUmVmUHRyPFREWkVu
dmlyb25tZW50TGluaz4mLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiwgRUNNQU1vZGUp
OworICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIEZ1bmN0aW9uTm9kZSosIFVubGlua2Vk
RnVuY3Rpb25Db2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3Qg
UmVmUHRyPFREWkVudmlyb25tZW50TGluaz4mLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50
KiwgRUNNQU1vZGUpOworICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIEV2YWxOb2RlKiwg
VW5saW5rZWRFdmFsQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNv
bnN0IFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+JiwgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9u
bWVudCosIEVDTUFNb2RlKTsKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBNb2R1bGVQ
cm9ncmFtTm9kZSosIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayosIE9wdGlvblNldDxD
b2RlR2VuZXJhdGlvbk1vZGU+LCBjb25zdCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiYsIGNv
bnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqLCBFQ01BTW9kZSk7CiAKICAgICAgICAgfkJ5dGVj
b2RlR2VuZXJhdG9yKCk7CiAgICAgICAgIApAQCAtNDI1LDIwICs0MjUsMjEgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIGJvb2wgbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KCkg
Y29uc3QgeyByZXR1cm4gbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQ7IH0KICAg
ICAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVOb2RlLT51c2VzRXZh
bCgpOyB9CiAgICAgICAgIGJvb2wgdXNlc1RoaXMoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlTm9k
ZS0+dXNlc1RoaXMoKTsgfQorICAgICAgICBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRl
QnJhbmRSZXF1aXJlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5wcml2YXRlQnJh
bmRSZXF1aXJlbWVudCgpOyB9CiAgICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rvcktp
bmQoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+Y29uc3RydWN0b3JLaW5kKCk7IH0KICAg
ICAgICAgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJs
b2NrLT5zdXBlckJpbmRpbmcoKTsgfQogICAgICAgICBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5zY3JpcHRNb2RlKCk7IH0KICAgICAg
ICAgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIo
KSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIo
KTsgfQogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE5vZGUsIHR5cGVuYW1lIFVubGlua2Vk
Q29kZUJsb2NrPgotICAgICAgICBzdGF0aWMgUGFyc2VyRXJyb3IgZ2VuZXJhdGUoVk0mIHZtLCBO
b2RlKiBub2RlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBVbmxpbmtlZENvZGVCbG9j
ayogdW5saW5rZWRDb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVH
ZW5lcmF0aW9uTW9kZSwgY29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4mIHBhcmVudFNj
b3BlVERaVmFyaWFibGVzLCBFQ01BTW9kZSBlY21hTW9kZSkKKyAgICAgICAgc3RhdGljIFBhcnNl
ckVycm9yIGdlbmVyYXRlKFZNJiB2bSwgTm9kZSogbm9kZSwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlQ29kZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBPcHRpb25TZXQ8
Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFJlZlB0cjxURFpF
bnZpcm9ubWVudExpbms+JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgY29uc3QgUHJpdmF0ZU5h
bWVFbnZpcm9ubWVudCogcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgRUNNQU1vZGUgZWNtYU1vZGUp
CiAgICAgICAgIHsKICAgICAgICAgICAgIE1vbm90b25pY1RpbWUgYmVmb3JlOwogICAgICAgICAg
ICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnJlcG9ydEJ5dGVjb2RlQ29tcGlsZVRpbWVzKCkpKQog
ICAgICAgICAgICAgICAgIGJlZm9yZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogCiAgICAgICAg
ICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVjb2Rl
R2VuZXJhdG9yID0gbWFrZVVuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIG5vZGUsIHVubGlu
a2VkQ29kZUJsb2NrLCBjb2RlR2VuZXJhdGlvbk1vZGUsIHBhcmVudFNjb3BlVERaVmFyaWFibGVz
LCBlY21hTW9kZSk7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlR2VuZXJhdG9yID0gbWFrZVVu
aXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIG5vZGUsIHVubGlua2VkQ29kZUJsb2NrLCBjb2Rl
R2VuZXJhdGlvbk1vZGUsIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBwcml2YXRlTmFtZUVudmly
b25tZW50LCBlY21hTW9kZSk7CiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGJ5dGVjb2RlR2Vu
ZXJhdG9yLT5nZW5lcmF0ZSgpOwogCiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6
cmVwb3J0Qnl0ZWNvZGVDb21waWxlVGltZXMoKSkpIHsKQEAgLTc3NCw3ICs3NzUsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3RnVuY3Rpb24oUmVnaXN0
ZXJJRCogZHN0LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSopOwogICAgICAgICBSZWdpc3RlcklEKiBl
bWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY0V4cHJOb2RlKik7
Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJ
RCogZHN0LCBDb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIGNvbnN0IElk
ZW50aWZpZXImIGVjbWFOYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBjbGFzc1NvdXJjZSwgTmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3RGVmYXVs
dENvbnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVu
dGlmaWVyJiBuYW1lLCBjb25zdCBJZGVudGlmaWVyJiBlY21hTmFtZSwgY29uc3QgU291cmNlQ29k
ZSYgY2xhc3NTb3VyY2UsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRS
ZXF1aXJlbWVudCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXJGdW5jdGlvbihSZWdpc3RlcklEKiBkc3QsIFZlY3RvcjxKU1RleHRQb3NpdGlvbj4mJiBj
bGFzc0ZpZWxkTG9jYXRpb25zLCBib29sIGlzRGVyaXZlZCk7CiAgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiwgQXJyb3dGdW5jRXhw
ck5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld01ldGhvZERlZmluaXRpb24oUmVn
aXN0ZXJJRCogZHN0LCBNZXRob2REZWZpbml0aW9uTm9kZSopOwpAQCAtODE1LDcgKzgxNiw2IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGlyZWN0U2V0UHJvdG90
eXBlT2YoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvdG90eXBlKTsKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHBy
b3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRC
eVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmFsdWUsIFJlZ2lzdGVySUQq
IHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRE
aXJlY3RHZXRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVy
SUQqIHByb3BlcnR5KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERpcmVjdFB1dEJ5VmFsKFJl
Z2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREZWxldGVCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5KTsKIApAQCAtODIzLDYgKzgyMywx
MiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dEludGVybmFs
RmllbGQoUmVnaXN0ZXJJRCogYmFzZSwgdW5zaWduZWQgaW5kZXgsIFJlZ2lzdGVySUQqIHZhbHVl
KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlZmluZVByaXZhdGVGaWVsZChSZWdpc3RlcklE
KiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0UHJpdmF0ZUZpZWxkUHV0KFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lz
dGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CisgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRHZXRQcml2YXRlTmFtZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJl
Z2lzdGVySUQqIHByb3BlcnR5KTsKKworICAgICAgICB2b2lkIGVtaXRDcmVhdGVQcml2YXRlQnJh
bmQoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQp
OworICAgICAgICB2b2lkIGVtaXRJbnN0YWxsUHJpdmF0ZUJyYW5kKFJlZ2lzdGVySUQqIHRhcmdl
dCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRQcml2YXRlQnJhbmQoUmVnaXN0ZXJJRCog
ZHN0LCBSZWdpc3RlcklEKiBzY29wZSk7CisgICAgICAgIHZvaWQgZW1pdENoZWNrUHJpdmF0ZUJy
YW5kKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIGJyYW5kKTsKIAogICAgICAgICB2b2lk
IGVtaXRTdXBlclNhbXBsZXJCZWdpbigpOwogICAgICAgICB2b2lkIGVtaXRTdXBlclNhbXBsZXJF
bmQoKTsKQEAgLTExNzYsMTYgKzExODIsMTkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICBEZXJpdmVkQ29udGV4dFR5cGUgbmV3RGVyaXZlZENvbnRleHRUeXBlID0gRGVyaXZlZENvbnRl
eHRUeXBlOjpOb25lOwogCiAgICAgICAgICAgICBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBu
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9IG1ldGFkYXRhLT5pc0NvbnN0cnVjdG9yQW5kTmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSA/IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpZ
ZXMgOiBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm87CisgICAgICAgICAgICBQcml2YXRl
QnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9IG1ldGFkYXRhLT5wcml2
YXRlQnJhbmRSZXF1aXJlbWVudCgpOwogICAgICAgICAgICAgaWYgKFNvdXJjZVBhcnNlTW9kZVNl
dChTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlLCBTb3VyY2VQYXJzZU1vZGU6OkFz
eW5jQXJyb3dGdW5jdGlvbk1vZGUsIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9u
Qm9keU1vZGUpLmNvbnRhaW5zKG1ldGFkYXRhLT5wYXJzZU1vZGUoKSkpIHsKICAgICAgICAgICAg
ICAgICBpZiAoY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpFeHRlbmRzIHx8
IGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIG5l
d0Rlcml2ZWRDb250ZXh0VHlwZSA9IERlcml2ZWRDb250ZXh0VHlwZTo6RGVyaXZlZENvbnN0cnVj
dG9yQ29udGV4dDsKICAgICAgICAgICAgICAgICAgICAgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIgPSBtX2NvZGVCbG9jay0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKTsKKyAgICAgICAg
ICAgICAgICAgICAgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBtX2NvZGVCbG9jay0+cHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ZWxzZSBpZiAobV9jb2RlQmxvY2stPmlzQ2xhc3NDb250ZXh0KCkgfHwgaXNEZXJpdmVkQ2xhc3ND
b250ZXh0KCkpCiAgICAgICAgICAgICAgICAgICAgIG5ld0Rlcml2ZWRDb250ZXh0VHlwZSA9IERl
cml2ZWRDb250ZXh0VHlwZTo6RGVyaXZlZE1ldGhvZENvbnRleHQ7CiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIGF1dG8gb3B0aW9uYWxWYXJpYWJsZXNVbmRlclREWiA9IGdldFZhcmlhYmxl
c1VuZGVyVERaKCk7CisgICAgICAgICAgICBPcHRpb25hbDxQcml2YXRlTmFtZUVudmlyb25tZW50
PiBwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50ID0gZ2V0QXZhaWxhYmxlUHJpdmF0ZUFjY2Vz
c05hbWVzKCk7CiAKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGVzZSBmbGFncywgUGFyc2VyTW9k
ZXMgYW5kIHByb3BhZ2F0aW9uIHRvIFhYWENvZGVCbG9ja3Mgc2hvdWxkIGJlIHJlb3JnYW5pemVk
LgogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1MTU0NwpAQCAtMTE5NCwxMCArMTIwMywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlICYmIG1ldGFk
YXRhLT5jb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpCiAgICAgICAg
ICAgICAgICAgY29uc3RydWN0QWJpbGl0eSA9IENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVj
dDsKIAotICAgICAgICAgICAgcmV0dXJuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVh
dGUobV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgpLCBtZXRhZGF0YSwgaXNCdWlsdGluRnVuY3Rp
b24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwg
Y29uc3RydWN0QWJpbGl0eSwgc2NyaXB0TW9kZSgpLCBXVEZNb3ZlKG9wdGlvbmFsVmFyaWFibGVz
VW5kZXJURFopLCBuZXdEZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyKTsKKyAgICAgICAgICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3Jl
YXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgbWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0
aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24s
IGNvbnN0cnVjdEFiaWxpdHksIHNjcmlwdE1vZGUoKSwgV1RGTW92ZShvcHRpb25hbFZhcmlhYmxl
c1VuZGVyVERaKSwgV1RGTW92ZShwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50KSwgbmV3RGVy
aXZlZENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgcHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQpOwogICAgICAgICB9CiAKICAgICAgICAgUmVmUHRyPFREWkVudmlyb25tZW50
TGluaz4gZ2V0VmFyaWFibGVzVW5kZXJURFooKTsKKyAgICAgICAgT3B0aW9uYWw8UHJpdmF0ZU5h
bWVFbnZpcm9ubWVudD4gZ2V0QXZhaWxhYmxlUHJpdmF0ZUFjY2Vzc05hbWVzKCk7CiAKICAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdENvbnN0cnVjdFZhcmFyZ3MoUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBmdW5jLCBSZWdpc3RlcklEKiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGFyZ3Vt
ZW50cywgUmVnaXN0ZXJJRCogZmlyc3RGcmVlUmVnaXN0ZXIsIGludDMyX3QgZmlyc3RWYXJBcmdP
ZmZzZXQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgRGVidWdnYWJsZUNh
bGwpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsT3A+CkBAIC0xMjUzLDYgKzEyNjMs
MTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBtX2xhc3RJbnN0cnVjdGlvbiA9IHBy
ZXZMYXN0SW5zdHJ1Y3Rpb247CiAgICAgICAgIH0KIAorICAgICAgICBib29sIGlzUHJpdmF0ZU1l
dGhvZChjb25zdCBJZGVudGlmaWVyJik7CisKKyAgICAgICAgdm9pZCBwdXNoUHJpdmF0ZUFjY2Vz
c05hbWVzKGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqKTsKKyAgICAgICAgdm9pZCBwb3BQ
cml2YXRlQWNjZXNzTmFtZXMoKTsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIE9wdGlvblNldDxD
b2RlR2VuZXJhdGlvbk1vZGU+IG1fY29kZUdlbmVyYXRpb25Nb2RlOwogCkBAIC0xMjY2LDYgKzEy
ODEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBSZWZQdHI8VERaRW52aXJvbm1lbnRM
aW5rPiBtX2NhY2hlZFBhcmVudFREWjsKICAgICAgICAgVmVjdG9yPFREWlN0YWNrRW50cnk+IG1f
VERaU3RhY2s7CisgICAgICAgIFZlY3RvcjxQcml2YXRlTmFtZUVudmlyb25tZW50PiBtX3ByaXZh
dGVOYW1lc1N0YWNrOwogICAgICAgICBPcHRpb25hbDxzaXplX3Q+IG1fdmFyU2NvcGVMZXhpY2Fs
U2NvcGVTdGFja0luZGV4OwogICAgICAgICB2b2lkIHB1c2hURFpWYXJpYWJsZXMoY29uc3QgVmFy
aWFibGVFbnZpcm9ubWVudCYsIFREWkNoZWNrT3B0aW1pemF0aW9uLCBURFpSZXF1aXJlbWVudCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcAppbmRleCAwZTFiOTVmNGY2YTgyMzQwMjljMzYyYTZiMjMzY2ViNTZkNDZlMDNhLi5m
YjAyNzJmNDE4MmY1M2QzODc3YTA3MzAxYWJiMWY1MmU4NTJmYjQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC01NjMs
NyArNTYzLDcgQEAgdm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0RGVjbGFyZVByaXZhdGVGaWVs
ZE5hbWVzKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IKICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gY3JlYXRlUHJpdmF0ZVN5bWJvbDsKICAgICBmb3IgKFByb3BlcnR5TGlzdE5vZGUqIHAgPSB0
aGlzOyBwOyBwID0gcC0+bV9uZXh0KSB7CiAgICAgICAgIGNvbnN0IFByb3BlcnR5Tm9kZSYgbm9k
ZSA9ICpwLT5tX25vZGU7Ci0gICAgICAgIGlmIChub2RlLnR5cGUoKSAmIFByb3BlcnR5Tm9kZTo6
UHJpdmF0ZSkgeworICAgICAgICBpZiAobm9kZS50eXBlKCkgJiBQcm9wZXJ0eU5vZGU6OlByaXZh
dGVGaWVsZCkgewogICAgICAgICAgICAgaWYgKCFjcmVhdGVQcml2YXRlU3ltYm9sKQogICAgICAg
ICAgICAgICAgIGNyZWF0ZVByaXZhdGVTeW1ib2wgPSBnZW5lcmF0b3IubW92ZUxpbmtUaW1lQ29u
c3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6Y3JlYXRlUHJpdmF0ZVN5bWJvbCk7CiAK
QEAgLTU4OSw3ICs1ODksNyBAQCBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZQogICAgICAgICBpZiAo
cC0+aXNDb21wdXRlZENsYXNzRmllbGQoKSkKICAgICAgICAgICAgIGVtaXRTYXZlQ29tcHV0ZWRG
aWVsZE5hbWUoZ2VuZXJhdG9yLCAqcC0+bV9ub2RlKTsKIAotICAgICAgICBpZiAocC0+aXNJbnN0
YW5jZUNsYXNzRmllbGQoKSkgeworICAgICAgICBpZiAocC0+aXNJbnN0YW5jZUNsYXNzRmllbGQo
KSAmJiAhKHAtPm1fbm9kZS0+dHlwZSgpICYgUHJvcGVydHlOb2RlOjpQcml2YXRlTWV0aG9kKSkg
ewogICAgICAgICAgICAgQVNTRVJUKGluc3RhbmNlRmllbGRMb2NhdGlvbnMpOwogICAgICAgICAg
ICAgaW5zdGFuY2VGaWVsZExvY2F0aW9ucy0+YXBwZW5kKHAtPnBvc2l0aW9uKCkpOwogICAgICAg
ICAgICAgY29udGludWU7CkBAIC03NTcsNyArNzU3LDcgQEAgUmVnaXN0ZXJJRCogUHJvcGVydHlM
aXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGUKIHZvaWQgUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogbmV3T2JqLCBQcm9wZXJ0eU5vZGUm
IG5vZGUpCiB7CiAgICAgLy8gUHJpdmF0ZSBmaWVsZHMgYXJlIGhhbmRsZWQgaW4gYSBzeW50aGV0
aWMgY2xhc3NGaWVsZEluaXRpYWxpemVyIGZ1bmN0aW9uLCBub3QgaGVyZS4KLSAgICBBU1NFUlQo
IShub2RlLnR5cGUoKSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0ZSkpOworICAgIEFTU0VSVCghKG5v
ZGUudHlwZSgpICYgUHJvcGVydHlOb2RlOjpQcml2YXRlRmllbGQpKTsKIAogICAgIGlmIChQcm9w
ZXJ0eU5vZGU6OmlzVW5kZXJzY29yZVByb3RvU2V0dGVyKGdlbmVyYXRvci52bSgpLCBub2RlKSkg
ewogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvdG90eXBlID0gZ2VuZXJhdG9yLmVtaXRO
b2RlKG5vZGUubV9hc3NpZ24pOwpAQCAtNzgyLDYgKzc4MiwxNCBAQCB2b2lkIFByb3BlcnR5TGlz
dE5vZGU6OmVtaXRQdXRDb25zdGFudFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZwogCiAgICAgaWYgKG5vZGUuaXNDbGFzc1Byb3BlcnR5KCkpIHsKICAgICAgICAgQVNT
RVJUKG5vZGUubmVlZHNTdXBlckJpbmRpbmcoKSk7CisKKyAgICAgICAgaWYgKG5vZGUudHlwZSgp
ICYgUHJvcGVydHlOb2RlOjpQcml2YXRlTWV0aG9kKSB7CisgICAgICAgICAgICBWYXJpYWJsZSB2
YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoKm5vZGUubmFtZSgpKTsKKyAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0UHV0VG9TY29wZShnZW5lcmF0b3Iuc2NvcGVSZWdpc3RlcigpLCB2YXIsIHZhbHVl
LmdldCgpLCBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpDb25zdElu
aXRpYWxpemF0aW9uKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eU5hbWVSZWdpc3RlcjsKICAgICAgICAgaWYgKG5v
ZGUubmFtZSgpKQogICAgICAgICAgICAgcHJvcGVydHlOYW1lID0gZ2VuZXJhdG9yLmVtaXRMb2Fk
KG51bGxwdHIsICpub2RlLm5hbWUoKSk7CiAKQEAgLTkxMCwxNCArOTE4LDI0IEBAIFJlZ2lzdGVy
SUQqIERvdEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVyCiAKIFJlZ2lzdGVySUQqIEJhc2VEb3ROb2RlOjplbWl0R2V0UHJvcGVy
dHlWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIGJhc2UsIFJlZlB0cjxSZWdpc3RlcklEPiYgdGhpc1ZhbHVlKQogewotICAgIGlm
IChpc1ByaXZhdGVGaWVsZCgpKSB7CisgICAgaWYgKGlzUHJpdmF0ZU1lbWJlcigpKSB7CisgICAg
ICAgIGlmIChnZW5lcmF0b3IuaXNQcml2YXRlTWV0aG9kKGlkZW50aWZpZXIoKSkpIHsKKyAgICAg
ICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudGlmaWVyKCkpOwor
ICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNv
bHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKKworICAgICAgICAgICAgUmVnaXN0ZXJJRCogcHJpdmF0
ZUJyYW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENo
ZWNrUHJpdmF0ZUJyYW5kKGJhc2UsIHByaXZhdGVCcmFuZFN5bWJvbCk7CisKKyAgICAgICAgICAg
IHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShkc3QsIHNjb3BlLmdldCgpLCB2YXIs
IFRocm93SWZOb3RGb3VuZCk7CisgICAgICAgIH0KKwogICAgICAgICBWYXJpYWJsZSB2YXIgPSBn
ZW5lcmF0b3IudmFyaWFibGUobV9pZGVudCk7CiAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
IXZhci5sb2NhbCgpLCAiUHJpdmF0ZSBGaWVsZCBuYW1lcyBtdXN0IGJlIHN0b3JlZCBpbiBjYXB0
dXJlZCB2YXJpYWJsZXMiKTsKIAogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBn
ZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwogICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAg
ICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHByaXZhdGVOYW1lLmdldCgpLCBzY29wZS5n
ZXQoKSwgdmFyLCBEb05vdFRocm93SWZOb3RGb3VuZCk7Ci0gICAgICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdERpcmVjdEdldEJ5VmFsKGRzdCwgYmFzZSwgcHJpdmF0ZU5hbWUuZ2V0KCkpOworICAg
ICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlTmFtZShkc3QsIGJhc2UsIHByaXZh
dGVOYW1lLmdldCgpKTsKICAgICB9CiAKICAgICBpZiAobV9iYXNlLT5pc1N1cGVyTm9kZSgpKSB7
CkBAIC05MzcsNyArOTU1LDE4IEBAIFJlZ2lzdGVySUQqIEJhc2VEb3ROb2RlOjplbWl0R2V0UHJv
cGVydHlWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpCiAKIFJlZ2lzdGVy
SUQqIEJhc2VEb3ROb2RlOjplbWl0UHV0UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdmFsdWUsIFJlZlB0cjxSZWdpc3Rl
cklEPiYgdGhpc1ZhbHVlKQogewotICAgIGlmIChpc1ByaXZhdGVGaWVsZCgpKSB7CisgICAgaWYg
KGlzUHJpdmF0ZU1lbWJlcigpKSB7CisgICAgICAgIGF1dG8gaWRlbnRpZmllck5hbWUgPSBpZGVu
dGlmaWVyKCk7CisgICAgICAgIGlmIChnZW5lcmF0b3IuaXNQcml2YXRlTWV0aG9kKGlkZW50aWZp
ZXJOYW1lKSkgeworICAgICAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxl
KGlkZW50aWZpZXJOYW1lKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9
IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CisKKyAgICAgICAgICAg
IFJlZ2lzdGVySUQqIHByaXZhdGVCcmFuZFN5bWJvbCA9IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0
ZUJyYW5kKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCkpOworICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRDaGVja1ByaXZhdGVCcmFuZChiYXNlLCBwcml2YXRlQnJhbmRTeW1i
b2wpOworCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFRocm93VHlwZUVycm9yKCJUcnlpbmcg
dG8gYWNjZXNzIGEgbm90IGRlZmluZWQgcHJpdmF0ZSBzZXR0ZXIiKTsKKyAgICAgICAgfQorCiAg
ICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShtX2lkZW50KTsKICAgICAg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghdmFyLmxvY2FsKCksICJQcml2YXRlIEZpZWxkIG5hbWVz
IG11c3QgYmUgc3RvcmVkIGluIGNhcHR1cmVkIHZhcmlhYmxlcyIpOwogCkBAIC0xMDk1LDEyICsx
MTI0LDE0IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlCiAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdFB1dFRoaXNUb0Fycm93RnVuY3Rpb25Db250ZXh0U2NvcGUoKTsKIAogICAgICAgICAvLyBJ
bml0aWFsaXplIGluc3RhbmNlIGZpZWxkcyBhZnRlciBzdXBlci1jYWxsLgorICAgICAgICBpZiAo
T3B0aW9uczo6dXNlUHJpdmF0ZU1ldGhvZHMoKSAmJiBnZW5lcmF0b3IucHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQoKSA9PSBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6TmVlZGVkKQorICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRJbnN0YWxsUHJpdmF0ZUJyYW5kKGdlbmVyYXRvci50aGlzUmVnaXN0
ZXIoKSk7CisKICAgICAgICAgaWYgKGdlbmVyYXRvci5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
cigpID09IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpZZXMpIHsKICAgICAgICAgICAgIEFT
U0VSVChnZW5lcmF0b3IuaXNDb25zdHJ1Y3RvcigpIHx8IGdlbmVyYXRvci5pc0Rlcml2ZWRDb25z
dHJ1Y3RvckNvbnRleHQoKSk7CiAgICAgICAgICAgICBmdW5jID0gZ2VuZXJhdG9yLmVtaXRMb2Fk
RGVyaXZlZENvbnN0cnVjdG9yKCk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEluc3RhbmNl
RmllbGRJbml0aWFsaXphdGlvbklmTmVlZGVkKGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSwgZnVu
Yy5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgfQot
CiAgICAgICAgIHJldHVybiByZXQ7CiAgICAgfQogCkBAIC0yMjU0LDE0ICsyMjg1LDE0IEBAIFJl
Z2lzdGVySUQqIFBvc3RmaXhOb2RlOjplbWl0RG90KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdCkKIAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8o
ZG90QWNjZXNzb3ItPmRpdm90KCksIGRvdEFjY2Vzc29yLT5kaXZvdFN0YXJ0KCksIGRvdEFjY2Vz
c29yLT5kaXZvdEVuZCgpKTsKIAotICAgIGlmIChkb3RBY2Nlc3Nvci0+aXNQcml2YXRlRmllbGQo
KSkgeworICAgIGlmIChkb3RBY2Nlc3Nvci0+aXNQcml2YXRlTWVtYmVyKCkpIHsKICAgICAgICAg
QVNTRVJUKCFiYXNlSXNTdXBlcik7CiAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52
YXJpYWJsZShpZGVudCk7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVy
YXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CiAgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgp
LCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsKIAotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdERpcmVjdEdldEJ5VmFsKGdlbmVyYXRvci5uZXdUZW1w
b3JhcnkoKSwgYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCkpOworICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldFByaXZhdGVOYW1lKGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKSwgYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCkpOwogICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gb2xkVmFsdWUgPSBlbWl0UG9zdEluY09yRGVjKGdlbmVyYXRv
ciwgZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCB2YWx1ZS5nZXQoKSwgbV9vcGVyYXRv
cik7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RT
dGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcml2YXRlRmllbGRQ
dXQoYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCksIHZhbHVlLmdldCgpKTsKQEAgLTI0OTMs
MTQgKzI1MjQsMTQgQEAgUmVnaXN0ZXJJRCogUHJlZml4Tm9kZTo6ZW1pdERvdChCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAKICAgICBnZW5lcmF0b3IuZW1p
dEV4cHJlc3Npb25JbmZvKGRvdEFjY2Vzc29yLT5kaXZvdCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RT
dGFydCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RFbmQoKSk7CiAgICAgUmVnaXN0ZXJJRCogdmFsdWU7
Ci0gICAgaWYgKGRvdEFjY2Vzc29yLT5pc1ByaXZhdGVGaWVsZCgpKSB7CisgICAgaWYgKGRvdEFj
Y2Vzc29yLT5pc1ByaXZhdGVNZW1iZXIoKSkgewogICAgICAgICBBU1NFUlQoIWJhc2VOb2RlLT5p
c1N1cGVyTm9kZSgpKTsKICAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxl
KGlkZW50KTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVt
aXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHByaXZhdGVOYW1lID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICBnZW5lcmF0
b3IuZW1pdEdldEZyb21TY29wZShwcml2YXRlTmFtZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwg
RG9Ob3RUaHJvd0lmTm90Rm91bmQpOwogCi0gICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRE
aXJlY3RHZXRCeVZhbChwcm9wRHN0LmdldCgpLCBiYXNlLmdldCgpLCBwcml2YXRlTmFtZS5nZXQo
KSk7CisgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlTmFtZShwcm9wRHN0
LmdldCgpLCBiYXNlLmdldCgpLCBwcml2YXRlTmFtZS5nZXQoKSk7CiAgICAgICAgIGVtaXRJbmNP
ckRlYyhnZW5lcmF0b3IsIHZhbHVlLCBtX29wZXJhdG9yKTsKICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAg
ICAgICBnZW5lcmF0b3IuZW1pdFByaXZhdGVGaWVsZFB1dChiYXNlLmdldCgpLCBwcml2YXRlTmFt
ZS5nZXQoKSwgdmFsdWUpOwpAQCAtNDg5Nyw2ICs0OTI4LDEzIEBAIFJlZ2lzdGVySUQqIENsYXNz
RXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklECiAgICAgaWYgKG1fbmVlZHNMZXhpY2FsU2NvcGUpCiAgICAgICAgIGdlbmVyYXRvci5w
dXNoTGV4aWNhbFNjb3BlKHRoaXMsIEJ5dGVjb2RlR2VuZXJhdG9yOjpURFpDaGVja09wdGltaXph
dGlvbjo6T3B0aW1pemUsIEJ5dGVjb2RlR2VuZXJhdG9yOjpOZXN0ZWRTY29wZVR5cGU6OklzTmVz
dGVkKTsKIAorICAgIGJvb2wgaGFzUHJpdmF0ZU5hbWVzID0gISFtX2xleGljYWxWYXJpYWJsZXMu
cHJpdmF0ZU5hbWVzU2l6ZSgpOworICAgIGJvb2wgc2hvdWxkRW1pdFByaXZhdGVCcmFuZCA9IG1f
bGV4aWNhbFZhcmlhYmxlcy5oYXNQcml2YXRlTWV0aG9kT3JBY2Nlc3NvcigpOworICAgIGlmICho
YXNQcml2YXRlTmFtZXMpCisgICAgICAgIGdlbmVyYXRvci5wdXNoUHJpdmF0ZUFjY2Vzc05hbWVz
KG1fbGV4aWNhbFZhcmlhYmxlcy5wcml2YXRlTmFtZUVudmlyb25tZW50KCkpOworICAgIGlmIChz
aG91bGRFbWl0UHJpdmF0ZUJyYW5kKQorICAgICAgICBnZW5lcmF0b3IuZW1pdENyZWF0ZVByaXZh
dGVCcmFuZChnZW5lcmF0b3Iuc2NvcGVSZWdpc3RlcigpLCBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9u
LCBtX3Bvc2l0aW9uKTsKKwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzdXBlcmNsYXNzOwogICAg
IGlmIChtX2NsYXNzSGVyaXRhZ2UpIHsKICAgICAgICAgc3VwZXJjbGFzcyA9IGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKTsKQEAgLTQ5MDcsMTcgKzQ5NDUsMTggQEAgUmVnaXN0ZXJJRCogQ2xhc3NF
eHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQKICAgICBib29sIG5lZWRzSG9tZU9iamVjdCA9IGZhbHNlOwogCiAgICAgYXV0byBuZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplciA9IHRoaXMtPmhhc0luc3RhbmNlRmllbGRzKCkgPyBOZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplcjo6WWVzIDogTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6
Ok5vOwotCisgICAgYXV0byBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9IHNob3VsZEVtaXRQcml2
YXRlQnJhbmQgPyBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6TmVlZGVkIDogUHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQ6Ok5vbmU7CiAgICAgaWYgKG1fY29uc3RydWN0b3JFeHByZXNzaW9uKSB7CiAg
ICAgICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yRXhwcmVzc2lvbi0+aXNGdW5jRXhwck5vZGUoKSk7
CiAgICAgICAgIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBtZXRhZGF0YSA9IHN0YXRpY19jYXN0PEZ1
bmNFeHByTm9kZSo+KG1fY29uc3RydWN0b3JFeHByZXNzaW9uKS0+bWV0YWRhdGEoKTsKICAgICAg
ICAgbWV0YWRhdGEtPnNldEVjbWFOYW1lKGVjbWFOYW1lKCkpOwogICAgICAgICBtZXRhZGF0YS0+
c2V0Q2xhc3NTb3VyY2UobV9jbGFzc1NvdXJjZSk7CiAgICAgICAgIG1ldGFkYXRhLT5zZXROZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplcihuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9PSBOZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplcjo6WWVzKTsKKyAgICAgICAgbWV0YWRhdGEtPnNldFByaXZh
dGVCcmFuZFJlcXVpcmVtZW50KHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KTsKICAgICAgICAgY29u
c3RydWN0b3IgPSBnZW5lcmF0b3IuZW1pdE5vZGUoY29uc3RydWN0b3IuZ2V0KCksIG1fY29uc3Ry
dWN0b3JFeHByZXNzaW9uKTsKICAgICAgICAgbmVlZHNIb21lT2JqZWN0ID0gbV9jbGFzc0hlcml0
YWdlIHx8IG1ldGFkYXRhLT5zdXBlckJpbmRpbmcoKSA9PSBTdXBlckJpbmRpbmc6Ok5lZWRlZDsK
ICAgICB9IGVsc2UKLSAgICAgICAgY29uc3RydWN0b3IgPSBnZW5lcmF0b3IuZW1pdE5ld0RlZmF1
bHRDb25zdHJ1Y3Rvcihjb25zdHJ1Y3Rvci5nZXQoKSwgbV9jbGFzc0hlcml0YWdlID8gQ29uc3Ry
dWN0b3JLaW5kOjpFeHRlbmRzIDogQ29uc3RydWN0b3JLaW5kOjpCYXNlLCBtX25hbWUsIGVjbWFO
YW1lKCksIG1fY2xhc3NTb3VyY2UsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsKKyAgICAg
ICAgY29uc3RydWN0b3IgPSBnZW5lcmF0b3IuZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3Rvcihjb25z
dHJ1Y3Rvci5nZXQoKSwgbV9jbGFzc0hlcml0YWdlID8gQ29uc3RydWN0b3JLaW5kOjpFeHRlbmRz
IDogQ29uc3RydWN0b3JLaW5kOjpCYXNlLCBtX25hbWUsIGVjbWFOYW1lKCksIG1fY2xhc3NTb3Vy
Y2UsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7
CiAKICAgICBjb25zdCBhdXRvJiBwcm9wZXJ0eU5hbWVzID0gZ2VuZXJhdG9yLnByb3BlcnR5TmFt
ZXMoKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvdG90eXBlID0gZ2VuZXJhdG9yLmVtaXRO
ZXdPYmplY3QoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpKTsKQEAgLTQ5OTYsNiArNTAzNSw5IEBA
IFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAgICAgaWYgKG1fbmVlZHNMZXhpY2FsU2NvcGUpCiAg
ICAgICAgIGdlbmVyYXRvci5wb3BMZXhpY2FsU2NvcGUodGhpcyk7CiAKKyAgICBpZiAoaGFzUHJp
dmF0ZU5hbWVzKQorICAgICAgICBnZW5lcmF0b3IucG9wUHJpdmF0ZUFjY2Vzc05hbWVzKCk7CisK
ICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0
LCBjb25zdHJ1Y3Rvci5nZXQoKSksIGNvbnN0cnVjdG9yLmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKaW5k
ZXggODc3ZTYzMjU1MGJjZDUyMDYwYTc1NDVhZWY1MDg2ZGMxOTNhNGZkZi4uNzQwYWQ4MmM3OTU0
YTBmOTgyODIyODM1NjhiMTNlMTlmODQxYmZmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCkBAIC0yNTksMTEgKzI1OSwx
MSBAQCBKU1ZhbHVlIERlYnVnZ2VyQ2FsbEZyYW1lOjpldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lv
bihjb25zdCBTdHJpbmcmIHNjcmlwdCwgSlNPYgogICAgICAgICBldmFsQ29udGV4dFR5cGUgPSBF
dmFsQ29udGV4dFR5cGU6Ok5vbmU7CiAKICAgICBURFpFbnZpcm9ubWVudCB2YXJpYWJsZXNVbmRl
clREWjsKLSAgICBWYXJpYWJsZUVudmlyb25tZW50IHByaXZhdGVOYW1lczsKLSAgICBKU1Njb3Bl
Ojpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKHNjb3BlKCktPmpzU2NvcGUoKSwgdmFy
aWFibGVzVW5kZXJURFosIHByaXZhdGVOYW1lcyk7CisgICAgUHJpdmF0ZU5hbWVFbnZpcm9ubWVu
dCBwcml2YXRlTmFtZUVudmlyb25tZW50OworICAgIEpTU2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFy
aWFibGVzVW5kZXJURFooc2NvcGUoKS0+anNTY29wZSgpLCB2YXJpYWJsZXNVbmRlclREWiwgcHJp
dmF0ZU5hbWVFbnZpcm9ubWVudCk7CiAKICAgICBFQ01BTW9kZSBlY21hTW9kZSA9IGNvZGVCbG9j
ay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5TdHJpY3RDb250ZXh0KCkgPyBFQ01BTW9kZTo6c3Ry
aWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCk7Ci0gICAgYXV0byogZXZhbCA9IERpcmVjdEV2YWxF
eGVjdXRhYmxlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtYWtlU291cmNlKHNjcmlwdCwgY2FsbEZy
YW1lLT5jYWxsZXJTb3VyY2VPcmlnaW4odm0pKSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9j
aygpLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygp
LT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJs
b2NrKCktPmlzQXJyb3dGdW5jdGlvbigpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5p
c0luc2lkZU9yZGluYXJ5RnVuY3Rpb24oKSwgZXZhbENvbnRleHRUeXBlLCAmdmFyaWFibGVzVW5k
ZXJURFosICZwcml2YXRlTmFtZXMsIGVjbWFNb2RlKTsKKyAgICBhdXRvKiBldmFsID0gRGlyZWN0
RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShnbG9iYWxPYmplY3QsIG1ha2VTb3VyY2Uoc2NyaXB0LCBj
YWxsRnJhbWUtPmNhbGxlclNvdXJjZU9yaWdpbih2bSkpLCBjb2RlQmxvY2stPnVubGlua2VkQ29k
ZUJsb2NrKCktPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJs
b2NrKCktPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGNvZGVCbG9jay0+dW5saW5rZWRD
b2RlQmxvY2soKS0+cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSwgY29kZUJsb2NrLT51bmxpbmtl
ZENvZGVCbG9jaygpLT5pc0Fycm93RnVuY3Rpb24oKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFi
bGUoKS0+aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKCksIGV2YWxDb250ZXh0VHlwZSwgJnZhcmlh
Ymxlc1VuZGVyVERaLCAmcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgZWNtYU1vZGUpOwogICAgIGlm
IChVTkxJS0VMWShjYXRjaFNjb3BlLmV4Y2VwdGlvbigpKSkgewogICAgICAgICBleGNlcHRpb24g
PSBjYXRjaFNjb3BlLmV4Y2VwdGlvbigpOwogICAgICAgICBjYXRjaFNjb3BlLmNsZWFyRXhjZXB0
aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggN2I1YjY4NDU4ODVhNDVkMzJjZjkwMjJjMDkw
ZWFhZmVlODczZDZiZC4uNDYwYTYwZTQyMzkwMTBkNGY5YjRlNGQ3OWZhYWU3YWFmMjc4MzI5NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkFycmF5Q29u
c3RydWN0b3IuaCIKICNpbmNsdWRlICJBcnJheVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkNhY2hl
YWJsZUlkZW50aWZpZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiQ2hlY2tQcml2YXRlQnJhbmRTdGF0
dXMuaCIKICNpbmNsdWRlICJERkdBYnN0cmFjdEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiREZH
QWJzdHJhY3RJbnRlcnByZXRlckNsb2JiZXJTdGF0ZS5oIgogI2luY2x1ZGUgIkRPTUpJVEdldHRl
clNldHRlci5oIgpAQCAtNDcsNiArNDgsNyBAQAogI2luY2x1ZGUgIk1hdGhDb21tb24uaCIKICNp
bmNsdWRlICJOdW1iZXJDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIK
KyNpbmNsdWRlICJTZXRQcml2YXRlQnJhbmRTdGF0dXMuaCIKICNpbmNsdWRlICJTdHJpbmdPYmpl
Y3QuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVDYWNoZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVJh
cmVEYXRhSW5saW5lcy5oIgpAQCAtNDAzNSw2ICs0MDM3LDggQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJl
ckxpbWkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBDaGVja1ByaXZhdGVCcmFu
ZDoKKyAgICBjYXNlIFNldFByaXZhdGVCcmFuZDoKICAgICBjYXNlIFB1dFByaXZhdGVOYW1lOiB7
CiAgICAgICAgIGNsb2JiZXJXb3JsZCgpOwogICAgICAgICBicmVhazsKQEAgLTQzNjUsNiArNDM2
OSw4IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1
dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3Rh
dHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVyRGVsZXRl
QnlTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1czoKKyAgICBj
YXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czoKICAgICBjYXNlIENsZWFyQ2F0Y2hMb2Nh
bHM6CiAgICAgICAgIGJyZWFrOwogCkBAIC00NTUzLDYgKzQ1NTksMjEgQEAgdm9pZCBBYnN0cmFj
dEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZmlsdGVySUNTdGF0dXMoTm9kZSogbm9k
ZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVC
cmFuZFN0YXR1czogeworICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICBpZiAodmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkK
KyAgICAgICAgICAgIG5vZGUtPmNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzKCktPmZpbHRlcih2YWx1
ZS5tX3N0cnVjdHVyZS50b1N0cnVjdHVyZVNldCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CisgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6IHsKKyAgICAgICAgQWJzdHJh
Y3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgaWYgKHZh
bHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpCisgICAgICAgICAgICBub2RlLT5zZXRQcml2YXRl
QnJhbmRTdGF0dXMoKS0+ZmlsdGVyKHZhbHVlLm1fc3RydWN0dXJlLnRvU3RydWN0dXJlU2V0KCkp
OworICAgICAgICBicmVhazsKKyAgICB9CisKKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5j
cHAKaW5kZXggNmIzNjE5OTVlMmQ4NTZjY2NjODRjOTk1MmZkMGNkM2NjYjUzYWM4Zi4uNmY4MTcz
ODhhYzM4ZmU1YWZlMDIwZTQwZjA0ZTM2NzM1NDE1NTYzOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3Bw
CkBAIC00MDYsNiArNDA2LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRl
ckNhbGxMaW5rU3RhdHVzOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVz
OgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CisgICAgICAgICAg
ICAgICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1czoKKyAgICAgICAgICAgICAg
ICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czoKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAKICAgICAgICAgICAgICAgICBjYXNlIENoZWNrQXJyYXlPckVtcHR5OgpAQCAtMTI2
Niw3ICsxMjY4LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlclB1dEJ5
SWRTdGF0dXM6CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKICAg
ICAgICAgICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKLSAgICAgICAgICAgICAgICBj
YXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOiB7CisgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJE
ZWxldGVCeVN0YXR1czoKKyAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJy
YW5kU3RhdHVzOgorICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3Rh
dHVzOiB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghaXNFbGltaW5hdGVkQWxsb2NhdGlvbihu
b2RlLT5jaGlsZDEoKS5ub2RlKCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZShtX2dyYXBoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggYzMwMmJjZWQwODlj
OWM0M2MyOWRkZjg4MWVhMjg3NzI2NDNkNzQwZC4uMzkzYzA1YjE5ZTM1YzA4YTM5NDI0ZTcxMTk5
OTU0NzY4MTRhYzAzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJCeXRlY29kZU9wZXJh
bmRzRm9yQ2hlY2twb2ludC5oIgogI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtTdGF0dXMuaCIKKyNpbmNsdWRlICJDaGVja1ByaXZhdGVC
cmFuZFN0YXR1cy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvZGVCbG9j
a1dpdGhKSVRUeXBlLmgiCiAjaW5jbHVkZSAiQ29tbW9uU2xvd1BhdGhzLmgiCkBAIC03NCw2ICs3
NSw3IEBACiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1
cy5oIgogI2luY2x1ZGUgIlJlZ0V4cFByb3RvdHlwZS5oIgorI2luY2x1ZGUgIlNldFByaXZhdGVC
cmFuZFN0YXR1cy5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCiAjaW5jbHVkZSAiU3Ry
aW5nQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgpAQCAtNjI1
OCw2ICs2MjYwLDkxIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQg
bGltaXQpCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wdXRfYnlfdmFsX3dpdGhfdGhpcyk7
CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX2NoZWNrX3ByaXZhdGVfYnJhbmQ6IHsKKyAg
ICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQ2hlY2tQ
cml2YXRlQnJhbmQ+KCk7CisgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1f
YmFzZSk7CisgICAgICAgICAgICBOb2RlKiBicmFuZCA9IGdldChieXRlY29kZS5tX2JyYW5kKTsK
KyAgICAgICAgICAgIGJvb2wgY29tcGlsZWRBc0NoZWNrU3RydWN0dXJlID0gZmFsc2U7CisKKyAg
ICAgICAgICAgIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzIGNoZWNrU3RhdHVzID0gQ2hlY2tQcml2
YXRlQnJhbmRTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFj
a1RvcC0+bV9wcm9maWxlZEJsb2NrLAorICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3At
Pm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ssCisgICAgICAgICAgICAgICAgY3VycmVu
dENvZGVPcmlnaW4oKSk7CisKKyAgICAgICAgICAgIGlmICghbV9pbmxpbmVTdGFja1RvcC0+bV9l
eGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkSWRlbnQpCisgICAgICAg
ICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUo
bV9jdXJyZW50SW5kZXgsIEJhZFR5cGUpCisgICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3Rh
Y2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENvbnN0
YW50VmFsdWUpKSB7CisKKyAgICAgICAgICAgICAgICBpZiAoQ2FjaGVhYmxlSWRlbnRpZmllciBp
ZGVudGlmaWVyID0gY2hlY2tTdGF0dXMuc2luZ2xlSWRlbnRpZmllcigpKSB7CisgICAgICAgICAg
ICAgICAgICAgIG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUoaWRlbnRpZmllci51aWQoKSk7
CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChpZGVudGlmaWVyLmlzU3ltYm9sKCkpOworICAg
ICAgICAgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJv
bmcoaWRlbnRpZmllci5jZWxsKCkpOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENo
ZWNrSXNDb25zdGFudCwgT3BJbmZvKGZyb3plbiksIGJyYW5kKTsKKworICAgICAgICAgICAgICAg
ICAgICBpZiAoY2hlY2tTdGF0dXMuaXNTaW1wbGUoKSAmJiBjaGVja1N0YXR1cy52YXJpYW50cygp
LnNpemUoKSAmJiBPcHRpb25zOjp1c2VBY2Nlc3NJbmxpbmluZygpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQoY2hlY2tTdGF0dXMudmFyaWFudHMoKS5zaXplKCkgPT0gMSk7IC8v
IElmIHdlIGhhdmUgc2luZ2xlIGlkZW50aWZpZXIsIHdlIHNob3VsZCBoYXZlIG9ubHkgMSB2YXJp
YW50LgorICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50IHZh
cmlhbnQgPSBjaGVja1N0YXR1cy52YXJpYW50cygpWzBdOworCisgICAgICAgICAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLCBPcEluZm8obV9n
cmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFkZENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVz
KGN1cnJlbnRDb2RlT3JpZ2luKCksIGNoZWNrU3RhdHVzKSksIGJhc2UpOworICAgICAgICAgICAg
ICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRk
U3RydWN0dXJlU2V0KHZhcmlhbnQuc3RydWN0dXJlU2V0KCkpKSwgYmFzZSk7CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbXBpbGVkQXNDaGVja1N0cnVjdHVyZSA9IHRydWU7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmICghY29tcGlsZWRBc0NoZWNrU3RydWN0dXJlKQorICAgICAgICAgICAgICAgIGFk
ZFRvR3JhcGgoQ2hlY2tQcml2YXRlQnJhbmQsIGJhc2UsIGJyYW5kKTsKKworICAgICAgICAgICAg
TkVYVF9PUENPREUob3BfY2hlY2tfcHJpdmF0ZV9icmFuZCk7CisgICAgICAgIH0KKworICAgICAg
ICBjYXNlIG9wX3NldF9wcml2YXRlX2JyYW5kOiB7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFNldFByaXZhdGVCcmFuZD4oKTsKKyAgICAgICAg
ICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKKyAgICAgICAgICAgIE5vZGUq
IGJyYW5kID0gZ2V0KGJ5dGVjb2RlLm1fYnJhbmQpOworCisgICAgICAgICAgICBib29sIGlubGlu
ZWRTZXRQcml2YXRlQnJhbmQgPSBmYWxzZTsKKyAgICAgICAgICAgIFNldFByaXZhdGVCcmFuZFN0
YXR1cyBzZXRTdGF0dXMgPSBTZXRQcml2YXRlQnJhbmRTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAg
ICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLAorICAgICAgICAg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ss
CisgICAgICAgICAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSk7CisKKyAgICAgICAgICAgIGlm
ICghbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJ
bmRleCwgQmFkSWRlbnQpCisgICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1f
ZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZFR5cGUpCisgICAgICAg
ICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUo
bV9jdXJyZW50SW5kZXgsIEJhZENvbnN0YW50VmFsdWUpKSB7CisKKyAgICAgICAgICAgICAgICBp
ZiAoQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gc2V0U3RhdHVzLnNpbmdsZUlkZW50
aWZpZXIoKSkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaWRlbnRpZmllci5pc1N5bWJv
bCgpKTsKKyAgICAgICAgICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plbiA9IG1fZ3JhcGgu
ZnJlZXplU3Ryb25nKGlkZW50aWZpZXIuY2VsbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgYWRk
VG9HcmFwaChDaGVja0lzQ29uc3RhbnQsIE9wSW5mbyhmcm96ZW4pLCBicmFuZCk7CisKKworICAg
ICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGluY2x1ZGUgYSBNdWx0aVNldFBy
aXZhdGVCcmFuZCB0byBoYW5kbGUgcG9seW1vcnBoaWMgY2FzZXMKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHNldFN0YXR1cy5pc1NpbXBsZSgpICYmIHNldFN0YXR1cy52YXJpYW50cygpLnNpemUo
KSA9PSAxICYmIE9wdGlvbnM6OnVzZUFjY2Vzc0lubGluaW5nKCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIFNldFByaXZhdGVCcmFuZFZhcmlhbnQgdmFyaWFudCA9IHNldFN0YXR1cy52YXJp
YW50cygpWzBdOworCisgICAgICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEZpbHRlclNl
dFByaXZhdGVCcmFuZFN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVz
ZXMoKS5hZGRTZXRQcml2YXRlQnJhbmRTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgc2V0U3Rh
dHVzKSksIGJhc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja1N0
cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHZhcmlhbnQub2xkU3RydWN0
dXJlKCkpKSwgYmFzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQodmFyaWFudC5v
bGRTdHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQo
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQodmFyaWFudC5uZXdTdHJ1Y3R1cmUo
KSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24qIHRyYW5zaXRpb24gPSBt
X2dyYXBoLm1fdHJhbnNpdGlvbnMuYWRkKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
Z3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSksIG1fZ3JhcGgu
cmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSkpOworCisgICAgICAgICAg
ICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dFN0cnVjdHVyZSwgT3BJbmZvKHRyYW5zaXRpb24p
LCBiYXNlKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lZFNldFByaXZhdGVCcmFu
ZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghaW5saW5lZFNldFByaXZhdGVCcmFuZCkKKyAg
ICAgICAgICAgICAgICBhZGRUb0dyYXBoKFNldFByaXZhdGVCcmFuZCwgYmFzZSwgYnJhbmQpOwor
CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9zZXRfcHJpdmF0ZV9icmFuZCk7CisgICAgICAg
IH0KKwogICAgICAgICBjYXNlIG9wX3B1dF9wcml2YXRlX25hbWU6IHsKICAgICAgICAgICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7
CiAgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1fYmFzZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggMTBiODVhZDkx
NWE5YmFiMjJmZmY0NTAwNjJhMTMxYWZkYTc1NmRiMy4uYWNhMDBkZTRmNjUxZjk0ZWE0OGM5NGM2
ODU5OWVhNWQyN2VkYmMxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2Fw
YWJpbGl0aWVzLmNwcApAQCAtMjk0LDYgKzI5NCw4IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmls
aXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJ
CiAgICAgY2FzZSBvcF9zdXBlcl9zYW1wbGVyX2VuZDoKICAgICBjYXNlIG9wX2dldF9wcml2YXRl
X25hbWU6CiAgICAgY2FzZSBvcF9wdXRfcHJpdmF0ZV9uYW1lOgorICAgIGNhc2Ugb3Bfc2V0X3By
aXZhdGVfYnJhbmQ6CisgICAgY2FzZSBvcF9jaGVja19wcml2YXRlX2JyYW5kOgogICAgICAgICBy
ZXR1cm4gQ2FuQ29tcGlsZUFuZElubGluZTsKIAogICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzog
Ly8gRG9uJ3QgaW5saW5lIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBjb3B5IHN0cmluZyB0YWJs
ZXMgaW4gdGhlIGNvbmN1cnJlbnQgSklULgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaAppbmRleCA1NGUzNWU3YzU2OGE1MDYxOTZmMTNmYTU5Njc0ODNmZTdhZTg0NjA2
Li5kZjIxYmRlMTg4YTBiZDRjYTIxOWJiNWQyNTcwZTE4ZjQwN2I4NDFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtNTA1LDYgKzUwNSw4IEBAIHZvaWQg
Y2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiBy
ZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNh
c2UgRmlsdGVySW5CeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6Cisg
ICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlclNl
dFByaXZhdGVCcmFuZFN0YXR1czoKICAgICAgICAgd3JpdGUoU2lkZVN0YXRlKTsKICAgICAgICAg
cmV0dXJuOwogICAgICAgICAKQEAgLTY3Nyw2ICs2NzksOSBAQCB2b2lkIGNsb2JiZXJpemUoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3Jp
dGVGdQogICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgogICAgIGNhc2UgR2V0UHJpdmF0ZU5h
bWU6CiAgICAgY2FzZSBHZXRQcml2YXRlTmFtZUJ5SWQ6CisgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCBoYXZlIGEgYmV0dGVyIGNsb2Jlcml6ZSBydWxlIGZvciBib3RoIENoZWNrUHJpdmF0ZUJyYW5k
IFNldFByaXZhdGVCcmFuZAorICAgIGNhc2UgQ2hlY2tQcml2YXRlQnJhbmQ6CisgICAgY2FzZSBT
ZXRQcml2YXRlQnJhbmQ6CiAgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6CiAgICAgY2FzZSBE
ZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAgIGNhc2UgRGVsZXRlQnlJZDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKaW5kZXggYjk1
ZjI0MzUwYmI3NTlkZWQ2ODk2Y2ZlNjMwMWU0ZmJlNTkwYmM3ZS4uNmZkNGE3NmI2MThmODkyYmE1
NTdiOTgzZDNmZTU1MzI2NGM0ZDhjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKQEAgLTg0LDYgKzg0LDggQEAgYm9vbCBjbG9i
YmVyc0V4aXRTdGF0ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBGaWx0ZXJQ
dXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgogICAgIGNhc2UgRmls
dGVyRGVsZXRlQnlTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1
czoKKyAgICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czoKICAgICBjYXNlIFRyeUdl
dEJ5SWQ6CiAgICAgICAgIC8vIFRoZXNlIGRvIGNsb2JiZXIgbWVtb3J5LCBidXQgbm90aGluZyB0
aGF0IGlzIG9ic2VydmFibGUuIEl0IG1heSBiZSBuaWNlIHRvIHNlcGFyYXRlIHRoZQogICAgICAg
ICAvLyBoZWFwcyBpbnRvIHRob3NlIHRoYXQgYXJlIG9ic2VydmFibGUgYW5kIHRob3NlIHRoYXQg
YXJlbid0LCBidXQgd2UgZG9uJ3QgZG8gdGhhdCByaWdodCBub3cuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggZTk5M2ZiMDYxYWIzOWQwNjg1YzIxMTJjZTUzYTY0
NDYwYWQ3ZmU5ZC4uYjcxNjEwYTUxZGI3MTdlNTNkYmU1ZTQ5YjNjYWU2YmIwNzg1MjY2MiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMjUwLDYgKzI1MCw4IEBA
IGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEZpbHRlclB1
dEJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0
ZXJEZWxldGVCeVN0YXR1czoKKyAgICBjYXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVz
OgorICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOgogICAgIGNhc2UgRGF0ZUdl
dEludDMyT3JOYU46CiAgICAgY2FzZSBEYXRlR2V0VGltZToKICAgICBjYXNlIERhdGFWaWV3R2V0
SW50OgpAQCAtMzI3LDYgKzMyOSw4IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZSkKICAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKICAgICBjYXNlIEdldFByaXZhdGVO
YW1lOgogICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOgorICAgIGNhc2UgU2V0UHJpdmF0ZUJy
YW5kOgorICAgIGNhc2UgQ2hlY2tQcml2YXRlQnJhbmQ6CiAgICAgY2FzZSBQdXRTdGFjazoKICAg
ICBjYXNlIFB1dFRvQXJndW1lbnRzOgogICAgIGNhc2UgUmVnRXhwRXhlYzoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IGMyYTQ1ZDA0OGQ4NzdhNGM3
Y2E4YTEyZGUzMjU3YjNiNTA4OTNlNDMuLjE4MWNiMmI2ZjljODc0OGMyNzFkODVjYTYzYTdlYTI5
NDljOGEzNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cApAQCAtMTkzMSw2ICsxOTMxLDEzIEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogCisgICAgICAg
IGNhc2UgU2V0UHJpdmF0ZUJyYW5kOiB7CisgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8U3ltYm9sVXNlPihub2RlLT5jaGls
ZDIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgQ2hl
Y2tQcml2YXRlQnJhbmQ6CiAgICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6IHsKICAgICAgICAg
ICAgIGZpeEVkZ2U8U3ltYm9sVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICBicmVh
azsKQEAgLTI4MjcsNiArMjgzNCw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgRmlsdGVyUHV0
QnlJZFN0YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CiAgICAgICAgIGNh
c2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRl
QnJhbmRTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOgog
ICAgICAgICBjYXNlIEludmFsaWRhdGlvblBvaW50OgogICAgICAgICBjYXNlIENyZWF0ZUFyZ3Vt
ZW50c0J1dHRlcmZseToKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5oCmluZGV4IGIzYTliZmY1Y2QyYWFlNzkyMTQ3ZGU4ZjJjYmE1YjRkNjE3YWFmZDQu
Ljk3NGZmZmMyZWVmMGRjMTMyMjdiOTFiMjZmMTVhMWZmNGYxMDMxOWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmgKQEAgLTExODIsNiArMTE4Miw3IEBAIHB1YmxpYzoKICAgICBS
ZWdpc3RlcmVkU3RydWN0dXJlIHN5bWJvbFN0cnVjdHVyZTsKIAogICAgIEhhc2hTZXQ8Tm9kZSo+
IG1fc2xvd0dldEJ5VmFsOworICAgIEhhc2hTZXQ8Tm9kZSo+IG1fcHJpdmF0ZUJyYW5kQWNjZXNz
OwogCiBwcml2YXRlOgogICAgIGJvb2wgaXNTdHJpbmdQcm90b3R5cGVNZXRob2RTYW5lKEpTR2xv
YmFsT2JqZWN0KiwgVW5pcXVlZFN0cmluZ0ltcGwqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5jcHAKaW5kZXggZDg2YWNhNDFkNmM0OWRmYjZhNjFjMWM1OGMz
NTMxZWYxZGU2NzAxZC4uNzgyNjRjZWEwMTc1YzRkNjJhNDJlYTBjMTU3ZTA0NDFiNWI1ODFiNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKQEAgLTI0
NSw2ICsyNDUsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCdWZm
ZXIpCiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9kZWxCeVZhbHMsIGxpbmtCdWZmZXIpOwog
ICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5CeUlkcywgbGlua0J1ZmZlcik7CiAgICAgZmlu
YWxpemVJbmxpbmVDYWNoZXMobV9pbnN0YW5jZU9mcywgbGlua0J1ZmZlcik7CisgICAgZmluYWxp
emVJbmxpbmVDYWNoZXMobV9wcml2YXRlQnJhbmRBY2Nlc3NlcywgbGlua0J1ZmZlcik7CiAKICAg
ICBhdXRvIGxpbmtDYWxsVGh1bmsgPSBGdW5jdGlvblB0cjxOb1B0clRhZz4odm0oKS5nZXRDVElT
dHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAg
ICAgZm9yIChhdXRvJiByZWNvcmQgOiBtX2pzQ2FsbHMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29tcGlsZXIuaAppbmRleCA5OWZiYjgyYTg4YmNmZjQzMDVjOTMzMzdiNGZi
ZTIyOWZmMzE0ZTBkLi44OGQ2Mjc2NzI0OGUxODhlZjAzNzU5NjNkYzE3MmJmYzU0YmJkODBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCkBAIC0yMTIsNiAr
MjEyLDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9pbkJ5SWRzLmFwcGVuZChJbmxpbmVDYWNoZVdy
YXBwZXI8SklUSW5CeUlkR2VuZXJhdG9yPihnZW4sIHNsb3dQYXRoKSk7CiAgICAgfQogCisgICAg
dm9pZCBhZGRQcml2YXRlQnJhbmRBY2Nlc3MoY29uc3QgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2Vu
ZXJhdG9yJiBnZW4sIFNsb3dQYXRoR2VuZXJhdG9yKiBzbG93UGF0aCkKKyAgICB7CisgICAgICAg
IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMuYXBwZW5kKElubGluZUNhY2hlV3JhcHBlcjxKSVRQcml2
YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I+KGdlbiwgc2xvd1BhdGgpKTsKKyAgICB9CisKICAgICB2
b2lkIGFkZEpTQ2FsbChDYWxsIGZhc3RDYWxsLCBDYWxsIHNsb3dDYWxsLCBEYXRhTGFiZWxQdHIg
dGFyZ2V0VG9DaGVjaywgQ2FsbExpbmtJbmZvKiBpbmZvKQogICAgIHsKICAgICAgICAgbV9qc0Nh
bGxzLmFwcGVuZChKU0NhbGxSZWNvcmQoZmFzdENhbGwsIHNsb3dDYWxsLCB0YXJnZXRUb0NoZWNr
LCBpbmZvKSk7CkBAIC0zNjIsNiArMzY3LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8SW5saW5l
Q2FjaGVXcmFwcGVyPEpJVERlbEJ5VmFsR2VuZXJhdG9yPiwgND4gbV9kZWxCeVZhbHM7CiAgICAg
VmVjdG9yPElubGluZUNhY2hlV3JhcHBlcjxKSVRJbkJ5SWRHZW5lcmF0b3I+LCA0PiBtX2luQnlJ
ZHM7CiAgICAgVmVjdG9yPElubGluZUNhY2hlV3JhcHBlcjxKSVRJbnN0YW5jZU9mR2VuZXJhdG9y
PiwgND4gbV9pbnN0YW5jZU9mczsKKyAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVFBy
aXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcj4sIDQ+IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXM7CiAg
ICAgVmVjdG9yPEpTQ2FsbFJlY29yZCwgND4gbV9qc0NhbGxzOwogICAgIFZlY3RvcjxKU0RpcmVj
dENhbGxSZWNvcmQsIDQ+IG1fanNEaXJlY3RDYWxsczsKICAgICBWZWN0b3I8SlNEaXJlY3RUYWls
Q2FsbFJlY29yZCwgND4gbV9qc0RpcmVjdFRhaWxDYWxsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR01heUV4aXQuY3BwCmluZGV4IDA1YjkzYmUwOTFhZmExYzExMGU1YjhkMzhiZGMzYzFh
ZDM5N2MxNTUuLjY3YmExODQ1ZDE2YmY4MzNiZDU2OTMzM2I5NWE4NGM4YTJiY2UyNDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcApAQCAtMTA4LDYgKzEwOCw4IEBA
IEV4aXRNb2RlIG1heUV4aXRJbXBsKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgU3RhdGVUeXBl
JiBzdGF0ZSkKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJJ
bkJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKKyAgICBjYXNlIEZp
bHRlckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0ZUJy
YW5kU3RhdHVzOgogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU3RyQ2F0OgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaAppbmRleCAyNjA0YzdlN2FkOTM0OWY5NzNiMDI0Y2Y5MmVkZWRm
MTJhMzhjMWU2Li41ODkzYmU4MDY2MDE2OTliNjcwMTQwYjIxY2U5Yjc0ZWFmOTNkMTFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVk
ZSAiQjNTcGFyc2VDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiQmFzaWNCbG9ja0xvY2F0aW9uLmgi
CisjaW5jbHVkZSAiQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50LmgiCiAjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCiAjaW5jbHVkZSAiREZHQWRqYWNlbmN5TGlzdC5oIgogI2luY2x1ZGUgIkRGR0FyaXRo
TW9kZS5oIgpAQCAtNTQsNiArNTUsNyBAQAogI2luY2x1ZGUgIk9wZXJhbmRzLmgiCiAjaW5jbHVk
ZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUgIlB1dEJ5SWRWYXJpYW50LmgiCisj
aW5jbHVkZSAiU2V0UHJpdmF0ZUJyYW5kVmFyaWFudC5oIgogI2luY2x1ZGUgIlNwZWN1bGF0ZWRU
eXBlLmgiCiAjaW5jbHVkZSAiVHlwZUxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiVmFsdWVQcm9maWxl
LmgiCkBAIC0zMTQwLDYgKzMxNDIsMjggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9vcElu
Zm8uYXM8RGVsZXRlQnlTdGF0dXMqPigpOwogICAgIH0KIAorICAgIGJvb2wgaGFzQ2hlY2tQcml2
YXRlQnJhbmRTdGF0dXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gRmlsdGVyQ2hl
Y2tQcml2YXRlQnJhbmRTdGF0dXM7CisgICAgfQorCisgICAgQ2hlY2tQcml2YXRlQnJhbmRTdGF0
dXMqIGNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXND
aGVja1ByaXZhdGVCcmFuZFN0YXR1cygpKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPENo
ZWNrUHJpdmF0ZUJyYW5kU3RhdHVzKj4oKTsKKyAgICB9CisKKyAgICBib29sIGhhc1NldFByaXZh
dGVCcmFuZFN0YXR1cygpCisgICAgeworICAgICAgICByZXR1cm4gb3AoKSA9PSBGaWx0ZXJTZXRQ
cml2YXRlQnJhbmRTdGF0dXM7CisgICAgfQorCisgICAgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzKiBz
ZXRQcml2YXRlQnJhbmRTdGF0dXMoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc1NldFByaXZh
dGVCcmFuZFN0YXR1cygpKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPFNldFByaXZhdGVC
cmFuZFN0YXR1cyo+KCk7CisgICAgfQorCiAgICAgdm9pZCBkdW1wQ2hpbGRyZW4oUHJpbnRTdHJl
YW0mIG91dCkKICAgICB7CiAgICAgICAgIGlmICghY2hpbGQxKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggNjQ5NmMxNzgwNDFjOTE5ZTk0MGFmNDQ0ODg1YmQ0
ZWQ5YjFjMGM1MS4uMjM3MWZiZmRkYjI3M2ZiODFkODdjZWU1YTM0ZTliMDQxZjI3OTJlYSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMjEyLDYgKzIxMiw4IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhQdXRCeVZhbEFsaWFz
LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNybyhQdXRQcml2
YXRlTmFtZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFB1dFByaXZhdGVOYW1lQnlJ
ZCwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKENoZWNrUHJpdmF0ZUJyYW5kLCBOb2Rl
TXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oU2V0UHJpdmF0ZUJyYW5kLCBOb2RlTXVzdEdlbmVy
YXRlKSBcCiAgICAgbWFjcm8oVHJ5R2V0QnlJZCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8o
R2V0QnlJZCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdl
dEJ5SWRGbHVzaCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXApAQCAtNTQ0LDYg
KzU0Niw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhGaWx0
ZXJJbkJ5SWRTdGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhGaWx0ZXJQdXRC
eUlkU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oRmlsdGVyRGVsZXRlQnlT
dGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhGaWx0ZXJDaGVja1ByaXZhdGVC
cmFuZFN0YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKEZpbHRlclNldFByaXZh
dGVCcmFuZFN0YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIC8qIERhdGEgdmlldyBhY2Nl
c3MgKi8gXAogICAgIG1hY3JvKERhdGFWaWV3R2V0SW50LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9k
ZVJlc3VsdEpTKSAvKiBUaGUgZ2V0cyBhcmUgbXVzdCBnZW5lcmF0ZSBmb3Igbm93IGJlY2F1c2Ug
dGhleSBkbyBib3VuZHMgY2hlY2tzICovIFwKICAgICBtYWNybyhEYXRhVmlld0dldEZsb2F0LCBO
b2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdERvdWJsZSkgXApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFz
ZS5jcHAKaW5kZXggOTk1NGQ1OTEyMmVmYmIxOWZiOTA4YzExMGY2ZjdkYmM1Yzg1ZDUyMS4uN2E2
OWU0ZThkNWZlNThlNzU4OWFiNTU1OTlhYzMzOWVmMGQzNGIxMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5n
UGhhc2UuY3BwCkBAIC0xMjYxLDYgKzEyNjEsOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEZp
bHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgogICAg
ICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlckNoZWNr
UHJpdmF0ZUJyYW5kU3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0
YXR1czoKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGRlZmF1bHQ6CkBAIC0yNjExLDYg
KzI2MTMsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0
YXR1czoKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKICAgICAgICAg
ICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgorICAgICAgICAgICAgICAgIGNhc2Ug
RmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CisgICAgICAgICAgICAgICAgY2FzZSBGaWx0
ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5j
aGlsZDEoKS0+aXNQaGFudG9tQWxsb2NhdGlvbigpKQogICAgICAgICAgICAgICAgICAgICAgICAg
bm9kZS0+cmVtb3ZlV2l0aG91dENoZWNrcygpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggYWIxZmU4YWVjYTEzOWNkYmE4NzQwOGQ3ODFjNThh
MmM5Mjk0MjVmZC4uNWQ3M2ZjNzI4ODc3MTliOTViMzFkOWQ2OWYwYTUzYjZkNzg1Yjc0OCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTEzODQsNiArMTM4NCw4IEBAIHByaXZhdGU6CiAgICAg
ICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CiAgICAgICAg
IGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgorICAgICAgICBjYXNlIFNldFByaXZhdGVCcmFuZDoK
KyAgICAgICAgY2FzZSBDaGVja1ByaXZhdGVCcmFuZDoKICAgICAgICAgY2FzZSBQdXRDbG9zdXJl
VmFyOgogICAgICAgICBjYXNlIFB1dEludGVybmFsRmllbGQ6CiAgICAgICAgIGNhc2UgUHV0VG9B
cmd1bWVudHM6CkBAIC0xNDUwLDYgKzE0NTIsOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEZp
bHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgogICAg
ICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlckNoZWNr
UHJpdmF0ZUJyYW5kU3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0
YXR1czoKICAgICAgICAgY2FzZSBDbGVhckNhdGNoTG9jYWxzOgogICAgICAgICBjYXNlIERhdGFW
aWV3U2V0OgogICAgICAgICBjYXNlIEludmFsaWRhdGlvblBvaW50OgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCBhNGY0Yzc1Nzc0YWQ3ZTY3ZTA3
ZjljODQ5M2ZmOTBkMmJiNDU0NzViLi4wMGE0NTEzN2E4ZjE3ZDY5ZmNkOGRkZDFjMTVjOTNjZWE5
ZDY2NGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aApAQCAtMzYyLDYgKzM2Miw4IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlw
ZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBG
aWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgogICAgIGNh
c2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFu
ZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czoKICAgICAgICAg
Ly8gV2UgZG9uJ3Qgd2FudCB0aGVzZSB0byBiZSBtb3ZlZCBhbnl3aGVyZSBvdGhlciB0aGFuIHdo
ZXJlIHdlIHB1dCB0aGVtLCBzaW5jZSB3ZSB3YW50IHRoZW0KICAgICAgICAgLy8gdG8gY2FwdHVy
ZSAicHJvZmlsaW5nIiBhdCB0aGUgcG9pbnQgaW4gY29udHJvbCBmbG93IGhlcmUgdGhlIHVzZXIg
cHV0IHRoZW0uCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTUzMiw2ICs1MzQsOCBAQCBib29s
IHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgogICAgIGNh
c2UgR2V0UHJpdmF0ZU5hbWU6CiAgICAgY2FzZSBHZXRQcml2YXRlTmFtZUJ5SWQ6CisgICAgY2Fz
ZSBDaGVja1ByaXZhdGVCcmFuZDoKKyAgICBjYXNlIFNldFByaXZhdGVCcmFuZDoKICAgICBjYXNl
IERlZmluZURhdGFQcm9wZXJ0eToKICAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAg
ICAgY2FzZSBBcnJheWlmeToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKaW5kZXggMGMzMzQyMjhmMjQ4NDY0NDAzYWQyY2VkOGFlZThjYTY4NWE3
MDMyNS4uZmUwYTExMDkyYjk5ODVkOTdkZDkxZjc3NmUwMDZhNGRiZTM2OWRkNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTM2Njcs
NiArMzY2Nyw3NSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWVC
eUlkKE5vZGUqIG5vZGUpCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVDaGVja1ByaXZhdGVCcmFuZChOb2RlKiBub2RlKQoreworICAgIEpTVmFs
dWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIGJyYW5kVmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworCisgICAgSlNWYWx1ZVJl
Z3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CisKKyAgICBHUFJSZWcgYnJhbmRHUFIg
PSBicmFuZFZhbHVlLmdwcigpOworCisgICAgc3BlY3VsYXRlU3ltYm9sKG5vZGUtPmNoaWxkMigp
LCBicmFuZEdQUik7CisKKyAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4u
c2VtYW50aWM7CisgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxT
aXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2lu
LCBtX3N0cmVhbS0+c2l6ZSgpKTsKKyAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhp
cy0+dXNlZFJlZ2lzdGVycygpOworCisgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNl
czsKKyAgICBpZiAobmVlZHNUeXBlQ2hlY2sobm9kZS0+Y2hpbGQxKCksIFNwZWNDZWxsKSkKKyAg
ICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZVJlZ3MpKTsK
KworICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCisgICAgICAgIG1faml0
LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2
YXRlQnJhbmQsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIGJhc2VSZWdzLCBKU1ZhbHVlUmVnczo6
cGF5bG9hZE9ubHkoYnJhbmRHUFIpKTsKKworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0
KTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAor
ICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1p
emUsIE5vUmVzdWx0LAorICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBi
YXNlUmVncywgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKKworICAgIG1faml0
LmFkZFByaXZhdGVCcmFuZEFjY2VzcyhnZW4sIHNsb3dQYXRoLmdldCgpKTsKKyAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CisKKyAgICBub1Jlc3VsdChub2RlKTsK
K30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNldFByaXZhdGVCcmFuZChOb2RlKiBu
b2RlKQoreworICAgIEFTU0VSVChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSk7
CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Cisg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYnJhbmRWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7
CisKKyAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisgICAgR1BSUmVnIGJyYW5kR1BS
ID0gYnJhbmRWYWx1ZS5ncHIoKTsKKworICAgIHNwZWN1bGF0ZVN5bWJvbChub2RlLT5jaGlsZDIo
KSwgYnJhbmRHUFIpOworCisgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2lu
LnNlbWFudGljOworICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxs
U2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdp
biwgbV9zdHJlYW0tPnNpemUoKSk7CisgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRo
aXMtPnVzZWRSZWdpc3RlcnMoKTsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2Fz
ZXM7CisgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9q
aXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpTZXRQcml2
YXRlQnJhbmQsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25s
eShiYXNlR1BSKSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJyYW5kR1BSKSk7CisKKyAgICBn
ZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xv
d1BhdGhKdW1wKCkpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBz
bG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRp
b25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQsIAorICAgICAgICBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3Jp
Z2luKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwg
Q0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKKworICAgIG1faml0LmFkZFByaXZh
dGVCcmFuZEFjY2VzcyhnZW4sIHNsb3dQYXRoLmdldCgpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CisKKyAgICBub1Jlc3VsdChub2RlKTsKK30KKwogdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrVHlwZUluZm9GbGFncyhOb2RlKiBub2RlKQog
ewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDNj
NjkxMmUzZjgxYTE1YzdkMGFkMGFkODE3Mzc0ZDQ3NGZiZDIzM2QuLmI5YWU2ZTNmYWJjNDBhZTQz
MDlhNjg0YTdlY2EzYTRiNWI0OTY5Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTEzNzMsNiArMTM3Myw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIGNvbXBpbGVHZXRCeVZhbFdpdGhUaGlzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVQdXRQ
cml2YXRlTmFtZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKE5v
ZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVDaGVja1ByaXZhdGVCcmFuZChOb2RlKik7CisgICAgdm9p
ZCBjb21waWxlU2V0UHJpdmF0ZUJyYW5kKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeU9m
ZnNldChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlUHV0QnlPZmZzZXQoTm9kZSopOwogICAgIHZv
aWQgY29tcGlsZU1hdGNoU3RydWN0dXJlKE5vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDFlOGI4YzI5NmM0
MDI2MDc2MzQ0OGUzNjQwMzk2YjY5YTg1ZDgxMTUuLjA3MzI5MDdhN2ZjMmQwNTJhMjYxNTZmN2Ji
ZmViNGE1NzFlYzc3YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMjYwNiw2ICsyNjA2LDE2IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQog
CisgICAgY2FzZSBDaGVja1ByaXZhdGVCcmFuZDogeworICAgICAgICBjb21waWxlQ2hlY2tQcml2
YXRlQnJhbmQobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgU2V0UHJp
dmF0ZUJyYW5kOiB7CisgICAgICAgIGNvbXBpbGVTZXRQcml2YXRlQnJhbmQobm9kZSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CiAgICAgY2FzZSBQ
dXRCeVZhbDoKICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6IHsKQEAgLTQyNDEsNiArNDI1MSw4IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEZpbHRl
clB1dEJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CiAgICAgY2FzZSBG
aWx0ZXJEZWxldGVCeVN0YXR1czoKKyAgICBjYXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5kU3Rh
dHVzOgorICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOgogICAgICAgICBtX2lu
dGVycHJldGVyLmZpbHRlcklDU3RhdHVzKG5vZGUpOwogICAgICAgICBub1Jlc3VsdChub2RlKTsK
ICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAppbmRleCA5YTk3NzI4MWNjN2Q4ZmU3Yjk4NDMyNzg4MTVlYTE0ZDQ2
OGZkYmM5Li5iYzk0MDU3NWJhODQ2YTI3ZWQyODkyNzVjZDUzZTY4NjZjMjE1ZWU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAg
LTI5NjQsNiArMjk2NCwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgQ2hlY2tQcml2YXRlQnJhbmQ6
IHsKKyAgICAgICAgY29tcGlsZUNoZWNrUHJpdmF0ZUJyYW5kKG5vZGUpOworICAgICAgICBicmVh
azsKKyAgICB9CisKKyAgICBjYXNlIFNldFByaXZhdGVCcmFuZDogeworICAgICAgICBjb21waWxl
U2V0UHJpdmF0ZUJyYW5kKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNl
IFB1dEJ5VmFsRGlyZWN0OgogICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgY2FzZSBQdXRCeVZhbEFs
aWFzOiB7CkBAIC01Njc3LDYgKzU2ODcsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmls
dGVySW5CeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CisgICAgY2Fz
ZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlclNldFByaXZh
dGVCcmFuZFN0YXR1czoKICAgICAgICAgbV9pbnRlcnByZXRlci5maWx0ZXJJQ1N0YXR1cyhub2Rl
KTsKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBo
YXNlLmNwcAppbmRleCA3MGU3ODM5OGMzNmEyODY4ZmFmNzI3YzQ4ZWYxMzkxMmQ4ZDM5YTY4Li5i
OTA2NjVlY2NlNTJjNTdmNDRiNzBkNDY3YzRhNGU1YTVmMzcwMmUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBo
YXNlLmNwcApAQCAtMjczLDYgKzI3Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIGNhc2UgU2V0UHJpdmF0ZUJyYW5kOgog
ICAgICAgICAgICAgY2FzZSBQdXRCeUlkOgogICAgICAgICAgICAgY2FzZSBQdXRCeUlkRmx1c2g6
CiAgICAgICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcAppbmRleCA2Njll
NWJiODIzNjczY2FkYmE2OWI1ZmYyNzI5YmM4Y2Q0MzMxMzM5Li4wNjNlZTMxYjA1NWQ2NDA1YmFh
OGVhNTgxYjg3MGQyZGE4NmRlMDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAKQEAgLTE5OSw2ICsxOTksOCBA
QCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKICAgICAg
ICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJE
ZWxldGVCeVN0YXR1czoKKyAgICAgICAgICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRT
dGF0dXM6CisgICAgICAgICAgICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czoKICAg
ICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgY2FzZSBHZXRCeU9mZnNldDogewpA
QCAtNDAyLDYgKzQwNCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIEZpbHRlckNhbGxM
aW5rU3RhdHVzOgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CiAgICAgICAg
ICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgorICAgICAgICAgICAgY2FzZSBGaWx0ZXJD
aGVja1ByaXZhdGVCcmFuZFN0YXR1czoKKyAgICAgICAgICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0
ZUJyYW5kU3RhdHVzOgogICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS5ub2RlKCkg
PT0gY2FuZGlkYXRlKQogICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUobV9ncmFwaCk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENhcGFiaWxpdGllcy5jcHAKaW5kZXggMzUyNTNiNjA0ZTQ3OGRmMGEyMjhkM2IxM2Y1Y2NhMzUy
MmI0NmIyNC4uM2QxNDkyNTNmNmQ2YjdkMTYyNTc1NGIwMmQwY2NiMTJjZWZlMGY0NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtNDAwLDEy
ICs0MDAsMTYgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUp
CiAgICAgY2FzZSBQdXRQcml2YXRlTmFtZUJ5SWQ6CiAgICAgY2FzZSBHZXRQcml2YXRlTmFtZToK
ICAgICBjYXNlIEdldFByaXZhdGVOYW1lQnlJZDoKKyAgICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5k
OgorICAgIGNhc2UgU2V0UHJpdmF0ZUJyYW5kOgogICAgIGNhc2UgTWF0Y2hTdHJ1Y3R1cmU6CiAg
ICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVz
OgogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRlckluQnlJZFN0
YXR1czoKICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgorICAgIGNhc2UgRmlsdGVyQ2hl
Y2tQcml2YXRlQnJhbmRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0
dXM6CiAgICAgY2FzZSBDcmVhdGVUaGlzOgogICAgIGNhc2UgQ3JlYXRlUHJvbWlzZToKICAgICBj
YXNlIENyZWF0ZUdlbmVyYXRvcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcAppbmRleCBlYTFmMzcyMzljMjg5ZGYxMmNjZDMxYmVmNGY1NTlkYmE3ZjYx
MDVjLi44Y2QzZWNjNzJhYzRkOTBkYjRjYWZkNzBlMjc1MmZlYjM4YTczODlkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC05NjEsNiArOTYx
LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSW5CeVZhbDoKICAgICAgICAgICAgIGNvbXBp
bGVJbkJ5VmFsKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDaGVja1ByaXZh
dGVCcmFuZDoKKyAgICAgICAgICAgIGNvbXBpbGVDaGVja1ByaXZhdGVCcmFuZCgpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU2V0UHJpdmF0ZUJyYW5kOgorICAgICAgICAgICAg
Y29tcGlsZVNldFByaXZhdGVCcmFuZCgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgSGFzT3duUHJvcGVydHk6CiAgICAgICAgICAgICBjb21waWxlSGFzT3duUHJvcGVydHkoKTsK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTYzOCw2ICsxNjQ0LDggQEAgcHJpdmF0ZToKICAgICAg
ICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0
YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKKyAgICAgICAgY2FzZSBG
aWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJTZXRQcml2
YXRlQnJhbmRTdGF0dXM6CiAgICAgICAgICAgICBjb21waWxlRmlsdGVySUNTdGF0dXMoKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERhdGVHZXRJbnQzMk9yTmFOOgpAQCAtNDA4
Myw2ICs0MDkxLDgzIEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lkIGNv
bXBpbGVQcml2YXRlQnJhbmRBY2Nlc3MoTFZhbHVlIGJhc2UsIExWYWx1ZSBicmFuZCwgQWNjZXNz
VHlwZSBhY2Nlc3NUeXBlKQorICAgIHsKKyAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKKyAg
ICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChWb2lk
KTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGJhc2UpOworICAgICAg
ICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoYnJhbmQpOworICAgICAgICBwYXRjaHBv
aW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90
Q2VsbE1hc2tSZWdpc3RlcikpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJU
YWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CisgICAg
ICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVy
cygpKTsKKworICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0
aW9uSGFuZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwor
CisgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOworICAgICAgICBib29sIGJhc2VJ
c0NlbGwgPSBhYnN0cmFjdFZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpLmlzVHlwZShTcGVjQ2VsbCk7
CisgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0
LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAg
QWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworCisgICAg
ICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPSBzdGF0ZS0+aml0Q29kZS0+Y29t
bW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyk7CisKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGRpcmVjdCBleGl0IHRhcmdldCBm
b3Igb3BlcmF0aW9uIGNhbGxzLgorICAgICAgICAgICAgQm94PENDYWxsSGVscGVyczo6SnVtcExp
c3Q+IGV4Y2VwdGlvbnMgPSBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBh
cmFtcyktPmp1bXBzKGppdCk7CisKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGV4aXQgZm9y
IGNhbGwgSUMncyBjcmVhdGVkIGJ5IHRoZSBJQyBmb3IgZ2V0dGVycy4gV2UgZG9uJ3QgaGF2ZQor
ICAgICAgICAgICAgLy8gdG8gZG8gYW55dGhpbmcgd2VpcmQgb3RoZXIgdGhhbiBjYWxsIHRoaXMs
IHNpbmNlIGl0IHdpbGwgYXNzb2NpYXRlIHRoZSBleGl0IHdpdGgKKyAgICAgICAgICAgIC8vIHRo
ZSBjYWxsc2l0ZSBpbmRleC4KKyAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVF
eGl0Q3JlYXRpb25Gb3JVbndpbmQocGFyYW1zLCBjYWxsU2l0ZUluZGV4KTsKKworICAgICAgICAg
ICAgR1BSUmVnIGJhc2VHUFIgPSBwYXJhbXNbMF0uZ3ByKCk7CisgICAgICAgICAgICBHUFJSZWcg
YnJhbmRHUFIgPSBwYXJhbXNbMV0uZ3ByKCk7CisKKyAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9y
ID0gQm94PEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcj46OmNyZWF0ZSgKKyAgICAgICAg
ICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJ
bmRleCwgYWNjZXNzVHlwZSwKKyAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKGJyYW5kR1BSKSk7CisK
KyAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBub3RDZWxsOworICAgICAgICAgICAgaWYg
KCFiYXNlSXNDZWxsKQorICAgICAgICAgICAgICAgIG5vdENlbGwgPSBqaXQuYnJhbmNoSWZOb3RD
ZWxsKGJhc2VHUFIpOworCisgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgo
aml0KTsKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgp
OworCisgICAgICAgICAgICBwYXJhbXMuYWRkTGF0ZVBhdGgoWz1dIChDQ2FsbEhlbHBlcnMmIGpp
dCkgeworICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxv
d1NjcmF0Y2goaml0KTsKKworICAgICAgICAgICAgICAgIGF1dG8gb3BlcmF0aW9uVG9DYWxsID0g
YWNjZXNzVHlwZSA9PSBBY2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZCA/IG9wZXJhdGlvbkNo
ZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUgOiBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6
ZTsKKworICAgICAgICAgICAgICAgIGlmIChub3RDZWxsLmlzU2V0KCkpCisgICAgICAgICAgICAg
ICAgICAgIG5vdENlbGwubGluaygmaml0KTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNs
b3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpM
YWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7CisgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAg
ICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+
b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBv
cGVyYXRpb25Ub0NhbGwsIEludmFsaWRHUFJSZWcsCisgICAgICAgICAgICAgICAgICAgIGppdC5j
b2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0
dWJJbmZvKCkpLCBiYXNlR1BSLCBicmFuZEdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgIGpp
dC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOworCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKKworICAg
ICAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIp
IHsKKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5maW5hbGl6ZShsaW5rQnVmZmVyLCBs
aW5rQnVmZmVyKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9KTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVDaGVja1ByaXZhdGVCcmFuZCgpCisgICAg
eworICAgICAgICBjb21waWxlUHJpdmF0ZUJyYW5kQWNjZXNzKGxvd0pTVmFsdWUobV9ub2RlLT5j
aGlsZDEoKSksIGxvd1N5bWJvbChtX25vZGUtPmNoaWxkMigpKSwgQWNjZXNzVHlwZTo6Q2hlY2tQ
cml2YXRlQnJhbmQpOworICAgIH0KKworICAgIHZvaWQgY29tcGlsZVNldFByaXZhdGVCcmFuZCgp
CisgICAgeworICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5jaGls
ZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpOwor
ICAgICAgICBjb21waWxlUHJpdmF0ZUJyYW5kQWNjZXNzKGxvd0NlbGwobV9ub2RlLT5jaGlsZDEo
KSksIGxvd1N5bWJvbChtX25vZGUtPmNoaWxkMigpKSwgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJy
YW5kKTsKKyAgICB9CisKICAgICB2b2lkIGNvbXBpbGVQdXRCeUlkV2l0aFRoaXMoKQogICAgIHsK
ICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGIwNTE3YmQ5NzdjMTRiNWEzMWNmNTBl
YzU2YzI1YjZmZDI1NjZkMTUuLjdlZjk1OTE5OTVjZWRlZWVjN2UxNmQ2ODBjMjdkYmZhNDk5MjA1
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcApAQCAtMTQ0LDkgKzE0NCw5IEBAIEpTVmFsdWUgZXZhbChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgRUNNQU1vZGUgZWNtYU1vCiAgICAg
ICAgIH0KICAgICAgICAgCiAgICAgICAgIFREWkVudmlyb25tZW50IHZhcmlhYmxlc1VuZGVyVERa
OwotICAgICAgICBWYXJpYWJsZUVudmlyb25tZW50IHByaXZhdGVOYW1lczsKLSAgICAgICAgSlNT
Y29wZTo6Y29sbGVjdENsb3N1cmVWYXJpYWJsZXNVbmRlclREWihjYWxsZXJTY29wZUNoYWluLCB2
YXJpYWJsZXNVbmRlclREWiwgcHJpdmF0ZU5hbWVzKTsKLSAgICAgICAgZXZhbCA9IERpcmVjdEV2
YWxFeGVjdXRhYmxlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtYWtlU291cmNlKHByb2dyYW1Tb3Vy
Y2UsIGNhbGxlckNvZGVCbG9jay0+c291cmNlKCkucHJvdmlkZXIoKS0+c291cmNlT3JpZ2luKCkp
LCBkZXJpdmVkQ29udGV4dFR5cGUsIGNhbGxlclVubGlua2VkQ29kZUJsb2NrLT5uZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplcigpLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBjYWxsZXJDb2RlQmxv
Y2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24oKSwgZXZhbENv
bnRleHRUeXBlLCAmdmFyaWFibGVzVW5kZXJURFosICZwcml2YXRlTmFtZXMsIGVjbWFNb2RlKTsK
KyAgICAgICAgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCBwcml2YXRlTmFtZUVudmlyb25tZW50Owor
ICAgICAgICBKU1Njb3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKGNhbGxlclNj
b3BlQ2hhaW4sIHZhcmlhYmxlc1VuZGVyVERaLCBwcml2YXRlTmFtZUVudmlyb25tZW50KTsKKyAg
ICAgICAgZXZhbCA9IERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBt
YWtlU291cmNlKHByb2dyYW1Tb3VyY2UsIGNhbGxlckNvZGVCbG9jay0+c291cmNlKCkucHJvdmlk
ZXIoKS0+c291cmNlT3JpZ2luKCkpLCBkZXJpdmVkQ29udGV4dFR5cGUsIGNhbGxlclVubGlua2Vk
Q29kZUJsb2NrLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBjYWxsZXJVbmxpbmtlZENv
ZGVCbG9jay0+cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4
dCwgY2FsbGVyQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJbnNpZGVPcmRpbmFyeUZ1
bmN0aW9uKCksIGV2YWxDb250ZXh0VHlwZSwgJnZhcmlhYmxlc1VuZGVyVERaLCAmcHJpdmF0ZU5h
bWVFbnZpcm9ubWVudCwgZWNtYU1vZGUpOwogICAgICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2Nv
cGUuZXhjZXB0aW9uKCkgPT0gIWV2YWwpOwogICAgICAgICBpZiAoIWV2YWwpCiAgICAgICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBh
Y2MzNGQwZWE4YmMzNGM5Y2YxYmQxYTgxYjA1ZmNmNDdjOTBkNzkyLi42YTNmYmQ3NmM1MWRhNGQ3
YWQ1YTAyYWQ5MzkyOTM1MjFhNTMwMmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBA
IC0zNTgsNiArMzU4LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAg
ICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X2lkX2RpcmVjdCkKICAgICAgICAgREVGSU5FX09QKG9w
X2dldF9ieV92YWwpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfcHJpdmF0ZV9uYW1lKQorICAg
ICAgICBERUZJTkVfT1Aob3Bfc2V0X3ByaXZhdGVfYnJhbmQpCisgICAgICAgIERFRklORV9PUChv
cF9jaGVja19wcml2YXRlX2JyYW5kKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X3Byb3RvdHlw
ZV9vZikKICAgICAgICAgREVGSU5FX09QKG9wX292ZXJyaWRlc19oYXNfaW5zdGFuY2UpCiAgICAg
ICAgIERFRklORV9PUChvcF9pbnN0YW5jZW9mKQpAQCAtNTA4LDYgKzUxMCw3IEBAIHZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgbV9kZWxCeVZhbEluZGV4ID0gMDsKICAg
ICBtX2RlbEJ5SWRJbmRleCA9IDA7CiAgICAgbV9pbnN0YW5jZU9mSW5kZXggPSAwOworICAgIG1f
cHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXggPSAwOwogICAgIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4
ID0gMDsKICAgICBtX2NhbGxMaW5rSW5mb0luZGV4ID0gMDsKIApAQCAtNTY0LDYgKzU2Nyw4IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9X
Q0FTRV9PUChvcF9nZXRfYnlfaWRfZGlyZWN0KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Ao
b3BfZ2V0X2J5X3ZhbCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2dldF9wcml2YXRl
X25hbWUpCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9zZXRfcHJpdmF0ZV9icmFuZCkK
KyAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2NoZWNrX3ByaXZhdGVfYnJhbmQpCiAgICAg
ICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9pbnN0YW5jZW9mKQogICAgICAgICBERUZJTkVfU0xP
V0NBU0VfT1Aob3BfaW5zdGFuY2VvZl9jdXN0b20pCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9qbGVzcykKQEAgLTY1NCw2ICs2NTksNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMoKQogICAgIFJFTEVBU0VfQVNTRVJUKG1fcHV0QnlJZEluZGV4ID09IG1fcHV0QnlJ
ZHMuc2l6ZSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVChtX2luQnlJZEluZGV4ID09IG1faW5CeUlk
cy5zaXplKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKG1faW5zdGFuY2VPZkluZGV4ID09IG1faW5z
dGFuY2VPZnMuc2l6ZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChtX3ByaXZhdGVCcmFuZEFjY2Vz
c0luZGV4ID09IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMuc2l6ZSgpKTsKICAgICBSRUxFQVNFX0FT
U0VSVChtX2NhbGxMaW5rSW5mb0luZGV4ID09IG1fY2FsbENvbXBpbGF0aW9uSW5mby5zaXplKCkp
OwogCiAgICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmcoKSkKQEAgLTkwMiw2ICs5MDgsNyBAQCBD
b21waWxhdGlvblJlc3VsdCBKSVQ6OmxpbmsoKQogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1f
ZGVsQnlWYWxzLCBwYXRjaEJ1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9pbkJ5
SWRzLCBwYXRjaEJ1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9pbnN0YW5jZU9m
cywgcGF0Y2hCdWZmZXIpOworICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fcHJpdmF0ZUJyYW5k
QWNjZXNzZXMsIHBhdGNoQnVmZmVyKTsKIAogICAgIGlmIChtX2J5VmFsQ29tcGlsYXRpb25JbmZv
LnNpemUoKSkgewogICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxFeGNlcHRpb25IYW5kbGVyUHRy
VGFnPiBleGNlcHRpb25IYW5kbGVyID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZjxFeGNlcHRpb25I
YW5kbGVyUHRyVGFnPihtX2V4Y2VwdGlvbkhhbmRsZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgK
aW5kZXggN2MzNWI1NjczNDc3NWUzNmVmYzM5NmQ1NzJiOTkyMTVjNTllNmRmMi4uMmVhZDU1ZGMw
NTRjMDcyNjExMGI4NDVhZDA4Yzg3YjdjM2E5ODQwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
CkBAIC01NjMsNiArNTYzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1p
dF9vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAg
ICB2b2lkIGVtaXRfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiopOwog
ICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X3Byb3RvdHlwZV9vZihjb25zdCBJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKQEAg
LTY5NSw2ICs2OTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0U2xvd19v
cF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9ieV92YWwoY29u
c3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAg
ICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xv
d19vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jaGVja19wcml2
YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9hcmd1bWVudF9ieV92YWwoY29u
c3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAg
ICAgIHZvaWQgZW1pdFNsb3dfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaW5z
dGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImKTsKQEAgLTk4NSw2ICs5ODksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9y
PEpJVERlbEJ5SWRHZW5lcmF0b3I+IG1fZGVsQnlJZHM7CiAgICAgICAgIFZlY3RvcjxKSVREZWxC
eVZhbEdlbmVyYXRvcj4gbV9kZWxCeVZhbHM7CiAgICAgICAgIFZlY3RvcjxKSVRJbnN0YW5jZU9m
R2VuZXJhdG9yPiBtX2luc3RhbmNlT2ZzOworICAgICAgICBWZWN0b3I8SklUUHJpdmF0ZUJyYW5k
QWNjZXNzR2VuZXJhdG9yPiBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzOwogICAgICAgICBWZWN0b3I8
QnlWYWxDb21waWxhdGlvbkluZm8+IG1fYnlWYWxDb21waWxhdGlvbkluZm87CiAgICAgICAgIFZl
Y3RvcjxDYWxsQ29tcGlsYXRpb25JbmZvPiBtX2NhbGxDb21waWxhdGlvbkluZm87CiAgICAgICAg
IFZlY3RvcjxKdW1wVGFibGU+IG1fam1wVGFibGU7CkBAIC0xMDA4LDYgKzEwMTMsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQgbV9kZWxCeVZhbEluZGV4IHsgVUlOVF9NQVgg
fTsKICAgICAgICAgdW5zaWduZWQgbV9kZWxCeUlkSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAg
ICB1bnNpZ25lZCBtX2luc3RhbmNlT2ZJbmRleCB7IFVJTlRfTUFYIH07CisgICAgICAgIHVuc2ln
bmVkIG1fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNp
Z25lZCBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCB7IFVJTlRfTUFYIH07CiAgICAgICAgIHVuc2ln
bmVkIG1fY2FsbExpbmtJbmZvSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBt
X2J5dGVjb2RlQ291bnRIYXZpbmdTbG93Q2FzZSB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKaW5kZXggOWJjMjYy
M2IzZmQ1MDdkYzlhZmM5OGE3NzAxODZmMWU1ODFiNWM4ZS4uOTFlZGNmNzJjMTg2Y2ViNzgzNTI2
MWI1NmVmMWI5YTY4MWNmZjk5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKQEAgLTMyNCw2ICszMjQsMzYgQEAgdm9p
ZCBKSVRHZXRCeVZhbEdlbmVyYXRvcjo6ZmluYWxpemUoCiAgICAgICAgIGZhc3RQYXRoLCBzbG93
UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkp
OwogfQogCitKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OkpJVFByaXZhdGVCcmFuZEFj
Y2Vzc0dlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
LCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwgY29u
c3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVS
ZWdzIGJyYW5kKQorICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5k
ZXgsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMpCit7CisgICAgbV9zdHViSW5mby0+aGFzQ29u
c3RhbnRJZGVudGlmaWVyID0gZmFsc2U7CisKKyAgICBtX3N0dWJJbmZvLT5iYXNlR1BSID0gYmFz
ZS5wYXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+cmVncy5icmFuZEdQUiA9IGJyYW5kLnBh
eWxvYWRHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT52YWx1ZUdQUiA9IEludmFsaWRHUFJSZWc7Cisj
aWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gYmFzZS50
YWdHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT52LmJyYW5kVGFnR1BSID0gYnJhbmQudGFnR1BSKCk7
CisgICAgbV9zdHViSW5mby0+dmFsdWVUYWdHUFIgPSBJbnZhbGlkR1BSUmVnOworI2VuZGlmCit9
CisKK3ZvaWQgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRo
KE1hY3JvQXNzZW1ibGVyJiBqaXQpCit7CisgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOworICAg
IG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBtX2RvbmUgPSBqaXQu
bGFiZWwoKTsKK30KKwordm9pZCBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OmZpbmFs
aXplKAorICAgIExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKK3sK
KyAgICBBU1NFUlQobV9zdGFydC5pc1NldCgpKTsKKyAgICBCYXNlOjpmaW5hbGl6ZSgKKyAgICAg
ICAgZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPihtX3N0YXJ0KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8g
RU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IuaAppbmRleCA4NTM4MzVhMzkzNTg1MjkxMjdkZTJmMzk3YjQ5Nzk5ODI0
ZTM2ZjZiLi5kNmNhNmUxNmEzZjMyYzY0MGY5NmNiMjU1MTk1NTQ4YjBmMmViNjUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5o
CkBAIC0yNDYsMTIgKzI0NiwzNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEpTVmFsdWVSZWdz
IG1fYmFzZTsKICAgICBKU1ZhbHVlUmVncyBtX3Jlc3VsdDsKLSAgICBKU1ZhbHVlUmVncyBtXzsK
IAogICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX3N0YXJ0OwogICAgIE1hY3JvQXNzZW1ibGVy
OjpQYXRjaGFibGVKdW1wIG1fc2xvd1BhdGhKdW1wOwogfTsKIAorY2xhc3MgSklUUHJpdmF0ZUJy
YW5kQWNjZXNzR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKKyAg
ICB1c2luZyBCYXNlID0gSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I7CitwdWJsaWM6CisgICAgSklU
UHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKCkgeyB9CisKKyAgICBKSVRQcml2YXRlQnJhbmRB
Y2Nlc3NHZW5lcmF0b3IoCisgICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRl
SW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAorICAg
ICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBicmFuZCk7CisKKyAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1bXAoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJU
KG1fc2xvd1BhdGhKdW1wLm1fanVtcC5pc1NldCgpKTsKKyAgICAgICAgcmV0dXJuIG1fc2xvd1Bh
dGhKdW1wLm1fanVtcDsKKyAgICB9CisKKyAgICB2b2lkIGZpbmFsaXplKAorICAgICAgICBMaW5r
QnVmZmVyJiBmYXN0UGF0aExpbmtCdWZmZXIsIExpbmtCdWZmZXImIHNsb3dQYXRoTGlua0J1ZmZl
cik7CisgICAgCisgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CisK
K3ByaXZhdGU6CisgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG1fc3RhcnQ7CisgICAgTWFjcm9B
c3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbV9zbG93UGF0aEp1bXA7Cit9OworCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBWZWN0b3JUeXBlPgogdm9pZCBmaW5hbGl6ZUlubGluZUNhY2hlcyhWZWN0b3JUeXBl
JiB2ZWN0b3IsIExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDZjY2Ex
YzkyNDQ5YWRhNGJhMzFhNjhhOTE5NzQyYjk4MTBhMTI5NTguLjkxODU3MDU1NmYwZjk3YTJjZDZh
NWNlMjdkYTQyOGE5ZDQ3NmNkYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcApAQCAtMTA5NCw2ICsxMDk0LDEwMSBAQCBKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljLCB2b2lkLCAoSlNHbG9iYWxPYmpl
Y3QqCiAgICAgZGlyZWN0UHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBhc09iamVjdChiYXNlVmFsdWUp
LCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8sIGVjbWFNb2RlKTsKIH0KIAorSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplLCB2b2lkLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QnJhbmQpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOworICAgIEpTVmFsdWUgYnJhbmQg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJyYW5kKTsKKworICAgIEFTU0VSVChiYXNlVmFsdWUu
aXNPYmplY3QoKSk7CisgICAgQVNTRVJUKGJyYW5kLmlzU3ltYm9sKCkpOworCisgICAgSlNPYmpl
Y3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOworICAgIFN0cnVjdHVyZSogb2xk
U3RydWN0dXJlID0gYmFzZU9iamVjdC0+c3RydWN0dXJlKHZtKTsKKyAgICBiYXNlT2JqZWN0LT5z
ZXRQcml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0LCBicmFuZCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZy
YW1lLT5jb2RlQmxvY2soKTsKKyAgICBpZiAoQ2FjaGVhYmxlSWRlbnRpZmllcjo6aXNDYWNoZWFi
bGVJZGVudGlmaWVyQ2VsbChicmFuZCkpIHsKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBp
ZGVudGlmaWVyID0gQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUNlbGwoYnJhbmQuYXND
ZWxsKCkpOworICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZ0J5KHZtLCBjb2Rl
QmxvY2ssIGJhc2VPYmplY3QtPnN0cnVjdHVyZSh2bSksIGlkZW50aWZpZXIpKQorICAgICAgICAg
ICAgcmVwYXRjaFNldFByaXZhdGVCcmFuZChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9i
amVjdCwgb2xkU3RydWN0dXJlLCBpZGVudGlmaWVyLCAqc3R1YkluZm8pOworICAgIH0KKworfQor
CitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kR2VuZXJp
Yywgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZv
KiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJyYW5kKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVl
IGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZVZhbHVlKTsKKyAgICBKU1Zh
bHVlIGJyYW5kID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCcmFuZCk7CisKKyAgICBpZiAoc3R1
YkluZm8pCisgICAgICAgIHN0dWJJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOworCisgICAgQVNT
RVJUKGJhc2VWYWx1ZS5pc09iamVjdCgpKTsKKyAgICBBU1NFUlQoYnJhbmQuaXNTeW1ib2woKSk7
CisKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAg
YmFzZU9iamVjdC0+c2V0UHJpdmF0ZUJyYW5kKGdsb2JhbE9iamVjdCwgYnJhbmQpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Cit9CisKK0pTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplLCB2b2lkLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQnJhbmQp
KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOworICAgIEpTVmFsdWUgYnJhbmQgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZEJyYW5kKTsKKworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0g
YmFzZVZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgdm9pZCgpKTsKKworICAgIEFTU0VSVChicmFuZC5pc1N5bWJvbCgpKTsKKworICAg
IGJhc2VPYmplY3QtPmNoZWNrUHJpdmF0ZUJyYW5kKGdsb2JhbE9iamVjdCwgYnJhbmQpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CisgICAgaWYgKENhY2hlYWJsZUlkZW50
aWZpZXI6OmlzQ2FjaGVhYmxlSWRlbnRpZmllckNlbGwoYnJhbmQpKSB7CisgICAgICAgIENhY2hl
YWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZy
b21DZWxsKGJyYW5kLmFzQ2VsbCgpKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNh
Y2hpbmdCeSh2bSwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLCBpZGVudGlm
aWVyKSkKKyAgICAgICAgICAgIHJlcGF0Y2hDaGVja1ByaXZhdGVCcmFuZChnbG9iYWxPYmplY3Qs
IGNvZGVCbG9jaywgYmFzZU9iamVjdCwgaWRlbnRpZmllciwgKnN0dWJJbmZvKTsKKyAgICB9Cit9
CisKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZEdl
bmVyaWMsIHZvaWQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCcmFuZCkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAg
ICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNW
YWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2VWYWx1ZSk7CisgICAg
SlNWYWx1ZSBicmFuZCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQnJhbmQpOworCisgICAgc3R1
YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CisKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9
IGJhc2VWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBBU1NFUlQoYnJhbmQuaXNTeW1ib2woKSk7CisKKyAg
ICBiYXNlT2JqZWN0LT5jaGVja1ByaXZhdGVCcmFuZChnbG9iYWxPYmplY3QsIGJyYW5kKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworfQorCiBKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgdm9pZCwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0S2luZCkp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMjI3Niw2ICsyMzcxLDgg
QEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNWYWx1ZSBnZXRQcml2YXRlTmFtZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnIKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBKU1ZhbHVlKCkpOwogCiAgICAgSlNPYmplY3QqIGJhc2UgPSBiYXNlVmFsdWUudG9PYmplY3Qo
Z2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkp
OworCiAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1l
dGhvZFR5cGU6OkdldE93blByb3BlcnR5KTsKICAgICBiYXNlLT5nZXRQcml2YXRlRmllbGQoZ2xv
YmFsT2JqZWN0LCBmaWVsZE5hbWUsIHNsb3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIEpTVmFsdWUoKSk7CkBAIC0yMzgyLDcgKzI0NzksNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVCeUlkT3B0aW1pemUsIEVuY29kZWRKU1ZhbHVl
LCAoSgogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QuZ2V0VmFsdWUoZ2xvYmFs
T2JqZWN0LCBmaWVsZE5hbWUpKTsKICAgICB9CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGdldFByaXZhdGVOYW1lKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlVmFsdWUsIGZpZWxk
TmFtZSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGdl
dFByaXZhdGVOYW1lKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlVmFsdWUsIGZpZWxkTmFt
ZSkpKTsKIH0KIAogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldFByaXZhdGVO
YW1lQnlJZEdlbmVyaWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgdWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZp
ZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCA5NDI1
YjUxN2Y5OGVlZjYzZTM0OWQwNzk1MWMxOTgwZWRkNTk5MTg4Li4yZmMzYTVjNjYyMDI0NjRhMDRi
ZTQyMTBkYTI2ODRiMmZiZWIwMWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuaApAQCAtMTkyLDYgKzE5MiwxMSBAQCBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZSwgdm9pZAog
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxk
U3RyaWN0LCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRw
dHJfdCkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeUlkU2V0UHJp
dmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkQmFzZSwgdWludHB0cl90KSk7CiAKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSk7CitKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUs
IHZvaWQsIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
blNldFByaXZhdGVCcmFuZEdlbmVyaWMsIHZvaWQsIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSk7CitKU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kR2VuZXJpYywgdm9pZCwg
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUpKTsKKwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRQ
cml2YXRlTmFtZU9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBQcml2YXRlRmll
bGRQdXRLaW5kKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dFByaXZh
dGVOYW1lR2VuZXJpYywgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgUHJpdmF0ZUZpZWxkUHV0
S2luZCkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeVZhbE9wdGlt
aXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCAwYmQ5ZmM2M2Fh
OThlMGY0OWFmNjllNjA4Nzg0MTc2NTc2NjdhNDNkLi43YTBhMTk2NjQ5NzU2NDc1ZDBjOWUyOTQw
YzA2NzM4ZmNjMzhjNjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcApAQCAtMTQyLDYgKzE0Miw3OSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZQogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiB9
CiAKK3ZvaWQgSklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BTZXRQcml2YXRlQnJhbmQ+KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJh
c2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJyYW5kID0gYnl0ZWNv
ZGUubV9icmFuZDsKKyAgICBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOworICAgIEdQUlJlZyBicmFu
ZEdQUiA9IHJlZ1QxOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUdQUik7
CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihicmFuZCwgYnJhbmRHUFIpOworCisgICAgZW1p
dEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2VHUFIsIGJhc2UpOworCisgICAgSklUUHJpdmF0
ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmln
aW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nl
c3NUeXBlOjpTZXRQcml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKGJyYW5k
R1BSKSk7CisgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgIGFkZFNsb3dDYXNl
KGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgbV9wcml2YXRlQnJhbmRBY2Nlc3Nlcy5hcHBlbmQo
Z2VuKTsKKworICAgIC8vIFdlIHNob3VsZCBlbWl0IHdyaXRlLWJhcnJpZXIgYXQgdGhlIGVuZCBv
ZiBzZXF1ZW5jZSBzaW5jZSB3cml0ZS1iYXJyaWVyIGNsb2JiZXJzIHJlZ2lzdGVycy4KKyAgICAv
LyBJQyBjYW4gd3JpdGUgbmV3IFN0cnVjdHVyZSB3aXRob3V0IHdyaXRlLWJhcnJpZXIgaWYgYSBi
YXNlIGlzIGNlbGwuCisgICAgLy8gRklYTUU6IFVzZSBVbmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVy
IGluIEJhc2VsaW5lIGVmZmVjdGl2ZWx5IHRvIHJlZHVjZSBjb2RlIHNpemUuCisgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTM5NQorICAgIGVtaXRXcml0
ZUJhcnJpZXIoYmFzZSwgU2hvdWxkRmlsdGVyQmFzZSk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xv
d19vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsK
KyAgICBHUFJSZWcgYnJhbmRHUFIgPSByZWdUMTsKKworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRl
cik7CisKKyAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0
ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleF07CisgICAgKyttX3ByaXZh
dGVCcmFuZEFjY2Vzc0luZGV4OworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwor
ICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0
aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0
dWJJbmZvKCksIGJhc2VHUFIsIGJyYW5kR1BSKTsKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxs
KGNvbGRQYXRoQmVnaW4sIGNhbGwpOworfQorCit2b2lkIEpJVDo6ZW1pdF9vcF9jaGVja19wcml2
YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BDaGVja1ByaXZhdGVCcmFu
ZD4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBW
aXJ0dWFsUmVnaXN0ZXIgYnJhbmQgPSBieXRlY29kZS5tX2JyYW5kOworCisgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihi
cmFuZCwgcmVnVDEpOworCisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBi
YXNlKTsKKworICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCisgICAgICAg
IG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgo
bV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIFJlZ2lzdGVy
U2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVn
VDApLCBKU1ZhbHVlUmVncyhyZWdUMSkpOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlz
KTsKKyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIG1fcHJpdmF0ZUJy
YW5kQWNjZXNzZXMuYXBwZW5kKGdlbik7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9jaGVj
a19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOworICAgIEdQ
UlJlZyBicmFuZEdQUiA9IHJlZ1QxOworCisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKwor
ICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9wcml2YXRlQnJhbmRB
Y2Nlc3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4XTsKKyAgICArK21fcHJpdmF0ZUJyYW5k
QWNjZXNzSW5kZXg7CisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgQ2Fs
bCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXpl
LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5m
bygpLCBiYXNlR1BSLCBicmFuZEdQUik7CisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xk
UGF0aEJlZ2luLCBjYWxsKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbF9kaXJl
Y3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0X29w
X3B1dF9ieV92YWw8T3BQdXRCeVZhbERpcmVjdD4oY3VycmVudEluc3RydWN0aW9uKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3Bw
CmluZGV4IGIxNGE1MDYzNDk0NTE1OTM4M2U3ZDA5YWI1YjlkZTRjMzUwZGRlODIuLmQ4NjE1MWI2
MzExZjRkYzI2ZGM0M2ZkZmQ5NzViNTZkNmY0ZTk3OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtMzgwLDYgKzM4
MCw4MCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZQogICAgIG1fYnlWYWxJbnN0cnVjdGlvbklu
ZGV4Kys7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BTZXRQcml2YXRlQnJhbmQ+KCk7CisgICAgVmlydHVhbFJl
Z2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJyYW5k
ID0gYnl0ZWNvZGUubV9icmFuZDsKKyAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyhyZWdUMSwgcmVn
VDApOworICAgIEpTVmFsdWVSZWdzIGJyYW5kUmVncyhyZWdUMywgcmVnVDIpOworICAgIGVtaXRM
b2FkKGJhc2UsIGJhc2VSZWdzLnRhZ0dQUigpLCBiYXNlUmVncy5wYXlsb2FkR1BSKCkpOworICAg
IGVtaXRMb2FkKGJyYW5kLCBicmFuZFJlZ3MudGFnR1BSKCksIGJyYW5kUmVncy5wYXlsb2FkR1BS
KCkpOworCisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIGJhc2VSZWdzLnRh
Z0dQUigpKTsKKworICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCisgICAg
ICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5k
ZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5kLCBSZWdpc3Rl
clNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIGJhc2VSZWdzLCBicmFu
ZFJlZ3MpOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBhZGRTbG93Q2Fz
ZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMuYXBwZW5k
KGdlbik7CisKKyAgICAvLyBXZSBzaG91bGQgZW1pdCB3cml0ZS1iYXJyaWVyIGF0IHRoZSBlbmQg
b2Ygc2VxdWVuY2Ugc2luY2Ugd3JpdGUtYmFycmllciBjbG9iYmVycyByZWdpc3RlcnMuCisgICAg
Ly8gSUMgY2FuIHdyaXRlIG5ldyBTdHJ1Y3R1cmUgd2l0aG91dCB3cml0ZS1iYXJyaWVyIGlmIGEg
YmFzZSBpcyBjZWxsLgorICAgIC8vIEZJWE1FOiBVc2UgVW5jb25kaXRpb25hbFdyaXRlQmFycmll
ciBpbiBCYXNlbGluZSBlZmZlY3RpdmVseSB0byByZWR1Y2UgY29kZSBzaXplLgorICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkzOTUKKyAgICBlbWl0V3Jp
dGVCYXJyaWVyKGJhc2UsIFNob3VsZEZpbHRlckJhc2UpOworfQorCit2b2lkIEpJVDo6ZW1pdFNs
b3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzKHJl
Z1QxLCByZWdUMCk7CisgICAgSlNWYWx1ZVJlZ3MgYnJhbmRSZWdzKHJlZ1QzLCByZWdUMik7CisK
KyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworCisgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNz
R2VuZXJhdG9yJiBnZW4gPSBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzW21fcHJpdmF0ZUJyYW5kQWNj
ZXNzSW5kZXhdOworICAgICsrbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleDsKKyAgICBMYWJlbCBj
b2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBiYXNlUmVncywgYnJhbmRSZWdzKTsK
KyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOworfQorCit2
b2lkIEpJVDo6ZW1pdF9vcF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BDaGVja1ByaXZhdGVCcmFuZD4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFz
ZSA9IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYnJhbmQgPSBieXRlY29k
ZS5tX2JyYW5kOworICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzKHJlZ1QxLCByZWdUMCk7CisgICAg
SlNWYWx1ZVJlZ3MgYnJhbmRSZWdzKHJlZ1QzLCByZWdUMik7CisgICAgZW1pdExvYWQoYmFzZSwg
YmFzZVJlZ3MudGFnR1BSKCksIGJhc2VSZWdzLnBheWxvYWRHUFIoKSk7CisgICAgZW1pdExvYWQo
YnJhbmQsIGJyYW5kUmVncy50YWdHUFIoKSwgYnJhbmRSZWdzLnBheWxvYWRHUFIoKSk7CisKKyAg
ICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgYmFzZVJlZ3MudGFnR1BSKCkpOwor
CisgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9jb2Rl
QmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZCwgUmVnaXN0ZXJTZXQ6OnN0
dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBiYXNlUmVncywgYnJhbmRSZWdzKTsK
KyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgYWRkU2xvd0Nhc2UoZ2VuLnNs
b3dQYXRoSnVtcCgpKTsKKyAgICBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzLmFwcGVuZChnZW4pOwor
fQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAg
SlNWYWx1ZVJlZ3MgYmFzZVJlZ3MocmVnVDEsIHJlZ1QwKTsKKyAgICBKU1ZhbHVlUmVncyBicmFu
ZFJlZ3MocmVnVDMsIHJlZ1QyKTsKKworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisKKyAg
ICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNj
ZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleF07CisgICAgKyttX3ByaXZhdGVCcmFuZEFj
Y2Vzc0luZGV4OworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIENhbGwg
Y2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSwg
VHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8o
KSwgYmFzZVJlZ3MsIGJyYW5kUmVncyk7CisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xk
UGF0aEJlZ2luLCBjYWxsKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbF9kaXJl
Y3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0X29w
X3B1dF9ieV92YWw8T3BQdXRCeVZhbERpcmVjdD4oY3VycmVudEluc3RydWN0aW9uKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IDU3YjZjMTMzZjhmMjdkM2JkMzBkNWNh
Mzk0MTdjZGM5OTIyNWJjMTguLjE5NmM3NTA1OTU0OTY5MTg5NGUzNWIwMWMwNjE0NzA0OTc1Njlk
MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtMTAwNSw2ICsxMDA1
LDExMCBAQCB2b2lkIHJlcGF0Y2hJbkJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTT2JqZWN0KgogICAgICAgICBmdGxUaHVua0F3YXJlUmVw
YXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0
aW9uSW5CeUlkKTsKIH0KIAorc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlQ2hlY2tQ
cml2YXRlQnJhbmQoCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEpTT2JqZWN0KiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyIGJyYW5kSUQs
CisgICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQoreworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IHJlc3VsdDsKKyAgICBJ
ZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgYnJhbmRJRC51aWQoKSk7
CisKKyAgICB7CisgICAgICAgIEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJs
b2NrLT5tX2xvY2ssIHZtLmhlYXApOworICAgICAgICBpZiAoZm9yY2VJQ0ZhaWx1cmUoZ2xvYmFs
T2JqZWN0KSkKKyAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworCisgICAgICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZS0+c3RydWN0dXJlKHZtKTsKKworICAgICAgICBJbmxp
bmVDYWNoZUFjdGlvbiBhY3Rpb24gPSBhY3Rpb25Gb3JDZWxsKHZtLCBiYXNlKTsKKyAgICAgICAg
aWYgKGFjdGlvbiAhPSBBdHRlbXB0VG9DYWNoZSkKKyAgICAgICAgICAgIHJldHVybiBhY3Rpb247
CisKKyAgICAgICAgLy8gTE9HX0lDKChJQ0V2ZW50OjpJbkFkZEFjY2Vzc0Nhc2UsIHN0cnVjdHVy
ZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZSkpOworCisgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3Jl
YXRlQ2hlY2tQcml2YXRlQnJhbmQodm0sIGNvZGVCbG9jaywgYnJhbmRJRCwgc3RydWN0dXJlKTsK
KworICAgICAgICByZXN1bHQgPSBzdHViSW5mby5hZGRBY2Nlc3NDYXNlKGxvY2tlciwgZ2xvYmFs
T2JqZWN0LCBjb2RlQmxvY2ssIEVDTUFNb2RlOjpzdHJpY3QoKSwgYnJhbmRJRCwgV1RGTW92ZShu
ZXdDYXNlKSk7CisKKyAgICAgICAgaWYgKHJlc3VsdC5nZW5lcmF0ZWRTb21lQ29kZSgpKSB7Cisg
ICAgICAgICAgICAvLyBMT0dfSUMoKElDRXZlbnQ6OkluUmVwbGFjZVdpdGhKdW1wLCBzdHJ1Y3R1
cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgc2xvdC5zbG90QmFzZSgpID09IGJhc2UpKTsKKworICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7CisgICAgICAgICAgICBJbmxp
bmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJ
VFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBmaXJlV2F0Y2hwb2ludHNBbmRDbGVhclN0dWJJZk5lZWRlZCh2bSwgc3R1YkluZm8sIGNv
ZGVCbG9jaywgcmVzdWx0KTsKKworICAgIHJldHVybiByZXN1bHQuc2hvdWxkR2l2ZVVwTm93KCkg
PyBHaXZlVXBPbkNhY2hlIDogUmV0cnlDYWNoZUxhdGVyOworfQorCit2b2lkIHJlcGF0Y2hDaGVj
a1ByaXZhdGVCcmFuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgSlNPYmplY3QqIGJhc2VPYmplY3QsIENhY2hlYWJsZUlkZW50aWZpZXIgYnJhbmRJ
RCwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQoreworICAgIFN1cGVyU2FtcGxlclNjb3Bl
IHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKworICAgIGlmICh0cnlDYWNoZUNoZWNrUHJpdmF0
ZUJyYW5kKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBicmFuZElELCBzdHVi
SW5mbykgPT0gR2l2ZVVwT25DYWNoZSkKKyAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxs
KGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkNoZWNr
UHJpdmF0ZUJyYW5kR2VuZXJpYyk7Cit9CisKK3N0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlD
YWNoZVNldFByaXZhdGVCcmFuZCgKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgSlNPYmplY3QqIGJhc2UsIFN0cnVjdHVyZSogb2xkU3RydWN0
dXJlLCBDYWNoZWFibGVJZGVudGlmaWVyIGJyYW5kSUQsCisgICAgU3RydWN0dXJlU3R1YkluZm8m
IHN0dWJJbmZvKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBBY2Nl
c3NHZW5lcmF0aW9uUmVzdWx0IHJlc3VsdDsKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRp
Zmllcjo6ZnJvbVVpZCh2bSwgYnJhbmRJRC51aWQoKSk7CisKKyAgICB7CisgICAgICAgIEdDU2Fm
ZUNvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2ssIHZtLmhlYXApOwor
ICAgICAgICBpZiAoZm9yY2VJQ0ZhaWx1cmUoZ2xvYmFsT2JqZWN0KSkKKyAgICAgICAgICAgIHJl
dHVybiBHaXZlVXBPbkNhY2hlOworICAgICAgICAKKyAgICAgICAgQVNTRVJUKG9sZFN0cnVjdHVy
ZSk7CisKKyAgICAgICAgaWYgKG9sZFN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpCisgICAgICAg
ICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOworCisgICAgICAgIElubGluZUNhY2hlQWN0aW9u
IGFjdGlvbiA9IGFjdGlvbkZvckNlbGwodm0sIGJhc2UpOworICAgICAgICBpZiAoYWN0aW9uICE9
IEF0dGVtcHRUb0NhY2hlKQorICAgICAgICAgICAgcmV0dXJuIGFjdGlvbjsKKworICAgICAgICAv
LyBMT0dfSUMoKElDRXZlbnQ6OkluQWRkQWNjZXNzQ2FzZSwgc3RydWN0dXJlLT5jbGFzc0luZm8o
KSwgaWRlbnQsIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlKSk7CisgICAgICAgIAorICAgICAgICBT
dHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6c2V0QnJhbmRUcmFuc2l0aW9uRnJv
bUV4aXN0aW5nU3RydWN0dXJlQ29uY3VycmVudGx5KG9sZFN0cnVjdHVyZSwgYnJhbmRJRC51aWQo
KSk7CisgICAgICAgIGlmICghbmV3U3RydWN0dXJlKQorICAgICAgICAgICAgcmV0dXJuIFJldHJ5
Q2FjaGVMYXRlcjsKKyAgICAgICAgaWYgKG5ld1N0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpCisg
ICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKyAgICAgICAgQVNTRVJUKG5ld1N0cnVj
dHVyZS0+cHJldmlvdXNJRCgpID09IG9sZFN0cnVjdHVyZSk7CisgICAgICAgIEFTU0VSVChuZXdT
dHJ1Y3R1cmUtPnRyYW5zaXRpb25LaW5kKCkgPT0gVHJhbnNpdGlvbktpbmQ6OlNldEJyYW5kKTsK
KyAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZS0+aXNPYmplY3QoKSk7CisgICAgICAgIAorICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNy
ZWF0ZVNldFByaXZhdGVCcmFuZCh2bSwgY29kZUJsb2NrLCBicmFuZElELCBvbGRTdHJ1Y3R1cmUs
IG5ld1N0cnVjdHVyZSk7CisKKyAgICAgICAgcmVzdWx0ID0gc3R1YkluZm8uYWRkQWNjZXNzQ2Fz
ZShsb2NrZXIsIGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBFQ01BTW9kZTo6c3RyaWN0KCksIGJy
YW5kSUQsIFdURk1vdmUobmV3Q2FzZSkpOworCisgICAgICAgIGlmIChyZXN1bHQuZ2VuZXJhdGVk
U29tZUNvZGUoKSkgeworICAgICAgICAgICAgLy8gTE9HX0lDKChJQ0V2ZW50OjpJblJlcGxhY2VX
aXRoSnVtcCwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIHNsb3Quc2xvdEJhc2UoKSA9
PSBiYXNlKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3Vs
dC5jb2RlKCkpOworICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0
dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNv
ZGUoKSkpOworICAgICAgICB9CisgICAgfQorCisgICAgZmlyZVdhdGNocG9pbnRzQW5kQ2xlYXJT
dHViSWZOZWVkZWQodm0sIHN0dWJJbmZvLCBjb2RlQmxvY2ssIHJlc3VsdCk7CisgICAgCisgICAg
cmV0dXJuIHJlc3VsdC5zaG91bGRHaXZlVXBOb3coKSA/IEdpdmVVcE9uQ2FjaGUgOiBSZXRyeUNh
Y2hlTGF0ZXI7Cit9CisKK3ZvaWQgcmVwYXRjaFNldFByaXZhdGVCcmFuZChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNPYmplY3QqIGJhc2VPYmpl
Y3QsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBDYWNoZWFibGVJZGVudGlmaWVyIGJyYW5kSUQs
IFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKK3sKKyAgICBTdXBlclNhbXBsZXJTY29wZSBz
dXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisKKyAgICBpZiAodHJ5Q2FjaGVTZXRQcml2YXRlQnJh
bmQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIG9sZFN0cnVjdHVyZSwgIGJy
YW5kSUQsIHN0dWJJbmZvKSA9PSBHaXZlVXBPbkNhY2hlKQorICAgICAgICBmdGxUaHVua0F3YXJl
UmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3Bl
cmF0aW9uU2V0UHJpdmF0ZUJyYW5kR2VuZXJpYyk7Cit9CisKIHN0YXRpYyBJbmxpbmVDYWNoZUFj
dGlvbiB0cnlDYWNoZUluc3RhbmNlT2YoCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUgdmFsdWVWYWx1ZSwgSlNWYWx1ZSBwcm90
b3R5cGVWYWx1ZSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLAogICAgIGJvb2wgd2FzRm91
bmQpCkBAIC0xNTgwLDYgKzE2ODQsMTggQEAgdm9pZCByZXNldEluc3RhbmNlT2YoU3RydWN0dXJl
U3R1YkluZm8mIHN0dWJJbmZvKQogICAgIHJlc2V0UGF0Y2hhYmxlSnVtcChzdHViSW5mbyk7CiB9
CiAKK3ZvaWQgcmVzZXRDaGVja1ByaXZhdGVCcmFuZChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3Ry
dWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQoreworICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2Fs
bChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25DaGVj
a1ByaXZhdGVCcmFuZE9wdGltaXplKTsKKyAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1
bXAoc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7Cit9CisKK3ZvaWQg
cmVzZXRTZXRQcml2YXRlQnJhbmQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJ
bmZvJiBzdHViSW5mbykKK3sKKyAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2Nr
LCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5k
T3B0aW1pemUpOworICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywg
c3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKK30KKwogTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyPEpTRW50cnlQdHJUYWc+IGpzVG9XYXNtSUNDb2RlUHRyKFZNJiB2bSwgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kLCBKU09iamVjdCogY2FsbGVlKQogewogI2lmIEVOQUJMRShXRUJBU1NF
TUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKaW5kZXggNWRkMjBjNjM2YTA1MTY4
N2Q5MTZlODBhYjc4M2IwZTllNjZkMzFkYS4uZWU2ZDZmM2ZjODZmZDEwY2Y4OTQ5NzgzN2E0YThi
NmE1NGI3MzM0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKQEAgLTUzLDYgKzUz
LDggQEAgdm9pZCByZXBhdGNoR2V0QnkoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU1Zh
bHVlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBjb24KIHZvaWQgcmVwYXRjaFB1dEJ5SUQoSlNHbG9i
YWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqLCBDYWNoZWFibGVJZGVu
dGlmaWVyLCBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIFB1dEtp
bmQpOwogdm9pZCByZXBhdGNoRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBE
ZWxldGVQcm9wZXJ0eVNsb3QmLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqLCBDYWNoZWFibGVJZGVudGlm
aWVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIERlbEJ5S2luZCwgRUNNQU1vZGUpOwogdm9pZCByZXBh
dGNoSW5CeUlEKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBDYWNoZWFi
bGVJZGVudGlmaWVyLCBib29sIHdhc0ZvdW5kLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1
cmVTdHViSW5mbyYpOwordm9pZCByZXBhdGNoQ2hlY2tQcml2YXRlQnJhbmQoSlNHbG9iYWxPYmpl
Y3QqLCBDb2RlQmxvY2sqLCBKU09iamVjdCosIENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVy
ZVN0dWJJbmZvJik7Cit2b2lkIHJlcGF0Y2hTZXRQcml2YXRlQnJhbmQoSlNHbG9iYWxPYmplY3Qq
LCBDb2RlQmxvY2sqLCBKU09iamVjdCosIFN0cnVjdHVyZSosIENhY2hlYWJsZUlkZW50aWZpZXIs
IFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlcGF0Y2hJbnN0YW5jZU9mKEpTR2xvYmFsT2Jq
ZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBwcm90b3R5cGUsIFN0cnVj
dHVyZVN0dWJJbmZvJiwgYm9vbCB3YXNGb3VuZCk7CiB2b2lkIGxpbmtGb3IoVk0mLCBDYWxsRnJh
bWUqLCBDYWxsTGlua0luZm8mLCBDb2RlQmxvY2sqLCBKU09iamVjdCogY2FsbGVlLCBNYWNyb0Fz
c2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4pOwogdm9pZCBsaW5rRGlyZWN0Rm9yKENhbGxG
cmFtZSosIENhbGxMaW5rSW5mbyYsIENvZGVCbG9jayosIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxK
U0VudHJ5UHRyVGFnPik7CkBAIC02NCw2ICs2Niw4IEBAIHZvaWQgcmVzZXRQdXRCeUlEKENvZGVC
bG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlc2V0RGVsQnkoQ29kZUJsb2NrKiwg
U3RydWN0dXJlU3R1YkluZm8mLCBEZWxCeUtpbmQpOwogdm9pZCByZXNldEluQnlJRChDb2RlQmxv
Y2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXNldEluc3RhbmNlT2YoU3RydWN0dXJl
U3R1YkluZm8mKTsKK3ZvaWQgcmVzZXRDaGVja1ByaXZhdGVCcmFuZChDb2RlQmxvY2sqLCBTdHJ1
Y3R1cmVTdHViSW5mbyYpOwordm9pZCByZXNldFNldFByaXZhdGVCcmFuZChDb2RlQmxvY2sqLCBT
dHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoQ29kZUJs
b2NrKiwgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUHRyVGFnPiwgRnVuY3Rpb25QdHI8Q0Z1
bmN0aW9uUHRyVGFnPiBuZXdDYWxsZWVGdW5jdGlvbik7CiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8
SlNFbnRyeVB0clRhZz4ganNUb1dhc21JQ0NvZGVQdHIoVk0mLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kLCBKU09iamVjdCogY2FsbGVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggZDE1YWJhODFmMGJkYzg3ZTg3Y2VlMmQyODNlYzcz
Y2Y2NTA3NjE1MS4uYmU1YTdmYmFhYjhlMTY1OTM2YmYxY2VjMzBmYmRhYjAyZTlhYjlmZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0x
MzAxLDYgKzEzMDEsNzggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9wcml2
YXRlX25hbWUpCiAgICAgTExJTlRfRU5EKCk7ICAgIAogfQogCitMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfc2V0X3ByaXZhdGVfYnJhbmQpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKwor
ICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BTZXRQcml2YXRlQnJhbmQ+KCk7CisgICAgSlNW
YWx1ZSBiYXNlVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKTsK
KyAgICBKU1ZhbHVlIGJyYW5kID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYnJh
bmQpOworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsK
KyAgICBBU1NFUlQoYmFzZVZhbHVlLmlzT2JqZWN0KCkpOworICAgIEFTU0VSVChicmFuZC5pc1N5
bWJvbCgpKTsKKworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVl
KTsKKyAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IGJhc2VPYmplY3QtPnN0cnVjdHVyZSh2
bSk7CisKKyAgICBiYXNlT2JqZWN0LT5zZXRQcml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0LCBicmFu
ZCk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisKKyAgICBpZiAoIUxMSU5UX0FMV0FZ
U19BQ0NFU1NfU0xPVyAmJiAhb2xkU3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkgeworICAgICAg
ICBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrLCB2bS5o
ZWFwKTsKKyAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBiYXNlT2JqZWN0LT5zdHJ1
Y3R1cmUodm0pOworCisgICAgICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUgPT0gbmV3U3RydWN0dXJl
LT5wcmV2aW91c0lEKCkpOworICAgICAgICBBU1NFUlQob2xkU3RydWN0dXJlLT50cmFuc2l0aW9u
V2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKKworICAgICAgICAvLyBTdGFydCBv
dXQgYnkgY2xlYXJpbmcgb3V0IHRoZSBvbGQgY2FjaGUuCisgICAgICAgIG1ldGFkYXRhLm1fb2xk
U3RydWN0dXJlSUQgPSAwOworICAgICAgICBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEID0gMDsK
KyAgICAgICAgbWV0YWRhdGEubV9icmFuZC5jbGVhcigpOworCisgICAgICAgIGlmICghbmV3U3Ry
dWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkgeworICAgICAgICAgICAgbWV0YWRhdGEubV9vbGRTdHJ1
Y3R1cmVJRCA9IG9sZFN0cnVjdHVyZS0+aWQoKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fbmV3
U3RydWN0dXJlSUQgPSBuZXdTdHJ1Y3R1cmUtPmlkKCk7CisgICAgICAgICAgICBtZXRhZGF0YS5t
X2JyYW5kLnNldCh2bSwgY29kZUJsb2NrLCBicmFuZC5hc0NlbGwoKSk7CisgICAgICAgIH0KKyAg
ICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKKyAgICB9CisKKyAgICBMTElO
VF9FTkQoKTsgICAgCit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jaGVja19w
cml2YXRlX2JyYW5kKQoreworICAgIExMSU5UX0JFR0lOKCk7CisKKyAgICBhdXRvIGJ5dGVjb2Rl
ID0gcGMtPmFzPE9wQ2hlY2tQcml2YXRlQnJhbmQ+KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBi
eXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gZ2V0
T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSk7CisgICAgSlNWYWx1ZSBicmFuZCA9
IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2JyYW5kKTsKKworICAgIEpTT2JqZWN0
KiBiYXNlT2JqZWN0ID0gYmFzZVZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgTExJ
TlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisKKyAgICBBU1NFUlQoYnJhbmQuaXNTeW1ib2woKSk7CisK
KyAgICBiYXNlT2JqZWN0LT5jaGVja1ByaXZhdGVCcmFuZChnbG9iYWxPYmplY3QsIGJyYW5kKTsK
KyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKworICAgIC8vIE9PUFM6IElzIHRoZXJlIHJl
YWxseSBhIGNhc2Ugd2hlcmUgd2UgZG9uJ3Qgd2FudCB0byBjYWNoZSBoZXJlPworICAgIC8vIFNp
bmNlIGEgYnJhbmQgY2FuIG5ldmVyIGJlIGRlbGV0ZWQsIGl0J3Mgc2FmZSB0byByZWx5IG9uIFN0
cnVjdHVyZUlECisgICAgLy8gZXZlbiBpZiBpdCdzIGFuIHVuY2FjaGVhYmxlIGRpY3Rpb25hcnku
CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUodm0pOwor
ICAgIGlmICghTExJTlRfQUxXQVlTX0FDQ0VTU19TTE9XKSB7CisgICAgICAgIEdDU2FmZUNvbmN1
cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2ssIHZtLmhlYXApOworCisgICAg
ICAgIG1ldGFkYXRhLm1fc3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7CisgICAgICAgIG1l
dGFkYXRhLm1fYnJhbmQuc2V0KHZtLCBjb2RlQmxvY2ssIGJyYW5kLmFzQ2VsbCgpKTsKKyAgICAg
ICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKKyAgICB9CisKKyAgICBMTElOVF9F
TkQoKTsgICAgCit9CisKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFs
KQogewogICAgIExMSU5UX0JFR0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5oCmluZGV4IDk4MWIzNmU1ZTgwNDUyODhjMGViNTFlOGY4YmY0ZWZkOTUz
MGM5OGYuLjQ3MTFhOGVhNTI1MjdlZjAzMWQ4NmQ1NjY2OWRmZDI1ZjMwMzE0ZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCkBAIC03Nyw2ICs3Nyw4
IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2FyZ3VtZW50X2J5
X3ZhbCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWwp
OwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsX2RpcmVj
dCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9wcml2YXRlX25h
bWUpOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jaGVja19wcml2YXRl
X2JyYW5kKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc2V0X3ByaXZh
dGVfYnJhbmQpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9kZWxfYnlf
dmFsKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X2dldHRlcl9i
eV9pZCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9zZXR0ZXJf
YnlfaWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCBlYTQzMWNlNzNlZDgyMTg2MmQzNmUyZjA1NmQy
ZTBmMmQzYThlOTQ1Li42NjU3MWJlYjVjNjBiMTE3OWI0YTdjMGJhZjk0OGJhMjI5MmRkZjZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbQpAQCAtMjk5MSwzICsyOTkxLDQ4IEBAIGVuZCkKIG9wKGZ1enplcl9y
ZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQsIG1hY3JvICgpCiAgICAgbm90U3VwcG9ydGVkKCkK
IGVuZCkKKworCitsbGludE9wV2l0aE1ldGFkYXRhKG9wX2NoZWNrX3ByaXZhdGVfYnJhbmQsIE9w
Q2hlY2tQcml2YXRlQnJhbmQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwg
cmV0dXJuKQorICAgIG1ldGFkYXRhKHQ1LCB0MikKKyAgICBnZXQobV9iYXNlLCB0MykKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MywgQ2VsbFRhZywgdDAsIC5vcENo
ZWNrUHJpdmF0ZUJyYW5kU2xvdykKKyAgICBnZXQobV9icmFuZCwgdDMpCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDMsIENlbGxUYWcsIHQxLCAub3BDaGVja1ByaXZh
dGVCcmFuZFNsb3cpCisKKyAgICBsb2FkaSBPcENoZWNrUHJpdmF0ZUJyYW5kOjpNZXRhZGF0YTo6
bV9zdHJ1Y3R1cmVJRFt0NV0sIHQzCisgICAgYmluZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3Qw
XSwgdDMsIC5vcENoZWNrUHJpdmF0ZUJyYW5kU2xvdworCisgICAgbG9hZHAgT3BDaGVja1ByaXZh
dGVCcmFuZDo6TWV0YWRhdGE6Om1fYnJhbmRbdDVdLCB0MworICAgIGJwbmVxIHQzLCB0MSwgLm9w
Q2hlY2tQcml2YXRlQnJhbmRTbG93CisgICAgZGlzcGF0Y2goKQorCisub3BDaGVja1ByaXZhdGVC
cmFuZFNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfY2hlY2tfcHJpdmF0
ZV9icmFuZCkKKyAgICBkaXNwYXRjaCgpCitlbmQpCisKKworbGxpbnRPcFdpdGhNZXRhZGF0YShv
cF9zZXRfcHJpdmF0ZV9icmFuZCwgT3BTZXRQcml2YXRlQnJhbmQsIG1hY3JvIChzaXplLCBnZXQs
IGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorICAgIG1ldGFkYXRhKHQ1LCB0MikKKyAgICBn
ZXQobV9iYXNlLCB0MykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0
MywgQ2VsbFRhZywgdDAsIC5vcFNldFByaXZhdGVCcmFuZFNsb3cpCisgICAgZ2V0KG1fYnJhbmQs
IHQzKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQzLCBDZWxsVGFn
LCB0MSwgLm9wU2V0UHJpdmF0ZUJyYW5kU2xvdykKKworICAgIGxvYWRpIE9wU2V0UHJpdmF0ZUJy
YW5kOjpNZXRhZGF0YTo6bV9vbGRTdHJ1Y3R1cmVJRFt0NV0sIHQyCisgICAgYmluZXEgdDIsIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIC5vcFNldFByaXZhdGVCcmFuZFNsb3cKKworICAgIGxv
YWRwIE9wU2V0UHJpdmF0ZUJyYW5kOjpNZXRhZGF0YTo6bV9icmFuZFt0NV0sIHQzCisgICAgYnBu
ZXEgdDMsIHQxLCAub3BTZXRQcml2YXRlQnJhbmRTbG93CisKKyAgICBsb2FkaSBPcFNldFByaXZh
dGVCcmFuZDo6TWV0YWRhdGE6Om1fbmV3U3RydWN0dXJlSURbdDVdLCB0MQorICAgIHN0b3JlaSB0
MSwgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXQorICAgIHdyaXRlQmFycmllck9uT3BlcmFuZChz
aXplLCBnZXQsIG1fYmFzZSkKKyAgICBkaXNwYXRjaCgpCisKKy5vcFNldFByaXZhdGVCcmFuZFNs
b3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfc2V0X3ByaXZhdGVfYnJhbmQp
CisgICAgZGlzcGF0Y2goKQorZW5kKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IGUxMmRjMzgzYmNlNzYzZmI4
YjYxNzNiMzIxMmE2YTM1NmU2MTNlM2QuLjI3ZTc2ZDJmMjA2NWNlNzhjNDNiYTQzNDM2NWM5MzU5
ZDkxOWNiMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0xODE1LDYgKzE4MTUsNDcgQEAgbGxpbnRPcFdpdGhN
ZXRhZGF0YShvcF9wdXRfcHJpdmF0ZV9uYW1lLCBPcFB1dFByaXZhdGVOYW1lLCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXMKICAgICBkaXNwYXRjaCgpCiBlbmQpCiAKK2xsaW50T3BXaXRoTWV0YWRhdGEo
b3Bfc2V0X3ByaXZhdGVfYnJhbmQsIE9wU2V0UHJpdmF0ZUJyYW5kLCBtYWNybyAoc2l6ZSwgZ2V0
LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKKyAgICBnZXQobV9iYXNlLCB0MykKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChzaXplLCB0MywgdDAsIC5vcFNldFByaXZhdGVCcmFu
ZFNsb3cpCisgICAgZ2V0KG1fYnJhbmQsIHQzKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVD
ZWxsKHNpemUsIHQzLCB0MSwgLm9wU2V0UHJpdmF0ZUJyYW5kU2xvdykKKyAgICBtZXRhZGF0YSh0
NSwgdDIpCisgICAgbG9hZGkgT3BTZXRQcml2YXRlQnJhbmQ6Ok1ldGFkYXRhOjptX29sZFN0cnVj
dHVyZUlEW3Q1XSwgdDIKKyAgICBiaW5lcSB0MiwgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwg
Lm9wU2V0UHJpdmF0ZUJyYW5kU2xvdworCisgICAgbG9hZHAgT3BTZXRQcml2YXRlQnJhbmQ6Ok1l
dGFkYXRhOjptX2JyYW5kW3Q1XSwgdDMKKyAgICBicG5lcSB0MywgdDEsIC5vcFNldFByaXZhdGVC
cmFuZFNsb3cKKworICAgIGxvYWRpIE9wU2V0UHJpdmF0ZUJyYW5kOjpNZXRhZGF0YTo6bV9uZXdT
dHJ1Y3R1cmVJRFt0NV0sIHQxCisgICAgc3RvcmVpIHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlSURb
dDBdCisgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kKHNpemUsIGdldCwgbV9iYXNlKQorICAgIGRp
c3BhdGNoKCkKKworLm9wU2V0UHJpdmF0ZUJyYW5kU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xs
aW50X3Nsb3dfcGF0aF9zZXRfcHJpdmF0ZV9icmFuZCkKKyAgICBkaXNwYXRjaCgpCitlbmQpCisK
K2xsaW50T3BXaXRoTWV0YWRhdGEob3BfY2hlY2tfcHJpdmF0ZV9icmFuZCwgT3BDaGVja1ByaXZh
dGVCcmFuZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisg
ICAgbWV0YWRhdGEodDUsIHQyKQorICAgIGdldChtX2Jhc2UsIHQzKQorICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVDZWxsKHNpemUsIHQzLCB0MCwgLm9wQ2hlY2tQcml2YXRlQnJhbmRTbG93KQor
ICAgIGdldChtX2JyYW5kLCB0MykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChzaXpl
LCB0MywgdDEsIC5vcENoZWNrUHJpdmF0ZUJyYW5kU2xvdykKKworICAgIGxvYWRwIE9wQ2hlY2tQ
cml2YXRlQnJhbmQ6Ok1ldGFkYXRhOjptX2JyYW5kW3Q1XSwgdDMKKyAgICBicW5lcSB0MywgdDEs
IC5vcENoZWNrUHJpdmF0ZUJyYW5kU2xvdworCisgICAgbG9hZGkgT3BDaGVja1ByaXZhdGVCcmFu
ZDo6TWV0YWRhdGE6Om1fc3RydWN0dXJlSURbdDVdLCB0MgorICAgIGJpbmVxIHQyLCBKU0NlbGw6
Om1fc3RydWN0dXJlSURbdDBdLCAub3BDaGVja1ByaXZhdGVCcmFuZFNsb3cKKyAgICBkaXNwYXRj
aCgpCisKKy5vcENoZWNrUHJpdmF0ZUJyYW5kU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50
X3Nsb3dfcGF0aF9jaGVja19wcml2YXRlX2JyYW5kKQorICAgIGRpc3BhdGNoKCkKK2VuZCkKKwog
bWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIG9zckV4aXRQb2ludCkK
ICAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1lJSwgb3Bjb2RlU3RydWN0LCBt
YWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKICAgICAgICAgbWFj
cm8gY29udGlndW91c1B1dEJ5VmFsKHN0b3JlQ2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuY3BwCmluZGV4IDY0YTY2Zjc2NWM4ZjRkMjg0OTZkYTljZTZjNDRhYmIwOGFh
ODgxYjkuLjAyYjc4NzVjY2FmNmFmZjY2M2FjMWVlZjVhZGRiOGRiZDM0MDkzNzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC0yMDIsNiArMjAyLDcgQEAgRnVuY3Rp
b25NZXRhZGF0YU5vZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKAogICAgICAgICAsIG1fY29uc3Ry
dWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKQogICAgICAg
ICAsIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObykpCiAgICAgICAgICwgbV9pc0Fycm93RnVuY3Rp
b25Cb2R5RXhwcmVzc2lvbihpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKKyAgICAgICAg
LCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50KHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcml2YXRl
QnJhbmRSZXF1aXJlbWVudDo6Tm9uZSkpCiAgICAgICAgICwgbV9wYXJzZU1vZGUobW9kZSkKICAg
ICAgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQogICAgICAgICAsIG1fZW5kQ29sdW1u
KGVuZENvbHVtbikKQEAgLTIyNiw2ICsyMjcsNyBAQCBGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVu
Y3Rpb25NZXRhZGF0YU5vZGUoCiAgICAgICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCiAgICAgICAgICwgbV9uZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXI6Ok5vKSkKICAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKGlz
QXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQorICAgICAgICAsIG1fcHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpO
b25lKSkKICAgICAgICAgLCBtX3BhcnNlTW9kZShtb2RlKQogICAgICAgICAsIG1fc3RhcnRDb2x1
bW4oc3RhcnRDb2x1bW4pCiAgICAgICAgICwgbV9lbmRDb2x1bW4oZW5kQ29sdW1uKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IGVkOTA3NzUzOTA1N2Y1MzYxNjIzZmM3OWQ3
ZWJiY2I5OGMwMTdiZGYuLjRiZjkzODZmMjZmMDI5ODNiNzg4NjllNGEyNTAyNWY2MGVjOGFiMzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTcyMSw3ICs3MjEsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBlbnVtIGNsYXNzIENsYXNzRWxlbWVudFRhZyA6IHVpbnQ4X3Qg
eyBObywgSW5zdGFuY2UsIFN0YXRpYywgTGFzdFRhZyB9OwogICAgIGNsYXNzIFByb3BlcnR5Tm9k
ZSBmaW5hbCA6IHB1YmxpYyBQYXJzZXJBcmVuYUZyZWVhYmxlIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIGVudW0gVHlwZSA6IHVpbnQ4X3QgeyBDb25zdGFudCA9IDEsIEdldHRlciA9IDIsIFNldHRl
ciA9IDQsIENvbXB1dGVkID0gOCwgU2hvcnRoYW5kID0gMTYsIFNwcmVhZCA9IDMyLCBQcml2YXRl
ID0gNjQgfTsKKyAgICAgICAgZW51bSBUeXBlIDogdWludDhfdCB7IENvbnN0YW50ID0gMSwgR2V0
dGVyID0gMiwgU2V0dGVyID0gNCwgQ29tcHV0ZWQgPSA4LCBTaG9ydGhhbmQgPSAxNiwgU3ByZWFk
ID0gMzIsIFByaXZhdGVGaWVsZCA9IDY0LCBQcml2YXRlTWV0aG9kID0gMTI4IH07CiAKICAgICAg
ICAgUHJvcGVydHlOb2RlKGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSosIFR5cGUs
IFN1cGVyQmluZGluZywgQ2xhc3NFbGVtZW50VGFnKTsKICAgICAgICAgUHJvcGVydHlOb2RlKEV4
cHJlc3Npb25Ob2RlKiwgVHlwZSwgU3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcpOwpAQCAt
NzQwLDcgKzc0MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIGlzSW5zdGFuY2VD
bGFzc0ZpZWxkKCkgY29uc3QgeyByZXR1cm4gaXNJbnN0YW5jZUNsYXNzUHJvcGVydHkoKSAmJiAh
bmVlZHNTdXBlckJpbmRpbmcoKTsgfQogICAgICAgICBib29sIGlzU3RhdGljQ2xhc3NGaWVsZCgp
IGNvbnN0IHsgcmV0dXJuIGlzU3RhdGljQ2xhc3NQcm9wZXJ0eSgpICYmICFuZWVkc1N1cGVyQmlu
ZGluZygpOyB9CiAgICAgICAgIGJvb2wgaXNPdmVycmlkZGVuQnlEdXBsaWNhdGUoKSBjb25zdCB7
IHJldHVybiBtX2lzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlOyB9Ci0gICAgICAgIGJvb2wgaXNQcml2
YXRlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlICYgUHJpdmF0ZTsgfQorICAgICAgICBib29sIGlz
UHJpdmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSAmIChQcml2YXRlRmllbGQgfCBQcml2YXRl
TWV0aG9kKTsgfQogICAgICAgICBib29sIGhhc0NvbXB1dGVkTmFtZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZXhwcmVzc2lvbjsgfQogICAgICAgICBib29sIGlzQ29tcHV0ZWRDbGFzc0ZpZWxkKCkgY29u
c3QgeyByZXR1cm4gaXNDbGFzc0ZpZWxkKCkgJiYgaGFzQ29tcHV0ZWROYW1lKCk7IH0KICAgICAg
ICAgdm9pZCBzZXRJc092ZXJyaWRkZW5CeUR1cGxpY2F0ZSgpIHsgbV9pc092ZXJyaWRkZW5CeUR1
cGxpY2F0ZSA9IHRydWU7IH0KQEAgLTc2MCw3ICs3NjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgY29uc3QgSWRlbnRpZmllciogbV9uYW1lOwogICAgICAgICBFeHByZXNzaW9uTm9kZSog
bV9leHByZXNzaW9uOwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9hc3NpZ247Ci0gICAgICAg
IHVuc2lnbmVkIG1fdHlwZSA6IDc7CisgICAgICAgIHVuc2lnbmVkIG1fdHlwZTsKICAgICAgICAg
dW5zaWduZWQgbV9uZWVkc1N1cGVyQmluZGluZyA6IDE7CiAgICAgICAgIHN0YXRpY19hc3NlcnQo
MSA8PCAyID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENsYXNzRWxlbWVudFRhZzo6TGFzdFRhZyks
ICJDbGFzc0VsZW1lbnRUYWcgc2hvdWxkbid0IHVzZSBtb3JlIHRoYW4gdHdvIGJpdHMiKTsKICAg
ICAgICAgdW5zaWduZWQgbV9jbGFzc0VsZW1lbnRUYWcgOiAyOwpAQCAtODM4LDcgKzgzOCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1fc3Vic2NyaXB0SGFzQXNzaWdubWVudHM7
CiAgICAgfTsKIAotICAgIGVudW0gY2xhc3MgRG90VHlwZSB7IE5hbWUsIFByaXZhdGVGaWVsZCB9
OworICAgIGVudW0gY2xhc3MgRG90VHlwZSB7IE5hbWUsIFByaXZhdGVNZW1iZXIgfTsKICAgICBj
bGFzcyBCYXNlRG90Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgog
ICAgICAgICBCYXNlRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9k
ZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERvdFR5cGUpOwpAQCAtODQ2LDcgKzg0Niw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBFeHByZXNzaW9uTm9kZSogYmFzZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYmFzZTsgfQogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9pZGVudDsgfQogICAgICAgICBEb3RUeXBlIHR5cGUoKSBjb25zdCB7
IHJldHVybiBtX3R5cGU7IH0KLSAgICAgICAgYm9vbCBpc1ByaXZhdGVGaWVsZCgpIGNvbnN0IHsg
cmV0dXJuIG1fdHlwZSA9PSBEb3RUeXBlOjpQcml2YXRlRmllbGQ7IH0KKyAgICAgICAgYm9vbCBp
c1ByaXZhdGVNZW1iZXIoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gRG90VHlwZTo6UHJpdmF0
ZU1lbWJlcjsgfQogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWZQ
dHI8UmVnaXN0ZXJJRD4mIHRoaXNWYWx1ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRQ
cm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3Rl
cklEKiBiYXNlKTsKQEAgLTg3MCw3ICs4NzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSBudWxscHRyKSBmaW5hbDsKIAogICAgICAgICBib29sIGlzTG9jYXRpb24oKSBjb25zdCBmaW5h
bCB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIGJvb2wgaXNQcml2YXRlTG9jYXRpb24oKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX3R5cGUgPT0gRG90VHlwZTo6UHJpdmF0ZUZpZWxkOyB9Cisg
ICAgICAgIGJvb2wgaXNQcml2YXRlTG9jYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X3R5cGUgPT0gRG90VHlwZTo6UHJpdmF0ZU1lbWJlcjsgfQogICAgICAgICBib29sIGlzRG90QWNj
ZXNzb3JOb2RlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIH07CiAKQEAgLTIx
NjEsNiArMjE2MSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHNldEVjbWFOYW1l
KGNvbnN0IElkZW50aWZpZXImIGVjbWFOYW1lKSB7IG1fZWNtYU5hbWUgPSBlY21hTmFtZTsgfQog
ICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBlY21hTmFtZSgpIHsgcmV0dXJuIG1faWRlbnQuaXNF
bXB0eSgpID8gbV9lY21hTmFtZSA6IG1faWRlbnQ7IH0KIAorICAgICAgICB2b2lkIHNldFByaXZh
dGVCcmFuZFJlcXVpcmVtZW50KFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJl
cXVpcmVtZW50KSB7IG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4ocHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOyB9CisgICAgICAgIFByaXZhdGVCcmFuZFJl
cXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ+KG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOyB9CisK
ICAgICAgICAgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSgpIHsgcmV0dXJuIG1fZnVuY3Rpb25N
b2RlOyB9CiAKICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0KCkgY29uc3QgeyByZXR1cm4g
bV9mdW5jdGlvbk5hbWVTdGFydDsgfQpAQCAtMjIwOSw2ICsyMjEyLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKICAgICAgICAgdW5z
aWduZWQgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA6IDE7CiAgICAgICAgIHVuc2lnbmVk
IG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gOiAxOworICAgICAgICB1bnNpZ25lZCBt
X3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsKICAgICAgICAgU291cmNlUGFyc2VNb2RlIG1f
cGFyc2VNb2RlOwogICAgICAgICBGdW5jdGlvbk1vZGUgbV9mdW5jdGlvbk1vZGU7CiAgICAgICAg
IElkZW50aWZpZXIgbV9pZGVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNw
cAppbmRleCA3MDY3NGM0OGI2MjMyNzQ1MTUwYzk3MTAyODczMjIwZGExMzA3NTdjLi5hZDNkMTI3
NWRiZDVmOTczNGMzZjQxZjdlYzFjMjM1N2ZlOGFlZDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yODYyLDYgKzI4NjIsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVDbGFzc0V4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
Q2xhc3MoVAogICAgIGNsYXNzU2NvcGUtPnNldElzTGV4aWNhbFNjb3BlKCk7CiAgICAgY2xhc3NT
Y29wZS0+cHJldmVudFZhckRlY2xhcmF0aW9ucygpOwogICAgIGNsYXNzU2NvcGUtPnNldFN0cmlj
dE1vZGUoKTsKKyAgICBib29sIGRlY2xhcmVzUHJpdmF0ZU1ldGhvZCA9IGZhbHNlOwogICAgIG5l
eHQoKTsKIAogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocmVxdWlyZW1lbnRzICE9IEZ1bmN0aW9u
TmFtZVJlcXVpcmVtZW50czo6VW5uYW1lZCwgIkN1cnJlbnRseSwgdGhlcmUgaXMgbm8gY2FsbGVy
IHRoYXQgdXNlcyBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHM6OlVubmFtZWQgZm9yIGNsYXNzIHN5
bnRheC4iKTsKQEAgLTI5ODEsMTYgKzI5ODIsMjIgQEAgcGFyc2VNZXRob2Q6CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBQUklWQVRFTkFNRTogewogICAgICAgICAgICAgQVNTRVJU
KE9wdGlvbnM6OnVzZVByaXZhdGVDbGFzc0ZpZWxkcygpKTsKLSAgICAgICAgICAgIEpTVG9rZW4g
dG9rZW4gPSBtX3Rva2VuOwogICAgICAgICAgICAgaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVu
dDsKICAgICAgICAgICAgIGlmICghT3B0aW9uczo6dXNlUHJpdmF0ZVN0YXRpY0NsYXNzRmllbGRz
KCkpCiAgICAgICAgICAgICAgICAgZmFpbElmVHJ1ZSh0YWcgPT0gQ2xhc3NFbGVtZW50VGFnOjpT
dGF0aWMsICJTdGF0aWMgY2xhc3MgZWxlbWVudCBjYW5ub3QgYmUgcHJpdmF0ZSIpOwogICAgICAg
ICAgICAgZmFpbElmVHJ1ZShpc0dldHRlciB8fCBpc1NldHRlciwgIkNhbm5vdCBwYXJzZSBjbGFz
cyBtZXRob2Qgd2l0aCBwcml2YXRlIG5hbWUiKTsKICAgICAgICAgICAgIEFTU0VSVChpZGVudCk7
CiAgICAgICAgICAgICBuZXh0KCk7Ci0gICAgICAgICAgICBmYWlsSWZUcnVlKG1hdGNoQW5kVXBk
YXRlKE9QRU5QQVJFTiwgdG9rZW4pLCAiQ2Fubm90IHBhcnNlIGNsYXNzIG1ldGhvZCB3aXRoIHBy
aXZhdGUgbmFtZSIpOwotICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGNsYXNzU2NvcGUt
PmRlY2xhcmVQcml2YXRlTmFtZSgqaWRlbnQpICYgRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWRE
dXBsaWNhdGVEZWNsYXJhdGlvbiwgIkNhbm5vdCBkZWNsYXJlIHByaXZhdGUgZmllbGQgdHdpY2Ui
KTsKLSAgICAgICAgICAgIHR5cGUgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KHR5
cGUgfCBQcm9wZXJ0eU5vZGU6OlByaXZhdGUpOworICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnVz
ZVByaXZhdGVNZXRob2RzKCkgJiYgbWF0Y2goT1BFTlBBUkVOKSkgeworICAgICAgICAgICAgICAg
IHNlbWFudGljRmFpbElmVHJ1ZShjbGFzc1Njb3BlLT5kZWNsYXJlUHJpdmF0ZU1ldGhvZCgqaWRl
bnQpICYgRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbiwgIkNh
bm5vdCBkZWNsYXJlIHByaXZhdGUgbWV0aG9kIHR3aWNlIik7CisgICAgICAgICAgICAgICAgZGVj
bGFyZXNQcml2YXRlTWV0aG9kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB0eXBlID0gc3RhdGlj
X2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlIHwgUHJvcGVydHlOb2RlOjpQcml2YXRlTWV0
aG9kKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgZmFpbElmVHJ1ZShtYXRjaChPUEVOUEFSRU4pLCAiQ2Fubm90IHBhcnNlIGNsYXNzIG1ldGhv
ZCB3aXRoIHByaXZhdGUgbmFtZSIpOworICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGNs
YXNzU2NvcGUtPmRlY2xhcmVQcml2YXRlRmllbGQoKmlkZW50KSAmIERlY2xhcmF0aW9uUmVzdWx0
OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb24sICJDYW5ub3QgZGVjbGFyZSBwcml2YXRlIGZp
ZWxkIHR3aWNlIik7CisgICAgICAgICAgICB0eXBlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2Rl
OjpUeXBlPih0eXBlIHwgUHJvcGVydHlOb2RlOjpQcml2YXRlRmllbGQpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTMwNzUsMTAgKzMwODIsMTkg
QEAgcGFyc2VNZXRob2Q6CiAgICAgaW5mby5lbmRPZmZzZXQgPSB0b2tlbkxvY2F0aW9uKCkuZW5k
T2Zmc2V0IC0gMTsKICAgICBjb25zdW1lT3JGYWlsKENMT1NFQlJBQ0UsICJFeHBlY3RlZCBhIGNs
b3NpbmcgJ30nIGFmdGVyIGEgY2xhc3MgYm9keSIpOwogCisgICAgaWYgKGRlY2xhcmVzUHJpdmF0
ZU1ldGhvZCkgeworICAgICAgICBJZGVudGlmaWVyIHByaXZhdGVCcmFuZElkZW50aWZpZXIgPSBt
X3ZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnByaXZhdGVCcmFuZFByaXZhdGVOYW1l
KCk7CisgICAgICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJhdGlvblJlc3VsdCA9IGNs
YXNzU2NvcGUtPmRlY2xhcmVMZXhpY2FsVmFyaWFibGUoJnByaXZhdGVCcmFuZElkZW50aWZpZXIs
IHRydWUpOworICAgICAgICBBU1NFUlRfVU5VU0VEKGRlY2xhcmF0aW9uUmVzdWx0LCBkZWNsYXJh
dGlvblJlc3VsdCA9PSBEZWNsYXJhdGlvblJlc3VsdDo6VmFsaWQpOworICAgICAgICBjbGFzc1Nj
b3BlLT51c2VWYXJpYWJsZSgmcHJpdmF0ZUJyYW5kSWRlbnRpZmllciwgZmFsc2UpOworICAgICAg
ICBjbGFzc1Njb3BlLT5hZGRDbG9zZWRWYXJpYWJsZUNhbmRpZGF0ZVVuY29uZGl0aW9uYWxseShw
cml2YXRlQnJhbmRJZGVudGlmaWVyLmltcGwoKSk7CisgICAgfQorCiAgICAgaWYgKE9wdGlvbnM6
OnVzZVByaXZhdGVDbGFzc0ZpZWxkcygpKSB7CiAgICAgICAgIC8vIEZhaWwgaWYgdGhlcmUgYXJl
IG5vIHBhcmVudCBwcml2YXRlIG5hbWUgc2NvcGVzIGFuZCBhbnkgdXNlZC1idXQtdW5kZWNsYXJl
ZCBwcml2YXRlIG5hbWVzLgogICAgICAgICBzZW1hbnRpY0ZhaWxJZkZhbHNlKGNvcHlVbmRlY2xh
cmVkUHJpdmF0ZU5hbWVzVG9PdXRlclNjb3BlKCksICJDYW5ub3QgcmVmZXJlbmNlIHVuZGVjbGFy
ZWQgcHJpdmF0ZSBuYW1lcyIpOwogICAgIH0KKwogICAgIGF1dG8gY2xhc3NFeHByZXNzaW9uID0g
Y29udGV4dC5jcmVhdGVDbGFzc0V4cHIobG9jYXRpb24sIGluZm8sIGNsYXNzU2NvcGUtPmZpbmFs
aXplTGV4aWNhbEVudmlyb25tZW50KCksIGNvbnN0cnVjdG9yLCBwYXJlbnRDbGFzcywgY2xhc3NF
bGVtZW50cyk7CiAgICAgcG9wU2NvcGUoY2xhc3NTY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJl
ZVZhcmlhYmxlSW5mbyk7CiAgICAgcmV0dXJuIGNsYXNzRXhwcmVzc2lvbjsKQEAgLTUxNDgsNyAr
NTE2NCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzCiAgICAgICAgICAgICAgICAgICAgIHNl
bWFudGljRmFpbElmRmFsc2UodXNlUHJpdmF0ZU5hbWUoaWRlbnQpLCAiQ2Fubm90IHJlZmVyZW5j
ZSBwcml2YXRlIG5hbWVzIG91dHNpZGUgb2YgY2xhc3MiKTsKICAgICAgICAgICAgICAgICAgICAg
bV9wYXJzZXJTdGF0ZS5sYXN0UHJpdmF0ZU5hbWUgPSBpZGVudDsKICAgICAgICAgICAgICAgICAg
ICAgY3VycmVudFNjb3BlKCktPnVzZVZhcmlhYmxlKGlkZW50LCBmYWxzZSk7Ci0gICAgICAgICAg
ICAgICAgICAgIHR5cGUgPSBEb3RUeXBlOjpQcml2YXRlRmllbGQ7CisgICAgICAgICAgICAgICAg
ICAgIHR5cGUgPSBEb3RUeXBlOjpQcml2YXRlTWVtYmVyOwogICAgICAgICAgICAgICAgICAgICBt
X3Rva2VuLm1fdHlwZSA9IElERU5UOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICBtYXRjaE9yRmFpbChJREVOVCwgIkV4cGVjdGVkIGEgcHJvcGVydHkgbmFtZSBhZnRlciAiLCBv
cHRpb25hbENoYWluQmFzZSA/ICInPy4nIiA6ICInLiciKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5oCmluZGV4IGJlMzNjMWJlOTVlOWRhNDUwMGJhZjFiODA1OWJhMzUwODQ3YTg4
NjEuLjMwODkxOTBhYjFiNzUyZTQzM2M3YWYwNWE4MzVmMzdkMzU5MTQwMTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtNTAwLDExICs1MDAsMjggQEAgcHVibGljOgog
ICAgICAgICBtX2xleGljYWxWYXJpYWJsZXMudXNlUHJpdmF0ZU5hbWUoaWRlbnQpOwogICAgIH0K
IAotICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJlUHJpdmF0ZU5hbWUoY29uc3QgSWRl
bnRpZmllciYgaWRlbnQpCisgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmVQcml2YXRl
TWV0aG9kKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogICAgIHsKICAgICAgICAgQVNTRVJUKG1f
YWxsb3dzTGV4aWNhbERlY2xhcmF0aW9ucyk7CiAgICAgICAgIERlY2xhcmF0aW9uUmVzdWx0TWFz
ayByZXN1bHQgPSBEZWNsYXJhdGlvblJlc3VsdDo6VmFsaWQ7Ci0gICAgICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9sZXhpY2FsVmFyaWFibGVzLmRlY2xhcmVQcml2YXRlTmFtZShpZGVudCk7CisgICAg
ICAgIGJvb2wgYWRkUmVzdWx0ID0gbV9sZXhpY2FsVmFyaWFibGVzLmRlY2xhcmVQcml2YXRlTWV0
aG9kKGlkZW50KTsKKworICAgICAgICBpZiAoIWFkZFJlc3VsdCkgeworICAgICAgICAgICAgcmVz
dWx0IHw9IERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb247Cisg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgdXNlVmFyaWFi
bGUoJmlkZW50LCBmYWxzZSk7CisgICAgICAgIGFkZENsb3NlZFZhcmlhYmxlQ2FuZGlkYXRlVW5j
b25kaXRpb25hbGx5KGlkZW50LmltcGwoKSk7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9CisKKyAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyZVByaXZhdGVGaWVsZChjb25z
dCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2FsbG93c0xleGlj
YWxEZWNsYXJhdGlvbnMpOworICAgICAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgcmVzdWx0ID0g
RGVjbGFyYXRpb25SZXN1bHQ6OlZhbGlkOworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbGV4
aWNhbFZhcmlhYmxlcy5kZWNsYXJlUHJpdmF0ZUZpZWxkKGlkZW50KTsKICAgICAgICAgaWYgKCFh
ZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgIHJlc3VsdCB8PSBEZWNsYXJhdGlvblJl
c3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uOwogICAgICAgICByZXR1cm4gcmVzdWx0
OwpAQCAtOTQ0LDcgKzk2MSw3IEBAIHB1YmxpYzoKICAgICB+UGFyc2VyKCk7CiAKICAgICB0ZW1w
bGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4g
cGFyc2UoUGFyc2VyRXJyb3ImLCBjb25zdCBJZGVudGlmaWVyJiwgU291cmNlUGFyc2VNb2RlLCBQ
YXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVy
c0VuZFBvc2l0aW9uID0gV1RGOjpudWxsb3B0LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiA9
IG51bGxwdHIsIGNvbnN0IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qID0gbnVsbHB0cik7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKFBhcnNlckVycm9yJiwgY29uc3QgSWRl
bnRpZmllciYsIFNvdXJjZVBhcnNlTW9kZSwgUGFyc2luZ0NvbnRleHQsIE9wdGlvbmFsPGludD4g
ZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiA9IFdURjo6bnVsbG9wdCwg
Y29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogPSBudWxscHRyLCBjb25zdCBWZWN0b3I8SlNU
ZXh0UG9zaXRpb24+KiA9IG51bGxwdHIpOwogCiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25C
ZWZvcmVMYXN0TmV3bGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGV4ZXItPnBvc2l0aW9uQmVmb3Jl
TGFzdE5ld2xpbmUoKTsgfQogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbkJlZm9yZUxhc3RU
b2tlbigpIGNvbnN0IHsgcmV0dXJuIG1fbGV4ZXItPmxhc3RUb2tlbkxvY2F0aW9uKCk7IH0KQEAg
LTIwNzgsNyArMjA5NSw3IEBAIHByaXZhdGU6CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5
cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4KLXN0ZDo6dW5pcXVlX3B0cjxQYXJzZWRO
b2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UoUGFyc2VyRXJyb3ImIGVycm9yLCBjb25zdCBJ
ZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBQYXJzaW5n
Q29udGV4dCBwYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9y
UGFyYW1ldGVyc0VuZFBvc2l0aW9uLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRT
Y29wZVByaXZhdGVOYW1lcywgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogY2xhc3NGaWVs
ZExvY2F0aW9ucykKK3N0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2UoUGFyc2VyRXJyb3ImIGVycm9yLCBjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1l
LCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBQYXJzaW5nQ29udGV4dCBwYXJzaW5nQ29udGV4
dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9u
LCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVByaXZhdGVOYW1lcywg
Y29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogY2xhc3NGaWVsZExvY2F0aW9ucykKIHsKICAg
ICBpbnQgZXJyTGluZTsKICAgICBTdHJpbmcgZXJyTXNnOwpAQCAtMjA5Myw5ICsyMTEwLDkgQEAg
c3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJz
ZXJFcnJvciYgZXJyb3IsIGNvbnN0IEkKICAgICBBU1NFUlQobV9zb3VyY2UtPnN0YXJ0Q29sdW1u
KCkgPiBPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpKTsKICAgICB1bnNpZ25lZCBzdGFydENv
bHVtbiA9IG1fc291cmNlLT5zdGFydENvbHVtbigpLnplcm9CYXNlZEludCgpOwogCi0gICAgaWYg
KGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSAmJiBwYXJlbnRTY29wZVByaXZhdGVOYW1lcyAmJiBw
YXJlbnRTY29wZVByaXZhdGVOYW1lcy0+cHJpdmF0ZU5hbWVzU2l6ZSgpKSB7CisgICAgaWYgKGlz
RXZhbE5vZGU8UGFyc2VkTm9kZT4oKSAmJiBwYXJlbnRTY29wZVByaXZhdGVOYW1lcyAmJiBwYXJl
bnRTY29wZVByaXZhdGVOYW1lcy0+c2l6ZSgpKSB7CiAgICAgICAgIGN1cnJlbnRTY29wZSgpLT5z
ZXRJc1ByaXZhdGVOYW1lU2NvcGUoKTsKLSAgICAgICAgcGFyZW50U2NvcGVQcml2YXRlTmFtZXMt
PmNvcHlQcml2YXRlTmFtZXNUbyhjdXJyZW50U2NvcGUoKS0+bGV4aWNhbFZhcmlhYmxlcygpKTsK
KyAgICAgICAgY3VycmVudFNjb3BlKCktPmxleGljYWxWYXJpYWJsZXMoKS5hZGRQcml2YXRlTmFt
ZXNGcm9tKHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzKTsKICAgICB9CiAKICAgICBhdXRvIHBhcnNl
UmVzdWx0ID0gcGFyc2VJbm5lcihjYWxsZWVOYW1lLCBwYXJzZU1vZGUsIHBhcnNpbmdDb250ZXh0
LCBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uLCBjbGFzc0ZpZWxkTG9j
YXRpb25zKTsKQEAgLTIxODIsNyArMjE5OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2Rl
PiBwYXJzZSgKICAgICBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlID0gRGVy
aXZlZENvbnRleHRUeXBlOjpOb25lLAogICAgIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5
cGUgPSBFdmFsQ29udGV4dFR5cGU6Ok5vbmUsCiAgICAgRGVidWdnZXJQYXJzZURhdGEqIGRlYnVn
Z2VyUGFyc2VEYXRhID0gbnVsbHB0ciwKLSAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBw
YXJlbnRTY29wZVByaXZhdGVOYW1lcyA9IG51bGxwdHIsCisgICAgY29uc3QgUHJpdmF0ZU5hbWVF
bnZpcm9ubWVudCogcGFyZW50U2NvcGVQcml2YXRlTmFtZXMgPSBudWxscHRyLAogICAgIGNvbnN0
IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qIGNsYXNzRmllbGRMb2NhdGlvbnMgPSBudWxscHRyLAog
ICAgIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uID0gZmFsc2UpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKaW5kZXggNzk1MThhMzA1NGQ3ZjY1NWE4
OTc3ODYzZmE0MTlmNDNiNjg1ZDAxOS4uMWNkYWZjNTg1OTI2MDc2Y2YxM2I2MzhmYTIxNjI3ZDJm
NzU1ZGI2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJN
b2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaApA
QCAtMzcsNiArMzcsOCBAQCBlbnVtIGNsYXNzIEpTUGFyc2VyU2NyaXB0TW9kZSB7IENsYXNzaWMs
IE1vZHVsZSB9OwogCiBlbnVtIGNsYXNzIFN1cGVyQmluZGluZyB7IE5lZWRlZCwgTm90TmVlZGVk
IH07CiAKK2VudW0gY2xhc3MgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgeyBOb25lLCBOZWVkZWQg
fTsKKwogZW51bSBjbGFzcyBDb2RlR2VuZXJhdGlvbk1vZGUgOiB1aW50OF90IHsKICAgICBEZWJ1
Z2dlciA9IDEgPDwgMCwKICAgICBUeXBlUHJvZmlsZXIgPSAxIDw8IDEsCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4IDg1NjFmMTU2YmY3MzAwNGRh
YmI5ZjdkN2Y0MmFlZTZhOGVhNGE5MTkuLjllZjJlZjdiZDIxZjQzMzE5YjQ2ZDk3MjYyZTQ1YWU3
MmY1OWRhZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4
Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tl
ci5oCkBAIC0xNzksNyArMTc5LDcgQEAgcHVibGljOgogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0
ZUJvb2xlYW4oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgYm9vbCkgeyByZXR1cm4gQm9vbEV4cHI7
IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOdWxsKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYp
IHsgcmV0dXJuIE51bGxFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQnJhY2tldEFj
Y2Vzcyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5
cGUsIGJvb2wsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEJyYWNrZXRFeHByOyB9Ci0gICAgRXhw
cmVzc2lvblR5cGUgY3JlYXRlRG90QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25UeXBlLCBjb25zdCBJZGVudGlmaWVyKiwgRG90VHlwZSB0eXBlLCBpbnQsIGludCwgaW50
KSB7IHJldHVybiB0eXBlID09IERvdFR5cGU6OlByaXZhdGVGaWVsZCA/IFByaXZhdGVEb3RFeHBy
IDogRG90RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZURvdEFjY2Vzcyhjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgY29uc3QgSWRlbnRpZmllciosIERvdFR5
cGUgdHlwZSwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gdHlwZSA9PSBEb3RUeXBlOjpQcml2YXRl
TWVtYmVyID8gUHJpdmF0ZURvdEV4cHIgOiBEb3RFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUg
Y3JlYXRlUmVnRXhwKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImIHBh
dHRlcm4sIGNvbnN0IElkZW50aWZpZXImIGZsYWdzLCBpbnQpIHsgcmV0dXJuIFlhcnI6Omhhc0Vy
cm9yKFlhcnI6OmNoZWNrU3ludGF4KHBhdHRlcm4uc3RyaW5nKCksIGZsYWdzLnN0cmluZygpKSkg
PyAwIDogUmVnRXhwRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU5ld0V4cHIoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIGludCwgaW50LCBpbnQsIGludCkg
eyByZXR1cm4gTmV3RXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU5ld0V4cHIoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIGludCwgaW50KSB7IHJldHVybiBO
ZXdFeHByOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Zhcmlh
YmxlRW52aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJs
ZUVudmlyb25tZW50LmNwcAppbmRleCA4MWE5YzkzOGRjMTFhNDIwMGRjYzQyODZjZjM0ZTc1ZTUy
NDY4YzY1Li4zZWM1N2MzZTJhYmE1ZGIzN2I3ZmI2MmUzYzlmMGExNjNmYjVkZTY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5j
cHAKQEAgLTEwNCw2ICsxMDQsNDAgQEAgdm9pZCBWYXJpYWJsZUVudmlyb25tZW50OjptYXJrVmFy
aWFibGVBc0V4cG9ydGVkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4KICAgICBmaW5k
UmVzdWx0LT52YWx1ZS5zZXRJc0V4cG9ydGVkKCk7CiB9CiAKK2Jvb2wgVmFyaWFibGVFbnZpcm9u
bWVudDo6ZGVjbGFyZVByaXZhdGVNZXRob2QoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBs
PiYgaWRlbnRpZmllcikKK3sKKyAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgIG1fcmFyZURh
dGEgPSBtYWtlVW5pcXVlPFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhPigpOworCisgICAg
YXV0byBmaW5kUmVzdWx0ID0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZmluZChpZGVudGlm
aWVyKTsKKworICAgIGlmIChmaW5kUmVzdWx0ID09IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVz
LmVuZCgpKSB7CisgICAgICAgIFByaXZhdGVOYW1lRW50cnkgbWV0YShQcml2YXRlTmFtZUVudHJ5
OjpUcmFpdHM6OklzRGVjbGFyZWQgfCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzTWV0aG9k
KTsKKworICAgICAgICBhdXRvIGVudHJ5ID0gVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCk7Cisg
ICAgICAgIGVudHJ5LnNldElzUHJpdmF0ZU1ldGhvZCgpOworICAgICAgICBlbnRyeS5zZXRJc0Nv
bnN0KCk7CisgICAgICAgIGVudHJ5LnNldElzQ2FwdHVyZWQoKTsKKyAgICAgICAgbV9tYXAuYWRk
KGlkZW50aWZpZXIsIGVudHJ5KTsKKworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmFyZURh
dGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChpZGVudGlmaWVyLCBtZXRhKTsKKyAgICAgICAgcmV0dXJu
IGFkZFJlc3VsdC5pc05ld0VudHJ5OworICAgIH0KKworICAgIGlmIChmaW5kUmVzdWx0LT52YWx1
ZS5pc0RlY2xhcmVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsgLy8gRXJyb3I6IGRlY2xhcmlu
ZyBhIGR1cGxpY2F0ZSBwcml2YXRlIG5hbWUuCisKKyAgICBhdXRvIGVudHJ5ID0gVmFyaWFibGVF
bnZpcm9ubWVudEVudHJ5KCk7CisgICAgZW50cnkuc2V0SXNQcml2YXRlTWV0aG9kKCk7CisgICAg
ZW50cnkuc2V0SXNDb25zdCgpOworICAgIGVudHJ5LnNldElzQ2FwdHVyZWQoKTsKKyAgICBtX21h
cC5hZGQoaWRlbnRpZmllciwgZW50cnkpOworCisgICAgLy8gaXQgd2FzIHByZXZpb3VzbHkgdXNl
ZCwgbWFyayBpdCBhcyBkZWNsYXJlZC4KKyAgICBQcml2YXRlTmFtZUVudHJ5IG1ldGEoUHJpdmF0
ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc0RlY2xhcmVkIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRz
OjpJc1VzZWQgfCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzTWV0aG9kKTsKKyAgICBhdXRv
IGFkZFJlc3VsdCA9IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLnNldChpZGVudGlmaWVyLCBt
ZXRhKTsKKyAgICByZXR1cm4gIWFkZFJlc3VsdC5pc05ld0VudHJ5OworfQogCiB2b2lkIENvbXBh
Y3RURFpFbnZpcm9ubWVudDo6c29ydENvbXBhY3QoQ29tcGFjdCYgY29tcGFjdCkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKaW5k
ZXggNTJlOWFhNDY1ODM3NTY5MzA4MWIzNzc3ZTljN2FiN2NhOTFiZWU0My4uZjZkMzU4YjE5NzAw
MmQyMGRlOTdmNDA2OTNjMzNmNjlkNTU3MzgyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKQEAgLTQ1LDcgKzQ1LDggQEAgcHVi
bGljOgogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9iaXRzICYgSXNGdW5jdGlvbjsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1BhcmFtZXRl
cigpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzUGFyYW1ldGVyOyB9CiAgICAgQUxXQVlTX0lO
TElORSBib29sIGlzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlKCkgY29uc3QgeyByZXR1cm4g
bV9iaXRzICYgSXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGU7IH0KLSAgICBBTFdBWVNfSU5M
SU5FIGJvb2wgaXNQcml2YXRlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzUHJpdmF0
ZU5hbWU7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQcml2YXRlRmllbGQoKSBjb25zdCB7
IHJldHVybiBtX2JpdHMgJiBJc1ByaXZhdGVGaWVsZDsgfQorICAgIEFMV0FZU19JTkxJTkUgYm9v
bCBpc1ByaXZhdGVNZXRob2QoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1ByaXZhdGVNZXRo
b2Q7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0NhcHR1cmVkKCkgeyBtX2JpdHMg
fD0gSXNDYXB0dXJlZDsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0NvbnN0KCkgeyBt
X2JpdHMgfD0gSXNDb25zdDsgfQpAQCAtNTcsNyArNTgsOCBAQCBwdWJsaWM6CiAgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldElzRnVuY3Rpb24oKSB7IG1fYml0cyB8PSBJc0Z1bmN0aW9uOyB9CiAg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzUGFyYW1ldGVyKCkgeyBtX2JpdHMgfD0gSXNQYXJh
bWV0ZXI7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNTbG9wcHlNb2RlSG9pc3RpbmdD
YW5kaWRhdGUoKSB7IG1fYml0cyB8PSBJc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZTsgfQot
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1ByaXZhdGVOYW1lKCkgeyBtX2JpdHMgfD0gSXNQ
cml2YXRlTmFtZTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1ByaXZhdGVGaWVsZCgp
IHsgbV9iaXRzIHw9IElzUHJpdmF0ZUZpZWxkOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dElzUHJpdmF0ZU1ldGhvZCgpIHsgbV9iaXRzIHw9IElzUHJpdmF0ZU1ldGhvZDsgfQogCiAgICAg
QUxXQVlTX0lOTElORSB2b2lkIGNsZWFySXNWYXIoKSB7IG1fYml0cyAmPSB+SXNWYXI7IH0KIApA
QCAtODAsNyArODIsOCBAQCBwcml2YXRlOgogICAgICAgICBJc0Z1bmN0aW9uID0gMSA8PCA3LAog
ICAgICAgICBJc1BhcmFtZXRlciA9IDEgPDwgOCwKICAgICAgICAgSXNTbG9wcHlNb2RlSG9pc3Rp
bmdDYW5kaWRhdGUgPSAxIDw8IDksCi0gICAgICAgIElzUHJpdmF0ZU5hbWUgPSAxIDw8IDEwLAor
ICAgICAgICBJc1ByaXZhdGVGaWVsZCA9IDEgPDwgMTAsCisgICAgICAgIElzUHJpdmF0ZU1ldGhv
ZCA9IDEgPDwgMTEsCiAgICAgfTsKICAgICB1aW50MTZfdCBtX2JpdHMgeyAwIH07CiB9OwpAQCAt
OTAsMTEgKzkzLDE2IEBAIHN0cnVjdCBWYXJpYWJsZUVudmlyb25tZW50RW50cnlIYXNoVHJhaXRz
IDogSGFzaFRyYWl0czxWYXJpYWJsZUVudmlyb25tZW50RW50cnk+CiB9OwogCiBzdHJ1Y3QgUHJp
dmF0ZU5hbWVFbnRyeSB7CisgICAgZnJpZW5kIGNsYXNzIENhY2hlZFByaXZhdGVOYW1lRW50cnk7
CisKIHB1YmxpYzoKICAgICBQcml2YXRlTmFtZUVudHJ5KHVpbnQxNl90IHRyYWl0cyA9IDApIHsg
bV9iaXRzID0gdHJhaXRzOyB9CiAKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNVc2VkKCkgY29u
c3QgeyByZXR1cm4gbV9iaXRzICYgSXNVc2VkOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlz
RGVjbGFyZWQoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc0RlY2xhcmVkOyB9CisgICAgQUxX
QVlTX0lOTElORSBib29sIGlzTWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNNZXRo
b2Q7IH0KKworICAgIGJvb2wgaXNQcml2YXRlTWV0aG9kT3JBY2Vzc29yKCkgY29uc3QgeyByZXR1
cm4gaXNNZXRob2QoKTsgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzVXNlZCgpIHsg
bV9iaXRzIHw9IElzVXNlZDsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0RlY2xhcmVk
KCkgeyBtX2JpdHMgfD0gSXNEZWNsYXJlZDsgfQpAQCAtMTA3LDggKzExNSwxMCBAQCBwdWJsaWM6
CiAgICAgfQogCiAgICAgZW51bSBUcmFpdHMgOiB1aW50MTZfdCB7CisgICAgICAgIE5vbmUgPSAw
LAogICAgICAgICBJc1VzZWQgPSAxIDw8IDAsCiAgICAgICAgIElzRGVjbGFyZWQgPSAxIDw8IDEs
CisgICAgICAgIElzTWV0aG9kID0gMSA8PCAyLAogICAgIH07CiAKIHByaXZhdGU6CkBAIC0xMTYs
MTUgKzEyNiwxOCBAQCBwcml2YXRlOgogfTsKIAogc3RydWN0IFByaXZhdGVOYW1lRW50cnlIYXNo
VHJhaXRzIDogSGFzaFRyYWl0czxQcml2YXRlTmFtZUVudHJ5PiB7Ci0gICAgc3RhdGljIGNvbnN0
IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBuZWVkc0Rlc3RydWN0aW9uID0gZmFsc2U7CiB9OwogCit0eXBlZGVmIEhhc2hNYXA8UGFja2Vk
UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgUHJpdmF0ZU5hbWVFbnRyeSwgSWRlbnRpZmllclJl
cEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1l
RW50cnlIYXNoVHJhaXRzPiBQcml2YXRlTmFtZUVudmlyb25tZW50OworCiBjbGFzcyBWYXJpYWJs
ZUVudmlyb25tZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHByaXZhdGU6CiAg
ICAgdHlwZWRlZiBIYXNoTWFwPFBhY2tlZFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIFZhcmlh
YmxlRW52aXJvbm1lbnRFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRy
PFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeUhhc2hUcmFpdHM+
IE1hcDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8UGFja2VkUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBs
PiwgUHJpdmF0ZU5hbWVFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRy
PFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnlIYXNoVHJhaXRzPiBQcml2YXRl
TmFtZXM7CisKIHB1YmxpYzoKKwogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQoKSB7IH0KICAgICBW
YXJpYWJsZUVudmlyb25tZW50KFZhcmlhYmxlRW52aXJvbm1lbnQmJiBvdGhlcikKICAgICAgICAg
OiBtX21hcChXVEZNb3ZlKG90aGVyLm1fbWFwKSkKQEAgLTE0Niw2ICsxNTksMTYgQEAgcHVibGlj
OgogICAgIEFMV0FZU19JTkxJTkUgTWFwOjpjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJl
dHVybiBtX21hcC5lbmQoKTsgfQogICAgIEFMV0FZU19JTkxJTkUgTWFwOjpBZGRSZXN1bHQgYWRk
KGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpIHsgcmV0dXJuIG1f
bWFwLmFkZChpZGVudGlmaWVyLCBWYXJpYWJsZUVudmlyb25tZW50RW50cnkoKSk7IH0KICAgICBB
TFdBWVNfSU5MSU5FIE1hcDo6QWRkUmVzdWx0IGFkZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlm
aWVyKSB7IHJldHVybiBhZGQoaWRlbnRpZmllci5pbXBsKCkpOyB9CisKKyAgICBBTFdBWVNfSU5M
SU5FIFByaXZhdGVOYW1lRW52aXJvbm1lbnQ6OkFkZFJlc3VsdCBhZGRQcml2YXRlTmFtZShjb25z
dCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBhZGRQcml2YXRlTmFtZShpZGVudGlm
aWVyLmltcGwoKSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIFByaXZhdGVOYW1lRW52aXJvbm1lbnQ6
OkFkZFJlc3VsdCBhZGRQcml2YXRlTmFtZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+
JiBpZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICAg
ICAgbV9yYXJlRGF0YSA9IG1ha2VVbmlxdWU8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+
KCk7CisKKyAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChpZGVu
dGlmaWVyLCBQcml2YXRlTmFtZUVudHJ5KCkpOworICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUg
dW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKSArIHByaXZhdGVOYW1l
c1NpemUoKTsgfQogICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgbWFwU2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbWFwLnNpemUoKTsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBjb250YWlucyhj
b25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKSBjb25zdCB7IHJldHVy
biBtX21hcC5jb250YWlucyhpZGVudGlmaWVyKTsgfQpAQCAtMTY0LDE3ICsxODcsMjAgQEAgcHVi
bGljOgogICAgIGJvb2wgaXNFdmVyeXRoaW5nQ2FwdHVyZWQoKSBjb25zdCB7IHJldHVybiBtX2lz
RXZlcnl0aGluZ0NhcHR1cmVkOyB9CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4g
IW1fbWFwLnNpemUoKTsgfQogCi0gICAgdXNpbmcgUHJpdmF0ZU5hbWVzUmFuZ2UgPSBXVEY6Okl0
ZXJhdG9yUmFuZ2U8UHJpdmF0ZU5hbWVzOjppdGVyYXRvcj47CisgICAgdXNpbmcgUHJpdmF0ZU5h
bWVzUmFuZ2UgPSBXVEY6Okl0ZXJhdG9yUmFuZ2U8UHJpdmF0ZU5hbWVFbnZpcm9ubWVudDo6aXRl
cmF0b3I+OwogCi0gICAgQUxXQVlTX0lOTElORSBNYXA6OkFkZFJlc3VsdCBkZWNsYXJlUHJpdmF0
ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyByZXR1cm4gZGVjbGFyZVByaXZh
dGVOYW1lKGlkZW50aWZpZXIuaW1wbCgpKTsgfQorICAgIEFMV0FZU19JTkxJTkUgTWFwOjpBZGRS
ZXN1bHQgZGVjbGFyZVByaXZhdGVGaWVsZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7
IHJldHVybiBkZWNsYXJlUHJpdmF0ZUZpZWxkKGlkZW50aWZpZXIuaW1wbCgpKTsgfQogICAgIEFM
V0FZU19JTkxJTkUgdm9pZCB1c2VQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudGlm
aWVyKSB7IHVzZVByaXZhdGVOYW1lKGlkZW50aWZpZXIuaW1wbCgpKTsgfQogCi0gICAgTWFwOjpB
ZGRSZXN1bHQgZGVjbGFyZVByaXZhdGVOYW1lKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1w
bD4mIGlkZW50aWZpZXIpCisgICAgYm9vbCBkZWNsYXJlUHJpdmF0ZU1ldGhvZChjb25zdCBJZGVu
dGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBkZWNsYXJlUHJpdmF0ZU1ldGhvZChpZGVudGlm
aWVyLmltcGwoKSk7IH0KKyAgICBib29sIGRlY2xhcmVQcml2YXRlTWV0aG9kKGNvbnN0IFJlZlB0
cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpOworCisgICAgTWFwOjpBZGRSZXN1bHQg
ZGVjbGFyZVByaXZhdGVGaWVsZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVu
dGlmaWVyKQogICAgIHsKICAgICAgICAgYXV0byYgbWV0YSA9IGdldE9yQWRkUHJpdmF0ZU5hbWUo
aWRlbnRpZmllci5nZXQoKSk7CiAgICAgICAgIG1ldGEuc2V0SXNEZWNsYXJlZCgpOwogICAgICAg
ICBhdXRvIGVudHJ5ID0gVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCk7Ci0gICAgICAgIGVudHJ5
LnNldElzUHJpdmF0ZU5hbWUoKTsKKyAgICAgICAgZW50cnkuc2V0SXNQcml2YXRlRmllbGQoKTsK
ICAgICAgICAgZW50cnkuc2V0SXNDb25zdCgpOwogICAgICAgICBlbnRyeS5zZXRJc0NhcHR1cmVk
KCk7CiAgICAgICAgIHJldHVybiBtX21hcC5hZGQoaWRlbnRpZmllciwgZW50cnkpOwpAQCAtMjAx
LDYgKzIyNywyNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX3ByaXZh
dGVOYW1lcy5zaXplKCk7CiAgICAgfQogCisgICAgQUxXQVlTX0lOTElORSBjb25zdCBQcml2YXRl
TmFtZUVudmlyb25tZW50KiBwcml2YXRlTmFtZUVudmlyb25tZW50KCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICByZXR1cm4gJm1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzOworICAgIH0KKworICAgIEFM
V0FZU19JTkxJTkUgYm9vbCBoYXNQcml2YXRlTWV0aG9kT3JBY2Nlc3NvcigpIGNvbnN0CisgICAg
eworICAgICAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAgICAgZm9yIChhdXRvIGVudHJ5IDogcHJpdmF0ZU5hbWVzKCkpIHsKKyAgICAgICAgICAg
IGlmIChlbnRyeS52YWx1ZS5pc1ByaXZhdGVNZXRob2RPckFjZXNzb3IoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaGFzUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRp
ZmllciYgaWRlbnRpZmllcikKICAgICB7CiAgICAgICAgIGlmICghbV9yYXJlRGF0YSkKQEAgLTIy
Miw2ICsyNjgsMjAgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCisgICAgQUxXQVlTX0lO
TElORSB2b2lkIGFkZFByaXZhdGVOYW1lc0Zyb20oY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVu
dCogcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCkKKyAgICB7CisgICAgICAgIGlmICghcHJpdmF0ZU5h
bWVFbnZpcm9ubWVudCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoIW1fcmFy
ZURhdGEpCisgICAgICAgICAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxWYXJpYWJsZUVudmly
b25tZW50OjpSYXJlRGF0YT4oKTsKKworICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiAqcHJpdmF0
ZU5hbWVFbnZpcm9ubWVudCkgeworICAgICAgICAgICAgQVNTRVJUKGVudHJ5LnZhbHVlLmlzRGVj
bGFyZWQoKSk7CisgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoZW50
cnkua2V5LCBlbnRyeS52YWx1ZSk7CisgICAgICAgIH0KKyAgICB9CisKICAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgY29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXNUbyhWYXJpYWJsZUVudmlyb25tZW50
JiBvdXRlcikgY29uc3QgewogICAgICAgICAvLyBVc2VkIGJ5IHRoZSBQYXJzZXIgdG8gdHJhbnNm
ZXIgcmVjb3JkZWQgdXNlcyBvZiBQcml2YXRlTmFtZXMgZnJvbSBhbgogICAgICAgICAvLyBpbm5l
ciBQcml2YXRlTmFtZUVudmlyb25tZW50IGludG8gYW4gb3V0ZXIgb25lLCBpbiBjYXNlIGEgUE5F
IGlzIHVzZWQKQEAgLTI0NCw3ICszMDQsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICAgICAg
UmFyZURhdGEoY29uc3QgUmFyZURhdGEmKSA9IGRlZmF1bHQ7CiAgICAgICAgIFJhcmVEYXRhJiBv
cGVyYXRvcj0oY29uc3QgUmFyZURhdGEmKSA9IGRlZmF1bHQ7Ci0gICAgICAgIFByaXZhdGVOYW1l
cyBtX3ByaXZhdGVOYW1lczsKKyAgICAgICAgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCBtX3ByaXZh
dGVOYW1lczsKICAgICB9OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCmluZGV4IGNmZGM5ZWRiMDU1YTgzMTkwMTdhODkzYzRlYjY1
ZDQ2NThhYmQ0OGEuLjJiYjMwZDU3OTUwM2IzMjMxNWQ0YmU1YTNlNzkyMzg0MTAyYzcwZWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTk5
NCw2ICs5OTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYml0VmVjdG9ycy5lbmNvZGUoZW5jb2Rl
ciwgcmFyZURhdGEubV9iaXRWZWN0b3JzKTsKICAgICAgICAgbV9jb25zdGFudElkZW50aWZpZXJT
ZXRzLmVuY29kZShlbmNvZGVyLCByYXJlRGF0YS5tX2NvbnN0YW50SWRlbnRpZmllclNldHMpOwog
ICAgICAgICBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyID0gcmFyZURhdGEubV9uZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplcjsKKyAgICAgICAgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9
IHJhcmVEYXRhLm1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ7CiAgICAgfQogCiAgICAgVW5saW5r
ZWRDb2RlQmxvY2s6OlJhcmVEYXRhKiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikgY29uc3QKQEAg
LTEwMDgsNiArMTAwOSw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9iaXRWZWN0b3JzLmRlY29kZShk
ZWNvZGVyLCByYXJlRGF0YS0+bV9iaXRWZWN0b3JzKTsKICAgICAgICAgbV9jb25zdGFudElkZW50
aWZpZXJTZXRzLmRlY29kZShkZWNvZGVyLCByYXJlRGF0YS0+bV9jb25zdGFudElkZW50aWZpZXJT
ZXRzKTsKICAgICAgICAgcmFyZURhdGEtPm1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSBt
X25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOworICAgICAgICByYXJlRGF0YS0+bV9wcml2YXRl
QnJhbmRSZXF1aXJlbWVudCA9IG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ7CiAgICAgICAgIHJl
dHVybiByYXJlRGF0YTsKICAgICB9CiAKQEAgLTEwMjEsOCArMTAyMywxMSBAQCBwcml2YXRlOgog
ICAgIENhY2hlZFZlY3RvcjxDYWNoZWRCaXRWZWN0b3I+IG1fYml0VmVjdG9yczsKICAgICBDYWNo
ZWRWZWN0b3I8Q2FjaGVkQ29uc3RhbnRJZGVudGlmaWVyU2V0RW50cnk+IG1fY29uc3RhbnRJZGVu
dGlmaWVyU2V0czsKICAgICB1bnNpZ25lZCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIDog
MTsKKyAgICB1bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsKIH07CiAKK3R5
cGVkZWYgQ2FjaGVkSGFzaE1hcDxDYWNoZWRSZWZQdHI8Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGws
IFVuaXF1ZWRTdHJpbmdJbXBsLCBXVEY6OlBhY2tlZFB0clRyYWl0czxVbmlxdWVkU3RyaW5nSW1w
bD4+LCBQcml2YXRlTmFtZUVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQ
dHI8VW5pcXVlZFN0cmluZ0ltcGw+PiwgUHJpdmF0ZU5hbWVFbnRyeUhhc2hUcmFpdHM+IENhY2hl
ZFByaXZhdGVOYW1lRW52aXJvbm1lbnQ7CisKIGNsYXNzIENhY2hlZFZhcmlhYmxlRW52aXJvbm1l
bnRSYXJlRGF0YSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFy
ZURhdGE+IHsKIHB1YmxpYzoKICAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YSYgcmFyZURhdGEpCkBAIC0xMDM2LDcgKzEw
NDEsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIENhY2hlZEhhc2hNYXA8Q2Fj
aGVkUmVmUHRyPENhY2hlZFVuaXF1ZWRTdHJpbmdJbXBsLCBVbmlxdWVkU3RyaW5nSW1wbCwgV1RG
OjpQYWNrZWRQdHJUcmFpdHM8VW5pcXVlZFN0cmluZ0ltcGw+PiwgUHJpdmF0ZU5hbWVFbnRyeSwg
SWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4s
IFByaXZhdGVOYW1lRW50cnlIYXNoVHJhaXRzPiBtX3ByaXZhdGVOYW1lczsKKyAgICBDYWNoZWRQ
cml2YXRlTmFtZUVudmlyb25tZW50IG1fcHJpdmF0ZU5hbWVzOwogfTsKIAogY2xhc3MgQ2FjaGVk
VmFyaWFibGVFbnZpcm9ubWVudCA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8VmFyaWFibGVFbnZpcm9u
bWVudD4gewpAQCAtMTIxMyw3ICsxMjE4LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToK
LSAgICBDYWNoZWRIYXNoU2V0PENhY2hlZFJlZlB0cjxDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbD4s
IElkZW50aWZpZXJSZXBIYXNoPiBtX3ByaXZhdGVOYW1lczsKKyAgICBDYWNoZWRIYXNoTWFwPENh
Y2hlZFJlZlB0cjxDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbCwgVW5pcXVlZFN0cmluZ0ltcGwsIFdU
Rjo6UGFja2VkUHRyVHJhaXRzPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnks
IElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+
LCBQcml2YXRlTmFtZUVudHJ5SGFzaFRyYWl0cz4gbV9wcml2YXRlTmFtZXM7CiB9OwogCiBjbGFz
cyBDYWNoZWRTeW1ib2xUYWJsZSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8U3ltYm9sVGFibGU+IHsK
QEAgLTE3OTAsNiArMTc5NSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fY2xhc3NTb3Vy
Y2UuZW5jb2RlKGVuY29kZXIsIHJhcmVEYXRhLm1fY2xhc3NTb3VyY2UpOwogICAgICAgICBtX3Bh
cmVudFNjb3BlVERaVmFyaWFibGVzLmVuY29kZShlbmNvZGVyLCByYXJlRGF0YS5tX3BhcmVudFNj
b3BlVERaVmFyaWFibGVzKTsKKyAgICAgICAgbV9wYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50
LmVuY29kZShlbmNvZGVyLCByYXJlRGF0YS5tX3BhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQp
OwogICAgIH0KIAogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpSYXJlRGF0YSogZGVj
b2RlKERlY29kZXImIGRlY29kZXIpIGNvbnN0CkBAIC0xNzk3LDEyICsxODAzLDE0IEBAIHB1Ymxp
YzoKICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlJhcmVEYXRhKiByYXJlRGF0
YSA9IG5ldyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6UmFyZURhdGEgeyB9OwogICAgICAg
ICBtX2NsYXNzU291cmNlLmRlY29kZShkZWNvZGVyLCByYXJlRGF0YS0+bV9jbGFzc1NvdXJjZSk7
CiAgICAgICAgIG1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXMuZGVjb2RlKGRlY29kZXIsIHJhcmVE
YXRhLT5tX3BhcmVudFNjb3BlVERaVmFyaWFibGVzKTsKKyAgICAgICAgbV9wYXJlbnRQcml2YXRl
TmFtZUVudmlyb25tZW50LmRlY29kZShkZWNvZGVyLCByYXJlRGF0YS0+bV9wYXJlbnRQcml2YXRl
TmFtZUVudmlyb25tZW50KTsKICAgICAgICAgcmV0dXJuIHJhcmVEYXRhOwogICAgIH0KIAogcHJp
dmF0ZToKICAgICBDYWNoZWRTb3VyY2VDb2RlV2l0aG91dFByb3ZpZGVyIG1fY2xhc3NTb3VyY2U7
CiAgICAgQ2FjaGVkUmVmUHRyPENhY2hlZFREWkVudmlyb25tZW50TGluaz4gbV9wYXJlbnRTY29w
ZVREWlZhcmlhYmxlczsKKyAgICBDYWNoZWRQcml2YXRlTmFtZUVudmlyb25tZW50IG1fcGFyZW50
UHJpdmF0ZU5hbWVFbnZpcm9ubWVudDsKIH07CiAKIGNsYXNzIENhY2hlZEZ1bmN0aW9uRXhlY3V0
YWJsZSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+IHsK
QEAgLTE4MzgsNiArMTg0Niw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBzdXBlckJpbmRpbmco
KSBjb25zdCB7IHJldHVybiBtX3N1cGVyQmluZGluZzsgfQogICAgIHVuc2lnbmVkIGRlcml2ZWRD
b250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVyaXZlZENvbnRleHRUeXBlOyB9CiAgICAg
dW5zaWduZWQgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSBjb25zdCB7IHJldHVybiBtX25l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOyB9CisgICAgdW5zaWduZWQgcHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50OyB9CiAK
ICAgICBJZGVudGlmaWVyIG5hbWUoRGVjb2RlciYgZGVjb2RlcikgY29uc3QgeyByZXR1cm4gbV9u
YW1lLmRlY29kZShkZWNvZGVyKTsgfQogICAgIElkZW50aWZpZXIgZWNtYU5hbWUoRGVjb2RlciYg
ZGVjb2RlcikgY29uc3QgeyByZXR1cm4gbV9lY21hTmFtZS5kZWNvZGUoZGVjb2Rlcik7IH0KQEAg
LTE4NjYsNyArMTg3NSw4IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9wYXJhbWV0ZXJzU3Rh
cnRPZmZzZXQgOiAzMTsKICAgICB1bnNpZ25lZCBtX3R5cGVQcm9maWxpbmdTdGFydE9mZnNldDsK
ICAgICB1bnNpZ25lZCBtX3R5cGVQcm9maWxpbmdFbmRPZmZzZXQ7Ci0gICAgdW5zaWduZWQgbV9w
YXJhbWV0ZXJDb3VudDsKKyAgICB1bnNpZ25lZCBtX3BhcmFtZXRlckNvdW50OjMxOworICAgIHVu
c2lnbmVkIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgOiAxOwogICAgIFNvdXJjZVBhcnNlTW9k
ZSBtX3NvdXJjZVBhcnNlTW9kZTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7
CiAgICAgdW5zaWduZWQgbV9mdW5jdGlvbk1vZGUgOiAyOyAvLyBGdW5jdGlvbk1vZGUKQEAgLTE5
MjMsNyArMTkzMyw2IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBpc0NsYXNzQ29udGV4dCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNDbGFzc0NvbnRleHQ7IH0KICAgICB1bnNpZ25lZCBjb25zdHJ1Y3Rv
cktpbmQoKSBjb25zdCB7IHJldHVybiBtX2NvbnN0cnVjdG9yS2luZDsgfQogICAgIHVuc2lnbmVk
IGRlcml2ZWRDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVyaXZlZENvbnRleHRUeXBl
OyB9Ci0gICAgdW5zaWduZWQgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSBjb25zdCB7IHJl
dHVybiBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOyB9CiAgICAgdW5zaWduZWQgZXZhbENv
bnRleHRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9ldmFsQ29udGV4dFR5cGU7IH0KICAgICB1bnNp
Z25lZCBoYXNUYWlsQ2FsbHMoKSBjb25zdCB7IHJldHVybiBtX2hhc1RhaWxDYWxsczsgfQogICAg
IHVuc2lnbmVkIGhhc0NoZWNrcG9pbnRzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNDaGVja3BvaW50
czsgfQpAQCAtMTk1NSw3ICsxOTY0LDYgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2lzQ2xh
c3NDb250ZXh0IDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CiAgICAg
dW5zaWduZWQgbV9kZXJpdmVkQ29udGV4dFR5cGUgOiAyOwotICAgIHVuc2lnbmVkIG1fbmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIgOiAxOwogICAgIHVuc2lnbmVkIG1fZXZhbENvbnRleHRUeXBl
IDogMjsKICAgICB1bnNpZ25lZCBtX2hhc1RhaWxDYWxscyA6IDE7CiAgICAgdW5zaWduZWQgbV9j
b2RlVHlwZSA6IDI7CkBAIC0yMjM2LDYgKzIyNDQsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgQ2Fj
aGVkRnVuY3Rpb25FeGVjdXRhYmxlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVW5s
aQogICAgIG1fc3VwZXJCaW5kaW5nID0gZXhlY3V0YWJsZS5tX3N1cGVyQmluZGluZzsKICAgICBt
X2Rlcml2ZWRDb250ZXh0VHlwZSA9IGV4ZWN1dGFibGUubV9kZXJpdmVkQ29udGV4dFR5cGU7CiAg
ICAgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9IGV4ZWN1dGFibGUubV9uZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplcjsKKyAgICBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID0gZXhlY3V0
YWJsZS5tX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50OwogCiAgICAgbV9yYXJlRGF0YS5lbmNvZGUo
ZW5jb2RlciwgZXhlY3V0YWJsZS5tX3JhcmVEYXRhLmdldCgpKTsKIApAQCAtMjI3Nyw2ICsyMjg2
LDcgQEAgQUxXQVlTX0lOTElORSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUoRGVjb2RlciYgZGUKICAgICAsIG1fdHlwZVByb2ZpbGluZ1N0YXJ0
T2Zmc2V0KGNhY2hlZEV4ZWN1dGFibGUudHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KCkpCiAgICAg
LCBtX3R5cGVQcm9maWxpbmdFbmRPZmZzZXQoY2FjaGVkRXhlY3V0YWJsZS50eXBlUHJvZmlsaW5n
RW5kT2Zmc2V0KCkpCiAgICAgLCBtX3BhcmFtZXRlckNvdW50KGNhY2hlZEV4ZWN1dGFibGUucGFy
YW1ldGVyQ291bnQoKSkKKyAgICAsIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoY2FjaGVkRXhl
Y3V0YWJsZS5wcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpKQogICAgICwgbV9mZWF0dXJlcyhjYWNo
ZWRFeGVjdXRhYmxlLmZlYXR1cmVzKCkpCiAgICAgLCBtX3NvdXJjZVBhcnNlTW9kZShjYWNoZWRF
eGVjdXRhYmxlLnNvdXJjZVBhcnNlTW9kZSgpKQogICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoY2Fj
aGVkRXhlY3V0YWJsZS5jb25zdHJ1Y3RvcktpbmQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db2RlQ2FjaGUuY3BwCmluZGV4IDFjNzNiNGMzMjQyZmIwN2UyOGZhZTNkMWJhMWRl
NzM4YWJiNTdhMjUuLmM0Mjk3MmFmZmRjOWYyN2FjMTFjOWRkYzVjOWQzMThlOTJhNjRkMmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApAQCAtNzEsMTMg
KzcxLDEzIEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tGb3JGdW5jdGlv
bnMoVk0mIHZtLCBVbmxpbmtlZENvZGVCbG9jayogdW5sCiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBV
bmxpbmtlZENvZGVCbG9ja1R5cGUsIGNsYXNzIEV4ZWN1dGFibGVUeXBlID0gU2NyaXB0RXhlY3V0
YWJsZT4KLVVubGlua2VkQ29kZUJsb2NrVHlwZSogZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0lt
cGwoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTUGFyc2VyU3RyaWN0TW9kZSBz
dHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgT3B0aW9uU2V0PENvZGVH
ZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IsIEV2
YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVk
Q29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgY29uc3QgVERaRW52aXJv
bm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaID0gbnVsbHB0ciwgY29uc3QgVmFyaWFibGVFbnZpcm9u
bWVudCogcGFyZW50U2NvcGVQcml2YXRlTmFtZXMgPSBudWxscHRyLCBFeGVjdXRhYmxlVHlwZSog
ZXhlY3V0YWJsZSA9IG51bGxwdHIpCitVbmxpbmtlZENvZGVCbG9ja1R5cGUqIGdlbmVyYXRlVW5s
aW5rZWRDb2RlQmxvY2tJbXBsKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1Bh
cnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUs
IE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgUGFyc2Vy
RXJyb3ImIGVycm9yLCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlLCBEZXJpdmVkQ29u
dGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQs
IGNvbnN0IFREWkVudmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclREWiA9IG51bGxwdHIsIGNvbnN0
IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHByaXZhdGVOYW1lRW52aXJvbm1lbnQgPSBudWxscHRy
LCBFeGVjdXRhYmxlVHlwZSogZXhlY3V0YWJsZSA9IG51bGxwdHIpCiB7CiAgICAgdHlwZWRlZiB0
eXBlbmFtZSBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OlJvb3ROb2RlIFJvb3RO
b2RlOwogICAgIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uID0gZXhlY3V0YWJsZSAmJiBl
eGVjdXRhYmxlLT5pc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24oKTsKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxSb290Tm9kZT4gcm9vdE5vZGUgPSBwYXJzZTxSb290Tm9kZT4oCi0gICAgICAgIHZtLCBz
b3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgc3Ry
aWN0TW9kZSwgc2NyaXB0TW9kZSwgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+Ojpw
YXJzZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvciwgbnVsbHB0ciwgQ29uc3Ry
dWN0b3JLaW5kOjpOb25lLCBkZXJpdmVkQ29udGV4dFR5cGUsIGV2YWxDb250ZXh0VHlwZSwgbnVs
bHB0ciwgcGFyZW50U2NvcGVQcml2YXRlTmFtZXMsIG51bGxwdHIsIGlzSW5zaWRlT3JkaW5hcnlG
dW5jdGlvbik7CisgICAgICAgIHZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWls
dGluTW9kZTo6Tm90QnVpbHRpbiwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgQ2FjaGVUeXBlczxV
bmxpbmtlZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVk
LCBlcnJvciwgbnVsbHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBkZXJpdmVkQ29udGV4dFR5
cGUsIGV2YWxDb250ZXh0VHlwZSwgbnVsbHB0ciwgcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgbnVs
bHB0ciwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKTsKIAogICAgIGlmICghcm9vdE5vZGUpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtOTQsOSArOTQsMTIgQEAgVW5saW5rZWRDb2RlQmxv
Y2tUeXBlKiBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrSW1wbChWTSYgdm0sIGNvbnN0IFNvdXJj
ZUNvZGUmIHMKICAgICBib29sIHVzZXNFdmFsID0gcm9vdE5vZGUtPmZlYXR1cmVzKCkgJiBFdmFs
RmVhdHVyZTsKICAgICBFQ01BTW9kZSBlY21hTW9kZSA9IHJvb3ROb2RlLT5mZWF0dXJlcygpICYg
U3RyaWN0TW9kZUZlYXR1cmUgPyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5
KCk7CiAgICAgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIgPSBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm87Ci0gICAgaWYgY29uc3RleHBy
IChzdGQ6OmlzX3NhbWVfdjxFeGVjdXRhYmxlVHlwZSwgRGlyZWN0RXZhbEV4ZWN1dGFibGU+KQor
ICAgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID0gUHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmU7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3Nh
bWVfdjxFeGVjdXRhYmxlVHlwZSwgRGlyZWN0RXZhbEV4ZWN1dGFibGU+KSB7CiAgICAgICAgIG5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyID0gZXhlY3V0YWJsZS0+bmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIoKTsKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbyh1c2VzRXZhbCwg
ZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIHNjcmlwdE1vZGUsIFN1cGVyQmlu
ZGluZzo6Tm90TmVlZGVkLCBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNl
TW9kZSwgZGVyaXZlZENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgaXNB
cnJvd0Z1bmN0aW9uQ29udGV4dCwgZmFsc2UsIGV2YWxDb250ZXh0VHlwZSk7CisgICAgICAgIHBy
aXZhdGVCcmFuZFJlcXVpcmVtZW50ID0gZXhlY3V0YWJsZS0+cHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQoKTsKKyAgICB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8odXNlc0V2YWws
IGZhbHNlLCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6
Tm9uZSwgc2NyaXB0TW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIENhY2hlVHlwZXM8VW5s
aW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBmYWxzZSwgZXZh
bENvbnRleHRUeXBlKTsKIAogICAgIFVubGlua2VkQ29kZUJsb2NrVHlwZSogdW5saW5rZWRDb2Rl
QmxvY2sgPSBVbmxpbmtlZENvZGVCbG9ja1R5cGU6OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZUluZm8s
IGNvZGVHZW5lcmF0aW9uTW9kZSk7CiAgICAgdW5saW5rZWRDb2RlQmxvY2stPnJlY29yZFBhcnNl
KHJvb3ROb2RlLT5mZWF0dXJlcygpLCByb290Tm9kZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwg
bGluZUNvdW50LCB1bmxpbmtlZEVuZENvbHVtbik7CkBAIC0xMDgsNyArMTExLDcgQEAgVW5saW5r
ZWRDb2RlQmxvY2tUeXBlKiBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrSW1wbChWTSYgdm0sIGNv
bnN0IFNvdXJjZUNvZGUmIHMKICAgICBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiBwYXJlbnRW
YXJpYWJsZXNVbmRlclREWjsKICAgICBpZiAodmFyaWFibGVzVW5kZXJURFopCiAgICAgICAgIHBh
cmVudFZhcmlhYmxlc1VuZGVyVERaID0gVERaRW52aXJvbm1lbnRMaW5rOjpjcmVhdGUodm0ubV9j
b21wYWN0VmFyaWFibGVNYXAtPmdldCgqdmFyaWFibGVzVW5kZXJURFopLCBudWxscHRyKTsKLSAg
ICBlcnJvciA9IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSh2bSwgcm9vdE5vZGUuZ2V0KCks
IHNvdXJjZSwgdW5saW5rZWRDb2RlQmxvY2ssIGNvZGVHZW5lcmF0aW9uTW9kZSwgcGFyZW50VmFy
aWFibGVzVW5kZXJURFosIGVjbWFNb2RlKTsKKyAgICBlcnJvciA9IEJ5dGVjb2RlR2VuZXJhdG9y
OjpnZW5lcmF0ZSh2bSwgcm9vdE5vZGUuZ2V0KCksIHNvdXJjZSwgdW5saW5rZWRDb2RlQmxvY2ss
IGNvZGVHZW5lcmF0aW9uTW9kZSwgcGFyZW50VmFyaWFibGVzVW5kZXJURFosIHByaXZhdGVOYW1l
RW52aXJvbm1lbnQsIGVjbWFNb2RlKTsKIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpAQCAtMTE3LDE0ICsxMjAsMTQgQEAgVW5saW5rZWRDb2RlQmxv
Y2tUeXBlKiBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrSW1wbChWTSYgdm0sIGNvbnN0IFNvdXJj
ZUNvZGUmIHMKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFVubGlua2VkQ29kZUJsb2NrVHlwZSwgY2xh
c3MgRXhlY3V0YWJsZVR5cGU+Ci1VbmxpbmtlZENvZGVCbG9ja1R5cGUqIGdlbmVyYXRlVW5saW5r
ZWRDb2RlQmxvY2soVk0mIHZtLCBFeGVjdXRhYmxlVHlwZSogZXhlY3V0YWJsZSwgY29uc3QgU291
cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgSlNQYXJzZXJT
Y3JpcHRNb2RlIHNjcmlwdE1vZGUsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVH
ZW5lcmF0aW9uTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yLCBFdmFsQ29udGV4dFR5cGUgZXZhbENv
bnRleHRUeXBlLCBjb25zdCBURFpFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFogPSBudWxs
cHRyLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVByaXZhdGVOYW1lcyA9
IG51bGxwdHIpCitVbmxpbmtlZENvZGVCbG9ja1R5cGUqIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxv
Y2soVk0mIHZtLCBFeGVjdXRhYmxlVHlwZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgSlNQYXJzZXJTY3JpcHRNb2Rl
IHNjcmlwdE1vZGUsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9u
TW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yLCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBl
LCBjb25zdCBURFpFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFogPSBudWxscHRyLCBjb25z
dCBQcml2YXRlTmFtZUVudmlyb25tZW50KiBwcml2YXRlTmFtZUVudmlyb25tZW50ID0gbnVsbHB0
cikKIHsKLSAgICByZXR1cm4gZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ltcGw8VW5saW5rZWRD
b2RlQmxvY2tUeXBlLCBFeGVjdXRhYmxlVHlwZT4odm0sIHNvdXJjZSwgc3RyaWN0TW9kZSwgc2Ny
aXB0TW9kZSwgY29kZUdlbmVyYXRpb25Nb2RlLCBlcnJvciwgZXZhbENvbnRleHRUeXBlLCBleGVj
dXRhYmxlLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgZXhlY3V0YWJsZS0+aXNBcnJvd0Z1bmN0aW9u
Q29udGV4dCgpLCB2YXJpYWJsZXNVbmRlclREWiwgcGFyZW50U2NvcGVQcml2YXRlTmFtZXMsIGV4
ZWN1dGFibGUpOworICAgIHJldHVybiBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrSW1wbDxVbmxp
bmtlZENvZGVCbG9ja1R5cGUsIEV4ZWN1dGFibGVUeXBlPih2bSwgc291cmNlLCBzdHJpY3RNb2Rl
LCBzY3JpcHRNb2RlLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVycm9yLCBldmFsQ29udGV4dFR5cGUs
IGV4ZWN1dGFibGUtPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBleGVjdXRhYmxlLT5pc0Fycm93RnVu
Y3Rpb25Db250ZXh0KCksIHZhcmlhYmxlc1VuZGVyVERaLCBwcml2YXRlTmFtZUVudmlyb25tZW50
LCBleGVjdXRhYmxlKTsKIH0KIAotVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlu
a2VkQ29kZUJsb2NrRm9yRGlyZWN0RXZhbChWTSYgdm0sIERpcmVjdEV2YWxFeGVjdXRhYmxlKiBl
eGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTUGFyc2VyU3RyaWN0TW9kZSBz
dHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgT3B0aW9uU2V0PENvZGVH
ZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IsIEV2
YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIGNvbnN0IFREWkVudmlyb25tZW50KiB2YXJp
YWJsZXNVbmRlclREWiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVQcml2
YXRlTmFtZXMpCitVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxv
Y2tGb3JEaXJlY3RFdmFsKFZNJiB2bSwgRGlyZWN0RXZhbEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUs
IEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25N
b2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIFBhcnNlckVycm9yJiBlcnJvciwgRXZhbENvbnRleHRU
eXBlIGV2YWxDb250ZXh0VHlwZSwgY29uc3QgVERaRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVy
VERaLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiBwcml2YXRlTmFtZUVudmlyb25tZW50
KQogewotICAgIHJldHVybiBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrPFVubGlua2VkRXZhbENv
ZGVCbG9jaz4odm0sIGV4ZWN1dGFibGUsIHNvdXJjZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwg
Y29kZUdlbmVyYXRpb25Nb2RlLCBlcnJvciwgZXZhbENvbnRleHRUeXBlLCB2YXJpYWJsZXNVbmRl
clREWiwgcGFyZW50U2NvcGVQcml2YXRlTmFtZXMpOworICAgIHJldHVybiBnZW5lcmF0ZVVubGlu
a2VkQ29kZUJsb2NrPFVubGlua2VkRXZhbENvZGVCbG9jaz4odm0sIGV4ZWN1dGFibGUsIHNvdXJj
ZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgY29kZUdlbmVyYXRpb25Nb2RlLCBlcnJvciwgZXZh
bENvbnRleHRUeXBlLCB2YXJpYWJsZXNVbmRlclREWiwgcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCk7
CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBVbmxpbmtlZENvZGVCbG9ja1R5cGU+CkBAIC0yNDgsNyAr
MjUxLDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIENvZGVDYWNoZTo6Z2V0VW5saW5r
ZWRHbG9iYWxGdW5jdGlvbkV4ZWN1dGFibGUoVk0mIHYKICAgICAvLyBUaGUgRnVuY3Rpb24gY29u
c3RydWN0b3Igb25seSBoYXMgYWNjZXNzIHRvIGdsb2JhbCB2YXJpYWJsZXMsIHNvIG5vIHZhcmlh
YmxlcyB3aWxsIGJlIHVuZGVyIFREWiB1bmxlc3MgdGhleSdyZQogICAgIC8vIGluIHRoZSBnbG9i
YWwgbGV4aWNhbCBlbnZpcm9ubWVudCwgd2hpY2ggd2UgYWx3YXlzIFREWiBjaGVjayBhY2Nlc3Nl
cyBmcm9tLgogICAgIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSA9IGNvbnN0cnVj
dEFiaWxpdHlGb3JQYXJzZU1vZGUobWV0YWRhdGEtPnBhcnNlTW9kZSgpKTsKLSAgICBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OmNyZWF0ZSh2bSwgc291cmNlLCBtZXRhZGF0YSwgVW5saW5rZWROb3JtYWxG
dW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBu
dWxscHRyLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyOjpObyk7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0
YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUodm0sIHNvdXJjZSwgbWV0
YWRhdGEsIFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2Vy
U2NyaXB0TW9kZTo6Q2xhc3NpYywgbnVsbHB0ciwgV1RGOjpudWxsb3B0LCBEZXJpdmVkQ29udGV4
dFR5cGU6Ok5vbmUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObywgUHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQ6Ok5vbmUpOwogCiAgICAgaWYgKCFzb3VyY2UucHJvdmlkZXIoKS0+c291cmNl
VVJMRGlyZWN0aXZlKCkuaXNOdWxsKCkpCiAgICAgICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+c2V0
U291cmNlVVJMRGlyZWN0aXZlKHNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2VVUkxEaXJlY3RpdmUo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCmluZGV4IDljYzFj
YTcwMDQ0NzljZTU3ZDIzYzY0NDdjODRjMWNjOGQ2YzlmZGIuLjYwYTc3ZDJhZjNhZDBhYjc0MmI0
MDQ3YjQ5NjcyZjhmMzIxOWM5NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvZGVDYWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
ZGVDYWNoZS5oCkBAIC0yNTQsNyArMjU0LDcgQEAgdGVtcGxhdGUgPD4gc3RydWN0IENhY2hlVHlw
ZXM8VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrPiB7CiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFs
dWF0ZU1vZGU7CiB9OwogCi1VbmxpbmtlZEV2YWxDb2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRD
b2RlQmxvY2tGb3JEaXJlY3RFdmFsKFZNJiwgRGlyZWN0RXZhbEV4ZWN1dGFibGUqLCBjb25zdCBT
b3VyY2VDb2RlJiwgSlNQYXJzZXJTdHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGUsIE9wdGlv
blNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBQYXJzZXJFcnJvciYsIEV2YWxDb250ZXh0VHlwZSwg
Y29uc3QgVERaRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaLCBjb25zdCBWYXJpYWJsZUVu
dmlyb25tZW50KiBwYXJlbnRTY29wZVByaXZhdGVOYW1lcyk7CitVbmxpbmtlZEV2YWxDb2RlQmxv
Y2sqIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tGb3JEaXJlY3RFdmFsKFZNJiwgRGlyZWN0RXZh
bEV4ZWN1dGFibGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJTdHJpY3RNb2RlLCBKU1Bh
cnNlclNjcmlwdE1vZGUsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBQYXJzZXJFcnJv
ciYsIEV2YWxDb250ZXh0VHlwZSwgY29uc3QgVERaRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVy
VERaLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50Kik7CiBVbmxpbmtlZFByb2dyYW1Db2Rl
QmxvY2sqIHJlY3Vyc2l2ZWx5R2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ZvclByb2dyYW0oVk0m
LCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJTdHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1v
ZGUsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBQYXJzZXJFcnJvciYsIEV2YWxDb250
ZXh0VHlwZSk7CiBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHJlY3Vyc2l2ZWx5R2Vu
ZXJhdGVVbmxpbmtlZENvZGVCbG9ja0Zvck1vZHVsZVByb2dyYW0oVk0mLCBjb25zdCBTb3VyY2VD
b2RlJiwgSlNQYXJzZXJTdHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGUsIE9wdGlvblNldDxD
b2RlR2VuZXJhdGlvbk1vZGU+LCBQYXJzZXJFcnJvciYsIEV2YWxDb250ZXh0VHlwZSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRh
YmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRh
YmxlLmNwcAppbmRleCBjN2MyOWMwNTAyOTYyMzEwZDM2OWY0ZTk0NjE2YjlkMTAyZGI2OTI2Li5m
NmY3OTMwN2RmZTc5ZjhhMmIxYjg4MGIxYjg2ZmJiMjY5YzQyNWNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCkBA
IC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1EaXJlY3RFdmFsRXhlY3V0YWJs
ZSogRGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVk
Q29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRp
bmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlLCBjb25zdCBURFpF
bnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFosIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQq
IHByaXZhdGVOYW1lcywgRUNNQU1vZGUgZWNtYU1vZGUpCitEaXJlY3RFdmFsRXhlY3V0YWJsZSog
RGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29u
dGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCwg
Ym9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlv
biwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgY29uc3QgVERaRW52aXJvbm1lbnQq
IHZhcmlhYmxlc1VuZGVyVERaLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiBwcml2YXRl
TmFtZUVudmlyb25tZW50LCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwpAQCAtNDQsNyArNDQsNyBAQCBEaXJlY3RFdmFsRXhlY3V0YWJsZSogRGlyZWN0RXZhbEV4ZWN1
dGFibGU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRvKiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8RGlyZWN0RXZhbEV4ZWN1dGFibGU+KHZtLmhlYXApKSBEaXJlY3RFdmFs
RXhlY3V0YWJsZShnbG9iYWxPYmplY3QsIHNvdXJjZSwgZWNtYU1vZGUuaXNTdHJpY3QoKSwgZGVy
aXZlZENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgaXNBcnJvd0Z1bmN0
aW9uQ29udGV4dCwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBldmFsQ29udGV4dFR5cGUpOwor
ICAgIGF1dG8qIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxEaXJlY3RF
dmFsRXhlY3V0YWJsZT4odm0uaGVhcCkpIERpcmVjdEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVj
dCwgc291cmNlLCBlY21hTW9kZS5pc1N0cmljdCgpLCBkZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyLCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCwgaXNBcnJvd0Z1
bmN0aW9uQ29udGV4dCwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBldmFsQ29udGV4dFR5cGUp
OwogICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKIAogICAgIFBhcnNlckVycm9y
IGVycm9yOwpAQCAtNTIsNyArNTIsNyBAQCBEaXJlY3RFdmFsRXhlY3V0YWJsZSogRGlyZWN0RXZh
bEV4ZWN1dGFibGU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIE9w
dGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSA9IGdsb2JhbE9i
amVjdC0+ZGVmYXVsdENvZGVHZW5lcmF0aW9uTW9kZSgpOwogCiAgICAgLy8gV2UgZG9uJ3QgYm90
aGVyIHdpdGggQ29kZUNhY2hlIGhlcmUgYmVjYXVzZSBkaXJlY3QgZXZhbCB1c2VzIGEgc3BlY2lh
bGl6ZWQgRGlyZWN0RXZhbENvZGVDYWNoZS4KLSAgICBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIHVu
bGlua2VkRXZhbENvZGUgPSBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrRm9yRGlyZWN0RXZhbCh2
bSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+c291cmNlKCksIHN0cmljdE1vZGUsIEpTUGFyc2Vy
U2NyaXB0TW9kZTo6Q2xhc3NpYywgY29kZUdlbmVyYXRpb25Nb2RlLCBlcnJvciwgZXZhbENvbnRl
eHRUeXBlLCB2YXJpYWJsZXNVbmRlclREWiwgcHJpdmF0ZU5hbWVzKTsKKyAgICBVbmxpbmtlZEV2
YWxDb2RlQmxvY2sqIHVubGlua2VkRXZhbENvZGUgPSBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2Nr
Rm9yRGlyZWN0RXZhbCh2bSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+c291cmNlKCksIHN0cmlj
dE1vZGUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgY29kZUdlbmVyYXRpb25Nb2RlLCBl
cnJvciwgZXZhbENvbnRleHRUeXBlLCB2YXJpYWJsZXNVbmRlclREWiwgcHJpdmF0ZU5hbWVFbnZp
cm9ubWVudCk7CiAKICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5oYXNEZWJ1Z2dlcigpKQogICAgICAg
ICBnbG9iYWxPYmplY3QtPmRlYnVnZ2VyKCktPnNvdXJjZVBhcnNlZChnbG9iYWxPYmplY3QsIGV4
ZWN1dGFibGUtPnNvdXJjZSgpLnByb3ZpZGVyKCksIGVycm9yLmxpbmUoKSwgZXJyb3IubWVzc2Fn
ZSgpKTsKQEAgLTY3LDEwICs2NywxMCBAQCBEaXJlY3RFdmFsRXhlY3V0YWJsZSogRGlyZWN0RXZh
bEV4ZWN1dGFibGU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIHJl
dHVybiBleGVjdXRhYmxlOwogfQogCi1EaXJlY3RFdmFsRXhlY3V0YWJsZTo6RGlyZWN0RXZhbEV4
ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRD
b250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGlu
YXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUpCi0gICAgOiBFdmFs
RXhlY3V0YWJsZShnbG9iYWxPYmplY3QsIHNvdXJjZSwgaW5TdHJpY3RDb250ZXh0LCBkZXJpdmVk
Q29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGlzSW5zaWRlT3JkaW5hcnlGdW5j
dGlvbiwgZXZhbENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcikKK0RpcmVj
dEV2YWxFeGVjdXRhYmxlOjpEaXJlY3RFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaW5TdHJpY3RDb250ZXh0
LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWly
ZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4
dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSBldmFsQ29u
dGV4dFR5cGUpCisgICAgOiBFdmFsRXhlY3V0YWJsZShnbG9iYWxPYmplY3QsIHNvdXJjZSwgaW5T
dHJpY3RDb250ZXh0LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQs
IGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgZXZhbENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplciwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpCiB7Ci0gICAgQVNTRVJUKG5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyID09IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpO
byB8fCBkZXJpdmVkQ29udGV4dFR5cGUgPT0gRGVyaXZlZENvbnRleHRUeXBlOjpEZXJpdmVkQ29u
c3RydWN0b3JDb250ZXh0KTsKKyAgICBBU1NFUlQoKG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
ID09IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObyAmJiBwcml2YXRlQnJhbmRSZXF1aXJl
bWVudCA9PSBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZSkgfHwgZGVyaXZlZENvbnRleHRU
eXBlID09IERlcml2ZWRDb250ZXh0VHlwZTo6RGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmgKaW5kZXggOGM1MmNiNjgxZThkMDVkMjY0ZWFm
MzBkNmM5NGQxM2JlNzFkMzU4OC4uMzYyY2VkOGQ3YjE3MTEyMGYyYjJiZTVmZDVjOTU2MGUzMDU5
ZWUzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZh
bEV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RF
dmFsRXhlY3V0YWJsZS5oCkBAIC0zMSw5ICszMSw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFz
cyBEaXJlY3RFdmFsRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBFdmFsRXhlY3V0YWJsZSB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIERpcmVjdEV2YWxFeGVjdXRhYmxlKiBjcmVhdGUoSlNHbG9iYWxP
YmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgRGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5z
aWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBlLCBjb25zdCBURFpFbnZpcm9ubWVu
dCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBy
aXZhdGVOYW1lcywgRUNNQU1vZGUpOworICAgIHN0YXRpYyBEaXJlY3RFdmFsRXhlY3V0YWJsZSog
Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIERlcml2ZWRDb250ZXh0
VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50
LCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0
aW9uLCBFdmFsQ29udGV4dFR5cGUsIGNvbnN0IFREWkVudmlyb25tZW50KiBwYXJlbnRTY29wZVRE
WlZhcmlhYmxlcywgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCosIEVDTUFNb2RlKTsKIHBy
aXZhdGU6Ci0gICAgRGlyZWN0RXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBT
b3VyY2VDb2RlJiwgYm9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSwgTmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9v
bCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSk7CisgICAgRGlyZWN0
RXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBp
blN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUpOwogfTsK
IAogc3RhdGljX2Fzc2VydChzaXplb2YoRGlyZWN0RXZhbEV4ZWN1dGFibGUpID09IHNpemVvZihF
dmFsRXhlY3V0YWJsZSksICIiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V2YWxFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V2YWxFeGVjdXRhYmxlLmNwcAppbmRleCAyZWMxMzdhNzM2MjI0MjFiNWY5ZDEyMmMyNzM1MThk
NWU2Mzg2NDljLi4wYjNkNDE2NGFhNjVhYmQwMDRmZWU5OGI4Y2VjZTg3OTZkZmJjMmEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuY3BwCkBA
IC0zMiw5ICszMiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIEV2YWxF
eGVjdXRhYmxlOjpzX2luZm8gPSB7ICJFdmFsRXhlY3V0YWJsZSIsICZCYXNlOjpzX2luZm8sIG51
bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoRXZhbEV4ZWN1dGFibGUpIH07CiAK
LUV2YWxFeGVjdXRhYmxlOjpFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBEZXJp
dmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNv
bnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUgZXZh
bENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplcikKK0V2YWxFeGVjdXRhYmxlOjpFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaW5TdHJpY3RD
b250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJy
b3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29u
dGV4dFR5cGUgZXZhbENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQpCiAgICAgOiBCYXNlKGdsb2JhbE9iamVjdC0+dm0oKS5ldmFsRXhlY3V0
YWJsZVN0cnVjdHVyZS5nZXQoKSwgZ2xvYmFsT2JqZWN0LT52bSgpLCBzb3VyY2UsIGluU3RyaWN0
Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBpc0lu
c2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250ZXh0VHlwZSwgTm9JbnRyaW5zaWMpCiAgICAg
LCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihuZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplcikpCisgICAgLCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihwcml2YXRlQnJhbmRSZXF1aXJlbWVudCkpCiB7CiAgICAg
QVNTRVJUKHNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2VUeXBlKCkgPT0gU291cmNlUHJvdmlkZXJT
b3VyY2VUeXBlOjpQcm9ncmFtKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FdmFsRXhlY3V0YWJsZS5oCmluZGV4IDY3ZTY5Yzg2MjliYTNmYjM4MTE0ODExMzZiOGU3ZTk5
NDgwZWQ3NzEuLjUyNjAyNTFhY2VlMjI1ZTliNTc5ZjhlODJmNmVkYzgxMGM3YWRlZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaApAQCAtNjIs
MTMgKzYyLDE0IEBAIHB1YmxpYzoKIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIEV4ZWN1dGFi
bGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8odXNl
c0V2YWwoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2Ny
aXB0TW9kZTo6Q2xhc3NpYywgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9k
ZTo6UHJvZ3JhbU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBuZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplcigpLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlLCBldmFsQ29udGV4dFR5
cGUoKSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0
dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGZhbHNlLCBQcml2YXRlQnJhbmRSZXF1aXJl
bWVudDo6Tm9uZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRN
b2RlOjpDbGFzc2ljLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQ
cm9ncmFtTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyKCksIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgZmFsc2UsIGV2YWxDb250ZXh0VHlwZSgp
KTsgfQogCiAgICAgdW5zaWduZWQgbnVtVmFyaWFibGVzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2
YWxDb2RlQmxvY2stPm51bVZhcmlhYmxlcygpOyB9CiAgICAgdW5zaWduZWQgbnVtRnVuY3Rpb25I
b2lzdGluZ0NhbmRpZGF0ZXMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVt
RnVuY3Rpb25Ib2lzdGluZ0NhbmRpZGF0ZXMoKTsgfQogICAgIHVuc2lnbmVkIG51bVRvcExldmVs
RnVuY3Rpb25EZWNscygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1iZXJP
ZkZ1bmN0aW9uRGVjbHMoKTsgfQogICAgIGJvb2wgYWxsb3dEaXJlY3RFdmFsQ2FjaGUoKSBjb25z
dCB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+YWxsb3dEaXJlY3RFdmFsQ2FjaGUo
KTsgfQogICAgIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXI+KG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpOyB9CisgICAgUHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxQcml2YXRlQnJhbmRSZXF1aXJlbWVudD4obV9wcml2YXRlQnJhbmRSZXF1aXJlbWVu
dCk7IH0KICAgICBUZW1wbGF0ZU9iamVjdE1hcCYgZW5zdXJlVGVtcGxhdGVPYmplY3RNYXAoVk0m
KTsKIAogcHJvdGVjdGVkOgpAQCAtNzYsMTEgKzc3LDEyIEBAIHByb3RlY3RlZDoKICAgICBmcmll
bmQgY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKIAogICAgIHVzaW5nIEJhc2U6OmZpbmlzaENyZWF0
aW9uOwotICAgIEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29k
ZSYsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJv
d0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250
ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpOworICAgIEV2YWxFeGVjdXRhYmxl
KEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wgaW5TdHJpY3RDb250ZXh0
LCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBp
c0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50KTsKIAogICAgIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIHVuc2lnbmVkIG1f
bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgOiAxOworICAgIHVuc2lnbmVkIG1fcHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQgOiAxOwogCiAgICAgV3JpdGVCYXJyaWVyPEV4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2U+IG1fZXZhbENvZGVCbG9jazsKICAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRFdmFs
Q29kZUJsb2NrPiBtX3VubGlua2VkRXZhbENvZGVCbG9jazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKaW5kZXggNDE0ZTdiZGY3N2Fi
NGZjNzY0YjU2NWRmNmYxYmQ0YTBkNjRiMzBjYi4uN2EyOTEwZTg4N2YyYTE0ZTJmNTg5Mjc1YTBj
YjIxOGM3YjVlZDgyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhjZXB0aW9uSGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhjZXB0aW9uSGVscGVycy5jcHAKQEAgLTMyNiw3ICszMjYsNyBAQCBKU09iamVjdCogY3JlYXRl
VERaRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogSlNPYmplY3QqIGNyZWF0
ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7
Ci0gICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoIkNh
bm5vdCBhY2Nlc3MgaW52YWxpZCBwcml2YXRlIGZpZWxkIiksIGRlZmF1bHRTb3VyY2VBcHBlbmRl
ciwgVHlwZU5vdGhpbmcpOworICAgIHJldHVybiBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBtYWtlU3RyaW5nKCJJbnZhbGlkIHByaXZhdGUgbWVtYmVyIGFjY2VzcyIpLCBkZWZhdWx0U291
cmNlQXBwZW5kZXIsIFR5cGVOb3RoaW5nKTsKIH0KIAogSlNPYmplY3QqIGNyZWF0ZVJlZGVmaW5l
ZFByaXZhdGVOYW1lRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJs
ZS5jcHAKaW5kZXggOThkN2UyYjgzYTI3OTEyZmE1NGMyYzI1ZWUxODNiZmI0ZTA0NmM3My4uNzQ5
ODIwNTAxOGNkZWY4ZjNmODM2N2I0YmJlMmVmNzlkYmQxN2MxZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAK
QEAgLTY5LDcgKzY5LDcgQEAgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZSogSW5kaXJlY3RFdmFsRXhl
Y3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKIGNvbnN0ZXhwciBib29s
IGluU3RyaWN0Q29udGV4dCA9IGZhbHNlOwogY29uc3RleHByIGJvb2wgaW5zaWRlT3JkaW5hcnlG
dW5jdGlvbiA9IGZhbHNlOwogSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6SW5kaXJlY3RFdmFsRXhl
Y3V0YWJsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJv
d0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSkKLSAgICA6
IEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNlLCBpblN0cmljdENvbnRleHQsIGRl
cml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgaW5zaWRlT3JkaW5hcnlG
dW5jdGlvbiwgZXZhbENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8p
CisgICAgOiBFdmFsRXhlY3V0YWJsZShnbG9iYWxPYmplY3QsIHNvdXJjZSwgaW5TdHJpY3RDb250
ZXh0LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGluc2lkZU9y
ZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXI6Ok5vLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZSkKIHsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggOWI5MzhiM2U1ZTdhMDQ1NDRhNTU4
ZjAwZTM0OTViYWE1YWZmOTE0Ny4uODI5NjVkMTg3MzIxNzQ3NGQzNzA1OWFiNDc2NGE5MzY2MGJh
ZWMyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC0xODQs
NiArMTg0LDggQEAgcHVibGljOgogICAgIGlubGluZSBib29sIGdldFByaXZhdGVGaWVsZChKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgaW5saW5lIHZv
aWQgc2V0UHJpdmF0ZUZpZWxkKEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBpbmxpbmUgdm9pZCBkZWZpbmVQcml2YXRlRmllbGQo
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OworICAgIGlubGluZSBib29sIGNoZWNrUHJpdmF0ZUJyYW5kKEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSBicmFuZCk7CisgICAgaW5saW5lIHZvaWQgc2V0UHJpdmF0ZUJyYW5kKEpTR2xvYmFsT2Jq
ZWN0KiwgSlNWYWx1ZSBicmFuZCk7CiAKICAgICB1bnNpZ25lZCBnZXRBcnJheUxlbmd0aCgpIGNv
bnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3RJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElu
bGluZXMuaAppbmRleCAwMDVlZTE0NjY0MzU1OGZjYjc3NDg2ZGIzMDI1ODA0YzcwMDBkYmNkLi42
OGQxMTM5NjA1MjczMTVkZjBlZjg4MDBiM2IyZmRhMThhZjA4OTM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaApAQCAtNjY5LDQgKzY2OSw0
NSBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSlNPYmplY3Q6OmdldE5vblJlaWZpZWRTdGF0aWNQcm9w
ZXJ0eU5hbWVzKFZNJiB2bSwgUHJvcGVydHlOYQogICAgIH0KIH0KIAoraW5saW5lIGJvb2wgSlNP
YmplY3Q6OmNoZWNrUHJpdmF0ZUJyYW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgYnJhbmQpCit7CisgICAgQVNTRVJUKGJyYW5kLmlzU3ltYm9sKCkpOworICAgIFZNJiB2
bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUo
dm0pOworICAgIGlmICghc3RydWN0dXJlLT5pc0JyYW5kZWRTdHJ1Y3R1cmUoKSB8fCAhanNDYXN0
PEJyYW5kZWRTdHJ1Y3R1cmUqPihzdHJ1Y3R1cmUpLT5jaGVja0JyYW5kKGFzU3ltYm9sKGJyYW5k
KSkpIHsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRl
SW52YWxpZFByaXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgZmFsc2UpOworICAgIH0KKyAgICBFWENFUFRJT05fQVNTRVJUKCFz
Y29wZS5leGNlcHRpb24oKSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworaW5saW5lIHZvaWQg
SlNPYmplY3Q6OnNldFByaXZhdGVCcmFuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIGJyYW5kKQoreworICAgIEFTU0VSVChicmFuZC5pc1N5bWJvbCgpKTsKKyAgICBWTSYg
dm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJl
KHZtKTsKKyAgICBpZiAoc3RydWN0dXJlLT5pc0JyYW5kZWRTdHJ1Y3R1cmUoKSAmJiBqc0Nhc3Q8
QnJhbmRlZFN0cnVjdHVyZSo+KHN0cnVjdHVyZSktPmNoZWNrQnJhbmQoYXNTeW1ib2woYnJhbmQp
KSkgeworICAgICAgICAvLyBXZSBhcmUgdHJ5aW5nIHRvIGluc3RhbGwgYSBicmFuZCBhbHJlYWR5
IGluc3RhbGxlZAorICAgICAgICAvLyBGSVhNRTogUHV0IGEgYmV0dGVyIGVycm9yIG1lc3NhZ2UK
KyAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlSW52YWxp
ZFByaXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgdm9pZCgpKTsKKyAgICB9CisgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUu
ZXhjZXB0aW9uKCkpOworCisgICAgc2NvcGUucmVsZWFzZSgpOworCisgICAgRGVmZXJyZWRTdHJ1
Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUgZGVmZXJyZWRXYXRjaHBvaW50RmlyZSh2bSwg
c3RydWN0dXJlKTsKKworICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpz
ZXRCcmFuZFRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSwgYXNTeW1ib2woYnJhbmQpLCAmZGVmZXJy
ZWRXYXRjaHBvaW50RmlyZSk7CisgICAgQVNTRVJUKG5ld1N0cnVjdHVyZS0+aXNCcmFuZGVkU3Ry
dWN0dXJlKCkpOworICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkg
fHwgIXRoaXMtPnN0cnVjdHVyZSh2bSktPm91dE9mTGluZUNhcGFjaXR5KCkpOworICAgIHRoaXMt
PnNldFN0cnVjdHVyZSh2bSwgbmV3U3RydWN0dXJlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCmluZGV4IDRmYjI0YTI4
MjczMzVjYjc1OWJmY2ZhOThiOTc5ODVhNTk0OTg4MWEuLmZjNzc0MmUyMzA4OTY3ZTk5MTI1YmYw
NmZiMzFjN2U2M2I4YjcwZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2Nv
cGUuY3BwCkBAIC0zMjEsNyArMzIxLDcgQEAgUmVzb2x2ZU9wIEpTU2NvcGU6OmFic3RyYWN0UmVz
b2x2ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBzaXplX3QgZGVwdGhPZmYKICAgICBy
ZXR1cm4gb3A7CiB9CiAKLXZvaWQgSlNTY29wZTo6Y29sbGVjdENsb3N1cmVWYXJpYWJsZXNVbmRl
clREWihKU1Njb3BlKiBzY29wZSwgVERaRW52aXJvbm1lbnQmIHJlc3VsdCwgVmFyaWFibGVFbnZp
cm9ubWVudCYgcHJpdmF0ZU5hbWVzKQordm9pZCBKU1Njb3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlh
Ymxlc1VuZGVyVERaKEpTU2NvcGUqIHNjb3BlLCBURFpFbnZpcm9ubWVudCYgcmVzdWx0LCBQcml2
YXRlTmFtZUVudmlyb25tZW50JiBwcml2YXRlTmFtZUVudmlyb25tZW50KQogewogICAgIGZvciAo
OyBzY29wZTsgc2NvcGUgPSBzY29wZS0+bmV4dCgpKSB7CiAgICAgICAgIGlmICghc2NvcGUtPmlz
TGV4aWNhbFNjb3BlKCkgJiYgIXNjb3BlLT5pc0NhdGNoU2NvcGUoKSkKQEAgLTM0MCw4ICszNDAs
OSBAQCB2b2lkIEpTU2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFooSlNTY29w
ZSogc2NvcGUsIFREWkVudmlyb25tZW50JiByZQogICAgICAgICAgICAgcmVzdWx0LmFkZChpdGVy
LT5rZXkpOwogCiAgICAgICAgIGlmIChzeW1ib2xUYWJsZS0+aGFzUHJpdmF0ZU5hbWVzKCkpIHsK
LSAgICAgICAgICAgIGZvciAoYXV0byBuYW1lIDogc3ltYm9sVGFibGUtPnByaXZhdGVOYW1lcygp
KQotICAgICAgICAgICAgICAgIHByaXZhdGVOYW1lcy51c2VQcml2YXRlTmFtZShuYW1lKTsgICAg
CisgICAgICAgICAgICBhdXRvIHByaXZhdGVOYW1lcyA9IHN5bWJvbFRhYmxlLT5wcml2YXRlTmFt
ZXMoKTsKKyAgICAgICAgICAgIGZvciAoYXV0byBlbmQgPSBwcml2YXRlTmFtZXMuZW5kKCksIGl0
ZXIgPSBwcml2YXRlTmFtZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikKKyAgICAgICAg
ICAgICAgICBwcml2YXRlTmFtZUVudmlyb25tZW50LmFkZChpdGVyLT5rZXksIGl0ZXItPnZhbHVl
KTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU2NvcGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2Nv
cGUuaAppbmRleCA3YTNjMjQxNTExYjg3ZWQzZGFkOWNkYzkzMTFkMTUwNWI5MTNiZTdjLi5lNGNk
MGJiMzA5N2ZkYzMxNmQzMGFjZDZmZjkwN2M5MmY4NjAxMzEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTY29wZS5oCkBAIC0yNywxMiArMjcsMTIgQEAKIAogI2luY2x1ZGUgIkdl
dFB1dEluZm8uaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIlZhcmlhYmxlRW52
aXJvbm1lbnQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIFNjb3BlQ2hhaW5JdGVyYXRv
cjsKIGNsYXNzIFN5bWJvbFRhYmxlOwotY2xhc3MgVmFyaWFibGVFbnZpcm9ubWVudDsKIGNsYXNz
IFdhdGNocG9pbnRTZXQ7CiAKIHVzaW5nIFREWkVudmlyb25tZW50ID0gSGFzaFNldDxSZWZQdHI8
VW5pcXVlZFN0cmluZ0ltcGw+LCBJZGVudGlmaWVyUmVwSGFzaD47CkBAIC02Miw3ICs2Miw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBoYXNDb25zdGFudFNjb3BlKFJlc29sdmVUeXBlKTsK
ICAgICBzdGF0aWMgSlNTY29wZSogY29uc3RhbnRTY29wZUZvckNvZGVCbG9jayhSZXNvbHZlVHlw
ZSwgQ29kZUJsb2NrKik7CiAKLSAgICBzdGF0aWMgdm9pZCBjb2xsZWN0Q2xvc3VyZVZhcmlhYmxl
c1VuZGVyVERaKEpTU2NvcGUqLCBURFpFbnZpcm9ubWVudCYgcmVzdWx0LCBWYXJpYWJsZUVudmly
b25tZW50JiBwcml2YXRlTmFtZXMpOworICAgIHN0YXRpYyB2b2lkIGNvbGxlY3RDbG9zdXJlVmFy
aWFibGVzVW5kZXJURFooSlNTY29wZSosIFREWkVudmlyb25tZW50JiByZXN1bHQsIFByaXZhdGVO
YW1lRW52aXJvbm1lbnQmKTsKIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiwgU2xvdFZpc2l0b3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgKaW5kZXggMDk5ZDg5OWFkNWU2M2E3NDMz
NThlMmFiYjIwYWIzNGY1OWI5NjBlYy4uYjg1OTE0ZmY4ZWEwZGQwM2M2MjQ3NzUzNTk2ZmY0MmQ1
NjE2NmIzNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKIAogICAg
IERFQ0xBUkVfSU5GTzsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29u
c3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8odXNlc0V2YWwoKSwgZmFsc2UsIGZhbHNlLCBDb25z
dHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6TW9kdWxlLCBTdXBlckJpbmRp
bmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFsdWF0ZU1vZGUsIGRlcml2
ZWRDb250ZXh0VHlwZSgpLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8sIGlzQXJyb3dG
dW5jdGlvbkNvbnRleHQoKSwgZmFsc2UsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSk7IH0KKyAgICBF
eGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJ
bmZvKHVzZXNFdmFsKCksIGZhbHNlLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZSwgZmFs
c2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUsIFN1
cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUV2YWx1YXRlTW9k
ZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObywg
aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsg
fQogCiAgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2soKSB7IHJldHVybiBtX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
ay5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCmlu
ZGV4IDBjYWYzNDAxYWQzMmI5N2E3ZDhkMTU2ZWY1OWRlM2IyMzJiZWYxMDUuLmE1YzdlYWNhMWJl
YWNlOTQzMTM2OTYzNDc1MzE2OTY1M2VhZGM3OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wdGlvbnMuY3BwCkBAIC01MzgsNiArNTM4LDkgQEAgdm9pZCBPcHRpb25zOjpyZWNv
bXB1dGVEZXBlbmRlbnRPcHRpb25zKCkKICAgICAgICAgT3B0aW9uczo6cmFuZG9tSW50ZWdyaXR5
QXVkaXRSYXRlKCkgPSAwOwogICAgIGVsc2UgaWYgKE9wdGlvbnM6OnJhbmRvbUludGVncml0eUF1
ZGl0UmF0ZSgpID4gMS4wKQogICAgICAgICBPcHRpb25zOjpyYW5kb21JbnRlZ3JpdHlBdWRpdFJh
dGUoKSA9IDEuMDsKKyAgICAKKyAgICBpZiAoT3B0aW9uczo6dXNlUHJpdmF0ZU1ldGhvZHMoKSkK
KyAgICAgICAgT3B0aW9uczo6dXNlUHJpdmF0ZUNsYXNzRmllbGRzKCkgPSB0cnVlOwogCiAgICAg
aWYgKCFPcHRpb25zOjphbGxvd1Vuc3VwcG9ydGVkVGllcnMoKSkgewogI2RlZmluZSBESVNBQkxF
X1RJRVJTKG9wdGlvbiwgZmxhZ3MsIC4uLikgZG8geyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRleCAzNDg1ODZlZGM2ZDA1MjUwNzliZjgxNmM0OTg0
MGExMDNlMGE3ZjY5Li4wNjBhNWY4MDhhNjdlYjFhMGQzYjI5NDI2YmZjYjQwMTg4OWJmZGZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAgLTUxMiw2
ICs1MTIsNyBAQCBKU19FWFBPUlRfUFJJVkFURSBib29sIGNhblVzZUpJVENhZ2UoKTsKICAgICB2
KEJvb2wsIGV4cG9zZVByb2ZpbGVyc09uR2xvYmFsT2JqZWN0LCBmYWxzZSwgTm9ybWFsLCAiSWYg
dHJ1ZSwgd2Ugd2lsbCBleHBvc2UgZnVuY3Rpb25zIHRvIGVuYWJsZS9kaXNhYmxlIGJvdGggdGhl
IHNhbXBsaW5nIHByb2ZpbGVyIGFuZCB0aGUgc3VwZXIgc2FtcGxlciIpIFwKICAgICB2KEJvb2ws
IGFsbG93VW5zdXBwb3J0ZWRUaWVycywgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwg
bm90IGRpc2FibGUgREZHIG9yIEZUTCB3aGVuIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlIGlzIGVu
YWJsZWQuIikgXAogICAgIHYoQm9vbCwgdXNlUHJpdmF0ZUNsYXNzRmllbGRzLCB0cnVlLCBOb3Jt
YWwsICJJZiB0cnVlLCB0aGUgcGFyc2VyIHdpbGwgdW5kZXJzdGFuZCBwcml2YXRlIGRhdGEgZmll
bGRzIGluc2lkZSBjbGFzc2VzLiIpIFwKKyAgICB2KEJvb2wsIHVzZVByaXZhdGVNZXRob2RzLCBm
YWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgdGhlIHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHJpdmF0
ZSBtZXRob2RzIGluc2lkZSBjbGFzc2VzLiIpIFwKICAgICB2KEJvb2wsIHJldHVybkVhcmx5RnJv
bUluZmluaXRlTG9vcHNGb3JGdXp6aW5nLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAg
dihTaXplLCBlYXJseVJldHVybkZyb21JbmZpbml0ZUxvb3BzTGltaXQsIDEzMDAwMDAwMDAsIE5v
cm1hbCwgIldoZW4gcmV0dXJuRWFybHlGcm9tSW5maW5pdGVMb29wc0ZvckZ1enppbmcgaXMgdHJ1
ZSwgdGhpcyBkZXRlcm1pbmVzIHRoZSBudW1iZXIgb2YgZXhlY3V0aW9ucyBhIGxvb3AgY2FuIHJ1
biBmb3IgYmVmb3JlIGp1c3QgcmV0dXJuaW5nLiBUaGlzIGlzIGhlbHBmdWwgZm9yIHRoZSBmdXp6
ZXIgc28gaXQgZG9lc24ndCBnZXQgc3R1Y2sgaW4gaW5maW5pdGUgbG9vcHMuIikgXAogICAgIHYo
Qm9vbCwgdXNlTElDTUZ1enppbmcsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKQEAgLTU2OCw3
ICs1NjksOCBAQCBlbnVtIEV4cGVyaW1lbnRhbE9wdGlvbkZsYWdzIHsKIH07CiAKICNkZWZpbmUg
Rk9SX0VBQ0hfSlNDX0VYUEVSSU1FTlRBTF9PUFRJT04odikgXAotICAgIHYodXNlUHJpdmF0ZUNs
YXNzRmllbGRzLCAoU3VwcG9ydHNGVEwgfCBTdXBwb3J0c0RGRyksICJodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNzgxIiwgImh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTI3ODQiKQorICAgIHYodXNlUHJpdmF0ZUNsYXNzRmllbGRzLCAo
U3VwcG9ydHNGVEwgfCBTdXBwb3J0c0RGRyksICJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjEyNzgxIiwgImh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTI3ODQiKSBcCisgICAgdih1c2VQcml2YXRlTWV0aG9kcywgKFN1cHBvcnRzRlRMIHwg
U3VwcG9ydHNERkcpLCAiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
Mjc4MSIsICJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNzg0IikK
IAogY29uc3RleHByIHNpemVfdCBjb3VudE51bWJlck9mSlNDT3B0aW9ucygpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaAppbmRleCBi
ODcxNWFhNzJiYmNiNzMzOWQ2ZTM0MTNhYzU5Yzc0NDExN2I4MmE4Li45NDk3NjMxMjA1Y2EwZTRk
MGEyOTRlMDQ1Y2U3NmI3MWFkMTE0NGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgog
ICAgICAgICAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRh
YmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGZhbHNl
LCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNz
aWMsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2Rl
LCBkZXJpdmVkQ29udGV4dFR5cGUoKSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vLCBp
c0Fycm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUpOyB9
CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVj
dXRhYmxlSW5mbyh1c2VzRXZhbCgpLCBmYWxzZSwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5v
bmUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xh
c3NpYywgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1v
ZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8s
IGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgZmFsc2UsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSk7
IH0KIAogICAgIFRlbXBsYXRlT2JqZWN0TWFwJiBlbnN1cmVUZW1wbGF0ZU9iamVjdE1hcChWTSYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCBk
MzhjMzllNDQ3ZDYzMTNhYWYxOGNlMTIxN2Q3MjMzZTdmNjBjODFmLi45Y2ExYWFmNmFjYzA2ODQ0
NWE3ZjllMjBhNmVhZTE3ZjQ4YmM4ODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTQyNCw3ICs0MjQsNyBAQCBQcm9wZXJ0eVRhYmxlKiBTdHJ1
Y3R1cmU6Om1hdGVyaWFsaXplUHJvcGVydHlUYWJsZShWTSYgdm0sIGJvb2wgc2V0UHJvcGVydHlU
YWJsZQogCiAgICAgZm9yIChzaXplX3QgaSA9IHN0cnVjdHVyZXMuc2l6ZSgpOyBpLS07KSB7CiAg
ICAgICAgIHN0cnVjdHVyZSA9IHN0cnVjdHVyZXNbaV07Ci0gICAgICAgIGlmICghc3RydWN0dXJl
LT5tX3RyYW5zaXRpb25Qcm9wZXJ0eU5hbWUpCisgICAgICAgIGlmICghc3RydWN0dXJlLT5tX3Ry
YW5zaXRpb25Qcm9wZXJ0eU5hbWUgfHwgc3RydWN0dXJlLT50cmFuc2l0aW9uS2luZCgpID09IFRy
YW5zaXRpb25LaW5kOjpTZXRCcmFuZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBz
d2l0Y2ggKHN0cnVjdHVyZS0+dHJhbnNpdGlvbktpbmQoKSkgewogICAgICAgICBjYXNlIFRyYW5z
aXRpb25LaW5kOjpQcm9wZXJ0eUFkZGl0aW9uOiB7CkBAIC0xNDk2LDQgKzE0OTYsOTAgQEAgYXV0
byBTdHJ1Y3R1cmU6OmZpbmRQcm9wZXJ0eUhhc2hFbnRyeShQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKSBjb25zdCAtPiBPcHRpb24KICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCitCcmFu
ZGVkU3RydWN0dXJlOjpCcmFuZGVkU3RydWN0dXJlKFZNJiB2bSwgU3RydWN0dXJlKiBwcmV2aW91
cywgVW5pcXVlZFN0cmluZ0ltcGwqIGJyYW5kVWlkLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRp
b25XYXRjaHBvaW50RmlyZSogZGVmZXJyZWQpCisgICAgOiBTdHJ1Y3R1cmUodm0sIHByZXZpb3Vz
LCBkZWZlcnJlZCkKKyAgICAsIG1fYnJhbmQoYnJhbmRVaWQpCit7CisgICAgaWYgKHByZXZpb3Vz
LT5pc0JyYW5kZWRTdHJ1Y3R1cmUoKSkKKyAgICAgICAgbV9wYXJlbnRCcmFuZC5zZXQodm0sIHRo
aXMsIGpzQ2FzdDxCcmFuZGVkU3RydWN0dXJlKj4ocHJldmlvdXMpKTsKKyAgICB0aGlzLT5zZXRJ
c0JyYW5kZWRTdHJ1Y3R1cmUodHJ1ZSk7Cit9CisKK0JyYW5kZWRTdHJ1Y3R1cmU6OkJyYW5kZWRT
dHJ1Y3R1cmUoVk0mIHZtLCBCcmFuZGVkU3RydWN0dXJlKiBwcmV2aW91cywgRGVmZXJyZWRTdHJ1
Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqIGRlZmVycmVkKQorICAgIDogU3RydWN0dXJl
KHZtLCBwcmV2aW91cywgZGVmZXJyZWQpCisgICAgLCBtX2JyYW5kKHByZXZpb3VzLT5tX2JyYW5k
KQorICAgICwgbV9wYXJlbnRCcmFuZCh2bSwgdGhpcywgcHJldmlvdXMtPm1fcGFyZW50QnJhbmQu
Z2V0KCksIFdyaXRlQmFycmllcjxCcmFuZGVkU3RydWN0dXJlPjo6TWF5QmVOdWxsKQoreworICAg
IHRoaXMtPnNldElzQnJhbmRlZFN0cnVjdHVyZSh0cnVlKTsKK30KKworU3RydWN0dXJlKiBCcmFu
ZGVkU3RydWN0dXJlOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHByZXZpb3VzLCBVbmlxdWVk
U3RyaW5nSW1wbCogYnJhbmRVaWQsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9p
bnRGaXJlKiBkZWZlcnJlZCkKK3sKKyAgICBBU1NFUlQodm0uc3RydWN0dXJlU3RydWN0dXJlKTsK
KyAgICBCcmFuZGVkU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxCcmFuZGVkU3RydWN0dXJlPih2bS5oZWFwKSkgQnJhbmRlZFN0cnVjdHVyZSh2bSwg
cHJldmlvdXMsIGJyYW5kVWlkLCBkZWZlcnJlZCk7CisgICAgbmV3U3RydWN0dXJlLT5maW5pc2hD
cmVhdGlvbih2bSwgcHJldmlvdXMpOworICAgIHJldHVybiBuZXdTdHJ1Y3R1cmU7Cit9CisKK2Jv
b2wgQnJhbmRlZFN0cnVjdHVyZTo6Y2hlY2tCcmFuZChTeW1ib2wqIGJyYW5kKQoreworICAgIFVu
aXF1ZWRTdHJpbmdJbXBsKiBicmFuZFVpZCA9ICZicmFuZC0+dWlkKCk7CisgICAgZm9yIChCcmFu
ZGVkU3RydWN0dXJlKiBjdXJyZW50U3RydWN0dXJlID0gdGhpczsgY3VycmVudFN0cnVjdHVyZTsg
Y3VycmVudFN0cnVjdHVyZSA9IGN1cnJlbnRTdHJ1Y3R1cmUtPm1fcGFyZW50QnJhbmQuZ2V0KCkp
IHsKKyAgICAgICAgaWYgKGJyYW5kVWlkID09IGN1cnJlbnRTdHJ1Y3R1cmUtPm1fYnJhbmQpCisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitT
dHJ1Y3R1cmUqIFN0cnVjdHVyZTo6c2V0QnJhbmRUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0
dXJlSW1wbChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVW5pcXVlZFN0cmluZ0ltcGwqIGJyYW5kSUQp
Cit7CisgICAgQVNTRVJUKHN0cnVjdHVyZS0+aXNPYmplY3QoKSk7CisKKyAgICBpZiAoc3RydWN0
dXJlLT5oYXNCZWVuRGljdGlvbmFyeSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IGlmIChTdHJ1Y3R1cmUqIGV4aXN0aW5nVHJhbnNpdGlvbiA9IHN0cnVjdHVyZS0+bV90cmFuc2l0
aW9uVGFibGUuZ2V0KGJyYW5kSUQsIDAsIFRyYW5zaXRpb25LaW5kOjpTZXRCcmFuZCkpCisgICAg
ICAgIHJldHVybiBleGlzdGluZ1RyYW5zaXRpb247CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KworU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnNldEJyYW5kVHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0
cnVjdHVyZUNvbmN1cnJlbnRseShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVW5pcXVlZFN0cmluZ0lt
cGwqIGJyYW5kSUQpCit7CisgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihzdHJ1Y3R1cmUt
Pm1fbG9jayk7CisgICAgcmV0dXJuIHNldEJyYW5kVHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVj
dHVyZUltcGwoc3RydWN0dXJlLCBicmFuZElEKTsKK30KKworU3RydWN0dXJlKiBTdHJ1Y3R1cmU6
OnNldEJyYW5kVHJhbnNpdGlvbihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTeW1ib2wq
IGJyYW5kLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogZGVmZXJy
ZWQpCit7CisgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7CisgICAgICAgIGlm
IChTdHJ1Y3R1cmUqIGV4aXN0aW5nVHJhbnNpdGlvbiA9IHN0cnVjdHVyZS0+bV90cmFuc2l0aW9u
VGFibGUuZ2V0KCZicmFuZC0+dWlkKCksIDAsIFRyYW5zaXRpb25LaW5kOjpTZXRCcmFuZCkpIHsK
KyAgICAgICAgICAgIEFTU0VSVChleGlzdGluZ1RyYW5zaXRpb24tPnRyYW5zaXRpb25LaW5kKCkg
PT0gVHJhbnNpdGlvbktpbmQ6OlNldEJyYW5kKTsKKyAgICAgICAgICAgIHJldHVybiBleGlzdGlu
Z1RyYW5zaXRpb247CisgICAgICAgIH0KKyAgICB9CisKKyAgICBTdHJ1Y3R1cmUqIHRyYW5zaXRp
b24gPSBCcmFuZGVkU3RydWN0dXJlOjpjcmVhdGUodm0sIHN0cnVjdHVyZSwgJmJyYW5kLT51aWQo
KSwgZGVmZXJyZWQpOworICAgIHRyYW5zaXRpb24tPnNldFRyYW5zaXRpb25LaW5kKFRyYW5zaXRp
b25LaW5kOjpTZXRCcmFuZCk7CisKKyAgICB0cmFuc2l0aW9uLT5tX2NhY2hlZFByb3RvdHlwZUNo
YWluLnNldE1heUJlTnVsbCh2bSwgdHJhbnNpdGlvbiwgc3RydWN0dXJlLT5tX2NhY2hlZFByb3Rv
dHlwZUNoYWluLmdldCgpKTsKKyAgICB0cmFuc2l0aW9uLT5tX2Jsb2Iuc2V0SW5kZXhpbmdNb2Rl
SW5jbHVkaW5nSGlzdG9yeShzdHJ1Y3R1cmUtPmluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3Rvcnko
KSk7CisgICAgdHJhbnNpdGlvbi0+bV90cmFuc2l0aW9uUHJvcGVydHlOYW1lID0gJmJyYW5kLT51
aWQoKTsKKyAgICB0cmFuc2l0aW9uLT5zZXRUcmFuc2l0aW9uUHJvcGVydHlBdHRyaWJ1dGVzKDAp
OworICAgIHRyYW5zaXRpb24tPnNldFByb3BlcnR5VGFibGUodm0sIHN0cnVjdHVyZS0+dGFrZVBy
b3BlcnR5VGFibGVPckNsb25lSWZQaW5uZWQodm0pKTsKKyAgICB0cmFuc2l0aW9uLT5zZXRNYXhP
ZmZzZXQodm0sIHN0cnVjdHVyZS0+bWF4T2Zmc2V0KCkpOworICAgIGNoZWNrT2Zmc2V0KHRyYW5z
aXRpb24tPm1heE9mZnNldCgpLCB0cmFuc2l0aW9uLT5pbmxpbmVDYXBhY2l0eSgpKTsKKworICAg
IGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7CisgICAgICAgIFByb3BlcnR5VGFibGUq
IHRhYmxlID0gdHJhbnNpdGlvbi0+ZW5zdXJlUHJvcGVydHlUYWJsZSh2bSk7CisgICAgICAgIHRy
YW5zaXRpb24tPnBpbihob2xkTG9jayh0cmFuc2l0aW9uLT5tX2xvY2spLCB2bSwgdGFibGUpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soc3RydWN0dXJlLT5t
X2xvY2spOworICAgICAgICBzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblRhYmxlLmFkZCh2bSwgdHJh
bnNpdGlvbik7CisgICAgfQorCisgICAgdHJhbnNpdGlvbi0+Y2hlY2tPZmZzZXRDb25zaXN0ZW5j
eSgpOworICAgIHJldHVybiB0cmFuc2l0aW9uOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKaW5kZXggM2U0NzUxNGM5Y2Q2
MWE5ODZhMzAwYTA5OTZkYTA5ZDc3NmRkZjIwNi4uZjllNDllYTliNDVhZDk1ZmNkZTljNzBlZjZi
MWI3ZjQxNjQ5Y2EwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmgKQEAgLTEyMyw3ICsxMjMsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFN0cnVjdHVyZSogbV9z
dHJ1Y3R1cmU7CiB9OwogCi1jbGFzcyBTdHJ1Y3R1cmUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsK
K2NsYXNzIFN0cnVjdHVyZSA6IHB1YmxpYyBKU0NlbGwgewogICAgIHN0YXRpYyBjb25zdGV4cHIg
dWludDE2X3Qgc2hvcnRJbnZhbGlkT2Zmc2V0ID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MTZf
dD46Om1heCgpIC0gMTsKICAgICBzdGF0aWMgY29uc3RleHByIHVpbnQxNl90IHVzZVJhcmVEYXRh
RmxhZyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDE2X3Q+OjptYXgoKTsKIHB1YmxpYzoKQEAg
LTE0NiwxMyArMTQ2LDcgQEAgcHVibGljOgogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IGJvb2wgaXNWYWxpZFByb3RvdHlwZShKU1ZhbHVlKTsKIAotcHJpdmF0ZToKLSAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJiB2bSkKLSAgICB7Ci0gICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtKTsKLSAgICAgICAgQVNTRVJUKG1fcHJvdG90eXBlLmdldCgpLmlzRW1wdHkoKSB8fCBpc1Zh
bGlkUHJvdG90eXBlKG1fcHJvdG90eXBlLmdldCgpKSk7Ci0gICAgfQotCitwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0sIGNvbnN0IFN0cnVjdHVyZSogcHJldmlvdXMp
CiAgICAgewogICAgICAgICB0aGlzLT5maW5pc2hDcmVhdGlvbih2bSk7CkBAIC0xNjUsNiArMTU5
LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKK3ByaXZhdGU6CisgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihWTSYgdm0pCisgICAgeworICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bih2bSk7CisgICAgICAgIEFTU0VSVChtX3Byb3RvdHlwZS5nZXQoKS5pc0VtcHR5KCkgfHwgaXNW
YWxpZFByb3RvdHlwZShtX3Byb3RvdHlwZS5nZXQoKSkpOworICAgIH0KKwogICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBDcmVhdGluZ0Vhcmx5Q2VsbFRhZykKICAgICB7CiAgICAgICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCB0aGlzLCBDcmVhdGluZ0Vhcmx5Q2VsbCk7CkBAIC0y
MDYsNiArMjA3LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHByZXZlbnRFeHRl
bnNpb25zVHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSopOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IG5vblByb3BlcnR5VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIFRyYW5zaXRpb25LaW5kKTsK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBub25Qcm9wZXJ0eVRyYW5z
aXRpb25TbG93KFZNJiwgU3RydWN0dXJlKiwgVHJhbnNpdGlvbktpbmQpOworICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIHNldEJyYW5kVHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJl
bnRseShTdHJ1Y3R1cmUqLCBVbmlxdWVkU3RyaW5nSW1wbCopOworICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIHNldEJyYW5kVHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIFN5bWJvbCogYnJhbmQsIERl
ZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiA9IG51bGxwdHIpOwogCiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1NlYWxlZChWTSYpOwogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIGJvb2wgaXNGcm96ZW4oVk0mKTsKQEAgLTcxNSwyMSArNzE4LDI1IEBAIHB1YmxpYzoK
ICAgICBERUZJTkVfQklURklFTEQoYm9vbCwgaGFzQmVlbkRpY3Rpb25hcnksIEhhc0JlZW5EaWN0
aW9uYXJ5LCAxLCAyNyk7CiAgICAgREVGSU5FX0JJVEZJRUxEKGJvb2wsIHByb3RlY3RQcm9wZXJ0
eVRhYmxlV2hpbGVUcmFuc2l0aW9uaW5nLCBQcm90ZWN0UHJvcGVydHlUYWJsZVdoaWxlVHJhbnNp
dGlvbmluZywgMSwgMjgpOwogICAgIERFRklORV9CSVRGSUVMRChib29sLCBoYXNVbmRlcnNjb3Jl
UHJvdG9Qcm9wZXJ0eUV4Y2x1ZGluZ09yaWdpbmFsUHJvdG8sIEhhc1VuZGVyc2NvcmVQcm90b1By
b3BlcnR5RXhjbHVkaW5nT3JpZ2luYWxQcm90bywgMSwgMjkpOworICAgIERFRklORV9CSVRGSUVM
RChib29sLCBpc0JyYW5kZWRTdHJ1Y3R1cmUsIElzQnJhbmRlZFN0cnVjdHVyZSwgMSwgMzApOwog
CiAgICAgc3RhdGljX2Fzc2VydChzX2JpdFdpZHRoT2ZUcmFuc2l0aW9uUHJvcGVydHlBdHRyaWJ1
dGVzIDw9IHNpemVvZihUcmFuc2l0aW9uUHJvcGVydHlBdHRyaWJ1dGVzKSAqIDgpOwogICAgIHN0
YXRpY19hc3NlcnQoc19iaXRXaWR0aE9mVHJhbnNpdGlvbktpbmQgPD0gc2l6ZW9mKFRyYW5zaXRp
b25LaW5kKSAqIDgpOwogCitwcm90ZWN0ZWQ6CisgICAgU3RydWN0dXJlKFZNJiwgU3RydWN0dXJl
KiwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqKTsKKwogcHJpdmF0
ZToKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3Rv
dHlwZSwgY29uc3QgVHlwZUluZm8mLCBjb25zdCBDbGFzc0luZm8qLCBJbmRleGluZ1R5cGUsIHVu
c2lnbmVkIGlubGluZUNhcGFjaXR5KTsKICAgICBTdHJ1Y3R1cmUoVk0mKTsKLSAgICBTdHJ1Y3R1
cmUoVk0mLCBTdHJ1Y3R1cmUqLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50
RmlyZSopOwogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwg
RGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqID0gbnVsbHB0cik7CiAg
ICAgCiAgICAgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGlu
Z1N0cnVjdHVyZUltcGwoU3RydWN0dXJlKiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgdW5zaWdu
ZWQgYXR0cmlidXRlcywgUHJvcGVydHlPZmZzZXQmKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBy
ZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKFN0cnVjdHVy
ZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHJvcGVydHlPZmZzZXQmKTsK
KyAgICBzdGF0aWMgU3RydWN0dXJlKiBzZXRCcmFuZFRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1
Y3R1cmVJbXBsKFN0cnVjdHVyZSosIFVuaXF1ZWRTdHJpbmdJbXBsKik7CiAKICAgICAvLyBUaGlz
IHdpbGwgcmV0dXJuIHRoZSBzdHJ1Y3R1cmUgdGhhdCBoYXMgYSB1c2FibGUgcHJvcGVydHkgdGFi
bGUsIHRoYXQgcHJvcGVydHkgdGFibGUsCiAgICAgLy8gYW5kIHRoZSBsaXN0IG9mIHN0cnVjdHVy
ZXMgdGhhdCB3ZSB2aXNpdGVkIGJlZm9yZSB3ZSBnb3QgdG8gaXQuIElmIGl0IHJldHVybnMgYQpA
QCAtODc0LDQgKzg4MSwyOSBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBKU0RvbGxhclZN
SGVscGVyOwogfTsKIAorY2xhc3MgQnJhbmRlZFN0cnVjdHVyZSBmaW5hbCA6IHB1YmxpYyBTdHJ1
Y3R1cmUgeworICAgIHR5cGVkZWYgU3RydWN0dXJlIEJhc2U7CisKK3B1YmxpYzoKKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiAmdm0u
YnJhbmRlZFN0cnVjdHVyZVNwYWNlOworICAgIH0KKworICAgIGJvb2wgY2hlY2tCcmFuZChTeW1i
b2wqIGJyYW5kKTsKKworcHJpdmF0ZTogCisgICAgQnJhbmRlZFN0cnVjdHVyZShWTSYsIFN0cnVj
dHVyZSosIFVuaXF1ZWRTdHJpbmdJbXBsKiBicmFuZCwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0
aW9uV2F0Y2hwb2ludEZpcmUqKTsKKyAgICBCcmFuZGVkU3RydWN0dXJlKFZNJiwgQnJhbmRlZFN0
cnVjdHVyZSosIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKik7CisK
KyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBVbmlxdWVkU3Ry
aW5nSW1wbCogYnJhbmQsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJl
KiA9IG51bGxwdHIpOworCisgICAgVW5pcXVlZFN0cmluZ0ltcGwqIG1fYnJhbmQ7CisgICAgV3Jp
dGVCYXJyaWVyPEJyYW5kZWRTdHJ1Y3R1cmU+IG1fcGFyZW50QnJhbmQ7CisKKyAgICBmcmllbmQg
Y2xhc3MgU3RydWN0dXJlOworfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKaW5kZXggNzM5ZTFlZjNi
OWM3Y2VjMjM1NGI2YTZjNTRjYTk5N2ZjNWZkMmFjNS4uZDRlNWE1MDcyZjMwMzIzN2Y4OWU1YzA5
OGU0Mzk2NDI2NWRhNWJkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUlubGluZXMuaApAQCAtNjEsNyArNjEsMTIgQEAgaW5saW5lIFN0cnVjdHVyZSog
U3RydWN0dXJlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtKQogaW5saW5lIFN0cnVjdHVyZSogU3Ry
dWN0dXJlOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHByZXZpb3VzLCBEZWZlcnJlZFN0cnVj
dHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogZGVmZXJyZWQpCiB7CiAgICAgQVNTRVJUKHZt
LnN0cnVjdHVyZVN0cnVjdHVyZSk7Ci0gICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTdHJ1Y3R1cmU+KHZtLmhlYXApKSBTdHJ1Y3R1cmUodm0s
IHByZXZpb3VzLCBkZWZlcnJlZCk7CisgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmU7CisgICAg
aWYgKHByZXZpb3VzLT5pc0JyYW5kZWRTdHJ1Y3R1cmUoKSkKKyAgICAgICAgbmV3U3RydWN0dXJl
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QnJhbmRlZFN0cnVjdHVyZT4odm0uaGVhcCkp
IEJyYW5kZWRTdHJ1Y3R1cmUodm0sIGpzQ2FzdDxCcmFuZGVkU3RydWN0dXJlKj4ocHJldmlvdXMp
LCBkZWZlcnJlZCk7CisgICAgZWxzZQorICAgICAgICBuZXdTdHJ1Y3R1cmUgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxTdHJ1Y3R1cmU+KHZtLmhlYXApKSBTdHJ1Y3R1cmUodm0sIHByZXZp
b3VzLCBkZWZlcnJlZCk7CisKICAgICBuZXdTdHJ1Y3R1cmUtPmZpbmlzaENyZWF0aW9uKHZtLCBw
cmV2aW91cyk7CiAgICAgcmV0dXJuIG5ld1N0cnVjdHVyZTsKIH0KQEAgLTE4MSw2ICsxODYsNyBA
QCB2b2lkIFN0cnVjdHVyZTo6Zm9yRWFjaFByb3BlcnR5Q29uY3VycmVudGx5KGNvbnN0IEZ1bmN0
b3ImIGZ1bmN0b3IpCiAgICAgICAgIGNhc2UgVHJhbnNpdGlvbktpbmQ6OlByb3BlcnR5QXR0cmli
dXRlQ2hhbmdlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHJhbnNpdGlvbktp
bmQ6OlByb3BlcnR5RGVsZXRpb246CisgICAgICAgIGNhc2UgVHJhbnNpdGlvbktpbmQ6OlNldEJy
YW5kOgogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgKaW5kZXggNjNjZjhlMDIxMjIx
MTQ1ZWMxYzllM2Y2NDM1MGU0YTM3YWUzOTdjNi4uODA2MmMyYzc4N2MzZjVhOGJkNmIyYmFjN2Uz
ODhhMmM2M2I0NmZhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgKQEAgLTU1LDcgKzU1LDEwIEBAIGVudW0g
Y2xhc3MgVHJhbnNpdGlvbktpbmQgOiB1aW50OF90IHsKICAgICBBZGRJbmRleGVkQWNjZXNzb3Jz
LAogICAgIFByZXZlbnRFeHRlbnNpb25zLAogICAgIFNlYWwsCi0gICAgRnJlZXplCisgICAgRnJl
ZXplLAorCisgICAgLy8gU3VwcG9ydCBmb3IgdHJhbnNpdGlvbnMgcmVsYXRlZCB3aXRoIHByaXZh
dGUgYnJhbmQKKyAgICBTZXRCcmFuZAogfTsKIAogc3RhdGljIGNvbnN0ZXhwciBhdXRvIEZpcnN0
Tm9uUHJvcGVydHlUcmFuc2l0aW9uS2luZCA9IFRyYW5zaXRpb25LaW5kOjpBbGxvY2F0ZVVuZGVj
aWRlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRh
YmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcApp
bmRleCAxNjRjYTZkNDMxMGU2YmIzOGU2NDdlMmY2YmUyZjlmN2Q5ZjMyNjVjLi5mYjQ2MDAxYmFl
ZDJmOWMxYzg3ZTU3MjJlMjYxNWI0MTQ1ZDE4NzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCkBAIC0xODQsNyArMTg0LDcgQEAgU3ltYm9sVGFi
bGUqIFN5bWJvbFRhYmxlOjpjbG9uZVNjb3BlUGFydChWTSYgdm0pCiAKICAgICAgICAgewogICAg
ICAgICAgICAgZm9yIChhdXRvIG5hbWUgOiBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcykKLSAg
ICAgICAgICAgICAgICByZXN1bHQtPm1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChuYW1l
KTsKKyAgICAgICAgICAgICAgICByZXN1bHQtPm1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFk
ZChuYW1lLmtleSwgbmFtZS52YWx1ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAppbmRleCA1OWE3MjMwNWQzYTcw
NDIwYWJiMWFmNGVmYmU2N2ZkNmNjZGZkZWEwLi5hNTM4MWNjYmVlMWNiN2MzYmNjZDY1ZWE3ZTA4
MTZlYjQzYTU5NTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
eW1ib2xUYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRh
YmxlLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJTY29wZWRBcmd1bWVudHNUYWJsZS5o
IgogI2luY2x1ZGUgIlR5cGVMb2NhdGlvbi5oIgogI2luY2x1ZGUgIlZhck9mZnNldC5oIgorI2lu
Y2x1ZGUgIlZhcmlhYmxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJXYXRjaHBvaW50LmgiCiAj
aW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CkBAIC00NTAsOCAr
NDUxLDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmlu
Z0ltcGw+LCBSZWZQdHI8VHlwZVNldD4sIElkZW50aWZpZXJSZXBIYXNoPiBVbmlxdWVUeXBlU2V0
TWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDxWYXJPZmZzZXQsIFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4+IE9mZnNldFRvVmFyaWFibGVNYXA7CiAgICAgdHlwZWRlZiBWZWN0b3I8U3ltYm9sVGFi
bGVFbnRyeSo+IExvY2FsVG9FbnRyeVZlYzsKLSAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPFVu
aXF1ZWRTdHJpbmdJbXBsPiwgSWRlbnRpZmllclJlcEhhc2g+IFByaXZhdGVOYW1lU2V0OwotICAg
IHR5cGVkZWYgV1RGOjpJdGVyYXRvclJhbmdlPHR5cGVuYW1lIFByaXZhdGVOYW1lU2V0OjppdGVy
YXRvcj4gUHJpdmF0ZU5hbWVJdGVyYXRvclJhbmdlOworICAgIHR5cGVkZWYgV1RGOjpJdGVyYXRv
clJhbmdlPHR5cGVuYW1lIFByaXZhdGVOYW1lRW52aXJvbm1lbnQ6Oml0ZXJhdG9yPiBQcml2YXRl
TmFtZUl0ZXJhdG9yUmFuZ2U7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vi
c3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CkBAIC02MDUsMTQgKzYwNSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtYWtlSXRlcmF0
b3JSYW5nZShtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5iZWdpbigpLCBtX3JhcmVEYXRhLT5t
X3ByaXZhdGVOYW1lcy5lbmQoKSk7CiAgICAgfQogCi0gICAgdm9pZCBhZGRQcml2YXRlTmFtZShV
bmlxdWVkU3RyaW5nSW1wbCoga2V5KQorICAgIHZvaWQgYWRkUHJpdmF0ZU5hbWUoY29uc3QgUmVm
UHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYga2V5LCBQcml2YXRlTmFtZUVudHJ5IHZhbHVlKQogICAg
IHsKICAgICAgICAgQVNTRVJUKGtleSAmJiAha2V5LT5pc1N5bWJvbCgpKTsKICAgICAgICAgaWYg
KCFtX3JhcmVEYXRhKQogICAgICAgICAgICAgbV9yYXJlRGF0YSA9IFdURjo6bWFrZVVuaXF1ZTxT
eW1ib2xUYWJsZVJhcmVEYXRhPigpOwogCi0gICAgICAgIEFTU0VSVCghbV9yYXJlRGF0YS0+bV9w
cml2YXRlTmFtZXMuY29udGFpbnMoa2V5KSk7Ci0gICAgICAgIG1fcmFyZURhdGEtPm1fcHJpdmF0
ZU5hbWVzLmFkZChrZXkpOworICAgICAgICBBU1NFUlQobV9yYXJlRGF0YS0+bV9wcml2YXRlTmFt
ZXMuZmluZChrZXkpID09IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmVuZCgpKTsKKyAgICAg
ICAgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKGtleSwgdmFsdWUpOwogICAgIH0KIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVudHJ5PgpAQCAtNzU2LDcgKzc1Niw3IEBAIHB1YmxpYzoK
ICAgICAgICAgT2Zmc2V0VG9WYXJpYWJsZU1hcCBtX29mZnNldFRvVmFyaWFibGVNYXA7CiAgICAg
ICAgIFVuaXF1ZVR5cGVTZXRNYXAgbV91bmlxdWVUeXBlU2V0TWFwOwogICAgICAgICBXcml0ZUJh
cnJpZXI8Q29kZUJsb2NrPiBtX2NvZGVCbG9jazsKLSAgICAgICAgUHJpdmF0ZU5hbWVTZXQgbV9w
cml2YXRlTmFtZXM7CisgICAgICAgIFByaXZhdGVOYW1lRW52aXJvbm1lbnQgbV9wcml2YXRlTmFt
ZXM7CiAgICAgfTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApp
bmRleCA4NDAzZTJjODFjNzI2ODFjMGQ1MTA4NzlhOGJlOTgwZjZlMWUwZjhjLi5jMzJkZTNmMzU5
Njg3ZjBkMmU2NmMxZmUwMzVjMzY1NGNkMzU2NWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCkBAIC0zNjksNiArMzY5LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBU
eXBlIGhlYXBUeXBlLCBXVEY6OlJ1bkxvb3AqIHJ1bkxvb3AsIGJvb2wqIHN1Y2Nlc3MpCiAgICAg
LCBzdHJ1Y3R1cmVDaGFpblNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxIZWFwQ2Vs
bFR5cGUuZ2V0KCksIFN0cnVjdHVyZUNoYWluKQogICAgICwgc3RydWN0dXJlUmFyZURhdGFTcGFj
ZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdl
dCgpLCBTdHJ1Y3R1cmVSYXJlRGF0YSkgLy8gSGFzaDoweGFjYTRlNjJkCiAgICAgLCBzdHJ1Y3R1
cmVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxU
eXBlLmdldCgpLCBTdHJ1Y3R1cmUpIC8vIEhhc2g6MHgxZjFiY2RjYQorICAgICwgYnJhbmRlZFN0
cnVjdHVyZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFw
Q2VsbFR5cGUuZ2V0KCksIEJyYW5kZWRTdHJ1Y3R1cmUpCiAgICAgLCBzeW1ib2xUYWJsZVNwYWNl
IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0
KCksIFN5bWJvbFRhYmxlKSAvLyBIYXNoOjB4YzUyMTVhZmQKICAgICAsIGV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzKGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFj
ZSkKICAgICAsIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMoZXhlY3V0
YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5k
ZXggMjdhYWZjMDMyNjZmZDM3YzI1YWEyYTQzMTIyZWI2YTEzZTY1OGM5Ny4uMmU4NzY2MzdkYzlj
OTBiZWIyZjRkZjFlMGQ0MWI0MDY5MjBmY2QxMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCkBAIC00NjUsNiArNDY1LDcgQEAgcHVibGljOgogICAgIElzb1N1YnNwYWNlIHN0cnVjdHVy
ZUNoYWluU3BhY2U7CiAgICAgSXNvU3Vic3BhY2Ugc3RydWN0dXJlUmFyZURhdGFTcGFjZTsKICAg
ICBJc29TdWJzcGFjZSBzdHJ1Y3R1cmVTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBicmFuZGVkU3Ry
dWN0dXJlU3BhY2U7CiAgICAgSXNvU3Vic3BhY2Ugc3ltYm9sVGFibGVTcGFjZTsKIAogI2RlZmlu
ZSBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKG5hbWUpIFwKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTE5NWFlYmM0NmMy
MzE3Yjk0ZTQwN2Y2ZTYwYmU0YjdhOWRkMGUwMy4uNDdmYzg3OTBmMzI4ZWJiNWUzYjY4NGMyMzNi
OGVkNTUyYTIxNTEwOCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAyMS0wMS0yOSAgQ2FpbyBMaW1hICA8dGlj
YWlvbGltYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTTmV4dF0gSW1wbGVtZW50IHByaXZhdGUg
bWV0aG9kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk0NDM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBzdHJlc3MvcHJpdmF0ZS1icmFuZC1pbnN0YWxsZWQtYWZ0ZXItc3VwZXItY2FsbC1mcm9tLWFy
cm93LWZ1bmN0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1icmFuZC1p
bnN0YWxsZWQtYWZ0ZXItc3VwZXItY2FsbC1mcm9tLWV2YWwuanM6IEFkZGVkLgorICAgICAgICAq
IHN0cmVzcy9wcml2YXRlLW1ldGhvZC1icmFuZC1jaGVjay5qczogQWRkZWQuCisgICAgICAgICog
c3RyZXNzL3ByaXZhdGUtbWV0aG9kLWNoYW5nZS1hdHRyaWJ1dGUtZnJvbS1icmFuZGVkLXN0cnVj
dHVyZS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWNoYW5nZS1w
cm90b3R5cGUtZnJvbS1icmFuZGVkLXN0cnVjdHVyZS5qczogQWRkZWQuCisgICAgICAgICogc3Ry
ZXNzL3ByaXZhdGUtbWV0aG9kLWNoZWNrLXByaXZhdGUtYnJhbmQtaWMuanM6IEFkZGVkLgorICAg
ICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZC1jaGVjay1zdHJ1Y3R1cmUtbWlzcy5qczogQWRk
ZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWNvbXBhcmlzb24uanM6IEFkZGVk
LgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZC1kZWxldGUtcHJvcGVydHktZnJvbS1i
cmFuZGVkLXN0cnVjdHVyZS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0
aG9kLWV4dGVuZHMtYnJhbmQtY2hlY2suanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2
YXRlLW1ldGhvZC1nZXQtYW5kLWNhbGwuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2
YXRlLW1ldGhvZC1pbnZhbGlkLW11bHRpcGxlLWJyYW5kLWluc3RhbGxhdGlvbi5qczogQWRkZWQu
CisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWludmFsaWRhdGUtY29tcGlsZWQtd2l0
aC1jb25zdGFudC1zeW1ib2wuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1l
dGhvZC1uZXN0ZWQtY2xhc3MuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1l
dGhvZC1vbi1zZWFsZWQtb2JqZWN0cy5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZh
dGUtbWV0aG9kLW9uLXVuY2FjaGVhYmxlLWRpY3Rpb25hcnkuanM6IEFkZGVkLgorICAgICAgICAq
IHN0cmVzcy9wcml2YXRlLW1ldGhvZC1wb2x5bW9ycGhpYy13aXRoLWNvbnN0YW50LXN5bWJvbC5q
czogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9kLXNldC1icmFuZC1zaG91
bGQtaGF2ZS13cml0ZS1iYXJyaWVyLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0
ZS1tZXRob2QtdW50eXBlZC11c2UuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2YXRl
LW1ldGhvZC13aXRoLXVuY2FjaGVhYmxlLWRpY3Rpb25hcnktdHJhbnNpdGlvbi5qczogQWRkZWQu
CisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1pbmxpbmUtY2FjaGUuanM6IEFkZGVk
LgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZHMtbWVnYW1vcnBoaWMtaWMuanM6IEFk
ZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZHMtb24tcHJveHkuanM6IEFkZGVk
LgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZHMtcG9seS1pYy1tdWx0aXBsZS1jbGFz
c2VzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2RzLXBvbHktaWMt
c2luZ2xlLWNsYXNzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1uYW1lcy1h
dmFpbGFibGUtb24tZGlyZWN0LWV2YWwuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3QyNjIvY29u
ZmlnLnlhbWw6CisKIDIwMjEtMDEtMjggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLCByZWNvdmVyIHJlbW92ZWQgdGVzdHMKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVyLWNh
bGwtZnJvbS1hcnJvdy1mdW5jdGlvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYnJhbmQt
aW5zdGFsbGVkLWFmdGVyLXN1cGVyLWNhbGwtZnJvbS1hcnJvdy1mdW5jdGlvbi5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43ZTI5YzdiYzExYzM2MzQzOTE1YmQyMDJlODAyMjM3YTg4MDQxZTRmCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1icmFuZC1pbnN0YWxsZWQtYWZ0ZXItc3Vw
ZXItY2FsbC1mcm9tLWFycm93LWZ1bmN0aW9uLmpzCkBAIC0wLDAgKzEsMjcgQEAKKy8vQCByZXF1
aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0
KGEsIGUpIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBl
Y3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKK30KKworY2xhc3MgQSB7fQorCitjbGFz
cyBDIGV4dGVuZHMgQSB7CisgICAgI21ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuICJiYXNlIjsK
KyAgICB9CisKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgbGV0IGluaXQgPSAoKSA9PiBz
dXBlcigpOworICAgICAgICBpbml0KCk7CisgICAgfQorCisgICAgYmFzZUFjY2VzcygpIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuI21ldGhvZCgpOworICAgIH0KK30KKworbGV0IGMgPSBuZXcgQygp
OworYXNzZXJ0KGMuYmFzZUFjY2VzcygpLCAiYmFzZSIpOworCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9wcml2YXRlLWJyYW5kLWluc3RhbGxlZC1hZnRlci1zdXBlci1jYWxsLWZyb20tZXZh
bC5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVy
LWNhbGwtZnJvbS1ldmFsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllMTZlZTM4ZTM0MWNjYzE2MTA1NGRiMTcy
YjVlMjIxZmI2ODZjODIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRl
LWJyYW5kLWluc3RhbGxlZC1hZnRlci1zdXBlci1jYWxsLWZyb20tZXZhbC5qcwpAQCAtMCwwICsx
LDI2IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisK
K2Z1bmN0aW9uIGFzc2VydChhLCBlKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7Cit9CisKK2Ns
YXNzIEEge30KKworY2xhc3MgQyBleHRlbmRzIEEgeworICAgICNtZXRob2QoKSB7CisgICAgICAg
IHJldHVybiAiYmFzZSI7CisgICAgfQorCisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIGV2
YWwoInN1cGVyKCkiKTsKKyAgICB9CisKKyAgICBiYXNlQWNjZXNzKCkgeworICAgICAgICByZXR1
cm4gdGhpcy4jbWV0aG9kKCk7CisgICAgfQorfQorCitsZXQgYyA9IG5ldyBDKCk7Cithc3NlcnQo
Yy5iYXNlQWNjZXNzKCksICJiYXNlIik7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3By
aXZhdGUtbWV0aG9kLWJyYW5kLWNoZWNrLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRo
b2QtYnJhbmQtY2hlY2suanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmE1MTc1YTNmNWJjYWY5YjI0MGIxOTYwMGE3
YjdiZGQxZWIwNWU0OQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUt
bWV0aG9kLWJyYW5kLWNoZWNrLmpzCkBAIC0wLDAgKzEsMzMgQEAKKy8vQCByZXF1aXJlT3B0aW9u
cygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsK
KyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiAr
IGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKK30KKworY2xhc3MgQyB7CisgICAgI20oKSB7CisgICAg
ICAgIHJldHVybiB0aGlzLiNmOworICAgIH0KKworICAgIG1ldGhvZCgpIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuI20oKTsKKyAgICB9CisKKyAgICAjZiA9IDQ7Cit9CisKK2xldCBjID0gbmV3IEMo
KTsKK2Fzc2VydChjLm1ldGhvZCgpLCA0KTsKKwordHJ5IHsKKyAgICBjbGFzcyBDIHsKKyAgICAg
ICAgI20oKSB7IHJldHVybiAzOyB9CisgICAgfQorCisgICAgbGV0IG8gPSBuZXcgQygpOworICAg
IGMubWV0aG9kLmNhbGwobyk7Cit9IGNhdGNoIChlKSB7CisgICAgYXNzZXJ0KGUgaW5zdGFuY2Vv
ZiBUeXBlRXJyb3IsIHRydWUpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2
YXRlLW1ldGhvZC1jaGFuZ2UtYXR0cmlidXRlLWZyb20tYnJhbmRlZC1zdHJ1Y3R1cmUuanMgYi9K
U1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1jaGFuZ2UtYXR0cmlidXRlLWZyb20tYnJhbmRl
ZC1zdHJ1Y3R1cmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc5MGM0MDM1OWM5OWUwYzc2ZTY3NzE1NWQyM2Qx
NzFjYTM2NDRkMgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0
aG9kLWNoYW5nZS1hdHRyaWJ1dGUtZnJvbS1icmFuZGVkLXN0cnVjdHVyZS5qcwpAQCAtMCwwICsx
LDUwIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisK
K2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3Rl
ZCkgeworICAgICAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBleHBlY3RlZCArICIgYnV0IGdvdDogIiArIGFjdHVh
bCk7CisgICAgfSwKKworICAgIHRocm93czogZnVuY3Rpb24gKGV4cGVjdGVkRXJyb3IsIG9wKSB7
CisgICAgICAgIHRyeSB7CisgICAgICAgICAgb3AoKTsKKyAgICAgICAgfSBjYXRjaChlKSB7Cisg
ICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgZXhwZWN0ZWRFcnJvcikpCisgICAgICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4cGVjdGVkRXJy
b3IgKyAiIGJ1dCB0aHJldzogIiArIGUpOworICAgICAgICB9CisgICAgfQorfTsKKworY2xhc3Mg
QyB7CisgICAgI20oKSB7IHJldHVybiAndGVzdCc7IH0KKworICAgIGFjY2VzcygpIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuI20oKTsKKyAgICB9Cit9CisKK2xldCBjMSA9IG5ldyBDKCk7CitjMS5m
b28gPSAndGVzdCc7Cithc3NlcnQuc2FtZVZhbHVlKGMxLmFjY2VzcygpLCAndGVzdCcpOworYXNz
ZXJ0LnNhbWVWYWx1ZShjMS5mb28sICd0ZXN0Jyk7Cithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwg
ZnVuY3Rpb24gKCkgeworICAgIGMxLmFjY2Vzcy5jYWxsKHt9KTsKK30pOworCitPYmplY3QuZGVm
aW5lUHJvcGVydHkoYzEsICdmb28nLCB7CisgICAgd3JpdGFibGU6IGZhbHNlLAorICAgIGVudW1l
cmFibGU6IGZhbHNlCit9KTsKKworYXNzZXJ0LnNhbWVWYWx1ZShjMS5hY2Nlc3MoKSwgJ3Rlc3Qn
KTsKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgYzEuYWNjZXNz
LmNhbGwoe30pOworfSk7CisKK2xldCBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihjMSwgJ2ZvbycpOworCithc3NlcnQuc2FtZVZhbHVlKGRlc2NyaXB0b3IudmFs
dWUsICd0ZXN0Jyk7Cithc3NlcnQuc2FtZVZhbHVlKGRlc2NyaXB0b3IuZW51bWVyYWJsZSwgZmFs
c2UpOworYXNzZXJ0LnNhbWVWYWx1ZShkZXNjcmlwdG9yLndyaXRhYmxlLCBmYWxzZSk7CisKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWNoYW5nZS1wcm90b3R5cGUt
ZnJvbS1icmFuZGVkLXN0cnVjdHVyZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9k
LWNoYW5nZS1wcm90b3R5cGUtZnJvbS1icmFuZGVkLXN0cnVjdHVyZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
ZGIxZjY2OWNhMDJmZDc2NGVlMWZhNDNmNTZmNzA5ZmE1MzZkMzNmCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtY2hhbmdlLXByb3RvdHlwZS1mcm9tLWJy
YW5kZWQtc3RydWN0dXJlLmpzCkBAIC0wLDAgKzEsNDAgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygi
LS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFs
dWU6IGZ1bmN0aW9uIChsaHMsIHJocykgeworICAgICAgICBpZiAobGhzICE9PSByaHMpCisgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgbGhzICsgIiBidWcgZ290OiAi
ICsgcmhzKTsKKyAgICB9LAorCisgICAgdGhyb3dzOiBmdW5jdGlvbiAoZXhwZWN0ZWRFcnJvciwg
b3ApIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICBvcCgpOworICAgICAgICB9IGNhdGNoKGUp
IHsKKyAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEVycm9yKSkKKyAgICAg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhwZWN0
ZWRFcnJvciArICIgYnV0IHRocmV3OiAiICsgZSk7CisgICAgICAgIH0KKyAgICB9Cit9OworCitj
bGFzcyBDIHsKKyAgICAjbSgpIHsgcmV0dXJuICd0ZXN0JzsgfQorCisgICAgYWNjZXNzKCkgewor
ICAgICAgICByZXR1cm4gdGhpcy4jbSgpOworICAgIH0KK30KKworbGV0IGMxID0gbmV3IEMoKTsK
K2Fzc2VydC5zYW1lVmFsdWUoYzEuYWNjZXNzKCksICd0ZXN0Jyk7Cithc3NlcnQudGhyb3dzKFR5
cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgIGMxLmFjY2Vzcy5jYWxsKHt9KTsKK30pOworCitP
YmplY3Quc2V0UHJvdG90eXBlT2YoYzEsIG51bGwpOworCithc3NlcnQuc2FtZVZhbHVlKGMxLmFj
Y2VzcywgdW5kZWZpbmVkKTsKK2Fzc2VydC5zYW1lVmFsdWUoQy5wcm90b3R5cGUuYWNjZXNzLmNh
bGwoYzEpLCAndGVzdCcpOworYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgpIHsK
KyAgICBjMS5hY2Nlc3MuY2FsbCh7fSk7Cit9KTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvcHJpdmF0ZS1tZXRob2QtY2hlY2stcHJpdmF0ZS1icmFuZC1pYy5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL3ByaXZhdGUtbWV0aG9kLWNoZWNrLXByaXZhdGUtYnJhbmQtaWMuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODdkMzJlNjQzMjI3YzE5MDE4YzQwYjcxZWQ5NzgyZTFlOTZmMzIyYwotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWNoZWNrLXByaXZhdGUtYnJhbmQtaWMu
anMKQEAgLTAsMCArMSw0MCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRo
b2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGFj
dHVhbCwgZXhwZWN0ZWQpIHsKKyAgICAgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgYWN0dWFsICsgIiBidWcgZ290
OiAiICsgZXhwZWN0ZWQpOworICAgIH0sCisgICAgdGhyb3dzOiBmdW5jdGlvbiAoZXhwZWN0ZWRF
cnJvciwgb3ApIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICBvcCgpOworICAgICAgICB9IGNh
dGNoKGUpIHsKKyAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEVycm9yKSkK
KyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsg
ZXhwZWN0ZWRFcnJvciArICIgYnV0IHRocmV3OiAiICsgZSk7CisgICAgICAgIH0KKyAgICB9Cit9
OworCitmdW5jdGlvbiBjbGFzc0ZhY3RvcnkoKSB7CisgICAgcmV0dXJuIGNsYXNzIHsKKyAgICAg
ICAgI21ldGhvZCgpIHsKKyAgICAgICAgICAgIHJldHVybiAndGVzdCc7CisgICAgICAgIH0KKwor
ICAgICAgICBhY2Nlc3MoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy4jbWV0aG9kKCk7Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKK2xldCBDMSA9IGNsYXNzRmFjdG9yeSgpOworbGV0IEMyID0g
Y2xhc3NGYWN0b3J5KCk7CisKK2xldCBjMSA9IG5ldyBDMSgpOworbGV0IGMyID0gbmV3IEMyKCk7
CisKK2Fzc2VydC5zYW1lVmFsdWUoYzEuYWNjZXNzKCksICd0ZXN0Jyk7Cithc3NlcnQudGhyb3dz
KFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgIGMyLmFjY2Vzcy5jYWxsKGMxKQorfSk7CisK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWNoZWNrLXN0cnVjdHVy
ZS1taXNzLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtY2hlY2stc3RydWN0dXJl
LW1pc3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTgwZDdmN2VlZTcwNGVmMGNiOGQ5MDk4MDAzNTEwMTFhZjMz
MDMxYwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWNo
ZWNrLXN0cnVjdHVyZS1taXNzLmpzCkBAIC0wLDAgKzEsNTEgQEAKKy8vQCByZXF1aXJlT3B0aW9u
cygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1l
VmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAg
IH0sCisgICAgc2hvdWxkVGhyb3c6IGZ1bmN0aW9uKGV4Y2VwdGlvbiwgZnVuY3RvcikgeworICAg
ICAgICBsZXQgdGhyZXdFeGNlcHRpb247CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5j
dG9yKCk7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IGZhbHNlOworICAgICAgICB9IGNh
dGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAg
IGlmICghZSBpbnN0YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBpdCB0
aHJvd3M6ICIgKyBlLm5hbWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aHJld0V4Y2Vw
dGlvbikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIg
KyBleGNlcHRpb24ubmFtZSArICIgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7Cisg
ICAgfQorfQorCitsZXQgaSA9IDA7CisKK2NsYXNzIEMgeworICAgIGNvbnN0cnVjdG9yKCkgewor
ICAgICAgICBpZiAoaSA+PSA1MDAwKQorICAgICAgICAgICAgdGhpcy5wcm9wZXJ0eSA9IGk7Cisg
ICAgfQorCisgICAgI21ldGhvZCh2KSB7CisgICAgICAgIHRoaXMuZmllbGQgPSB2OworICAgIH0K
KworICAgIGFjY2Vzcyh2KSB7CisgICAgICAgIHRoaXMuI21ldGhvZCh2KTsKKyAgICB9Cit9Citu
b0lubGluZShDLnByb3RvdHlwZS5hY2Nlc3MpOworCitsZXQgYyA9IG5ldyBDKCk7Citmb3IgKDsg
aSA8IDEwMDAwOyBpKyspIHsKKyAgICBjLmFjY2VzcygnZm9vJyArIGkpOworICAgIGFzc2VydC5z
YW1lVmFsdWUoYy5maWVsZCwgJ2ZvbycgKyBpKTsKK30KKworYXNzZXJ0LnNob3VsZFRocm93KFR5
cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgYy5hY2Nlc3MuY2FsbCh7fSwgJ3Rlc3QnKTsKK30p
OworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1jb21wYXJpc29u
LmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtY29tcGFyaXNvbi5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40NmRhNzg2N2JhNDhlYjc3YTFiNDAxNGNmNGVmNjQxNmQxMjRhN2Q2Ci0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtY29tcGFyaXNvbi5qcwpAQCAt
MCwwICsxLDMxIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1
ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAobGhzLCByaHMp
IHsKKyAgICAgICAgaWYgKGxocyAhPT0gcmhzKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJFeHBlY3RlZDogIiArIGxocyArICIgYnVnIGdvdDogIiArIHJocyk7CisgICAgfSwKKworICAg
IHRocm93czogZnVuY3Rpb24gKGV4cGVjdGVkRXJyb3IsIG9wKSB7CisgICAgICAgIHRyeSB7Cisg
ICAgICAgICAgb3AoKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBpZiAoIShl
IGluc3RhbmNlb2YgZXhwZWN0ZWRFcnJvcikpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4cGVjdGVkRXJyb3IgKyAiIGJ1dCB0aHJldzog
IiArIGUpOworICAgICAgICB9CisgICAgfQorfTsKKworY2xhc3MgQyB7CisgICAgI20oKSB7IHJl
dHVybiAndGVzdDI2Mic7IH0KKworICAgIGdldFByaXZhdGVNZXRob2QoKSB7CisgICAgICAgIHJl
dHVybiB0aGlzLiNtOworICAgIH0KK30KKworbGV0IGMxID0gbmV3IEMoKTsKK2xldCBjMiA9IG5l
dyBDKCk7CisKK2Fzc2VydC5zYW1lVmFsdWUoYzEuZ2V0UHJpdmF0ZU1ldGhvZCgpLCBjMi5nZXRQ
cml2YXRlTWV0aG9kKCkpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1l
dGhvZC1kZWxldGUtcHJvcGVydHktZnJvbS1icmFuZGVkLXN0cnVjdHVyZS5qcyBiL0pTVGVzdHMv
c3RyZXNzL3ByaXZhdGUtbWV0aG9kLWRlbGV0ZS1wcm9wZXJ0eS1mcm9tLWJyYW5kZWQtc3RydWN0
dXJlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmZlZmFlNWYyMWNjZDgyNjJjMWFlZWM3ZjY1ZGJlN2I5NmRmOTAy
N2UKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1kZWxl
dGUtcHJvcGVydHktZnJvbS1icmFuZGVkLXN0cnVjdHVyZS5qcwpAQCAtMCwwICsxLDQyIEBACisv
L0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3Nl
cnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAobGhzLCByaHMpIHsKKyAgICAgICAgaWYg
KGxocyAhPT0gcmhzKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiAr
IGxocyArICIgYnVnIGdvdDogIiArIHJocyk7CisgICAgfSwKKworICAgIHRocm93czogZnVuY3Rp
b24gKGV4cGVjdGVkRXJyb3IsIG9wKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgb3AoKTsK
KyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgZXhw
ZWN0ZWRFcnJvcikpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0
byB0aHJvdzogIiArIGV4cGVjdGVkRXJyb3IgKyAiIGJ1dCB0aHJldzogIiArIGUpOworICAgICAg
ICB9CisgICAgfQorfTsKKworY2xhc3MgQyB7CisgICAgI20oKSB7IHJldHVybiAndGVzdCc7IH0K
KworICAgIGFjY2VzcygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI20oKTsKKyAgICB9Cit9CisK
K2xldCBjMSA9IG5ldyBDKCk7CitjMS5mb28gPSAndGVzdCc7Cithc3NlcnQuc2FtZVZhbHVlKGMx
LmFjY2VzcygpLCAndGVzdCcpOworYXNzZXJ0LnNhbWVWYWx1ZShjMS5mb28sICd0ZXN0Jyk7Cith
c3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgIGMxLmFjY2Vzcy5jYWxs
KHt9KTsKK30pOworCitkZWxldGUgYzEuZm9vOworCithc3NlcnQuc2FtZVZhbHVlKGMxLmFjY2Vz
cygpLCAndGVzdCcpOworYXNzZXJ0LnNhbWVWYWx1ZShjMS5mb28sIHVuZGVmaW5lZCk7Cithc3Nl
cnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgIGMxLmFjY2Vzcy5jYWxsKHt9
KTsKK30pOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1leHRl
bmRzLWJyYW5kLWNoZWNrLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtZXh0ZW5k
cy1icmFuZC1jaGVjay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMjY2NGIyZmNjY2Y2ODk1YzIxNDUxZjc2OTc4
YzdhMjg0YzdhM2QxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1t
ZXRob2QtZXh0ZW5kcy1icmFuZC1jaGVjay5qcwpAQCAtMCwwICsxLDQxIEBACisvL0AgcmVxdWly
ZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChh
LCBlKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0
ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7Cit9CisKK2NsYXNzIEJhc2UgeworICAgICNt
QmFzZSgpIHsKKyAgICAgICAgcmV0dXJuIDQ7CisgICAgfQorCisgICAgbWV0aG9kQmFzZSgpIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMuI21CYXNlKCk7CisgICAgfQorfQorCitjbGFzcyBDIGV4dGVu
ZHMgQmFzZSB7CisgICAgI20oKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmOworICAgIH0KKwor
ICAgIG1ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI20oKTsKKyAgICB9CisKKyAgICAj
ZiA9IDE1OworfQorCitsZXQgYyA9IG5ldyBDKCk7Cithc3NlcnQoYy5tZXRob2QoKSwgMTUpOwor
YXNzZXJ0KGMubWV0aG9kQmFzZSgpLCA0KTsKKworbGV0IGJhc2UgPSBuZXcgQmFzZSAoKTsKK2Fz
c2VydChiYXNlLm1ldGhvZEJhc2UoKSwgNCk7Cit0cnkgeworICAgIGMubWV0aG9kLmNhbGwoYmFz
ZSk7Cit9IGNhdGNoIChlKSB7CisgICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBUeXBlRXJyb3IsIHRy
dWUpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1nZXQt
YW5kLWNhbGwuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1nZXQtYW5kLWNhbGwu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTMxN2UxZTc3ZTQzMzZkNGVkYjhiODMwN2Y2MzViZDgwYTZhMmY4OAot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWdldC1hbmQt
Y2FsbC5qcwpAQCAtMCwwICsxLDI0IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0
ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlv
biAobGhzLCByaHMpIHsKKyAgICAgICAgaWYgKGxocyAhPT0gcmhzKQorICAgICAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGxocyArICIgYnVnIGdvdDogIiArIHJocyk7Cisg
ICAgfQorfTsKKworY2xhc3MgQyB7CisgICAgI20oKSB7IHJldHVybiB0aGlzLl92OyB9CisKKyAg
ICBnZXRQcml2YXRlTWV0aG9kKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jbTsKKyAgICB9Cit9
CisKK2xldCBjID0gbmV3IEMoKTsKKworbGV0IG8xID0ge192OiAndGVzdDI2Mid9OworbGV0IG8y
ID0ge192OiAnZm9vJ307Cithc3NlcnQuc2FtZVZhbHVlKGMuZ2V0UHJpdmF0ZU1ldGhvZCgpLmNh
bGwobzEpLCAndGVzdDI2MicpOworYXNzZXJ0LnNhbWVWYWx1ZShjLmdldFByaXZhdGVNZXRob2Qo
KS5jYWxsKG8yKSwgJ2ZvbycpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRl
LW1ldGhvZC1pbnZhbGlkLW11bHRpcGxlLWJyYW5kLWluc3RhbGxhdGlvbi5qcyBiL0pTVGVzdHMv
c3RyZXNzL3ByaXZhdGUtbWV0aG9kLWludmFsaWQtbXVsdGlwbGUtYnJhbmQtaW5zdGFsbGF0aW9u
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjdkNzc1MDc5ZjMxNGQwODgwY2Y3YjhjNjYxODY3YWQ1ZWY5MjJhNDMK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1pbnZhbGlk
LW11bHRpcGxlLWJyYW5kLWluc3RhbGxhdGlvbi5qcwpAQCAtMCwwICsxLDUxIEBACisvL0AgcmVx
dWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7
CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIg
KyBhKTsKKyAgICB9LAorICAgIHNob3VsZFRocm93OiBmdW5jdGlvbihleGNlcHRpb24sIGZ1bmN0
b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9uOworICAgICAgICB0cnkgeworICAgICAg
ICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSBmYWxzZTsKKyAg
ICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7Cisg
ICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRpb24pCisgICAgICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsg
IiBidXQgaXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgh
dGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRv
IHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2Vw
dGlvbiIpOworICAgIH0KK30KKworbGV0IGkgPSAwOworCitsZXQgbyA9IHt9OworY2xhc3MgQmFz
ZSB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIHJldHVybiBvOworICAgIH0KK30KKwor
Y2xhc3MgQyBleHRlbmRzIEJhc2UgeworICAgICNtZXRob2QodikgeworICAgICAgICB0aGlzLmZp
ZWxkID0gdjsKKyAgICB9CisKKyAgICBhY2Nlc3ModikgeworICAgICAgICB0aGlzLiNtZXRob2Qo
dik7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuYWNjZXNzKTsKKworbGV0IGMgPSBu
ZXcgQygpOworQy5wcm90b3R5cGUuYWNjZXNzLmNhbGwoYywgJ2ZvbycpOworYXNzZXJ0LnNhbWVW
YWx1ZShjLmZpZWxkLCAnZm9vJyk7CisKK2Fzc2VydC5zaG91bGRUaHJvdyhUeXBlRXJyb3IsIGZ1
bmN0aW9uKCkgeworICAgIGMgPSBuZXcgQygpOworfSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL3ByaXZhdGUtbWV0aG9kLWludmFsaWRhdGUtY29tcGlsZWQtd2l0aC1jb25zdGFudC1z
eW1ib2wuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1pbnZhbGlkYXRlLWNvbXBp
bGVkLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI5ZDNjNzJiMDM4YmIwYWQ3
ZWU3OTlkNTIxNDdjMjJiZDg2YmE1OTQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9wcml2YXRlLW1ldGhvZC1pbnZhbGlkYXRlLWNvbXBpbGVkLXdpdGgtY29uc3RhbnQtc3ltYm9s
LmpzCkBAIC0wLDAgKzEsNjIgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0
aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChh
LCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4
cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAgIH0sCisgICAgdGhyb3dzOiBm
dW5jdGlvbihleGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9u
OworICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhy
ZXdFeGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0
aHJld0V4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNl
cHRpb24pCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJv
dzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1
dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworICAgIH0KK30KKworZnVuY3Rpb24gZmFj
dG9yeUNsYXNzKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICAjbWV0aG9kKCkgeworICAgICAg
ICAgICAgcmV0dXJuICd0ZXN0JzsKKyAgICAgICAgfQorICAgIAorICAgICAgICBhY2Nlc3MoKSB7
CisgICAgICAgICAgICByZXR1cm4gdGhpcy4jbWV0aG9kKCk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuYWNjZXNzKTsKKworICAgIHJldHVybiBDOworfQorCits
ZXQgQyA9IGZhY3RvcnlDbGFzcygpOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKysp
IHsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmFjY2Vzcygp
LCAndGVzdCcpOworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCAoKSA9PiB7CisgICAgICAg
IGMuYWNjZXNzLmNhbGwoe30pOworICAgIH0pOworfQorCitsZXQgQzIgPSBmYWN0b3J5Q2xhc3Mo
KTsKKworbGV0IGMyID0gbmV3IEMyKCk7Cithc3NlcnQuc2FtZVZhbHVlKGMyLmFjY2VzcygpLCAn
dGVzdCcpOworCitsZXQgYyA9IG5ldyBDKCk7CisKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCAo
KSA9PiB7CisgICAgYy5hY2Nlc3MuY2FsbChjMik7Cit9KTsKKworYXNzZXJ0LnRocm93cyhUeXBl
RXJyb3IsICgpID0+IHsKKyAgICBjMi5hY2Nlc3MuY2FsbChjKTsKK30pOwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtbmVzdGVkLWNsYXNzLmpzIGIvSlNUZXN0cy9z
dHJlc3MvcHJpdmF0ZS1tZXRob2QtbmVzdGVkLWNsYXNzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjZGY0ODk5
YTQzZTY5ZWQwZGFiMzRjMjI2M2VmZDM4ODNkOWEyMmQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1uZXN0ZWQtY2xhc3MuanMKQEAgLTAsMCArMSw2OCBA
QAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitmdW5j
dGlvbiBhc3NlcnQoYSwgZSkgeworICAgIGlmIChhICE9PSBlKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworfQorCisoKCkgPT4g
eworICAgIGNsYXNzIEJhc2UgeworICAgICAgICBDID0gY2xhc3MgeworICAgICAgICAgICAgbWV0
aG9kKCkgeworICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiNtQmFzZSgpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgI21CYXNlKCkgeworICAgICAgICAgICAgcmV0dXJu
IDQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYmFzZSA9IG5ldyBCYXNlKCk7CisgICAg
bGV0IGMgPSBuZXcgYmFzZS5DKCk7CisgICAgYXNzZXJ0KGMubWV0aG9kLmNhbGwoYmFzZSksIDQp
OworCisgICAgdHJ5IHsKKyAgICAgICAgYy5tZXRob2QoKTsKKyAgICB9IGNhdGNoIChlKSB7Cisg
ICAgICAgIGFzc2VydChlIGluc3RhbmNlb2YgVHlwZUVycm9yLCB0cnVlKTsKKyAgICB9Cit9KSgp
OworCisvLyBUZXN0IHNoYWRvdyBtZXRob2RzCisKKygoKSA9PiB7CisgICAgY2xhc3MgQmFzZSB7
CisgICAgICAgIG1ldGhvZCgpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLiNtKCk7CisgICAg
ICAgIH0KKworICAgICAgICBDID0gY2xhc3MgeworICAgICAgICAgICAgbWV0aG9kKG8pIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gby4jbSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAjbSgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mb287CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGZvbyA9IDQ7CisgICAgICAgIH07CisKKyAgICAgICAgI20oKSB7Cisg
ICAgICAgICAgICByZXR1cm4gImZvbyI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYmFz
ZSA9IG5ldyBCYXNlKCk7CisgICAgbGV0IGMgPSBuZXcgYmFzZS5DKCk7CisgICAgYXNzZXJ0KGMu
bWV0aG9kKGMpLCA0KTsKKyAgICBhc3NlcnQoYmFzZS5tZXRob2QoKSwgImZvbyIpOworCisgICAg
dHJ5IHsKKyAgICAgICAgYy5tZXRob2QoYmFzZSk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAg
ICBhc3NlcnQoZSBpbnN0YW5jZW9mIFR5cGVFcnJvciwgdHJ1ZSk7CisgICAgfQorfSkoKTsKKwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2Qtb24tc2VhbGVkLW9iamVj
dHMuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1vbi1zZWFsZWQtb2JqZWN0cy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hNjJmMDk5NDMxMjI1NzE0OTIxYWJkNWUxNWJhZGE0ZmI4NTA2YzYwCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2Qtb24tc2VhbGVk
LW9iamVjdHMuanMKQEAgLTAsMCArMSw2NCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVBy
aXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVu
Y3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICAgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0
ZWQpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgYWN0dWFsICsg
IiBidWcgZ290OiAiICsgZXhwZWN0ZWQpOworICAgIH0sCisKKyAgICB0aHJvd3M6IGZ1bmN0aW9u
IChleHBlY3RlZEVycm9yLCBvcCkgeworICAgICAgICB0cnkgeworICAgICAgICAgIG9wKCk7Cisg
ICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIGV4cGVj
dGVkRXJyb3IpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8g
dGhyb3c6ICIgKyBleHBlY3RlZEVycm9yICsgIiBidXQgdGhyZXc6ICIgKyBlKTsKKyAgICAgICAg
fQorICAgIH0KK307CisKK2NsYXNzIEMgeworICAgICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisK
KyAgICBhY2Nlc3MoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtKCk7CisgICAgfQorfQorCits
ZXQgYzEgPSBuZXcgQygpOworYXNzZXJ0LnNhbWVWYWx1ZShjMS5hY2Nlc3MoKSwgJ3Rlc3QnKTsK
K2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgYzEuYWNjZXNzLmNh
bGwoe30pOworfSk7CisKK09iamVjdC5zZWFsKGMxKTsKKworYXNzZXJ0LnNhbWVWYWx1ZShjMS5h
Y2Nlc3MoKSwgJ3Rlc3QnKTsKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7
CisgICAgYzEuYWNjZXNzLmNhbGwoe30pOworfSk7CisKKy8vIFBlcmZvcm0gYSBzZXQgYnJhbmQg
dHJhbnNpdGlvbiBvbiBmcm96ZW4gb2JqZWN0CitsZXQgc2VhbGVkT2JqZWN0ID0ge307CitPYmpl
Y3QuZnJlZXplKHNlYWxlZE9iamVjdCk7CisKK2NsYXNzIEJhc2UgeworICAgIGNvbnN0cnVjdG9y
KCkgeworICAgICAgICByZXR1cm4gc2VhbGVkT2JqZWN0OworICAgIH0KK30KKworY2xhc3MgRCBl
eHRlbmRzIEJhc2UgeworICAgICNtKCkgeyByZXR1cm4gJ3Rlc3QgRCc7IH0KKworICAgIHN0YXRp
YyBhY2Nlc3MobykgeworICAgICAgICByZXR1cm4gby4jbSgpOworICAgIH0KK30KKworbGV0IGQg
PSBuZXcgRCgpOworCithc3NlcnQuc2FtZVZhbHVlKEQuYWNjZXNzKGQpLCAndGVzdCBEJyk7Cith
c3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgIEQuYWNjZXNzKHt9KTsK
K30pOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1vbi11bmNh
Y2hlYWJsZS1kaWN0aW9uYXJ5LmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2Qtb24t
dW5jYWNoZWFibGUtZGljdGlvbmFyeS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMDU1MTUwZWQ3NDU0YTViMDA5
ZTcxMjFjNTQ2ODZhODMwMDk0NzRhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
cHJpdmF0ZS1tZXRob2Qtb24tdW5jYWNoZWFibGUtZGljdGlvbmFyeS5qcwpAQCAtMCwwICsxLDY0
IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xl
dCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCkg
eworICAgICAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBhY3R1YWwgKyAiIGJ1ZyBnb3Q6ICIgKyBleHBlY3RlZCk7
CisgICAgfSwKKworICAgIHRocm93czogZnVuY3Rpb24gKGV4cGVjdGVkRXJyb3IsIG9wKSB7Cisg
ICAgICAgIHRyeSB7CisgICAgICAgICAgb3AoKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAg
ICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgZXhwZWN0ZWRFcnJvcikpCisgICAgICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4cGVjdGVkRXJyb3Ig
KyAiIGJ1dCB0aHJldzogIiArIGUpOworICAgICAgICB9CisgICAgfQorfTsKKworY2xhc3MgQyB7
CisgICAgI20oKSB7IHJldHVybiAndGVzdCc7IH0KKworICAgIGFjY2VzcygpIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuI20oKTsKKyAgICB9Cit9CisKK2xldCBjMSA9IG5ldyBDKCk7Cithc3NlcnQu
c2FtZVZhbHVlKGMxLmFjY2VzcygpLCAndGVzdCcpOworYXNzZXJ0LnRocm93cyhUeXBlRXJyb3Is
IGZ1bmN0aW9uICgpIHsKKyAgICBjMS5hY2Nlc3MuY2FsbCh7fSk7Cit9KTsKKworT2JqZWN0LmZy
ZWV6ZShjMSk7CisKK2Fzc2VydC5zYW1lVmFsdWUoYzEuYWNjZXNzKCksICd0ZXN0Jyk7Cithc3Nl
cnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgIGMxLmFjY2Vzcy5jYWxsKHt9
KTsKK30pOworCisvLyBQZXJmb3JtIGEgc2V0IGJyYW5kIHRyYW5zaXRpb24gb24gZnJvemVuIG9i
amVjdAorbGV0IGZyb3plbk9iamVjdCA9IHt9OworT2JqZWN0LmZyZWV6ZShmcm96ZW5PYmplY3Qp
OworCitjbGFzcyBCYXNlIHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgcmV0dXJuIGZy
b3plbk9iamVjdDsKKyAgICB9Cit9CisKK2NsYXNzIEQgZXh0ZW5kcyBCYXNlIHsKKyAgICAjbSgp
IHsgcmV0dXJuICd0ZXN0IEQnOyB9CisKKyAgICBzdGF0aWMgYWNjZXNzKG8pIHsKKyAgICAgICAg
cmV0dXJuIG8uI20oKTsKKyAgICB9Cit9CisKK2xldCBkID0gbmV3IEQoKTsKKworYXNzZXJ0LnNh
bWVWYWx1ZShELmFjY2VzcyhkKSwgJ3Rlc3QgRCcpOworYXNzZXJ0LnRocm93cyhUeXBlRXJyb3Is
IGZ1bmN0aW9uICgpIHsKKyAgICBELmFjY2Vzcyh7fSk7Cit9KTsKKwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtcG9seW1vcnBoaWMtd2l0aC1jb25zdGFudC1zeW1i
b2wuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1wb2x5bW9ycGhpYy13aXRoLWNv
bnN0YW50LXN5bWJvbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMDE3NjI3YTUzMDk5YTIwMWZiZWFlYjNkOTE3
YjAzNmJmOTMxYzE2Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1t
ZXRob2QtcG9seW1vcnBoaWMtd2l0aC1jb25zdGFudC1zeW1ib2wuanMKQEAgLTAsMCArMSw1MyBA
QAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQg
YXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAo
YSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBi
dXQgZ290OiAiICsgYSk7CisgICAgfSwKKyAgICBzaG91bGRUaHJvdzogZnVuY3Rpb24oZXhjZXB0
aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5
IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0g
ZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24g
PSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRp
b24ubmFtZSArICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJF
eHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0ZWQgd2l0
aG91dCBleGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2xldCBpID0gMDsKKworY2xhc3MgQmFzZSB7
CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIGlmIChpICUgMikKKyAgICAgICAgICAgIHRo
aXMuYW5vdGhlckZpZWxkID0gaTsKKyAgICB9Cit9CisKK2NsYXNzIEMgZXh0ZW5kcyBCYXNlIHsK
KyAgICAjbWV0aG9kKCkgeworICAgICAgICByZXR1cm4gJ3Rlc3QnOworICAgIH0KKworICAgIGFj
Y2VzcygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI21ldGhvZCgpOworICAgIH0KK30KK25vSW5s
aW5lKEMucHJvdG90eXBlLmFjY2Vzcyk7CisKK2ZvciAoOyBpIDwgMTAwMDA7IGkrKykgeworICAg
IGNvdW50ID0gaTsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShj
LmFjY2VzcygpLCAndGVzdCcpOworfQorCithc3NlcnQuc2hvdWxkVGhyb3coVHlwZUVycm9yLCAo
KSA9PiB7CisgICAgYy5hY2Nlc3MuY2FsbCh7fSk7Cit9KTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2Qtc2V0LWJyYW5kLXNob3VsZC1oYXZlLXdyaXRlLWJhcnJp
ZXIuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1zZXQtYnJhbmQtc2hvdWxkLWhh
dmUtd3JpdGUtYmFycmllci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYjM5YjdhNWU3M2NiMzNmNDQ0NGUxZmY0
MDMyZGNkNDU2NTE1YzUzCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0
ZS1tZXRob2Qtc2V0LWJyYW5kLXNob3VsZC1oYXZlLXdyaXRlLWJhcnJpZXIuanMKQEAgLTAsMCAr
MSw0MSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQor
CitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24oYSwgZSkgeworICAgICAg
ICBpZiAoYSAhPT0gZSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIg
KyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfQorfTsKKworbGV0IG9iaiA9IHt9OworbGV0
IG92ZXJyaWRlU3VwZXIgPSBmYWxzZQorY2xhc3MgQmFzZSB7CisgICAgY29uc3RydWN0b3IoKSB7
CisgICAgICAgIGlmIChvdmVycmlkZVN1cGVyKQorICAgICAgICAgICAgcmV0dXJuIG9iajsKKyAg
ICAgICAgcmV0dXJuIHt9OworICAgIH0KK30KKworY2xhc3MgQyBleHRlbmRzIEJhc2UgeworICAg
ICNtZXRob2QoKSB7CisgICAgICAgIHJldHVybiAndGVzdCc7CisgICAgfQorCisgICAgc3RhdGlj
IGFjY2VzcyhvKSB7CisgICAgICAgIHJldHVybiBvLiNtZXRob2QoKTsKKyAgICB9Cit9Citub0lu
bGluZShDLmFjY2Vzcyk7CisKK2djKCk7CitsZXQgYyA9IG5ldyBDKCk7IC8vIFRoaXMgaXMgZG9u
ZSB0byBmaWxsIElDIHBhdGgKK2MgPSBudWxsOworCitvdmVycmlkZVN1cGVyID0gdHJ1ZTsKK25l
dyBDKCk7CitlZGVuR0MoKTsgLy8gdGhpcyBsZWF2ZXMgb2JqIHdpdGggYSBTdHJ1Y3V0cmUgdGhh
dCB3YXMgZnJlZWQKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGFzc2Vy
dC5zYW1lVmFsdWUoQy5hY2Nlc3Mob2JqKSwgJ3Rlc3QnKTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtdW50eXBlZC11c2UuanMgYi9KU1Rlc3RzL3N0cmVz
cy9wcml2YXRlLW1ldGhvZC11bnR5cGVkLXVzZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iODdjOTg1MTc2MTkz
NmUxYTA3MzI3MTFkZjYxYzkxMWMyZGI4MDljCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3MvcHJpdmF0ZS1tZXRob2QtdW50eXBlZC11c2UuanMKQEAgLTAsMCArMSw1NyBAQAorLy9A
IHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiLCAiLS11c2VBY2Nlc3NJ
bmxpbmluZz1mYWxzZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2hvdWxkVGhyb3c6IGZ1bmN0
aW9uKGV4Y2VwdGlvbiwgZnVuY3RvcikgeworICAgICAgICBsZXQgdGhyZXdFeGNlcHRpb247Cisg
ICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7CisgICAgICAgICAgICB0aHJld0V4
Y2VwdGlvbiA9IGZhbHNlOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3
RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICghZSBpbnN0YW5jZW9mIGV4Y2VwdGlv
bikKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAi
ICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBpdCB0aHJvd3M6ICIgKyBlLm5hbWUpOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKCF0aHJld0V4Y2VwdGlvbikKKyAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGV4
ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7CisgICAgfQorfQorCitjbGFzcyBDIHsKKyAgI21l
dGhvZCgpIHt9CisKKyAgYWNjZXNzKHYpIHsKKyAgICAgIGxldCBvID0gdGhpczsKKyAgICAgIC8v
IFRoaXMgYnJhbmNoIGlzIGhlcmUgdG8gYXZvaWQgQ2hlY2tQcml2YXRlQnJhbmQgdG8gYmUgZm9s
ZGVkLgorICAgICAgaWYgKHYgPiAxMDApCisgICAgICAgICAgbyA9IHt9OworICAgICAgby4jbWV0
aG9kKCk7CisgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLmFjY2Vzcyk7CisKK2xldCBjID0g
bmV3IEMoKTsKKworLy8gTGV0J3MgdHJpZ2dlciBKSVQgY29tcGlsYXRpb24gZm9yIGBDLnByb3Rv
dHlwZS5hY2Nlc3NgCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBjLmFj
Y2VzcygxNSk7Cit9CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGFz
c2VydC5zaG91bGRUaHJvdyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICAgICAgYy5hY2Nlc3MuY2Fs
bCh7fSwgMCk7CisgICAgfSk7CisKKyAgICBhc3NlcnQuc2hvdWxkVGhyb3coVHlwZUVycm9yLCAo
KSA9PiB7CisgICAgICAgIGMuYWNjZXNzLmNhbGwoMTUsIDApOworICAgIH0pOworCisgICAgYXNz
ZXJ0LnNob3VsZFRocm93KFR5cGVFcnJvciwgKCkgPT4geworICAgICAgICBjLnNldEZpZWxkLmNh
bGwoJ3N0cmluZycsIDApOworICAgIH0pOworCisgICAgYXNzZXJ0LnNob3VsZFRocm93KFR5cGVF
cnJvciwgKCkgPT4geworICAgICAgICBjLnNldEZpZWxkLmNhbGwoU3ltYm9sKCdzeW1ib2wnKSwg
MCk7CisgICAgfSk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0
aG9kLXdpdGgtdW5jYWNoZWFibGUtZGljdGlvbmFyeS10cmFuc2l0aW9uLmpzIGIvSlNUZXN0cy9z
dHJlc3MvcHJpdmF0ZS1tZXRob2Qtd2l0aC11bmNhY2hlYWJsZS1kaWN0aW9uYXJ5LXRyYW5zaXRp
b24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjIxMjg4ZWJlNmQ4MjFmMzNjYjFlMmU1ZjM4ZDY1MTE0ZjcyMzFk
ZQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLXdpdGgt
dW5jYWNoZWFibGUtZGljdGlvbmFyeS10cmFuc2l0aW9uLmpzCkBAIC0wLDAgKzEsMzkgQEAKKy8v
QCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2Vy
dCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAg
ICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJFeHBlY3RlZDogIiArIGFjdHVhbCArICIgYnVnIGdvdDogIiArIGV4cGVjdGVkKTsKKyAgICB9
LAorCisgICAgdGhyb3dzOiBmdW5jdGlvbiAoZXhwZWN0ZWRFcnJvciwgb3ApIHsKKyAgICAgICAg
dHJ5IHsKKyAgICAgICAgICBvcCgpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAg
IGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEVycm9yKSkKKyAgICAgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhwZWN0ZWRFcnJvciArICIgYnV0
IHRocmV3OiAiICsgZSk7CisgICAgICAgIH0KKyAgICB9Cit9OworCitjbGFzcyBDIHsKKyAgICAj
bSgpIHsgcmV0dXJuICd0ZXN0JzsgfQorCisgICAgYWNjZXNzKCkgeworICAgICAgICByZXR1cm4g
dGhpcy4jbSgpOworICAgIH0KK30KKworbGV0IGMxID0gbmV3IEMoKTsKK2Fzc2VydC5zYW1lVmFs
dWUoYzEuYWNjZXNzKCksICd0ZXN0Jyk7Cithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rp
b24gKCkgeworICAgIGMxLmFjY2Vzcy5jYWxsKHt9KTsKK30pOworCiskdm0udG9VbmNhY2hlYWJs
ZURpY3Rpb25hcnkoYzEpOworCithc3NlcnQuc2FtZVZhbHVlKGMxLmFjY2VzcygpLCAndGVzdCcp
OworYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgpIHsKKyAgICBjMS5hY2Nlc3Mu
Y2FsbCh7fSk7Cit9KTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRo
b2RzLWlubGluZS1jYWNoZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1pbmxp
bmUtY2FjaGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTdjYjdmODllMWMwMWNjZTE1Y2JjNzE0NjEzNmIxYWFm
MzdiNzlmNgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9k
cy1pbmxpbmUtY2FjaGUuanMKQEAgLTAsMCArMSwyMiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCIt
LXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitmdW5jdGlvbiBhc3NlcnQoYWN0dWFsLCBleHBl
Y3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBFcnJv
cigiRXhwZWN0ZWQ6ICIgKyBleHBlY3RlZCArICIgQWN0dWFsOiAiICsgYWN0dWFsKTsKK30KKwor
Y2xhc3MgQyB7CisgICAgI21ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuICdmb28nOworICAgIH0K
KworICAgIGFjY2VzcygpIHsKKyAgICAgICByZXR1cm4gdGhpcy4jbWV0aG9kKCk7CisgICAgfQor
fQorCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgYyA9IG5ldyBD
KCk7CisgICAgYXNzZXJ0KGMuYWNjZXNzKCksICdmb28nKTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2RzLW1lZ2Ftb3JwaGljLWljLmpzIGIvSlNUZXN0cy9z
dHJlc3MvcHJpdmF0ZS1tZXRob2RzLW1lZ2Ftb3JwaGljLWljLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjMTY2
ZDZiNzZiNzg1ZGFiODM0Njc0MmQ1MGEyMTZiZGM2YTBlZDEKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZHMtbWVnYW1vcnBoaWMtaWMuanMKQEAgLTAsMCAr
MSwyNSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQor
CitmdW5jdGlvbiBhc3NlcnQoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09
IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBleHBlY3RlZCAr
ICIgQWN0dWFsOiAiICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gY2xhc3NFeHByKCkgeworICAg
IHJldHVybiBjbGFzcyB7CisgICAgICAgICNtZXRob2QoKSB7CisgICAgICAgICAgICByZXR1cm4g
J2Zvbyc7CisgICAgICAgIH0KKworICAgICAgICBhY2Nlc3MoKSB7CisgICAgICAgICAgIHJldHVy
biB0aGlzLiNtZXRob2QoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IEMgPSBjbGFzc0V4cHIoKTsKKyAgICBsZXQgYyA9
IG5ldyBDKCk7CisgICAgYXNzZXJ0KGMuYWNjZXNzKCksICdmb28nKTsKK30KKwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2RzLW9uLXByb3h5LmpzIGIvSlNUZXN0cy9z
dHJlc3MvcHJpdmF0ZS1tZXRob2RzLW9uLXByb3h5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiNWZkZmNiNjIz
NGQ1NDBhYTBmYTEyZThlNzc3NmQwNjNhYTVhOWYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9wcml2YXRlLW1ldGhvZHMtb24tcHJveHkuanMKQEAgLTAsMCArMSw0MiBAQAorLy9A
IHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitmdW5jdGlvbiBh
c3NlcnQoYSwgZSwgbSkgeworICAgIGlmIChhICE9PSBlKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IobSk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydEFycmF5Q29udGVudChhLCBlKSB7CisgICAgYXNz
ZXJ0KGEubGVuZ3RoLCBlLmxlbmd0aCwgIlNpemUgb2YgYXJyYXlzIGRvZXNuJ3QgbWF0Y2giKTsK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspCisgICAgICAgIGFzc2VydChh
W2ldLCBlW2ldLCAiYVsiICsgaSArICJdID0gIiArIGFbaV0gKyAiIGJ1dCBlWyIgKyBpICsgIl0g
PSAiICsgZVtpXSk7Cit9CisKK2xldCBhcnIgPSBbXTsKKworY2xhc3MgUHJveHlCYXNlIHsKKyAg
ICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm94eSh0aGlzLCB7CisgICAg
ICAgICAgICBnZXQ6IGZ1bmN0aW9uIChvYmosIHByb3ApIHsKKyAgICAgICAgICAgICAgICBhcnIu
cHVzaChwcm9wKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gb2JqW3Byb3BdOworICAgICAgICAg
ICAgfQorICAgICAgICB9KTsKKyAgICB9Cit9CisKK2NsYXNzIFRlc3QgZXh0ZW5kcyBQcm94eUJh
c2UgeworICAgICNtKCkgeworICAgICAgICByZXR1cm4gMzsKKyAgICB9CisKKyAgICBtZXRob2Qo
KSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtKCk7CisgICAgfQorfQorCitsZXQgdCA9IG5ldyBU
ZXN0KCk7CitsZXQgciA9IHQubWV0aG9kKCk7Cithc3NlcnQociwgMywgIkV4cGVjdGVkOiAzIGJ1
dCBnb3Q6ICIgKyByKTsKKworYXNzZXJ0QXJyYXlDb250ZW50KGFyciwgWydtZXRob2QnXSk7CisK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1wb2x5LWljLW11bHRp
cGxlLWNsYXNzZXMuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZHMtcG9seS1pYy1t
dWx0aXBsZS1jbGFzc2VzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlmNmM2ZDZhNjU1NmU4MzE1NjYzMDg3NmE4
MTM5ZWY4NTJkYjFkODAKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRl
LW1ldGhvZHMtcG9seS1pYy1tdWx0aXBsZS1jbGFzc2VzLmpzCkBAIC0wLDAgKzEsMjggQEAKKy8v
QCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworZnVuY3Rpb24g
YXNzZXJ0KGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkK
KyAgICAgICAgdGhyb3cgRXJyb3IoIkV4cGVjdGVkOiAiICsgZXhwZWN0ZWQgKyAiIEFjdHVhbDog
IiArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIGNsYXNzRXhwcigpIHsKKyAgICByZXR1cm4gY2xh
c3MgeworICAgICAgICAjbWV0aG9kKCkgeworICAgICAgICAgICAgcmV0dXJuICdmb28nOworICAg
ICAgICB9CisKKyAgICAgICAgYWNjZXNzKCkgeworICAgICAgICAgICByZXR1cm4gdGhpcy4jbWV0
aG9kKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2xldCBDMSA9IGNsYXNzRXhwcigpOworbGV0
IEMyID0gY2xhc3NFeHByKCk7CisKK2xldCBhcnIgPSBbQzEsIEMyXTsKK2ZvciAobGV0IGkgPSAw
OyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBjID0gbmV3IGFycltpICUgYXJyLmxlbmd0aF0o
KTsKKyAgICBhc3NlcnQoYy5hY2Nlc3MoKSwgJ2ZvbycpOworfQorCmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZHMtcG9seS1pYy1zaW5nbGUtY2xhc3MuanMgYi9KU1Rl
c3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZHMtcG9seS1pYy1zaW5nbGUtY2xhc3MuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNWM0ODViNGY4OGU5NDQ1OTIzNjhiOGQ1ZjVmODA1NDk5ZmNmMjU2NAotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1wb2x5LWljLXNpbmdsZS1j
bGFzcy5qcwpAQCAtMCwwICsxLDI1IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0
ZU1ldGhvZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChhY3R1YWwsIGV4cGVjdGVkKSB7Cisg
ICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IEVycm9yKCJFeHBlY3Rl
ZDogIiArIGV4cGVjdGVkICsgIiBBY3R1YWw6ICIgKyBhY3R1YWwpOworfQorCitjbGFzcyBDIHsK
KyAgICAjbWV0aG9kKCkgeworICAgICAgICByZXR1cm4gJ2Zvbyc7CisgICAgfQorCisgICAgYWNj
ZXNzKCkgeworICAgICAgIHJldHVybiB0aGlzLiNtZXRob2QoKTsKKyAgICB9Cit9CisKK2xldCBj
MSA9IG5ldyBDKCk7CitsZXQgYzIgPSBuZXcgQygpOworYzIuYmFyID0gJ2Jhcic7CitsZXQgYXJy
ID0gW2MxLCBjMl07Citmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBhc3Nl
cnQoYXJyW2kgJSBhcnIubGVuZ3RoXS5hY2Nlc3MoKSwgJ2ZvbycpOworfQorCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5hbWVzLWF2YWlsYWJsZS1vbi1kaXJlY3QtZXZhbC5q
cyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWRpcmVjdC1ldmFs
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY0Y2UwZTBhZjgwNTc4ZTg5NzE2YTE2NzJlZGMxNzczMDViMDY0ZjMK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5hbWVzLWF2YWlsYWJs
ZS1vbi1kaXJlY3QtZXZhbC5qcwpAQCAtMCwwICsxLDIzIEBACisvL0AgcmVxdWlyZU9wdGlvbnMo
Ii0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZh
bHVlOiBmdW5jdGlvbiAobGhzLCByaHMpIHsKKyAgICAgICAgaWYgKGxocyAhPT0gcmhzKQorICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIHJocyArICIgYnVnIGdvdDog
IiArIGxocyk7CisgICAgfQorfTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAg
ICAgICAgI20oKSB7IHJldHVybiAndGVzdCc7IH0KKworICAgICAgICBjYWxsTWV0aG9kRnJvbUV2
YWwoKSB7CisgICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXM7CisgICAgICAgICAgICByZXR1cm4g
ZXZhbCgnc2VsZi4jbSgpJyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBD
KCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmNhbGxNZXRob2RGcm9tRXZhbCgpLCAndGVzdCcp
OworfSkoKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sIGIvSlNU
ZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCmluZGV4IDgzYTZhNzJkNGNmM2Y0YzFjOWNmOGFiNzE5
OWNiZGZjNGUwYzg4ZjYuLmExNzY0Njg2YTRiYjNiNDFlZTQzY2NkZDkwMGM5YzkyN2RhY2RmMDMg
MTAwNjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAorKysgYi9KU1Rlc3RzL3Rl
c3QyNjIvY29uZmlnLnlhbWwKQEAgLTQsNiArNCw3IEBAIGZsYWdzOgogICBXZWFrUmVmOiB1c2VX
ZWFrUmVmcwogICBGaW5hbGl6YXRpb25SZWdpc3RyeTogdXNlV2Vha1JlZnMKICAgY2xhc3MtZmll
bGRzLXByaXZhdGU6IHVzZVByaXZhdGVDbGFzc0ZpZWxkcworICBjbGFzcy1tZXRob2RzLXByaXZh
dGU6IHVzZVByaXZhdGVNZXRob2RzCiAgIGNsYXNzLXN0YXRpYy1maWVsZHMtcHVibGljOiB1c2VQ
dWJsaWNTdGF0aWNDbGFzc0ZpZWxkcwogICBjbGFzcy1zdGF0aWMtZmllbGRzLXByaXZhdGU6IHVz
ZVByaXZhdGVTdGF0aWNDbGFzc0ZpZWxkcwogICBJbnRsLkRhdGVUaW1lRm9ybWF0LWRheVBlcmlv
ZDogdXNlSW50bERhdGVUaW1lRm9ybWF0RGF5UGVyaW9kCkBAIC0xOSw3ICsyMCw2IEBAIHNraXA6
CiAgICAgLSByZWdleHAtbG9va2JlaGluZAogICAgIC0gbGVnYWN5LXJlZ2V4cAogCi0gICAgLSBj
bGFzcy1tZXRob2RzLXByaXZhdGUKICAgICAtIGNsYXNzLXN0YXRpYy1tZXRob2RzLXByaXZhdGUK
ICAgICAtIGNsZWFudXBTb21lCiAgICAgLSBob3N0LWdjLXJlcXVpcmVkCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418888</attachid>
            <date>2021-02-01 09:34:45 -0800</date>
            <delta_ts>2021-02-01 14:46:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194434-20210201143442.patch</filename>
            <type>text/plain</type>
            <size>340302</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MGE0ZDdmOWFkYjU3YWRhNzVkZWVmMjM2YTgyYzFhYmQ3MTkxZmRhLi5kNzE3M2RiYTBmNmRlNWE3
ZDliMmJlZWQ3ZDUzOThhZjFlNWQ0NDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MTkgQEAKKzIwMjEtMDEtMjkgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtFU05leHRdIEltcGxlbWVudCBwcml2YXRlIG1ldGhvZHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDQzNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYWRk
aW5nIHN1cHBvcnQgdG8gcHJpdmF0ZSBtZXRob2RzIGZvbGxvd2luZyB0aGUKKyAgICAgICAgc3Bl
Y2lmaWNhdGlvbiBvbiBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtcHJpdmF0ZS1tZXRob2RzLy4K
KyAgICAgICAgVGhpcyBpcyBpbnRyb2R1Y2luZyBhIG5ldyB3YXkgdG8gZGVjbGFyZSBwcml2YXRl
IG1ldGhvZHMgb24KKyAgICAgICAgY2xhc3Mgc3ludGF4LiBQcml2YXRlIG1ldGhvZHMgYXJlIG9u
bHkgYWNjZXNzaWJsZSB3aXRoaW4KKyAgICAgICAgY2xhc3NlcyB0aGV5IHdlcmUgZGVjbGFyZWQs
IGFuZCBvbmx5IGNhbiBiZSBjYWxsZWQgZnJvbQorICAgICAgICBvYmplY3RzIHRoYXQgYXJlIGlu
c3RhbmNlIG9mIHRoZXNlIGNsYXNzZXMuCisgICAgICAgIFRvIGd1YXJhbnRlZSBzdWNoIHJ1bGVz
LCB0aGUgcHJvcG9zYWwgcHJlc2VudHMgdGhlIGNvbmNlcHQgb2YKKyAgICAgICAgQnJhbmQgQ2hl
Y2suIER1cmluZyBjbGFzcyBldmFsdWF0aW9uLCBpZiBhIHByaXZhdGUgbWV0aG9kIGlzIHByZXNl
bnQsCisgICAgICAgIGEgYGJyYW5kYCBpcyBpbnN0YWxsZWQgaW4gdGhpcyBjbGFzcy4gRXZlcnkg
aW5zdGFuY2Ugb2Ygc3VjaCBjbGFzcworICAgICAgICB0aGVuIGdldHMgdGhpcyBicmFuZCBpbnN0
YWxsZWQgZHVyaW5nIGBbW0NvbnN0cnVjdF1dYCBvcGVyYXRpb24uIEl0CisgICAgICAgIG1lYW5z
IHRoYXQgYW4gb2JqZWN0IGNhbiBoYXZlIG11bHRpcGxlIGJyYW5kcyAoZS5nIHdoZW4gdGhlcmUg
aXMgYWxzbworICAgICAgICBwcml2YXRlIG1ldGhvZHMgZGVjbGFyZWQgb24gc3VwZXIgY2xhc3Mp
LiBCZWZvcmUgYWNjZXNzaW5nIGEgcHJpdmF0ZQorICAgICAgICBtZXRob2QsIHRoZXJlIGlzIGEg
Y2hlY2sgdG8gdmFsaWRhdGUgaWYgdGhlIHRhcmdldCBvZiB0aGUgY2FsbCBoYXMgdGhlCisgICAg
ICAgIGJyYW5kIG9mIGNhbGxlZSBtZXRob2QuCisgICAgICAgIFRoZSBicmFuZCBjaGVjayBtZWNo
YW5pc20gaXMgaW1wbGVtZW50ZWQgdXNpbmcgYSBgQHByaXZhdGVCcmFuZGAKKyAgICAgICAgc3Rv
cmVkIG9uIGNsYXNzIHNjb3BlLiBIZXJlIGlzIGEgcmVwcmVzZW50YXRpb24gb2YgaG93IHRoaXMg
bWVjaGFuaXNtCisgICAgICAgIHdvcmtzOgorCisgICAgICAgIGBgYAorICAgICAgICBjbGFzcyBD
IHsKKyAgICAgICAgICAgICNtKCkgeyByZXR1cm4gMzsgfQorICAgICAgICAgICAgbWV0aG9kKCkg
eyByZXR1cm4gdGhpcy4jbSgpOyB9CisgICAgICAgIH0KKworICAgICAgICBsZXQgYyA9IG5ldyBD
KCk7CisgICAgICAgIGNvbnNvbGUubG9nKGMubWV0aG9kKCkpOyAvLyBwcmludHMgMworICAgICAg
ICBgYGAKKworICAgICAgICBHZW5lcmF0ZWQgYnl0ZWNvZGUgZm9yIHRoZSBmb2xsb3dpbmcgcmVw
cmVzZW50YXRpb246CisgICAgICAgIGBgYAorICAgICAgICB7IC8vIGNsYXNzIGxleGljYWwgc2Nv
cGUKKyAgICAgICAgICAgIGNvbnN0IEBwcml2YXRlQnJhbmQgPSBAY3JlYXRlUHJpdmF0ZVN5bWJv
bCgpOworICAgICAgICAgICAgY29uc3QgI20gPSBmdW5jdGlvbiAoKSB7IHJldHVybiAzOyB9Cisg
ICAgICAgICAgICBDLnByb3RvdHlwZS5tZXRob2QgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICAgICBAY2hlY2tfcHJpdmF0ZV9icmFuZCh0aGlzLCBAcHJpdmF0ZUJyYW5kKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gI20uY2FsbCh0aGlzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IEMgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBAc2V0X3ByaXZhdGVfYnJhbmQodGhp
cywgQHByaXZhdGVCcmFuZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBs
ZXQgYyA9IG5ldyBDKCk7CisgICAgICAgIGNvbnNvbGUubG9nKGMubWV0aG9kKCkpOyAvLyBwcmlu
dHMgMworICAgICAgICBgYGAKKworICAgICAgICAjIFJlc29sdmluZyBjb3JyZWN0IGJyYW5kIHRv
IGNoZWNrCisKKyAgICAgICAgSW4gdGhlIGNhc2Ugb2Ygc2hhZG93aW5nIG9yIG5lc3RlZCBzY29w
ZSwgd2UgbmVlZCB0byBlbWl0IGJyYW5kCisgICAgICAgIGNoZWNrcyB0byB0aGUgcmlnaHQgcHJp
dmF0ZSBicmFuZC4gU2VlIGNvZGUgYmVsb3c6CisKKyAgICAgICAgYGBgCisgICAgICAgIGNsYXNz
IEMgeworICAgICAgICAgICAgI20oKSB7IHJldHVybiAzOyB9CisgICAgICAgICAgICBtZXRob2Qo
KSB7IHJldHVybiB0aGlzLiNtKCk7fQorCisgICAgICAgICAgICBBID0gY2xhc3MgeworICAgICAg
ICAgICAgICAgICNtMigpIHsgcmV0dXJuIDM7IH0KKyAgICAgICAgICAgICAgICBmb28obykgeyBy
ZXR1cm4gdGhpcy4jbSgpOyB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYGBg
CisKKyAgICAgICAgVGhlIGNhbGwgb2YgIiNtIiBpbiBgZm9vYCByZWZlcnMgdG8gIkM6OiNtIi4g
SW4gc3VjaCBjYXNlLCB3ZSBuZWVkIHRvCisgICAgICAgIGNoZWNrIEMncyBwcml2YXRlIGJyYW5k
LCBpbnN0ZWFkIG9mIEEncyBwcml2YXRlIGJyYW5kLgorICAgICAgICBUbyBwZXJmb3JtIHRoZSBw
cm9wZXIgY2hlY2ssIHdlIGZpcnN0IHJlc29sdmUgc2NvcGUgb2YgIiNtIiBhbmQgdGhlbgorICAg
ICAgICBjaGVjayB0aGUgcHJpdmF0ZSBicmFuZCBvZiB0aGlzIHNjb3BlICh0aGUgc2NvcGUgd2hl
cmUgdGhlIHByaXZhdGUKKyAgICAgICAgbWV0aG9kIGFuZCBicmFuZCBhcmUgc3RvcmVkIGlzIHRo
ZSBzYW1lKS4KKyAgICAgICAgU28gdGhlIGJ5dGVjb2RlIHRvIGxvb2t1cCB0aGUgcmlnaHQgYnJh
bmQgaXM6CisKKyAgICAgICAgYGBgCisgICAgICAgIHJlc29sdmVfc2NvcGUgbG9jMTAsICIjbSIK
KyAgICAgICAgZ2V0X2Zyb21fc2NvcGUgbG9jMTEsIGxvYzEwLCAiQHByaXZhdGVCcmFuZCIKKyAg
ICAgICAgY2hlY2tfcHJpdmF0ZV9icmFuZCB0aGlzLCBsb2MxMQorICAgICAgICBnZXRfZnJvbV9z
Y29wZSBsb2MxMSwgbG9jMTAsICIjbSIKKyAgICAgICAgLy8gc2V0dXAgY2FsbCBmcmFtZQorICAg
ICAgICBjYWxsIGxvYzExLCAuLi4KKyAgICAgICAgLy8gLi4uCisgICAgICAgIGBgYAorCisgICAg
ICAgICMgQnJhbmQgY2hlY2sgbWVjaGFuaXNtCisKKyAgICAgICAgV2UgYXJlIGludHJvZHVjaW5n
IGluIHRoaXMgcGF0Y2ggMiBuZXcgYnl0ZWNvZGVzIHRvIGFsbG93IGJyYW5kIGNoZWNrCisgICAg
ICAgIG9mIG9iamVjdHM6IGBvcF9zZXRfYnJhbmRgIGFuZCBgb3BfY2hlY2tfYnJhbmRgLgorICAg
ICAgICBgb3Bfc2V0X2JyYW5kYCBzZXRzIGEgbmV3IGJyYW5kIGluIGFuIG9iamVjdCwgc28gd2Ug
Y2FuIHBlcmZvcm0gdGhlIGJyYW5kCisgICAgICAgIGNoZWNrIGxhdGVyIHdoZW4gYWNjZXNzaW5n
IHByaXZhdGUgbWV0aG9kcy4gVGhpcyBvcGVyYXRpb25zIHRocm93cyB3aGVuCisgICAgICAgIHRy
eWluZyB0byBhZGQgdGhlIHNhbWUgYnJhbmQgdHdpY2UgaW4gYW4gT2JqZWN0LgorICAgICAgICBg
b3BfY2hlY2tfYnJhbmRgIGNoZWNrcyBpZiB0aGUgZ2l2ZW4gb2JqZWN0IGNvbnRhaW5zIHRoZSBi
cmFuZCB3ZSBhcmUKKyAgICAgICAgbG9va2luZyBmb3IuIEl0IHRyYXZlcnNlcyB0aGUgYnJhbmQg
Y2hhaW4gdG8gdmVyaWZ5IGlmIHRoZSBicmFuZCBpcworICAgICAgICBwcmVzZW50LCBhbmQgdGhy
b3dzIGBUeXBlRXJyb3JgIG90aGVyd2lzZS4KKworICAgICAgICBXZSBhcmUgYWxzbyBpbnRyb2R1
Y2luZyBhIHN1YmNsYXNzIGZvciBTdHJ1Y3R1cmUgY2FsbGVkIEJyYW5kZWRTdHJ1Y3R1cmUuCisg
ICAgICAgIEl0IGlzIHVzZWQgdG8gc3RvcmUgYnJhbmRzIGFuZCB0byBhbGxvdyBicmFuZCBjaGVj
ayBtZWNoYW5pc20uIEJyYW5kZWRTdHJ1Y3R1cmUKKyAgICAgICAgc3RvcmVzIGEgYnJhbmQgYW5k
IGEgcGFyZW50IHBvaW50ZXIgdG8gYW5vdGhlciBCcmFuZGVkU3RydWN0dXJlIHRoYXQgYWxsb3cK
KyAgICAgICAgdXMgdHJhdmVyc2UgdGhlIGJyYW5kIGNoYWluLiBXaXRoIGBCcmFuZGVkU3RydWN0
dXJlYCwgd2UgY2FuIHRoZW4KKyAgICAgICAgaW5mZXIgdGhhdCBhIGdpdmVuIG9iamVjdCBoYXMg
dGhlIGJyYW5kIHdlIGFyZSBsb29raW5nIGZvciBqdXN0CisgICAgICAgIGNoZWNraW5nIGl0cyBz
dHJ1Y3R1cmVJZC4gVGhpcyBpcyB2ZXJ5IGdvb2Qgb3B0aW1pemF0aW9uLCBzaW5jZSB3ZSBjYW4K
KyAgICAgICAgcmVkdWNlIG1vc3Qgb2YgYnJhbmQgY2hlY2tzIHRvIHN0cnVjdHVyZSBjaGVja3Mu
CisKKyAgICAgICAgV2UgY3JlYXRlZCBhIG5ldyBraW5kIG9mIHRyYW5zaXRpb24gY2FsbGVkIGBT
ZXRCcmFuZGAgdGhhdCBoYXBwZW5zIHdoZW4KKyAgICAgICAgYG9wX3NldF9icmFuZGAgaXMgZXhl
Y3V0ZWQuIFRoaXMgYWxsb3cgdXMgdG8gY2FjaGUgc3VjaCBraW5kIG9mCisgICAgICAgIHRyYXNp
dGlvbnMgb24gdHJhc2l0aW9uIHRhYmxlIHVzaW5nIHRoZSBrZXkgYDxicmFuZC0+dWlkLCAwLAor
ICAgICAgICBUcmFuc2l0aW9uS2luZDo6U2V0QnJhbmQ+YC4gRHVyaW5nIHRoaXMgdHJhbnNpdGlv
biwgd2UgdGFrZSBwcmV2aW91cworICAgICAgICBzdHJ1Y3R1cmUgYW5kIGFwcGx5IG9uZSBvZiB0
aGUgZm9sbG93aW5nIHJ1bGVzOgorCisgICAgICAgICAgICAxLiBJZiBpdOKAmXMgYSBCcmFuZGVk
U3RydWN0dXJlLCB3ZSB0aGVuIHNldCBpdCB0byBgbV9wYXJlbnRCcmFuZGAsCisgICAgICAgICAg
ICB0byBhbGxvdyBwcm9wZXIgYnJhbmQgY2hhaW4gY2hlY2suCisgICAgICAgIAorICAgICAgICAg
ICAgMi4gSWYgaXTigJlzIG5vdCBhIEJyYW5kZWRTdHJ1Y3R1cmUsIHdlIHNldCBgbV9wYXJlbnRC
cmFuZGAgdG8gbnVsbHB0ciwKKyAgICAgICAgICAgIG1lYW5pbmcgdGhhdCB0aGlzIGlzIHRoZSBm
aXJzdCBicmFuZCBiZWluZyBhZGRlZCB0byB0aGUgb2JqZWN0CisgICAgICAgICAgICB3aXRoIHRo
aXMgc3RydWN0dXJlLgorICAgICAgICAKKyAgICAgICAgRm9yIG5vdywgd2UgYXJlIHVzaW5nIHRo
ZSBmbGFnIGBpc0JyYW5kZWRTdHJ1Y3R1cmVgIHRvIGlkZW50aWZ5IHRoYXQgYQorICAgICAgICBn
aXZlbiBTdHJ1Y3R1cmUgaXMgYSBCcmFuZGVkU3RydWN0dXJlLiBUaGlzIGlzIGRvbmUgdG8gYXZv
aWQgY2hhbmdlcworICAgICAgICBvbiBwbGFjZXMgd2hlcmUgd2UgYXJlIGNoZWNraW5nIGZvciBg
dm0uc3RydWN0dXJlU3RydWN0dXJlKClgLgorICAgICAgICBIb3dldmVyLCBpZiB3ZSBldmVyIG5l
ZWQgc3BhY2Ugb24gU3RydWN0dXJlLCB0aGlzIGZsYWcgaXMgYSBnb29kCisgICAgICAgIGNhbmRp
ZGF0ZSB0byBiZSBkZWxldGVkIGFuZCB3ZSBjYW4gbW92ZSB0byBhIHNvbHV0aW9uIHRoYXQgdXNl
cworICAgICAgICBgdm0uYnJhbmRlZFN0cnVjdHVyZVN0cnVjdHVyZSgpYDsKKworICAgICAgICAg
IyBKSVQgU3VwcG9ydAorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBpbmNsdWRlcyBpbml0aWFs
IEpJVCBzdXBwb3J0IGZvciBgc2V0X3ByaXZhdGVfYnJhbmRgCisgICAgICAgIGFuZCBgY2hlY2tf
cHJpdmF0ZV9icmFuZGAuIE9uIEJhc2VsaW5lIEpJVCwgd2UgYXJlIHVzaW5nCisgICAgICAgIGBK
SVRQcmF2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3JgIHRvIHN1cHBvcnQgSUMgZm9yIGJvdGggb3Bl
cmFuZHMuCisgICAgICAgIE9uIERGR0J5dGVDb2RlUGFyc2VyIHdlIGFyZSB0cnlpbmcgdG8gaW5s
aW5lIGJyYW5kIGFjY2VzcyB3aGVuZXZlcgorICAgICAgICBwb3NzaWJsZSwgYW5kIGZhbGxiYWNr
aW5nIHRvIGBTZXRQcml2YXRlQnJhbmRgIGFuZAorICAgICAgICBgQ2hlY2tQcml2YXRlQnJhbmRg
IG90aGVyd2lzZS4gVGhvc2Ugbm9kZXMgYXJlIG5vdCBiZWluZyBvcHRpbWl6ZWQgYXQKKyAgICAg
ICAgdGhlaXIgZnVsbCBwb3RlbnRpYWwsIGJ1dCB0aGUgY29kZSBnZW5lcmF0ZWQgYnkgdGhlbSBp
cyBhbHNvIHJlbHlpbmcgb24gCisgICAgICAgIGBKSVRQcmF2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0
b3JgIHRvIGhhdmUgSUMgc3VwcG9ydCBmb3IgYm90aCBERkcgYW5kCisgICAgICAgIEZUTC4gRHVy
aW5nIERGRyBwYXJzaW5nIHdlIHRyeSByZWR1Y2UgdGhvc2UgYWNjZXNzICB0byBgQ2hlY2tJZGVu
dGlmZWlyYAorICAgICAgICBhbmQgYENoZWNrU3RydWN0dXJlYCAod2l0aCBgUHV0U3RydWN0dXJl
YCBmb3IgYHNldF9wcml2YXRlX2JyYW5kYCBjYXNlcykKKyAgICAgICAgYmFzZWQgb24gYXZhaWxh
YmxlIHByb2ZpbGVkIGRhdGEuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNv
dXJjZXMudHh0OgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6Cisg
ICAgICAgIChKU0M6OkJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9y
KToKKyAgICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKToK
KyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaDoKKworICAgICAgICBXZSBh
cmUgYWRkaW5nIGEgbmV3IHBhcmFtZXRlciBgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnRgIHRvIHBy
b3BhZ2F0ZQorICAgICAgICB3aGVuIGEgZGVmYXVsdCBjb25zdHJ1Y3RvciBuZWVkcyB0byBlbWl0
IGNvZGUgdG8gc2V0dXAgcHJpdmF0ZSBicmFuZAorICAgICAgICBvbiBpbnN0YW5jZXMuCisKKyAg
ICAgICAgKiBidWlsdGlucy9CdWlsdGluTmFtZXMuaDoKKworICAgICAgICBBZGRpbmcgYEBwcml2
YXRlQnJhbmRgIHRoYXQgIHdlIHVzZSB0byBzdG9yZSBwcml2YXRlIGJyYW5kIG9uCisgICAgICAg
IGNsYXNzJ3Mgc2NvcGUuCisKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y3JlYXRlQ2hlY2tQcml2YXRlQnJhbmQpOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGVTZXRQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlND
OjpBY2Nlc3NDYXNlOjpyZXF1aXJlc0lkZW50aWZpZXJOYW1lTWF0Y2ggY29uc3QpOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpyZXF1aXJlc0ludDMyUHJvcGVydHlDaGVjayBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6Om5lZWRzU2NyYXRjaEZQUiBjb25zdCk6CisgICAgICAg
IChKU0M6OkFjY2Vzc0Nhc2U6OmZvckVhY2hEZXBlbmRlbnRDZWxsIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6QWNjZXNzQ2FzZTo6ZG9lc0NhbGxzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNz
Q2FzZTo6Y2FuUmVwbGFjZSBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmR1bXAg
Y29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCk6Cisg
ICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbCk6CisgICAgICAgICogYnl0ZWNv
ZGUvQWNjZXNzQ2FzZS5oOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpzdHJ1Y3R1cmUgY29u
c3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpuZXdTdHJ1Y3R1cmUgY29uc3QpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRl
eEltcGwpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToK
KyAgICAgICAgKiBieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5jcHA6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6YXBwZW5kVmFyaWFudCk6Cisg
ICAgICAgIChKU0M6OkNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOjpjb21wdXRlRm9yQmFzZWxpbmUp
OgorICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6Q2hlY2tQcml2YXRlQnJh
bmRTdGF0dXMpOgorICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6Y29tcHV0
ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2spOgorICAgICAgICAoSlNDOjpDaGVj
a1ByaXZhdGVCcmFuZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgIChKU0M6OkNoZWNrUHJp
dmF0ZUJyYW5kU3RhdHVzOjpzbG93VmVyc2lvbiBjb25zdCk6CisgICAgICAgIChKU0M6OkNoZWNr
UHJpdmF0ZUJyYW5kU3RhdHVzOjptZXJnZSk6CisgICAgICAgIChKU0M6OkNoZWNrUHJpdmF0ZUJy
YW5kU3RhdHVzOjpmaWx0ZXIpOgorICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVCcmFuZFN0YXR1
czo6c2luZ2xlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChKU0M6OkNoZWNrUHJpdmF0ZUJy
YW5kU3RhdHVzOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChKU0M6OkNoZWNrUHJpdmF0ZUJy
YW5kU3RhdHVzOjptYXJrSWZDaGVhcCk6CisgICAgICAgIChKU0M6OkNoZWNrUHJpdmF0ZUJyYW5k
U3RhdHVzOjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVz
OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFN0YXR1
cy5oOiBBZGRlZC4KKyAgICAgICAgKiBieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q2hlY2tQcml2YXRlQnJhbmRWYXJpYW50OjpDaGVj
a1ByaXZhdGVCcmFuZFZhcmlhbnQpOgorICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVCcmFuZFZh
cmlhbnQ6On5DaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQpOgorICAgICAgICAoSlNDOjpDaGVja1By
aXZhdGVCcmFuZFZhcmlhbnQ6OmF0dGVtcHRUb01lcmdlKToKKyAgICAgICAgKEpTQzo6Q2hlY2tQ
cml2YXRlQnJhbmRWYXJpYW50OjptYXJrSWZDaGVhcCk6CisgICAgICAgIChKU0M6OkNoZWNrUHJp
dmF0ZUJyYW5kVmFyaWFudDo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVC
cmFuZFZhcmlhbnQ6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKEpTQzo6Q2hlY2tQcml2YXRl
QnJhbmRWYXJpYW50OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2hlY2tQcml2YXRlQnJh
bmRWYXJpYW50OjpkdW1wSW5Db250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9DaGVj
a1ByaXZhdGVCcmFuZFZhcmlhbnQuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkNoZWNrUHJpdmF0
ZUJyYW5kVmFyaWFudDo6c3RydWN0dXJlU2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2hlY2tQ
cml2YXRlQnJhbmRWYXJpYW50OjpzdHJ1Y3R1cmVTZXQpOgorICAgICAgICAoSlNDOjpDaGVja1By
aXZhdGVCcmFuZFZhcmlhbnQ6OmlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpDaGVj
a1ByaXZhdGVCcmFuZFZhcmlhbnQ6Om92ZXJsYXBzKToKKyAgICAgICAgKiBieXRlY29kZS9Db2Rl
QmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKToKKyAgICAg
ICAgKiBieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxl
SW5mbzo6RXhlY3V0YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6cHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3Jw
aGljQWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJh
dGUpOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBieXRlY29kZS9S
ZWNvcmRlZFN0YXR1c2VzLmNwcDoKKyAgICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNlczo6b3Bl
cmF0b3I9KToKKyAgICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNlczo6YWRkQ2hlY2tQcml2YXRl
QnJhbmRTdGF0dXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1c2VzOjphZGRTZXRQcml2
YXRlQnJhbmRTdGF0dXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1c2VzOjp2aXNpdEFn
Z3JlZ2F0ZSk6CisgICAgICAgIChKU0M6OlJlY29yZGVkU3RhdHVzZXM6Om1hcmtJZkNoZWFwKToK
KyAgICAgICAgKiBieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmg6CisgICAgICAgIChKU0M6OlJl
Y29yZGVkU3RhdHVzZXM6OmZvckVhY2hWZWN0b3IpOgorICAgICAgICAqIGJ5dGVjb2RlL1NldFBy
aXZhdGVCcmFuZFN0YXR1cy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpTZXRQcml2YXRlQnJh
bmRTdGF0dXM6OmFwcGVuZFZhcmlhbnQpOgorICAgICAgICAoSlNDOjpTZXRQcml2YXRlQnJhbmRT
dGF0dXM6OmNvbXB1dGVGb3JCYXNlbGluZSk6CisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFu
ZFN0YXR1czo6U2V0UHJpdmF0ZUJyYW5kU3RhdHVzKToKKyAgICAgICAgKEpTQzo6U2V0UHJpdmF0
ZUJyYW5kU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjayk6
CisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAg
ICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFN0YXR1czo6c2xvd1ZlcnNpb24gY29uc3QpOgorICAg
ICAgICAoSlNDOjpTZXRQcml2YXRlQnJhbmRTdGF0dXM6Om1lcmdlKToKKyAgICAgICAgKEpTQzo6
U2V0UHJpdmF0ZUJyYW5kU3RhdHVzOjpmaWx0ZXIpOgorICAgICAgICAoSlNDOjpTZXRQcml2YXRl
QnJhbmRTdGF0dXM6OnNpbmdsZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpTZXRQ
cml2YXRlQnJhbmRTdGF0dXM6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKEpTQzo6U2V0UHJp
dmF0ZUJyYW5kU3RhdHVzOjptYXJrSWZDaGVhcCk6CisgICAgICAgIChKU0M6OlNldFByaXZhdGVC
cmFuZFN0YXR1czo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpTZXRQcml2YXRlQnJhbmRTdGF0
dXM6OmR1bXAgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1NldFByaXZhdGVCcmFuZFN0YXR1
cy5oOiBBZGRlZC4KKyAgICAgICAgKiBieXRlY29kZS9TZXRQcml2YXRlQnJhbmRWYXJpYW50LmNw
cDogQWRkZWQuCisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFZhcmlhbnQ6OlNldFByaXZh
dGVCcmFuZFZhcmlhbnQpOgorICAgICAgICAoSlNDOjpTZXRQcml2YXRlQnJhbmRWYXJpYW50Ojp+
U2V0UHJpdmF0ZUJyYW5kVmFyaWFudCk6CisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFZh
cmlhbnQ6OmF0dGVtcHRUb01lcmdlKToKKyAgICAgICAgKEpTQzo6U2V0UHJpdmF0ZUJyYW5kVmFy
aWFudDo6bWFya0lmQ2hlYXApOgorICAgICAgICAoSlNDOjpTZXRQcml2YXRlQnJhbmRWYXJpYW50
OjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFZhcmlhbnQ6OnZpc2l0
QWdncmVnYXRlKToKKyAgICAgICAgKEpTQzo6U2V0UHJpdmF0ZUJyYW5kVmFyaWFudDo6ZHVtcCBj
b25zdCk6CisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFZhcmlhbnQ6OmR1bXBJbkNvbnRl
eHQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1NldFByaXZhdGVCcmFuZFZhcmlhbnQuaDog
QWRkZWQuCisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFZhcmlhbnQ6Om9sZFN0cnVjdHVy
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFZhcmlhbnQ6Om5ld1N0cnVj
dHVyZSBjb25zdCk6CisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFZhcmlhbnQ6OmlkZW50
aWZpZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpTZXRQcml2YXRlQnJhbmRWYXJpYW50OjpvdmVy
bGFwcyk6CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6cmVzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0
cnVjdHVyZVN0dWJJbmZvLmg6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
Y3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2sp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OlVubGlua2VkQ29kZUJsb2NrOjpwcml2YXRlQnJhbmRSZXF1aXJlbWVudCBjb25zdCk6CisgICAg
ICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpT
Qzo6VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6OnByaXZhdGVCcmFuZFJlcXVpcmVtZW50IGNv
bnN0KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHA6
CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayk6CisgICAg
ICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUu
aDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorCisgICAgICAg
IFdlIGNoYW5nZWQgQnl0ZWNvZGVHZW5lcmF0b3IgZm9yIEZ1bmN0aW9uTm9kZSBhbmQgRXZhbE5v
ZGUgdG8KKyAgICAgICAgcHJvcGFnYXRlIHBhcmVudFNjb3BlIFZhcmlhYmxlRW52aXJvbm1lbnQu
IFRoZXNlIGVudmlyb25tZW50cyBzdG9yZXMKKyAgICAgICAgcHJpdmF0ZSBuYW1lIGVudHJpZXMg
dGhhdCBhcmUgdmlzaWJsZSBpbnRvIHRoZSBzY29wZSBvZiB0aGUKKyAgICAgICAgZnVuY3Rpb24v
ZXZhbCBpbiBhZGRpdGlvbiB0byBURFogdmFyaWFibGVzLgorICAgICAgICBUaGlzIGlzIHJlcXVp
cmVkIHRvIGlkZW50aWZ5IHRoZSBraW5kIG9mIGFjY2VzcyBhIHByaXZhdGUgbmFtZSBpcworICAg
ICAgICByZWZlcnJpbmcgdG8sIHNpbmNlIGl0IGNhbiBiZSBhIHByaXZhdGUgZmllbGQgb3IgYSBw
cml2YXRlIG1ldGhvZC4KKyAgICAgICAgR2l2ZW4gdGhpcyBjaGFuZ2UsIHdlIGNoYW5nZWQgdGhl
IG5hbWUgb2YgVmFyaWFibGVFbnZpcm9ubWVudAorICAgICAgICBmcm9tIGBwYXJlbnRTY29wZVRE
WlZhcmlhYmxlc2AgdG8gYHBhcmVudFNjb3BlVmFyaWFibGVFbnZpcm9ubWVudGAuCisKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Omluc3RhbnRpYXRlTGV4aWNhbFZhcmlhYmxlcyk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0UHJpdmF0ZU5hbWUpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZVByaXZhdGVCcmFuZCk6
CisKKyAgICAgICAgVGhlIHByb2Nlc3MgdG8gY3JlYXRlIGEgcHJpdmF0ZSBicmFuZCBpcyBhcyBm
b2xsb3dzOgorICAgICAgICAgICAgMS4gQ3JlYXRlIGEgUHJpdmF0ZVN5bWJvbCB1c2luZyBgQGNy
ZWF0ZVByaXZhdGVTeW1ib2xgLgorICAgICAgICAgICAgMi4gU3RvcmUgdGhpcyBzeW1ib2wgaW50
byBhIGdpdmVuIHNjb3BlIChpLmUgY2xhc3MgbGV4aWNhbCBzY29wZSkKKyAgICAgICAgICAgICAg
IG9uIGBAcHJpdmF0ZUJyYW5kYCB2YXJpYWJsZS4KKworICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEluc3RhbGxQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEdldFByaXZhdGVCcmFuZCk6CisKKyAgICAgICAgV2UgYWRkZWQgYG1f
cHJpdmF0ZU5hbWVzU3RhY2tgIHRvIEJ5dGVjb2RlR2VuZXJhdG9yIHRvIHJlcHJlc2VudCB0aGUK
KyAgICAgICAgc2NvcGUgY2hhaW4gb2YgYXZhaWxhYmxlIHByaXZhdGUgbmFtZXMgd2hpbGUgZ2Vu
ZXJhdGluZyBieXRlY29kZS4KKworICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dENoZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Omlz
UHJpdmF0ZU1ldGhvZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoUHJp
dmF0ZUFjY2Vzc05hbWVzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnBvcFBy
aXZhdGVBY2Nlc3NOYW1lcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZXRB
dmFpbGFibGVQcml2YXRlQWNjZXNzTmFtZXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0TmV3Q2xhc3NGaWVsZEluaXRpYWxpemVyRnVuY3Rpb24pOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdEdldEJ5VmFsKTogRGVsZXRlZC4K
KyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnByaXZhdGVCcmFuZFJlcXVpcmVtZW50IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6Om1ha2VGdW5jdGlvbik6CisKKyAgICAgICAgVGhpcyBjaGFuZ2Ug
aXMgcmVxdWlyZWQgdG8gcHJvcGVybHkgcHJvcGFnYXRlIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50
CisgICAgICAgIHRvIGFycm93IGZ1bmN0aW9ucyB0aGF0IGNhbiBwb3RlbnRpYWxseSBjYWxsIGBz
dXBlcigpYC4KKworICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAg
ICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjplbWl0RGVjbGFyZVByaXZhdGVGaWVsZE5hbWVz
KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkpOgorICAg
ICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6ZW1pdEdldFByb3BlcnR5VmFsdWUpOgorCisgICAgICAg
IEFkZGluZyBzdXBwb3J0IHRvIHByb3Blcmx5IGFjY2VzcyBwcml2YXRlIG1ldGhvZC4gU2luY2Ug
d2Ugc3RvcmUKKyAgICAgICAgcHJpdmF0ZSBtZXRob2RzIG9uIGNsYXNzIGxleGljYWwgc2NvcGUs
IHdlIG5lZWQgYSBkaWZmZXJlbnQgc2V0IG9mCisgICAgICAgIGluc3RydWN0aW9ucyB0byBhY2Nl
c3MgYSBwcml2YXRlIG1ldGhvZC4KKworICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6ZW1pdFB1
dFByb3BlcnR5KToKKworICAgICAgICBJbiB0aGUgY2FzZSBvZiB3ZSB0cnlpbmcgdG8gd3JpdGUg
aW4gYSBwcml2YXRlIG1ldGhvZCwgd2UgbmVlZCB0bworICAgICAgICB0aHJvdyBhIFR5cGVFcnJv
ciBhY2NvcmRpbmcgdG8gc3BlY2lmaWNhdGlvbgorICAgICAgICAoaHR0cHM6Ly90YzM5LmVzL3By
b3Bvc2FsLXByaXZhdGUtbWV0aG9kcy8jc2VjLXByaXZhdGVmaWVsZHNldCkuCisKKyAgICAgICAg
KEpTQzo6RnVuY3Rpb25DYWxsVmFsdWVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpQb3N0Zml4Tm9kZTo6ZW1pdERvdCk6CisgICAgICAgIChKU0M6OlByZWZpeE5vZGU6OmVtaXRE
b3QpOgorICAgICAgICAoSlNDOjpDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAg
ICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdn
ZXJDYWxsRnJhbWU6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKiBkZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAg
ICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpm
aWx0ZXJJQ1N0YXR1cyk6CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhh
c2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdD
YXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6Cisg
ICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVy
aXplKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OmNsb2JiZXJzRXhpdFN0YXRlKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBo
YXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAg
ICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmspOgorICAgICAgICAqIGRmZy9E
RkdKSVRDb21waWxlci5oOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjphZGRQcml2
YXRlQnJhbmRBY2Nlc3MpOgorICAgICAgICAqIGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAgICAg
KiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0NoZWNrUHJpdmF0
ZUJyYW5kU3RhdHVzKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjaGVja1ByaXZhdGVCcmFu
ZFN0YXR1cyk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzU2V0UHJpdmF0ZUJyYW5kU3Rh
dHVzKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzZXRQcml2YXRlQnJhbmRTdGF0dXMpOgor
ICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPYmplY3RBbGxv
Y2F0aW9uU2lua2luZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNo
ZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVNldFByaXZhdGVCcmFuZCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHA6Cisg
ICAgICAgICogZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwOgorICAgICAgICAqIGZ0
bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgor
ICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVQcml2YXRlQnJhbmRBY2Nlc3MpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlU2V0UHJpdmF0ZUJyYW5kKToK
KyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmV2
YWwpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVD
b21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nh
c2VzKToKKyAgICAgICAgKEpTQzo6SklUOjpsaW5rKToKKyAgICAgICAgKiBqaXQvSklULmg6Cisg
ICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5l
cmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5l
cmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Iu
aDoKKyAgICAgICAgKEpTQzo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpKSVRQcml2
YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQcml2YXRlQnJhbmRB
Y2Nlc3NHZW5lcmF0b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6CisgICAgICAgICogaml0L0pJVE9w
ZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgor
ICAgICAgICAoSlNDOjpnZXRQcml2YXRlTmFtZSk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlv
bnMuaDoKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2NoZWNrX3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2No
ZWNrX3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5kKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9zZXRfcHJpdmF0ZV9icmFuZCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9jaGVja19wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0U2xvd19vcF9jaGVja19wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKiBqaXQvUmVw
YXRjaC5jcHA6CisgICAgICAgIChKU0M6OnRyeUNhY2hlQ2hlY2tQcml2YXRlQnJhbmQpOgorICAg
ICAgICAoSlNDOjpyZXBhdGNoQ2hlY2tQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjp0cnlD
YWNoZVNldFByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OnJlcGF0Y2hTZXRQcml2YXRlQnJh
bmQpOgorICAgICAgICAoSlNDOjpyZXNldENoZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpT
Qzo6cmVzZXRTZXRQcml2YXRlQnJhbmQpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmg6CisgICAg
ICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJ
TlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmg6Cisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBs
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5j
cHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpGdW5jdGlvbk1ldGFkYXRh
Tm9kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OkJhc2VEb3RO
b2RlOjppc1ByaXZhdGVNZW1iZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6
aXNQcml2YXRlRmllbGQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9QYXJzZXIu
Y3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlc3Npb24pOgorICAg
ICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OmRlY2xhcmVQcml2
YXRlTWV0aG9kKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OmRlY2xhcmVQcml2YXRlRmllbGQpOgor
ICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UpOgorICAgICAgICAoSlNDOjpw
YXJzZSk6CisgICAgICAgIChKU0M6OlNjb3BlOjpkZWNsYXJlUHJpdmF0ZU5hbWUpOiBEZWxldGVk
LgorICAgICAgICAqIHBhcnNlci9QYXJzZXJNb2Rlcy5oOgorICAgICAgICAqIHBhcnNlci9TeW50
YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZURvdEFjY2Vz
cyk6CisgICAgICAgICogcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwOgorICAgICAgICAo
SlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZU1ldGhvZCk6CisgICAgICAg
ICogcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKEpTQzo6VmFyaWFibGVF
bnZpcm9ubWVudEVudHJ5Ojppc1ByaXZhdGVGaWVsZCBjb25zdCk6CisgICAgICAgIChKU0M6OlZh
cmlhYmxlRW52aXJvbm1lbnRFbnRyeTo6aXNQcml2YXRlTWV0aG9kIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5OjpzZXRJc1ByaXZhdGVGaWVsZCk6CisgICAg
ICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeTo6c2V0SXNQcml2YXRlTWV0aG9kKToK
KyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6aXNNZXRob2QgY29uc3QpOgorICAgICAg
ICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5Ojppc1ByaXZhdGVNZXRob2RPckFjZXNzb3IgY29uc3Qp
OgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjphZGRQcml2YXRlTmFtZSk6Cisg
ICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlRmllbGQpOgor
ICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZU1ldGhvZCk6
CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OnByaXZhdGVOYW1lRW52aXJvbm1l
bnQgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpoYXNQcml2YXRl
TWV0aG9kT3JBY2Nlc3NvciBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1l
bnQ6OmFkZFByaXZhdGVOYW1lc0Zyb20pOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25t
ZW50RW50cnk6OmlzUHJpdmF0ZU5hbWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpW
YXJpYWJsZUVudmlyb25tZW50RW50cnk6OnNldElzUHJpdmF0ZU5hbWUpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZU5hbWUpOiBEZWxl
dGVkLgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAgICAoSlNDOjpD
YWNoZWRDb2RlQmxvY2tSYXJlRGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ29k
ZUJsb2NrUmFyZURhdGE6OmRlY29kZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZEZ1bmN0
aW9uRXhlY3V0YWJsZVJhcmVEYXRhOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRGdW5j
dGlvbkV4ZWN1dGFibGVSYXJlRGF0YTo6ZGVjb2RlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2Fj
aGVkRnVuY3Rpb25FeGVjdXRhYmxlOjpwcml2YXRlQnJhbmRSZXF1aXJlbWVudCBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkNhY2hlZENvZGVCbG9jazo6ZGVyaXZlZENvbnRleHRUeXBlIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6Q2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlOjplbmNvZGUpOgorICAgICAg
ICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRDb2RlQmxvY2s6Om5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5j
cHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsKToKKyAgICAg
ICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtlZENvZGVCbG9jayk6CisgICAgICAgIChKU0M6OmdlbmVy
YXRlVW5saW5rZWRDb2RlQmxvY2tGb3JEaXJlY3RFdmFsKToKKyAgICAgICAgKEpTQzo6Q29kZUNh
Y2hlOjpnZXRVbmxpbmtlZEdsb2JhbEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgICogcnVu
dGltZS9Db2RlQ2FjaGUuaDoKKyAgICAgICAgKiBydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxl
LmNwcDoKKyAgICAgICAgKEpTQzo6RGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OkRpcmVjdEV2YWxFeGVjdXRhYmxlOjpEaXJlY3RFdmFsRXhlY3V0YWJsZSk6Cisg
ICAgICAgICogcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRp
bWUvRXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6RXZh
bEV4ZWN1dGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaDoKKyAgICAg
ICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OmV4ZWN1dGFibGVJbmZvIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6RXZhbEV4ZWN1dGFibGU6OnByaXZhdGVCcmFuZFJlcXVpcmVtZW50IGNvbnN0KToKKyAg
ICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpjcmVh
dGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcik6CisgICAgICAgICogcnVudGltZS9JbmRpcmVjdEV2
YWxFeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6SW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6
SW5kaXJlY3RFdmFsRXhlY3V0YWJsZSk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpjaGVja1ByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRQcml2
YXRlQnJhbmQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5jcHA6CisgICAgICAgIChKU0M6
OkpTU2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFopOgorICAgICAgICAqIHJ1
bnRpbWUvSlNTY29wZS5oOgorICAgICAgICAqIHJ1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGUuaDoKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpPcHRp
b25zOjpyZWNvbXB1dGVEZXBlbmRlbnRPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1lL09wdGlv
bnNMaXN0Lmg6CisgICAgICAgICogcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oOgorICAgICAg
ICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjptYXRl
cmlhbGl6ZVByb3BlcnR5VGFibGUpOgorICAgICAgICAoSlNDOjpCcmFuZGVkU3RydWN0dXJlOjpC
cmFuZGVkU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6QnJhbmRlZFN0cnVjdHVyZTo6Y3JlYXRl
KToKKyAgICAgICAgKEpTQzo6QnJhbmRlZFN0cnVjdHVyZTo6Y2hlY2tCcmFuZCk6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6c2V0QnJhbmRUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJl
SW1wbCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6c2V0QnJhbmRUcmFuc2l0aW9uRnJvbUV4
aXN0aW5nU3RydWN0dXJlQ29uY3VycmVudGx5KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpz
ZXRCcmFuZFRyYW5zaXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUv
U3RydWN0dXJlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Zm9yRWFjaFByb3BlcnR5Q29uY3VycmVudGx5KToKKyAg
ICAgICAgKiBydW50aW1lL1N0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oOgorICAgICAgICAqIHJ1
bnRpbWUvU3ltYm9sVGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZTo6Y2xvbmVT
Y29wZVBhcnQpOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuaDoKKyAgICAgICAgKiBy
dW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1l
L1ZNLmg6CisKIDIwMjEtMDItMDEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4K
IAogICAgICAgICBbSlNDXSBBZGQgQCBpbiBFcnJvci5zdGFjayBpZiBVUkwgZXhpc3RzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYTY0YTM2NTQyYWVmOTVhMTA5ODNhZjhk
OTk0YWVlYmUzZmRiZGFlMS4uNmNkZDJjMTYyM2FjNmNhZGFlM2FlMjRiMDZjMTY0MGU5ZTcyZmU4
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTM4LDYgKzUzOCw4IEBA
IHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgYnl0ZWNv
ZGUvQ2FsbExpbmtJbmZvLmgKICAgICBieXRlY29kZS9DYWxsTW9kZS5oCiAgICAgYnl0ZWNvZGUv
Q2FsbFZhcmlhbnQuaAorICAgIGJ5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmgKKyAg
ICBieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQuaAogICAgIGJ5dGVjb2RlL0NvZGVC
bG9jay5oCiAgICAgYnl0ZWNvZGUvQ29kZUJsb2NrSGFzaC5oCiAgICAgYnl0ZWNvZGUvQ29kZU9y
aWdpbi5oCkBAIC01NzMsNiArNTc1LDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJB
TUVXT1JLX0hFQURFUlMKICAgICBieXRlY29kZS9PcGVyYW5kcy5oCiAgICAgYnl0ZWNvZGUvUHJv
cGVydHlDb25kaXRpb24uaAogICAgIGJ5dGVjb2RlL1B1dEJ5SWRGbGFncy5oCisgICAgYnl0ZWNv
ZGUvU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmgKKyAgICBieXRlY29kZS9TZXRQcml2YXRlQnJhbmRW
YXJpYW50LmgKICAgICBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCiAgICAgYnl0ZWNvZGUvU3Ry
dWN0dXJlU2V0LmgKICAgICBieXRlY29kZS9TdXBlclNhbXBsZXIuaApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA4M2RlNzliODQxZjliMWZhMzk1MzcyNWQyNWUyMTE5NWIwZDAwNDU4
Li40ZDZlODE5NGM5NjY5Yzg2NDgzMDk3YTFjY2VkZTIyYjhmMGYyZGYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTI0Myw5ICsxMjQzLDEzIEBACiAJCTg2MTU4QUIzMTU1QzhC
NDAwMEI0NUM5QyAvKiBQcm9wZXJ0eU5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2MTU4QUIyMTU1QzhCM0YwMEI0NUM5QyAvKiBQcm9wZXJ0eU5h
bWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4
NjE4MTY3NzFGQjc5MjQyMDBFQ0M0RUMgLyogQmlnSW50T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjE4MTY3NjFGQjc5MjJGMDBFQ0M0RUMg
LyogQmlnSW50T2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJODYyNTUzRDIxNjEzNkUxQTAwOUYxN0QwIC8qIEpTUHJveHkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MjU1M0NGMTYxMzZBQTUw
MDlGMTdEMCAvKiBKU1Byb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJODYyODFFRjAyNUI2MTYwMDAwMzY3MDA0IC8qIENoZWNrUHJpdmF0ZUJy
YW5kVmFyaWFudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODYyODFFRUYyNUI2MTYwMDAwMzY3MDA0IC8qIENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudC5o
ICovOyB9OworCQk4NjI4MUVGNDI1QjYxQUYwMDAzNjcwMDQgLyogQ2hlY2tQcml2YXRlQnJhbmRT
dGF0dXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
MjgxRUYzMjVCNjFBRjAwMDM2NzAwNCAvKiBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5oICovOyB9
OwogCQk4NjNCMjNFMDBGQzYxMTg5MDA3MDNBQTQgLyogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjNCMjNERjBG
QzYwRTYyMDA3MDNBQTQgLyogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODYzRkJDNUEyNUIwOTNCOTAwRjZD
OTMwIC8qIFdhc21WYWx1ZUxvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NjNGQkM1ODI1QjA5M0I5MDBGNkM5MzAgLyogV2FzbVZhbHVlTG9j
YXRpb24uaCAqLzsgfTsKIAkJODY1QTMwRjExMzUwMDdFMTAwQ0RCNDlFIC8qIEpTQ0pTVmFsdWVJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NjVBMzBGMDEzNTAwN0UxMDBDREI0OUUgLyogSlNDSlNWYWx1ZUlubGluZXMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NjVEQTBDNTI1Qjg5NTc0
MDA4NzU3NzIgLyogU2V0UHJpdmF0ZUJyYW5kVmFyaWFudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY1REEwQzQyNUI4OTU3NDAwODc1NzcyIC8qIFNl
dFByaXZhdGVCcmFuZFZhcmlhbnQuaCAqLzsgfTsKKwkJODY1REEwQzgyNUI4OTYwQzAwODc1Nzcy
IC8qIFNldFByaXZhdGVCcmFuZFN0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODY1REEwQzcyNUI4OTYwQzAwODc1NzcyIC8qIFNldFByaXZhdGVC
cmFuZFN0YXR1cy5oICovOyB9OwogCQk4NjY3MzlEMjEzQkZERTcxMDAyM0Q4N0MgLyogQmlnSW50
ZWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY2
NzM5RDAxM0JGREU3MTAwMjNEODdDIC8qIEJpZ0ludGVnZXIuaCAqLzsgfTsKIAkJODY2NzM5RDMx
M0JGREU3MTAwMjNEODdDIC8qIFVpbnQxNldpdGhGcmFjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY2NzM5RDExM0JGREU3MTAwMjNEODdDIC8q
IFVpbnQxNldpdGhGcmFjdGlvbi5oICovOyB9OwogCQk4NjcwNEI0MzEyREI4QTgxMDBBOUZFN0Ig
LyogWWFyclN5bnRheENoZWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2NzA0QjQxMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tl
ci5oICovOyB9OwpAQCAtNDE0MCw2ICs0MTQ0LDEwIEBACiAJCTg2MTgxNjc4MUZCNzkzMTMwMEVD
QzRFQyAvKiBCaWdJbnRPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmlnSW50T2JqZWN0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYyNTUzQ0UxNjEzNkFBNTAwOUYx
N0QwIC8qIEpTUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2MjU1M0NGMTYxMzZB
QTUwMDlGMTdEMCAvKiBKU1Byb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODYyODFFRUYyNUI2MTYw
MDAwMzY3MDA0IC8qIENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
aGVja1ByaXZhdGVCcmFuZFZhcmlhbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODYyODFFRjEyNUI2MTY1RTAwMzY3MDA0IC8qIENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk4NjI4MUVGMzI1QjYxQUYwMDAzNjcwMDQgLyogQ2hlY2tQ
cml2YXRlQnJhbmRTdGF0dXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2hlY2tQcml2YXRlQnJhbmRTdGF0
dXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODYyODFFRjUyNUI2MUIwNjAwMzY3
MDA0IC8qIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENo
ZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODYzQjIzREYwRkM2MEU2MjAwNzAzQUE0IC8qIE1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYzQzZEOTgxNTIxMTExMjAwNTg1RTRFIC8qIFlh
cnJDYW5vbmljYWxpemVVQ1MyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IFlhcnJDYW5vbmljYWxpemVVQ1MyLmNwcDsgcGF0aCA9IHlhcnIvWWFyckNhbm9uaWNhbGl6
ZVVDUzIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjNDNkQ5OTE1MjExMTEy
MDA1ODVFNEUgLyogWWFyckNhbm9uaWNhbGl6ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBZYXJyQ2Fub25pY2FsaXplLmg7IHBhdGggPSB5YXJyL1lhcnJDYW5vbmljYWxpemUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQxNTAsNiArNDE1OCwxMCBAQAogCQk4
NjQwOTIzQjE1NkVFRDNCMDA1NjZDQzIgLyogQVJNNjRSZWdpc3RlcnMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQVJNNjRSZWdpc3RlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODY0MDkyM0MxNTZFRUQzQjAwNTY2Q0IyIC8qIE1hY3JvQXNzZW1ibGVyQVJN
NjQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJBUk02
NC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjVBMzBGMDEzNTAwN0UxMDBDREI0
OUUgLyogSlNDSlNWYWx1ZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNDSlNWYWx1ZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODY1
REEwQzQyNUI4OTU3NDAwODc1NzcyIC8qIFNldFByaXZhdGVCcmFuZFZhcmlhbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2V0UHJpdmF0ZUJyYW5kVmFyaWFudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk4NjVEQTBDNjI1Qjg5NTlFMDA4NzU3NzIgLyogU2V0UHJpdmF0ZUJyYW5kVmFyaWFu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXRQcml2YXRlQnJhbmRWYXJpYW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODY1REEwQzcyNUI4OTYwQzAwODc1NzcyIC8qIFNl
dFByaXZhdGVCcmFuZFN0YXR1cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXRQcml2YXRlQnJhbmRTdGF0
dXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODY1REEwQzkyNUI4OTYyQTAwODc1
NzcyIC8qIFNldFByaXZhdGVCcmFuZFN0YXR1cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXRQ
cml2YXRlQnJhbmRTdGF0dXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjY3
MzlEMDEzQkZERTcxMDAyM0Q4N0MgLyogQmlnSW50ZWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBCaWdJbnRlZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTg2NjczOUQxMTNCRkRFNzEwMDIzRDg3QyAvKiBVaW50MTZXaXRoRnJhY3Rpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVWludDE2V2l0aEZyYWN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2NzA0QjQwMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3lu
dGF4Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBZYXJy
U3ludGF4Q2hlY2tlci5jcHA7IHBhdGggPSB5YXJyL1lhcnJTeW50YXhDaGVja2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg0MDksNiArODQyMSwxMCBAQAogCQkJCTYyNzY3
MzIyMUI2ODBDMUUwMEZEOUYyRSAvKiBDYWxsTW9kZS5oICovLAogCQkJCTBGM0I3RTI0MTlBMTFC
ODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5jcHAgKi8sCiAJCQkJMEYzQjdFMjUxOUExMUI4MDAw
RDlCQzU2IC8qIENhbGxWYXJpYW50LmggKi8sCisJCQkJODYyODFFRjUyNUI2MUIwNjAwMzY3MDA0
IC8qIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmNwcCAqLywKKwkJCQk4NjI4MUVGMzI1QjYxQUYw
MDAzNjcwMDQgLyogQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuaCAqLywKKwkJCQk4NjI4MUVGMTI1
QjYxNjVFMDAzNjcwMDQgLyogQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50LmNwcCAqLywKKwkJCQk4
NjI4MUVFRjI1QjYxNjAwMDAzNjcwMDQgLyogQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50LmggKi8s
CiAJCQkJOTY5QTA3OTAwRUQxRDNBRTAwRjFGNjgxIC8qIENvZGVCbG9jay5jcHAgKi8sCiAJCQkJ
OTY5QTA3OTEwRUQxRDNBRTAwRjFGNjgxIC8qIENvZGVCbG9jay5oICovLAogCQkJCTBGOEY5NDNE
MTY2NzYzMkQwMEQ2MTk3MSAvKiBDb2RlQmxvY2tIYXNoLmNwcCAqLywKQEAgLTg1NDMsNiArODU1
OSwxMCBAQAogCQkJCTBGNDRBN0FBMjBCRjY4NUUwMDIyQjE3MSAvKiBSZWNvcmRlZFN0YXR1c2Vz
LmggKi8sCiAJCQkJMEZGNjBBQkYxNjc0MEY4MTAwMDI5Nzc5IC8qIFJlZHVjZVdoaXRlc3BhY2Uu
Y3BwICovLAogCQkJCTBGRjYwQUMwMTY3NDBGODEwMDAyOTc3OSAvKiBSZWR1Y2VXaGl0ZXNwYWNl
LmggKi8sCisJCQkJODY1REEwQzkyNUI4OTYyQTAwODc1NzcyIC8qIFNldFByaXZhdGVCcmFuZFN0
YXR1cy5jcHAgKi8sCisJCQkJODY1REEwQzcyNUI4OTYwQzAwODc1NzcyIC8qIFNldFByaXZhdGVC
cmFuZFN0YXR1cy5oICovLAorCQkJCTg2NURBMEM2MjVCODk1OUUwMDg3NTc3MiAvKiBTZXRQcml2
YXRlQnJhbmRWYXJpYW50LmNwcCAqLywKKwkJCQk4NjVEQTBDNDI1Qjg5NTc0MDA4NzU3NzIgLyog
U2V0UHJpdmF0ZUJyYW5kVmFyaWFudC5oICovLAogCQkJCTBGRDgyRTg0MTQxRjNGREEwMDE3OUM5
NCAvKiBTcGVjdWxhdGVkVHlwZS5jcHAgKi8sCiAJCQkJMEZEODJFNEYxNDFEQUVBMTAwMTc5Qzk0
IC8qIFNwZWN1bGF0ZWRUeXBlLmggKi8sCiAJCQkJMEZCNDM4QTIxOTI3MEIxRDAwRTFGQkM5IC8q
IFN0cnVjdHVyZVNldC5jcHAgKi8sCkBAIC05MzMxLDYgKzkzNTEsOCBAQAogCQkJCUZFQzE2MDMy
MjMzOUU5RjkwMEEwNENCOCAvKiBDZWxsU2l6ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxQzNE
REExQkJDRTA5RTAwRTUyM0U0IC8qIENlbGxTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTMz
OEUyQTcyMzk2RUZGQjAwQzYxQkFEIC8qIENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlLmggaW4g
SGVhZGVycyAqLywKKwkJCQk4NjI4MUVGNDI1QjYxQUYwMDAzNjcwMDQgLyogQ2hlY2tQcml2YXRl
QnJhbmRTdGF0dXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTg2MjgxRUYwMjVCNjE2MDAwMDM2NzAw
NCAvKiBDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNkFB
QUU1MEUxRjQyNjUwMEFEODdEOCAvKiBDbGFzc0luZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RTA1MDI2MUFBOTA5NTYwMEQzM0IzMyAvKiBDbG9uZWRBcmd1bWVudHMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMThDNDVFMEUxNkY1Q0QwMEIzNDQ2MCAvKiBDTG9vcFN0YWNrLmggaW4gSGVhZGVy
cyAqLywKQEAgLTEwMzgyLDYgKzEwNDA0LDggQEAKIAkJCQlBNTRDRjJGNjE4NEVBQjI0MDAyMzdG
MTkgLyogU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5REE2MTdEMTI4NTgw
MDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5MERENkUx
ODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywK
KwkJCQk4NjVEQTBDODI1Qjg5NjBDMDA4NzU3NzIgLyogU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk4NjVEQTBDNTI1Qjg5NTc0MDA4NzU3NzIgLyogU2V0UHJpdmF0
ZUJyYW5kVmFyaWFudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyOTlEQTIxN0QxMjg0ODAwNUY1
RkY5IC8qIFNldFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFRTk4NDExQTg4NjVC
NzAwNzU0RTkzIC8qIFNldHVwVmFyYXJnc0ZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlEQzE3
RTgxODFDOUM5MUQ5MDA4QTZBQjMgLyogU2hhZG93Q2hpY2tlbi5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggMTdjMzk3MDVkMjlmNmY4OTUzMzZkN2JmMTc1
NjU4ZGM3NDQxZjg5MS4uNmE5YjMxYzE2OGI0MDYxNzhiYzA4ODZhOWQ2MjAwMWY1YWZhZTNjNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtMjExLDYgKzIxMSw4IEBAIGJ5dGVjb2Rl
L0NhbGxMaW5rSW5mby5jcHAKIGJ5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAogYnl0ZWNvZGUv
Q2FsbE1vZGUuY3BwCiBieXRlY29kZS9DYWxsVmFyaWFudC5jcHAKK2J5dGVjb2RlL0NoZWNrUHJp
dmF0ZUJyYW5kU3RhdHVzLmNwcAorYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50LmNw
cAogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAogYnl0ZWNvZGUvQ29kZUJsb2NrSGFzaC5jcHAKIGJ5
dGVjb2RlL0NvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAKQEAgLTI3MSw2ICsyNzMs
OCBAQCBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAogYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQu
Y3BwCiBieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAogYnl0ZWNvZGUvUmVkdWNlV2hpdGVz
cGFjZS5jcHAKK2J5dGVjb2RlL1NldFByaXZhdGVCcmFuZFN0YXR1cy5jcHAKK2J5dGVjb2RlL1Nl
dFByaXZhdGVCcmFuZFZhcmlhbnQuY3BwCiBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKIGJ5
dGVjb2RlL1N0cnVjdHVyZVNldC5jcHAKIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dh
dGNocG9pbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
QnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9C
dWlsdGluRXhlY3V0YWJsZXMuY3BwCmluZGV4IDFhMjE0OTJhNjUxZTEwZTBkODczZmE0ZDliZGUx
MjkxNmFiOWFiNDkuLjY2NDE3YzQxMzIxZDI0NzliNTY4ODhmYWFmYWRkYTljY2Q5YzNlYzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJs
ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0
YWJsZXMuY3BwCkBAIC01OSw3ICs1OSw3IEBAIFNvdXJjZUNvZGUgQnVpbHRpbkV4ZWN1dGFibGVz
OjpkZWZhdWx0Q29uc3RydWN0b3JTb3VyY2VDb2RlKENvbnN0cnVjdG9yS2luZCBjb25zCiAgICAg
cmV0dXJuIFNvdXJjZUNvZGUoKTsKIH0KIAotVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1
aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yKENvbnN0cnVjdG9yS2lu
ZCBjb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKQorVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9y
KENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUs
IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQ
cml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCkKIHsKICAgICBz
d2l0Y2ggKGNvbnN0cnVjdG9yS2luZCkgewogICAgIGNhc2UgQ29uc3RydWN0b3JLaW5kOjpOb25l
OgpAQCAtNjcsNyArNjcsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4
ZWN1dGFibGVzOjpjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoQ29uc3RydQogICAgICAgICBicmVh
azsKICAgICBjYXNlIENvbnN0cnVjdG9yS2luZDo6QmFzZToKICAgICBjYXNlIENvbnN0cnVjdG9y
S2luZDo6RXh0ZW5kczoKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUV4ZWN1dGFibGUobV92bSwgZGVm
YXVsdENvbnN0cnVjdG9yU291cmNlQ29kZShjb25zdHJ1Y3RvcktpbmQpLCBuYW1lLCBjb25zdHJ1
Y3RvcktpbmQsIENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdCwgbmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIpOworICAgICAgICByZXR1cm4gY3JlYXRlRXhlY3V0YWJsZShtX3ZtLCBkZWZh
dWx0Q29uc3RydWN0b3JTb3VyY2VDb2RlKGNvbnN0cnVjdG9yS2luZCksIG5hbWUsIGNvbnN0cnVj
dG9yS2luZCwgQ29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0LCBuZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplciwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOwogICAgIH0KICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTc4LDcgKzc4LDcgQEAgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlQnVpbHRp
bkV4ZWN1dGFibGUoY29uc3QgU28KICAgICByZXR1cm4gY3JlYXRlRXhlY3V0YWJsZShtX3ZtLCBj
b2RlLCBuYW1lLCBjb25zdHJ1Y3RvcktpbmQsIGNvbnN0cnVjdEFiaWxpdHksIE5lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyOjpObyk7CiB9CiAKLVVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBC
dWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIENvbnN0cnVjdG9yS2luZCBjb25z
dHJ1Y3RvcktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgTmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpCitVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKFZN
JiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBD
b25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVj
dEFiaWxpdHksIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCkK
IHsKICAgICAvLyBGSVhNRTogQ2FuIHdlIGp1c3QgbWFrZSBNZXRhRGF0YSBjb21wdXRhdGlvbiBi
ZSBjb25zdGV4cHIgYW5kIGhhdmUgdGhlIGNvbXBpbGVyIGRvIHRoaXMgZm9yIHVzPwogICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTMyNzIKQEAgLTI1MSw3
ICsyNTEsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVz
OjpjcmVhdGVFeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgUwogICAgICAgICB9CiAgICAgfQogCi0g
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUodm0sIHNvdXJjZSwgJm1ldGFkYXRhLCBraW5k
LCBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIG51bGxwdHIs
IERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGlz
QnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6
OmNyZWF0ZSh2bSwgc291cmNlLCAmbWV0YWRhdGEsIGtpbmQsIGNvbnN0cnVjdEFiaWxpdHksIEpT
UGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgbnVsbHB0ciwgV1RGOjpudWxsb3B0LCBEZXJpdmVk
Q29udGV4dFR5cGU6Ok5vbmUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBwcml2YXRlQnJh
bmRSZXF1aXJlbWVudCwgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IpOwogICAgIHJl
dHVybiBmdW5jdGlvbkV4ZWN1dGFibGU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaAppbmRleCA0NTE2MzhlODczZjc5NmM4
YzRkMjYyOWM3YjVhYWZiZmFlYjI0Yjk4Li40M2UzODI3NWIxYjlhYTM2MTY3YTJhZTkxZDM1ODc4
NjAzODA3ODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVp
bHRpbkV4ZWN1dGFibGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1
aWx0aW5FeGVjdXRhYmxlcy5oCkBAIC01OCw5ICs1OCw5IEBAIFNvdXJjZUNvZGUgbmFtZSMjU291
cmNlKCk7CiAjdW5kZWYgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMKIAogICAgIHN0YXRpYyBT
b3VyY2VDb2RlIGRlZmF1bHRDb25zdHJ1Y3RvclNvdXJjZUNvZGUoQ29uc3RydWN0b3JLaW5kKTsK
LSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlRGVmYXVsdENvbnN0cnVjdG9y
KENvbnN0cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVEZWZh
dWx0Q29uc3RydWN0b3IoQ29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBO
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOwogCi0g
ICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVFeGVjdXRhYmxlKFZN
JiwgY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXImLCBDb25zdHJ1Y3RvcktpbmQs
IENvbnN0cnVjdEFiaWxpdHksIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsKKyAgICBzdGF0
aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUV4ZWN1dGFibGUoVk0mLCBjb25z
dCBTb3VyY2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYsIENvbnN0cnVjdG9yS2luZCwgQ29uc3Ry
dWN0QWJpbGl0eSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVp
cmVtZW50ID0gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmUpOwogCiAgICAgdm9pZCBmaW5h
bGl6ZVVuY29uZGl0aW9uYWxseSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQnVpbHRpbk5hbWVzLmgKaW5kZXggNDRjNmIyMzVlZmVjZDM1MDQ2YzcxZjdhYmU5ZDJiM2Y3
NWQzOWY5MS4uZWIxNjEwNGUxMmRkMTBkODk2MDUyZGZlYTMwOTUzNGYzNTI1ODNjNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaApAQCAtMTcyLDYg
KzE3Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKHdlYkFzc2VtYmx5Q29tcGlsZVN0
cmVhbWluZ0ludGVybmFsKSBcCiAgICAgbWFjcm8od2ViQXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVh
bWluZ0ludGVybmFsKSBcCiAgICAgbWFjcm8oaW5zdGFuY2VGaWVsZEluaXRpYWxpemVyKSBcCisg
ICAgbWFjcm8ocHJpdmF0ZUJyYW5kKSBcCiAgICAgbWFjcm8oaGFzT3duUHJvcGVydHlGdW5jdGlv
bikgXAogICAgIG1hY3JvKGNyZWF0ZVByaXZhdGVTeW1ib2wpCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAppbmRleCA2MjVlODU3MmJjODVlOWMzOGJm
MWI1YWFjZTk4Y2ZlYThkNjU2ZTQ5Li4zZWJhMzE4NzI4YmIzNGZkZDE5ZTAwYzhiM2Y2M2MzZWQx
ZDg4YTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNz
Q2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2Uu
Y3BwCkBAIC0xMzMsNiArMTMzLDE4IEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nl
c3NDYXNlOjpjcmVhdGVEZWxldGUoCiAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3ND
YXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIERlbGV0ZSwgaWRlbnRpZmllciwgb2Zmc2V0
LCBuZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7CiB9CiAKK3N0ZDo6dW5pcXVlX3B0cjxBY2Nlc3ND
YXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVCcmFuZChWTSYgdm0sIEpTQ2VsbCog
b3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCit7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNz
Q2FzZSh2bSwgb3duZXIsIENoZWNrUHJpdmF0ZUJyYW5kLCBpZGVudGlmaWVyLCBpbnZhbGlkT2Zm
c2V0LCBzdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxBY2Nlc3ND
YXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVTZXRQcml2YXRlQnJhbmQoCisgICAgVk0mIHZtLCBKU0Nl
bGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cnVjdHVyZSogb2xk
U3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSkKK3sKKyAgICBSRUxFQVNFX0FTU0VS
VChvbGRTdHJ1Y3R1cmUgPT0gbmV3U3RydWN0dXJlLT5wcmV2aW91c0lEKCkpOworICAgIHJldHVy
biBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBT
ZXRQcml2YXRlQnJhbmQsIGlkZW50aWZpZXIsIGludmFsaWRPZmZzZXQsIG5ld1N0cnVjdHVyZSwg
eyB9LCB7IH0pKTsKK30KKwogQWNjZXNzQ2FzZTo6fkFjY2Vzc0Nhc2UoKQogewogfQpAQCAtMjg4
LDYgKzMwMCw4IEBAIGJvb2wgQWNjZXNzQ2FzZTo6cmVxdWlyZXNJZGVudGlmaWVyTmFtZU1hdGNo
KCkgY29uc3QKICAgICBjYXNlIERpcmVjdEFyZ3VtZW50c0xlbmd0aDoKICAgICBjYXNlIFNjb3Bl
ZEFyZ3VtZW50c0xlbmd0aDoKICAgICBjYXNlIE1vZHVsZU5hbWVzcGFjZUxvYWQ6CisgICAgY2Fz
ZSBDaGVja1ByaXZhdGVCcmFuZDoKKyAgICBjYXNlIFNldFByaXZhdGVCcmFuZDoKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgY2FzZSBJbnN0YW5jZU9mSGl0OgogICAgIGNhc2UgSW5zdGFuY2VP
Zk1pc3M6CkBAIC0zNDEsNiArMzU1LDggQEAgYm9vbCBBY2Nlc3NDYXNlOjpyZXF1aXJlc0ludDMy
UHJvcGVydHlDaGVjaygpIGNvbnN0CiAgICAgY2FzZSBJbnN0YW5jZU9mSGl0OgogICAgIGNhc2Ug
SW5zdGFuY2VPZk1pc3M6CiAgICAgY2FzZSBJbnN0YW5jZU9mR2VuZXJpYzoKKyAgICBjYXNlIENo
ZWNrUHJpdmF0ZUJyYW5kOgorICAgIGNhc2UgU2V0UHJpdmF0ZUJyYW5kOgogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgY2FzZSBJbmRleGVkSW50MzJMb2FkOgogICAgIGNhc2UgSW5kZXhlZERv
dWJsZUxvYWQ6CkBAIC0zODMsNiArMzk5LDggQEAgYm9vbCBBY2Nlc3NDYXNlOjpuZWVkc1NjcmF0
Y2hGUFIoKSBjb25zdAogICAgIGNhc2UgSW50cmluc2ljR2V0dGVyOgogICAgIGNhc2UgSW5IaXQ6
CiAgICAgY2FzZSBJbk1pc3M6CisgICAgY2FzZSBDaGVja1ByaXZhdGVCcmFuZDoKKyAgICBjYXNl
IFNldFByaXZhdGVCcmFuZDoKICAgICBjYXNlIEFycmF5TGVuZ3RoOgogICAgIGNhc2UgU3RyaW5n
TGVuZ3RoOgogICAgIGNhc2UgRGlyZWN0QXJndW1lbnRzTGVuZ3RoOgpAQCAtNDcwLDYgKzQ4OCw4
IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Zm9yRWFjaERlcGVuZGVudENlbGwoVk0mIHZtLCBjb25zdCBG
dW5jdG9yJiBmdW5jdG9yKSBjb25zdAogICAgIGNhc2UgR2V0R2V0dGVyOgogICAgIGNhc2UgSW5I
aXQ6CiAgICAgY2FzZSBJbk1pc3M6CisgICAgY2FzZSBDaGVja1ByaXZhdGVCcmFuZDoKKyAgICBj
YXNlIFNldFByaXZhdGVCcmFuZDoKICAgICBjYXNlIEFycmF5TGVuZ3RoOgogICAgIGNhc2UgU3Ry
aW5nTGVuZ3RoOgogICAgIGNhc2UgRGlyZWN0QXJndW1lbnRzTGVuZ3RoOgpAQCAtNTE5LDYgKzUz
OSw4IEBAIGJvb2wgQWNjZXNzQ2FzZTo6ZG9lc0NhbGxzKFZNJiB2bSwgVmVjdG9yPEpTQ2VsbCo+
KiBjZWxsc1RvTWFya0lmRG9lc0NhbGxzKSBjb25zCiAgICAgY2FzZSBJbnRyaW5zaWNHZXR0ZXI6
CiAgICAgY2FzZSBJbkhpdDoKICAgICBjYXNlIEluTWlzczoKKyAgICBjYXNlIENoZWNrUHJpdmF0
ZUJyYW5kOgorICAgIGNhc2UgU2V0UHJpdmF0ZUJyYW5kOgogICAgIGNhc2UgQXJyYXlMZW5ndGg6
CiAgICAgY2FzZSBTdHJpbmdMZW5ndGg6CiAgICAgY2FzZSBEaXJlY3RBcmd1bWVudHNMZW5ndGg6
CkBAIC02NzAsNiArNjkyLDggQEAgYm9vbCBBY2Nlc3NDYXNlOjpjYW5SZXBsYWNlKGNvbnN0IEFj
Y2Vzc0Nhc2UmIG90aGVyKSBjb25zdAogICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JTZXR0ZXI6CiAg
ICAgY2FzZSBJbkhpdDoKICAgICBjYXNlIEluTWlzczoKKyAgICBjYXNlIENoZWNrUHJpdmF0ZUJy
YW5kOgorICAgIGNhc2UgU2V0UHJpdmF0ZUJyYW5kOgogICAgICAgICBpZiAob3RoZXIudHlwZSgp
ICE9IHR5cGUoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNzAxLDcgKzcyNSw3
IEBAIHZvaWQgQWNjZXNzQ2FzZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgICAg
ICBvdXQucHJpbnQoY29tbWEsICJwcm90b3R5cGUgYWNjZXNzIGNoYWluID0gIik7CiAgICAgICAg
IG1fcG9seVByb3RvQWNjZXNzQ2hhaW4tPmR1bXAoc3RydWN0dXJlKCksIG91dCk7CiAgICAgfSBl
bHNlIHsKLSAgICAgICAgaWYgKG1fdHlwZSA9PSBUcmFuc2l0aW9uIHx8IG1fdHlwZSA9PSBEZWxl
dGUpCisgICAgICAgIGlmIChtX3R5cGUgPT0gVHJhbnNpdGlvbiB8fCBtX3R5cGUgPT0gRGVsZXRl
IHx8IG1fdHlwZSA9PSBTZXRQcml2YXRlQnJhbmQpCiAgICAgICAgICAgICBvdXQucHJpbnQoY29t
bWEsICJzdHJ1Y3R1cmUgPSAiLCBwb2ludGVyRHVtcChzdHJ1Y3R1cmUoKSksICIgLT4gIiwgcG9p
bnRlckR1bXAobmV3U3RydWN0dXJlKCkpKTsKICAgICAgICAgZWxzZSBpZiAobV9zdHJ1Y3R1cmUp
CiAgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsICJzdHJ1Y3R1cmUgPSAiLCBwb2ludGVyRHVt
cChtX3N0cnVjdHVyZS5nZXQoKSkpOwpAQCAtMTMzMiw2ICsxMzU2LDEyIEBAIHZvaWQgQWNjZXNz
Q2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAgICAgICAgICAgICBzdGF0ZS5mYWlsQW5kSWdub3Jl
LmFwcGVuZChmYWlsQW5kSWdub3JlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIGNh
c2UgQ2hlY2tQcml2YXRlQnJhbmQ6IHsKKyAgICAgICAgZW1pdERlZmF1bHRHdWFyZCgpOworICAg
ICAgICBzdGF0ZS5zdWNjZWVkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgICAgIAog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGVtaXREZWZhdWx0R3VhcmQoKTsKQEAgLTIwMzQsNiArMjA2
NCwxOSBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3Rh
dGUmIHN0YXRlKQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgY2FzZSBTZXRQcml2YXRl
QnJhbmQ6IHsKKyAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50cmFuc2l0aW9uV2F0Y2hwb2lu
dFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKKyAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZSgp
LT50cmFuc2l0aW9uS2luZCgpID09IFRyYW5zaXRpb25LaW5kOjpTZXRCcmFuZCk7CisKKyAgICAg
ICAgdWludDMyX3Qgc3RydWN0dXJlQml0cyA9IGJpdHdpc2VfY2FzdDx1aW50MzJfdD4obmV3U3Ry
dWN0dXJlKCktPmlkKCkpOworICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKHN0cnVjdHVyZUJpdHMpLAorICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOwor
CisgICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAg
IGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOiB7CiAgICAgICAgIGppdC5tb3ZlKE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tMzIoZmFsc2UpLCB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpKTsKICAg
ICAgICAgc3RhdGUuc3VjY2VlZCgpOwpAQCAtMjEwNyw2ICsyMTUwLDcgQEAgdm9pZCBBY2Nlc3ND
YXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICBjYXNl
IEluZGV4ZWRUeXBlZEFycmF5RmxvYXQzMkxvYWQ6CiAgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJh
eUZsb2F0NjRMb2FkOgogICAgIGNhc2UgSW5kZXhlZFN0cmluZ0xvYWQ6CisgICAgY2FzZSBDaGVj
a1ByaXZhdGVCcmFuZDoKICAgICAgICAgLy8gVGhlc2UgbmVlZCB0byBiZSBoYW5kbGVkIGJ5IGdl
bmVyYXRlV2l0aEd1YXJkKCksIHNpbmNlIHRoZSBndWFyZCBpcyBwYXJ0IG9mIHRoZQogICAgICAg
ICAvLyBhbGdvcml0aG0uIFdlIGNhbiBiZSBzdXJlIHRoYXQgbm9ib2R5IHdpbGwgY2FsbCBnZW5l
cmF0ZSgpIGRpcmVjdGx5IGZvciB0aGVzZSBzaW5jZSB0aGV5CiAgICAgICAgIC8vIGFyZSBub3Qg
Z3VhcmRlZCBieSBzdHJ1Y3R1cmUgY2hlY2tzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9BY2Nlc3NDYXNlLmgKaW5kZXggMTA4ZmVmM2IzMzAxMmNmNGU3ZGIyN2UyMGE2MjYwMjA3
ODVkMjE1OS4uMzZlOTQ0N2U5ZTM2MmNkZDEwZTljNDJmNzUwNmYyMTJjYTc4ZjY3MSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCkBAIC0xMDgsNiArMTA4
LDggQEAgcHVibGljOgogICAgICAgICBJbnN0YW5jZU9mSGl0LAogICAgICAgICBJbnN0YW5jZU9m
TWlzcywKICAgICAgICAgSW5zdGFuY2VPZkdlbmVyaWMsCisgICAgICAgIENoZWNrUHJpdmF0ZUJy
YW5kLAorICAgICAgICBTZXRQcml2YXRlQnJhbmQsCiAgICAgICAgIEluZGV4ZWRJbnQzMkxvYWQs
CiAgICAgICAgIEluZGV4ZWREb3VibGVMb2FkLAogICAgICAgICBJbmRleGVkQ29udGlndW91c0xv
YWQsCkBAIC0xNTMsNiArMTU1LDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGVEZWxldGUoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFi
bGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCiAg
ICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKTsKKworICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlQ2hlY2tQcml2YXRlQnJhbmQoVk0mLCBKU0NlbGwqIG93
bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZVNldFByaXZhdGVCcmFuZChWTSYsIEpTQ2VsbCog
b3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1
Y3R1cmUqIG5ld1N0cnVjdHVyZSk7CiAgICAgCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiBmcm9tU3RydWN0dXJlU3R1YkluZm8oVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogCkBAIC0xNjIsNyArMTY3LDcg
QEAgcHVibGljOgogCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUoKSBjb25zdAogICAgIHsKLSAg
ICAgICAgaWYgKG1fdHlwZSA9PSBUcmFuc2l0aW9uIHx8IG1fdHlwZSA9PSBEZWxldGUpCisgICAg
ICAgIGlmIChtX3R5cGUgPT0gVHJhbnNpdGlvbiB8fCBtX3R5cGUgPT0gRGVsZXRlIHx8IG1fdHlw
ZSA9PSBTZXRQcml2YXRlQnJhbmQpCiAgICAgICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUtPnBy
ZXZpb3VzSUQoKTsKICAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlLmdldCgpOwogICAgIH0KQEAg
LTE3MCw3ICsxNzUsNyBAQCBwdWJsaWM6CiAKICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSgp
IGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IFRyYW5zaXRpb24gfHwgbV90
eXBlID09IERlbGV0ZSk7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHJhbnNpdGlvbiB8fCBt
X3R5cGUgPT0gRGVsZXRlIHx8IG1fdHlwZSA9PSBTZXRQcml2YXRlQnJhbmQpOwogICAgICAgICBy
ZXR1cm4gbV9zdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCAxNTYxOWQzYTQ4YTE0MmI3MzEwYmJm
ZjMyZGE3ZjM3ZDM2MDRhMTQxLi42NTRmNTYzZjhiNGY0NWFmMWE1YWVjMWNmNThjNjhhOWMxMWY5
NDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
cmIKQEAgLTU4OCw2ICs1ODgsMjggQEAgb3AgOnB1dF9wcml2YXRlX25hbWUsCiAgICAgICAgIG5l
d1N0cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJRCwKICAgICB9CiAKK29wIDpzZXRfcHJpdmF0ZV9icmFu
ZCwKKyAgICBhcmdzOiB7CisgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAg
YnJhbmQ6IFZpcnR1YWxSZWdpc3RlciwKKyAgICB9LAorICAgIG1ldGFkYXRhOiB7CisgICAgICAg
IG9sZFN0cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJRCwKKyAgICAgICAgbmV3U3RydWN0dXJlSUQ6IFN0
cnVjdHVyZUlELAorICAgICAgICBicmFuZDogV3JpdGVCYXJyaWVyW0pTQ2VsbF0sCisgICAgfQor
CitvcCA6Y2hlY2tfcHJpdmF0ZV9icmFuZCwKKyAgICBhcmdzOiB7CisgICAgICAgIGJhc2U6IFZp
cnR1YWxSZWdpc3RlciwKKyAgICAgICAgYnJhbmQ6IFZpcnR1YWxSZWdpc3RlciwKKyAgICB9LAor
ICAgIG1ldGFkYXRhOiB7CisgICAgICAgIHN0cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJRCwKKyAgICAg
ICAgYnJhbmQ6IFdyaXRlQmFycmllcltKU0NlbGxdLAorICAgIH0KKyAgICAKKwogb3AgOnB1dF9i
eV92YWwsCiAgICAgYXJnczogewogICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAppbmRl
eCBiMjY5OGQ4NzhlNGE5MTVlMzg0NDQxZGViNDExNGQ0OWQ0NjBhMjQ0Li40MjVhZjI1YjgwNDky
OWY0NjFmMGJiMTM4YzY1YThjZjU0YmI1MjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKQEAgLTIyOSw2ICsyMjksOCBAQCB2b2lk
IGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVn
aXN0ZXIsIGNvbnN0IEluc3RydQogICAgIFVTRVMoT3BHZXRCeVZhbCwgYmFzZSwgcHJvcGVydHkp
CiAgICAgVVNFUyhPcEdldFByaXZhdGVOYW1lLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9w
UHV0UHJpdmF0ZU5hbWUsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSkKKyAgICBVU0VTKE9wU2V0UHJp
dmF0ZUJyYW5kLCBiYXNlLCBicmFuZCkKKyAgICBVU0VTKE9wQ2hlY2tQcml2YXRlQnJhbmQsIGJh
c2UsIGJyYW5kKQogICAgIFVTRVMoT3BJbkJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VT
KE9wT3ZlcnJpZGVzSGFzSW5zdGFuY2UsIGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZVZhbHVlKQog
ICAgIFVTRVMoT3BJbnN0YW5jZW9mLCB2YWx1ZSwgcHJvdG90eXBlKQpAQCAtMzk3LDYgKzM5OSw4
IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJz
LCBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1CiAgICAgY2FzZSBvcF9wdXRfYnlfdmFsOgogICAg
IGNhc2Ugb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6CiAgICAgY2FzZSBvcF9wdXRfcHJpdmF0ZV9uYW1l
OgorICAgIGNhc2Ugb3Bfc2V0X3ByaXZhdGVfYnJhbmQ6CisgICAgY2FzZSBvcF9jaGVja19wcml2
YXRlX2JyYW5kOgogICAgIGNhc2Ugb3BfcHV0X2ludGVybmFsX2ZpZWxkOgogICAgIGNhc2Ugb3Bf
ZGVmaW5lX2RhdGFfcHJvcGVydHk6CiAgICAgY2FzZSBvcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVy
dHk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2
YXRlQnJhbmRTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NoZWNr
UHJpdmF0ZUJyYW5kU3RhdHVzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMjFiMDEyMDQxMmM2YTA3ZDI1MDhk
YjQ2OTlmYjY0ODQ5ZThlMDI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmNwcApAQCAtMCwwICsxLDI3MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuQS4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmgiCisKKyNpbmNs
dWRlICJDYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oIgorI2luY2x1ZGUgIkNvZGVCbG9jay5o
IgorI2luY2x1ZGUgIklDU3RhdHVzVXRpbHMuaCIKKyNpbmNsdWRlICJQb2x5bW9ycGhpY0FjY2Vz
cy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCisjaW5jbHVkZSA8d3RmL0xpc3RE
dW1wLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitib29sIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVz
OjphcHBlbmRWYXJpYW50KGNvbnN0IENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudCYgdmFyaWFudCkK
K3sKKyAgICByZXR1cm4gYXBwZW5kSUNTdGF0dXNWYXJpYW50KG1fdmFyaWFudHMsIHZhcmlhbnQp
OworfQorCitDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyBDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6
Y29tcHV0ZUZvckJhc2VsaW5lKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgSUNTdGF0dXNNYXAm
IG1hcCwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBFeGl0RmxhZyBkaWRFeGl0KQorewor
ICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoYmFzZWxpbmVCbG9jay0+bV9sb2NrKTsKKwor
ICAgIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzIHJlc3VsdDsKKworI2lmIEVOQUJMRShERkdfSklU
KQorICAgIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNr
KAorICAgICAgICBsb2NrZXIsIGJhc2VsaW5lQmxvY2ssIG1hcC5nZXQoQ29kZU9yaWdpbihieXRl
Y29kZUluZGV4KSkuc3R1YkluZm8pOworCisgICAgaWYgKGRpZEV4aXQpCisgICAgICAgIHJldHVy
biByZXN1bHQuc2xvd1ZlcnNpb24oKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG1hcCk7Cisg
ICAgVU5VU0VEX1BBUkFNKGRpZEV4aXQpOworICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4
KTsKKyNlbmRpZgorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworI2lmIEVOQUJMRShKSVQpCitD
aGVja1ByaXZhdGVCcmFuZFN0YXR1czo6Q2hlY2tQcml2YXRlQnJhbmRTdGF0dXMoU3R1YkluZm9T
dW1tYXJ5IHN1bW1hcnksIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKK3sKKyAgICBzd2l0
Y2ggKHN1bW1hcnkpIHsKKyAgICBjYXNlIFN0dWJJbmZvU3VtbWFyeTo6Tm9JbmZvcm1hdGlvbjoK
KyAgICAgICAgbV9zdGF0ZSA9IE5vSW5mb3JtYXRpb247CisgICAgICAgIHJldHVybjsKKyAgICBj
YXNlIFN0dWJJbmZvU3VtbWFyeTo6U2ltcGxlOgorICAgIGNhc2UgU3R1YkluZm9TdW1tYXJ5OjpN
YWtlc0NhbGxzOgorICAgIGNhc2UgU3R1YkluZm9TdW1tYXJ5OjpUYWtlc1Nsb3dQYXRoQW5kTWFr
ZXNDYWxsczoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuOworICAgIGNhc2UgU3R1YkluZm9TdW1tYXJ5OjpUYWtlc1Nsb3dQYXRoOgorICAgICAg
ICBtX3N0YXRlID0gc3R1YkluZm8udG9va1Nsb3dQYXRoID8gT2JzZXJ2ZWRUYWtlc1Nsb3dQYXRo
IDogTGlrZWx5VGFrZXNTbG93UGF0aDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyBD
aGVja1ByaXZhdGVCcmFuZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRl
RmVlZGJhY2soCisgICAgY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKiBibG9j
aywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvKQoreworICAgIFN0dWJJbmZvU3VtbWFyeSBz
dW1tYXJ5ID0gU3RydWN0dXJlU3R1YkluZm86OnN1bW1hcnkoYmxvY2stPnZtKCksIHN0dWJJbmZv
KTsKKyAgICBpZiAoIWlzSW5saW5lYWJsZShzdW1tYXJ5KSkKKyAgICAgICAgcmV0dXJuIENoZWNr
UHJpdmF0ZUJyYW5kU3RhdHVzKHN1bW1hcnksICpzdHViSW5mbyk7CisKKyAgICBDaGVja1ByaXZh
dGVCcmFuZFN0YXR1cyByZXN1bHQ7CisgICAgcmVzdWx0Lm1fc3RhdGUgPSBTaW1wbGU7CisgICAg
c3dpdGNoIChzdHViSW5mby0+Y2FjaGVUeXBlKCkpIHsKKyAgICBjYXNlIENhY2hlVHlwZTo6VW5z
ZXQ6CisgICAgICAgIHJldHVybiBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyhOb0luZm9ybWF0aW9u
KTsKKworICAgIGNhc2UgQ2FjaGVUeXBlOjpTdHViOiB7CisgICAgICAgIFBvbHltb3JwaGljQWNj
ZXNzKiBsaXN0ID0gc3R1YkluZm8tPnUuc3R1YjsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGxp
c3RJbmRleCA9IDA7IGxpc3RJbmRleCA8IGxpc3QtPnNpemUoKTsgKytsaXN0SW5kZXgpIHsKKyAg
ICAgICAgICAgIGNvbnN0IEFjY2Vzc0Nhc2UmIGFjY2VzcyA9IGxpc3QtPmF0KGxpc3RJbmRleCk7
CisKKyAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYWNjZXNzLnN0cnVjdHVyZSgp
OworICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSk7CisgICAgICAgICAgICBBU1NFUlQoYWNj
ZXNzLnR5cGUoKSA9PSBBY2Nlc3NDYXNlOjpDaGVja1ByaXZhdGVCcmFuZCk7CisKKyAgICAgICAg
ICAgIENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudCB2YXJpYW50KGFjY2Vzcy5pZGVudGlmaWVyKCks
IFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpKTsKKyAgICAgICAgICAgIGlmICghcmVzdWx0LmFwcGVu
ZFZhcmlhbnQodmFyaWFudCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIENoZWNrUHJpdmF0ZUJy
YW5kU3RhdHVzKEpTQzo6c2xvd1ZlcnNpb24oc3VtbWFyeSksICpzdHViSW5mbyk7CisgICAgICAg
IH0KKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGRlZmF1bHQ6CisgICAg
ICAgIHJldHVybiBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyhKU0M6OnNsb3dWZXJzaW9uKHN1bW1h
cnkpLCAqc3R1YkluZm8pOworICAgIH0KKworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzKCk7Cit9CisKK0NoZWNrUHJp
dmF0ZUJyYW5kU3RhdHVzIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOjpjb21wdXRlRm9yKAorICAg
IENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgSUNTdGF0dXNNYXAmIGJhc2VsaW5lTWFwLAorICAg
IElDU3RhdHVzQ29udGV4dFN0YWNrJiBjb250ZXh0U3RhY2ssIENvZGVPcmlnaW4gY29kZU9yaWdp
bikKK3sKKyAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBjb2RlT3JpZ2luLmJ5dGVj
b2RlSW5kZXgoKTsKKyAgICBFeGl0RmxhZyBkaWRFeGl0ID0gaGFzQmFkQ2FjaGVFeGl0U2l0ZShi
YXNlbGluZUJsb2NrLCBieXRlY29kZUluZGV4KTsKKworICAgIGZvciAoSUNTdGF0dXNDb250ZXh0
KiBjb250ZXh0IDogY29udGV4dFN0YWNrKSB7CisgICAgICAgIElDU3RhdHVzIHN0YXR1cyA9IGNv
bnRleHQtPmdldChjb2RlT3JpZ2luKTsKKworICAgICAgICBhdXRvIGJsZXNzID0gWyZdIChjb25z
dCBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyYgcmVzdWx0KSAtPiBDaGVja1ByaXZhdGVCcmFuZFN0
YXR1cyB7CisgICAgICAgICAgICBpZiAoIWNvbnRleHQtPmlzSW5saW5lZChjb2RlT3JpZ2luKSkg
eworICAgICAgICAgICAgICAgIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzIGJhc2VsaW5lUmVzdWx0
ID0gY29tcHV0ZUZvckJhc2VsaW5lKAorICAgICAgICAgICAgICAgICAgICBiYXNlbGluZUJsb2Nr
LCBiYXNlbGluZU1hcCwgYnl0ZWNvZGVJbmRleCwgZGlkRXhpdCk7CisgICAgICAgICAgICAgICAg
YmFzZWxpbmVSZXN1bHQubWVyZ2UocmVzdWx0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYmFz
ZWxpbmVSZXN1bHQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZGlkRXhpdC5pc1Nl
dChFeGl0RnJvbUlubGluZWQpKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQuc2xvd1Zl
cnNpb24oKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH07CisKKyAgICAg
ICAgaWYgKHN0YXR1cy5zdHViSW5mbykgeworICAgICAgICAgICAgQ2hlY2tQcml2YXRlQnJhbmRT
dGF0dXMgcmVzdWx0OworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIENvbmN1cnJlbnRK
U0xvY2tlciBsb2NrZXIoY29udGV4dC0+b3B0aW1pemVkQ29kZUJsb2NrLT5tX2xvY2spOworICAg
ICAgICAgICAgICAgIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZl
ZWRiYWNrKAorICAgICAgICAgICAgICAgICAgICBsb2NrZXIsIGNvbnRleHQtPm9wdGltaXplZENv
ZGVCbG9jaywgc3RhdHVzLnN0dWJJbmZvKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
IChyZXN1bHQuaXNTZXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gYmxlc3MocmVzdWx0KTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBjb21wdXRlRm9yQmFzZWxpbmUoYmFzZWxp
bmVCbG9jaywgYmFzZWxpbmVNYXAsIGJ5dGVjb2RlSW5kZXgsIGRpZEV4aXQpOworfQorCisjZW5k
aWYgLy8gRU5BQkxFKEpJVCkKKworQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMgQ2hlY2tQcml2YXRl
QnJhbmRTdGF0dXM6OnNsb3dWZXJzaW9uKCkgY29uc3QKK3sKKyAgICBpZiAob2JzZXJ2ZWRTbG93
UGF0aCgpKQorICAgICAgICByZXR1cm4gQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMoT2JzZXJ2ZWRU
YWtlc1Nsb3dQYXRoKTsKKyAgICByZXR1cm4gQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMoTGlrZWx5
VGFrZXNTbG93UGF0aCk7Cit9CisKK3ZvaWQgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6Om1lcmdl
KGNvbnN0IENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzJiBvdGhlcikKK3sKKyAgICBpZiAob3RoZXIu
bV9zdGF0ZSA9PSBOb0luZm9ybWF0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIG1l
cmdlU2xvdyA9IFsmXSAoKSB7CisgICAgICAgIGlmIChvYnNlcnZlZFNsb3dQYXRoKCkgfHwgb3Ro
ZXIub2JzZXJ2ZWRTbG93UGF0aCgpKQorICAgICAgICAgICAgKnRoaXMgPSBDaGVja1ByaXZhdGVC
cmFuZFN0YXR1cyhPYnNlcnZlZFRha2VzU2xvd1BhdGgpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICAqdGhpcyA9IENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzKExpa2VseVRha2VzU2xvd1BhdGgp
OworICAgIH07CisKKyAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKKyAgICBjYXNlIE5vSW5mb3JtYXRp
b246CisgICAgICAgICp0aGlzID0gb3RoZXI7CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2Ug
U2ltcGxlOgorICAgICAgICBpZiAobV9zdGF0ZSAhPSBvdGhlci5tX3N0YXRlKQorICAgICAgICAg
ICAgcmV0dXJuIG1lcmdlU2xvdygpOworCisgICAgICAgIGZvciAoYXV0byYgb3RoZXJWYXJpYW50
IDogb3RoZXIubV92YXJpYW50cykgeworICAgICAgICAgICAgaWYgKCFhcHBlbmRWYXJpYW50KG90
aGVyVmFyaWFudCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1lcmdlU2xvdygpOworICAgICAg
ICB9CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgTGlrZWx5VGFrZXNTbG93UGF0aDoKKyAg
ICBjYXNlIE9ic2VydmVkVGFrZXNTbG93UGF0aDoKKyAgICAgICAgcmV0dXJuIG1lcmdlU2xvdygp
OworICAgIH0KKworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQg
Q2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6OmZpbHRlcihjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVj
dHVyZVNldCkKK3sKKyAgICBpZiAobV9zdGF0ZSAhPSBTaW1wbGUpCisgICAgICAgIHJldHVybjsK
KyAgICBmaWx0ZXJJQ1N0YXR1c1ZhcmlhbnRzKG1fdmFyaWFudHMsIHN0cnVjdHVyZVNldCk7Cisg
ICAgaWYgKG1fdmFyaWFudHMuaXNFbXB0eSgpKQorICAgICAgICBtX3N0YXRlID0gTm9JbmZvcm1h
dGlvbjsKK30KKworQ2FjaGVhYmxlSWRlbnRpZmllciBDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6
c2luZ2xlSWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgaWYgKG1fdmFyaWFudHMuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIENhY2hlYWJsZUlkZW50aWZpZXIgcmVz
dWx0ID0gbV92YXJpYW50cy5maXJzdCgpLmlkZW50aWZpZXIoKTsKKyAgICBpZiAoIXJlc3VsdCkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBtX3Zh
cmlhbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRp
ZmllciA9IG1fdmFyaWFudHNbaV0uaWRlbnRpZmllcigpOworICAgICAgICBpZiAoIWlkZW50aWZp
ZXIpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaWYgKGlkZW50aWZpZXIg
IT0gcmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK3ZvaWQgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6OnZpc2l0QWdncmVn
YXRlKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGZvciAoQ2hlY2tQcml2YXRlQnJhbmRW
YXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykKKyAgICAgICAgdmFyaWFudC52aXNpdEFnZ3Jl
Z2F0ZSh2aXNpdG9yKTsKK30KKwordm9pZCBDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6bWFya0lm
Q2hlYXAoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgZm9yIChDaGVja1ByaXZhdGVCcmFu
ZFZhcmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKQorICAgICAgICB2YXJpYW50Lm1hcmtJZkNo
ZWFwKHZpc2l0b3IpOworfQorCitib29sIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOjpmaW5hbGl6
ZShWTSYgdm0pCit7CisgICAgZm9yIChhdXRvJiB2YXJpYW50IDogbV92YXJpYW50cykgeworICAg
ICAgICBpZiAoIXZhcmlhbnQuZmluYWxpemUodm0pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDaGVja1ByaXZhdGVCcmFuZFN0
YXR1czo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91dC5wcmludCgiKCIp
OworICAgIHN3aXRjaCAobV9zdGF0ZSkgeworICAgIGNhc2UgTm9JbmZvcm1hdGlvbjoKKyAgICAg
ICAgb3V0LnByaW50KCJOb0luZm9ybWF0aW9uIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
U2ltcGxlOgorICAgICAgICBvdXQucHJpbnQoIlNpbXBsZSIpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIExpa2VseVRha2VzU2xvd1BhdGg6CisgICAgICAgIG91dC5wcmludCgiTGlrZWx5VGFr
ZXNTbG93UGF0aCIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE9ic2VydmVkVGFrZXNTbG93
UGF0aDoKKyAgICAgICAgb3V0LnByaW50KCJPYnNlcnZlZFRha2VzU2xvd1BhdGgiKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIG91dC5wcmludCgiLCAiLCBsaXN0RHVtcChtX3ZhcmlhbnRz
KSwgIikiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQ5MGI4ZjQzOTQ0NWZkZTkxNTQ3OTNjYTU3MzlkMzhmMWIyM2I4ODYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRT
dGF0dXMuaApAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlh
IFMuQS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ2FjaGVhYmxlSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgIkNoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudC5oIgorI2luY2x1
ZGUgIkNvZGVPcmlnaW4uaCIKKyNpbmNsdWRlICJDb25jdXJyZW50SlNMb2NrLmgiCisjaW5jbHVk
ZSAiRXhpdEZsYWcuaCIKKyNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgorI2luY2x1ZGUgIlN0dWJJ
bmZvU3VtbWFyeS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQWNjZXNzQ2FzZTsKK2Ns
YXNzIENvZGVCbG9jazsKK2NsYXNzIFN0cnVjdHVyZVN0dWJJbmZvOworCitjbGFzcyBDaGVja1By
aXZhdGVCcmFuZFN0YXR1cyBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Citw
dWJsaWM6CisgICAgZW51bSBTdGF0ZSA6IHVpbnQ4X3QgeworICAgICAgICAvLyBJdCdzIHVuY2Fj
aGVkIHNvIHdlIGhhdmUgbm8gaW5mb3JtYXRpb24uCisgICAgICAgIE5vSW5mb3JtYXRpb24sCisg
ICAgICAgIC8vIEl0J3MgY2FjaGVkIGZvciBhIHNpbXBsZSBhY2Nlc3MuCisgICAgICAgIFNpbXBs
ZSwKKyAgICAgICAgLy8gSXQgd2lsbCBsaWtlbHkgdGFrZSB0aGUgc2xvdyBwYXRoLgorICAgICAg
ICBMaWtlbHlUYWtlc1Nsb3dQYXRoLAorICAgICAgICAvLyBJdCBoYXMgYmVlbiBzZWVuIHRvIHRh
a2UgdGhlIHNsb3cgcGF0aC4KKyAgICAgICAgT2JzZXJ2ZWRUYWtlc1Nsb3dQYXRoLAorICAgIH07
CisKKyAgICBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cygpCisgICAgICAgIDogbV9zdGF0ZShOb0lu
Zm9ybWF0aW9uKQorICAgIHsKKyAgICB9CisKKyAgICBleHBsaWNpdCBDaGVja1ByaXZhdGVCcmFu
ZFN0YXR1cyhTdGF0ZSBzdGF0ZSkKKyAgICAgICAgOiBtX3N0YXRlKHN0YXRlKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKHN0YXRlICE9IFNpbXBsZSk7CisgICAgfQorCisgICAgc3RhdGljIENoZWNr
UHJpdmF0ZUJyYW5kU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJ
Q1N0YXR1c01hcCYgYmFzZWxpbmVNYXAsIElDU3RhdHVzQ29udGV4dFN0YWNrJiBkZmdDb250ZXh0
U3RhY2ssIENvZGVPcmlnaW4pOworCisgICAgU3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBt
X3N0YXRlOyB9CisKKyAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSAhPSBO
b0luZm9ybWF0aW9uOyB9CisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhaXNT
ZXQoKTsgfQorICAgIGJvb2wgb2JzZXJ2ZWRTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGUgPT0gT2JzZXJ2ZWRUYWtlc1Nsb3dQYXRoOyB9CisgICAgYm9vbCBpc1NpbXBsZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RhdGUgPT0gU2ltcGxlOyB9CisgICAgY29uc3QgVmVjdG9yPENoZWNrUHJp
dmF0ZUJyYW5kVmFyaWFudCwgMT4mIHZhcmlhbnRzKCkgeyByZXR1cm4gbV92YXJpYW50czsgfQor
ICAgIENhY2hlYWJsZUlkZW50aWZpZXIgc2luZ2xlSWRlbnRpZmllcigpIGNvbnN0OworCisgICAg
Q2hlY2tQcml2YXRlQnJhbmRTdGF0dXMgc2xvd1ZlcnNpb24oKSBjb25zdDsKKworICAgIC8vIEF0
dGVtcHRzIHRvIHJlZHVjZSB0aGUgc2V0IG9mIHZhcmlhbnRzIHRvIGZpdCB0aGUgZ2l2ZW4gc3Ry
dWN0dXJlIHNldC4gVGhpcyBtYXkgYmUgYXBwcm94aW1hdGUuCisgICAgdm9pZCBmaWx0ZXIoY29u
c3QgU3RydWN0dXJlU2V0Jik7CisKKyAgICB2b2lkIHZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9y
Jik7CisgICAgdm9pZCBtYXJrSWZDaGVhcChTbG90VmlzaXRvciYpOworICAgIGJvb2wgZmluYWxp
emUoVk0mKTsKKworICAgIGJvb2wgYXBwZW5kVmFyaWFudChjb25zdCBDaGVja1ByaXZhdGVCcmFu
ZFZhcmlhbnQmKTsKKworICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworCitwcml2
YXRlOgorICAgIGV4cGxpY2l0IENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzKFN0dWJJbmZvU3VtbWFy
eSwgU3RydWN0dXJlU3R1YkluZm8mKTsKKyAgICB2b2lkIG1lcmdlKGNvbnN0IENoZWNrUHJpdmF0
ZUJyYW5kU3RhdHVzJik7CisKKyAgICBzdGF0aWMgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMgY29t
cHV0ZUZvckJhc2VsaW5lKENvZGVCbG9jayosIElDU3RhdHVzTWFwJiwgQnl0ZWNvZGVJbmRleCwg
RXhpdEZsYWcpOworI2lmIEVOQUJMRShKSVQpCisgICAgc3RhdGljIENoZWNrUHJpdmF0ZUJyYW5k
U3RhdHVzIGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKAorICAgICAg
ICBjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIFN0
cnVjdHVyZVN0dWJJbmZvKik7CisjZW5kaWYKKworICAgIFZlY3RvcjxDaGVja1ByaXZhdGVCcmFu
ZFZhcmlhbnQsIDE+IG1fdmFyaWFudHM7CisgICAgU3RhdGUgbV9zdGF0ZTsKK307CisKK30gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOWVjN2FlZjVl
NTE0ZGNiMjMwODJiYjdjMDcwYWJjYTdlN2U1MzZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudC5jcHAKQEAg
LTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuQS4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNoZWNrUHJpdmF0ZUJyYW5kVmFyaWFu
dC5oIgorCisjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK0NoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudDo6Q2hlY2tQcml2YXRlQnJhbmRW
YXJpYW50KENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RydWN0dXJlU2V0
JiBzdHJ1Y3R1cmVTZXQpCisgICAgOiBtX3N0cnVjdHVyZVNldChzdHJ1Y3R1cmVTZXQpCisgICAg
LCBtX2lkZW50aWZpZXIoV1RGTW92ZShpZGVudGlmaWVyKSkKK3sgfQorCitDaGVja1ByaXZhdGVC
cmFuZFZhcmlhbnQ6On5DaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQoKSB7IH0KKworQ2hlY2tQcml2
YXRlQnJhbmRWYXJpYW50OjpDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQoY29uc3QgQ2hlY2tQcml2
YXRlQnJhbmRWYXJpYW50JiBvdGhlcikKK3sKKyAgICAqdGhpcyA9IG90aGVyOworfQorCitib29s
IENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudDo6YXR0ZW1wdFRvTWVyZ2UoY29uc3QgQ2hlY2tQcml2
YXRlQnJhbmRWYXJpYW50JiBvdGhlcikKK3sKKyAgICBpZiAoISFtX2lkZW50aWZpZXIgIT0gISFv
dGhlci5tX2lkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX2lk
ZW50aWZpZXIgJiYgKG1faWRlbnRpZmllciAhPSBvdGhlci5tX2lkZW50aWZpZXIpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBtX3N0cnVjdHVyZVNldC5tZXJnZShvdGhlci5tX3N0cnVj
dHVyZVNldCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDaGVja1ByaXZhdGVCcmFu
ZFZhcmlhbnQ6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIG1fc3Ry
dWN0dXJlU2V0Lm1hcmtJZkNoZWFwKHZpc2l0b3IpOworfQorCitib29sIENoZWNrUHJpdmF0ZUJy
YW5kVmFyaWFudDo6ZmluYWxpemUoVk0mIHZtKQoreworICAgIGlmICghbV9zdHJ1Y3R1cmVTZXQu
aXNTdGlsbEFsaXZlKHZtKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVl
OworfQorCit2b2lkIENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudDo6dmlzaXRBZ2dyZWdhdGUoU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgbV9pZGVudGlmaWVyLnZpc2l0QWdncmVnYXRlKHZp
c2l0b3IpOworfQorCit2b2lkIENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudDo6ZHVtcChQcmludFN0
cmVhbSYgb3V0KSBjb25zdAoreworICAgIGR1bXBJbkNvbnRleHQob3V0LCBudWxscHRyKTsKK30K
Kwordm9pZCBDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQ6OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJl
YW0mIG91dCwgRHVtcENvbnRleHQqIGNvbnRleHQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KCI8
aWQ9JyIsIG1faWRlbnRpZmllciwgIicsICIsIGluQ29udGV4dChzdHJ1Y3R1cmVTZXQoKSwgY29u
dGV4dCksICI+Iik7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmZlNGM0NmZmZWVlNTY3N2QyNDc1OGM2MGZmNjZlZTZiZjMzOTJkNzgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2YXRl
QnJhbmRWYXJpYW50LmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
SWdhbGlhIFMuQS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDYWNoZWFibGVJ
ZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlU2V0LmgiCisjaW5jbHVkZSA8d3RmL0Jv
eC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM7
CisKK2NsYXNzIENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CitwdWJsaWM6CisgICAgQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50KENhY2hlYWJs
ZUlkZW50aWZpZXIsIGNvbnN0IFN0cnVjdHVyZVNldCYgPSBTdHJ1Y3R1cmVTZXQoKSk7CisKKyAg
ICB+Q2hlY2tQcml2YXRlQnJhbmRWYXJpYW50KCk7CisKKyAgICBDaGVja1ByaXZhdGVCcmFuZFZh
cmlhbnQoY29uc3QgQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50Jik7CisKKyAgICBjb25zdCBTdHJ1
Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlU2V0OyB9
CisgICAgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQoKSB7IHJldHVybiBtX3N0cnVjdHVyZVNl
dDsgfQorCisgICAgYm9vbCBhdHRlbXB0VG9NZXJnZShjb25zdCBDaGVja1ByaXZhdGVCcmFuZFZh
cmlhbnQmIG90aGVyKTsKKworICAgIHZvaWQgdmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImKTsK
KyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7CisgICAgYm9vbCBmaW5hbGl6ZShW
TSYpOworCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisgICAgdm9pZCBkdW1w
SW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBjb25zdDsKKworICAgIENhY2hl
YWJsZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsg
fQorCisgICAgYm9vbCBvdmVybGFwcyhjb25zdCBDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQmIG90
aGVyKQorICAgIHsKKyAgICAgICAgaWYgKCEhbV9pZGVudGlmaWVyICE9ICEhb3RoZXIubV9pZGVu
dGlmaWVyKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChtX2lkZW50aWZp
ZXIpIHsKKyAgICAgICAgICAgIGlmIChtX2lkZW50aWZpZXIgIT0gb3RoZXIubV9pZGVudGlmaWVy
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gc3RydWN0dXJlU2V0KCkub3ZlcmxhcHMob3RoZXIuc3RydWN0dXJlU2V0KCkpOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM7CisK
KyAgICBTdHJ1Y3R1cmVTZXQgbV9zdHJ1Y3R1cmVTZXQ7CisgICAgQ2FjaGVhYmxlSWRlbnRpZmll
ciBtX2lkZW50aWZpZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggYWYyYWM0YzkxYmI3MjMyYzRi
ZTM5NDk1OTc3MWYwOWEzMjE4ZGQ0OC4uMDYyZGZhYzJlNDllZjA5ZThjYTliZDhjOTZkNmM1NGI2
NmIwZTI3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKQEAgLTU0NCw2ICs1NDQsOSBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICBM
SU5LKE9wUHV0QnlWYWxEaXJlY3QpCiAgICAgICAgIExJTksoT3BQdXRQcml2YXRlTmFtZSkKIAor
ICAgICAgICBMSU5LKE9wU2V0UHJpdmF0ZUJyYW5kKQorICAgICAgICBMSU5LKE9wQ2hlY2tQcml2
YXRlQnJhbmQpCisKICAgICAgICAgTElOSyhPcE5ld0FycmF5KQogICAgICAgICBMSU5LKE9wTmV3
QXJyYXlXaXRoU2l6ZSkKICAgICAgICAgTElOSyhPcE5ld0FycmF5QnVmZmVyLCBhcnJheUFsbG9j
YXRpb25Qcm9maWxlKQpAQCAtMTMzOCw2ICsxMzQxLDMzIEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5h
bGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkKICAgICAgICAgICAgIG1ldGFkYXRhLm1fcHJvcGVydHku
Y2xlYXIoKTsKICAgICAgICAgfSk7CiAKKyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFNl
dFByaXZhdGVCcmFuZD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeworICAgICAgICAgICAgU3RydWN0
dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEOworICAgICAg
ICAgICAgU3RydWN0dXJlSUQgbmV3U3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX25ld1N0cnVjdHVy
ZUlEOworICAgICAgICAgICAgSlNDZWxsKiBicmFuZCA9IG1ldGFkYXRhLm1fYnJhbmQuZ2V0KCk7
CisgICAgICAgICAgICBpZiAoKCFvbGRTdHJ1Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2VkKHZt
LmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCkpKQorICAgICAgICAg
ICAgICAgICYmICghYnJhbmQgfHwgdm0uaGVhcC5pc01hcmtlZChicmFuZCkpCisgICAgICAgICAg
ICAgICAgJiYgKCFuZXdTdHJ1Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAuc3Ry
dWN0dXJlSURUYWJsZSgpLmdldChuZXdTdHJ1Y3R1cmVJRCkpKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwg
IkNsZWFyaW5nIExMSW50IHNldF9wcml2YXRlX2JyYW5kIHRyYW5zaXRpb24uIik7CisgICAgICAg
ICAgICBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEID0gMDsKKyAgICAgICAgICAgIG1ldGFkYXRh
Lm1fbmV3U3RydWN0dXJlSUQgPSAwOworICAgICAgICAgICAgbWV0YWRhdGEubV9icmFuZC5jbGVh
cigpOworICAgICAgICB9KTsKKworICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wQ2hlY2tQ
cml2YXRlQnJhbmQ+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKKyAgICAgICAgICAgIFN0cnVjdHVy
ZUlEIHN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIEpT
Q2VsbCogYnJhbmQgPSBtZXRhZGF0YS5tX2JyYW5kLmdldCgpOworICAgICAgICAgICAgaWYgKCgh
c3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUo
KS5nZXQoc3RydWN0dXJlSUQpKSkKKyAgICAgICAgICAgICAgICAmJiAoIWJyYW5kIHx8IHZtLmhl
YXAuaXNNYXJrZWQoYnJhbmQpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
ICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNsZWFyaW5nIExMSW50IHNl
dF9wcml2YXRlX2JyYW5kIHRyYW5zaXRpb24uIik7CisgICAgICAgICAgICBtZXRhZGF0YS5tX3N0
cnVjdHVyZUlEID0gMDsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fYnJhbmQuY2xlYXIoKTsKKyAg
ICAgICAgfSk7CisKICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFRvVGhpcz4oWyZdIChh
dXRvJiBtZXRhZGF0YSkgewogICAgICAgICAgICAgaWYgKCFtZXRhZGF0YS5tX2NhY2hlZFN0cnVj
dHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0
KG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQpKSkKICAgICAgICAgICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUlu
Zm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCmlu
ZGV4IDQ5ZWRkNTI4NWQ1YzJjMjhiMWM5YTRiY2VlZjQ1MTcxOTkwYmU5MWMuLmNkNTlmYjRhNzMz
ZTkyNGU0ZWIxM2E5YzAwNjkzMDQyZDM5ZDlkZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0zNiw5ICszNiwxMCBAQCBlbnVtIGNs
YXNzIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIDogdWludDhfdCB7IE5vLCBZZXMgfTsKIC8v
IEZJWE1FOiBUaGVzZSBmbGFncywgUGFyc2VyTW9kZXMgYW5kIHByb3BhZ2F0aW9uIHRvIFhYWENv
ZGVCbG9ja3Mgc2hvdWxkIGJlIHJlb3JnYW5pemVkLgogLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MTU0Nwogc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKLSAgICBF
eGVjdXRhYmxlSW5mbyhib29sIHVzZXNFdmFsLCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wgaXNC
dWlsdGluRnVuY3Rpb24sIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIEpTUGFyc2Vy
U2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBTb3VyY2VQ
YXJzZU1vZGUgcGFyc2VNb2RlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBl
LCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwg
Ym9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzQ2xhc3NDb250ZXh0LCBFdmFsQ29u
dGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgdXNlc0V2
YWwsIGJvb2wgaXNDb25zdHJ1Y3RvciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24sIENvbnN0cnVjdG9yS2luZCBj
b25zdHJ1Y3RvcktpbmQsIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBTdXBlckJpbmRp
bmcgc3VwZXJCaW5kaW5nLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBEZXJpdmVkQ29udGV4
dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29s
IGlzQ2xhc3NDb250ZXh0LCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKQogICAgICAg
ICA6IG1fdXNlc0V2YWwodXNlc0V2YWwpCiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29u
c3RydWN0b3IpCisgICAgICAgICwgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudChzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4ocHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpKQogICAgICAgICAsIG1faXNCdWls
dGluRnVuY3Rpb24oaXNCdWlsdGluRnVuY3Rpb24pCiAgICAgICAgICwgbV9jb25zdHJ1Y3Rvcktp
bmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCiAgICAgICAgICwgbV9z
dXBlckJpbmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykpCkBAIC01Nyw2
ICs1OCw3IEBAIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiAKICAgICBib29sIHVzZXNFdmFsKCkg
Y29uc3QgeyByZXR1cm4gbV91c2VzRXZhbDsgfQogICAgIGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNv
bnN0IHsgcmV0dXJuIG1faXNDb25zdHJ1Y3RvcjsgfQorICAgIFByaXZhdGVCcmFuZFJlcXVpcmVt
ZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ+KG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOyB9CiAg
ICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVu
Y3Rpb247IH0KICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0K
ICAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8U3VwZXJCaW5kaW5nPihtX3N1cGVyQmluZGluZyk7IH0KQEAgLTcxLDYgKzczLDcgQEAgc3Ry
dWN0IEV4ZWN1dGFibGVJbmZvIHsKIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV91c2VzRXZhbCA6
IDE7CiAgICAgdW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKKyAgICB1bnNpZ25lZCBtX3By
aXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1bmN0
aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CiAgICAgdW5zaWdu
ZWQgbV9zdXBlckJpbmRpbmcgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXggMTIwMmYyNzk1NWI1NTZhMTEyMGNh
ZmViMDU0NmUwYWM3ZGQ5ZmVmZS4uYThiODIwM2VlOTliNTVmZDU5M2MyOWZhY2E4ZjRiY2Y0NTM0
N2E3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3Jw
aGljQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1v
cnBoaWNBY2Nlc3MuY3BwCkBAIC00NjksNyArNDY5LDggQEAgQWNjZXNzR2VuZXJhdGlvblJlc3Vs
dCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNM
b2MKICAgICBhbGxvY2F0b3IubG9jayhzdGF0ZS5iYXNlR1BSKTsKICAgICBpZiAoc3RhdGUudS50
aGlzR1BSICE9IEludmFsaWRHUFJSZWcpCiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0YXRlLnUu
dGhpc0dQUik7Ci0gICAgYWxsb2NhdG9yLmxvY2soc3RhdGUudmFsdWVSZWdzKTsKKyAgICBpZiAo
c3RhdGUudmFsdWVSZWdzKQorICAgICAgICBhbGxvY2F0b3IubG9jayhzdGF0ZS52YWx1ZVJlZ3Mp
OwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFz
ZVRhZ0dQUik7CiAgICAgaWYgKHN0dWJJbmZvLnYudGhpc1RhZ0dQUiAhPSBJbnZhbGlkR1BSUmVn
KQpAQCAtODUyLDYgKzg1MywxMiBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91
dCwgQWNjZXNzQ2FzZTo6QWNjZXNzVHlwZSB0eXBlKQogICAgIGNhc2UgQWNjZXNzQ2FzZTo6SW5N
aXNzOgogICAgICAgICBvdXQucHJpbnQoIkluTWlzcyIpOwogICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBBY2Nlc3NDYXNlOjpDaGVja1ByaXZhdGVCcmFuZDoKKyAgICAgICAgb3V0LnByaW50KCJD
aGVja1ByaXZhdGVCcmFuZCIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBBY2Nlc3NDYXNl
OjpTZXRQcml2YXRlQnJhbmQ6CisgICAgICAgIG91dC5wcmludCgiU2V0UHJpdmF0ZUJyYW5kIik7
CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIEFjY2Vzc0Nhc2U6OkFycmF5TGVuZ3RoOgogICAg
ICAgICBvdXQucHJpbnQoIkFycmF5TGVuZ3RoIik7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAppbmRl
eCBkNjE1YTEzZDljM2M0NzVhNjE2YzJlNTQ3NzI5NTU0NjE2OWM0NDRkLi43ZmY1MGU0ODU3OGEz
ZjY3MzA0MmU3NDkzOWFjMmEyYWQ2NTY0NjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCkBAIC0zNSw2ICszNSw4IEBAIFJl
Y29yZGVkU3RhdHVzZXMmIFJlY29yZGVkU3RhdHVzZXM6Om9wZXJhdG9yPShSZWNvcmRlZFN0YXR1
c2VzJiYgb3RoZXIpCiAgICAgcHV0cyA9IFdURk1vdmUob3RoZXIucHV0cyk7CiAgICAgaW5zID0g
V1RGTW92ZShvdGhlci5pbnMpOwogICAgIGRlbGV0ZXMgPSBXVEZNb3ZlKG90aGVyLmRlbGV0ZXMp
OworICAgIGNoZWNrUHJpdmF0ZUJyYW5kcyA9IFdURk1vdmUob3RoZXIuY2hlY2tQcml2YXRlQnJh
bmRzKTsKKyAgICBzZXRQcml2YXRlQnJhbmRzID0gV1RGTW92ZShvdGhlci5zZXRQcml2YXRlQnJh
bmRzKTsKICAgICBzaHJpbmtUb0ZpdCgpOwogICAgIHJldHVybiAqdGhpczsKIH0KQEAgLTg0LDEy
ICs4NiwzMiBAQCBEZWxldGVCeVN0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkRGVsZXRlQnlT
dGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbgogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKK0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGRDaGVja1By
aXZhdGVCcmFuZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBjb25zdCBDaGVj
a1ByaXZhdGVCcmFuZFN0YXR1cyYgc3RhdHVzKQoreworICAgIGF1dG8gc3RhdHVzUHRyID0gbWFr
ZVVuaXF1ZTxDaGVja1ByaXZhdGVCcmFuZFN0YXR1cz4oc3RhdHVzKTsKKyAgICBDaGVja1ByaXZh
dGVCcmFuZFN0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdldCgpOworICAgIGNoZWNrUHJpdmF0
ZUJyYW5kcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoY29kZU9yaWdpbiwgV1RGTW92ZShzdGF0dXNQ
dHIpKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworU2V0UHJpdmF0ZUJyYW5kU3RhdHVzKiBS
ZWNvcmRlZFN0YXR1c2VzOjphZGRTZXRQcml2YXRlQnJhbmRTdGF0dXMoY29uc3QgQ29kZU9yaWdp
biYgY29kZU9yaWdpbiwgY29uc3QgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzJiBzdGF0dXMpCit7Cisg
ICAgYXV0byBzdGF0dXNQdHIgPSBtYWtlVW5pcXVlPFNldFByaXZhdGVCcmFuZFN0YXR1cz4oc3Rh
dHVzKTsKKyAgICBTZXRQcml2YXRlQnJhbmRTdGF0dXMqIHJlc3VsdCA9IHN0YXR1c1B0ci5nZXQo
KTsKKyAgICBzZXRQcml2YXRlQnJhbmRzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihjb2RlT3JpZ2lu
LCBXVEZNb3ZlKHN0YXR1c1B0cikpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB2b2lkIFJl
Y29yZGVkU3RhdHVzZXM6OnZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9yJiBzbG90VmlzaXRvcikK
IHsKICAgICBmb3IgKGF1dG8mIHBhaXIgOiBnZXRzKQogICAgICAgICBwYWlyLnNlY29uZC0+dmlz
aXRBZ2dyZWdhdGUoc2xvdFZpc2l0b3IpOwogICAgIGZvciAoYXV0byYgcGFpciA6IGRlbGV0ZXMp
CiAgICAgICAgIHBhaXIuc2Vjb25kLT52aXNpdEFnZ3JlZ2F0ZShzbG90VmlzaXRvcik7CisgICAg
Zm9yIChhdXRvJiBwYWlyIDogY2hlY2tQcml2YXRlQnJhbmRzKQorICAgICAgICBwYWlyLnNlY29u
ZC0+dmlzaXRBZ2dyZWdhdGUoc2xvdFZpc2l0b3IpOworICAgIGZvciAoYXV0byYgcGFpciA6IHNl
dFByaXZhdGVCcmFuZHMpCisgICAgICAgIHBhaXIuc2Vjb25kLT52aXNpdEFnZ3JlZ2F0ZShzbG90
VmlzaXRvcik7CiB9CiAKIHZvaWQgUmVjb3JkZWRTdGF0dXNlczo6bWFya0lmQ2hlYXAoU2xvdFZp
c2l0b3ImIHNsb3RWaXNpdG9yKQpAQCAtMTAyLDYgKzEyNCwxMCBAQCB2b2lkIFJlY29yZGVkU3Rh
dHVzZXM6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiBzbG90VmlzaXRvcikKICAgICAgICAgcGFp
ci5zZWNvbmQtPm1hcmtJZkNoZWFwKHNsb3RWaXNpdG9yKTsKICAgICBmb3IgKGF1dG8mIHBhaXIg
OiBkZWxldGVzKQogICAgICAgICBwYWlyLnNlY29uZC0+bWFya0lmQ2hlYXAoc2xvdFZpc2l0b3Ip
OworICAgIGZvciAoYXV0byYgcGFpciA6IGNoZWNrUHJpdmF0ZUJyYW5kcykKKyAgICAgICAgcGFp
ci5zZWNvbmQtPm1hcmtJZkNoZWFwKHNsb3RWaXNpdG9yKTsKKyAgICBmb3IgKGF1dG8mIHBhaXIg
OiBzZXRQcml2YXRlQnJhbmRzKQorICAgICAgICBwYWlyLnNlY29uZC0+bWFya0lmQ2hlYXAoc2xv
dFZpc2l0b3IpOwogfQogCiB2b2lkIFJlY29yZGVkU3RhdHVzZXM6OmZpbmFsaXplV2l0aG91dERl
bGV0aW5nKFZNJiB2bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9SZWNvcmRlZFN0YXR1c2VzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVj
b3JkZWRTdGF0dXNlcy5oCmluZGV4IDllNzA1NWQyNDNmMjRhYTZhZjVhYTA5MmFkMzAyZWYxNWE4
ZDA1NzUuLmU4NDNiNjY4MDFlMDExN2M5ZWYzNzliYjA4M2M0OTRkN2IxMTg1NzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuaApAQCAt
MjYsMTAgKzI2LDEyIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVz
LmgiCisjaW5jbHVkZSAiQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuaCIKICNpbmNsdWRlICJEZWxl
dGVCeVN0YXR1cy5oIgogI2luY2x1ZGUgIkdldEJ5U3RhdHVzLmgiCiAjaW5jbHVkZSAiSW5CeUlk
U3RhdHVzLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgorI2luY2x1ZGUgIlNldFByaXZh
dGVCcmFuZFN0YXR1cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDksNiArNTEsOCBAQCBz
dHJ1Y3QgUmVjb3JkZWRTdGF0dXNlcyB7CiAgICAgUHV0QnlJZFN0YXR1cyogYWRkUHV0QnlJZFN0
YXR1cyhjb25zdCBDb2RlT3JpZ2luJiwgY29uc3QgUHV0QnlJZFN0YXR1cyYpOwogICAgIEluQnlJ
ZFN0YXR1cyogYWRkSW5CeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mLCBjb25zdCBJbkJ5SWRT
dGF0dXMmKTsKICAgICBEZWxldGVCeVN0YXR1cyogYWRkRGVsZXRlQnlTdGF0dXMoY29uc3QgQ29k
ZU9yaWdpbiYsIGNvbnN0IERlbGV0ZUJ5U3RhdHVzJik7CisgICAgQ2hlY2tQcml2YXRlQnJhbmRT
dGF0dXMqIGFkZENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mLCBjb25z
dCBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyYpOworICAgIFNldFByaXZhdGVCcmFuZFN0YXR1cyog
YWRkU2V0UHJpdmF0ZUJyYW5kU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mLCBjb25zdCBTZXRQcml2
YXRlQnJhbmRTdGF0dXMmKTsKICAgICAKICAgICB2b2lkIHZpc2l0QWdncmVnYXRlKFNsb3RWaXNp
dG9yJik7CiAgICAgdm9pZCBtYXJrSWZDaGVhcChTbG90VmlzaXRvciYpOwpAQCAtNjYsNiArNzAs
OCBAQCBzdHJ1Y3QgUmVjb3JkZWRTdGF0dXNlcyB7CiAgICAgICAgIGZ1bmMocHV0cyk7CiAgICAg
ICAgIGZ1bmMoaW5zKTsKICAgICAgICAgZnVuYyhkZWxldGVzKTsKKyAgICAgICAgZnVuYyhjaGVj
a1ByaXZhdGVCcmFuZHMpOworICAgICAgICBmdW5jKHNldFByaXZhdGVCcmFuZHMpOwogICAgIH0K
ICAgICAKICAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxD
YWxsTGlua1N0YXR1cz4+PiBjYWxsczsKQEAgLTczLDYgKzc5LDggQEAgc3RydWN0IFJlY29yZGVk
U3RhdHVzZXMgewogICAgIFZlY3RvcjxzdGQ6OnBhaXI8Q29kZU9yaWdpbiwgc3RkOjp1bmlxdWVf
cHRyPFB1dEJ5SWRTdGF0dXM+Pj4gcHV0czsKICAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmln
aW4sIHN0ZDo6dW5pcXVlX3B0cjxJbkJ5SWRTdGF0dXM+Pj4gaW5zOwogICAgIFZlY3RvcjxzdGQ6
OnBhaXI8Q29kZU9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPERlbGV0ZUJ5U3RhdHVzPj4+IGRlbGV0
ZXM7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8Q2hl
Y2tQcml2YXRlQnJhbmRTdGF0dXM+Pj4gY2hlY2tQcml2YXRlQnJhbmRzOworICAgIFZlY3Rvcjxz
dGQ6OnBhaXI8Q29kZU9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPFNldFByaXZhdGVCcmFuZFN0YXR1
cz4+PiBzZXRQcml2YXRlQnJhbmRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2V0UHJpdmF0ZUJyYW5kU3RhdHVz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TZXRQcml2YXRlQnJhbmRTdGF0
dXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmU2Y2Y3NGJlNTVlYzJkOGI5ZDJlODkzNmEyMTZiMzhhMzU5ZDhi
NzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2V0
UHJpdmF0ZUJyYW5kU3RhdHVzLmNwcApAQCAtMCwwICsxLDI3OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgSWdhbGlhIFMuQS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlNldFByaXZhdGVCcmFuZFN0YXR1cy5oIgorCisjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRp
ZmllcklubGluZXMuaCIKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJJQ1N0YXR1
c1V0aWxzLmgiCisjaW5jbHVkZSAiUG9seW1vcnBoaWNBY2Nlc3MuaCIKKyNpbmNsdWRlICJTdHJ1
Y3R1cmVTdHViSW5mby5oIgorI2luY2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgorCituYW1lc3BhY2Ug
SlNDIHsKKworYm9vbCBTZXRQcml2YXRlQnJhbmRTdGF0dXM6OmFwcGVuZFZhcmlhbnQoY29uc3Qg
U2V0UHJpdmF0ZUJyYW5kVmFyaWFudCYgdmFyaWFudCkKK3sKKyAgICByZXR1cm4gYXBwZW5kSUNT
dGF0dXNWYXJpYW50KG1fdmFyaWFudHMsIHZhcmlhbnQpOworfQorCitTZXRQcml2YXRlQnJhbmRT
dGF0dXMgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOjpjb21wdXRlRm9yQmFzZWxpbmUoQ29kZUJsb2Nr
KiBiYXNlbGluZUJsb2NrLCBJQ1N0YXR1c01hcCYgbWFwLCBCeXRlY29kZUluZGV4IGJ5dGVjb2Rl
SW5kZXgsIEV4aXRGbGFnIGRpZEV4aXQpCit7CisgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihiYXNlbGluZUJsb2NrLT5tX2xvY2spOworCisgICAgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzIHJl
c3VsdDsKKworI2lmIEVOQUJMRShERkdfSklUKQorICAgIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHVi
SW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKAorICAgICAgICBsb2NrZXIsIGJhc2VsaW5lQmxv
Y2ssIG1hcC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUluZGV4KSkuc3R1YkluZm8pOworCisgICAg
aWYgKGRpZEV4aXQpCisgICAgICAgIHJldHVybiByZXN1bHQuc2xvd1ZlcnNpb24oKTsKKyNlbHNl
CisgICAgVU5VU0VEX1BBUkFNKG1hcCk7CisgICAgVU5VU0VEX1BBUkFNKGRpZEV4aXQpOworICAg
IFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKKyNlbmRpZgorCisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworI2lmIEVOQUJMRShKSVQpCitTZXRQcml2YXRlQnJhbmRTdGF0dXM6OlNldFByaXZh
dGVCcmFuZFN0YXR1cyhTdHViSW5mb1N1bW1hcnkgc3VtbWFyeSwgU3RydWN0dXJlU3R1YkluZm8m
IHN0dWJJbmZvKQoreworICAgIHN3aXRjaCAoc3VtbWFyeSkgeworICAgIGNhc2UgU3R1YkluZm9T
dW1tYXJ5OjpOb0luZm9ybWF0aW9uOgorICAgICAgICBtX3N0YXRlID0gTm9JbmZvcm1hdGlvbjsK
KyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU3R1YkluZm9TdW1tYXJ5OjpTaW1wbGU6CisgICAg
Y2FzZSBTdHViSW5mb1N1bW1hcnk6Ok1ha2VzQ2FsbHM6CisgICAgY2FzZSBTdHViSW5mb1N1bW1h
cnk6OlRha2VzU2xvd1BhdGhBbmRNYWtlc0NhbGxzOgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBTdHViSW5mb1N1bW1hcnk6
OlRha2VzU2xvd1BhdGg6CisgICAgICAgIG1fc3RhdGUgPSBzdHViSW5mby50b29rU2xvd1BhdGgg
PyBPYnNlcnZlZFRha2VzU2xvd1BhdGggOiBMaWtlbHlUYWtlc1Nsb3dQYXRoOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK1Nl
dFByaXZhdGVCcmFuZFN0YXR1cyBTZXRQcml2YXRlQnJhbmRTdGF0dXM6OmNvbXB1dGVGb3JTdHVi
SW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKAorICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tl
ciYsIENvZGVCbG9jayogYmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbykKK3sKKyAg
ICBTdHViSW5mb1N1bW1hcnkgc3VtbWFyeSA9IFN0cnVjdHVyZVN0dWJJbmZvOjpzdW1tYXJ5KGJs
b2NrLT52bSgpLCBzdHViSW5mbyk7CisgICAgaWYgKCFpc0lubGluZWFibGUoc3VtbWFyeSkpCisg
ICAgICAgIHJldHVybiBTZXRQcml2YXRlQnJhbmRTdGF0dXMoc3VtbWFyeSwgKnN0dWJJbmZvKTsK
KworICAgIFNldFByaXZhdGVCcmFuZFN0YXR1cyByZXN1bHQ7CisgICAgcmVzdWx0Lm1fc3RhdGUg
PSBTaW1wbGU7CisgICAgc3dpdGNoIChzdHViSW5mby0+Y2FjaGVUeXBlKCkpIHsKKyAgICBjYXNl
IENhY2hlVHlwZTo6VW5zZXQ6CisgICAgICAgIHJldHVybiBTZXRQcml2YXRlQnJhbmRTdGF0dXMo
Tm9JbmZvcm1hdGlvbik7CisKKyAgICBjYXNlIENhY2hlVHlwZTo6U3R1YjogeworICAgICAgICBQ
b2x5bW9ycGhpY0FjY2VzcyogbGlzdCA9IHN0dWJJbmZvLT51LnN0dWI7CisKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBsaXN0SW5kZXggPSAwOyBsaXN0SW5kZXggPCBsaXN0LT5zaXplKCk7ICsrbGlz
dEluZGV4KSB7CisgICAgICAgICAgICBjb25zdCBBY2Nlc3NDYXNlJiBhY2Nlc3MgPSBsaXN0LT5h
dChsaXN0SW5kZXgpOworCisgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGFjY2Vz
cy5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUpOworICAgICAgICAg
ICAgQVNTRVJUKGFjY2Vzcy50eXBlKCkgPT0gQWNjZXNzQ2FzZTo6U2V0UHJpdmF0ZUJyYW5kKTsK
KworICAgICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OnNldEJy
YW5kVHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseShzdHJ1Y3R1cmUs
IGFjY2Vzcy5pZGVudGlmaWVyKCkudWlkKCkpOworICAgICAgICAgICAgaWYgKCFuZXdTdHJ1Y3R1
cmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIFNldFByaXZhdGVCcmFuZFN0YXR1cyhKU0M6OnNs
b3dWZXJzaW9uKHN1bW1hcnkpLCAqc3R1YkluZm8pOworCisgICAgICAgICAgICBTZXRQcml2YXRl
QnJhbmRWYXJpYW50IHZhcmlhbnQoYWNjZXNzLmlkZW50aWZpZXIoKSwgc3RydWN0dXJlLCBuZXdT
dHJ1Y3R1cmUpOworICAgICAgICAgICAgaWYgKCFyZXN1bHQuYXBwZW5kVmFyaWFudCh2YXJpYW50
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gU2V0UHJpdmF0ZUJyYW5kU3RhdHVzKEpTQzo6c2xv
d1ZlcnNpb24oc3VtbWFyeSksICpzdHViSW5mbyk7CisgICAgICAgIH0KKworICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgIH0KKworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBTZXRQcml2
YXRlQnJhbmRTdGF0dXMoSlNDOjpzbG93VmVyc2lvbihzdW1tYXJ5KSwgKnN0dWJJbmZvKTsKKyAg
ICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBTZXRQ
cml2YXRlQnJhbmRTdGF0dXMoKTsKK30KKworU2V0UHJpdmF0ZUJyYW5kU3RhdHVzIFNldFByaXZh
dGVCcmFuZFN0YXR1czo6Y29tcHV0ZUZvcigKKyAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ss
IElDU3RhdHVzTWFwJiBiYXNlbGluZU1hcCwKKyAgICBJQ1N0YXR1c0NvbnRleHRTdGFjayYgY29u
dGV4dFN0YWNrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCit7CisgICAgQnl0ZWNvZGVJbmRleCBi
eXRlY29kZUluZGV4ID0gY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KCk7CisgICAgRXhpdEZsYWcg
ZGlkRXhpdCA9IGhhc0JhZENhY2hlRXhpdFNpdGUoYmFzZWxpbmVCbG9jaywgYnl0ZWNvZGVJbmRl
eCk7CisKKyAgICBmb3IgKElDU3RhdHVzQ29udGV4dCogY29udGV4dCA6IGNvbnRleHRTdGFjaykg
eworICAgICAgICBJQ1N0YXR1cyBzdGF0dXMgPSBjb250ZXh0LT5nZXQoY29kZU9yaWdpbik7CisK
KyAgICAgICAgYXV0byBibGVzcyA9IFsmXSAoY29uc3QgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzJiBy
ZXN1bHQpIC0+IFNldFByaXZhdGVCcmFuZFN0YXR1cyB7CisgICAgICAgICAgICBpZiAoIWNvbnRl
eHQtPmlzSW5saW5lZChjb2RlT3JpZ2luKSkgeworICAgICAgICAgICAgICAgIFNldFByaXZhdGVC
cmFuZFN0YXR1cyBiYXNlbGluZVJlc3VsdCA9IGNvbXB1dGVGb3JCYXNlbGluZSgKKyAgICAgICAg
ICAgICAgICAgICAgYmFzZWxpbmVCbG9jaywgYmFzZWxpbmVNYXAsIGJ5dGVjb2RlSW5kZXgsIGRp
ZEV4aXQpOworICAgICAgICAgICAgICAgIGJhc2VsaW5lUmVzdWx0Lm1lcmdlKHJlc3VsdCk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGJhc2VsaW5lUmVzdWx0OworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaWYgKGRpZEV4aXQuaXNTZXQoRXhpdEZyb21JbmxpbmVkKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0LnNsb3dWZXJzaW9uKCk7CisgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgICAgICB9OworCisgICAgICAgIGlmIChzdGF0dXMuc3R1YkluZm8pIHsKKyAgICAg
ICAgICAgIFNldFByaXZhdGVCcmFuZFN0YXR1cyByZXN1bHQ7CisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb250ZXh0LT5vcHRpbWl6ZWRD
b2RlQmxvY2stPm1fbG9jayk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0
dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soCisgICAgICAgICAgICAgICAgICAgIGxvY2tl
ciwgY29udGV4dC0+b3B0aW1pemVkQ29kZUJsb2NrLCBzdGF0dXMuc3R1YkluZm8pOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaWYgKHJlc3VsdC5pc1NldCgpKQorICAgICAgICAgICAgICAg
IHJldHVybiBibGVzcyhyZXN1bHQpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGNv
bXB1dGVGb3JCYXNlbGluZShiYXNlbGluZUJsb2NrLCBiYXNlbGluZU1hcCwgYnl0ZWNvZGVJbmRl
eCwgZGlkRXhpdCk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCitTZXRQcml2YXRlQnJh
bmRTdGF0dXMgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOjpzbG93VmVyc2lvbigpIGNvbnN0Cit7Cisg
ICAgaWYgKG9ic2VydmVkU2xvd1BhdGgoKSkKKyAgICAgICAgcmV0dXJuIFNldFByaXZhdGVCcmFu
ZFN0YXR1cyhPYnNlcnZlZFRha2VzU2xvd1BhdGgpOworICAgIHJldHVybiBTZXRQcml2YXRlQnJh
bmRTdGF0dXMoTGlrZWx5VGFrZXNTbG93UGF0aCk7Cit9CisKK3ZvaWQgU2V0UHJpdmF0ZUJyYW5k
U3RhdHVzOjptZXJnZShjb25zdCBTZXRQcml2YXRlQnJhbmRTdGF0dXMmIG90aGVyKQoreworICAg
IGlmIChvdGhlci5tX3N0YXRlID09IE5vSW5mb3JtYXRpb24pCisgICAgICAgIHJldHVybjsKKwor
ICAgIGF1dG8gbWVyZ2VTbG93ID0gWyZdICgpIHsKKyAgICAgICAgaWYgKG9ic2VydmVkU2xvd1Bh
dGgoKSB8fCBvdGhlci5vYnNlcnZlZFNsb3dQYXRoKCkpCisgICAgICAgICAgICAqdGhpcyA9IFNl
dFByaXZhdGVCcmFuZFN0YXR1cyhPYnNlcnZlZFRha2VzU2xvd1BhdGgpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICAqdGhpcyA9IFNldFByaXZhdGVCcmFuZFN0YXR1cyhMaWtlbHlUYWtlc1Ns
b3dQYXRoKTsKKyAgICB9OworCisgICAgc3dpdGNoIChtX3N0YXRlKSB7CisgICAgY2FzZSBOb0lu
Zm9ybWF0aW9uOgorICAgICAgICAqdGhpcyA9IG90aGVyOworICAgICAgICByZXR1cm47CisKKyAg
ICBjYXNlIFNpbXBsZToKKyAgICAgICAgaWYgKG1fc3RhdGUgIT0gb3RoZXIubV9zdGF0ZSkKKyAg
ICAgICAgICAgIHJldHVybiBtZXJnZVNsb3coKTsKKworICAgICAgICBmb3IgKGF1dG8mIG90aGVy
VmFyaWFudCA6IG90aGVyLm1fdmFyaWFudHMpIHsKKyAgICAgICAgICAgIGlmICghYXBwZW5kVmFy
aWFudChvdGhlclZhcmlhbnQpKQorICAgICAgICAgICAgICAgIHJldHVybiBtZXJnZVNsb3coKTsK
KyAgICAgICAgfQorICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIExpa2VseVRha2VzU2xvd1Bh
dGg6CisgICAgY2FzZSBPYnNlcnZlZFRha2VzU2xvd1BhdGg6CisgICAgICAgIHJldHVybiBtZXJn
ZVNsb3coKTsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQor
Cit2b2lkIFNldFByaXZhdGVCcmFuZFN0YXR1czo6ZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYg
c3RydWN0dXJlU2V0KQoreworICAgIGlmIChtX3N0YXRlICE9IFNpbXBsZSkKKyAgICAgICAgcmV0
dXJuOworICAgIG1fdmFyaWFudHMucmVtb3ZlQWxsTWF0Y2hpbmcoCisgICAgICAgIFsmXSAoYXV0
byYgdmFyaWFudCkgLT4gYm9vbCB7CisgICAgICAgICAgICByZXR1cm4gIXN0cnVjdHVyZVNldC5j
b250YWlucyh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKTsKKyAgICAgICAgfSk7CisgICAgaWYgKG1f
dmFyaWFudHMuaXNFbXB0eSgpKQorICAgICAgICBtX3N0YXRlID0gTm9JbmZvcm1hdGlvbjsKK30K
KworQ2FjaGVhYmxlSWRlbnRpZmllciBTZXRQcml2YXRlQnJhbmRTdGF0dXM6OnNpbmdsZUlkZW50
aWZpZXIoKSBjb25zdAoreworICAgIGlmIChtX3ZhcmlhbnRzLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIHJlc3VsdCA9IG1fdmFy
aWFudHMuZmlyc3QoKS5pZGVudGlmaWVyKCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgbV92YXJpYW50cy5zaXpl
KCk7ICsraSkgeworICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBtX3Zh
cmlhbnRzW2ldLmlkZW50aWZpZXIoKTsKKyAgICAgICAgaWYgKCFpZGVudGlmaWVyKQorICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGlmIChpZGVudGlmaWVyICE9IHJlc3VsdCkK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCit2b2lkIFNldFByaXZhdGVCcmFuZFN0YXR1czo6dmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCit7CisgICAgZm9yIChTZXRQcml2YXRlQnJhbmRWYXJpYW50JiB2YXJpYW50
IDogbV92YXJpYW50cykKKyAgICAgICAgdmFyaWFudC52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsK
K30KKwordm9pZCBTZXRQcml2YXRlQnJhbmRTdGF0dXM6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQoreworICAgIGZvciAoU2V0UHJpdmF0ZUJyYW5kVmFyaWFudCYgdmFyaWFudCA6
IG1fdmFyaWFudHMpCisgICAgICAgIHZhcmlhbnQubWFya0lmQ2hlYXAodmlzaXRvcik7Cit9CisK
K2Jvb2wgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOjpmaW5hbGl6ZShWTSYgdm0pCit7CisgICAgZm9y
IChhdXRvJiB2YXJpYW50IDogbV92YXJpYW50cykgeworICAgICAgICBpZiAoIXZhcmlhbnQuZmlu
YWxpemUodm0pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwordm9pZCBTZXRQcml2YXRlQnJhbmRTdGF0dXM6OmR1bXAoUHJpbnRTdHJlYW0m
IG91dCkgY29uc3QKK3sKKyAgICBvdXQucHJpbnQoIigiKTsKKyAgICBzd2l0Y2ggKG1fc3RhdGUp
IHsKKyAgICBjYXNlIE5vSW5mb3JtYXRpb246CisgICAgICAgIG91dC5wcmludCgiTm9JbmZvcm1h
dGlvbiIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNpbXBsZToKKyAgICAgICAgb3V0LnBy
aW50KCJTaW1wbGUiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMaWtlbHlUYWtlc1Nsb3dQ
YXRoOgorICAgICAgICBvdXQucHJpbnQoIkxpa2VseVRha2VzU2xvd1BhdGgiKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBPYnNlcnZlZFRha2VzU2xvd1BhdGg6CisgICAgICAgIG91dC5wcmlu
dCgiT2JzZXJ2ZWRUYWtlc1Nsb3dQYXRoIik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBv
dXQucHJpbnQoIiwgIiwgbGlzdER1bXAobV92YXJpYW50cyksICIpIik7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Nl
dFByaXZhdGVCcmFuZFN0YXR1cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Nl
dFByaXZhdGVCcmFuZFN0YXR1cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlMTI4MmYyNGVkMGI5NDdkMWU4NjNk
ZDYxMzBhODE0NGJhNGQ1MzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmgKQEAgLTAsMCArMSwxMDcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJDb2RlT3Jp
Z2luLmgiCisjaW5jbHVkZSAiQ29uY3VycmVudEpTTG9jay5oIgorI2luY2x1ZGUgIkV4aXRGbGFn
LmgiCisjaW5jbHVkZSAiSUNTdGF0dXNNYXAuaCIKKyNpbmNsdWRlICJTZXRQcml2YXRlQnJhbmRW
YXJpYW50LmgiCisjaW5jbHVkZSAiU3R1YkluZm9TdW1tYXJ5LmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitjbGFzcyBBY2Nlc3NDYXNlOworY2xhc3MgQ29kZUJsb2NrOworY2xhc3MgU3RydWN0dXJl
U3R1YkluZm87CisKK2NsYXNzIFNldFByaXZhdGVCcmFuZFN0YXR1cyBmaW5hbCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZW51bSBTdGF0ZSA6IHVpbnQ4X3Qg
eworICAgICAgICAvLyBJdCdzIHVuY2FjaGVkIHNvIHdlIGhhdmUgbm8gaW5mb3JtYXRpb24uCisg
ICAgICAgIE5vSW5mb3JtYXRpb24sCisgICAgICAgIC8vIEl0J3MgY2FjaGVkIGZvciBhIHNpbXBs
ZSBhY2Nlc3MuCisgICAgICAgIFNpbXBsZSwKKyAgICAgICAgLy8gSXQgd2lsbCBsaWtlbHkgdGFr
ZSB0aGUgc2xvdyBwYXRoLgorICAgICAgICBMaWtlbHlUYWtlc1Nsb3dQYXRoLAorICAgICAgICAv
LyBJdCBoYXMgYmVlbiBzZWVuIHRvIHRha2UgdGhlIHNsb3cgcGF0aC4KKyAgICAgICAgT2JzZXJ2
ZWRUYWtlc1Nsb3dQYXRoLAorICAgIH07CisKKyAgICBTZXRQcml2YXRlQnJhbmRTdGF0dXMoKQor
ICAgICAgICA6IG1fc3RhdGUoTm9JbmZvcm1hdGlvbikKKyAgICB7CisgICAgfQorCisgICAgZXhw
bGljaXQgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzKFN0YXRlIHN0YXRlKQorICAgICAgICA6IG1fc3Rh
dGUoc3RhdGUpCisgICAgeworICAgICAgICBBU1NFUlQoc3RhdGUgIT0gU2ltcGxlKTsKKyAgICB9
CisKKyAgICBzdGF0aWMgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2Nr
KiBiYXNlbGluZUJsb2NrLCBJQ1N0YXR1c01hcCYgYmFzZWxpbmVNYXAsIElDU3RhdHVzQ29udGV4
dFN0YWNrJiBkZmdDb250ZXh0U3RhY2ssIENvZGVPcmlnaW4pOworCisgICAgU3RhdGUgc3RhdGUo
KSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CisKKyAgICBib29sIGlzU2V0KCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZSAhPSBOb0luZm9ybWF0aW9uOyB9CisgICAgYm9vbCBvcGVyYXRvciEoKSBj
b25zdCB7IHJldHVybiAhaXNTZXQoKTsgfQorICAgIGJvb2wgb2JzZXJ2ZWRTbG93UGF0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gT2JzZXJ2ZWRUYWtlc1Nsb3dQYXRoOyB9CisgICAgYm9v
bCBpc1NpbXBsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gU2ltcGxlOyB9CisgICAgY29u
c3QgVmVjdG9yPFNldFByaXZhdGVCcmFuZFZhcmlhbnQsIDE+JiB2YXJpYW50cygpIHsgcmV0dXJu
IG1fdmFyaWFudHM7IH0KKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIHNpbmdsZUlkZW50aWZpZXIo
KSBjb25zdDsKKworICAgIFNldFByaXZhdGVCcmFuZFN0YXR1cyBzbG93VmVyc2lvbigpIGNvbnN0
OworCisgICAgLy8gQXR0ZW1wdHMgdG8gcmVkdWNlIHRoZSBzZXQgb2YgdmFyaWFudHMgdG8gZml0
IHRoZSBnaXZlbiBzdHJ1Y3R1cmUgc2V0LiBUaGlzIG1heSBiZSBhcHByb3hpbWF0ZS4KKyAgICB2
b2lkIGZpbHRlcihjb25zdCBTdHJ1Y3R1cmVTZXQmKTsKKworICAgIHZvaWQgdmlzaXRBZ2dyZWdh
dGUoU2xvdFZpc2l0b3ImKTsKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7Cisg
ICAgYm9vbCBmaW5hbGl6ZShWTSYpOworCisgICAgYm9vbCBhcHBlbmRWYXJpYW50KGNvbnN0IFNl
dFByaXZhdGVCcmFuZFZhcmlhbnQmKTsKKworICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNv
bnN0OworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFNldFByaXZhdGVCcmFuZFN0YXR1cyhTdHVi
SW5mb1N1bW1hcnksIFN0cnVjdHVyZVN0dWJJbmZvJik7CisgICAgdm9pZCBtZXJnZShjb25zdCBT
ZXRQcml2YXRlQnJhbmRTdGF0dXMmKTsKKworICAgIHN0YXRpYyBTZXRQcml2YXRlQnJhbmRTdGF0
dXMgY29tcHV0ZUZvckJhc2VsaW5lKENvZGVCbG9jayosIElDU3RhdHVzTWFwJiwgQnl0ZWNvZGVJ
bmRleCwgRXhpdEZsYWcpOworI2lmIEVOQUJMRShKSVQpCisgICAgc3RhdGljIFNldFByaXZhdGVC
cmFuZFN0YXR1cyBjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjaygKKyAg
ICAgICAgY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2Nr
LCBTdHJ1Y3R1cmVTdHViSW5mbyopOworI2VuZGlmCisKKyAgICBWZWN0b3I8U2V0UHJpdmF0ZUJy
YW5kVmFyaWFudCwgMT4gbV92YXJpYW50czsKKyAgICBTdGF0ZSBtX3N0YXRlOworfTsKKworfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU2V0UHJpdmF0ZUJyYW5kVmFyaWFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU2V0UHJpdmF0ZUJyYW5kVmFyaWFudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGRkZGU4YTI5MTNi
NmVlNDg2YjY4YWNiZjQwYTA0NzdmOTkwYmRhZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TZXRQcml2YXRlQnJhbmRWYXJpYW50LmNwcApAQCAtMCww
ICsxLDEwMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuQS4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNldFByaXZhdGVCcmFuZFZhcmlhbnQuaCIK
KworI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitTZXRQcml2YXRlQnJhbmRWYXJpYW50OjpTZXRQcml2YXRlQnJhbmRWYXJpYW50KENh
Y2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0
cnVjdHVyZSogbmV3U3RydWN0dXJlKQorICAgIDogbV9vbGRTdHJ1Y3R1cmUob2xkU3RydWN0dXJl
KQorICAgICwgbV9uZXdTdHJ1Y3R1cmUobmV3U3RydWN0dXJlKQorICAgICwgbV9pZGVudGlmaWVy
KFdURk1vdmUoaWRlbnRpZmllcikpCit7IH0KKworU2V0UHJpdmF0ZUJyYW5kVmFyaWFudDo6flNl
dFByaXZhdGVCcmFuZFZhcmlhbnQoKSB7IH0KKworU2V0UHJpdmF0ZUJyYW5kVmFyaWFudDo6U2V0
UHJpdmF0ZUJyYW5kVmFyaWFudChjb25zdCBTZXRQcml2YXRlQnJhbmRWYXJpYW50JiBvdGhlcikK
K3sKKyAgICAqdGhpcyA9IG90aGVyOworfQorCitib29sIFNldFByaXZhdGVCcmFuZFZhcmlhbnQ6
OmF0dGVtcHRUb01lcmdlKGNvbnN0IFNldFByaXZhdGVCcmFuZFZhcmlhbnQmIG90aGVyKQorewor
ICAgIGlmICghIW1faWRlbnRpZmllciAhPSAhIW90aGVyLm1faWRlbnRpZmllcikKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1faWRlbnRpZmllciAmJiAobV9pZGVudGlmaWVyICE9
IG90aGVyLm1faWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICht
X29sZFN0cnVjdHVyZSAhPSBvdGhlci5tX29sZFN0cnVjdHVyZSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIEFTU0VSVChtX25ld1N0cnVjdHVyZSA9PSBvdGhlci5tX25ld1N0cnVjdHVyZSk7
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBTZXRQcml2YXRlQnJhbmRWYXJpYW50Ojpt
YXJrSWZDaGVhcChTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBpZiAobV9vbGRTdHJ1Y3R1
cmUpCisgICAgICAgIG1fb2xkU3RydWN0dXJlLT5tYXJrSWZDaGVhcCh2aXNpdG9yKTsKKyAgICBp
ZiAobV9uZXdTdHJ1Y3R1cmUpCisgICAgICAgIG1fbmV3U3RydWN0dXJlLT5tYXJrSWZDaGVhcCh2
aXNpdG9yKTsKK30KKworYm9vbCBTZXRQcml2YXRlQnJhbmRWYXJpYW50OjpmaW5hbGl6ZShWTSYg
dm0pCit7CisgICAgaWYgKCF2bS5oZWFwLmlzTWFya2VkKG1fb2xkU3RydWN0dXJlKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX25ld1N0cnVjdHVyZSAmJiAhdm0uaGVhcC5pc01h
cmtlZChtX25ld1N0cnVjdHVyZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwordm9pZCBTZXRQcml2YXRlQnJhbmRWYXJpYW50Ojp2aXNpdEFnZ3JlZ2F0ZShT
bG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBtX2lkZW50aWZpZXIudmlzaXRBZ2dyZWdhdGUo
dmlzaXRvcik7Cit9CisKK3ZvaWQgU2V0UHJpdmF0ZUJyYW5kVmFyaWFudDo6ZHVtcChQcmludFN0
cmVhbSYgb3V0KSBjb25zdAoreworICAgIGR1bXBJbkNvbnRleHQob3V0LCBudWxscHRyKTsKK30K
Kwordm9pZCBTZXRQcml2YXRlQnJhbmRWYXJpYW50OjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFt
JiBvdXQsIER1bXBDb250ZXh0KikgY29uc3QKK3sKKyAgICBvdXQucHJpbnQoIjwiKTsKKyAgICBv
dXQucHJpbnQoImlkPSciLCBtX2lkZW50aWZpZXIsICInIik7CisgICAgaWYgKG1fb2xkU3RydWN0
dXJlKQorICAgICAgICBvdXQucHJpbnQoIiwgIiwgKm1fb2xkU3RydWN0dXJlKTsKKyAgICBpZiAo
bV9uZXdTdHJ1Y3R1cmUpCisgICAgICAgIG91dC5wcmludCgiIC0+ICIsICptX25ld1N0cnVjdHVy
ZSk7CisgICAgb3V0LnByaW50KCI+Iik7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NldFByaXZhdGVCcmFuZFZhcmlh
bnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TZXRQcml2YXRlQnJhbmRWYXJp
YW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjg1ZTRhMGUwMWFmZDRkYmEwZThjNmU2NDY3MjQ0YjBmMzZhMGIz
YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TZXRQ
cml2YXRlQnJhbmRWYXJpYW50LmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgSWdhbGlhIFMuQS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDYWNo
ZWFibGVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8d3RmL0JveC5oPgorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOworCitjbGFzcyBTZXRQcml2YXRlQnJh
bmRWYXJpYW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBT
ZXRQcml2YXRlQnJhbmRWYXJpYW50KENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZSogb2xk
U3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSk7CisKKyAgICB+U2V0UHJpdmF0ZUJy
YW5kVmFyaWFudCgpOworCisgICAgU2V0UHJpdmF0ZUJyYW5kVmFyaWFudChjb25zdCBTZXRQcml2
YXRlQnJhbmRWYXJpYW50Jik7CisKKyAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fb2xkU3RydWN0dXJlOyB9CisgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX25ld1N0cnVjdHVyZTsgfQorCisgICAgYm9vbCBhdHRlbXB0VG9N
ZXJnZShjb25zdCBTZXRQcml2YXRlQnJhbmRWYXJpYW50JiBvdGhlcik7CisKKyAgICB2b2lkIHZp
c2l0QWdncmVnYXRlKFNsb3RWaXNpdG9yJik7CisgICAgdm9pZCBtYXJrSWZDaGVhcChTbG90Vmlz
aXRvciYpOworICAgIGJvb2wgZmluYWxpemUoVk0mKTsKKworICAgIHZvaWQgZHVtcChQcmludFN0
cmVhbSYpIGNvbnN0OworICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBD
b250ZXh0KikgY29uc3Q7CisKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKworICAgIGJvb2wgb3ZlcmxhcHMoY29uc3Qg
U2V0UHJpdmF0ZUJyYW5kVmFyaWFudCYgb3RoZXIpCisgICAgeworICAgICAgICBpZiAoISFtX2lk
ZW50aWZpZXIgIT0gISFvdGhlci5tX2lkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgaWYgKG1faWRlbnRpZmllcikgeworICAgICAgICAgICAgaWYgKG1faWRlbnRp
ZmllciAhPSBvdGhlci5tX2lkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB9CisgICAgICAgIHJldHVybiBtX29sZFN0cnVjdHVyZSA9PSBvdGhlci5tX29s
ZFN0cnVjdHVyZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFNldFByaXZh
dGVCcmFuZFN0YXR1czsKKworICAgIFN0cnVjdHVyZSogbV9vbGRTdHJ1Y3R1cmU7CisgICAgU3Ry
dWN0dXJlKiBtX25ld1N0cnVjdHVyZTsKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIG1faWRlbnRp
ZmllcjsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKaW5kZXggNTI2ZmRhYmJhNTRk
OTI3NGIzZDViODJiODdjZjhmMDgxMzhhNjQ5Ni4uMjY2ZDdkODU3NjQ2YjM4ODVlZjg3NDNhODkz
MDEyYTQ0NDVhOTFhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCkBAIC0yODQsNiArMjg0LDEyIEBAIHZvaWQgU3RydWN0
dXJlU3R1YkluZm86OnJlc2V0KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmIGxvY2tlciwg
Q29kZUJsb2NrKiBjCiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpEZWxldGVCeVZhbDoKICAgICAgICAg
cmVzZXREZWxCeShjb2RlQmxvY2ssICp0aGlzLCBEZWxCeUtpbmQ6Ok5vcm1hbEJ5VmFsKTsKICAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZDoKKyAg
ICAgICAgcmVzZXRDaGVja1ByaXZhdGVCcmFuZChjb2RlQmxvY2ssICp0aGlzKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpTZXRQcml2YXRlQnJhbmQ6CisgICAgICAgIHJl
c2V0U2V0UHJpdmF0ZUJyYW5kKGNvZGVCbG9jaywgKnRoaXMpOworICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgCiAgICAgZGVyZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKaW5kZXggODlkZjRkN2IxMjhjY2JjMDQ5NmQxNWVk
ZDYyNjZjZmU3ZDIyOGNkMi4uYzViYjk1ZTBjMzc3YjdjOWI5NGQzOGM1YjQ0ODFhZTI5YmJhYzJl
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0
dWJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0
dWJJbmZvLmgKQEAgLTU5LDYgKzU5LDggQEAgZW51bSBjbGFzcyBBY2Nlc3NUeXBlIDogaW50OF90
IHsKICAgICBEZWxldGVCeUlELAogICAgIERlbGV0ZUJ5VmFsLAogICAgIEdldFByaXZhdGVOYW1l
LAorICAgIENoZWNrUHJpdmF0ZUJyYW5kLAorICAgIFNldFByaXZhdGVCcmFuZCwKIH07CiAKIGVu
dW0gY2xhc3MgQ2FjaGVUeXBlIDogaW50OF90IHsKQEAgLTM1Miw2ICszNTQsNyBAQCBwdWJsaWM6
CiAgICAgICAgIEdQUlJlZyB0aGlzR1BSOwogICAgICAgICBHUFJSZWcgcHJvdG90eXBlR1BSOwog
ICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFI7CisgICAgICAgIEdQUlJlZyBicmFuZEdQUjsKICAg
ICB9IHJlZ3M7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBHUFJSZWcgdmFsdWVUYWdHUFI7
CkBAIC0zNjEsNiArMzY0LDcgQEAgcHVibGljOgogICAgIHVuaW9uIHsKICAgICAgICAgR1BSUmVn
IHRoaXNUYWdHUFI7CiAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eVRhZ0dQUjsKKyAgICAgICAgR1BS
UmVnIGJyYW5kVGFnR1BSOwogICAgIH0gdjsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCBiM2FkYzBi
NzdlYjdjNzI0MTg2YTk4MWM2MzUzYzMxOWE1OTliMGUwLi45M2RmZjc3NDJkMzc0ZWVjM2VmYTJk
ZTA3NGUyODQ4MWY5Njk2MTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTY5LDYgKzY5LDEwIEBAIFVubGlua2Vk
Q29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayhWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBDb2RlVHlwZSBjb2RlCiAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoaG9sZExv
Y2soY2VsbExvY2soKSkpOwogICAgICAgICBtX3JhcmVEYXRhLT5tX25lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyOjpZZXMpOwogICAgIH0KKyAgICBpZiAoaW5mby5wcml2YXRlQnJhbmRSZXF1aXJlbWVudCgp
ID09IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOZWVkZWQpIHsKKyAgICAgICAgY3JlYXRlUmFy
ZURhdGFJZk5lY2Vzc2FyeShob2xkTG9jayhjZWxsTG9jaygpKSk7CisgICAgICAgIG1fcmFyZURh
dGEtPm1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5lZWRlZCk7CisgICAgfQogfQogCiB2b2lkIFVubGlua2Vk
Q29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5oCmluZGV4IDAwZGM2MTYzMzVmZDMxYjA0MzI1MWUzNDQwMGU1N2RlZjUzMTVkNWYuLjFm
NTFlY2U1ZDZmODZkNzA5NTExYjRhNGMxODJjNjRjYmZhMTgzYmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC0yNjYsNiAr
MjY2LDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyOjpObzsKICAgICB9CiAKKyAgICBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJh
bmRSZXF1aXJlbWVudCgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9yYXJlRGF0YSkKKyAg
ICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxQcml2YXRlQnJhbmRSZXF1aXJlbWVudD4obV9y
YXJlRGF0YS0+bV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7CisgICAgICAgIHJldHVybiBQcml2
YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZTsKKyAgICB9CisKICAgICB2b2lkIGR1bXAoUHJpbnRT
dHJlYW0mKSBjb25zdDsKIAogICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyYgbGl2ZW5lc3NB
bmFseXNpcyhDb2RlQmxvY2sqIGNvZGVCbG9jaykKQEAgLTQwNyw2ICs0MTQsNyBAQCBwdWJsaWM6
CiAgICAgICAgIFJlZkNvdW50ZWRBcnJheTxDb25zdGFudElkZW50aWZpZXJTZXRFbnRyeT4gbV9j
b25zdGFudElkZW50aWZpZXJTZXRzOwogCiAgICAgICAgIHVuc2lnbmVkIG1fbmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIgOiAxOworICAgICAgICB1bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVp
cmVtZW50IDogMTsKICAgICB9OwogCiAgICAgaW50IG91dE9mTGluZUp1bXBPZmZzZXQoSW5zdHJ1
Y3Rpb25TdHJlYW06Ok9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5oCmluZGV4IDJlYjk4NGMx
YjA1YTQ1ZTBhYTUyMGUxZmQzNzhhZDllMmZjOTMyMjIuLjk0YzY4NzBlOTk0YzJiZjVjOTgyY2U5
NTJlNGM1MzRiZGM5NmI0ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5oCkBAIC01MCw2ICs1MCw3
IEBAIHB1YmxpYzoKICAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1
cm4gbV9jb2RlQmxvY2stPnN1cGVyQmluZGluZygpOyB9CiAgICAgSlNQYXJzZXJTY3JpcHRNb2Rl
IHNjcmlwdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+c2NyaXB0TW9kZSgpOyB9
CiAgICAgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIoKTsgfQorICAgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVt
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnByaXZhdGVCcmFuZFJlcXVpcmVtZW50
KCk7IH0KICAgICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnVz
ZXNFdmFsKCk7IH0KICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpOyB9CiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24o
KSB7IHJldHVybiBtX2NvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9uKCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUuY3BwCmluZGV4IDdlY2I0ZmM3NTlhZDBmMTEzODliNjY2OTQzZjA1N2RmM2IzZGQ3
MWUuLjgwNWRmODBhZDUyNjk2ZGUyNGExMDJiYWU4YzM0ODRkNzVhZmM5NmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlLmNwcApAQCAtNzAsMTEgKzcwLDEyIEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAKICAgICBi
b29sIGlzQ2xhc3NDb250ZXh0ID0gZXhlY3V0YWJsZS0+c3VwZXJCaW5kaW5nKCkgPT0gU3VwZXJC
aW5kaW5nOjpOZWVkZWQgfHwgZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VN
b2RlOjpDbGFzc0ZpZWxkSW5pdGlhbGl6ZXJNb2RlOwogCi0gICAgVW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKHZtLCBG
dW5jdGlvbkNvZGUsIEV4ZWN1dGFibGVJbmZvKGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBraW5kID09
IENvZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0aW9uS2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlv
biwgZXhlY3V0YWJsZS0+Y29uc3RydWN0b3JLaW5kKCksIHNjcmlwdE1vZGUsIGV4ZWN1dGFibGUt
PnN1cGVyQmluZGluZygpLCBwYXJzZU1vZGUsIGV4ZWN1dGFibGUtPmRlcml2ZWRDb250ZXh0VHlw
ZSgpLCBleGVjdXRhYmxlLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBmYWxzZSwgaXND
bGFzc0NvbnRleHQsIEV2YWxDb250ZXh0VHlwZTo6RnVuY3Rpb25FdmFsQ29udGV4dCksIGNvZGVH
ZW5lcmF0aW9uTW9kZSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0g
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKHZtLCBGdW5jdGlvbkNvZGUsIEV4ZWN1
dGFibGVJbmZvKGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3Qs
IGV4ZWN1dGFibGUtPnByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCksIGZ1bmN0aW9uS2luZCA9PSBV
bmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwgZXhlY3V0YWJsZS0+Y29uc3RydWN0b3JLaW5kKCksIHNj
cmlwdE1vZGUsIGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpLCBwYXJzZU1vZGUsIGV4ZWN1dGFi
bGUtPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBleGVjdXRhYmxlLT5uZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplcigpLCBmYWxzZSwgaXNDbGFzc0NvbnRleHQsIEV2YWxDb250ZXh0VHlwZTo6RnVuY3Rp
b25FdmFsQ29udGV4dCksIGNvZGVHZW5lcmF0aW9uTW9kZSk7CiAKICAgICBhdXRvIHBhcmVudFNj
b3BlVERaVmFyaWFibGVzID0gZXhlY3V0YWJsZS0+cGFyZW50U2NvcGVURFpWYXJpYWJsZXMoKTsK
KyAgICBQcml2YXRlTmFtZUVudmlyb25tZW50IHBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQg
PSBleGVjdXRhYmxlLT5wYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50KCk7CiAgICAgRUNNQU1v
ZGUgZWNtYU1vZGUgPSBleGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpID8gRUNNQU1vZGU6
OnN0cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgpOwotICAgIGVycm9yID0gQnl0ZWNvZGVHZW5l
cmF0b3I6OmdlbmVyYXRlKHZtLCBmdW5jdGlvbi5nZXQoKSwgc291cmNlLCByZXN1bHQsIGNvZGVH
ZW5lcmF0aW9uTW9kZSwgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIGVjbWFNb2RlKTsKKyAgICBl
cnJvciA9IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSh2bSwgZnVuY3Rpb24uZ2V0KCksIHNv
dXJjZSwgcmVzdWx0LCBjb2RlR2VuZXJhdGlvbk1vZGUsIHBhcmVudFNjb3BlVERaVmFyaWFibGVz
LCAmcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgZWNtYU1vZGUpOwogCiAgICAgaWYgKGVy
cm9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC04Miw3ICs4Myw3IEBA
IHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2soCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHBhcmVudFNvdXJjZSwgRnVuY3Rpb25NZXRhZGF0
YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGtpbmQsIENvbnN0cnVjdEFiaWxpdHkg
Y29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIFJlZlB0cjxU
RFpFbnZpcm9ubWVudExpbms+IHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBEZXJpdmVkQ29udGV4
dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1
Y3RvcikKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBwYXJl
bnRTb3VyY2UsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2lu
ZCBraW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0
TW9kZSBzY3JpcHRNb2RlLCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiBwYXJlbnRTY29wZVRE
WlZhcmlhYmxlcywgT3B0aW9uYWw8UHJpdmF0ZU5hbWVFbnZpcm9ubWVudD4gcGFyZW50UHJpdmF0
ZU5hbWVFbnZpcm9ubWVudCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwg
TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFBy
aXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29sIGlzQnVp
bHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKQogICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQog
ICAgICwgbV9maXJzdExpbmVPZmZzZXQobm9kZS0+Zmlyc3RMaW5lKCkgLSBwYXJlbnRTb3VyY2Uu
Zmlyc3RMaW5lKCkub25lQmFzZWRJbnQoKSkKICAgICAsIG1faXNJblN0cmljdENvbnRleHQobm9k
ZS0+aXNJblN0cmljdENvbnRleHQoKSkKQEAgLTEwMyw2ICsxMDQsNyBAQCBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdAogICAgICwgbV90eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQobm9kZS0+ZnVuY3Rp
b25LZXl3b3JkU3RhcnQoKSkKICAgICAsIG1fdHlwZVByb2ZpbGluZ0VuZE9mZnNldChub2RlLT5z
dGFydFN0YXJ0T2Zmc2V0KCkgKyBub2RlLT5zb3VyY2UoKS5sZW5ndGgoKSAtIDEpCiAgICAgLCBt
X3BhcmFtZXRlckNvdW50KG5vZGUtPnBhcmFtZXRlckNvdW50KCkpCisgICAgLCBtX3ByaXZhdGVC
cmFuZFJlcXVpcmVtZW50KHN0YXRpY19jYXN0PHVuc2lnbmVkPihwcml2YXRlQnJhbmRSZXF1aXJl
bWVudCkpCiAgICAgLCBtX2ZlYXR1cmVzKDApCiAgICAgLCBtX3NvdXJjZVBhcnNlTW9kZShub2Rl
LT5wYXJzZU1vZGUoKSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihub2RlLT5jb25zdHJ1Y3RvcktpbmQoKSkpCkBAIC0xMjIsMTIgKzEyNCwxNSBAQCBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdAogICAgIEFTU0VSVChtX3NjcmlwdE1vZGUgPT0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHNjcmlwdE1vZGUpKTsKICAgICBBU1NFUlQobV9zdXBlckJpbmRpbmcgPT0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPnN1cGVyQmluZGluZygpKSk7CiAgICAgQVNTRVJU
KG1fZGVyaXZlZENvbnRleHRUeXBlID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXJpdmVkQ29u
dGV4dFR5cGUpKTsKKyAgICBBU1NFUlQobV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9PSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4ocHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpKTsKICAgICBBU1NFUlQo
IShtX2lzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yICYmIGNvbnN0cnVjdG9yS2luZCgp
ID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSkpOwogICAgIEFTU0VSVCghbV9uZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplciB8fCAoaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKSB8fCBkZXJpdmVk
Q29udGV4dFR5cGUgPT0gRGVyaXZlZENvbnRleHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250
ZXh0KSk7CiAgICAgaWYgKCFub2RlLT5jbGFzc1NvdXJjZSgpLmlzTnVsbCgpKQogICAgICAgICBz
ZXRDbGFzc1NvdXJjZShub2RlLT5jbGFzc1NvdXJjZSgpKTsKICAgICBpZiAocGFyZW50U2NvcGVU
RFpWYXJpYWJsZXMpCiAgICAgICAgIGVuc3VyZVJhcmVEYXRhKCkubV9wYXJlbnRTY29wZVREWlZh
cmlhYmxlcyA9IFdURk1vdmUocGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOworICAgIGlmIChwYXJl
bnRQcml2YXRlTmFtZUVudmlyb25tZW50KQorICAgICAgICBlbnN1cmVSYXJlRGF0YSgpLm1fcGFy
ZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCA9IFdURk1vdmUoKnBhcmVudFByaXZhdGVOYW1lRW52
aXJvbm1lbnQpOwogfQogCiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6flVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKaW5kZXggYmVhZjFlNWQ1YmU4
ZjExYmVmZjNlZDNiMWI4MDc5NTljNDYyN2FiNy4uZmI3ZGJhOWVmYjRhYTA0ZGFkMzZhMTI4MWMw
MTA4ZTUwZmJiZTRjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKQEAgLTcwLDEwICs3MCwxMCBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAmdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVT
cGFjZS5zcGFjZTsKICAgICB9CiAKLSAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqIGNyZWF0ZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25NZXRh
ZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIHVubGlua2VkRnVuY3Rpb25LaW5k
LCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZSBz
Y3JpcHRNb2RlLCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiBwYXJlbnRTY29wZVREWlZhcmlh
YmxlcywgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNCdWlsdGlu
RGVmYXVsdENsYXNzQ29uc3RydWN0b3IgPSBmYWxzZSkKKyAgICBzdGF0aWMgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwg
RnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIHVubGlua2Vk
RnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2Vy
U2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiBwYXJlbnRT
Y29wZVREWlZhcmlhYmxlcywgT3B0aW9uYWw8UHJpdmF0ZU5hbWVFbnZpcm9ubWVudD4gcGFyZW50
UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0
VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29s
IGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yID0gZmFsc2UpCiAgICAgewogICAgICAg
ICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0uaGVhcCkpCi0gICAgICAg
ICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0udW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgbm9kZSwgdW5saW5rZWRGdW5jdGlvbktp
bmQsIGNvbnN0cnVjdEFiaWxpdHksIHNjcmlwdE1vZGUsIFdURk1vdmUocGFyZW50U2NvcGVURFpW
YXJpYWJsZXMpLCBkZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
LCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3Rvcik7CisgICAgICAgICAgICBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1
Y3R1cmUuZ2V0KCksIHNvdXJjZSwgbm9kZSwgdW5saW5rZWRGdW5jdGlvbktpbmQsIGNvbnN0cnVj
dEFiaWxpdHksIHNjcmlwdE1vZGUsIFdURk1vdmUocGFyZW50U2NvcGVURFpWYXJpYWJsZXMpLCBX
VEZNb3ZlKHBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQpLCBkZXJpdmVkQ29udGV4dFR5cGUs
IG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCwgaXNC
dWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IpOwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNo
Q3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpAQCAtMTQzLDYg
KzE0Myw4IEBAIHB1YmxpYzoKICAgICBDb2RlRmVhdHVyZXMgZmVhdHVyZXMoKSBjb25zdCB7IHJl
dHVybiBtX2ZlYXR1cmVzOyB9CiAgICAgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcygpIGNvbnN0
IHsgcmV0dXJuIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXM7IH0KIAorICAgIFByaXZhdGVCcmFuZFJl
cXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ+KG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQp
OyB9CisKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7
CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIApAQCAtMTc0LDYgKzE3NiwxMyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIG1f
cmFyZURhdGEtPm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7CiAgICAgfQorCisgICAgUHJpdmF0
ZU5hbWVFbnZpcm9ubWVudCBwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50KCkgY29uc3QKKyAg
ICB7CisgICAgICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgICAgIHJldHVybiBQcml2YXRl
TmFtZUVudmlyb25tZW50KCk7CisgICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX3BhcmVudFBy
aXZhdGVOYW1lRW52aXJvbm1lbnQ7CisgICAgfQogICAgIAogICAgIGJvb2wgaXNBcnJvd0Z1bmN0
aW9uKCkgY29uc3QgeyByZXR1cm4gaXNBcnJvd0Z1bmN0aW9uUGFyc2VNb2RlKHBhcnNlTW9kZSgp
KTsgfQogCkBAIC0yMTAsNiArMjE5LDcgQEAgcHVibGljOgogICAgICAgICBTdHJpbmcgbV9zb3Vy
Y2VNYXBwaW5nVVJMRGlyZWN0aXZlOwogICAgICAgICBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5r
PiBtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzOwogICAgICAgICBWZWN0b3I8SlNUZXh0UG9zaXRp
b24+IG1fY2xhc3NGaWVsZExvY2F0aW9uczsKKyAgICAgICAgUHJpdmF0ZU5hbWVFbnZpcm9ubWVu
dCBtX3BhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQ7CiAgICAgfTsKIAogICAgIE5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI+KG1fbmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIpOyB9CkBAIC0yMjksNyArMjM5LDcgQEAgcHVibGljOgogICAgIH0K
IAogcHJpdmF0ZToKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYsIFN0cnVjdHVy
ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVu
Y3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUsIFJlZlB0cjxU
RFpFbnZpcm9ubWVudExpbms+LCAgSlNDOjpEZXJpdmVkQ29udGV4dFR5cGUsIEpTQzo6TmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0
b3IpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNJiwgU3RydWN0dXJlKiwgY29u
c3QgU291cmNlQ29kZSYsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgVW5saW5rZWRGdW5jdGlvbktp
bmQsIENvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZSwgUmVmUHRyPFREWkVudmly
b25tZW50TGluaz4sIE9wdGlvbmFsPFByaXZhdGVOYW1lRW52aXJvbm1lbnQ+LCBKU0M6OkRlcml2
ZWRDb250ZXh0VHlwZSwgSlNDOjpOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQsIGJvb2wgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IpOwog
ICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKERlY29kZXImLCBjb25zdCBDYWNoZWRGdW5j
dGlvbkV4ZWN1dGFibGUmKTsKIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiwgU2xvdFZpc2l0b3ImKTsKQEAgLTI2MSw3ICsyNzEsOCBAQCBwcml2YXRlOgogICAgIHVuc2ln
bmVkIG1faXNDYWNoZWQgOiAxOwogICAgIHVuc2lnbmVkIG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zm
c2V0OwogICAgIHVuc2lnbmVkIG1fdHlwZVByb2ZpbGluZ0VuZE9mZnNldDsKLSAgICB1bnNpZ25l
ZCBtX3BhcmFtZXRlckNvdW50OworICAgIHVuc2lnbmVkIG1fcGFyYW1ldGVyQ291bnQgOiAzMTsK
KyAgICB1bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsKICAgICBDb2RlRmVh
dHVyZXMgbV9mZWF0dXJlczsKICAgICBTb3VyY2VQYXJzZU1vZGUgbV9zb3VyY2VQYXJzZU1vZGU7
CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRl
eCA2MTdjYTBjYmM1NWJjZTZjYzA3ZTVlZGJlNTM0ZDk3YTk4NDI4OWY0Li40ZTU3MTllZjgyNThm
M2IyOWZlNjBkNzZkYjIwMmQyZjliMjhhNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMjg5LDcg
KzI4OSw3IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAg
cmV0dXJuIFBhcnNlckVycm9yKFBhcnNlckVycm9yOjpFcnJvck5vbmUpOwogfQogCi1CeXRlY29k
ZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBQcm9ncmFtTm9kZSogcHJvZ3Jh
bU5vZGUsIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29k
ZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFJlZlB0cjxURFpFbnZp
cm9ubWVudExpbms+JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRUNNQU1vZGUgZWNtYU1vZGUp
CitCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBQcm9ncmFtTm9k
ZSogcHJvZ3JhbU5vZGUsIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrLCBPcHRp
b25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFJlZlB0
cjxURFpFbnZpcm9ubWVudExpbms+JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgY29uc3QgUHJp
dmF0ZU5hbWVFbnZpcm9ubWVudCosIEVDTUFNb2RlIGVjbWFNb2RlKQogICAgIDogQnl0ZWNvZGVH
ZW5lcmF0b3JCYXNlKG1ha2VVbmlxdWU8VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I+KHZtLCBj
b2RlQmxvY2spLCBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1
YWxSZWdpc3RlcnMoKSkKICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2RlKGNvZGVHZW5lcmF0aW9u
TW9kZSkKICAgICAsIG1fc2NvcGVOb2RlKHByb2dyYW1Ob2RlKQpAQCAtMzM2LDcgKzMzNiw3IEBA
IEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2Rl
KiBwcm9ncmFtTm9kZSwgVW5saW5rZWRQCiAgICAgfQogfQogCi1CeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRp
b25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFJlZlB0cjxURFpFbnZpcm9ubWVudExp
bms+JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRUNNQU1vZGUgZWNtYU1vZGUpCitCeXRlY29k
ZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0
aW9uTm9kZSwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8
Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFJlZlB0cjxURFpF
bnZpcm9ubWVudExpbms+JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgY29uc3QgUHJpdmF0ZU5h
bWVFbnZpcm9ubWVudCogcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgRUNNQU1vZGUgZWNt
YU1vZGUpCiAgICAgOiBCeXRlY29kZUdlbmVyYXRvckJhc2UobWFrZVVuaXF1ZTxVbmxpbmtlZENv
ZGVCbG9ja0dlbmVyYXRvcj4odm0sIGNvZGVCbG9jayksIENvZGVCbG9jazo6bGxpbnRCYXNlbGlu
ZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKQogICAgICwgbV9jb2RlR2VuZXJh
dGlvbk1vZGUoY29kZUdlbmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5vZGUoZnVuY3Rpb25O
b2RlKQpAQCAtMzU5LDYgKzM1OSw4IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVy
YXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgLCBt
X2VjbWFNb2RlKGVjbWFNb2RlKQogICAgICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoY29kZUJsb2Nr
LT5kZXJpdmVkQ29udGV4dFR5cGUoKSkKIHsKKyAgICBwdXNoUHJpdmF0ZUFjY2Vzc05hbWVzKHBh
cmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQpOworCiAgICAgU3ltYm9sVGFibGUqIGZ1bmN0aW9u
U3ltYm9sVGFibGUgPSBTeW1ib2xUYWJsZTo6Y3JlYXRlKG1fdm0pOwogICAgIGZ1bmN0aW9uU3lt
Ym9sVGFibGUtPnNldFVzZXNOb25TdHJpY3RFdmFsKG1fdXNlc05vblN0cmljdEV2YWwpOwogICAg
IGludCBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXggPSAwOwpAQCAtNzA3LDYgKzcwOSw5IEBAIEJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSog
ZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgICAgICAgICAgY2FzZSBDb25zdHJ1Y3Rvcktp
bmQ6Ok5vbmU6CiAgICAgICAgICAgICAgICAgY2FzZSBDb25zdHJ1Y3RvcktpbmQ6OkJhc2U6CiAg
ICAgICAgICAgICAgICAgICAgIGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChPcHRpb25zOjp1c2VQcml2YXRlTWV0aG9kcygpICYmIHByaXZh
dGVCcmFuZFJlcXVpcmVtZW50KCkgPT0gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5lZWRlZCkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRJbnN0YWxsUHJpdmF0ZUJyYW5kKCZtX3RoaXNS
ZWdpc3Rlcik7CisKICAgICAgICAgICAgICAgICAgICAgZW1pdEluc3RhbmNlRmllbGRJbml0aWFs
aXphdGlvbklmTmVlZGVkKCZtX3RoaXNSZWdpc3RlciwgJm1fY2FsbGVlUmVnaXN0ZXIsIG1fc2Nv
cGVOb2RlLT5wb3NpdGlvbigpLCBtX3Njb3BlTm9kZS0+cG9zaXRpb24oKSwgbV9zY29wZU5vZGUt
PnBvc2l0aW9uKCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICBjYXNlIENvbnN0cnVjdG9yS2luZDo6RXh0ZW5kczoKQEAgLTgzOCw3ICs4NDMsNyBAQCBCeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1
bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIHB1c2hMZXhpY2FsU2NvcGUobV9zY29wZU5vZGUsIFRE
WkNoZWNrT3B0aW1pemF0aW9uOjpPcHRpbWl6ZSwgTmVzdGVkU2NvcGVUeXBlOjpJc05vdE5lc3Rl
ZCwgbnVsbHB0ciwgc2hvdWxkSW5pdGlhbGl6ZUJsb2NrU2NvcGVkRnVuY3Rpb25zKTsKIH0KIAot
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2
YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVH
ZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBSZWZQdHI8VERaRW52aXJv
bm1lbnRMaW5rPiYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIEVDTUFNb2RlIGVjbWFNb2RlKQor
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2
YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVH
ZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBSZWZQdHI8VERaRW52aXJv
bm1lbnRMaW5rPiYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIGNvbnN0IFByaXZhdGVOYW1lRW52
aXJvbm1lbnQqIHBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQsIEVDTUFNb2RlIGVjbWFNb2Rl
KQogICAgIDogQnl0ZWNvZGVHZW5lcmF0b3JCYXNlKG1ha2VVbmlxdWU8VW5saW5rZWRDb2RlQmxv
Y2tHZW5lcmF0b3I+KHZtLCBjb2RlQmxvY2spLCBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxs
ZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSkKICAgICAsIG1fY29kZUdlbmVyYXRpb25N
b2RlKGNvZGVHZW5lcmF0aW9uTW9kZSkKICAgICAsIG1fc2NvcGVOb2RlKGV2YWxOb2RlKQpAQCAt
ODU2LDYgKzg2MSw4IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYg
dm0sIEV2YWxOb2RlKiBldmFsTm9kZSwgVW5saW5rZWRFdmFsQ29kCiB7CiAgICAgbV9jb2RlQmxv
Y2stPnNldE51bVBhcmFtZXRlcnMoMSk7CiAKKyAgICBwdXNoUHJpdmF0ZUFjY2Vzc05hbWVzKHBh
cmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQpOworCiAgICAgbV9jYWNoZWRQYXJlbnRURFogPSBw
YXJlbnRTY29wZVREWlZhcmlhYmxlczsKIAogICAgIGVtaXRFbnRlcigpOwpAQCAtOTAxLDcgKzkw
OCw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEV2YWxO
b2RlKiBldmFsTm9kZSwgVW5saW5rZWRFdmFsQ29kCiAgICAgcHVzaExleGljYWxTY29wZShtX3Nj
b3BlTm9kZSwgVERaQ2hlY2tPcHRpbWl6YXRpb246Ok9wdGltaXplLCBOZXN0ZWRTY29wZVR5cGU6
OklzTm90TmVzdGVkLCBudWxscHRyLCBzaG91bGRJbml0aWFsaXplQmxvY2tTY29wZWRGdW5jdGlv
bnMpOwogfQogCi1CeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBN
b2R1bGVQcm9ncmFtTm9kZSogbW9kdWxlUHJvZ3JhbU5vZGUsIFVubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2Rl
R2VuZXJhdGlvbk1vZGUsIGNvbnN0IFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+JiBwYXJlbnRT
Y29wZVREWlZhcmlhYmxlcywgRUNNQU1vZGUgZWNtYU1vZGUpCitCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBNb2R1bGVQcm9ncmFtTm9kZSogbW9kdWxlUHJvZ3Jh
bU5vZGUsIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25T
ZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFJlZlB0cjxU
RFpFbnZpcm9ubWVudExpbms+JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgY29uc3QgUHJpdmF0
ZU5hbWVFbnZpcm9ubWVudCosIEVDTUFNb2RlIGVjbWFNb2RlKQogICAgIDogQnl0ZWNvZGVHZW5l
cmF0b3JCYXNlKG1ha2VVbmlxdWU8VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I+KHZtLCBjb2Rl
QmxvY2spLCBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxS
ZWdpc3RlcnMoKSkKICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2RlKGNvZGVHZW5lcmF0aW9uTW9k
ZSkKICAgICAsIG1fc2NvcGVOb2RlKG1vZHVsZVByb2dyYW1Ob2RlKQpAQCAtMTg5Myw4ICsxOTAw
LDEwIEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6Omluc3RhbnRpYXRlTGV4aWNhbFZhcmlhYmxl
cyhjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBsCiAKICAgICAgICAgICAgIC8vIEZJWE1FOiBv
bmx5IGRvIHRoaXMgaWYgdGhlcmUgaXMgYW4gZXZhbCgpIHdpdGhpbiBhIG5lc3RlZCBzY29wZSAt
LS0gb3RoZXJ3aXNlIGl0IGlzbid0IG5lZWRlZC4KICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY2NjMKLSAgICAgICAgICAgIGlmIChlbnRy
eS52YWx1ZS5pc1ByaXZhdGVOYW1lKCkpCi0gICAgICAgICAgICAgICAgc3ltYm9sVGFibGUtPmFk
ZFByaXZhdGVOYW1lKGVudHJ5LmtleS5nZXQoKSk7CisgICAgICAgICAgICBpZiAoZW50cnkudmFs
dWUuaXNQcml2YXRlRmllbGQoKSkKKyAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+YWRkUHJp
dmF0ZU5hbWUoZW50cnkua2V5LmdldCgpLCBQcml2YXRlTmFtZUVudHJ5KFByaXZhdGVOYW1lRW50
cnk6OlRyYWl0czo6SXNEZWNsYXJlZCkpOworICAgICAgICAgICAgZWxzZSBpZiAoZW50cnkudmFs
dWUuaXNQcml2YXRlTWV0aG9kKCkpCisgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUtPmFkZFBy
aXZhdGVOYW1lKGVudHJ5LmtleS5nZXQoKSwgUHJpdmF0ZU5hbWVFbnRyeShQcml2YXRlTmFtZUVu
dHJ5OjpUcmFpdHM6OklzRGVjbGFyZWQgfCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzTWV0
aG9kKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGhhc0NhcHR1cmVkVmFyaWFibGVz
OwpAQCAtMjcxNCw3ICsyNzIzLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmEKICAgICByZXR1
cm4gdmFsdWU7CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0
R2V0QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBw
cm9wZXJ0eSkKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0UHJpdmF0ZU5h
bWUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0
eSkKIHsKICAgICBPcEdldFByaXZhdGVOYW1lOjplbWl0KHRoaXMsIGRzdCwgYmFzZSwgcHJvcGVy
dHkpOwogICAgIHJldHVybiBkc3Q7CkBAIC0yNzUwLDEyICsyNzU5LDQ0IEBAIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVmaW5lUHJpdmF0ZUZpZWxkKFJlZ2lzdGVySUQqIGJh
c2UsIFJlZ2lzdGVyCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCit2b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0Q3JlYXRlUHJpdmF0ZUJyYW5kKFJlZ2lzdGVySUQqIHNjb3BlLCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCit7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNy
ZWF0ZVByaXZhdGVTeW1ib2wgPSBtb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGlt
ZUNvbnN0YW50OjpjcmVhdGVQcml2YXRlU3ltYm9sKTsKKworICAgIENhbGxBcmd1bWVudHMgYXJn
dW1lbnRzKCp0aGlzLCBudWxscHRyLCAwKTsKKyAgICBlbWl0TG9hZChhcmd1bWVudHMudGhpc1Jl
Z2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOworICAgIFJlZ2lzdGVySUQqIG5ld1N5bWJvbCA9IGVt
aXRDYWxsKGZpbmFsRGVzdGluYXRpb24obnVsbHB0ciwgY3JlYXRlUHJpdmF0ZVN5bWJvbC5nZXQo
KSksIGNyZWF0ZVByaXZhdGVTeW1ib2wuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgYXJndW1l
bnRzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQsIERlYnVnZ2FibGVDYWxsOjpObyk7CisK
KyAgICBWYXJpYWJsZSBwcml2YXRlQnJhbmRWYXIgPSB2YXJpYWJsZShwcm9wZXJ0eU5hbWVzKCku
YnVpbHRpbk5hbWVzKCkucHJpdmF0ZUJyYW5kUHJpdmF0ZU5hbWUoKSk7CisKKyAgICBlbWl0UHV0
VG9TY29wZShzY29wZSwgcHJpdmF0ZUJyYW5kVmFyLCBuZXdTeW1ib2wsIERvTm90VGhyb3dJZk5v
dEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6OkluaXRpYWxpemF0aW9uKTsKK30KKwordm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEluc3RhbGxQcml2YXRlQnJhbmQoUmVnaXN0ZXJJRCogdGFy
Z2V0KQoreworICAgIFZhcmlhYmxlIHByaXZhdGVCcmFuZFZhciA9IHZhcmlhYmxlKHByb3BlcnR5
TmFtZXMoKS5idWlsdGluTmFtZXMoKS5wcml2YXRlQnJhbmRQcml2YXRlTmFtZSgpKTsKKyAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZUJyYW5kVmFyU2NvcGUgPSBlbWl0UmVzb2x2ZVNjb3Bl
KG51bGxwdHIsIHByaXZhdGVCcmFuZFZhcik7CisgICAgUmVnaXN0ZXJJRCogcHJpdmF0ZUJyYW5k
U3ltYm9sID0gZW1pdEdldFByaXZhdGVCcmFuZChuZXdUZW1wb3JhcnkoKSwgcHJpdmF0ZUJyYW5k
VmFyU2NvcGUuZ2V0KCkpOworICAgIE9wU2V0UHJpdmF0ZUJyYW5kOjplbWl0KHRoaXMsIHRhcmdl
dCwgcHJpdmF0ZUJyYW5kU3ltYm9sKTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRHZXRQcml2YXRlQnJhbmQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzY29w
ZSkKK3sKKyAgICBWYXJpYWJsZSBwcml2YXRlQnJhbmRWYXIgPSB2YXJpYWJsZShwcm9wZXJ0eU5h
bWVzKCkuYnVpbHRpbk5hbWVzKCkucHJpdmF0ZUJyYW5kUHJpdmF0ZU5hbWUoKSk7CisgICAgcmV0
dXJuIGVtaXRHZXRGcm9tU2NvcGUoZHN0LCBzY29wZSwgcHJpdmF0ZUJyYW5kVmFyLCBUaHJvd0lm
Tm90Rm91bmQpOworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFByaXZh
dGVGaWVsZFB1dChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0
ZXJJRCogdmFsdWUpCiB7CiAgICAgT3BQdXRQcml2YXRlTmFtZTo6ZW1pdCh0aGlzLCBiYXNlLCBw
cm9wZXJ0eSwgdmFsdWUsIFByaXZhdGVGaWVsZFB1dEtpbmQ6OnNldCgpKTsKICAgICByZXR1cm4g
dmFsdWU7CiB9CiAKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDaGVja1ByaXZhdGVCcmFu
ZChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBicmFuZFN5bWJvbCkKK3sKKyAgICBPcENo
ZWNrUHJpdmF0ZUJyYW5kOjplbWl0KHRoaXMsIGJhc2UsIGJyYW5kU3ltYm9sKTsKK30KKwogdm9p
ZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFN1cGVyU2FtcGxlckJlZ2luKCkKIHsKICAgICBPcFN1
cGVyU2FtcGxlckJlZ2luOjplbWl0KHRoaXMpOwpAQCAtMjg5MCw2ICsyOTMxLDMyIEBAIHZvaWQg
Qnl0ZWNvZGVHZW5lcmF0b3I6OmxpZnRURFpDaGVja0lmUG9zc2libGUoY29uc3QgVmFyaWFibGUm
IHZhcmlhYmxlKQogICAgIH0KIH0KIAorYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6aXNQcml2YXRl
TWV0aG9kKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQoreworICAgIGZvciAodW5zaWduZWQgaSA9
IG1fcHJpdmF0ZU5hbWVzU3RhY2suc2l6ZSgpOyBpLS07ICkgeworICAgICAgICBhdXRvJiBtYXAg
PSBtX3ByaXZhdGVOYW1lc1N0YWNrW2ldOworICAgICAgICBhdXRvIGl0ID0gbWFwLmZpbmQoaWRl
bnQuaW1wbCgpKTsKKyAgICAgICAgaWYgKGl0ICE9IG1hcC5lbmQoKSkKKyAgICAgICAgICAgIHJl
dHVybiBpdC0+dmFsdWUuaXNNZXRob2QoKTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnB1c2hQcml2YXRlQWNjZXNzTmFtZXMoY29uc3Qg
UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogZW52aXJvbm1lbnQpCit7CisgICAgaWYgKCFlbnZpcm9u
bWVudCB8fCAhZW52aXJvbm1lbnQtPnNpemUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9w
cml2YXRlTmFtZXNTdGFjay5hcHBlbmQoKmVudmlyb25tZW50KTsKK30KKwordm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6cG9wUHJpdmF0ZUFjY2Vzc05hbWVzKCkKK3sKKyAgICBBU1NFUlQobV9wcml2
YXRlTmFtZXNTdGFjay5zaXplKCkpOworICAgIG1fcHJpdmF0ZU5hbWVzU3RhY2sucmVtb3ZlTGFz
dCgpOworfQorCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoVERaVmFyaWFibGVzKGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQmIGVudmlyb25tZW50LCBURFpDaGVja09wdGltaXphdGlvbiBv
cHRpbWl6YXRpb24sIFREWlJlcXVpcmVtZW50IHJlcXVpcmVtZW50KQogewogICAgIGlmICghZW52
aXJvbm1lbnQuc2l6ZSgpKQpAQCAtMjkxMSw2ICsyOTc4LDI4IEBAIHZvaWQgQnl0ZWNvZGVHZW5l
cmF0b3I6OnB1c2hURFpWYXJpYWJsZXMoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgZW52aXJv
bm1lbnQsCiAgICAgbV9URFpTdGFjay5hcHBlbmQoVERaU3RhY2tFbnRyeSB7IFdURk1vdmUobWFw
KSwgbnVsbHB0ciB9KTsKIH0KIAorT3B0aW9uYWw8UHJpdmF0ZU5hbWVFbnZpcm9ubWVudD4gQnl0
ZWNvZGVHZW5lcmF0b3I6OmdldEF2YWlsYWJsZVByaXZhdGVBY2Nlc3NOYW1lcygpCit7CisgICAg
UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCByZXN1bHQ7CisgICAgU21hbGxQdHJTZXQ8VW5pcXVlZFN0
cmluZ0ltcGwqLCAxNj4gZXhjbHVkZWROYW1lczsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3By
aXZhdGVOYW1lc1N0YWNrLnNpemUoKTsgaS0tOyApIHsKKyAgICAgICAgYXV0byYgbWFwID0gbV9w
cml2YXRlTmFtZXNTdGFja1tpXTsKKyAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1hcCkgIHsK
KyAgICAgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc1ByaXZhdGVNZXRob2RPckFjZXNzb3IoKSkg
eworICAgICAgICAgICAgICAgIGlmICghZXhjbHVkZWROYW1lcy5jb250YWlucyhlbnRyeS5rZXku
Z2V0KCkpKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoZW50cnkua2V5LCBlbnRy
eS52YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIGV4Y2x1ZGVkTmFtZXMuYWRkKGVudHJ5Lmtl
eS5nZXQoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICAgICAgZXhjbHVkZWROYW1lcy5hZGQoZW50cnkua2V5LmdldCgpKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGlmICghcmVzdWx0LnNpemUoKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5r
PiBCeXRlY29kZUdlbmVyYXRvcjo6Z2V0VmFyaWFibGVzVW5kZXJURFooKQogewogICAgIFJlZlB0
cjxURFpFbnZpcm9ubWVudExpbms+IHBhcmVudCA9IG1fY2FjaGVkUGFyZW50VERaOwpAQCAtMzEy
MCw5ICszMjA5LDkgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdNZXRo
b2REZWZpbml0aW9uKFJlZ2lzdGVySUQqIGRzdCwgTWV0aG9kRGUKIH0KIAogUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCog
ZHN0LCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBu
YW1lLAotICAgIGNvbnN0IElkZW50aWZpZXImIGVjbWFOYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBj
bGFzc1NvdXJjZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIpCisgICAgY29uc3QgSWRlbnRpZmllciYgZWNtYU5hbWUsIGNvbnN0IFNvdXJjZUNv
ZGUmIGNsYXNzU291cmNlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWly
ZW1lbnQpCiB7Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBt
X3ZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoY29uc3Ry
dWN0b3JLaW5kLCBuYW1lLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcik7CisgICAgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBtX3ZtLmJ1aWx0aW5FeGVjdXRhYmxl
cygpLT5jcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoY29uc3RydWN0b3JLaW5kLCBuYW1lLCBuZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplciwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOwogICAgIGV4
ZWN1dGFibGUtPnNldEludmFsaWRUeXBlUHJvZmlsaW5nT2Zmc2V0cygpOwogICAgIGV4ZWN1dGFi
bGUtPnNldEVjbWFOYW1lKGVjbWFOYW1lKTsKICAgICBleGVjdXRhYmxlLT5zZXRDbGFzc1NvdXJj
ZShjbGFzc1NvdXJjZSk7CkBAIC0zMTQ2LDEzICszMjM1LDE0IEBAIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0TmV3Q2xhc3NGaWVsZEluaXRpYWxpemVyRnVuY3Rpb24oUmVnaXN0
ZXJJRCoKICAgICB9CiAKICAgICBhdXRvIHZhcmlhYmxlc1VuZGVyVERaID0gZ2V0VmFyaWFibGVz
VW5kZXJURFooKTsKKyAgICBPcHRpb25hbDxQcml2YXRlTmFtZUVudmlyb25tZW50PiBwYXJlbnRQ
cml2YXRlTmFtZUVudmlyb25tZW50ID0gZ2V0QXZhaWxhYmxlUHJpdmF0ZUFjY2Vzc05hbWVzKCk7
CiAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6Q2xhc3NG
aWVsZEluaXRpYWxpemVyTW9kZTsKICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxp
dHkgPSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7CiAKICAgICBjb25zdCBib29s
IGFsd2F5c1N0cmljdEluQ2xhc3MgPSB0cnVlOwogICAgIEZ1bmN0aW9uTWV0YWRhdGFOb2RlIG1l
dGFkYXRhKHBhcnNlckFyZW5hKCksIEpTVG9rZW5Mb2NhdGlvbigpLCBKU1Rva2VuTG9jYXRpb24o
KSwgMCwgMCwgMCwgMCwgMCwgYWx3YXlzU3RyaWN0SW5DbGFzcywgQ29uc3RydWN0b3JLaW5kOjpO
b25lLCBzdXBlckJpbmRpbmcsIDAsIHBhcnNlTW9kZSwgZmFsc2UpOwogICAgIG1ldGFkYXRhLmZp
bmlzaFBhcnNpbmcobV9zY29wZU5vZGUtPnNvdXJjZSgpLCBJZGVudGlmaWVyKCksIEZ1bmN0aW9u
TW9kZTo6TWV0aG9kRGVmaW5pdGlvbik7Ci0gICAgYXV0byBpbml0aWFsaXplciA9IFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgpLCAm
bWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6
IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIHNjcmlwdE1vZGUoKSwg
V1RGTW92ZSh2YXJpYWJsZXNVbmRlclREWiksIG5ld0Rlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vKTsKKyAgICBhdXRvIGluaXRpYWxpemVyID0gVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCks
ICZtZXRhZGF0YSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9u
IDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwgc2NyaXB0TW9kZSgp
LCBXVEZNb3ZlKHZhcmlhYmxlc1VuZGVyVERaKSwgV1RGTW92ZShwYXJlbnRQcml2YXRlTmFtZUVu
dmlyb25tZW50KSwgbmV3RGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplcjo6Tm8sIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lKTsKICAgICBpbml0aWFsaXpl
ci0+c2V0Q2xhc3NGaWVsZExvY2F0aW9ucyhXVEZNb3ZlKGNsYXNzRmllbGRMb2NhdGlvbnMpKTsK
IAogICAgIHVuc2lnbmVkIGluZGV4ID0gbV9jb2RlQmxvY2stPmFkZEZ1bmN0aW9uRXhwcihpbml0
aWFsaXplcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggNTBiNTQ2NWY5Yjc1YjI4YjliY2I4ZDNkOGUxZTMz
OWUxYTdlMDMxMC4uYmJmYjU2ODE5OGY0NDQ1NTdkYTMxMzNjMjk2NjNjZDQyMDFlN2JlNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuaApAQCAtNDA4LDEwICs0MDgsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVi
bGljOgogICAgICAgICB0eXBlZGVmIERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrIEZ1
bmN0aW9uU3RhY2s7CiAKLSAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBQcm9ncmFtTm9k
ZSosIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayosIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1v
ZGU+LCBjb25zdCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiYsIEVDTUFNb2RlKTsKLSAgICAg
ICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBGdW5jdGlvbk5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFJlZlB0cjxU
RFpFbnZpcm9ubWVudExpbms+JiwgRUNNQU1vZGUpOwotICAgICAgICBCeXRlY29kZUdlbmVyYXRv
cihWTSYsIEV2YWxOb2RlKiwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVH
ZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+JiwgRUNNQU1v
ZGUpOwotICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIE1vZHVsZVByb2dyYW1Ob2RlKiwg
VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9u
TW9kZT4sIGNvbnN0IFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+JiwgRUNNQU1vZGUpOworICAg
ICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIFByb2dyYW1Ob2RlKiwgVW5saW5rZWRQcm9ncmFt
Q29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFJlZlB0cjxU
RFpFbnZpcm9ubWVudExpbms+JiwgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCosIEVDTUFN
b2RlKTsKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBGdW5jdGlvbk5vZGUqLCBVbmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNv
bnN0IFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+JiwgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9u
bWVudCosIEVDTUFNb2RlKTsKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBFdmFsTm9k
ZSosIFVubGlua2VkRXZhbENvZGVCbG9jayosIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+
LCBjb25zdCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiYsIGNvbnN0IFByaXZhdGVOYW1lRW52
aXJvbm1lbnQqLCBFQ01BTW9kZSk7CisgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgTW9k
dWxlUHJvZ3JhbU5vZGUqLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqLCBPcHRpb25T
ZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4m
LCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiwgRUNNQU1vZGUpOwogCiAgICAgICAgIH5C
eXRlY29kZUdlbmVyYXRvcigpOwogICAgICAgICAKQEAgLTQyNSwyMCArNDI1LDIxIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBib29sIG5lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4
dCgpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0OyB9
CiAgICAgICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlTm9kZS0+dXNl
c0V2YWwoKTsgfQogICAgICAgICBib29sIHVzZXNUaGlzKCkgY29uc3QgeyByZXR1cm4gbV9zY29w
ZU5vZGUtPnVzZXNUaGlzKCk7IH0KKyAgICAgICAgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+cHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQoKTsgfQogICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0
b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmNvbnN0cnVjdG9yS2luZCgpOyB9
CiAgICAgICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX2Nv
ZGVCbG9jay0+c3VwZXJCaW5kaW5nKCk7IH0KICAgICAgICAgSlNQYXJzZXJTY3JpcHRNb2RlIHNj
cmlwdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+c2NyaXB0TW9kZSgpOyB9CiAg
ICAgICAgIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyKCk7IH0KIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBOb2RlLCB0eXBlbmFtZSBVbmxp
bmtlZENvZGVCbG9jaz4KLSAgICAgICAgc3RhdGljIFBhcnNlckVycm9yIGdlbmVyYXRlKFZNJiB2
bSwgTm9kZSogbm9kZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgVW5saW5rZWRDb2Rl
QmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBj
b2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+JiBwYXJl
bnRTY29wZVREWlZhcmlhYmxlcywgRUNNQU1vZGUgZWNtYU1vZGUpCisgICAgICAgIHN0YXRpYyBQ
YXJzZXJFcnJvciBnZW5lcmF0ZShWTSYgdm0sIE5vZGUqIG5vZGUsIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZUNvZGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywgT3B0aW9u
U2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBSZWZQdHI8
VERaRW52aXJvbm1lbnRMaW5rPiYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIGNvbnN0IFByaXZh
dGVOYW1lRW52aXJvbm1lbnQqIHByaXZhdGVOYW1lRW52aXJvbm1lbnQsIEVDTUFNb2RlIGVjbWFN
b2RlKQogICAgICAgICB7CiAgICAgICAgICAgICBNb25vdG9uaWNUaW1lIGJlZm9yZTsKICAgICAg
ICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpyZXBvcnRCeXRlY29kZUNvbXBpbGVUaW1lcygp
KSkKICAgICAgICAgICAgICAgICBiZWZvcmUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKIAogICAg
ICAgICAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwotICAgICAgICAgICAgYXV0byBieXRl
Y29kZUdlbmVyYXRvciA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVHZW5lcmF0b3I+KHZtLCBub2RlLCB1
bmxpbmtlZENvZGVCbG9jaywgY29kZUdlbmVyYXRpb25Nb2RlLCBwYXJlbnRTY29wZVREWlZhcmlh
YmxlcywgZWNtYU1vZGUpOworICAgICAgICAgICAgYXV0byBieXRlY29kZUdlbmVyYXRvciA9IG1h
a2VVbmlxdWU8Qnl0ZWNvZGVHZW5lcmF0b3I+KHZtLCBub2RlLCB1bmxpbmtlZENvZGVCbG9jaywg
Y29kZUdlbmVyYXRpb25Nb2RlLCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgcHJpdmF0ZU5hbWVF
bnZpcm9ubWVudCwgZWNtYU1vZGUpOwogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBieXRlY29k
ZUdlbmVyYXRvci0+Z2VuZXJhdGUoKTsKIAogICAgICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlv
bnM6OnJlcG9ydEJ5dGVjb2RlQ29tcGlsZVRpbWVzKCkpKSB7CkBAIC03NzQsNyArNzc1LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uKFJl
Z2lzdGVySUQqIGRzdCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmNFeHByTm9k
ZSopOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKFJlZ2lz
dGVySUQqIGRzdCwgQ29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25z
dCBJZGVudGlmaWVyJiBlY21hTmFtZSwgY29uc3QgU291cmNlQ29kZSYgY2xhc3NTb3VyY2UsIE5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Rl
ZmF1bHRDb25zdHJ1Y3RvcihSZWdpc3RlcklEKiBkc3QsIENvbnN0cnVjdG9yS2luZCwgY29uc3Qg
SWRlbnRpZmllciYgbmFtZSwgY29uc3QgSWRlbnRpZmllciYgZWNtYU5hbWUsIGNvbnN0IFNvdXJj
ZUNvZGUmIGNsYXNzU291cmNlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3Q2xhc3NGaWVsZElu
aXRpYWxpemVyRnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+
JiYgY2xhc3NGaWVsZExvY2F0aW9ucywgYm9vbCBpc0Rlcml2ZWQpOwogICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCosIEFycm93RnVu
Y0V4cHJOb2RlKik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdNZXRob2REZWZpbml0aW9u
KFJlZ2lzdGVySUQqIGRzdCwgTWV0aG9kRGVmaW5pdGlvbk5vZGUqKTsKQEAgLTgxNSw3ICs4MTYs
NiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERpcmVjdFNldFBy
b3RvdHlwZU9mKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3RvdHlwZSk7CiAgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklE
KiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdGhpc1ZhbHVlLCBSZWdpc3Rl
cklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwotICAgICAgICBSZWdpc3RlcklEKiBl
bWl0RGlyZWN0R2V0QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdp
c3RlcklEKiBwcm9wZXJ0eSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREaXJlY3RQdXRCeVZh
bChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFs
dWUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGVsZXRlQnlWYWwoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSk7CiAKQEAgLTgyMyw2ICs4
MjMsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRJbnRl
cm5hbEZpZWxkKFJlZ2lzdGVySUQqIGJhc2UsIHVuc2lnbmVkIGluZGV4LCBSZWdpc3RlcklEKiB2
YWx1ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREZWZpbmVQcml2YXRlRmllbGQoUmVnaXN0
ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdFByaXZhdGVGaWVsZFB1dChSZWdpc3RlcklEKiBiYXNlLCBS
ZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOworICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0R2V0UHJpdmF0ZU5hbWUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNl
LCBSZWdpc3RlcklEKiBwcm9wZXJ0eSk7CisKKyAgICAgICAgdm9pZCBlbWl0Q3JlYXRlUHJpdmF0
ZUJyYW5kKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
RW5kKTsKKyAgICAgICAgdm9pZCBlbWl0SW5zdGFsbFByaXZhdGVCcmFuZChSZWdpc3RlcklEKiB0
YXJnZXQpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0UHJpdmF0ZUJyYW5kKFJlZ2lzdGVy
SUQqIGRzdCwgUmVnaXN0ZXJJRCogc2NvcGUpOworICAgICAgICB2b2lkIGVtaXRDaGVja1ByaXZh
dGVCcmFuZChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBicmFuZCk7CiAKICAgICAgICAg
dm9pZCBlbWl0U3VwZXJTYW1wbGVyQmVnaW4oKTsKICAgICAgICAgdm9pZCBlbWl0U3VwZXJTYW1w
bGVyRW5kKCk7CkBAIC0xMTc2LDE2ICsxMTgyLDE5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgRGVyaXZlZENvbnRleHRUeXBlIG5ld0Rlcml2ZWRDb250ZXh0VHlwZSA9IERlcml2ZWRD
b250ZXh0VHlwZTo6Tm9uZTsKIAogICAgICAgICAgICAgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSBtZXRhZGF0YS0+aXNDb25zdHJ1Y3RvckFu
ZE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkgPyBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
cjo6WWVzIDogTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vOworICAgICAgICAgICAgUHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBtZXRhZGF0YS0+
cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKTsKICAgICAgICAgICAgIGlmIChTb3VyY2VQYXJzZU1v
ZGVTZXQoU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSwgU291cmNlUGFyc2VNb2Rl
OjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlLCBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5j
dGlvbkJvZHlNb2RlKS5jb250YWlucyhtZXRhZGF0YS0+cGFyc2VNb2RlKCkpKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RXh0ZW5k
cyB8fCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSkgewogICAgICAgICAgICAgICAgICAg
ICBuZXdEZXJpdmVkQ29udGV4dFR5cGUgPSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRDb25z
dHJ1Y3RvckNvbnRleHQ7CiAgICAgICAgICAgICAgICAgICAgIG5lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyID0gbV9jb2RlQmxvY2stPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCk7CisgICAg
ICAgICAgICAgICAgICAgIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID0gbV9jb2RlQmxvY2stPnBy
aXZhdGVCcmFuZFJlcXVpcmVtZW50KCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKG1fY29kZUJsb2NrLT5pc0NsYXNzQ29udGV4dCgpIHx8IGlzRGVyaXZlZENs
YXNzQ29udGV4dCgpKQogICAgICAgICAgICAgICAgICAgICBuZXdEZXJpdmVkQ29udGV4dFR5cGUg
PSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRNZXRob2RDb250ZXh0OwogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBhdXRvIG9wdGlvbmFsVmFyaWFibGVzVW5kZXJURFogPSBnZXRWYXJp
YWJsZXNVbmRlclREWigpOworICAgICAgICAgICAgT3B0aW9uYWw8UHJpdmF0ZU5hbWVFbnZpcm9u
bWVudD4gcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCA9IGdldEF2YWlsYWJsZVByaXZhdGVB
Y2Nlc3NOYW1lcygpOwogCiAgICAgICAgICAgICAvLyBGSVhNRTogVGhlc2UgZmxhZ3MsIFBhcnNl
ck1vZGVzIGFuZCBwcm9wYWdhdGlvbiB0byBYWFhDb2RlQmxvY2tzIHNob3VsZCBiZSByZW9yZ2Fu
aXplZC4KICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTE1NDcKQEAgLTExOTQsMTAgKzEyMDMsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSAmJiBt
ZXRhZGF0YS0+Y29uc3RydWN0b3JLaW5kKCkgIT0gQ29uc3RydWN0b3JLaW5kOjpOb25lKQogICAg
ICAgICAgICAgICAgIGNvbnN0cnVjdEFiaWxpdHkgPSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25z
dHJ1Y3Q7CiAKLSAgICAgICAgICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgbWV0YWRhdGEsIGlzQnVpbHRpbkZ1
bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rp
b24sIGNvbnN0cnVjdEFiaWxpdHksIHNjcmlwdE1vZGUoKSwgV1RGTW92ZShvcHRpb25hbFZhcmlh
Ymxlc1VuZGVyVERaKSwgbmV3RGVyaXZlZENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplcik7CisgICAgICAgICAgICByZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6
OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksIG1ldGFkYXRhLCBpc0J1aWx0aW5G
dW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0
aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCBzY3JpcHRNb2RlKCksIFdURk1vdmUob3B0aW9uYWxWYXJp
YWJsZXNVbmRlclREWiksIFdURk1vdmUocGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCksIG5l
d0Rlcml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZhdGVC
cmFuZFJlcXVpcmVtZW50KTsKICAgICAgICAgfQogCiAgICAgICAgIFJlZlB0cjxURFpFbnZpcm9u
bWVudExpbms+IGdldFZhcmlhYmxlc1VuZGVyVERaKCk7CisgICAgICAgIE9wdGlvbmFsPFByaXZh
dGVOYW1lRW52aXJvbm1lbnQ+IGdldEF2YWlsYWJsZVByaXZhdGVBY2Nlc3NOYW1lcygpOwogCiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDb25zdHJ1Y3RWYXJhcmdzKFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogZnVuYywgUmVnaXN0ZXJJRCogdGhpc1JlZ2lzdGVyLCBSZWdpc3RlcklEKiBh
cmd1bWVudHMsIFJlZ2lzdGVySUQqIGZpcnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFy
QXJnT2Zmc2V0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIERlYnVnZ2Fi
bGVDYWxsKTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbE9wPgpAQCAtMTI1Myw2ICsx
MjYzLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgbV9sYXN0SW5zdHJ1Y3Rpb24g
PSBwcmV2TGFzdEluc3RydWN0aW9uOwogICAgICAgICB9CiAKKyAgICAgICAgYm9vbCBpc1ByaXZh
dGVNZXRob2QoY29uc3QgSWRlbnRpZmllciYpOworCisgICAgICAgIHZvaWQgcHVzaFByaXZhdGVB
Y2Nlc3NOYW1lcyhjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50Kik7CisgICAgICAgIHZvaWQg
cG9wUHJpdmF0ZUFjY2Vzc05hbWVzKCk7CisKICAgICBwcml2YXRlOgogICAgICAgICBPcHRpb25T
ZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBtX2NvZGVHZW5lcmF0aW9uTW9kZTsKIApAQCAtMTI2Niw2
ICsxMjgxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgUmVmUHRyPFREWkVudmlyb25t
ZW50TGluaz4gbV9jYWNoZWRQYXJlbnRURFo7CiAgICAgICAgIFZlY3RvcjxURFpTdGFja0VudHJ5
PiBtX1REWlN0YWNrOworICAgICAgICBWZWN0b3I8UHJpdmF0ZU5hbWVFbnZpcm9ubWVudD4gbV9w
cml2YXRlTmFtZXNTdGFjazsKICAgICAgICAgT3B0aW9uYWw8c2l6ZV90PiBtX3ZhclNjb3BlTGV4
aWNhbFNjb3BlU3RhY2tJbmRleDsKICAgICAgICAgdm9pZCBwdXNoVERaVmFyaWFibGVzKGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQmLCBURFpDaGVja09wdGltaXphdGlvbiwgVERaUmVxdWlyZW1l
bnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAKaW5kZXggMGUxYjk1ZjRmNmE4MjM0MDI5YzM2MmE2YjIzM2NlYjU2ZDQ2ZTAz
YS4uZmIwMjcyZjQxODJmNTNkMzg3N2EwNzMwMWFiYjFmNTJlODUyZmI0OCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAt
NTYzLDcgKzU2Myw3IEBAIHZvaWQgUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdERlY2xhcmVQcml2YXRl
RmllbGROYW1lcyhCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yCiAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGNyZWF0ZVByaXZhdGVTeW1ib2w7CiAgICAgZm9yIChQcm9wZXJ0eUxpc3ROb2RlKiBw
ID0gdGhpczsgcDsgcCA9IHAtPm1fbmV4dCkgewogICAgICAgICBjb25zdCBQcm9wZXJ0eU5vZGUm
IG5vZGUgPSAqcC0+bV9ub2RlOwotICAgICAgICBpZiAobm9kZS50eXBlKCkgJiBQcm9wZXJ0eU5v
ZGU6OlByaXZhdGUpIHsKKyAgICAgICAgaWYgKG5vZGUudHlwZSgpICYgUHJvcGVydHlOb2RlOjpQ
cml2YXRlRmllbGQpIHsKICAgICAgICAgICAgIGlmICghY3JlYXRlUHJpdmF0ZVN5bWJvbCkKICAg
ICAgICAgICAgICAgICBjcmVhdGVQcml2YXRlU3ltYm9sID0gZ2VuZXJhdG9yLm1vdmVMaW5rVGlt
ZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OmNyZWF0ZVByaXZhdGVTeW1ib2wp
OwogCkBAIC01ODksNyArNTg5LDcgQEAgUmVnaXN0ZXJJRCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGUKICAgICAgICAg
aWYgKHAtPmlzQ29tcHV0ZWRDbGFzc0ZpZWxkKCkpCiAgICAgICAgICAgICBlbWl0U2F2ZUNvbXB1
dGVkRmllbGROYW1lKGdlbmVyYXRvciwgKnAtPm1fbm9kZSk7CiAKLSAgICAgICAgaWYgKHAtPmlz
SW5zdGFuY2VDbGFzc0ZpZWxkKCkpIHsKKyAgICAgICAgaWYgKHAtPmlzSW5zdGFuY2VDbGFzc0Zp
ZWxkKCkgJiYgIShwLT5tX25vZGUtPnR5cGUoKSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0ZU1ldGhv
ZCkpIHsKICAgICAgICAgICAgIEFTU0VSVChpbnN0YW5jZUZpZWxkTG9jYXRpb25zKTsKICAgICAg
ICAgICAgIGluc3RhbmNlRmllbGRMb2NhdGlvbnMtPmFwcGVuZChwLT5wb3NpdGlvbigpKTsKICAg
ICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNzU3LDcgKzc1Nyw3IEBAIFJlZ2lzdGVySUQqIFByb3Bl
cnR5TGlzdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlCiB2b2lkIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRQdXRDb25zdGFudFByb3BlcnR5KEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIG5ld09iaiwgUHJvcGVydHlO
b2RlJiBub2RlKQogewogICAgIC8vIFByaXZhdGUgZmllbGRzIGFyZSBoYW5kbGVkIGluIGEgc3lu
dGhldGljIGNsYXNzRmllbGRJbml0aWFsaXplciBmdW5jdGlvbiwgbm90IGhlcmUuCi0gICAgQVNT
RVJUKCEobm9kZS50eXBlKCkgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGUpKTsKKyAgICBBU1NFUlQo
IShub2RlLnR5cGUoKSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0ZUZpZWxkKSk7CiAKICAgICBpZiAo
UHJvcGVydHlOb2RlOjppc1VuZGVyc2NvcmVQcm90b1NldHRlcihnZW5lcmF0b3Iudm0oKSwgbm9k
ZSkpIHsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3RvdHlwZSA9IGdlbmVyYXRvci5l
bWl0Tm9kZShub2RlLm1fYXNzaWduKTsKQEAgLTc4Miw2ICs3ODIsMTQgQEAgdm9pZCBQcm9wZXJ0
eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWcKIAogICAgIGlmIChub2RlLmlzQ2xhc3NQcm9wZXJ0eSgpKSB7CiAgICAgICAg
IEFTU0VSVChub2RlLm5lZWRzU3VwZXJCaW5kaW5nKCkpOworCisgICAgICAgIGlmIChub2RlLnR5
cGUoKSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0ZU1ldGhvZCkgeworICAgICAgICAgICAgVmFyaWFi
bGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKCpub2RlLm5hbWUoKSk7CisgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoZ2VuZXJhdG9yLnNjb3BlUmVnaXN0ZXIoKSwgdmFyLCB2
YWx1ZS5nZXQoKSwgRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6Q29u
c3RJbml0aWFsaXphdGlvbik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcGVydHlOYW1lUmVnaXN0ZXI7CiAgICAgICAgIGlm
IChub2RlLm5hbWUoKSkKICAgICAgICAgICAgIHByb3BlcnR5TmFtZSA9IGdlbmVyYXRvci5lbWl0
TG9hZChudWxscHRyLCAqbm9kZS5uYW1lKCkpOwogCkBAIC05MTAsMTQgKzkxOCwyNCBAQCBSZWdp
c3RlcklEKiBEb3RBY2Nlc3Nvck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcgogCiBSZWdpc3RlcklEKiBCYXNlRG90Tm9kZTo6ZW1pdEdldFBy
b3BlcnR5VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBiYXNlLCBSZWZQdHI8UmVnaXN0ZXJJRD4mIHRoaXNWYWx1ZSkKIHsKLSAg
ICBpZiAoaXNQcml2YXRlRmllbGQoKSkgeworICAgIGlmIChpc1ByaXZhdGVNZW1iZXIoKSkgewor
ICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzUHJpdmF0ZU1ldGhvZChpZGVudGlmaWVyKCkpKSB7Cisg
ICAgICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnRpZmllcigp
KTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0
UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CisKKyAgICAgICAgICAgIFJlZ2lzdGVySUQqIHBy
aXZhdGVCcmFuZFN5bWJvbCA9IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZUJyYW5kKGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRDaGVja1ByaXZhdGVCcmFuZChiYXNlLCBwcml2YXRlQnJhbmRTeW1ib2wpOworCisgICAgICAg
ICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZHN0LCBzY29wZS5nZXQoKSwg
dmFyLCBUaHJvd0lmTm90Rm91bmQpOworICAgICAgICB9CisKICAgICAgICAgVmFyaWFibGUgdmFy
ID0gZ2VuZXJhdG9yLnZhcmlhYmxlKG1faWRlbnQpOwogICAgICAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKCF2YXIubG9jYWwoKSwgIlByaXZhdGUgRmllbGQgbmFtZXMgbXVzdCBiZSBzdG9yZWQgaW4g
Y2FwdHVyZWQgdmFyaWFibGVzIik7CiAKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3Bl
ID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKICAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwog
ICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShwcml2YXRlTmFtZS5nZXQoKSwgc2Nv
cGUuZ2V0KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQpOwotICAgICAgICByZXR1cm4gZ2Vu
ZXJhdG9yLmVtaXREaXJlY3RHZXRCeVZhbChkc3QsIGJhc2UsIHByaXZhdGVOYW1lLmdldCgpKTsK
KyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZU5hbWUoZHN0LCBiYXNlLCBw
cml2YXRlTmFtZS5nZXQoKSk7CiAgICAgfQogCiAgICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUo
KSkgewpAQCAtOTM3LDcgKzk1NSwxOCBAQCBSZWdpc3RlcklEKiBCYXNlRG90Tm9kZTo6ZW1pdEdl
dFByb3BlcnR5VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaQogCiBSZWdp
c3RlcklEKiBCYXNlRG90Tm9kZTo6ZW1pdFB1dFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZWZQdHI8UmVn
aXN0ZXJJRD4mIHRoaXNWYWx1ZSkKIHsKLSAgICBpZiAoaXNQcml2YXRlRmllbGQoKSkgeworICAg
IGlmIChpc1ByaXZhdGVNZW1iZXIoKSkgeworICAgICAgICBhdXRvIGlkZW50aWZpZXJOYW1lID0g
aWRlbnRpZmllcigpOworICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzUHJpdmF0ZU1ldGhvZChpZGVu
dGlmaWVyTmFtZSkpIHsKKyAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJp
YWJsZShpZGVudGlmaWVyTmFtZSk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2Nv
cGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOworCisgICAgICAg
ICAgICBSZWdpc3RlcklEKiBwcml2YXRlQnJhbmRTeW1ib2wgPSBnZW5lcmF0b3IuZW1pdEdldFBy
aXZhdGVCcmFuZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpKTsKKyAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0Q2hlY2tQcml2YXRlQnJhbmQoYmFzZSwgcHJpdmF0ZUJyYW5k
U3ltYm9sKTsKKworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvd1R5cGVFcnJvcigiVHJ5
aW5nIHRvIGFjY2VzcyBhIG5vdCBkZWZpbmVkIHByaXZhdGUgc2V0dGVyIik7CisgICAgICAgIH0K
KwogICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUobV9pZGVudCk7CiAg
ICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXZhci5sb2NhbCgpLCAiUHJpdmF0ZSBGaWVsZCBu
YW1lcyBtdXN0IGJlIHN0b3JlZCBpbiBjYXB0dXJlZCB2YXJpYWJsZXMiKTsKIApAQCAtMTA5NSwx
MiArMTEyNCwxNCBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZQogICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRQdXRUaGlzVG9BcnJvd0Z1bmN0aW9uQ29udGV4dFNjb3BlKCk7CiAKICAgICAgICAg
Ly8gSW5pdGlhbGl6ZSBpbnN0YW5jZSBmaWVsZHMgYWZ0ZXIgc3VwZXItY2FsbC4KKyAgICAgICAg
aWYgKE9wdGlvbnM6OnVzZVByaXZhdGVNZXRob2RzKCkgJiYgZ2VuZXJhdG9yLnByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50KCkgPT0gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5lZWRlZCkKKyAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0SW5zdGFsbFByaXZhdGVCcmFuZChnZW5lcmF0b3IudGhpc1Jl
Z2lzdGVyKCkpOworCiAgICAgICAgIGlmIChnZW5lcmF0b3IubmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIoKSA9PSBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6WWVzKSB7CiAgICAgICAgICAg
ICBBU1NFUlQoZ2VuZXJhdG9yLmlzQ29uc3RydWN0b3IoKSB8fCBnZW5lcmF0b3IuaXNEZXJpdmVk
Q29uc3RydWN0b3JDb250ZXh0KCkpOwogICAgICAgICAgICAgZnVuYyA9IGdlbmVyYXRvci5lbWl0
TG9hZERlcml2ZWRDb25zdHJ1Y3RvcigpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRJbnN0
YW5jZUZpZWxkSW5pdGlhbGl6YXRpb25JZk5lZWRlZChnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCks
IGZ1bmMuZ2V0KCksIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAg
IH0KLQogICAgICAgICByZXR1cm4gcmV0OwogICAgIH0KIApAQCAtMjI1NCwxNCArMjI4NSwxNCBA
QCBSZWdpc3RlcklEKiBQb3N0Zml4Tm9kZTo6ZW1pdERvdChCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25J
bmZvKGRvdEFjY2Vzc29yLT5kaXZvdCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RTdGFydCgpLCBkb3RB
Y2Nlc3Nvci0+ZGl2b3RFbmQoKSk7CiAKLSAgICBpZiAoZG90QWNjZXNzb3ItPmlzUHJpdmF0ZUZp
ZWxkKCkpIHsKKyAgICBpZiAoZG90QWNjZXNzb3ItPmlzUHJpdmF0ZU1lbWJlcigpKSB7CiAgICAg
ICAgIEFTU0VSVCghYmFzZUlzU3VwZXIpOwogICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0
b3IudmFyaWFibGUoaWRlbnQpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBn
ZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwogICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAg
ICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHByaXZhdGVOYW1lLmdldCgpLCBzY29wZS5n
ZXQoKSwgdmFyLCBEb05vdFRocm93SWZOb3RGb3VuZCk7CiAKLSAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXREaXJlY3RHZXRCeVZhbChnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCksIGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpKTsKKyAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlTmFtZShnZW5l
cmF0b3IubmV3VGVtcG9yYXJ5KCksIGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpKTsKICAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG9sZFZhbHVlID0gZW1pdFBvc3RJbmNPckRlYyhnZW5l
cmF0b3IsIGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCksIG1fb3Bl
cmF0b3IpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRp
dm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJpdmF0ZUZp
ZWxkUHV0KGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpLCB2YWx1ZS5nZXQoKSk7CkBAIC0y
NDkzLDE0ICsyNTI0LDE0IEBAIFJlZ2lzdGVySUQqIFByZWZpeE5vZGU6OmVtaXREb3QoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogCiAgICAgZ2VuZXJhdG9y
LmVtaXRFeHByZXNzaW9uSW5mbyhkb3RBY2Nlc3Nvci0+ZGl2b3QoKSwgZG90QWNjZXNzb3ItPmRp
dm90U3RhcnQoKSwgZG90QWNjZXNzb3ItPmRpdm90RW5kKCkpOwogICAgIFJlZ2lzdGVySUQqIHZh
bHVlOwotICAgIGlmIChkb3RBY2Nlc3Nvci0+aXNQcml2YXRlRmllbGQoKSkgeworICAgIGlmIChk
b3RBY2Nlc3Nvci0+aXNQcml2YXRlTWVtYmVyKCkpIHsKICAgICAgICAgQVNTRVJUKCFiYXNlTm9k
ZS0+aXNTdXBlck5vZGUoKSk7CiAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJp
YWJsZShpZGVudCk7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRv
ci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CiAgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2
YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsKIAotICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5l
bWl0RGlyZWN0R2V0QnlWYWwocHJvcERzdC5nZXQoKSwgYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUu
Z2V0KCkpOworICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZU5hbWUocHJv
cERzdC5nZXQoKSwgYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCkpOwogICAgICAgICBlbWl0
SW5jT3JEZWMoZ2VuZXJhdG9yLCB2YWx1ZSwgbV9vcGVyYXRvcik7CiAgICAgICAgIGdlbmVyYXRv
ci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsK
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcml2YXRlRmllbGRQdXQoYmFzZS5nZXQoKSwgcHJpdmF0
ZU5hbWUuZ2V0KCksIHZhbHVlKTsKQEAgLTQ4OTcsNiArNDkyOCwxMyBAQCBSZWdpc3RlcklEKiBD
bGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRAogICAgIGlmIChtX25lZWRzTGV4aWNhbFNjb3BlKQogICAgICAgICBnZW5lcmF0
b3IucHVzaExleGljYWxTY29wZSh0aGlzLCBCeXRlY29kZUdlbmVyYXRvcjo6VERaQ2hlY2tPcHRp
bWl6YXRpb246Ok9wdGltaXplLCBCeXRlY29kZUdlbmVyYXRvcjo6TmVzdGVkU2NvcGVUeXBlOjpJ
c05lc3RlZCk7CiAKKyAgICBib29sIGhhc1ByaXZhdGVOYW1lcyA9ICEhbV9sZXhpY2FsVmFyaWFi
bGVzLnByaXZhdGVOYW1lc1NpemUoKTsKKyAgICBib29sIHNob3VsZEVtaXRQcml2YXRlQnJhbmQg
PSBtX2xleGljYWxWYXJpYWJsZXMuaGFzUHJpdmF0ZU1ldGhvZE9yQWNjZXNzb3IoKTsKKyAgICBp
ZiAoaGFzUHJpdmF0ZU5hbWVzKQorICAgICAgICBnZW5lcmF0b3IucHVzaFByaXZhdGVBY2Nlc3NO
YW1lcyhtX2xleGljYWxWYXJpYWJsZXMucHJpdmF0ZU5hbWVFbnZpcm9ubWVudCgpKTsKKyAgICBp
ZiAoc2hvdWxkRW1pdFByaXZhdGVCcmFuZCkKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRDcmVhdGVQ
cml2YXRlQnJhbmQoZ2VuZXJhdG9yLnNjb3BlUmVnaXN0ZXIoKSwgbV9wb3NpdGlvbiwgbV9wb3Np
dGlvbiwgbV9wb3NpdGlvbik7CisKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3VwZXJjbGFzczsK
ICAgICBpZiAobV9jbGFzc0hlcml0YWdlKSB7CiAgICAgICAgIHN1cGVyY2xhc3MgPSBnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCk7CkBAIC00OTA3LDE3ICs0OTQ1LDE4IEBAIFJlZ2lzdGVySUQqIENs
YXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklECiAgICAgYm9vbCBuZWVkc0hvbWVPYmplY3QgPSBmYWxzZTsKIAogICAgIGF1dG8g
bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSB0aGlzLT5oYXNJbnN0YW5jZUZpZWxkcygpID8g
TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6OlllcyA6IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyOjpObzsKLQorICAgIGF1dG8gcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBzaG91bGRFbWl0
UHJpdmF0ZUJyYW5kID8gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5lZWRlZCA6IFByaXZhdGVC
cmFuZFJlcXVpcmVtZW50OjpOb25lOwogICAgIGlmIChtX2NvbnN0cnVjdG9yRXhwcmVzc2lvbikg
ewogICAgICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvckV4cHJlc3Npb24tPmlzRnVuY0V4cHJOb2Rl
KCkpOwogICAgICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbWV0YWRhdGEgPSBzdGF0aWNfY2Fz
dDxGdW5jRXhwck5vZGUqPihtX2NvbnN0cnVjdG9yRXhwcmVzc2lvbiktPm1ldGFkYXRhKCk7CiAg
ICAgICAgIG1ldGFkYXRhLT5zZXRFY21hTmFtZShlY21hTmFtZSgpKTsKICAgICAgICAgbWV0YWRh
dGEtPnNldENsYXNzU291cmNlKG1fY2xhc3NTb3VyY2UpOwogICAgICAgICBtZXRhZGF0YS0+c2V0
TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIobmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPT0g
TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Olllcyk7CisgICAgICAgIG1ldGFkYXRhLT5zZXRQ
cml2YXRlQnJhbmRSZXF1aXJlbWVudChwcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7CiAgICAgICAg
IGNvbnN0cnVjdG9yID0gZ2VuZXJhdG9yLmVtaXROb2RlKGNvbnN0cnVjdG9yLmdldCgpLCBtX2Nv
bnN0cnVjdG9yRXhwcmVzc2lvbik7CiAgICAgICAgIG5lZWRzSG9tZU9iamVjdCA9IG1fY2xhc3NI
ZXJpdGFnZSB8fCBtZXRhZGF0YS0+c3VwZXJCaW5kaW5nKCkgPT0gU3VwZXJCaW5kaW5nOjpOZWVk
ZWQ7CiAgICAgfSBlbHNlCi0gICAgICAgIGNvbnN0cnVjdG9yID0gZ2VuZXJhdG9yLmVtaXROZXdE
ZWZhdWx0Q29uc3RydWN0b3IoY29uc3RydWN0b3IuZ2V0KCksIG1fY2xhc3NIZXJpdGFnZSA/IENv
bnN0cnVjdG9yS2luZDo6RXh0ZW5kcyA6IENvbnN0cnVjdG9yS2luZDo6QmFzZSwgbV9uYW1lLCBl
Y21hTmFtZSgpLCBtX2NsYXNzU291cmNlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcik7Cisg
ICAgICAgIGNvbnN0cnVjdG9yID0gZ2VuZXJhdG9yLmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3Io
Y29uc3RydWN0b3IuZ2V0KCksIG1fY2xhc3NIZXJpdGFnZSA/IENvbnN0cnVjdG9yS2luZDo6RXh0
ZW5kcyA6IENvbnN0cnVjdG9yS2luZDo6QmFzZSwgbV9uYW1lLCBlY21hTmFtZSgpLCBtX2NsYXNz
U291cmNlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQpOwogCiAgICAgY29uc3QgYXV0byYgcHJvcGVydHlOYW1lcyA9IGdlbmVyYXRvci5wcm9wZXJ0
eU5hbWVzKCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3RvdHlwZSA9IGdlbmVyYXRvci5l
bWl0TmV3T2JqZWN0KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSk7CkBAIC00OTk2LDYgKzUwMzUs
OSBAQCBSZWdpc3RlcklEKiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogICAgIGlmIChtX25lZWRzTGV4aWNhbFNjb3Bl
KQogICAgICAgICBnZW5lcmF0b3IucG9wTGV4aWNhbFNjb3BlKHRoaXMpOwogCisgICAgaWYgKGhh
c1ByaXZhdGVOYW1lcykKKyAgICAgICAgZ2VuZXJhdG9yLnBvcFByaXZhdGVBY2Nlc3NOYW1lcygp
OworCiAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9u
KGRzdCwgY29uc3RydWN0b3IuZ2V0KCkpLCBjb25zdHJ1Y3Rvci5nZXQoKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3Bw
CmluZGV4IDg3N2U2MzI1NTBiY2Q1MjA2MGE3NTQ1YWVmNTA4NmRjMTkzYTRmZGYuLjc0MGFkODJj
Nzk1NGEwZjk4MjgyMjgzNTY4YjEzZTE5Zjg0MWJmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcApAQCAtMjU5LDExICsy
NTksMTEgQEAgSlNWYWx1ZSBEZWJ1Z2dlckNhbGxGcmFtZTo6ZXZhbHVhdGVXaXRoU2NvcGVFeHRl
bnNpb24oY29uc3QgU3RyaW5nJiBzY3JpcHQsIEpTT2IKICAgICAgICAgZXZhbENvbnRleHRUeXBl
ID0gRXZhbENvbnRleHRUeXBlOjpOb25lOwogCiAgICAgVERaRW52aXJvbm1lbnQgdmFyaWFibGVz
VW5kZXJURFo7Ci0gICAgVmFyaWFibGVFbnZpcm9ubWVudCBwcml2YXRlTmFtZXM7Ci0gICAgSlNT
Y29wZTo6Y29sbGVjdENsb3N1cmVWYXJpYWJsZXNVbmRlclREWihzY29wZSgpLT5qc1Njb3BlKCks
IHZhcmlhYmxlc1VuZGVyVERaLCBwcml2YXRlTmFtZXMpOworICAgIFByaXZhdGVOYW1lRW52aXJv
bm1lbnQgcHJpdmF0ZU5hbWVFbnZpcm9ubWVudDsKKyAgICBKU1Njb3BlOjpjb2xsZWN0Q2xvc3Vy
ZVZhcmlhYmxlc1VuZGVyVERaKHNjb3BlKCktPmpzU2NvcGUoKSwgdmFyaWFibGVzVW5kZXJURFos
IHByaXZhdGVOYW1lRW52aXJvbm1lbnQpOwogCiAgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBjb2Rl
QmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0luU3RyaWN0Q29udGV4dCgpID8gRUNNQU1vZGU6
OnN0cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgpOwotICAgIGF1dG8qIGV2YWwgPSBEaXJlY3RF
dmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgbWFrZVNvdXJjZShzY3JpcHQsIGNh
bGxGcmFtZS0+Y2FsbGVyU291cmNlT3JpZ2luKHZtKSksIGNvZGVCbG9jay0+dW5saW5rZWRDb2Rl
QmxvY2soKS0+ZGVyaXZlZENvbnRleHRUeXBlKCksIGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxv
Y2soKS0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgY29kZUJsb2NrLT51bmxpbmtlZENv
ZGVCbG9jaygpLT5pc0Fycm93RnVuY3Rpb24oKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUo
KS0+aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKCksIGV2YWxDb250ZXh0VHlwZSwgJnZhcmlhYmxl
c1VuZGVyVERaLCAmcHJpdmF0ZU5hbWVzLCBlY21hTW9kZSk7CisgICAgYXV0byogZXZhbCA9IERp
cmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtYWtlU291cmNlKHNjcmlw
dCwgY2FsbEZyYW1lLT5jYWxsZXJTb3VyY2VPcmlnaW4odm0pKSwgY29kZUJsb2NrLT51bmxpbmtl
ZENvZGVCbG9jaygpLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgY29kZUJsb2NrLT51bmxpbmtlZENv
ZGVCbG9jaygpLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBjb2RlQmxvY2stPnVubGlu
a2VkQ29kZUJsb2NrKCktPnByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCksIGNvZGVCbG9jay0+dW5s
aW5rZWRDb2RlQmxvY2soKS0+aXNBcnJvd0Z1bmN0aW9uKCksIGNvZGVCbG9jay0+b3duZXJFeGVj
dXRhYmxlKCktPmlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbigpLCBldmFsQ29udGV4dFR5cGUsICZ2
YXJpYWJsZXNVbmRlclREWiwgJnByaXZhdGVOYW1lRW52aXJvbm1lbnQsIGVjbWFNb2RlKTsKICAg
ICBpZiAoVU5MSUtFTFkoY2F0Y2hTY29wZS5leGNlcHRpb24oKSkpIHsKICAgICAgICAgZXhjZXB0
aW9uID0gY2F0Y2hTY29wZS5leGNlcHRpb24oKTsKICAgICAgICAgY2F0Y2hTY29wZS5jbGVhckV4
Y2VwdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDdiNWI2ODQ1ODg1YTQ1ZDMyY2Y5MDIy
YzA5MGVhYWZlZTg3M2Q2YmQuLjQ2MGE2MGU0MjM5MDEwZDRmOWI0ZTRkNzlmYWFlN2FhZjI3ODMy
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBcnJh
eUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiQXJyYXlQcm90b3R5cGUuaCIKICNpbmNsdWRlICJD
YWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oIgorI2luY2x1ZGUgIkNoZWNrUHJpdmF0ZUJyYW5k
U3RhdHVzLmgiCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RJbnRlcnByZXRlci5oIgogI2luY2x1ZGUg
IkRGR0Fic3RyYWN0SW50ZXJwcmV0ZXJDbG9iYmVyU3RhdGUuaCIKICNpbmNsdWRlICJET01KSVRH
ZXR0ZXJTZXR0ZXIuaCIKQEAgLTQ3LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJNYXRoQ29tbW9uLmgi
CiAjaW5jbHVkZSAiTnVtYmVyQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVz
LmgiCisjaW5jbHVkZSAiU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmgiCiAjaW5jbHVkZSAiU3RyaW5n
T2JqZWN0LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlQ2FjaGUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1
cmVSYXJlRGF0YUlubGluZXMuaCIKQEAgLTQwMzUsNiArNDAzNyw4IEBAIGJvb2wgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNs
b2JiZXJMaW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgQ2hlY2tQcml2YXRl
QnJhbmQ6CisgICAgY2FzZSBTZXRQcml2YXRlQnJhbmQ6CiAgICAgY2FzZSBQdXRQcml2YXRlTmFt
ZTogewogICAgICAgICBjbG9iYmVyV29ybGQoKTsKICAgICAgICAgYnJlYWs7CkBAIC00MzY1LDYg
KzQzNjksOCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgRmlsdGVyUHV0QnlJ
ZFN0YXR1czoKICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRlckRl
bGV0ZUJ5U3RhdHVzOgorICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6Cisg
ICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAgY2FzZSBDbGVhckNhdGNo
TG9jYWxzOgogICAgICAgICBicmVhazsKIApAQCAtNDU1Myw2ICs0NTU5LDIxIEBAIHZvaWQgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmZpbHRlcklDU3RhdHVzKE5vZGUq
IG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2
YXRlQnJhbmRTdGF0dXM6IHsKKyAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2Rl
KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgaWYgKHZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRl
KCkpCisgICAgICAgICAgICBub2RlLT5jaGVja1ByaXZhdGVCcmFuZFN0YXR1cygpLT5maWx0ZXIo
dmFsdWUubV9zdHJ1Y3R1cmUudG9TdHJ1Y3R1cmVTZXQoKSk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKworICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOiB7CisgICAgICAgIEFi
c3RyYWN0VmFsdWUmIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIGlm
ICh2YWx1ZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgpKQorICAgICAgICAgICAgbm9kZS0+c2V0UHJp
dmF0ZUJyYW5kU3RhdHVzKCktPmZpbHRlcih2YWx1ZS5tX3N0cnVjdHVyZS50b1N0cnVjdHVyZVNl
dCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisKICAgICBkZWZhdWx0OgogICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhh
c2UuY3BwCmluZGV4IDZiMzYxOTk1ZTJkODU2Y2NjYzg0Yzk5NTJmZDBjZDNjY2I1M2FjOGYuLjZm
ODE3Mzg4YWMzOGZlNWFmZTAyMGU0MGYwNGUzNjczNTQxNTU2MzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNl
LmNwcApAQCAtNDA2LDYgKzQwNiw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBG
aWx0ZXJDYWxsTGlua1N0YXR1czoKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0
YXR1czoKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgorICAgICAg
ICAgICAgICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CisgICAgICAgICAg
ICAgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICAgY2FzZSBDaGVja0FycmF5T3JFbXB0eToKQEAg
LTEyNjYsNyArMTI2OCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJQ
dXRCeUlkU3RhdHVzOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6
CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6Ci0gICAgICAgICAgICAg
ICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czogeworICAgICAgICAgICAgICAgIGNhc2UgRmls
dGVyRGVsZXRlQnlTdGF0dXM6CisgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZh
dGVCcmFuZFN0YXR1czoKKyAgICAgICAgICAgICAgICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFu
ZFN0YXR1czogewogICAgICAgICAgICAgICAgICAgICBpZiAoIWlzRWxpbWluYXRlZEFsbG9jYXRp
b24obm9kZS0+Y2hpbGQxKCkubm9kZSgpKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUobV9ncmFwaCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGMzMDJiY2Vk
MDg5YzljNDNjMjlkZGY4ODFlYTI4NzcyNjQzZDc0MGQuLjM5M2MwNWIxOWUzNWMwOGEzOTQyNGU3
MTE5OTk1NDc2ODE0YWMwM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVP
cGVyYW5kc0ZvckNoZWNrcG9pbnQuaCIKICNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVySW5s
aW5lcy5oIgogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCisjaW5jbHVkZSAiQ2hlY2tQcml2
YXRlQnJhbmRTdGF0dXMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJDb2Rl
QmxvY2tXaXRoSklUVHlwZS5oIgogI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgpAQCAtNzQs
NiArNzUsNyBAQAogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRT
dGF0dXMuaCIKICNpbmNsdWRlICJSZWdFeHBQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJTZXRQcml2
YXRlQnJhbmRTdGF0dXMuaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgogI2luY2x1ZGUg
IlN0cmluZ0NvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlU3R1YkluZm8uaCIKQEAg
LTYyNTgsNiArNjI2MCw5MSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2ln
bmVkIGxpbWl0KQogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X2J5X3ZhbF93aXRoX3Ro
aXMpOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9jaGVja19wcml2YXRlX2JyYW5kOiB7
CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcENo
ZWNrUHJpdmF0ZUJyYW5kPigpOworICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29k
ZS5tX2Jhc2UpOworICAgICAgICAgICAgTm9kZSogYnJhbmQgPSBnZXQoYnl0ZWNvZGUubV9icmFu
ZCk7CisgICAgICAgICAgICBib29sIGNvbXBpbGVkQXNDaGVja1N0cnVjdHVyZSA9IGZhbHNlOwor
CisgICAgICAgICAgICBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyBjaGVja1N0YXR1cyA9IENoZWNr
UHJpdmF0ZUJyYW5kU3RhdHVzOjpjb21wdXRlRm9yKAorICAgICAgICAgICAgICAgIG1faW5saW5l
U3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKKyAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNr
VG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNrLAorICAgICAgICAgICAgICAgIGN1
cnJlbnRDb2RlT3JpZ2luKCkpOworCisgICAgICAgICAgICBpZiAoIW1faW5saW5lU3RhY2tUb3At
Pm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZElkZW50KQorICAg
ICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRT
aXRlKG1fY3VycmVudEluZGV4LCBCYWRUeXBlKQorICAgICAgICAgICAgICAgICYmICFtX2lubGlu
ZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRD
b25zdGFudFZhbHVlKSkgeworCisgICAgICAgICAgICAgICAgaWYgKENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnRpZmllciA9IGNoZWNrU3RhdHVzLnNpbmdsZUlkZW50aWZpZXIoKSkgeworICAgICAg
ICAgICAgICAgICAgICBtX2dyYXBoLmlkZW50aWZpZXJzKCkuZW5zdXJlKGlkZW50aWZpZXIudWlk
KCkpOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaWRlbnRpZmllci5pc1N5bWJvbCgpKTsK
KyAgICAgICAgICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plbiA9IG1fZ3JhcGguZnJlZXpl
U3Ryb25nKGlkZW50aWZpZXIuY2VsbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFw
aChDaGVja0lzQ29uc3RhbnQsIE9wSW5mbyhmcm96ZW4pLCBicmFuZCk7CisKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGNoZWNrU3RhdHVzLmlzU2ltcGxlKCkgJiYgY2hlY2tTdGF0dXMudmFyaWFu
dHMoKS5zaXplKCkgJiYgT3B0aW9uczo6dXNlQWNjZXNzSW5saW5pbmcoKSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKGNoZWNrU3RhdHVzLnZhcmlhbnRzKCkuc2l6ZSgpID09IDEp
OyAvLyBJZiB3ZSBoYXZlIHNpbmdsZSBpZGVudGlmaWVyLCB3ZSBzaG91bGQgaGF2ZSBvbmx5IDEg
dmFyaWFudC4KKyAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFu
dCB2YXJpYW50ID0gY2hlY2tTdGF0dXMudmFyaWFudHMoKVswXTsKKworICAgICAgICAgICAgICAg
ICAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1cywgT3BJbmZv
KG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMoKS5hZGRDaGVja1ByaXZhdGVCcmFuZFN0
YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBjaGVja1N0YXR1cykpLCBiYXNlKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBo
LmFkZFN0cnVjdHVyZVNldCh2YXJpYW50LnN0cnVjdHVyZVNldCgpKSksIGJhc2UpOworCisgICAg
ICAgICAgICAgICAgICAgICAgICBjb21waWxlZEFzQ2hlY2tTdHJ1Y3R1cmUgPSB0cnVlOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBpZiAoIWNvbXBpbGVkQXNDaGVja1N0cnVjdHVyZSkKKyAgICAgICAgICAgICAg
ICBhZGRUb0dyYXBoKENoZWNrUHJpdmF0ZUJyYW5kLCBiYXNlLCBicmFuZCk7CisKKyAgICAgICAg
ICAgIE5FWFRfT1BDT0RFKG9wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOworICAgICAgICB9CisKKyAg
ICAgICAgY2FzZSBvcF9zZXRfcHJpdmF0ZV9icmFuZDogeworICAgICAgICAgICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BTZXRQcml2YXRlQnJhbmQ+KCk7CisgICAg
ICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1fYmFzZSk7CisgICAgICAgICAgICBO
b2RlKiBicmFuZCA9IGdldChieXRlY29kZS5tX2JyYW5kKTsKKworICAgICAgICAgICAgYm9vbCBp
bmxpbmVkU2V0UHJpdmF0ZUJyYW5kID0gZmFsc2U7CisgICAgICAgICAgICBTZXRQcml2YXRlQnJh
bmRTdGF0dXMgc2V0U3RhdHVzID0gU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOjpjb21wdXRlRm9yKAor
ICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKKyAgICAg
ICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0
YWNrLAorICAgICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCkpOworCisgICAgICAgICAg
ICBpZiAoIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJy
ZW50SW5kZXgsIEJhZElkZW50KQorICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9w
LT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRUeXBlKQorICAg
ICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRT
aXRlKG1fY3VycmVudEluZGV4LCBCYWRDb25zdGFudFZhbHVlKSkgeworCisgICAgICAgICAgICAg
ICAgaWYgKENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IHNldFN0YXR1cy5zaW5nbGVJ
ZGVudGlmaWVyKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGlkZW50aWZpZXIuaXNT
eW1ib2woKSk7CisgICAgICAgICAgICAgICAgICAgIEZyb3plblZhbHVlKiBmcm96ZW4gPSBtX2dy
YXBoLmZyZWV6ZVN0cm9uZyhpZGVudGlmaWVyLmNlbGwoKSk7CisgICAgICAgICAgICAgICAgICAg
IGFkZFRvR3JhcGgoQ2hlY2tJc0NvbnN0YW50LCBPcEluZm8oZnJvemVuKSwgYnJhbmQpOworCisK
KyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBpbmNsdWRlIGEgTXVsdGlT
ZXRQcml2YXRlQnJhbmQgdG8gaGFuZGxlIHBvbHltb3JwaGljIGNhc2VzCisgICAgICAgICAgICAg
ICAgICAgIGlmIChzZXRTdGF0dXMuaXNTaW1wbGUoKSAmJiBzZXRTdGF0dXMudmFyaWFudHMoKS5z
aXplKCkgPT0gMSAmJiBPcHRpb25zOjp1c2VBY2Nlc3NJbmxpbmluZygpKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBTZXRQcml2YXRlQnJhbmRWYXJpYW50IHZhcmlhbnQgPSBzZXRTdGF0dXMu
dmFyaWFudHMoKVswXTsKKworICAgICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChGaWx0
ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0
YXR1c2VzKCkuYWRkU2V0UHJpdmF0ZUJyYW5kU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIHNl
dFN0YXR1cykpLCBiYXNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hl
Y2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldCh2YXJpYW50Lm9sZFN0
cnVjdHVyZSgpKSksIGJhc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHZhcmlh
bnQub2xkU3RydWN0dXJlKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRh
dGVkKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHZhcmlhbnQubmV3U3RydWN0
dXJlKCkpOworCisgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2l0aW9uKiB0cmFuc2l0aW9u
ID0gbV9ncmFwaC5tX3RyYW5zaXRpb25zLmFkZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQub2xkU3RydWN0dXJlKCkpLCBtX2dy
YXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpKTsKKworICAgICAg
ICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRTdHJ1Y3R1cmUsIE9wSW5mbyh0cmFuc2l0
aW9uKSwgYmFzZSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZWRTZXRQcml2YXRl
QnJhbmQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWlubGluZWRTZXRQcml2YXRlQnJhbmQp
CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChTZXRQcml2YXRlQnJhbmQsIGJhc2UsIGJyYW5k
KTsKKworICAgICAgICAgICAgTkVYVF9PUENPREUob3Bfc2V0X3ByaXZhdGVfYnJhbmQpOworICAg
ICAgICB9CisKICAgICAgICAgY2FzZSBvcF9wdXRfcHJpdmF0ZV9uYW1lOiB7CiAgICAgICAgICAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dFByaXZhdGVOYW1l
PigpOwogICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29kZS5tX2Jhc2UpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDEwYjg1
YWQ5MTVhOWJhYjIyZmZmNDUwMDYyYTEzMWFmZGE3NTZkYjMuLmFjYTAwZGU0ZjY1MWY5NGVhNDhj
OTRjNjg1OTllYTVkMjdlZGJjMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5jcHAKQEAgLTI5NCw2ICsyOTQsOCBAQCBDYXBhYmlsaXR5TGV2ZWwgY2Fw
YWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29u
c3QgSQogICAgIGNhc2Ugb3Bfc3VwZXJfc2FtcGxlcl9lbmQ6CiAgICAgY2FzZSBvcF9nZXRfcHJp
dmF0ZV9uYW1lOgogICAgIGNhc2Ugb3BfcHV0X3ByaXZhdGVfbmFtZToKKyAgICBjYXNlIG9wX3Nl
dF9wcml2YXRlX2JyYW5kOgorICAgIGNhc2Ugb3BfY2hlY2tfcHJpdmF0ZV9icmFuZDoKICAgICAg
ICAgcmV0dXJuIENhbkNvbXBpbGVBbmRJbmxpbmU7CiAKICAgICBjYXNlIG9wX3N3aXRjaF9zdHJp
bmc6IC8vIERvbid0IGlubGluZSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gY29weSBzdHJpbmcg
dGFibGVzIGluIHRoZSBjb25jdXJyZW50IEpJVC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyaXplLmgKaW5kZXggNTRlMzVlN2M1NjhhNTA2MTk2ZjEzZmE1OTY3NDgzZmU3YWU4
NDYwNi4uZGYyMWJkZTE4OGEwYmQ0Y2EyMTliYjVkMjU3MGUxOGY0MDdiODQxYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTUwNSw2ICs1MDUsOCBAQCB2
b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3Rv
ciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAg
ICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVz
OgorICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CisgICAgY2FzZSBGaWx0
ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAgICAgIHdyaXRlKFNpZGVTdGF0ZSk7CiAgICAg
ICAgIHJldHVybjsKICAgICAgICAgCkBAIC02NzcsNiArNjc5LDkgQEAgdm9pZCBjbG9iYmVyaXpl
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0
IFdyaXRlRnUKICAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKICAgICBjYXNlIEdldFByaXZh
dGVOYW1lOgogICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOgorICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgaGF2ZSBhIGJldHRlciBjbG9iZXJpemUgcnVsZSBmb3IgYm90aCBDaGVja1ByaXZhdGVC
cmFuZCBTZXRQcml2YXRlQnJhbmQKKyAgICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5kOgorICAgIGNh
c2UgU2V0UHJpdmF0ZUJyYW5kOgogICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OgogICAgIGNh
c2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICBjYXNlIERlbGV0ZUJ5SWQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCmluZGV4
IGI5NWYyNDM1MGJiNzU5ZGVkNjg5NmNmZTYzMDFlNGZiZTU5MGJjN2UuLjZmZDRhNzZiNjE4Zjg5
MmJhNTU3Yjk4M2QzZmU1NTMyNjRjNGQ4Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCkBAIC04NCw2ICs4NCw4IEBAIGJvb2wg
Y2xvYmJlcnNFeGl0U3RhdGUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgRmls
dGVyUHV0QnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKICAgICBjYXNl
IEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgorICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRT
dGF0dXM6CisgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAgY2FzZSBU
cnlHZXRCeUlkOgogICAgICAgICAvLyBUaGVzZSBkbyBjbG9iYmVyIG1lbW9yeSwgYnV0IG5vdGhp
bmcgdGhhdCBpcyBvYnNlcnZhYmxlLiBJdCBtYXkgYmUgbmljZSB0byBzZXBhcmF0ZSB0aGUKICAg
ICAgICAgLy8gaGVhcHMgaW50byB0aG9zZSB0aGF0IGFyZSBvYnNlcnZhYmxlIGFuZCB0aG9zZSB0
aGF0IGFyZW4ndCwgYnV0IHdlIGRvbid0IGRvIHRoYXQgcmlnaHQgbm93LgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IGU5OTNmYjA2MWFiMzlkMDY4NWMyMTEyY2U1
M2E2NDQ2MGFkN2ZlOWQuLmI3MTYxMGE1MWRiNzE3ZTUzZGJlNWU0OWIzY2FlNmJiMDc4NTI2NjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTI1MCw2ICsyNTAs
OCBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBGaWx0
ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgogICAgIGNhc2Ug
RmlsdGVyRGVsZXRlQnlTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0
YXR1czoKKyAgICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czoKICAgICBjYXNlIERh
dGVHZXRJbnQzMk9yTmFOOgogICAgIGNhc2UgRGF0ZUdldFRpbWU6CiAgICAgY2FzZSBEYXRhVmll
d0dldEludDoKQEAgLTMyNyw2ICszMjksOCBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUpCiAgICAgY2FzZSBQdXRQcml2YXRlTmFtZUJ5SWQ6CiAgICAgY2FzZSBHZXRQcml2
YXRlTmFtZToKICAgICBjYXNlIEdldFByaXZhdGVOYW1lQnlJZDoKKyAgICBjYXNlIFNldFByaXZh
dGVCcmFuZDoKKyAgICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5kOgogICAgIGNhc2UgUHV0U3RhY2s6
CiAgICAgY2FzZSBQdXRUb0FyZ3VtZW50czoKICAgICBjYXNlIFJlZ0V4cEV4ZWM6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCBjMmE0NWQwNDhkODc3
YTRjN2NhOGExMmRlMzI1N2IzYjUwODkzZTQzLi4xODFjYjJiNmY5Yzg3NDhjMjcxZDg1Y2E2M2E3
ZWEyOTQ5YzhhMzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKQEAgLTE5MzEsNiArMTkzMSwxMyBAQCBwcml2YXRlOgogICAgICAgICB9CiAKIAorICAg
ICAgICBjYXNlIFNldFByaXZhdGVCcmFuZDogeworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNl
Pihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPFN5bWJvbFVzZT4obm9kZS0+
Y2hpbGQyKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNl
IENoZWNrUHJpdmF0ZUJyYW5kOgogICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1lOiB7CiAgICAg
ICAgICAgICBmaXhFZGdlPFN5bWJvbFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAg
YnJlYWs7CkBAIC0yODI3LDYgKzI4MzQsOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEZpbHRl
clB1dEJ5SWRTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgogICAgICAg
ICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlckNoZWNrUHJp
dmF0ZUJyYW5kU3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1
czoKICAgICAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKICAgICAgICAgY2FzZSBDcmVhdGVB
cmd1bWVudHNCdXR0ZXJmbHk6CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguaAppbmRleCBiM2E5YmZmNWNkMmFhZTc5MjE0N2RlOGYyY2JhNWI0ZDYxN2Fh
ZmQ0Li45NzRmZmZjMmVlZjBkYzEzMjI3YjkxYjI2ZjE1YTFmZjRmMTAzMTllIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBAIC0xMTgyLDYgKzExODIsNyBAQCBwdWJsaWM6CiAg
ICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzeW1ib2xTdHJ1Y3R1cmU7CiAKICAgICBIYXNoU2V0PE5v
ZGUqPiBtX3Nsb3dHZXRCeVZhbDsKKyAgICBIYXNoU2V0PE5vZGUqPiBtX3ByaXZhdGVCcmFuZEFj
Y2VzczsKIAogcHJpdmF0ZToKICAgICBib29sIGlzU3RyaW5nUHJvdG90eXBlTWV0aG9kU2FuZShK
U0dsb2JhbE9iamVjdCosIFVuaXF1ZWRTdHJpbmdJbXBsKik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCmluZGV4IGQ4NmFjYTQxZDZjNDlkZmI2YTYxYzFj
NThjMzUzMWVmMWRlNjcwMWQuLjc4MjY0Y2VhMDE3NWM0ZDYyYTQyZWEwYzE1N2UwNDQxYjViNTgx
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCkBA
IC0yNDUsNiArMjQ1LDcgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5r
QnVmZmVyKQogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZGVsQnlWYWxzLCBsaW5rQnVmZmVy
KTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2luQnlJZHMsIGxpbmtCdWZmZXIpOwogICAg
IGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5zdGFuY2VPZnMsIGxpbmtCdWZmZXIpOworICAgIGZp
bmFsaXplSW5saW5lQ2FjaGVzKG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMsIGxpbmtCdWZmZXIpOwog
CiAgICAgYXV0byBsaW5rQ2FsbFRodW5rID0gRnVuY3Rpb25QdHI8Tm9QdHJUYWc+KHZtKCkuZ2V0
Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkp
OwogICAgIGZvciAoYXV0byYgcmVjb3JkIDogbV9qc0NhbGxzKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKaW5kZXggOTlmYmI4MmE4OGJjZmY0MzA1YzkzMzM3
YjRmYmUyMjlmZjMxNGUwZC4uODhkNjI3NjcyNDhlMTg4ZWYwMzc1OTYzZGMxNzJiZmM1NGJiZDgw
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaApAQCAtMjEy
LDYgKzIxMiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1faW5CeUlkcy5hcHBlbmQoSW5saW5lQ2Fj
aGVXcmFwcGVyPEpJVEluQnlJZEdlbmVyYXRvcj4oZ2VuLCBzbG93UGF0aCkpOwogICAgIH0KIAor
ICAgIHZvaWQgYWRkUHJpdmF0ZUJyYW5kQWNjZXNzKGNvbnN0IEpJVFByaXZhdGVCcmFuZEFjY2Vz
c0dlbmVyYXRvciYgZ2VuLCBTbG93UGF0aEdlbmVyYXRvciogc2xvd1BhdGgpCisgICAgeworICAg
ICAgICBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzLmFwcGVuZChJbmxpbmVDYWNoZVdyYXBwZXI8SklU
UHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yPihnZW4sIHNsb3dQYXRoKSk7CisgICAgfQorCiAg
ICAgdm9pZCBhZGRKU0NhbGwoQ2FsbCBmYXN0Q2FsbCwgQ2FsbCBzbG93Q2FsbCwgRGF0YUxhYmVs
UHRyIHRhcmdldFRvQ2hlY2ssIENhbGxMaW5rSW5mbyogaW5mbykKICAgICB7CiAgICAgICAgIG1f
anNDYWxscy5hcHBlbmQoSlNDYWxsUmVjb3JkKGZhc3RDYWxsLCBzbG93Q2FsbCwgdGFyZ2V0VG9D
aGVjaywgaW5mbykpOwpAQCAtMzYyLDYgKzM2Nyw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPElu
bGluZUNhY2hlV3JhcHBlcjxKSVREZWxCeVZhbEdlbmVyYXRvcj4sIDQ+IG1fZGVsQnlWYWxzOwog
ICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBwZXI8SklUSW5CeUlkR2VuZXJhdG9yPiwgND4gbV9p
bkJ5SWRzOwogICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBwZXI8SklUSW5zdGFuY2VPZkdlbmVy
YXRvcj4sIDQ+IG1faW5zdGFuY2VPZnM7CisgICAgVmVjdG9yPElubGluZUNhY2hlV3JhcHBlcjxK
SVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I+LCA0PiBtX3ByaXZhdGVCcmFuZEFjY2Vzc2Vz
OwogICAgIFZlY3RvcjxKU0NhbGxSZWNvcmQsIDQ+IG1fanNDYWxsczsKICAgICBWZWN0b3I8SlNE
aXJlY3RDYWxsUmVjb3JkLCA0PiBtX2pzRGlyZWN0Q2FsbHM7CiAgICAgVmVjdG9yPEpTRGlyZWN0
VGFpbENhbGxSZWNvcmQsIDQ+IG1fanNEaXJlY3RUYWlsQ2FsbHM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdNYXlFeGl0LmNwcAppbmRleCAwNWI5M2JlMDkxYWZhMWMxMTBlNWI4ZDM4YmRj
M2MxYWQzOTdjMTU1Li42N2JhMTg0NWQxNmJmODMzYmQ1NjkzMzNiOTVhODRjOGEyYmNlMjQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKQEAgLTEwOCw2ICsxMDgs
OCBAQCBFeGl0TW9kZSBtYXlFeGl0SW1wbChHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIFN0YXRl
VHlwZSYgc3RhdGUpCiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmls
dGVySW5CeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CisgICAgY2Fz
ZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlclNldFByaXZh
dGVCcmFuZFN0YXR1czoKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFN0ckNhdDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggMjYwNGM3ZTdhZDkzNDlmOTczYjAyNGNmOTJl
ZGVkZjEyYTM4YzFlNi4uNTg5M2JlODA2NjAxNjk5YjY3MDE0MGIyMWNlOWI3NGVhZjkzZDExYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2lu
Y2x1ZGUgIkIzU3BhcnNlQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkJhc2ljQmxvY2tMb2NhdGlv
bi5oIgorI2luY2x1ZGUgIkNoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudC5oIgogI2luY2x1ZGUgIkNv
ZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0FkamFjZW5jeUxpc3QuaCIKICNpbmNsdWRlICJERkdB
cml0aE1vZGUuaCIKQEAgLTU0LDYgKzU1LDcgQEAKICNpbmNsdWRlICJPcGVyYW5kcy5oIgogI2lu
Y2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQdXRCeUlkVmFyaWFudC5o
IgorI2luY2x1ZGUgIlNldFByaXZhdGVCcmFuZFZhcmlhbnQuaCIKICNpbmNsdWRlICJTcGVjdWxh
dGVkVHlwZS5oIgogI2luY2x1ZGUgIlR5cGVMb2NhdGlvbi5oIgogI2luY2x1ZGUgIlZhbHVlUHJv
ZmlsZS5oIgpAQCAtMzE0MCw2ICszMTQyLDI4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1f
b3BJbmZvLmFzPERlbGV0ZUJ5U3RhdHVzKj4oKTsKICAgICB9CiAKKyAgICBib29sIGhhc0NoZWNr
UHJpdmF0ZUJyYW5kU3RhdHVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBvcCgpID09IEZpbHRl
ckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOworICAgIH0KKworICAgIENoZWNrUHJpdmF0ZUJyYW5k
U3RhdHVzKiBjaGVja1ByaXZhdGVCcmFuZFN0YXR1cygpCisgICAgeworICAgICAgICBBU1NFUlQo
aGFzQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMoKSk7CisgICAgICAgIHJldHVybiBtX29wSW5mby5h
czxDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyo+KCk7CisgICAgfQorCisgICAgYm9vbCBoYXNTZXRQ
cml2YXRlQnJhbmRTdGF0dXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gRmlsdGVy
U2V0UHJpdmF0ZUJyYW5kU3RhdHVzOworICAgIH0KKworICAgIFNldFByaXZhdGVCcmFuZFN0YXR1
cyogc2V0UHJpdmF0ZUJyYW5kU3RhdHVzKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNTZXRQ
cml2YXRlQnJhbmRTdGF0dXMoKSk7CisgICAgICAgIHJldHVybiBtX29wSW5mby5hczxTZXRQcml2
YXRlQnJhbmRTdGF0dXMqPigpOworICAgIH0KKwogICAgIHZvaWQgZHVtcENoaWxkcmVuKFByaW50
U3RyZWFtJiBvdXQpCiAgICAgewogICAgICAgICBpZiAoIWNoaWxkMSgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDY0OTZjMTc4MDQxYzkxOWU5NDBhZjQ0NDg4
NWJkNGVkOWIxYzBjNTEuLjIzNzFmYmZkZGIyNzNmYjgxZDg3Y2VlNWEzNGU5YjA0MWYyNzkyZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTIxMiw2ICsyMTIs
OCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oUHV0QnlWYWxB
bGlhcywgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAgbWFjcm8oUHV0
UHJpdmF0ZU5hbWUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQdXRQcml2YXRlTmFt
ZUJ5SWQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhDaGVja1ByaXZhdGVCcmFuZCwg
Tm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKFNldFByaXZhdGVCcmFuZCwgTm9kZU11c3RH
ZW5lcmF0ZSkgXAogICAgIG1hY3JvKFRyeUdldEJ5SWQsIE5vZGVSZXN1bHRKUykgXAogICAgIG1h
Y3JvKEdldEJ5SWQsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNy
byhHZXRCeUlkRmx1c2gsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKQEAgLTU0
NCw2ICs1NDYsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8o
RmlsdGVySW5CeUlkU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oRmlsdGVy
UHV0QnlJZFN0YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEZpbHRlckRlbGV0
ZUJ5U3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oRmlsdGVyQ2hlY2tQcml2
YXRlQnJhbmRTdGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhGaWx0ZXJTZXRQ
cml2YXRlQnJhbmRTdGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICAvKiBEYXRhIHZpZXcg
YWNjZXNzICovIFwKICAgICBtYWNybyhEYXRhVmlld0dldEludCwgTm9kZU11c3RHZW5lcmF0ZSB8
IE5vZGVSZXN1bHRKUykgLyogVGhlIGdldHMgYXJlIG11c3QgZ2VuZXJhdGUgZm9yIG5vdyBiZWNh
dXNlIHRoZXkgZG8gYm91bmRzIGNoZWNrcyAqLyBcCiAgICAgbWFjcm8oRGF0YVZpZXdHZXRGbG9h
dCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHREb3VibGUpIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5n
UGhhc2UuY3BwCmluZGV4IDk5NTRkNTkxMjJlZmJiMTlmYjkwOGMxMTBmNmY3ZGJjNWM4NWQ1MjEu
LjdhNjllNGU4ZDVmZTU4ZTc1ODlhYjU1NTk5YWMzMzllZjBkMzRiMTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lu
a2luZ1BoYXNlLmNwcApAQCAtMTI2MSw2ICsxMjYxLDggQEAgcHJpdmF0ZToKICAgICAgICAgY2Fz
ZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoK
ICAgICAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJD
aGVja1ByaXZhdGVCcmFuZFN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJh
bmRTdGF0dXM6CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBkZWZhdWx0OgpAQCAtMjYx
MSw2ICsyNjEzLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlclB1dEJ5
SWRTdGF0dXM6CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CiAgICAg
ICAgICAgICAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKKyAgICAgICAgICAgICAgICBj
YXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOgorICAgICAgICAgICAgICAgIGNhc2Ug
RmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOgogICAgICAgICAgICAgICAgICAgICBpZiAobm9k
ZS0+Y2hpbGQxKCktPmlzUGhhbnRvbUFsbG9jYXRpb24oKSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIG5vZGUtPnJlbW92ZVdpdGhvdXRDaGVja3MoKTsKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IGFiMWZlOGFlY2ExMzljZGJhODc0MDhkNzgx
YzU4YTJjOTI5NDI1ZmQuLjVkNzNmYzcyODg3NzE5Yjk1YjMxZDlkNjlmMGE1M2I2ZDc4NWI3NDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0xMzg0LDYgKzEzODQsOCBAQCBwcml2YXRlOgog
ICAgICAgICBjYXNlIFB1dEJ5VmFsOgogICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgogICAg
ICAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKKyAgICAgICAgY2FzZSBTZXRQcml2YXRlQnJh
bmQ6CisgICAgICAgIGNhc2UgQ2hlY2tQcml2YXRlQnJhbmQ6CiAgICAgICAgIGNhc2UgUHV0Q2xv
c3VyZVZhcjoKICAgICAgICAgY2FzZSBQdXRJbnRlcm5hbEZpZWxkOgogICAgICAgICBjYXNlIFB1
dFRvQXJndW1lbnRzOgpAQCAtMTQ1MCw2ICsxNDUyLDggQEAgcHJpdmF0ZToKICAgICAgICAgY2Fz
ZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoK
ICAgICAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJD
aGVja1ByaXZhdGVCcmFuZFN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJh
bmRTdGF0dXM6CiAgICAgICAgIGNhc2UgQ2xlYXJDYXRjaExvY2FsczoKICAgICAgICAgY2FzZSBE
YXRhVmlld1NldDoKICAgICAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggYTRmNGM3NTc3NGFkN2U2
N2UwN2Y5Yzg0OTNmZjkwZDJiYjQ1NDc1Yi4uMDBhNDUxMzdhOGYxN2Q2OWZjZDhkZGQxYzE1Yzkz
Y2VhOWQ2NjRiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZl
VG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVj
dXRlLmgKQEAgLTM2Miw2ICszNjIsOCBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0
ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNh
c2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKICAg
ICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgorICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRl
QnJhbmRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAg
ICAgIC8vIFdlIGRvbid0IHdhbnQgdGhlc2UgdG8gYmUgbW92ZWQgYW55d2hlcmUgb3RoZXIgdGhh
biB3aGVyZSB3ZSBwdXQgdGhlbSwgc2luY2Ugd2Ugd2FudCB0aGVtCiAgICAgICAgIC8vIHRvIGNh
cHR1cmUgInByb2ZpbGluZyIgYXQgdGhlIHBvaW50IGluIGNvbnRyb2wgZmxvdyBoZXJlIHRoZSB1
c2VyIHB1dCB0aGVtLgogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01MzIsNiArNTM0LDggQEAg
Ym9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKICAg
ICBjYXNlIEdldFByaXZhdGVOYW1lOgogICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOgorICAg
IGNhc2UgQ2hlY2tQcml2YXRlQnJhbmQ6CisgICAgY2FzZSBTZXRQcml2YXRlQnJhbmQ6CiAgICAg
Y2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6CiAgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5
OgogICAgIGNhc2UgQXJyYXlpZnk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDBjMzM0MjI4ZjI0ODQ2NDQwM2FkMmNlZDhhZWU4Y2E2
ODVhNzAzMjUuLmZlMGExMTA5MmI5OTg1ZDk3ZGQ5MWY3NzZlMDA2YTRkYmUzNjlkZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0z
NjY3LDYgKzM2NjcsNzUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dFByaXZhdGVO
YW1lQnlJZChOb2RlKiBub2RlKQogICAgIG5vUmVzdWx0KG5vZGUpOwogfQogCit2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQoTm9kZSogbm9kZSkKK3sKKyAgICBK
U1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBicmFuZFZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKworICAgIEpTVmFs
dWVSZWdzIGJhc2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVncygpOworCisgICAgR1BSUmVnIGJyYW5k
R1BSID0gYnJhbmRWYWx1ZS5ncHIoKTsKKworICAgIHNwZWN1bGF0ZVN5bWJvbChub2RlLT5jaGls
ZDIoKSwgYnJhbmRHUFIpOworCisgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gbm9kZS0+b3Jp
Z2luLnNlbWFudGljOworICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRD
YWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9y
aWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CisgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9
IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93
Q2FzZXM7CisgICAgaWYgKG5lZWRzVHlwZUNoZWNrKG5vZGUtPmNoaWxkMSgpLCBTcGVjQ2VsbCkp
CisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdz
KSk7CisKKyAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IgZ2VuKAorICAgICAgICBt
X2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkNoZWNr
UHJpdmF0ZUJyYW5kLCB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBiYXNlUmVncywgSlNWYWx1ZVJl
Z3M6OnBheWxvYWRPbmx5KGJyYW5kR1BSKSk7CisKKyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCht
X2ppdCk7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOworCisgICAg
c3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2Fs
bCgKKyAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9w
dGltaXplLCBOb1Jlc3VsdCwKKyAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8o
KSwgYmFzZVJlZ3MsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJyYW5kR1BSKSk7CisKKyAgICBt
X2ppdC5hZGRQcml2YXRlQnJhbmRBY2Nlc3MoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CisgICAgYWRk
U2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOworCisgICAgbm9SZXN1bHQobm9k
ZSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTZXRQcml2YXRlQnJhbmQoTm9k
ZSogbm9kZSkKK3sKKyAgICBBU1NFUlQobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxV
c2UpOworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJyYW5kVmFsdWUodGhpcywgbm9kZS0+Y2hpbGQy
KCkpOworCisgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgIEdQUlJlZyBicmFu
ZEdQUiA9IGJyYW5kVmFsdWUuZ3ByKCk7CisKKyAgICBzcGVjdWxhdGVTeW1ib2wobm9kZS0+Y2hp
bGQyKCksIGJyYW5kR1BSKTsKKworICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IG5vZGUtPm9y
aWdpbi5zZW1hbnRpYzsKKyAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3Jk
Q2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVP
cmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOworICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMg
PSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CisKKyAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xv
d0Nhc2VzOworICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCisgICAgICAg
IG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6U2V0
UHJpdmF0ZUJyYW5kLCB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9h
ZE9ubHkoYmFzZUdQUiksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShicmFuZEdQUikpOworCisg
ICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOworICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2Vu
LnNsb3dQYXRoSnVtcCgpKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRv
cj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3Bl
cmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LCAKKyAgICAgICAgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29k
ZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQ
UiksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJyYW5kR1BSKSk7CisKKyAgICBtX2ppdC5hZGRQ
cml2YXRlQnJhbmRBY2Nlc3MoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CisgICAgYWRkU2xvd1BhdGhH
ZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOworCisgICAgbm9SZXN1bHQobm9kZSk7Cit9CisK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja1R5cGVJbmZvRmxhZ3MoTm9kZSogbm9k
ZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRl
eCAzYzY5MTJlM2Y4MWExNWM3ZDBhZDBhZDgxNzM3NGQ0NzRmYmQyMzNkLi5iOWFlNmUzZmFiYzQw
YWU0MzA5YTY4NGE3ZWNhM2E0YjViNDk2OWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xMzczLDYgKzEzNzMsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBjb21waWxlR2V0QnlWYWxXaXRoVGhpcyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxl
UHV0UHJpdmF0ZU5hbWUoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVB1dFByaXZhdGVOYW1lQnlJ
ZChOb2RlKik7CisgICAgdm9pZCBjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQoTm9kZSopOworICAg
IHZvaWQgY29tcGlsZVNldFByaXZhdGVCcmFuZChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlR2V0
QnlPZmZzZXQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVB1dEJ5T2Zmc2V0KE5vZGUqKTsKICAg
ICB2b2lkIGNvbXBpbGVNYXRjaFN0cnVjdHVyZShOb2RlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCAxZThiOGMy
OTZjNDAyNjA3NjM0NDhlMzY0MDM5NmI2OWE4NWQ4MTE1Li4wNzMyOTA3YTdmYzJkMDUyYTI2MTU2
ZjdiYmZlYjRhNTcxZWM3N2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTI2MDYsNiArMjYwNiwxNiBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAg
IH0KIAorICAgIGNhc2UgQ2hlY2tQcml2YXRlQnJhbmQ6IHsKKyAgICAgICAgY29tcGlsZUNoZWNr
UHJpdmF0ZUJyYW5kKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFNl
dFByaXZhdGVCcmFuZDogeworICAgICAgICBjb21waWxlU2V0UHJpdmF0ZUJyYW5kKG5vZGUpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgIGNh
c2UgUHV0QnlWYWw6CiAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOiB7CkBAIC00MjQxLDYgKzQyNTEs
OCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBG
aWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgogICAgIGNh
c2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFu
ZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czoKICAgICAgICAg
bV9pbnRlcnByZXRlci5maWx0ZXJJQ1N0YXR1cyhub2RlKTsKICAgICAgICAgbm9SZXN1bHQobm9k
ZSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggOWE5NzcyODFjYzdkOGZlN2I5ODQzMjc4ODE1ZWEx
NGQ0NjhmZGJjOS4uYmM5NDA1NzViYTg0NmEyN2VkMjg5Mjc1Y2Q1M2U2ODY2YzIxNWVlOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CkBAIC0yOTY0LDYgKzI5NjQsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIENoZWNrUHJpdmF0ZUJy
YW5kOiB7CisgICAgICAgIGNvbXBpbGVDaGVja1ByaXZhdGVCcmFuZChub2RlKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorCisgICAgY2FzZSBTZXRQcml2YXRlQnJhbmQ6IHsKKyAgICAgICAgY29t
cGlsZVNldFByaXZhdGVCcmFuZChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAg
Y2FzZSBQdXRCeVZhbERpcmVjdDoKICAgICBjYXNlIFB1dEJ5VmFsOgogICAgIGNhc2UgUHV0QnlW
YWxBbGlhczogewpAQCAtNTY3Nyw2ICs1Njg3LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICBjYXNl
IEZpbHRlckluQnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgorICAg
IGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJTZXRQ
cml2YXRlQnJhbmRTdGF0dXM6CiAgICAgICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVySUNTdGF0dXMo
bm9kZSk7CiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHAKaW5kZXggNzBlNzgzOThjMzZhMjg2OGZhZjcyN2M0OGVmMTM5MTJkOGQzOWE2
OC4uYjkwNjY1ZWNjZTUyYzU3ZjQ0YjcwZDQ2N2M0YTRlNWE1ZjM3MDJlMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHAKQEAgLTI3Myw2ICsyNzMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBjYXNlIFNldFByaXZhdGVCcmFu
ZDoKICAgICAgICAgICAgIGNhc2UgUHV0QnlJZDoKICAgICAgICAgICAgIGNhc2UgUHV0QnlJZEZs
dXNoOgogICAgICAgICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAKaW5kZXgg
NjY5ZTViYjgyMzY3M2NhZGJhNjliNWZmMjcyOWJjOGNkNDMzMTMzOS4uMDYzZWUzMWIwNTVkNjQw
NWJhYThlYTU4MWI4NzBkMmRhODZkZTAwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwCkBAIC0xOTksNiArMTk5
LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAg
ICAgICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKICAgICAgICAgICAgIGNhc2UgRmls
dGVyRGVsZXRlQnlTdGF0dXM6CisgICAgICAgICAgICBjYXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJy
YW5kU3RhdHVzOgorICAgICAgICAgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2UgR2V0QnlPZmZzZXQ6
IHsKQEAgLTQwMiw2ICs0MDQsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJD
YWxsTGlua1N0YXR1czoKICAgICAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgogICAg
ICAgICAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKKyAgICAgICAgICAgIGNhc2UgRmls
dGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CisgICAgICAgICAgICBjYXNlIEZpbHRlclNldFBy
aXZhdGVCcmFuZFN0YXR1czoKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkubm9k
ZSgpID09IGNhbmRpZGF0ZSkKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKG1fZ3Jh
cGgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDM1MjUzYjYwNGU0NzhkZjBhMjI4ZDNiMTNmNWNj
YTM1MjJiNDZiMjQuLjNkMTQ5MjUzZjZkNmI3ZDE2MjU3NTRiMDJkMGNjYjEyY2VmZTBmNDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTQw
MCwxMiArNDAwLDE2IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBu
b2RlKQogICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgogICAgIGNhc2UgR2V0UHJpdmF0ZU5h
bWU6CiAgICAgY2FzZSBHZXRQcml2YXRlTmFtZUJ5SWQ6CisgICAgY2FzZSBDaGVja1ByaXZhdGVC
cmFuZDoKKyAgICBjYXNlIFNldFByaXZhdGVCcmFuZDoKICAgICBjYXNlIE1hdGNoU3RydWN0dXJl
OgogICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0
YXR1czoKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJJbkJ5
SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKKyAgICBjYXNlIEZpbHRl
ckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0ZUJyYW5k
U3RhdHVzOgogICAgIGNhc2UgQ3JlYXRlVGhpczoKICAgICBjYXNlIENyZWF0ZVByb21pc2U6CiAg
ICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAKaW5kZXggZWExZjM3MjM5YzI4OWRmMTJjY2QzMWJlZjRmNTU5ZGJh
N2Y2MTA1Yy4uOGNkM2VjYzcyYWM0ZDkwZGI0Y2FmZDcwZTI3NTJmZWIzOGE3Mzg5ZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtOTYxLDYg
Kzk2MSwxMiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEluQnlWYWw6CiAgICAgICAgICAgICBj
b21waWxlSW5CeVZhbCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ2hlY2tQ
cml2YXRlQnJhbmQ6CisgICAgICAgICAgICBjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQoKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNldFByaXZhdGVCcmFuZDoKKyAgICAgICAg
ICAgIGNvbXBpbGVTZXRQcml2YXRlQnJhbmQoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIEhhc093blByb3BlcnR5OgogICAgICAgICAgICAgY29tcGlsZUhhc093blByb3BlcnR5
KCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE2MzgsNiArMTY0NCw4IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5
SWRTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CisgICAgICAgIGNh
c2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVyU2V0
UHJpdmF0ZUJyYW5kU3RhdHVzOgogICAgICAgICAgICAgY29tcGlsZUZpbHRlcklDU3RhdHVzKCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBEYXRlR2V0SW50MzJPck5hTjoKQEAg
LTQwODMsNiArNDA5MSw4MyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgfQogCisgICAgdm9p
ZCBjb21waWxlUHJpdmF0ZUJyYW5kQWNjZXNzKExWYWx1ZSBiYXNlLCBMVmFsdWUgYnJhbmQsIEFj
Y2Vzc1R5cGUgYWNjZXNzVHlwZSkKKyAgICB7CisgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7
CisgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQo
Vm9pZCk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihiYXNlKTsKKyAg
ICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGJyYW5kKTsKKyAgICAgICAgcGF0
Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86
Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVt
YmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOwor
ICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdp
c3RlcnMoKSk7CisKKyAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4
Y2VwdGlvbkhhbmRsZSA9IHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50
KTsKKworICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKKyAgICAgICAgYm9vbCBi
YXNlSXNDZWxsID0gYWJzdHJhY3RWYWx1ZShtX25vZGUtPmNoaWxkMSgpKS5pc1R5cGUoU3BlY0Nl
bGwpOworICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMm
IGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAg
ICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKwor
ICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0gc3RhdGUtPmppdENvZGUt
PmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChub2RlLT5vcmlnaW4u
c2VtYW50aWMpOworCisgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBkaXJlY3QgZXhpdCB0YXJn
ZXQgZm9yIG9wZXJhdGlvbiBjYWxscy4KKyAgICAgICAgICAgIEJveDxDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0PiBleGNlcHRpb25zID0gZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlv
bihwYXJhbXMpLT5qdW1wcyhqaXQpOworCisgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBleGl0
IGZvciBjYWxsIElDJ3MgY3JlYXRlZCBieSB0aGUgSUMgZm9yIGdldHRlcnMuIFdlIGRvbid0IGhh
dmUKKyAgICAgICAgICAgIC8vIHRvIGRvIGFueXRoaW5nIHdlaXJkIG90aGVyIHRoYW4gY2FsbCB0
aGlzLCBzaW5jZSBpdCB3aWxsIGFzc29jaWF0ZSB0aGUgZXhpdCB3aXRoCisgICAgICAgICAgICAv
LyB0aGUgY2FsbHNpdGUgaW5kZXguCisgICAgICAgICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVk
dWxlRXhpdENyZWF0aW9uRm9yVW53aW5kKHBhcmFtcywgY2FsbFNpdGVJbmRleCk7CisKKyAgICAg
ICAgICAgIEdQUlJlZyBiYXNlR1BSID0gcGFyYW1zWzBdLmdwcigpOworICAgICAgICAgICAgR1BS
UmVnIGJyYW5kR1BSID0gcGFyYW1zWzFdLmdwcigpOworCisgICAgICAgICAgICBhdXRvIGdlbmVy
YXRvciA9IEJveDxKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I+OjpjcmVhdGUoCisgICAg
ICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxT
aXRlSW5kZXgsIGFjY2Vzc1R5cGUsCisgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhicmFuZEdQUikp
OworCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm90Q2VsbDsKKyAgICAgICAgICAg
IGlmICghYmFzZUlzQ2VsbCkKKyAgICAgICAgICAgICAgICBub3RDZWxsID0gaml0LmJyYW5jaElm
Tm90Q2VsbChiYXNlR1BSKTsKKworICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQ
YXRoKGppdCk7CisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFi
ZWwoKTsKKworICAgICAgICAgICAgcGFyYW1zLmFkZExhdGVQYXRoKFs9XSAoQ0NhbGxIZWxwZXJz
JiBqaXQpIHsKKyAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2Ug
YWxsb3dTY3JhdGNoKGppdCk7CisKKyAgICAgICAgICAgICAgICBhdXRvIG9wZXJhdGlvblRvQ2Fs
bCA9IGFjY2Vzc1R5cGUgPT0gQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQgPyBvcGVyYXRp
b25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplIDogb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0
aW1pemU7CisKKyAgICAgICAgICAgICAgICBpZiAobm90Q2VsbC5pc1NldCgpKQorICAgICAgICAg
ICAgICAgICAgICBub3RDZWxsLmxpbmsoJmppdCk7CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOworICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOworICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAg
ICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQo
KSwgb3BlcmF0aW9uVG9DYWxsLCBJbnZhbGlkR1BSUmVnLAorICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAor
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9y
LT5zdHViSW5mbygpKSwgYmFzZUdQUiwgYnJhbmRHUFIpLmNhbGwoKTsKKyAgICAgICAgICAgICAg
ICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKKworICAgICAgICAgICAgICAgIGdlbmVy
YXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CisK
KyAgICAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVm
ZmVyKSB7CisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+ZmluYWxpemUobGlua0J1ZmZl
ciwgbGlua0J1ZmZlcik7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfSk7CisgICAgfQorCisgICAgdm9pZCBjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQoKQor
ICAgIHsKKyAgICAgICAgY29tcGlsZVByaXZhdGVCcmFuZEFjY2Vzcyhsb3dKU1ZhbHVlKG1fbm9k
ZS0+Y2hpbGQxKCkpLCBsb3dTeW1ib2wobV9ub2RlLT5jaGlsZDIoKSksIEFjY2Vzc1R5cGU6OkNo
ZWNrUHJpdmF0ZUJyYW5kKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVTZXRQcml2YXRlQnJh
bmQoKQorICAgIHsKKyAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+
Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgp
KTsKKyAgICAgICAgY29tcGlsZVByaXZhdGVCcmFuZEFjY2Vzcyhsb3dDZWxsKG1fbm9kZS0+Y2hp
bGQxKCkpLCBsb3dTeW1ib2wobV9ub2RlLT5jaGlsZDIoKSksIEFjY2Vzc1R5cGU6OlNldFByaXZh
dGVCcmFuZCk7CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlUHV0QnlJZFdpdGhUaGlzKCkKICAg
ICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCBiMDUxN2JkOTc3YzE0YjVhMzFj
ZjUwZWM1NmMyNWI2ZmQyNTY2ZDE1Li43ZWY5NTkxOTk1Y2VkZWVlYzdlMTZkNjgwYzI3ZGJmYTQ5
OTIwNWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5jcHAKQEAgLTE0NCw5ICsxNDQsOSBAQCBKU1ZhbHVlIGV2YWwoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEVDTUFNb2RlIGVjbWFNbwog
ICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBURFpFbnZpcm9ubWVudCB2YXJpYWJsZXNVbmRl
clREWjsKLSAgICAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBwcml2YXRlTmFtZXM7Ci0gICAgICAg
IEpTU2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFooY2FsbGVyU2NvcGVDaGFp
biwgdmFyaWFibGVzVW5kZXJURFosIHByaXZhdGVOYW1lcyk7Ci0gICAgICAgIGV2YWwgPSBEaXJl
Y3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgbWFrZVNvdXJjZShwcm9ncmFt
U291cmNlLCBjYWxsZXJDb2RlQmxvY2stPnNvdXJjZSgpLnByb3ZpZGVyKCktPnNvdXJjZU9yaWdp
bigpKSwgZGVyaXZlZENvbnRleHRUeXBlLCBjYWxsZXJVbmxpbmtlZENvZGVCbG9jay0+bmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgY2FsbGVyQ29k
ZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKCksIGV2
YWxDb250ZXh0VHlwZSwgJnZhcmlhYmxlc1VuZGVyVERaLCAmcHJpdmF0ZU5hbWVzLCBlY21hTW9k
ZSk7CisgICAgICAgIFByaXZhdGVOYW1lRW52aXJvbm1lbnQgcHJpdmF0ZU5hbWVFbnZpcm9ubWVu
dDsKKyAgICAgICAgSlNTY29wZTo6Y29sbGVjdENsb3N1cmVWYXJpYWJsZXNVbmRlclREWihjYWxs
ZXJTY29wZUNoYWluLCB2YXJpYWJsZXNVbmRlclREWiwgcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCk7
CisgICAgICAgIGV2YWwgPSBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGdsb2JhbE9iamVj
dCwgbWFrZVNvdXJjZShwcm9ncmFtU291cmNlLCBjYWxsZXJDb2RlQmxvY2stPnNvdXJjZSgpLnBy
b3ZpZGVyKCktPnNvdXJjZU9yaWdpbigpKSwgZGVyaXZlZENvbnRleHRUeXBlLCBjYWxsZXJVbmxp
bmtlZENvZGVCbG9jay0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgY2FsbGVyVW5saW5r
ZWRDb2RlQmxvY2stPnByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCksIGlzQXJyb3dGdW5jdGlvbkNv
bnRleHQsIGNhbGxlckNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5zaWRlT3JkaW5h
cnlGdW5jdGlvbigpLCBldmFsQ29udGV4dFR5cGUsICZ2YXJpYWJsZXNVbmRlclREWiwgJnByaXZh
dGVOYW1lRW52aXJvbm1lbnQsIGVjbWFNb2RlKTsKICAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCgh
IXNjb3BlLmV4Y2VwdGlvbigpID09ICFldmFsKTsKICAgICAgICAgaWYgKCFldmFsKQogICAgICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5k
ZXggYWNjMzRkMGVhOGJjMzRjOWNmMWJkMWE4MWIwNWZjZjQ3YzkwZDc5Mi4uNmEzZmJkNzZjNTFk
YTRkN2FkNWEwMmFkOTM5MjkzNTIxYTUzMDJkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cApAQCAtMzU4LDYgKzM1OCw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkK
ICAgICAgICAgREVGSU5FX09QKG9wX2dldF9ieV9pZF9kaXJlY3QpCiAgICAgICAgIERFRklORV9P
UChvcF9nZXRfYnlfdmFsKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X3ByaXZhdGVfbmFtZSkK
KyAgICAgICAgREVGSU5FX09QKG9wX3NldF9wcml2YXRlX2JyYW5kKQorICAgICAgICBERUZJTkVf
T1Aob3BfY2hlY2tfcHJpdmF0ZV9icmFuZCkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9wcm90
b3R5cGVfb2YpCiAgICAgICAgIERFRklORV9PUChvcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlKQog
ICAgICAgICBERUZJTkVfT1Aob3BfaW5zdGFuY2VvZikKQEAgLTUwOCw2ICs1MTAsNyBAQCB2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgIG1fZGVsQnlWYWxJbmRleCA9IDA7
CiAgICAgbV9kZWxCeUlkSW5kZXggPSAwOwogICAgIG1faW5zdGFuY2VPZkluZGV4ID0gMDsKKyAg
ICBtX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4ID0gMDsKICAgICBtX2J5VmFsSW5zdHJ1Y3Rpb25J
bmRleCA9IDA7CiAgICAgbV9jYWxsTGlua0luZm9JbmRleCA9IDA7CiAKQEAgLTU2NCw2ICs1Njcs
OCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJTkVf
U0xPV0NBU0VfT1Aob3BfZ2V0X2J5X2lkX2RpcmVjdCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNF
X09QKG9wX2dldF9ieV92YWwpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9nZXRfcHJp
dmF0ZV9uYW1lKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bfc2V0X3ByaXZhdGVfYnJh
bmQpCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9jaGVja19wcml2YXRlX2JyYW5kKQog
ICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfaW5zdGFuY2VvZikKICAgICAgICAgREVGSU5F
X1NMT1dDQVNFX09QKG9wX2luc3RhbmNlb2ZfY3VzdG9tKQogICAgICAgICBERUZJTkVfU0xPV0NB
U0VfT1Aob3Bfamxlc3MpCkBAIC02NTQsNiArNjU5LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlU2xvd0Nhc2VzKCkKICAgICBSRUxFQVNFX0FTU0VSVChtX3B1dEJ5SWRJbmRleCA9PSBtX3B1
dEJ5SWRzLnNpemUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9pbkJ5SWRJbmRleCA9PSBtX2lu
QnlJZHMuc2l6ZSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVChtX2luc3RhbmNlT2ZJbmRleCA9PSBt
X2luc3RhbmNlT2ZzLnNpemUoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQobV9wcml2YXRlQnJhbmRB
Y2Nlc3NJbmRleCA9PSBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzLnNpemUoKSk7CiAgICAgUkVMRUFT
RV9BU1NFUlQobV9jYWxsTGlua0luZm9JbmRleCA9PSBtX2NhbGxDb21waWxhdGlvbkluZm8uc2l6
ZSgpKTsKIAogICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5nKCkpCkBAIC05MDIsNiArOTA4LDcg
QEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpsaW5rKCkKICAgICBmaW5hbGl6ZUlubGluZUNhY2hl
cyhtX2RlbEJ5VmFscywgcGF0Y2hCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1f
aW5CeUlkcywgcGF0Y2hCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5zdGFu
Y2VPZnMsIHBhdGNoQnVmZmVyKTsKKyAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX3ByaXZhdGVC
cmFuZEFjY2Vzc2VzLCBwYXRjaEJ1ZmZlcik7CiAKICAgICBpZiAobV9ieVZhbENvbXBpbGF0aW9u
SW5mby5zaXplKCkpIHsKICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9uSGFuZGxl
clB0clRhZz4gZXhjZXB0aW9uSGFuZGxlciA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8RXhjZXB0
aW9uSGFuZGxlclB0clRhZz4obV9leGNlcHRpb25IYW5kbGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oCmluZGV4IDdjMzViNTY3MzQ3NzVlMzZlZmMzOTZkNTcyYjk5MjE1YzU5ZTZkZjIuLjJlYWQ1
NWRjMDU0YzA3MjYxMTBiODQ1YWQwOGM4N2I3YzNhOTg0MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaApAQCAtNTYzLDYgKzU2Myw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVt
aXRfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lk
IGVtaXRfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVt
aXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAg
dm9pZCBlbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAg
ICAgICAgdm9pZCBlbWl0X29wX2dldF9hcmd1bWVudF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9wcm90b3R5cGVfb2YoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKik7
CkBAIC02OTUsNiArNjk3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFNs
b3dfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwog
ICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1p
dFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY2hlY2tf
cHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYXJndW1lbnRfYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwog
ICAgICAgICB2b2lkIGVtaXRTbG93X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29w
X2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJik7CkBAIC05ODUsNiArOTg5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFZl
Y3RvcjxKSVREZWxCeUlkR2VuZXJhdG9yPiBtX2RlbEJ5SWRzOwogICAgICAgICBWZWN0b3I8SklU
RGVsQnlWYWxHZW5lcmF0b3I+IG1fZGVsQnlWYWxzOwogICAgICAgICBWZWN0b3I8SklUSW5zdGFu
Y2VPZkdlbmVyYXRvcj4gbV9pbnN0YW5jZU9mczsKKyAgICAgICAgVmVjdG9yPEpJVFByaXZhdGVC
cmFuZEFjY2Vzc0dlbmVyYXRvcj4gbV9wcml2YXRlQnJhbmRBY2Nlc3NlczsKICAgICAgICAgVmVj
dG9yPEJ5VmFsQ29tcGlsYXRpb25JbmZvPiBtX2J5VmFsQ29tcGlsYXRpb25JbmZvOwogICAgICAg
ICBWZWN0b3I8Q2FsbENvbXBpbGF0aW9uSW5mbz4gbV9jYWxsQ29tcGlsYXRpb25JbmZvOwogICAg
ICAgICBWZWN0b3I8SnVtcFRhYmxlPiBtX2ptcFRhYmxlOwpAQCAtMTAwOCw2ICsxMDEzLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuc2lnbmVkIG1fZGVsQnlWYWxJbmRleCB7IFVJTlRf
TUFYIH07CiAgICAgICAgIHVuc2lnbmVkIG1fZGVsQnlJZEluZGV4IHsgVUlOVF9NQVggfTsKICAg
ICAgICAgdW5zaWduZWQgbV9pbnN0YW5jZU9mSW5kZXggeyBVSU5UX01BWCB9OworICAgICAgICB1
bnNpZ25lZCBtX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4IHsgVUlOVF9NQVggfTsKICAgICAgICAg
dW5zaWduZWQgbV9ieVZhbEluc3RydWN0aW9uSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1
bnNpZ25lZCBtX2NhbGxMaW5rSW5mb0luZGV4IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWdu
ZWQgbV9ieXRlY29kZUNvdW50SGF2aW5nU2xvd0Nhc2UgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IDli
YzI2MjNiM2ZkNTA3ZGM5YWZjOThhNzcwMTg2ZjFlNTgxYjVjOGUuLjkxZWRjZjcyYzE4NmNlYjc4
MzUyNjFiNTZlZjFiOWE2ODFjZmY5OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC0zMjQsNiArMzI0LDM2IEBA
IHZvaWQgSklUR2V0QnlWYWxHZW5lcmF0b3I6OmZpbmFsaXplKAogICAgICAgICBmYXN0UGF0aCwg
c2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3Rh
cnQpKTsKIH0KIAorSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpKSVRQcml2YXRlQnJh
bmRBY2Nlc3NHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9y
aWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUs
IGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1Zh
bHVlUmVncyBicmFuZCkKKyAgICA6IEJhc2UoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0
ZUluZGV4LCBhY2Nlc3NUeXBlLCB1c2VkUmVnaXN0ZXJzKQoreworICAgIG1fc3R1YkluZm8tPmhh
c0NvbnN0YW50SWRlbnRpZmllciA9IGZhbHNlOworCisgICAgbV9zdHViSW5mby0+YmFzZUdQUiA9
IGJhc2UucGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8tPnJlZ3MuYnJhbmRHUFIgPSBicmFu
ZC5wYXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSBJbnZhbGlkR1BSUmVn
OworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgbV9zdHViSW5mby0+YmFzZVRhZ0dQUiA9IGJh
c2UudGFnR1BSKCk7CisgICAgbV9zdHViSW5mby0+di5icmFuZFRhZ0dQUiA9IGJyYW5kLnRhZ0dQ
UigpOworICAgIG1fc3R1YkluZm8tPnZhbHVlVGFnR1BSID0gSW52YWxpZEdQUlJlZzsKKyNlbmRp
ZgorfQorCit2b2lkIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0
UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQoreworICAgIG1fc3RhcnQgPSBqaXQubGFiZWwoKTsK
KyAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAgbV9kb25lID0g
aml0LmxhYmVsKCk7Cit9CisKK3ZvaWQgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpm
aW5hbGl6ZSgKKyAgICBMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgp
Cit7CisgICAgQVNTRVJUKG1fc3RhcnQuaXNTZXQoKSk7CisgICAgQmFzZTo6ZmluYWxpemUoCisg
ICAgICAgIGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91
dGluZVB0clRhZz4obV9zdGFydCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlm
IC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZUNhY2hlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZUNhY2hlR2VuZXJhdG9yLmgKaW5kZXggODUzODM1YTM5MzU4NTI5MTI3ZGUyZjM5N2I0OTc5
OTgyNGUzNmY2Yi4uZDZjYTZlMTZhM2YzMmM2NDBmOTZjYjI1NTE5NTU0OGIwZjJlYjY1MSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRv
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0
b3IuaApAQCAtMjQ2LDEyICsyNDYsMzYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBKU1ZhbHVl
UmVncyBtX2Jhc2U7CiAgICAgSlNWYWx1ZVJlZ3MgbV9yZXN1bHQ7Ci0gICAgSlNWYWx1ZVJlZ3Mg
bV87CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbV9zdGFydDsKICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6UGF0Y2hhYmxlSnVtcCBtX3Nsb3dQYXRoSnVtcDsKIH07CiAKK2NsYXNzIEpJVFByaXZh
dGVCcmFuZEFjY2Vzc0dlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7
CisgICAgdXNpbmcgQmFzZSA9IEpJVElubGluZUNhY2hlR2VuZXJhdG9yOworcHVibGljOgorICAg
IEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcigpIHsgfQorCisgICAgSklUUHJpdmF0ZUJy
YW5kQWNjZXNzR2VuZXJhdG9yKAorICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxs
U2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywK
KyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgYnJhbmQpOworCisgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgc2xvd1BhdGhKdW1wKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFT
U0VSVChtX3Nsb3dQYXRoSnVtcC5tX2p1bXAuaXNTZXQoKSk7CisgICAgICAgIHJldHVybiBtX3Ns
b3dQYXRoSnVtcC5tX2p1bXA7CisgICAgfQorCisgICAgdm9pZCBmaW5hbGl6ZSgKKyAgICAgICAg
TGlua0J1ZmZlciYgZmFzdFBhdGhMaW5rQnVmZmVyLCBMaW5rQnVmZmVyJiBzbG93UGF0aExpbmtC
dWZmZXIpOworICAgIAorICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYp
OworCitwcml2YXRlOgorICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX3N0YXJ0OworICAgIE1h
Y3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fc2xvd1BhdGhKdW1wOworfTsKKwogdGVtcGxh
dGU8dHlwZW5hbWUgVmVjdG9yVHlwZT4KIHZvaWQgZmluYWxpemVJbmxpbmVDYWNoZXMoVmVjdG9y
VHlwZSYgdmVjdG9yLCBMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgp
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCA2
Y2NhMWM5MjQ0OWFkYTRiYTMxYTY4YTkxOTc0MmI5ODEwYTEyOTU4Li45MTg1NzA1NTZmMGY5N2Ey
Y2Q2YTVjZTI3ZGE0MjhhOWQ0NzZjZGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAKQEAgLTEwOTQsNiArMTA5NCwxMDEgQEAgSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYywgdm9pZCwgKEpTR2xvYmFs
T2JqZWN0KgogICAgIGRpcmVjdFB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgYXNPYmplY3QoYmFzZVZh
bHVlKSwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvLCBlY21hTW9kZSk7CiB9CiAKK0pTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSwgdm9p
ZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHVi
SW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJyYW5kKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIGJhc2VW
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZVZhbHVlKTsKKyAgICBKU1ZhbHVlIGJy
YW5kID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCcmFuZCk7CisKKyAgICBBU1NFUlQoYmFzZVZh
bHVlLmlzT2JqZWN0KCkpOworICAgIEFTU0VSVChicmFuZC5pc1N5bWJvbCgpKTsKKworICAgIEpT
T2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKKyAgICBTdHJ1Y3R1cmUq
IG9sZFN0cnVjdHVyZSA9IGJhc2VPYmplY3QtPnN0cnVjdHVyZSh2bSk7CisgICAgYmFzZU9iamVj
dC0+c2V0UHJpdmF0ZUJyYW5kKGdsb2JhbE9iamVjdCwgYnJhbmQpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNh
bGxGcmFtZS0+Y29kZUJsb2NrKCk7CisgICAgaWYgKENhY2hlYWJsZUlkZW50aWZpZXI6OmlzQ2Fj
aGVhYmxlSWRlbnRpZmllckNlbGwoYnJhbmQpKSB7CisgICAgICAgIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21DZWxsKGJyYW5k
LmFzQ2VsbCgpKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeSh2bSwg
Y29kZUJsb2NrLCBiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLCBpZGVudGlmaWVyKSkKKyAgICAg
ICAgICAgIHJlcGF0Y2hTZXRQcml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJh
c2VPYmplY3QsIG9sZFN0cnVjdHVyZSwgaWRlbnRpZmllciwgKnN0dWJJbmZvKTsKKyAgICB9CisK
K30KKworSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblNldFByaXZhdGVCcmFuZEdl
bmVyaWMsIHZvaWQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCcmFuZCkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAg
ICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNW
YWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2VWYWx1ZSk7CisgICAg
SlNWYWx1ZSBicmFuZCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQnJhbmQpOworCisgICAgaWYg
KHN0dWJJbmZvKQorICAgICAgICBzdHViSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKKworICAg
IEFTU0VSVChiYXNlVmFsdWUuaXNPYmplY3QoKSk7CisgICAgQVNTRVJUKGJyYW5kLmlzU3ltYm9s
KCkpOworCisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwor
ICAgIGJhc2VPYmplY3QtPnNldFByaXZhdGVCcmFuZChnbG9iYWxPYmplY3QsIGJyYW5kKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworfQorCitKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSwgdm9pZCwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJy
YW5kKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblBy
b2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZVZhbHVlKTsKKyAgICBKU1ZhbHVlIGJyYW5kID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCcmFuZCk7CisKKyAgICBKU09iamVjdCogYmFzZU9iamVj
dCA9IGJhc2VWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBBU1NFUlQoYnJhbmQuaXNTeW1ib2woKSk7CisK
KyAgICBiYXNlT2JqZWN0LT5jaGVja1ByaXZhdGVCcmFuZChnbG9iYWxPYmplY3QsIGJyYW5kKTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgIGlmIChDYWNoZWFibGVJ
ZGVudGlmaWVyOjppc0NhY2hlYWJsZUlkZW50aWZpZXJDZWxsKGJyYW5kKSkgeworICAgICAgICBD
YWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVh
dGVGcm9tQ2VsbChicmFuZC5hc0NlbGwoKSk7CisgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lk
ZXJDYWNoaW5nQnkodm0sIGNvZGVCbG9jaywgYmFzZU9iamVjdC0+c3RydWN0dXJlKHZtKSwgaWRl
bnRpZmllcikpCisgICAgICAgICAgICByZXBhdGNoQ2hlY2tQcml2YXRlQnJhbmQoZ2xvYmFsT2Jq
ZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIGlkZW50aWZpZXIsICpzdHViSW5mbyk7CisgICAg
fQorfQorCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJh
bmRHZW5lcmljLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
U3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQnJhbmQpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAg
IEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOwor
ICAgIEpTVmFsdWUgYnJhbmQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJyYW5kKTsKKworICAg
IHN0dWJJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOworCisgICAgSlNPYmplY3QqIGJhc2VPYmpl
Y3QgPSBiYXNlVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgQVNTRVJUKGJyYW5kLmlzU3ltYm9sKCkpOwor
CisgICAgYmFzZU9iamVjdC0+Y2hlY2tQcml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0LCBicmFuZCk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKK30KKwogSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUsIHZvaWQsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBQcml2YXRlRmllbGRQdXRLaW5kIHB1dEtp
bmQpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTIyNzYsNiArMjM3
MSw4IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTVmFsdWUgZ2V0UHJpdmF0ZU5hbWUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgSlNWYWx1ZSgpKTsKIAogICAgIEpTT2JqZWN0KiBiYXNlID0gYmFzZVZhbHVlLnRvT2Jq
ZWN0KGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1
ZSgpKTsKKwogICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2UsIFByb3BlcnR5U2xvdDo6SW50ZXJu
YWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSk7CiAgICAgYmFzZS0+Z2V0UHJpdmF0ZUZpZWxk
KGdsb2JhbE9iamVjdCwgZmllbGROYW1lLCBzbG90KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBKU1ZhbHVlKCkpOwpAQCAtMjM4Miw3ICsyNDc5LDcgQEAgSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZE9wdGltaXplLCBFbmNvZGVkSlNW
YWx1ZSwgKEoKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzbG90LmdldFZhbHVlKGds
b2JhbE9iamVjdCwgZmllbGROYW1lKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShnZXRQcml2YXRlTmFtZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBm
aWVsZE5hbWUpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShnZXRQcml2YXRlTmFtZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBmaWVs
ZE5hbWUpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRQcml2
YXRlTmFtZUJ5SWRHZW5lcmljLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJZGVu
dGlmaWVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXgg
OTQyNWI1MTdmOThlZWY2M2UzNDlkMDc5NTFjMTk4MGVkZDU5OTE4OC4uMmZjM2E1YzY2MjAyNDY0
YTA0YmU0MjEwZGEyNjg0YjJmYmViMDFhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmgKQEAgLTE5Miw2ICsxOTIsMTEgQEAgSlNDX0RFQ0xBUkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUsIHZv
aWQKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0QnlJZFNldFByaXZhdGVG
aWVsZFN0cmljdCwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1
aW50cHRyX3QpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0QnlJZFNl
dFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkpOwogCitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkpOwor
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGlt
aXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRK
U1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25TZXRQcml2YXRlQnJhbmRHZW5lcmljLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkpOworSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZEdlbmVyaWMsIHZv
aWQsIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUs
IEVuY29kZWRKU1ZhbHVlKSk7CisKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
UHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgUHJpdmF0
ZUZpZWxkUHV0S2luZCkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRQ
cml2YXRlTmFtZUdlbmVyaWMsIHZvaWQsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIFByaXZhdGVGaWVs
ZFB1dEtpbmQpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0QnlWYWxP
cHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRK
U1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggMGJkOWZj
NjNhYTk4ZTBmNDlhZjY5ZTYwODc4NDE3NjU3NjY3YTQzZC4uN2EwYTE5NjY0OTc1NjQ3NWQwYzll
Mjk0MGMwNjczOGZjYzM4YzY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTE0Miw2ICsxNDIsNzkgQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmUKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwp
OwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wU2V0UHJpdmF0ZUJyYW5kPigpOworICAgIFZpcnR1YWxSZWdpc3Rl
ciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOworICAgIFZpcnR1YWxSZWdpc3RlciBicmFuZCA9IGJ5
dGVjb2RlLm1fYnJhbmQ7CisgICAgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKKyAgICBHUFJSZWcg
YnJhbmRHUFIgPSByZWdUMTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VH
UFIpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnJhbmQsIGJyYW5kR1BSKTsKKworICAg
IGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlR1BSLCBiYXNlKTsKKworICAgIEpJVFBy
aXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCisgICAgICAgIG1fY29kZUJsb2NrLCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwg
QWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhi
cmFuZEdQUikpOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBhZGRTbG93
Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMuYXBw
ZW5kKGdlbik7CisKKyAgICAvLyBXZSBzaG91bGQgZW1pdCB3cml0ZS1iYXJyaWVyIGF0IHRoZSBl
bmQgb2Ygc2VxdWVuY2Ugc2luY2Ugd3JpdGUtYmFycmllciBjbG9iYmVycyByZWdpc3RlcnMuCisg
ICAgLy8gSUMgY2FuIHdyaXRlIG5ldyBTdHJ1Y3R1cmUgd2l0aG91dCB3cml0ZS1iYXJyaWVyIGlm
IGEgYmFzZSBpcyBjZWxsLgorICAgIC8vIEZJWE1FOiBVc2UgVW5jb25kaXRpb25hbFdyaXRlQmFy
cmllciBpbiBCYXNlbGluZSBlZmZlY3RpdmVseSB0byByZWR1Y2UgY29kZSBzaXplLgorICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkzOTUKKyAgICBlbWl0
V3JpdGVCYXJyaWVyKGJhc2UsIFNob3VsZEZpbHRlckJhc2UpOworfQorCit2b2lkIEpJVDo6ZW1p
dFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIEdQUlJlZyBiYXNlR1BSID0gcmVn
VDA7CisgICAgR1BSUmVnIGJyYW5kR1BSID0gcmVnVDE7CisKKyAgICBsaW5rQWxsU2xvd0Nhc2Vz
KGl0ZXIpOworCisgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yJiBnZW4gPSBtX3By
aXZhdGVCcmFuZEFjY2Vzc2VzW21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXhdOworICAgICsrbV9w
cml2YXRlQnJhbmRBY2Nlc3NJbmRleDsKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwo
KTsKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNldFByaXZhdGVCcmFu
ZE9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdl
bi5zdHViSW5mbygpLCBiYXNlR1BSLCBicmFuZEdQUik7CisgICAgZ2VuLnJlcG9ydFNsb3dQYXRo
Q2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKK30KKwordm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tf
cHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQorewor
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQ2hlY2tQcml2YXRl
QnJhbmQ+KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7Cisg
ICAgVmlydHVhbFJlZ2lzdGVyIGJyYW5kID0gYnl0ZWNvZGUubV9icmFuZDsKKworICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoYnJhbmQsIHJlZ1QxKTsKKworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdU
MCwgYmFzZSk7CisKKyAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IgZ2VuKAorICAg
ICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUlu
ZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0ZUJyYW5kLCBSZWdp
c3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdz
KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpKTsKKyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgq
dGhpcyk7CisgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBtX3ByaXZh
dGVCcmFuZEFjY2Vzc2VzLmFwcGVuZChnZW4pOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
Y2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKKyAg
ICBHUFJSZWcgYnJhbmRHUFIgPSByZWdUMTsKKworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7
CisKKyAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJy
YW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleF07CisgICAgKyttX3ByaXZhdGVC
cmFuZEFjY2Vzc0luZGV4OworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAg
IENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRp
bWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1
YkluZm8oKSwgYmFzZUdQUiwgYnJhbmRHUFIpOworICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwo
Y29sZFBhdGhCZWdpbiwgY2FsbCk7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWxf
ZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1p
dF9vcF9wdXRfYnlfdmFsPE9wUHV0QnlWYWxEaXJlY3Q+KGN1cnJlbnRJbnN0cnVjdGlvbik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJf
NjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcAppbmRleCBiMTRhNTA2MzQ5NDUxNTkzODNlN2QwOWFiNWI5ZGU0YzM1MGRkZTgyLi5kODYx
NTFiNjMxMWY0ZGMyNmRjNDNmZGZkOTc1YjU2ZDZmNGU5NzhlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKQEAgLTM4MCw2
ICszODAsODAgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUKICAgICBtX2J5VmFsSW5zdHJ1Y3Rp
b25JbmRleCsrOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wU2V0UHJpdmF0ZUJyYW5kPigpOworICAgIFZpcnR1
YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOworICAgIFZpcnR1YWxSZWdpc3RlciBi
cmFuZCA9IGJ5dGVjb2RlLm1fYnJhbmQ7CisgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MocmVnVDEs
IHJlZ1QwKTsKKyAgICBKU1ZhbHVlUmVncyBicmFuZFJlZ3MocmVnVDMsIHJlZ1QyKTsKKyAgICBl
bWl0TG9hZChiYXNlLCBiYXNlUmVncy50YWdHUFIoKSwgYmFzZVJlZ3MucGF5bG9hZEdQUigpKTsK
KyAgICBlbWl0TG9hZChicmFuZCwgYnJhbmRSZWdzLnRhZ0dQUigpLCBicmFuZFJlZ3MucGF5bG9h
ZEdQUigpKTsKKworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCBiYXNlUmVn
cy50YWdHUFIoKSk7CisKKyAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IgZ2VuKAor
ICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0
ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVCcmFuZCwgUmVn
aXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBiYXNlUmVncywg
YnJhbmRSZWdzKTsKKyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgYWRkU2xv
d0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzLmFw
cGVuZChnZW4pOworCisgICAgLy8gV2Ugc2hvdWxkIGVtaXQgd3JpdGUtYmFycmllciBhdCB0aGUg
ZW5kIG9mIHNlcXVlbmNlIHNpbmNlIHdyaXRlLWJhcnJpZXIgY2xvYmJlcnMgcmVnaXN0ZXJzLgor
ICAgIC8vIElDIGNhbiB3cml0ZSBuZXcgU3RydWN0dXJlIHdpdGhvdXQgd3JpdGUtYmFycmllciBp
ZiBhIGJhc2UgaXMgY2VsbC4KKyAgICAvLyBGSVhNRTogVXNlIFVuY29uZGl0aW9uYWxXcml0ZUJh
cnJpZXIgaW4gQmFzZWxpbmUgZWZmZWN0aXZlbHkgdG8gcmVkdWNlIGNvZGUgc2l6ZS4KKyAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5Mzk1CisgICAgZW1p
dFdyaXRlQmFycmllcihiYXNlLCBTaG91bGRGaWx0ZXJCYXNlKTsKK30KKwordm9pZCBKSVQ6OmVt
aXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBKU1ZhbHVlUmVncyBiYXNlUmVn
cyhyZWdUMSwgcmVnVDApOworICAgIEpTVmFsdWVSZWdzIGJyYW5kUmVncyhyZWdUMywgcmVnVDIp
OworCisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKworICAgIEpJVFByaXZhdGVCcmFuZEFj
Y2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFu
ZEFjY2Vzc0luZGV4XTsKKyAgICArK21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXg7CisgICAgTGFi
ZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgYmFzZVJlZ3MsIGJyYW5kUmVn
cyk7CisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKK30K
Kwordm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wQ2hlY2tQcml2YXRlQnJhbmQ+KCk7CisgICAgVmlydHVhbFJlZ2lzdGVy
IGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJyYW5kID0gYnl0
ZWNvZGUubV9icmFuZDsKKyAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyhyZWdUMSwgcmVnVDApOwor
ICAgIEpTVmFsdWVSZWdzIGJyYW5kUmVncyhyZWdUMywgcmVnVDIpOworICAgIGVtaXRMb2FkKGJh
c2UsIGJhc2VSZWdzLnRhZ0dQUigpLCBiYXNlUmVncy5wYXlsb2FkR1BSKCkpOworICAgIGVtaXRM
b2FkKGJyYW5kLCBicmFuZFJlZ3MudGFnR1BSKCksIGJyYW5kUmVncy5wYXlsb2FkR1BSKCkpOwor
CisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIGJhc2VSZWdzLnRhZ0dQUigp
KTsKKworICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCisgICAgICAgIG1f
Y29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9i
eXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0
OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgYmFzZVJlZ3MsIGJyYW5kUmVn
cyk7CisgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgIGFkZFNsb3dDYXNlKGdl
bi5zbG93UGF0aEp1bXAoKSk7CisgICAgbV9wcml2YXRlQnJhbmRBY2Nlc3Nlcy5hcHBlbmQoZ2Vu
KTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3Qg
SW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQorewor
ICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzKHJlZ1QxLCByZWdUMCk7CisgICAgSlNWYWx1ZVJlZ3Mg
YnJhbmRSZWdzKHJlZ1QzLCByZWdUMik7CisKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwor
CisgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yJiBnZW4gPSBtX3ByaXZhdGVCcmFu
ZEFjY2Vzc2VzW21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXhdOworICAgICsrbV9wcml2YXRlQnJh
bmRBY2Nlc3NJbmRleDsKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBD
YWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1p
emUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJ
bmZvKCksIGJhc2VSZWdzLCBicmFuZFJlZ3MpOworICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwo
Y29sZFBhdGhCZWdpbiwgY2FsbCk7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWxf
ZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1p
dF9vcF9wdXRfYnlfdmFsPE9wUHV0QnlWYWxEaXJlY3Q+KGN1cnJlbnRJbnN0cnVjdGlvbik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCA1N2I2YzEzM2Y4ZjI3ZDNiZDMw
ZDVjYTM5NDE3Y2RjOTkyMjViYzE4Li4xOTZjNzUwNTk1NDk2OTE4OTRlMzViMDFjMDYxNDcwNDk3
NTY5ZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTEwMDUsNiAr
MTAwNSwxMTAgQEAgdm9pZCByZXBhdGNoSW5CeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU09iamVjdCoKICAgICAgICAgZnRsVGh1bmtBd2Fy
ZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9w
ZXJhdGlvbkluQnlJZCk7CiB9CiAKK3N0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUNo
ZWNrUHJpdmF0ZUJyYW5kKAorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVC
bG9jayogY29kZUJsb2NrLCBKU09iamVjdCogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBicmFu
ZElELAorICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCByZXN1bHQ7Cisg
ICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIGJyYW5kSUQudWlk
KCkpOworCisgICAgeworICAgICAgICBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNv
ZGVCbG9jay0+bV9sb2NrLCB2bS5oZWFwKTsKKyAgICAgICAgaWYgKGZvcmNlSUNGYWlsdXJlKGds
b2JhbE9iamVjdCkpCisgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKworICAgICAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2UtPnN0cnVjdHVyZSh2bSk7CisKKyAgICAgICAg
SW5saW5lQ2FjaGVBY3Rpb24gYWN0aW9uID0gYWN0aW9uRm9yQ2VsbCh2bSwgYmFzZSk7CisgICAg
ICAgIGlmIChhY3Rpb24gIT0gQXR0ZW1wdFRvQ2FjaGUpCisgICAgICAgICAgICByZXR1cm4gYWN0
aW9uOworCisgICAgICAgIC8vIExPR19JQygoSUNFdmVudDo6SW5BZGRBY2Nlc3NDYXNlLCBzdHJ1
Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgc2xvdC5zbG90QmFzZSgpID09IGJhc2UpKTsKKwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6
OmNyZWF0ZUNoZWNrUHJpdmF0ZUJyYW5kKHZtLCBjb2RlQmxvY2ssIGJyYW5kSUQsIHN0cnVjdHVy
ZSk7CisKKyAgICAgICAgcmVzdWx0ID0gc3R1YkluZm8uYWRkQWNjZXNzQ2FzZShsb2NrZXIsIGds
b2JhbE9iamVjdCwgY29kZUJsb2NrLCBFQ01BTW9kZTo6c3RyaWN0KCksIGJyYW5kSUQsIFdURk1v
dmUobmV3Q2FzZSkpOworCisgICAgICAgIGlmIChyZXN1bHQuZ2VuZXJhdGVkU29tZUNvZGUoKSkg
eworICAgICAgICAgICAgLy8gTE9HX0lDKChJQ0V2ZW50OjpJblJlcGxhY2VXaXRoSnVtcCwgc3Ry
dWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlKSk7CisK
KyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOworICAgICAgICAgICAg
SW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJl
bDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICB9CisgICAg
fQorCisgICAgZmlyZVdhdGNocG9pbnRzQW5kQ2xlYXJTdHViSWZOZWVkZWQodm0sIHN0dWJJbmZv
LCBjb2RlQmxvY2ssIHJlc3VsdCk7CisKKyAgICByZXR1cm4gcmVzdWx0LnNob3VsZEdpdmVVcE5v
dygpID8gR2l2ZVVwT25DYWNoZSA6IFJldHJ5Q2FjaGVMYXRlcjsKK30KKwordm9pZCByZXBhdGNo
Q2hlY2tQcml2YXRlQnJhbmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBDYWNoZWFibGVJZGVudGlmaWVyIGJy
YW5kSUQsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKK3sKKyAgICBTdXBlclNhbXBsZXJT
Y29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisKKyAgICBpZiAodHJ5Q2FjaGVDaGVja1By
aXZhdGVCcmFuZChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgYnJhbmRJRCwg
c3R1YkluZm8pID09IEdpdmVVcE9uQ2FjaGUpCisgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNo
Q2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25D
aGVja1ByaXZhdGVCcmFuZEdlbmVyaWMpOworfQorCitzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24g
dHJ5Q2FjaGVTZXRQcml2YXRlQnJhbmQoCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTT2JqZWN0KiBiYXNlLCBTdHJ1Y3R1cmUqIG9sZFN0
cnVjdHVyZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBicmFuZElELAorICAgIFN0cnVjdHVyZVN0dWJJ
bmZvJiBzdHViSW5mbykKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
QWNjZXNzR2VuZXJhdGlvblJlc3VsdCByZXN1bHQ7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElk
ZW50aWZpZXI6OmZyb21VaWQodm0sIGJyYW5kSUQudWlkKCkpOworCisgICAgeworICAgICAgICBH
Q1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrLCB2bS5oZWFw
KTsKKyAgICAgICAgaWYgKGZvcmNlSUNGYWlsdXJlKGdsb2JhbE9iamVjdCkpCisgICAgICAgICAg
ICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKyAgICAgICAgCisgICAgICAgIEFTU0VSVChvbGRTdHJ1
Y3R1cmUpOworCisgICAgICAgIGlmIChvbGRTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQorICAg
ICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKKworICAgICAgICBJbmxpbmVDYWNoZUFj
dGlvbiBhY3Rpb24gPSBhY3Rpb25Gb3JDZWxsKHZtLCBiYXNlKTsKKyAgICAgICAgaWYgKGFjdGlv
biAhPSBBdHRlbXB0VG9DYWNoZSkKKyAgICAgICAgICAgIHJldHVybiBhY3Rpb247CisKKyAgICAg
ICAgLy8gTE9HX0lDKChJQ0V2ZW50OjpJbkFkZEFjY2Vzc0Nhc2UsIHN0cnVjdHVyZS0+Y2xhc3NJ
bmZvKCksIGlkZW50LCBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZSkpOworICAgICAgICAKKyAgICAg
ICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OnNldEJyYW5kVHJhbnNpdGlv
bkZyb21FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseShvbGRTdHJ1Y3R1cmUsIGJyYW5kSUQu
dWlkKCkpOworICAgICAgICBpZiAoIW5ld1N0cnVjdHVyZSkKKyAgICAgICAgICAgIHJldHVybiBS
ZXRyeUNhY2hlTGF0ZXI7CisgICAgICAgIGlmIChuZXdTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgp
KQorICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisgICAgICAgIEFTU0VSVChuZXdT
dHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSA9PSBvbGRTdHJ1Y3R1cmUpOworICAgICAgICBBU1NFUlQo
bmV3U3RydWN0dXJlLT50cmFuc2l0aW9uS2luZCgpID09IFRyYW5zaXRpb25LaW5kOjpTZXRCcmFu
ZCk7CisgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOworICAgICAgICAK
KyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2UgPSBBY2Nlc3NDYXNl
OjpjcmVhdGVTZXRQcml2YXRlQnJhbmQodm0sIGNvZGVCbG9jaywgYnJhbmRJRCwgb2xkU3RydWN0
dXJlLCBuZXdTdHJ1Y3R1cmUpOworCisgICAgICAgIHJlc3VsdCA9IHN0dWJJbmZvLmFkZEFjY2Vz
c0Nhc2UobG9ja2VyLCBnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgRUNNQU1vZGU6OnN0cmljdCgp
LCBicmFuZElELCBXVEZNb3ZlKG5ld0Nhc2UpKTsKKworICAgICAgICBpZiAocmVzdWx0LmdlbmVy
YXRlZFNvbWVDb2RlKCkpIHsKKyAgICAgICAgICAgIC8vIExPR19JQygoSUNFdmVudDo6SW5SZXBs
YWNlV2l0aEp1bXAsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBzbG90LnNsb3RCYXNl
KCkgPT0gYmFzZSkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChy
ZXN1bHQuY29kZSgpKTsKKyAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVt
cChzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3Vs
dC5jb2RlKCkpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZpcmVXYXRjaHBvaW50c0FuZENs
ZWFyU3R1YklmTmVlZGVkKHZtLCBzdHViSW5mbywgY29kZUJsb2NrLCByZXN1bHQpOworICAgIAor
ICAgIHJldHVybiByZXN1bHQuc2hvdWxkR2l2ZVVwTm93KCkgPyBHaXZlVXBPbkNhY2hlIDogUmV0
cnlDYWNoZUxhdGVyOworfQorCit2b2lkIHJlcGF0Y2hTZXRQcml2YXRlQnJhbmQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTT2JqZWN0KiBiYXNl
T2JqZWN0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBicmFu
ZElELCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCit7CisgICAgU3VwZXJTYW1wbGVyU2Nv
cGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworCisgICAgaWYgKHRyeUNhY2hlU2V0UHJpdmF0
ZUJyYW5kKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBvbGRTdHJ1Y3R1cmUs
ICBicmFuZElELCBzdHViSW5mbykgPT0gR2l2ZVVwT25DYWNoZSkKKyAgICAgICAgZnRsVGh1bmtB
d2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24s
IG9wZXJhdGlvblNldFByaXZhdGVCcmFuZEdlbmVyaWMpOworfQorCiBzdGF0aWMgSW5saW5lQ2Fj
aGVBY3Rpb24gdHJ5Q2FjaGVJbnN0YW5jZU9mKAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlIHZhbHVlVmFsdWUsIEpTVmFsdWUg
cHJvdG90eXBlVmFsdWUsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywKICAgICBib29sIHdh
c0ZvdW5kKQpAQCAtMTU4MCw2ICsxNjg0LDE4IEBAIHZvaWQgcmVzZXRJbnN0YW5jZU9mKFN0cnVj
dHVyZVN0dWJJbmZvJiBzdHViSW5mbykKICAgICByZXNldFBhdGNoYWJsZUp1bXAoc3R1YkluZm8p
OwogfQogCit2b2lkIHJlc2V0Q2hlY2tQcml2YXRlQnJhbmQoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKK3sKKyAgICBmdGxUaHVua0F3YXJlUmVwYXRj
aENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9u
Q2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSk7CisgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHVi
QXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworfQorCit2
b2lkIHJlc2V0U2V0UHJpdmF0ZUJyYW5kKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVT
dHViSW5mbyYgc3R1YkluZm8pCit7CisgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVC
bG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvblNldFByaXZhdGVC
cmFuZE9wdGltaXplKTsKKyAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1Yklu
Zm8sIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7Cit9CisKIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjxKU0VudHJ5UHRyVGFnPiBqc1RvV2FzbUlDQ29kZVB0cihWTSYgdm0sIENvZGVTcGVj
aWFsaXphdGlvbktpbmQga2luZCwgSlNPYmplY3QqIGNhbGxlZSkKIHsKICNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2gu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCmluZGV4IDVkZDIwYzYzNmEw
NTE2ODdkOTE2ZTgwYWI3ODNiMGU5ZTY2ZDMxZGEuLmVlNmQ2ZjNmYzg2ZmQxMGNmODk0OTc4Mzdh
NGE4YjZhNTRiNzMzNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVw
YXRjaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCkBAIC01Myw2
ICs1Myw4IEBAIHZvaWQgcmVwYXRjaEdldEJ5KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwg
SlNWYWx1ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29uCiB2b2lkIHJlcGF0Y2hQdXRCeUlEKEpT
R2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSwgU3RydWN0dXJlKiwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgY29uc3QgUHV0UHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBQ
dXRLaW5kKTsKIHZvaWQgcmVwYXRjaERlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2Nr
KiwgRGVsZXRlUHJvcGVydHlTbG90JiwgSlNWYWx1ZSwgU3RydWN0dXJlKiwgQ2FjaGVhYmxlSWRl
bnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mLCBEZWxCeUtpbmQsIEVDTUFNb2RlKTsKIHZvaWQg
cmVwYXRjaEluQnlJRChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTT2JqZWN0KiwgQ2Fj
aGVhYmxlSWRlbnRpZmllciwgYm9vbCB3YXNGb3VuZCwgY29uc3QgUHJvcGVydHlTbG90JiwgU3Ry
dWN0dXJlU3R1YkluZm8mKTsKK3ZvaWQgcmVwYXRjaENoZWNrUHJpdmF0ZUJyYW5kKEpTR2xvYmFs
T2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1
Y3R1cmVTdHViSW5mbyYpOwordm9pZCByZXBhdGNoU2V0UHJpdmF0ZUJyYW5kKEpTR2xvYmFsT2Jq
ZWN0KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBTdHJ1Y3R1cmUqLCBDYWNoZWFibGVJZGVudGlm
aWVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXBhdGNoSW5zdGFuY2VPZihKU0dsb2Jh
bE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlLCBT
dHJ1Y3R1cmVTdHViSW5mbyYsIGJvb2wgd2FzRm91bmQpOwogdm9pZCBsaW5rRm9yKFZNJiwgQ2Fs
bEZyYW1lKiwgQ2FsbExpbmtJbmZvJiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqIGNhbGxlZSwgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KTsKIHZvaWQgbGlua0RpcmVjdEZvcihD
YWxsRnJhbWUqLCBDYWxsTGlua0luZm8mLCBDb2RlQmxvY2sqLCBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHI8SlNFbnRyeVB0clRhZz4pOwpAQCAtNjQsNiArNjYsOCBAQCB2b2lkIHJlc2V0UHV0QnlJRChD
b2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXNldERlbEJ5KENvZGVCbG9j
ayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgRGVsQnlLaW5kKTsKIHZvaWQgcmVzZXRJbkJ5SUQoQ29k
ZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVzZXRJbnN0YW5jZU9mKFN0cnVj
dHVyZVN0dWJJbmZvJik7Cit2b2lkIHJlc2V0Q2hlY2tQcml2YXRlQnJhbmQoQ29kZUJsb2NrKiwg
U3RydWN0dXJlU3R1YkluZm8mKTsKK3ZvaWQgcmVzZXRTZXRQcml2YXRlQnJhbmQoQ29kZUJsb2Nr
KiwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKENv
ZGVCbG9jayosIENvZGVMb2NhdGlvbkNhbGw8SlNJbnRlcm5hbFB0clRhZz4sIEZ1bmN0aW9uUHRy
PENGdW5jdGlvblB0clRhZz4gbmV3Q2FsbGVlRnVuY3Rpb24pOwogTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyPEpTRW50cnlQdHJUYWc+IGpzVG9XYXNtSUNDb2RlUHRyKFZNJiwgQ29kZVNwZWNpYWxpemF0
aW9uS2luZCwgSlNPYmplY3QqIGNhbGxlZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IGQxNWFiYTgxZjBiZGM4N2U4N2NlZTJkMjgz
ZWM3M2NmNjUwNzYxNTEuLmJlNWE3ZmJhYWI4ZTE2NTkzNmJmMWNlYzMwZmJkYWIwMmU5YWI5ZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApA
QCAtMTMwMSw2ICsxMzAxLDc4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRf
cHJpdmF0ZV9uYW1lKQogICAgIExMSU5UX0VORCgpOyAgICAKIH0KIAorTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX3NldF9wcml2YXRlX2JyYW5kKQoreworICAgIExMSU5UX0JFR0lOKCk7
CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wU2V0UHJpdmF0ZUJyYW5kPigpOworICAg
IEpTVmFsdWUgYmFzZVZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFz
ZSk7CisgICAgSlNWYWx1ZSBicmFuZCA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5t
X2JyYW5kKTsKKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9j
ayk7CisgICAgQVNTRVJUKGJhc2VWYWx1ZS5pc09iamVjdCgpKTsKKyAgICBBU1NFUlQoYnJhbmQu
aXNTeW1ib2woKSk7CisKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VW
YWx1ZSk7CisgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBiYXNlT2JqZWN0LT5zdHJ1Y3R1
cmUodm0pOworCisgICAgYmFzZU9iamVjdC0+c2V0UHJpdmF0ZUJyYW5kKGdsb2JhbE9iamVjdCwg
YnJhbmQpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworCisgICAgaWYgKCFMTElOVF9B
TFdBWVNfQUNDRVNTX1NMT1cgJiYgIW9sZFN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpIHsKKyAg
ICAgICAgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jaywg
dm0uaGVhcCk7CisgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gYmFzZU9iamVjdC0+
c3RydWN0dXJlKHZtKTsKKworICAgICAgICBBU1NFUlQob2xkU3RydWN0dXJlID09IG5ld1N0cnVj
dHVyZS0+cHJldmlvdXNJRCgpKTsKKyAgICAgICAgQVNTRVJUKG9sZFN0cnVjdHVyZS0+dHJhbnNp
dGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKSk7CisKKyAgICAgICAgLy8gU3Rh
cnQgb3V0IGJ5IGNsZWFyaW5nIG91dCB0aGUgb2xkIGNhY2hlLgorICAgICAgICBtZXRhZGF0YS5t
X29sZFN0cnVjdHVyZUlEID0gMDsKKyAgICAgICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRCA9
IDA7CisgICAgICAgIG1ldGFkYXRhLm1fYnJhbmQuY2xlYXIoKTsKKworICAgICAgICBpZiAoIW5l
d1N0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpIHsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fb2xk
U3RydWN0dXJlSUQgPSBvbGRTdHJ1Y3R1cmUtPmlkKCk7CisgICAgICAgICAgICBtZXRhZGF0YS5t
X25ld1N0cnVjdHVyZUlEID0gbmV3U3RydWN0dXJlLT5pZCgpOworICAgICAgICAgICAgbWV0YWRh
dGEubV9icmFuZC5zZXQodm0sIGNvZGVCbG9jaywgYnJhbmQuYXNDZWxsKCkpOworICAgICAgICB9
CisgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CisgICAgfQorCisgICAg
TExJTlRfRU5EKCk7ICAgIAorfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2hl
Y2tfcHJpdmF0ZV9icmFuZCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworCisgICAgYXV0byBieXRl
Y29kZSA9IHBjLT5hczxPcENoZWNrUHJpdmF0ZUJyYW5kPigpOworICAgIGF1dG8mIG1ldGFkYXRh
ID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9
IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2Jhc2UpOworICAgIEpTVmFsdWUgYnJh
bmQgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9icmFuZCk7CisKKyAgICBKU09i
amVjdCogYmFzZU9iamVjdCA9IGJhc2VWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAg
IExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworCisgICAgQVNTRVJUKGJyYW5kLmlzU3ltYm9sKCkp
OworCisgICAgYmFzZU9iamVjdC0+Y2hlY2tQcml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0LCBicmFu
ZCk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisKKyAgICAvLyBPT1BTOiBJcyB0aGVy
ZSByZWFsbHkgYSBjYXNlIHdoZXJlIHdlIGRvbid0IHdhbnQgdG8gY2FjaGUgaGVyZT8KKyAgICAv
LyBTaW5jZSBhIGJyYW5kIGNhbiBuZXZlciBiZSBkZWxldGVkLCBpdCdzIHNhZmUgdG8gcmVseSBv
biBTdHJ1Y3R1cmVJRAorICAgIC8vIGV2ZW4gaWYgaXQncyBhbiB1bmNhY2hlYWJsZSBkaWN0aW9u
YXJ5LgorICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZU9iamVjdC0+c3RydWN0dXJlKHZt
KTsKKyAgICBpZiAoIUxMSU5UX0FMV0FZU19BQ0NFU1NfU0xPVykgeworICAgICAgICBHQ1NhZmVD
b25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrLCB2bS5oZWFwKTsKKwor
ICAgICAgICBtZXRhZGF0YS5tX3N0cnVjdHVyZUlEID0gc3RydWN0dXJlLT5pZCgpOworICAgICAg
ICBtZXRhZGF0YS5tX2JyYW5kLnNldCh2bSwgY29kZUJsb2NrLCBicmFuZC5hc0NlbGwoKSk7Cisg
ICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CisgICAgfQorCisgICAgTExJ
TlRfRU5EKCk7ICAgIAorfQorCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5
X3ZhbCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuaAppbmRleCA5ODFiMzZlNWU4MDQ1Mjg4YzBlYjUxZThmOGJmNGVm
ZDk1MzBjOThmLi40NzExYThlYTUyNTI3ZWYwMzFkODZkNTY2NjlkZmQyNWYzMDMxNGQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaApAQCAtNzcsNiAr
NzcsOCBAQCBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9hcmd1bWVu
dF9ieV92YWwpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlf
dmFsKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbF9k
aXJlY3QpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfcHJpdmF0
ZV9uYW1lKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY2hlY2tfcHJp
dmF0ZV9icmFuZCk7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3NldF9w
cml2YXRlX2JyYW5kKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZGVs
X2J5X3ZhbCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9nZXR0
ZXJfYnlfaWQpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfc2V0
dGVyX2J5X2lkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggZWE0MzFjZTczZWQ4MjE4NjJkMzZlMmYw
NTZkMmUwZjJkM2E4ZTk0NS4uNjY1NzFiZWI1YzYwYjExNzliNGE3YzBiYWY5NDhiYTIyOTJkZGY2
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTI5OTEsMyArMjk5MSw0OCBAQCBlbmQpCiBvcChmdXp6
ZXJfcmV0dXJuX2Vhcmx5X2Zyb21fbG9vcF9oaW50LCBtYWNybyAoKQogICAgIG5vdFN1cHBvcnRl
ZCgpCiBlbmQpCisKKworbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9jaGVja19wcml2YXRlX2JyYW5k
LCBPcENoZWNrUHJpdmF0ZUJyYW5kLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRh
dGEsIHJldHVybikKKyAgICBtZXRhZGF0YSh0NSwgdDIpCisgICAgZ2V0KG1fYmFzZSwgdDMpCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDMsIENlbGxUYWcsIHQwLCAu
b3BDaGVja1ByaXZhdGVCcmFuZFNsb3cpCisgICAgZ2V0KG1fYnJhbmQsIHQzKQorICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQzLCBDZWxsVGFnLCB0MSwgLm9wQ2hlY2tQ
cml2YXRlQnJhbmRTbG93KQorCisgICAgbG9hZGkgT3BDaGVja1ByaXZhdGVCcmFuZDo6TWV0YWRh
dGE6Om1fc3RydWN0dXJlSURbdDVdLCB0MworICAgIGJpbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJ
RFt0MF0sIHQzLCAub3BDaGVja1ByaXZhdGVCcmFuZFNsb3cKKworICAgIGxvYWRwIE9wQ2hlY2tQ
cml2YXRlQnJhbmQ6Ok1ldGFkYXRhOjptX2JyYW5kW3Q1XSwgdDMKKyAgICBicG5lcSB0MywgdDEs
IC5vcENoZWNrUHJpdmF0ZUJyYW5kU2xvdworICAgIGRpc3BhdGNoKCkKKworLm9wQ2hlY2tQcml2
YXRlQnJhbmRTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2NoZWNrX3By
aXZhdGVfYnJhbmQpCisgICAgZGlzcGF0Y2goKQorZW5kKQorCisKK2xsaW50T3BXaXRoTWV0YWRh
dGEob3Bfc2V0X3ByaXZhdGVfYnJhbmQsIE9wU2V0UHJpdmF0ZUJyYW5kLCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKKyAgICBtZXRhZGF0YSh0NSwgdDIpCisg
ICAgZ2V0KG1fYmFzZSwgdDMpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6
ZSwgdDMsIENlbGxUYWcsIHQwLCAub3BTZXRQcml2YXRlQnJhbmRTbG93KQorICAgIGdldChtX2Jy
YW5kLCB0MykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MywgQ2Vs
bFRhZywgdDEsIC5vcFNldFByaXZhdGVCcmFuZFNsb3cpCisKKyAgICBsb2FkaSBPcFNldFByaXZh
dGVCcmFuZDo6TWV0YWRhdGE6Om1fb2xkU3RydWN0dXJlSURbdDVdLCB0MgorICAgIGJpbmVxIHQy
LCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCAub3BTZXRQcml2YXRlQnJhbmRTbG93CisKKyAg
ICBsb2FkcCBPcFNldFByaXZhdGVCcmFuZDo6TWV0YWRhdGE6Om1fYnJhbmRbdDVdLCB0MworICAg
IGJwbmVxIHQzLCB0MSwgLm9wU2V0UHJpdmF0ZUJyYW5kU2xvdworCisgICAgbG9hZGkgT3BTZXRQ
cml2YXRlQnJhbmQ6Ok1ldGFkYXRhOjptX25ld1N0cnVjdHVyZUlEW3Q1XSwgdDEKKyAgICBzdG9y
ZWkgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0KKyAgICB3cml0ZUJhcnJpZXJPbk9wZXJh
bmQoc2l6ZSwgZ2V0LCBtX2Jhc2UpCisgICAgZGlzcGF0Y2goKQorCisub3BTZXRQcml2YXRlQnJh
bmRTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3NldF9wcml2YXRlX2Jy
YW5kKQorICAgIGRpc3BhdGNoKCkKK2VuZCkKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCBlMTJkYzM4M2JjZTc2
M2ZiOGI2MTczYjMyMTJhNmEzNTZlNjEzZTNkLi4yN2U3NmQyZjIwNjVjZTc4YzQzYmE0MzQzNjVj
OTM1OWQ5MTljYjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMTgxNSw2ICsxODE1LDQ3IEBAIGxsaW50T3BX
aXRoTWV0YWRhdGEob3BfcHV0X3ByaXZhdGVfbmFtZSwgT3BQdXRQcml2YXRlTmFtZSwgbWFjcm8g
KHNpemUsIGdldCwgZGlzCiAgICAgZGlzcGF0Y2goKQogZW5kKQogCitsbGludE9wV2l0aE1ldGFk
YXRhKG9wX3NldF9wcml2YXRlX2JyYW5kLCBPcFNldFByaXZhdGVCcmFuZCwgbWFjcm8gKHNpemUs
IGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisgICAgZ2V0KG1fYmFzZSwgdDMpCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDMsIHQwLCAub3BTZXRQcml2YXRl
QnJhbmRTbG93KQorICAgIGdldChtX2JyYW5kLCB0MykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlQ2VsbChzaXplLCB0MywgdDEsIC5vcFNldFByaXZhdGVCcmFuZFNsb3cpCisgICAgbWV0YWRh
dGEodDUsIHQyKQorICAgIGxvYWRpIE9wU2V0UHJpdmF0ZUJyYW5kOjpNZXRhZGF0YTo6bV9vbGRT
dHJ1Y3R1cmVJRFt0NV0sIHQyCisgICAgYmluZXEgdDIsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0
MF0sIC5vcFNldFByaXZhdGVCcmFuZFNsb3cKKworICAgIGxvYWRwIE9wU2V0UHJpdmF0ZUJyYW5k
OjpNZXRhZGF0YTo6bV9icmFuZFt0NV0sIHQzCisgICAgYnBuZXEgdDMsIHQxLCAub3BTZXRQcml2
YXRlQnJhbmRTbG93CisKKyAgICBsb2FkaSBPcFNldFByaXZhdGVCcmFuZDo6TWV0YWRhdGE6Om1f
bmV3U3RydWN0dXJlSURbdDVdLCB0MQorICAgIHN0b3JlaSB0MSwgSlNDZWxsOjptX3N0cnVjdHVy
ZUlEW3QwXQorICAgIHdyaXRlQmFycmllck9uT3BlcmFuZChzaXplLCBnZXQsIG1fYmFzZSkKKyAg
ICBkaXNwYXRjaCgpCisKKy5vcFNldFByaXZhdGVCcmFuZFNsb3c6CisgICAgY2FsbFNsb3dQYXRo
KF9sbGludF9zbG93X3BhdGhfc2V0X3ByaXZhdGVfYnJhbmQpCisgICAgZGlzcGF0Y2goKQorZW5k
KQorCitsbGludE9wV2l0aE1ldGFkYXRhKG9wX2NoZWNrX3ByaXZhdGVfYnJhbmQsIE9wQ2hlY2tQ
cml2YXRlQnJhbmQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJu
KQorICAgIG1ldGFkYXRhKHQ1LCB0MikKKyAgICBnZXQobV9iYXNlLCB0MykKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlQ2VsbChzaXplLCB0MywgdDAsIC5vcENoZWNrUHJpdmF0ZUJyYW5kU2xv
dykKKyAgICBnZXQobV9icmFuZCwgdDMpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwo
c2l6ZSwgdDMsIHQxLCAub3BDaGVja1ByaXZhdGVCcmFuZFNsb3cpCisKKyAgICBsb2FkcCBPcENo
ZWNrUHJpdmF0ZUJyYW5kOjpNZXRhZGF0YTo6bV9icmFuZFt0NV0sIHQzCisgICAgYnFuZXEgdDMs
IHQxLCAub3BDaGVja1ByaXZhdGVCcmFuZFNsb3cKKworICAgIGxvYWRpIE9wQ2hlY2tQcml2YXRl
QnJhbmQ6Ok1ldGFkYXRhOjptX3N0cnVjdHVyZUlEW3Q1XSwgdDIKKyAgICBiaW5lcSB0MiwgSlND
ZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgLm9wQ2hlY2tQcml2YXRlQnJhbmRTbG93CisgICAgZGlz
cGF0Y2goKQorCisub3BDaGVja1ByaXZhdGVCcmFuZFNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9s
bGludF9zbG93X3BhdGhfY2hlY2tfcHJpdmF0ZV9icmFuZCkKKyAgICBkaXNwYXRjaCgpCitlbmQp
CisKIG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBvc3JFeGl0UG9p
bnQpCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFtZSUsIG9wY29kZVN0cnVj
dCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgICAg
IG1hY3JvIGNvbnRpZ3VvdXNQdXRCeVZhbChzdG9yZUNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzLmNwcAppbmRleCA2NGE2NmY3NjVjOGY0ZDI4NDk2ZGE5Y2U2YzQ0YWJi
MDhhYTg4MWI5Li4wMmI3ODc1Y2NhZjZhZmY2NjNhYzFlZWY1YWRkYjhkYmQzNDA5Mzc3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApAQCAtMjAyLDYgKzIwMiw3IEBAIEZ1
bmN0aW9uTWV0YWRhdGFOb2RlOjpGdW5jdGlvbk1ldGFkYXRhTm9kZSgKICAgICAgICAgLCBtX2Nv
bnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkKICAg
ICAgICAgLCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8pKQogICAgICAgICAsIG1faXNBcnJvd0Z1
bmN0aW9uQm9keUV4cHJlc3Npb24oaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCisgICAg
ICAgICwgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmUpKQogICAgICAgICAsIG1fcGFyc2VNb2RlKG1vZGUp
CiAgICAgICAgICwgbV9zdGFydENvbHVtbihzdGFydENvbHVtbikKICAgICAgICAgLCBtX2VuZENv
bHVtbihlbmRDb2x1bW4pCkBAIC0yMjYsNiArMjI3LDcgQEAgRnVuY3Rpb25NZXRhZGF0YU5vZGU6
OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKAogICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKQogICAgICAgICAsIG1fbmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyOjpObykpCiAgICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lv
bihpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKKyAgICAgICAgLCBtX3ByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50KHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcml2YXRlQnJhbmRSZXF1aXJlbWVu
dDo6Tm9uZSkpCiAgICAgICAgICwgbV9wYXJzZU1vZGUobW9kZSkKICAgICAgICAgLCBtX3N0YXJ0
Q29sdW1uKHN0YXJ0Q29sdW1uKQogICAgICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCBlZDkwNzc1MzkwNTdmNTM2MTYyM2Zj
NzlkN2ViYmNiOThjMDE3YmRmLi40YmY5Mzg2ZjI2ZjAyOTgzYjc4ODY5ZTRhMjUwMjVmNjBlYzhh
YjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC03MjEsNyArNzIxLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgZW51bSBjbGFzcyBDbGFzc0VsZW1lbnRUYWcgOiB1aW50
OF90IHsgTm8sIEluc3RhbmNlLCBTdGF0aWMsIExhc3RUYWcgfTsKICAgICBjbGFzcyBQcm9wZXJ0
eU5vZGUgZmluYWwgOiBwdWJsaWMgUGFyc2VyQXJlbmFGcmVlYWJsZSB7CiAgICAgcHVibGljOgot
ICAgICAgICBlbnVtIFR5cGUgOiB1aW50OF90IHsgQ29uc3RhbnQgPSAxLCBHZXR0ZXIgPSAyLCBT
ZXR0ZXIgPSA0LCBDb21wdXRlZCA9IDgsIFNob3J0aGFuZCA9IDE2LCBTcHJlYWQgPSAzMiwgUHJp
dmF0ZSA9IDY0IH07CisgICAgICAgIGVudW0gVHlwZSA6IHVpbnQ4X3QgeyBDb25zdGFudCA9IDEs
IEdldHRlciA9IDIsIFNldHRlciA9IDQsIENvbXB1dGVkID0gOCwgU2hvcnRoYW5kID0gMTYsIFNw
cmVhZCA9IDMyLCBQcml2YXRlRmllbGQgPSA2NCwgUHJpdmF0ZU1ldGhvZCA9IDEyOCB9OwogCiAg
ICAgICAgIFByb3BlcnR5Tm9kZShjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqLCBU
eXBlLCBTdXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZyk7CiAgICAgICAgIFByb3BlcnR5Tm9k
ZShFeHByZXNzaW9uTm9kZSosIFR5cGUsIFN1cGVyQmluZGluZywgQ2xhc3NFbGVtZW50VGFnKTsK
QEAgLTc0MCw3ICs3NDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBpc0luc3Rh
bmNlQ2xhc3NGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGlzSW5zdGFuY2VDbGFzc1Byb3BlcnR5KCkg
JiYgIW5lZWRzU3VwZXJCaW5kaW5nKCk7IH0KICAgICAgICAgYm9vbCBpc1N0YXRpY0NsYXNzRmll
bGQoKSBjb25zdCB7IHJldHVybiBpc1N0YXRpY0NsYXNzUHJvcGVydHkoKSAmJiAhbmVlZHNTdXBl
ckJpbmRpbmcoKTsgfQogICAgICAgICBib29sIGlzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlKCkgY29u
c3QgeyByZXR1cm4gbV9pc092ZXJyaWRkZW5CeUR1cGxpY2F0ZTsgfQotICAgICAgICBib29sIGlz
UHJpdmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSAmIFByaXZhdGU7IH0KKyAgICAgICAgYm9v
bCBpc1ByaXZhdGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgJiAoUHJpdmF0ZUZpZWxkIHwgUHJp
dmF0ZU1ldGhvZCk7IH0KICAgICAgICAgYm9vbCBoYXNDb21wdXRlZE5hbWUoKSBjb25zdCB7IHJl
dHVybiBtX2V4cHJlc3Npb247IH0KICAgICAgICAgYm9vbCBpc0NvbXB1dGVkQ2xhc3NGaWVsZCgp
IGNvbnN0IHsgcmV0dXJuIGlzQ2xhc3NGaWVsZCgpICYmIGhhc0NvbXB1dGVkTmFtZSgpOyB9CiAg
ICAgICAgIHZvaWQgc2V0SXNPdmVycmlkZGVuQnlEdXBsaWNhdGUoKSB7IG1faXNPdmVycmlkZGVu
QnlEdXBsaWNhdGUgPSB0cnVlOyB9CkBAIC03NjAsNyArNzYwLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIG1fbmFtZTsKICAgICAgICAgRXhwcmVzc2lvbk5v
ZGUqIG1fZXhwcmVzc2lvbjsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYXNzaWduOwotICAg
ICAgICB1bnNpZ25lZCBtX3R5cGUgOiA3OworICAgICAgICB1bnNpZ25lZCBtX3R5cGU7CiAgICAg
ICAgIHVuc2lnbmVkIG1fbmVlZHNTdXBlckJpbmRpbmcgOiAxOwogICAgICAgICBzdGF0aWNfYXNz
ZXJ0KDEgPDwgMiA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDbGFzc0VsZW1lbnRUYWc6Okxhc3RU
YWcpLCAiQ2xhc3NFbGVtZW50VGFnIHNob3VsZG4ndCB1c2UgbW9yZSB0aGFuIHR3byBiaXRzIik7
CiAgICAgICAgIHVuc2lnbmVkIG1fY2xhc3NFbGVtZW50VGFnIDogMjsKQEAgLTgzOCw3ICs4Mzgs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX3N1YnNjcmlwdEhhc0Fzc2lnbm1l
bnRzOwogICAgIH07CiAKLSAgICBlbnVtIGNsYXNzIERvdFR5cGUgeyBOYW1lLCBQcml2YXRlRmll
bGQgfTsKKyAgICBlbnVtIGNsYXNzIERvdFR5cGUgeyBOYW1lLCBQcml2YXRlTWVtYmVyIH07CiAg
ICAgY2xhc3MgQmFzZURvdE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1Ymxp
YzoKICAgICAgICAgQmFzZURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lv
bk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBEb3RUeXBlKTsKQEAgLTg0Niw3ICs4NDYs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGJhc2UoKSBjb25z
dCB7IHJldHVybiBtX2Jhc2U7IH0KICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnQ7IH0KICAgICAgICAgRG90VHlwZSB0eXBlKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlOyB9Ci0gICAgICAgIGJvb2wgaXNQcml2YXRlRmllbGQoKSBjb25z
dCB7IHJldHVybiBtX3R5cGUgPT0gRG90VHlwZTo6UHJpdmF0ZUZpZWxkOyB9CisgICAgICAgIGJv
b2wgaXNQcml2YXRlTWVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IERvdFR5cGU6OlBy
aXZhdGVNZW1iZXI7IH0KIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0UHJvcGVydHlWYWx1
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwg
UmVmUHRyPFJlZ2lzdGVySUQ+JiB0aGlzVmFsdWUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
R2V0UHJvcGVydHlWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRzdCwgUmVn
aXN0ZXJJRCogYmFzZSk7CkBAIC04NzAsNyArODcwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gbnVsbHB0cikgZmluYWw7CiAKICAgICAgICAgYm9vbCBpc0xvY2F0aW9uKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICBib29sIGlzUHJpdmF0ZUxvY2F0aW9uKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV90eXBlID09IERvdFR5cGU6OlByaXZhdGVGaWVsZDsg
fQorICAgICAgICBib29sIGlzUHJpdmF0ZUxvY2F0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV90eXBlID09IERvdFR5cGU6OlByaXZhdGVNZW1iZXI7IH0KICAgICAgICAgYm9vbCBpc0Rv
dEFjY2Vzc29yTm9kZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICB9OwogCkBA
IC0yMTYxLDYgKzIxNjEsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBzZXRFY21h
TmFtZShjb25zdCBJZGVudGlmaWVyJiBlY21hTmFtZSkgeyBtX2VjbWFOYW1lID0gZWNtYU5hbWU7
IH0KICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgZWNtYU5hbWUoKSB7IHJldHVybiBtX2lkZW50
LmlzRW1wdHkoKSA/IG1fZWNtYU5hbWUgOiBtX2lkZW50OyB9CiAKKyAgICAgICAgdm9pZCBzZXRQ
cml2YXRlQnJhbmRSZXF1aXJlbWVudChQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJh
bmRSZXF1aXJlbWVudCkgeyBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KTsgfQorICAgICAgICBQcml2YXRlQnJh
bmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpIHsgcmV0dXJuIHN0YXRpY19j
YXN0PFByaXZhdGVCcmFuZFJlcXVpcmVtZW50PihtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50KTsg
fQorCiAgICAgICAgIEZ1bmN0aW9uTW9kZSBmdW5jdGlvbk1vZGUoKSB7IHJldHVybiBtX2Z1bmN0
aW9uTW9kZTsgfQogCiAgICAgICAgIGludCBmdW5jdGlvbk5hbWVTdGFydCgpIGNvbnN0IHsgcmV0
dXJuIG1fZnVuY3Rpb25OYW1lU3RhcnQ7IH0KQEAgLTIyMDksNiArMjIxMiw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CiAgICAgICAg
IHVuc2lnbmVkIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgOiAxOwogICAgICAgICB1bnNp
Z25lZCBtX2lzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uIDogMTsKKyAgICAgICAgdW5zaWdu
ZWQgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA6IDE7CiAgICAgICAgIFNvdXJjZVBhcnNlTW9k
ZSBtX3BhcnNlTW9kZTsKICAgICAgICAgRnVuY3Rpb25Nb2RlIG1fZnVuY3Rpb25Nb2RlOwogICAg
ICAgICBJZGVudGlmaWVyIG1faWRlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5jcHAKaW5kZXggYWJmZjQ0MDQzZmJjNDllY2U5NjNjMzRkYmVlZjYzYjFmMWVmNDU2Ny4uNGMz
NzliMzA5YjkzZGQ1MmI2YmQ2MzFmZDg1YTJmODhjZmE1Yzg1NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjg3MCw2ICsyODcwLDcgQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlQ2xhc3NFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUNsYXNzKFQKICAgICBjbGFzc1Njb3BlLT5zZXRJc0xleGljYWxTY29wZSgpOwogICAgIGNs
YXNzU2NvcGUtPnByZXZlbnRWYXJEZWNsYXJhdGlvbnMoKTsKICAgICBjbGFzc1Njb3BlLT5zZXRT
dHJpY3RNb2RlKCk7CisgICAgYm9vbCBkZWNsYXJlc1ByaXZhdGVNZXRob2QgPSBmYWxzZTsKICAg
ICBuZXh0KCk7CiAKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHJlcXVpcmVtZW50cyAhPSBGdW5j
dGlvbk5hbWVSZXF1aXJlbWVudHM6OlVubmFtZWQsICJDdXJyZW50bHksIHRoZXJlIGlzIG5vIGNh
bGxlciB0aGF0IHVzZXMgRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzOjpVbm5hbWVkIGZvciBjbGFz
cyBzeW50YXguIik7CkBAIC0yOTg5LDE2ICsyOTkwLDIyIEBAIHBhcnNlTWV0aG9kOgogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUFJJVkFURU5BTUU6IHsKICAgICAgICAgICAgIEFT
U0VSVChPcHRpb25zOjp1c2VQcml2YXRlQ2xhc3NGaWVsZHMoKSk7Ci0gICAgICAgICAgICBKU1Rv
a2VuIHRva2VuID0gbV90b2tlbjsKICAgICAgICAgICAgIGlkZW50ID0gbV90b2tlbi5tX2RhdGEu
aWRlbnQ7CiAgICAgICAgICAgICBpZiAoIU9wdGlvbnM6OnVzZVByaXZhdGVTdGF0aWNDbGFzc0Zp
ZWxkcygpKQogICAgICAgICAgICAgICAgIGZhaWxJZlRydWUodGFnID09IENsYXNzRWxlbWVudFRh
Zzo6U3RhdGljLCAiU3RhdGljIGNsYXNzIGVsZW1lbnQgY2Fubm90IGJlIHByaXZhdGUiKTsKICAg
ICAgICAgICAgIGZhaWxJZlRydWUoaXNHZXR0ZXIgfHwgaXNTZXR0ZXIsICJDYW5ub3QgcGFyc2Ug
Y2xhc3MgbWV0aG9kIHdpdGggcHJpdmF0ZSBuYW1lIik7CiAgICAgICAgICAgICBBU1NFUlQoaWRl
bnQpOwogICAgICAgICAgICAgbmV4dCgpOwotICAgICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaEFu
ZFVwZGF0ZShPUEVOUEFSRU4sIHRva2VuKSwgIkNhbm5vdCBwYXJzZSBjbGFzcyBtZXRob2Qgd2l0
aCBwcml2YXRlIG5hbWUiKTsKLSAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShjbGFzc1Nj
b3BlLT5kZWNsYXJlUHJpdmF0ZU5hbWUoKmlkZW50KSAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZh
bGlkRHVwbGljYXRlRGVjbGFyYXRpb24sICJDYW5ub3QgZGVjbGFyZSBwcml2YXRlIGZpZWxkIHR3
aWNlIik7Ci0gICAgICAgICAgICB0eXBlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBl
Pih0eXBlIHwgUHJvcGVydHlOb2RlOjpQcml2YXRlKTsKKyAgICAgICAgICAgIGlmIChPcHRpb25z
Ojp1c2VQcml2YXRlTWV0aG9kcygpICYmIG1hdGNoKE9QRU5QQVJFTikpIHsKKyAgICAgICAgICAg
ICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoY2xhc3NTY29wZS0+ZGVjbGFyZVByaXZhdGVNZXRob2Qo
KmlkZW50KSAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb24s
ICJDYW5ub3QgZGVjbGFyZSBwcml2YXRlIG1ldGhvZCB0d2ljZSIpOworICAgICAgICAgICAgICAg
IGRlY2xhcmVzUHJpdmF0ZU1ldGhvZCA9IHRydWU7CisgICAgICAgICAgICAgICAgdHlwZSA9IHN0
YXRpY19jYXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4odHlwZSB8IFByb3BlcnR5Tm9kZTo6UHJpdmF0
ZU1ldGhvZCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGZhaWxJZlRydWUobWF0Y2goT1BFTlBBUkVOKSwgIkNhbm5vdCBwYXJzZSBjbGFzcyBt
ZXRob2Qgd2l0aCBwcml2YXRlIG5hbWUiKTsKKyAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1
ZShjbGFzc1Njb3BlLT5kZWNsYXJlUHJpdmF0ZUZpZWxkKCppZGVudCkgJiBEZWNsYXJhdGlvblJl
c3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uLCAiQ2Fubm90IGRlY2xhcmUgcHJpdmF0
ZSBmaWVsZCB0d2ljZSIpOworICAgICAgICAgICAgdHlwZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5
Tm9kZTo6VHlwZT4odHlwZSB8IFByb3BlcnR5Tm9kZTo6UHJpdmF0ZUZpZWxkKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0zMDg0LDEwICszMDkx
LDE5IEBAIHBhcnNlTWV0aG9kOgogICAgIGluZm8uZW5kT2Zmc2V0ID0gdG9rZW5Mb2NhdGlvbigp
LmVuZE9mZnNldCAtIDE7CiAgICAgY29uc3VtZU9yRmFpbChDTE9TRUJSQUNFLCAiRXhwZWN0ZWQg
YSBjbG9zaW5nICd9JyBhZnRlciBhIGNsYXNzIGJvZHkiKTsKIAorICAgIGlmIChkZWNsYXJlc1By
aXZhdGVNZXRob2QpIHsKKyAgICAgICAgSWRlbnRpZmllciBwcml2YXRlQnJhbmRJZGVudGlmaWVy
ID0gbV92bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5wcml2YXRlQnJhbmRQcml2YXRl
TmFtZSgpOworICAgICAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyYXRpb25SZXN1bHQg
PSBjbGFzc1Njb3BlLT5kZWNsYXJlTGV4aWNhbFZhcmlhYmxlKCZwcml2YXRlQnJhbmRJZGVudGlm
aWVyLCB0cnVlKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChkZWNsYXJhdGlvblJlc3VsdCwgZGVj
bGFyYXRpb25SZXN1bHQgPT0gRGVjbGFyYXRpb25SZXN1bHQ6OlZhbGlkKTsKKyAgICAgICAgY2xh
c3NTY29wZS0+dXNlVmFyaWFibGUoJnByaXZhdGVCcmFuZElkZW50aWZpZXIsIGZhbHNlKTsKKyAg
ICAgICAgY2xhc3NTY29wZS0+YWRkQ2xvc2VkVmFyaWFibGVDYW5kaWRhdGVVbmNvbmRpdGlvbmFs
bHkocHJpdmF0ZUJyYW5kSWRlbnRpZmllci5pbXBsKCkpOworICAgIH0KKwogICAgIGlmIChPcHRp
b25zOjp1c2VQcml2YXRlQ2xhc3NGaWVsZHMoKSkgewogICAgICAgICAvLyBGYWlsIGlmIHRoZXJl
IGFyZSBubyBwYXJlbnQgcHJpdmF0ZSBuYW1lIHNjb3BlcyBhbmQgYW55IHVzZWQtYnV0LXVuZGVj
bGFyZWQgcHJpdmF0ZSBuYW1lcy4KICAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxzZShjb3B5VW5k
ZWNsYXJlZFByaXZhdGVOYW1lc1RvT3V0ZXJTY29wZSgpLCAiQ2Fubm90IHJlZmVyZW5jZSB1bmRl
Y2xhcmVkIHByaXZhdGUgbmFtZXMiKTsKICAgICB9CisKICAgICBhdXRvIGNsYXNzRXhwcmVzc2lv
biA9IGNvbnRleHQuY3JlYXRlQ2xhc3NFeHByKGxvY2F0aW9uLCBpbmZvLCBjbGFzc1Njb3BlLT5m
aW5hbGl6ZUxleGljYWxFbnZpcm9ubWVudCgpLCBjb25zdHJ1Y3RvciwgcGFyZW50Q2xhc3MsIGNs
YXNzRWxlbWVudHMpOwogICAgIHBvcFNjb3BlKGNsYXNzU2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVk
c0ZyZWVWYXJpYWJsZUluZm8pOwogICAgIHJldHVybiBjbGFzc0V4cHJlc3Npb247CkBAIC01MTY1
LDcgKzUxODEsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9u
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwogICAgICAgICAgICAgICAgICAg
ICBzZW1hbnRpY0ZhaWxJZkZhbHNlKHVzZVByaXZhdGVOYW1lKGlkZW50KSwgIkNhbm5vdCByZWZl
cmVuY2UgcHJpdmF0ZSBuYW1lcyBvdXRzaWRlIG9mIGNsYXNzIik7CiAgICAgICAgICAgICAgICAg
ICAgIG1fcGFyc2VyU3RhdGUubGFzdFByaXZhdGVOYW1lID0gaWRlbnQ7CiAgICAgICAgICAgICAg
ICAgICAgIGN1cnJlbnRTY29wZSgpLT51c2VWYXJpYWJsZShpZGVudCwgZmFsc2UpOwotICAgICAg
ICAgICAgICAgICAgICB0eXBlID0gRG90VHlwZTo6UHJpdmF0ZUZpZWxkOworICAgICAgICAgICAg
ICAgICAgICB0eXBlID0gRG90VHlwZTo6UHJpdmF0ZU1lbWJlcjsKICAgICAgICAgICAgICAgICAg
ICAgbV90b2tlbi5tX3R5cGUgPSBJREVOVDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgbWF0Y2hPckZhaWwoSURFTlQsICJFeHBlY3RlZCBhIHByb3BlcnR5IG5hbWUgYWZ0ZXIg
Iiwgb3B0aW9uYWxDaGFpbkJhc2UgPyAiJz8uJyIgOiAiJy4nIik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuaAppbmRleCA5MDU2NWJhNDQwMjc0MWU3Zjk0NzRjMjk5NjY0NTM5NDA5
MjU1NDcxLi42OGVmY2FkZWFhM2Y2MDk1M2ZlOTZjZDJlYmZkMGQ3YmE4NTQ0OTU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTUwMCwxMSArNTAwLDI4IEBAIHB1Ymxp
YzoKICAgICAgICAgbV9sZXhpY2FsVmFyaWFibGVzLnVzZVByaXZhdGVOYW1lKGlkZW50KTsKICAg
ICB9CiAKLSAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyZVByaXZhdGVOYW1lKGNvbnN0
IElkZW50aWZpZXImIGlkZW50KQorICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJlUHJp
dmF0ZU1ldGhvZChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChtX2FsbG93c0xleGljYWxEZWNsYXJhdGlvbnMpOwogICAgICAgICBEZWNsYXJhdGlvblJlc3Vs
dE1hc2sgcmVzdWx0ID0gRGVjbGFyYXRpb25SZXN1bHQ6OlZhbGlkOwotICAgICAgICBhdXRvIGFk
ZFJlc3VsdCA9IG1fbGV4aWNhbFZhcmlhYmxlcy5kZWNsYXJlUHJpdmF0ZU5hbWUoaWRlbnQpOwor
ICAgICAgICBib29sIGFkZFJlc3VsdCA9IG1fbGV4aWNhbFZhcmlhYmxlcy5kZWNsYXJlUHJpdmF0
ZU1ldGhvZChpZGVudCk7CisKKyAgICAgICAgaWYgKCFhZGRSZXN1bHQpIHsKKyAgICAgICAgICAg
IHJlc3VsdCB8PSBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9u
OworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIHVzZVZh
cmlhYmxlKCZpZGVudCwgZmFsc2UpOworICAgICAgICBhZGRDbG9zZWRWYXJpYWJsZUNhbmRpZGF0
ZVVuY29uZGl0aW9uYWxseShpZGVudC5pbXBsKCkpOworCisgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgfQorCisgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmVQcml2YXRlRmllbGQo
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgeworICAgICAgICBBU1NFUlQobV9hbGxvd3NM
ZXhpY2FsRGVjbGFyYXRpb25zKTsKKyAgICAgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIHJlc3Vs
dCA9IERlY2xhcmF0aW9uUmVzdWx0OjpWYWxpZDsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBt
X2xleGljYWxWYXJpYWJsZXMuZGVjbGFyZVByaXZhdGVGaWVsZChpZGVudCk7CiAgICAgICAgIGlm
ICghYWRkUmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgICAgICByZXN1bHQgfD0gRGVjbGFyYXRp
b25SZXN1bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbjsKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKQEAgLTk0NCw3ICs5NjEsNyBAQCBwdWJsaWM6CiAgICAgflBhcnNlcigpOwogCiAgICAg
dGVtcGxhdGUgPGNsYXNzIFBhcnNlZE5vZGU+Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5v
ZGU+IHBhcnNlKFBhcnNlckVycm9yJiwgY29uc3QgSWRlbnRpZmllciYsIFBhcnNpbmdDb250ZXh0
LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24g
PSBXVEY6Om51bGxvcHQsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqID0gbnVsbHB0ciwgY29u
c3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogPSBudWxscHRyKTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFyc2VyRXJyb3ImLCBjb25zdCBJZGVudGlmaWVyJiwgUGFy
c2luZ0NvbnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNF
bmRQb3NpdGlvbiA9IFdURjo6bnVsbG9wdCwgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCog
PSBudWxscHRyLCBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiA9IG51bGxwdHIpOwogCiAg
ICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbGV4ZXItPnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsgfQogICAgIEpTVG9rZW5M
b2NhdGlvbiBsb2NhdGlvbkJlZm9yZUxhc3RUb2tlbigpIGNvbnN0IHsgcmV0dXJuIG1fbGV4ZXIt
Pmxhc3RUb2tlbkxvY2F0aW9uKCk7IH0KQEAgLTIwODAsNyArMjA5Nyw3IEBAIHByaXZhdGU6CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyc2VkTm9k
ZT4KLXN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2Uo
UGFyc2VyRXJyb3ImIGVycm9yLCBjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBQYXJzaW5n
Q29udGV4dCBwYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9y
UGFyYW1ldGVyc0VuZFBvc2l0aW9uLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRT
Y29wZVByaXZhdGVOYW1lcywgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogY2xhc3NGaWVs
ZExvY2F0aW9ucykKK3N0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2UoUGFyc2VyRXJyb3ImIGVycm9yLCBjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1l
LCBQYXJzaW5nQ29udGV4dCBwYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNv
bnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25t
ZW50KiBwYXJlbnRTY29wZVByaXZhdGVOYW1lcywgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9u
PiogY2xhc3NGaWVsZExvY2F0aW9ucykKIHsKICAgICBpbnQgZXJyTGluZTsKICAgICBTdHJpbmcg
ZXJyTXNnOwpAQCAtMjA5Niw5ICsyMTEzLDkgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IEkKICAg
ICBBU1NFUlQobV9zb3VyY2UtPnN0YXJ0Q29sdW1uKCkgPiBPcmRpbmFsTnVtYmVyOjpiZWZvcmVG
aXJzdCgpKTsKICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IG1fc291cmNlLT5zdGFydENvbHVt
bigpLnplcm9CYXNlZEludCgpOwogCi0gICAgaWYgKGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSAm
JiBwYXJlbnRTY29wZVByaXZhdGVOYW1lcyAmJiBwYXJlbnRTY29wZVByaXZhdGVOYW1lcy0+cHJp
dmF0ZU5hbWVzU2l6ZSgpKSB7CisgICAgaWYgKGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSAmJiBw
YXJlbnRTY29wZVByaXZhdGVOYW1lcyAmJiBwYXJlbnRTY29wZVByaXZhdGVOYW1lcy0+c2l6ZSgp
KSB7CiAgICAgICAgIGN1cnJlbnRTY29wZSgpLT5zZXRJc1ByaXZhdGVOYW1lU2NvcGUoKTsKLSAg
ICAgICAgcGFyZW50U2NvcGVQcml2YXRlTmFtZXMtPmNvcHlQcml2YXRlTmFtZXNUbyhjdXJyZW50
U2NvcGUoKS0+bGV4aWNhbFZhcmlhYmxlcygpKTsKKyAgICAgICAgY3VycmVudFNjb3BlKCktPmxl
eGljYWxWYXJpYWJsZXMoKS5hZGRQcml2YXRlTmFtZXNGcm9tKHBhcmVudFNjb3BlUHJpdmF0ZU5h
bWVzKTsKICAgICB9CiAKICAgICBhdXRvIHBhcnNlUmVzdWx0ID0gcGFyc2VJbm5lcihjYWxsZWVO
YW1lLCBwYXJzaW5nQ29udGV4dCwgZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3Np
dGlvbiwgY2xhc3NGaWVsZExvY2F0aW9ucyk7CkBAIC0yMTg1LDcgKzIyMDIsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoCiAgICAgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2
ZWRDb250ZXh0VHlwZSA9IERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwKICAgICBFdmFsQ29udGV4
dFR5cGUgZXZhbENvbnRleHRUeXBlID0gRXZhbENvbnRleHRUeXBlOjpOb25lLAogICAgIERlYnVn
Z2VyUGFyc2VEYXRhKiBkZWJ1Z2dlclBhcnNlRGF0YSA9IG51bGxwdHIsCi0gICAgY29uc3QgVmFy
aWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVQcml2YXRlTmFtZXMgPSBudWxscHRyLAorICAg
IGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzID0g
bnVsbHB0ciwKICAgICBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBjbGFzc0ZpZWxkTG9j
YXRpb25zID0gbnVsbHB0ciwKICAgICBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiA9IGZh
bHNlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJN
b2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCmluZGV4
IDc5NTE4YTMwNTRkN2Y2NTVhODk3Nzg2M2ZhNDE5ZjQzYjY4NWQwMTkuLjFjZGFmYzU4NTkyNjA3
NmNmMTNiNjM4ZmEyMTYyN2QyZjc1NWRiNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlck1vZGVzLmgKQEAgLTM3LDYgKzM3LDggQEAgZW51bSBjbGFzcyBKU1BhcnNlclNj
cmlwdE1vZGUgeyBDbGFzc2ljLCBNb2R1bGUgfTsKIAogZW51bSBjbGFzcyBTdXBlckJpbmRpbmcg
eyBOZWVkZWQsIE5vdE5lZWRlZCB9OwogCitlbnVtIGNsYXNzIFByaXZhdGVCcmFuZFJlcXVpcmVt
ZW50IHsgTm9uZSwgTmVlZGVkIH07CisKIGVudW0gY2xhc3MgQ29kZUdlbmVyYXRpb25Nb2RlIDog
dWludDhfdCB7CiAgICAgRGVidWdnZXIgPSAxIDw8IDAsCiAgICAgVHlwZVByb2ZpbGVyID0gMSA8
PCAxLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVj
a2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAppbmRl
eCA4NTYxZjE1NmJmNzMwMDRkYWJiOWY3ZDdmNDJhZWU2YThlYTRhOTE5Li45ZWYyZWY3YmQyMWY0
MzMxOWI0NmQ5NzI2MmU0NWFlNzJmNTlkYWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1N5bnRheENoZWNrZXIuaApAQCAtMTc5LDcgKzE3OSw3IEBAIHB1YmxpYzoKICAgICBF
eHByZXNzaW9uVHlwZSBjcmVhdGVCb29sZWFuKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGJvb2wp
IHsgcmV0dXJuIEJvb2xFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTnVsbChjb25z
dCBKU1Rva2VuTG9jYXRpb24mKSB7IHJldHVybiBOdWxsRXhwcjsgfQogICAgIEV4cHJlc3Npb25U
eXBlIGNyZWF0ZUJyYWNrZXRBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lv
blR5cGUsIEV4cHJlc3Npb25UeXBlLCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBCcmFj
a2V0RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZURvdEFjY2Vzcyhjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgY29uc3QgSWRlbnRpZmllciosIERvdFR5cGUg
dHlwZSwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gdHlwZSA9PSBEb3RUeXBlOjpQcml2YXRlRmll
bGQgPyBQcml2YXRlRG90RXhwciA6IERvdEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVh
dGVEb3RBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIGNvbnN0
IElkZW50aWZpZXIqLCBEb3RUeXBlIHR5cGUsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIHR5cGUg
PT0gRG90VHlwZTo6UHJpdmF0ZU1lbWJlciA/IFByaXZhdGVEb3RFeHByIDogRG90RXhwcjsgfQog
ICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVJlZ0V4cChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBj
b25zdCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25zdCBJZGVudGlmaWVyJiBmbGFncywgaW50KSB7
IHJldHVybiBZYXJyOjpoYXNFcnJvcihZYXJyOjpjaGVja1N5bnRheChwYXR0ZXJuLnN0cmluZygp
LCBmbGFncy5zdHJpbmcoKSkpID8gMCA6IFJlZ0V4cEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlw
ZSBjcmVhdGVOZXdFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBp
bnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIE5ld0V4cHI7IH0KICAgICBFeHByZXNzaW9uVHlw
ZSBjcmVhdGVOZXdFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBp
bnQsIGludCkgeyByZXR1cm4gTmV3RXhwcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAKaW5kZXggODFhOWM5MzhkYzExYTQy
MDBkY2M0Mjg2Y2YzNGU3NWU1MjQ2OGM2NS4uM2VjNTdjM2UyYWJhNWRiMzdiN2ZiNjJlM2M5ZjBh
MTYzZmI1ZGU2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJp
YWJsZUVudmlyb25tZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Zh
cmlhYmxlRW52aXJvbm1lbnQuY3BwCkBAIC0xMDQsNiArMTA0LDQwIEBAIHZvaWQgVmFyaWFibGVF
bnZpcm9ubWVudDo6bWFya1ZhcmlhYmxlQXNFeHBvcnRlZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0
cmluZ0ltcGw+CiAgICAgZmluZFJlc3VsdC0+dmFsdWUuc2V0SXNFeHBvcnRlZCgpOwogfQogCiti
b29sIFZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlTWV0aG9kKGNvbnN0IFJlZlB0
cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCit7CisgICAgaWYgKCFtX3JhcmVEYXRh
KQorICAgICAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxWYXJpYWJsZUVudmlyb25tZW50OjpS
YXJlRGF0YT4oKTsKKworICAgIGF1dG8gZmluZFJlc3VsdCA9IG1fcmFyZURhdGEtPm1fcHJpdmF0
ZU5hbWVzLmZpbmQoaWRlbnRpZmllcik7CisKKyAgICBpZiAoZmluZFJlc3VsdCA9PSBtX3JhcmVE
YXRhLT5tX3ByaXZhdGVOYW1lcy5lbmQoKSkgeworICAgICAgICBQcml2YXRlTmFtZUVudHJ5IG1l
dGEoUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc0RlY2xhcmVkIHwgUHJpdmF0ZU5hbWVFbnRy
eTo6VHJhaXRzOjpJc01ldGhvZCk7CisKKyAgICAgICAgYXV0byBlbnRyeSA9IFZhcmlhYmxlRW52
aXJvbm1lbnRFbnRyeSgpOworICAgICAgICBlbnRyeS5zZXRJc1ByaXZhdGVNZXRob2QoKTsKKyAg
ICAgICAgZW50cnkuc2V0SXNDb25zdCgpOworICAgICAgICBlbnRyeS5zZXRJc0NhcHR1cmVkKCk7
CisgICAgICAgIG1fbWFwLmFkZChpZGVudGlmaWVyLCBlbnRyeSk7CisKKyAgICAgICAgYXV0byBh
ZGRSZXN1bHQgPSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoaWRlbnRpZmllciwgbWV0
YSk7CisgICAgICAgIHJldHVybiBhZGRSZXN1bHQuaXNOZXdFbnRyeTsKKyAgICB9CisKKyAgICBp
ZiAoZmluZFJlc3VsdC0+dmFsdWUuaXNEZWNsYXJlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
IC8vIEVycm9yOiBkZWNsYXJpbmcgYSBkdXBsaWNhdGUgcHJpdmF0ZSBuYW1lLgorCisgICAgYXV0
byBlbnRyeSA9IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpOworICAgIGVudHJ5LnNldElzUHJp
dmF0ZU1ldGhvZCgpOworICAgIGVudHJ5LnNldElzQ29uc3QoKTsKKyAgICBlbnRyeS5zZXRJc0Nh
cHR1cmVkKCk7CisgICAgbV9tYXAuYWRkKGlkZW50aWZpZXIsIGVudHJ5KTsKKworICAgIC8vIGl0
IHdhcyBwcmV2aW91c2x5IHVzZWQsIG1hcmsgaXQgYXMgZGVjbGFyZWQuCisgICAgUHJpdmF0ZU5h
bWVFbnRyeSBtZXRhKFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNEZWNsYXJlZCB8IFByaXZh
dGVOYW1lRW50cnk6OlRyYWl0czo6SXNVc2VkIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJ
c01ldGhvZCk7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1l
cy5zZXQoaWRlbnRpZmllciwgbWV0YSk7CisgICAgcmV0dXJuICFhZGRSZXN1bHQuaXNOZXdFbnRy
eTsKK30KIAogdm9pZCBDb21wYWN0VERaRW52aXJvbm1lbnQ6OnNvcnRDb21wYWN0KENvbXBhY3Qm
IGNvbXBhY3QpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Zh
cmlhYmxlRW52aXJvbm1lbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFi
bGVFbnZpcm9ubWVudC5oCmluZGV4IDUyZTlhYTQ2NTgzNzU2OTMwODFiMzc3N2U5YzdhYjdjYTkx
YmVlNDMuLmY2ZDM1OGIxOTcwMDJkMjBkZTk3ZjQwNjkzYzMzZjY5ZDU1NzM4MmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oCkBA
IC00NSw3ICs0NSw4IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNGdW5jdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzRnVuY3Rpb247IH0KICAgICBBTFdBWVNfSU5M
SU5FIGJvb2wgaXNQYXJhbWV0ZXIoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1BhcmFtZXRl
cjsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRl
OyB9Ci0gICAgQUxXQVlTX0lOTElORSBib29sIGlzUHJpdmF0ZU5hbWUoKSBjb25zdCB7IHJldHVy
biBtX2JpdHMgJiBJc1ByaXZhdGVOYW1lOyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzUHJp
dmF0ZUZpZWxkKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNQcml2YXRlRmllbGQ7IH0KKyAg
ICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQcml2YXRlTWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9i
aXRzICYgSXNQcml2YXRlTWV0aG9kOyB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXND
YXB0dXJlZCgpIHsgbV9iaXRzIHw9IElzQ2FwdHVyZWQ7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0SXNDb25zdCgpIHsgbV9iaXRzIHw9IElzQ29uc3Q7IH0KQEAgLTU3LDcgKzU4LDggQEAg
cHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0Z1bmN0aW9uKCkgeyBtX2JpdHMg
fD0gSXNGdW5jdGlvbjsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1BhcmFtZXRlcigp
IHsgbV9iaXRzIHw9IElzUGFyYW1ldGVyOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElz
U2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlKCkgeyBtX2JpdHMgfD0gSXNTbG9wcHlNb2RlSG9p
c3RpbmdDYW5kaWRhdGU7IH0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNQcml2YXRlTmFt
ZSgpIHsgbV9iaXRzIHw9IElzUHJpdmF0ZU5hbWU7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0SXNQcml2YXRlRmllbGQoKSB7IG1fYml0cyB8PSBJc1ByaXZhdGVGaWVsZDsgfQorICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXRJc1ByaXZhdGVNZXRob2QoKSB7IG1fYml0cyB8PSBJc1ByaXZh
dGVNZXRob2Q7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjbGVhcklzVmFyKCkgeyBtX2Jp
dHMgJj0gfklzVmFyOyB9CiAKQEAgLTgwLDcgKzgyLDggQEAgcHJpdmF0ZToKICAgICAgICAgSXNG
dW5jdGlvbiA9IDEgPDwgNywKICAgICAgICAgSXNQYXJhbWV0ZXIgPSAxIDw8IDgsCiAgICAgICAg
IElzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlID0gMSA8PCA5LAotICAgICAgICBJc1ByaXZh
dGVOYW1lID0gMSA8PCAxMCwKKyAgICAgICAgSXNQcml2YXRlRmllbGQgPSAxIDw8IDEwLAorICAg
ICAgICBJc1ByaXZhdGVNZXRob2QgPSAxIDw8IDExLAogICAgIH07CiAgICAgdWludDE2X3QgbV9i
aXRzIHsgMCB9OwogfTsKQEAgLTkwLDExICs5MywxNiBAQCBzdHJ1Y3QgVmFyaWFibGVFbnZpcm9u
bWVudEVudHJ5SGFzaFRyYWl0cyA6IEhhc2hUcmFpdHM8VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5
PgogfTsKIAogc3RydWN0IFByaXZhdGVOYW1lRW50cnkgeworICAgIGZyaWVuZCBjbGFzcyBDYWNo
ZWRQcml2YXRlTmFtZUVudHJ5OworCiBwdWJsaWM6CiAgICAgUHJpdmF0ZU5hbWVFbnRyeSh1aW50
MTZfdCB0cmFpdHMgPSAwKSB7IG1fYml0cyA9IHRyYWl0czsgfQogCiAgICAgQUxXQVlTX0lOTElO
RSBib29sIGlzVXNlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzVXNlZDsgfQogICAgIEFM
V0FZU19JTkxJTkUgYm9vbCBpc0RlY2xhcmVkKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNE
ZWNsYXJlZDsgfQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc01ldGhvZCgpIGNvbnN0IHsgcmV0
dXJuIG1fYml0cyAmIElzTWV0aG9kOyB9CisKKyAgICBib29sIGlzUHJpdmF0ZU1ldGhvZE9yQWNl
c3NvcigpIGNvbnN0IHsgcmV0dXJuIGlzTWV0aG9kKCk7IH0KIAogICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXRJc1VzZWQoKSB7IG1fYml0cyB8PSBJc1VzZWQ7IH0KICAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0SXNEZWNsYXJlZCgpIHsgbV9iaXRzIHw9IElzRGVjbGFyZWQ7IH0KQEAgLTEwNyw4
ICsxMTUsMTAgQEAgcHVibGljOgogICAgIH0KIAogICAgIGVudW0gVHJhaXRzIDogdWludDE2X3Qg
eworICAgICAgICBOb25lID0gMCwKICAgICAgICAgSXNVc2VkID0gMSA8PCAwLAogICAgICAgICBJ
c0RlY2xhcmVkID0gMSA8PCAxLAorICAgICAgICBJc01ldGhvZCA9IDEgPDwgMiwKICAgICB9Owog
CiBwcml2YXRlOgpAQCAtMTE2LDE1ICsxMjYsMTggQEAgcHJpdmF0ZToKIH07CiAKIHN0cnVjdCBQ
cml2YXRlTmFtZUVudHJ5SGFzaFRyYWl0cyA6IEhhc2hUcmFpdHM8UHJpdmF0ZU5hbWVFbnRyeT4g
ewotICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSBmYWxzZTsKKyAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IGZhbHNlOwogfTsKIAordHlw
ZWRlZiBIYXNoTWFwPFBhY2tlZFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIFByaXZhdGVOYW1l
RW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4+LCBQcml2YXRlTmFtZUVudHJ5SGFzaFRyYWl0cz4gUHJpdmF0ZU5hbWVFbnZpcm9ubWVu
dDsKKwogY2xhc3MgVmFyaWFibGVFbnZpcm9ubWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaE1hcDxQYWNrZWRSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+LCBWYXJpYWJsZUVudmlyb25tZW50RW50cnksIElkZW50aWZpZXJSZXBIYXNo
LCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+LCBWYXJpYWJsZUVudmlyb25t
ZW50RW50cnlIYXNoVHJhaXRzPiBNYXA7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFBhY2tlZFJlZlB0
cjxVbmlxdWVkU3RyaW5nSW1wbD4sIFByaXZhdGVOYW1lRW50cnksIElkZW50aWZpZXJSZXBIYXNo
LCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+LCBQcml2YXRlTmFtZUVudHJ5
SGFzaFRyYWl0cz4gUHJpdmF0ZU5hbWVzOworCiBwdWJsaWM6CisKICAgICBWYXJpYWJsZUVudmly
b25tZW50KCkgeyB9CiAgICAgVmFyaWFibGVFbnZpcm9ubWVudChWYXJpYWJsZUVudmlyb25tZW50
JiYgb3RoZXIpCiAgICAgICAgIDogbV9tYXAoV1RGTW92ZShvdGhlci5tX21hcCkpCkBAIC0xNDYs
NiArMTU5LDE2IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6Y29uc3RfaXRlcmF0
b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuZW5kKCk7IH0KICAgICBBTFdBWVNfSU5MSU5F
IE1hcDo6QWRkUmVzdWx0IGFkZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVu
dGlmaWVyKSB7IHJldHVybiBtX21hcC5hZGQoaWRlbnRpZmllciwgVmFyaWFibGVFbnZpcm9ubWVu
dEVudHJ5KCkpOyB9CiAgICAgQUxXQVlTX0lOTElORSBNYXA6OkFkZFJlc3VsdCBhZGQoY29uc3Qg
SWRlbnRpZmllciYgaWRlbnRpZmllcikgeyByZXR1cm4gYWRkKGlkZW50aWZpZXIuaW1wbCgpKTsg
fQorCisgICAgQUxXQVlTX0lOTElORSBQcml2YXRlTmFtZUVudmlyb25tZW50OjpBZGRSZXN1bHQg
YWRkUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyByZXR1cm4gYWRk
UHJpdmF0ZU5hbWUoaWRlbnRpZmllci5pbXBsKCkpOyB9CisgICAgQUxXQVlTX0lOTElORSBQcml2
YXRlTmFtZUVudmlyb25tZW50OjpBZGRSZXN1bHQgYWRkUHJpdmF0ZU5hbWUoY29uc3QgUmVmUHRy
PFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIGlmICghbV9y
YXJlRGF0YSkKKyAgICAgICAgICAgIG1fcmFyZURhdGEgPSBtYWtlVW5pcXVlPFZhcmlhYmxlRW52
aXJvbm1lbnQ6OlJhcmVEYXRhPigpOworCisgICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX3By
aXZhdGVOYW1lcy5hZGQoaWRlbnRpZmllciwgUHJpdmF0ZU5hbWVFbnRyeSgpKTsKKyAgICB9CisK
ICAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX21hcC5z
aXplKCkgKyBwcml2YXRlTmFtZXNTaXplKCk7IH0KICAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVk
IG1hcFNpemUoKSBjb25zdCB7IHJldHVybiBtX21hcC5zaXplKCk7IH0KICAgICBBTFdBWVNfSU5M
SU5FIGJvb2wgY29udGFpbnMoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRp
ZmllcikgY29uc3QgeyByZXR1cm4gbV9tYXAuY29udGFpbnMoaWRlbnRpZmllcik7IH0KQEAgLTE2
NCwxNyArMTg3LDIwIEBAIHB1YmxpYzoKICAgICBib29sIGlzRXZlcnl0aGluZ0NhcHR1cmVkKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZDsgfQogICAgIGJvb2wgaXNFbXB0
eSgpIGNvbnN0IHsgcmV0dXJuICFtX21hcC5zaXplKCk7IH0KIAotICAgIHVzaW5nIFByaXZhdGVO
YW1lc1JhbmdlID0gV1RGOjpJdGVyYXRvclJhbmdlPFByaXZhdGVOYW1lczo6aXRlcmF0b3I+Owor
ICAgIHVzaW5nIFByaXZhdGVOYW1lc1JhbmdlID0gV1RGOjpJdGVyYXRvclJhbmdlPFByaXZhdGVO
YW1lRW52aXJvbm1lbnQ6Oml0ZXJhdG9yPjsKIAotICAgIEFMV0FZU19JTkxJTkUgTWFwOjpBZGRS
ZXN1bHQgZGVjbGFyZVByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsg
cmV0dXJuIGRlY2xhcmVQcml2YXRlTmFtZShpZGVudGlmaWVyLmltcGwoKSk7IH0KKyAgICBBTFdB
WVNfSU5MSU5FIE1hcDo6QWRkUmVzdWx0IGRlY2xhcmVQcml2YXRlRmllbGQoY29uc3QgSWRlbnRp
ZmllciYgaWRlbnRpZmllcikgeyByZXR1cm4gZGVjbGFyZVByaXZhdGVGaWVsZChpZGVudGlmaWVy
LmltcGwoKSk7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdXNlUHJpdmF0ZU5hbWUoY29uc3Qg
SWRlbnRpZmllciYgaWRlbnRpZmllcikgeyB1c2VQcml2YXRlTmFtZShpZGVudGlmaWVyLmltcGwo
KSk7IH0KIAotICAgIE1hcDo6QWRkUmVzdWx0IGRlY2xhcmVQcml2YXRlTmFtZShjb25zdCBSZWZQ
dHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQorICAgIGJvb2wgZGVjbGFyZVByaXZh
dGVNZXRob2QoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyByZXR1cm4gZGVjbGFyZVBy
aXZhdGVNZXRob2QoaWRlbnRpZmllci5pbXBsKCkpOyB9CisgICAgYm9vbCBkZWNsYXJlUHJpdmF0
ZU1ldGhvZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKTsKKwor
ICAgIE1hcDo6QWRkUmVzdWx0IGRlY2xhcmVQcml2YXRlRmllbGQoY29uc3QgUmVmUHRyPFVuaXF1
ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikKICAgICB7CiAgICAgICAgIGF1dG8mIG1ldGEgPSBn
ZXRPckFkZFByaXZhdGVOYW1lKGlkZW50aWZpZXIuZ2V0KCkpOwogICAgICAgICBtZXRhLnNldElz
RGVjbGFyZWQoKTsKICAgICAgICAgYXV0byBlbnRyeSA9IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRy
eSgpOwotICAgICAgICBlbnRyeS5zZXRJc1ByaXZhdGVOYW1lKCk7CisgICAgICAgIGVudHJ5LnNl
dElzUHJpdmF0ZUZpZWxkKCk7CiAgICAgICAgIGVudHJ5LnNldElzQ29uc3QoKTsKICAgICAgICAg
ZW50cnkuc2V0SXNDYXB0dXJlZCgpOwogICAgICAgICByZXR1cm4gbV9tYXAuYWRkKGlkZW50aWZp
ZXIsIGVudHJ5KTsKQEAgLTIwMSw2ICsyMjcsMjYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
bV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuc2l6ZSgpOwogICAgIH0KIAorICAgIEFMV0FZU19J
TkxJTkUgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogcHJpdmF0ZU5hbWVFbnZpcm9ubWVu
dCgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuICZtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1l
czsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaGFzUHJpdmF0ZU1ldGhvZE9yQWNj
ZXNzb3IoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGZvciAoYXV0byBlbnRyeSA6IHByaXZhdGVOYW1l
cygpKSB7CisgICAgICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNQcml2YXRlTWV0aG9kT3JBY2Vz
c29yKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgQUxXQVlTX0lOTElORSBib29sIGhhc1ByaXZh
dGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiAgICAgewogICAgICAgICBpZiAo
IW1fcmFyZURhdGEpCkBAIC0yMjIsNiArMjY4LDIwIEBAIHB1YmxpYzoKICAgICAgICAgfQogICAg
IH0KIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBhZGRQcml2YXRlTmFtZXNGcm9tKGNvbnN0IFBy
aXZhdGVOYW1lRW52aXJvbm1lbnQqIHByaXZhdGVOYW1lRW52aXJvbm1lbnQpCisgICAgeworICAg
ICAgICBpZiAoIXByaXZhdGVOYW1lRW52aXJvbm1lbnQpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICAgICAgbV9yYXJlRGF0YSA9IG1ha2VV
bmlxdWU8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+KCk7CisKKyAgICAgICAgZm9yIChh
dXRvIGVudHJ5IDogKnByaXZhdGVOYW1lRW52aXJvbm1lbnQpIHsKKyAgICAgICAgICAgIEFTU0VS
VChlbnRyeS52YWx1ZS5pc0RlY2xhcmVkKCkpOworICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9w
cml2YXRlTmFtZXMuYWRkKGVudHJ5LmtleSwgZW50cnkudmFsdWUpOworICAgICAgICB9CisgICAg
fQorCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzVG8o
VmFyaWFibGVFbnZpcm9ubWVudCYgb3V0ZXIpIGNvbnN0IHsKICAgICAgICAgLy8gVXNlZCBieSB0
aGUgUGFyc2VyIHRvIHRyYW5zZmVyIHJlY29yZGVkIHVzZXMgb2YgUHJpdmF0ZU5hbWVzIGZyb20g
YW4KICAgICAgICAgLy8gaW5uZXIgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCBpbnRvIGFuIG91dGVy
IG9uZSwgaW4gY2FzZSBhIFBORSBpcyB1c2VkCkBAIC0yNDQsNyArMzA0LDcgQEAgcHVibGljOgog
ICAgICAgICB9CiAgICAgICAgIFJhcmVEYXRhKGNvbnN0IFJhcmVEYXRhJikgPSBkZWZhdWx0Owog
ICAgICAgICBSYXJlRGF0YSYgb3BlcmF0b3I9KGNvbnN0IFJhcmVEYXRhJikgPSBkZWZhdWx0Owot
ICAgICAgICBQcml2YXRlTmFtZXMgbV9wcml2YXRlTmFtZXM7CisgICAgICAgIFByaXZhdGVOYW1l
RW52aXJvbm1lbnQgbV9wcml2YXRlTmFtZXM7CiAgICAgfTsKIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAppbmRleCBjZmRjOWVkYjA1
NWE4MzE5MDE3YTg5M2M0ZWI2NWQ0NjU4YWJkNDhhLi4yYmIzMGQ1Nzk1MDNiMzIzMTVkNGJlNWEz
ZTc5MjM4NDEwMmM3MGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DYWNoZWRUeXBlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2Fj
aGVkVHlwZXMuY3BwCkBAIC05OTQsNiArOTk0LDcgQEAgcHVibGljOgogICAgICAgICBtX2JpdFZl
Y3RvcnMuZW5jb2RlKGVuY29kZXIsIHJhcmVEYXRhLm1fYml0VmVjdG9ycyk7CiAgICAgICAgIG1f
Y29uc3RhbnRJZGVudGlmaWVyU2V0cy5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9jb25zdGFu
dElkZW50aWZpZXJTZXRzKTsKICAgICAgICAgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9
IHJhcmVEYXRhLm1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI7CisgICAgICAgIG1fcHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQgPSByYXJlRGF0YS5tX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50Owog
ICAgIH0KIAogICAgIFVubGlua2VkQ29kZUJsb2NrOjpSYXJlRGF0YSogZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpIGNvbnN0CkBAIC0xMDA4LDYgKzEwMDksNyBAQCBwdWJsaWM6CiAgICAgICAgIG1f
Yml0VmVjdG9ycy5kZWNvZGUoZGVjb2RlciwgcmFyZURhdGEtPm1fYml0VmVjdG9ycyk7CiAgICAg
ICAgIG1fY29uc3RhbnRJZGVudGlmaWVyU2V0cy5kZWNvZGUoZGVjb2RlciwgcmFyZURhdGEtPm1f
Y29uc3RhbnRJZGVudGlmaWVyU2V0cyk7CiAgICAgICAgIHJhcmVEYXRhLT5tX25lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyID0gbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjsKKyAgICAgICAg
cmFyZURhdGEtPm1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBtX3ByaXZhdGVCcmFuZFJlcXVp
cmVtZW50OwogICAgICAgICByZXR1cm4gcmFyZURhdGE7CiAgICAgfQogCkBAIC0xMDIxLDggKzEw
MjMsMTEgQEAgcHJpdmF0ZToKICAgICBDYWNoZWRWZWN0b3I8Q2FjaGVkQml0VmVjdG9yPiBtX2Jp
dFZlY3RvcnM7CiAgICAgQ2FjaGVkVmVjdG9yPENhY2hlZENvbnN0YW50SWRlbnRpZmllclNldEVu
dHJ5PiBtX2NvbnN0YW50SWRlbnRpZmllclNldHM7CiAgICAgdW5zaWduZWQgbV9uZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplciA6IDE7CisgICAgdW5zaWduZWQgbV9wcml2YXRlQnJhbmRSZXF1aXJl
bWVudCA6IDE7CiB9OwogCit0eXBlZGVmIENhY2hlZEhhc2hNYXA8Q2FjaGVkUmVmUHRyPENhY2hl
ZFVuaXF1ZWRTdHJpbmdJbXBsLCBVbmlxdWVkU3RyaW5nSW1wbCwgV1RGOjpQYWNrZWRQdHJUcmFp
dHM8VW5pcXVlZFN0cmluZ0ltcGw+PiwgUHJpdmF0ZU5hbWVFbnRyeSwgSWRlbnRpZmllclJlcEhh
c2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50
cnlIYXNoVHJhaXRzPiBDYWNoZWRQcml2YXRlTmFtZUVudmlyb25tZW50OworCiBjbGFzcyBDYWNo
ZWRWYXJpYWJsZUVudmlyb25tZW50UmFyZURhdGEgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFZhcmlh
YmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhPiB7CiBwdWJsaWM6CiAgICAgdm9pZCBlbmNvZGUoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGEmIHJhcmVE
YXRhKQpAQCAtMTAzNiw3ICsxMDQxLDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAg
ICBDYWNoZWRIYXNoTWFwPENhY2hlZFJlZlB0cjxDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbCwgVW5p
cXVlZFN0cmluZ0ltcGwsIFdURjo6UGFja2VkUHRyVHJhaXRzPFVuaXF1ZWRTdHJpbmdJbXBsPj4s
IFByaXZhdGVOYW1lRW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxV
bmlxdWVkU3RyaW5nSW1wbD4+LCBQcml2YXRlTmFtZUVudHJ5SGFzaFRyYWl0cz4gbV9wcml2YXRl
TmFtZXM7CisgICAgQ2FjaGVkUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCBtX3ByaXZhdGVOYW1lczsK
IH07CiAKIGNsYXNzIENhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnQgOiBwdWJsaWMgQ2FjaGVkT2Jq
ZWN0PFZhcmlhYmxlRW52aXJvbm1lbnQ+IHsKQEAgLTEyMTMsNyArMTIxOCw3IEBAIHB1YmxpYzoK
ICAgICB9CiAKIHByaXZhdGU6Ci0gICAgQ2FjaGVkSGFzaFNldDxDYWNoZWRSZWZQdHI8Q2FjaGVk
VW5pcXVlZFN0cmluZ0ltcGw+LCBJZGVudGlmaWVyUmVwSGFzaD4gbV9wcml2YXRlTmFtZXM7Cisg
ICAgQ2FjaGVkSGFzaE1hcDxDYWNoZWRSZWZQdHI8Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGwsIFVu
aXF1ZWRTdHJpbmdJbXBsLCBXVEY6OlBhY2tlZFB0clRyYWl0czxVbmlxdWVkU3RyaW5nSW1wbD4+
LCBQcml2YXRlTmFtZUVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8
VW5pcXVlZFN0cmluZ0ltcGw+PiwgUHJpdmF0ZU5hbWVFbnRyeUhhc2hUcmFpdHM+IG1fcHJpdmF0
ZU5hbWVzOwogfTsKIAogY2xhc3MgQ2FjaGVkU3ltYm9sVGFibGUgOiBwdWJsaWMgQ2FjaGVkT2Jq
ZWN0PFN5bWJvbFRhYmxlPiB7CkBAIC0xNzkwLDYgKzE3OTUsNyBAQCBwdWJsaWM6CiAgICAgewog
ICAgICAgICBtX2NsYXNzU291cmNlLmVuY29kZShlbmNvZGVyLCByYXJlRGF0YS5tX2NsYXNzU291
cmNlKTsKICAgICAgICAgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5lbmNvZGUoZW5jb2Rlciwg
cmFyZURhdGEubV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CisgICAgICAgIG1fcGFyZW50UHJp
dmF0ZU5hbWVFbnZpcm9ubWVudC5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9wYXJlbnRQcml2
YXRlTmFtZUVudmlyb25tZW50KTsKICAgICB9CiAKICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZTo6UmFyZURhdGEqIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKSBjb25zdApAQCAtMTc5Nywx
MiArMTgwMywxNCBAQCBwdWJsaWM6CiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
OjpSYXJlRGF0YSogcmFyZURhdGEgPSBuZXcgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlJh
cmVEYXRhIHsgfTsKICAgICAgICAgbV9jbGFzc1NvdXJjZS5kZWNvZGUoZGVjb2RlciwgcmFyZURh
dGEtPm1fY2xhc3NTb3VyY2UpOwogICAgICAgICBtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzLmRl
Y29kZShkZWNvZGVyLCByYXJlRGF0YS0+bV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CisgICAg
ICAgIG1fcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudC5kZWNvZGUoZGVjb2RlciwgcmFyZURh
dGEtPm1fcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCk7CiAgICAgICAgIHJldHVybiByYXJl
RGF0YTsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgQ2FjaGVkU291cmNlQ29kZVdpdGhvdXRQcm92
aWRlciBtX2NsYXNzU291cmNlOwogICAgIENhY2hlZFJlZlB0cjxDYWNoZWRURFpFbnZpcm9ubWVu
dExpbms+IG1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7CisgICAgQ2FjaGVkUHJpdmF0ZU5hbWVF
bnZpcm9ubWVudCBtX3BhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQ7CiB9OwogCiBjbGFzcyBD
YWNoZWRGdW5jdGlvbkV4ZWN1dGFibGUgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlPiB7CkBAIC0xODM4LDYgKzE4NDYsNyBAQCBwdWJsaWM6CiAgICAgdW5z
aWduZWQgc3VwZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdXBlckJpbmRpbmc7IH0KICAg
ICB1bnNpZ25lZCBkZXJpdmVkQ29udGV4dFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2Rlcml2ZWRD
b250ZXh0VHlwZTsgfQogICAgIHVuc2lnbmVkIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkg
Y29uc3QgeyByZXR1cm4gbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjsgfQorICAgIHVuc2ln
bmVkIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlQnJh
bmRSZXF1aXJlbWVudDsgfQogCiAgICAgSWRlbnRpZmllciBuYW1lKERlY29kZXImIGRlY29kZXIp
IGNvbnN0IHsgcmV0dXJuIG1fbmFtZS5kZWNvZGUoZGVjb2Rlcik7IH0KICAgICBJZGVudGlmaWVy
IGVjbWFOYW1lKERlY29kZXImIGRlY29kZXIpIGNvbnN0IHsgcmV0dXJuIG1fZWNtYU5hbWUuZGVj
b2RlKGRlY29kZXIpOyB9CkBAIC0xODY2LDcgKzE4NzUsOCBAQCBwcml2YXRlOgogICAgIHVuc2ln
bmVkIG1fcGFyYW1ldGVyc1N0YXJ0T2Zmc2V0IDogMzE7CiAgICAgdW5zaWduZWQgbV90eXBlUHJv
ZmlsaW5nU3RhcnRPZmZzZXQ7CiAgICAgdW5zaWduZWQgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0
OwotICAgIHVuc2lnbmVkIG1fcGFyYW1ldGVyQ291bnQ7CisgICAgdW5zaWduZWQgbV9wYXJhbWV0
ZXJDb3VudDozMTsKKyAgICB1bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsK
ICAgICBTb3VyY2VQYXJzZU1vZGUgbV9zb3VyY2VQYXJzZU1vZGU7CiAgICAgdW5zaWduZWQgbV9j
b25zdHJ1Y3RvcktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZnVuY3Rpb25Nb2RlIDogMjsgLy8g
RnVuY3Rpb25Nb2RlCkBAIC0xOTIzLDcgKzE5MzMsNiBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQg
aXNDbGFzc0NvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzQ2xhc3NDb250ZXh0OyB9CiAgICAg
dW5zaWduZWQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gbV9jb25zdHJ1Y3Rvcktp
bmQ7IH0KICAgICB1bnNpZ25lZCBkZXJpdmVkQ29udGV4dFR5cGUoKSBjb25zdCB7IHJldHVybiBt
X2Rlcml2ZWRDb250ZXh0VHlwZTsgfQotICAgIHVuc2lnbmVkIG5lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjsgfQog
ICAgIHVuc2lnbmVkIGV2YWxDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXZhbENvbnRl
eHRUeXBlOyB9CiAgICAgdW5zaWduZWQgaGFzVGFpbENhbGxzKCkgY29uc3QgeyByZXR1cm4gbV9o
YXNUYWlsQ2FsbHM7IH0KICAgICB1bnNpZ25lZCBoYXNDaGVja3BvaW50cygpIGNvbnN0IHsgcmV0
dXJuIG1faGFzQ2hlY2twb2ludHM7IH0KQEAgLTE5NTUsNyArMTk2NCw2IEBAIHByaXZhdGU6CiAg
ICAgdW5zaWduZWQgbV9pc0NsYXNzQ29udGV4dCA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1
Y3RvcktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZGVyaXZlZENvbnRleHRUeXBlIDogMjsKLSAg
ICB1bnNpZ25lZCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIDogMTsKICAgICB1bnNpZ25l
ZCBtX2V2YWxDb250ZXh0VHlwZSA6IDI7CiAgICAgdW5zaWduZWQgbV9oYXNUYWlsQ2FsbHMgOiAx
OwogICAgIHVuc2lnbmVkIG1fY29kZVR5cGUgOiAyOwpAQCAtMjIzNiw2ICsyMjQ0LDcgQEAgQUxX
QVlTX0lOTElORSB2b2lkIENhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFVubGkKICAgICBtX3N1cGVyQmluZGluZyA9IGV4ZWN1dGFibGUubV9z
dXBlckJpbmRpbmc7CiAgICAgbV9kZXJpdmVkQ29udGV4dFR5cGUgPSBleGVjdXRhYmxlLm1fZGVy
aXZlZENvbnRleHRUeXBlOwogICAgIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSBleGVj
dXRhYmxlLm1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI7CisgICAgbV9wcml2YXRlQnJhbmRS
ZXF1aXJlbWVudCA9IGV4ZWN1dGFibGUubV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudDsKIAogICAg
IG1fcmFyZURhdGEuZW5jb2RlKGVuY29kZXIsIGV4ZWN1dGFibGUubV9yYXJlRGF0YS5nZXQoKSk7
CiAKQEAgLTIyNzcsNiArMjI4Niw3IEBAIEFMV0FZU19JTkxJTkUgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKERlY29kZXImIGRlCiAgICAgLCBt
X3R5cGVQcm9maWxpbmdTdGFydE9mZnNldChjYWNoZWRFeGVjdXRhYmxlLnR5cGVQcm9maWxpbmdT
dGFydE9mZnNldCgpKQogICAgICwgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KGNhY2hlZEV4ZWN1
dGFibGUudHlwZVByb2ZpbGluZ0VuZE9mZnNldCgpKQogICAgICwgbV9wYXJhbWV0ZXJDb3VudChj
YWNoZWRFeGVjdXRhYmxlLnBhcmFtZXRlckNvdW50KCkpCisgICAgLCBtX3ByaXZhdGVCcmFuZFJl
cXVpcmVtZW50KGNhY2hlZEV4ZWN1dGFibGUucHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSkKICAg
ICAsIG1fZmVhdHVyZXMoY2FjaGVkRXhlY3V0YWJsZS5mZWF0dXJlcygpKQogICAgICwgbV9zb3Vy
Y2VQYXJzZU1vZGUoY2FjaGVkRXhlY3V0YWJsZS5zb3VyY2VQYXJzZU1vZGUoKSkKICAgICAsIG1f
Y29uc3RydWN0b3JLaW5kKGNhY2hlZEV4ZWN1dGFibGUuY29uc3RydWN0b3JLaW5kKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRleCAxYzczYjRjMzI0
MmZiMDdlMjhmYWUzZDFiYTFkZTczOGFiYjU3YTI1Li5jNDI5NzJhZmZkYzlmMjdhYzExYzlkZGM1
YzlkMzE4ZTkyYTY0ZDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVD
YWNoZS5jcHAKQEAgLTcxLDEzICs3MSwxMyBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZVVubGlua2Vk
Q29kZUJsb2NrRm9yRnVuY3Rpb25zKFZNJiB2bSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubAogfQog
CiB0ZW1wbGF0ZSA8Y2xhc3MgVW5saW5rZWRDb2RlQmxvY2tUeXBlLCBjbGFzcyBFeGVjdXRhYmxl
VHlwZSA9IFNjcmlwdEV4ZWN1dGFibGU+Ci1VbmxpbmtlZENvZGVCbG9ja1R5cGUqIGdlbmVyYXRl
VW5saW5rZWRDb2RlQmxvY2tJbXBsKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBK
U1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1v
ZGUsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgUGFy
c2VyRXJyb3ImIGVycm9yLCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlLCBEZXJpdmVk
Q29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQsIGNvbnN0IFREWkVudmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclREWiA9IG51bGxwdHIsIGNv
bnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzID0gbnVsbHB0
ciwgRXhlY3V0YWJsZVR5cGUqIGV4ZWN1dGFibGUgPSBudWxscHRyKQorVW5saW5rZWRDb2RlQmxv
Y2tUeXBlKiBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrSW1wbChWTSYgdm0sIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIEpTUGFyc2VyU2Ny
aXB0TW9kZSBzY3JpcHRNb2RlLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2Vu
ZXJhdGlvbk1vZGUsIFBhcnNlckVycm9yJiBlcnJvciwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250
ZXh0VHlwZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fy
cm93RnVuY3Rpb25Db250ZXh0LCBjb25zdCBURFpFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJU
RFogPSBudWxscHRyLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiBwcml2YXRlTmFtZUVu
dmlyb25tZW50ID0gbnVsbHB0ciwgRXhlY3V0YWJsZVR5cGUqIGV4ZWN1dGFibGUgPSBudWxscHRy
KQogewogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5
cGU+OjpSb290Tm9kZSBSb290Tm9kZTsKICAgICBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlv
biA9IGV4ZWN1dGFibGUgJiYgZXhlY3V0YWJsZS0+aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKCk7
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Um9vdE5vZGU+IHJvb3ROb2RlID0gcGFyc2U8Um9vdE5v
ZGU+KAotICAgICAgICB2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1v
ZGU6Ok5vdEJ1aWx0aW4sIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIENhY2hlVHlwZXM8VW5saW5r
ZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJy
b3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZGVyaXZlZENvbnRleHRUeXBlLCBl
dmFsQ29udGV4dFR5cGUsIG51bGxwdHIsIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzLCBudWxscHRy
LCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24pOworICAgICAgICB2bSwgc291cmNlLCBJZGVudGlm
aWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIHN0cmljdE1vZGUsIHNjcmlw
dE1vZGUsIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBTdXBl
ckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6Tm9u
ZSwgZGVyaXZlZENvbnRleHRUeXBlLCBldmFsQ29udGV4dFR5cGUsIG51bGxwdHIsIHByaXZhdGVO
YW1lRW52aXJvbm1lbnQsIG51bGxwdHIsIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbik7CiAKICAg
ICBpZiAoIXJvb3ROb2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTk0LDkgKzk0LDEy
IEBAIFVubGlua2VkQ29kZUJsb2NrVHlwZSogZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ltcGwo
Vk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzCiAgICAgYm9vbCB1c2VzRXZhbCA9IHJvb3ROb2Rl
LT5mZWF0dXJlcygpICYgRXZhbEZlYXR1cmU7CiAgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSByb290
Tm9kZS0+ZmVhdHVyZXMoKSAmIFN0cmljdE1vZGVGZWF0dXJlID8gRUNNQU1vZGU6OnN0cmljdCgp
IDogRUNNQU1vZGU6OnNsb3BweSgpOwogICAgIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyID0gTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5v
OwotICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19zYW1lX3Y8RXhlY3V0YWJsZVR5cGUsIERpcmVj
dEV2YWxFeGVjdXRhYmxlPikKKyAgICBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJh
bmRSZXF1aXJlbWVudCA9IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lOworICAgIGlmIGNv
bnN0ZXhwciAoc3RkOjppc19zYW1lX3Y8RXhlY3V0YWJsZVR5cGUsIERpcmVjdEV2YWxFeGVjdXRh
YmxlPikgewogICAgICAgICBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9IGV4ZWN1dGFibGUt
Pm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCk7Ci0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0
YWJsZUluZm8odXNlc0V2YWwsIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBz
Y3JpcHRNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgQ2FjaGVUeXBlczxVbmxpbmtlZENv
ZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGZhbHNlLCBldmFsQ29udGV4
dFR5cGUpOworICAgICAgICBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9IGV4ZWN1dGFibGUtPnBy
aXZhdGVCcmFuZFJlcXVpcmVtZW50KCk7CisgICAgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1
dGFibGVJbmZvKHVzZXNFdmFsLCBmYWxzZSwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGZhbHNl
LCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIHNjcmlwdE1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVl
ZGVkLCBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwgZGVyaXZl
ZENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgaXNBcnJvd0Z1bmN0aW9u
Q29udGV4dCwgZmFsc2UsIGV2YWxDb250ZXh0VHlwZSk7CiAKICAgICBVbmxpbmtlZENvZGVCbG9j
a1R5cGUqIHVubGlua2VkQ29kZUJsb2NrID0gVW5saW5rZWRDb2RlQmxvY2tUeXBlOjpjcmVhdGUo
dm0sIGV4ZWN1dGFibGVJbmZvLCBjb2RlR2VuZXJhdGlvbk1vZGUpOwogICAgIHVubGlua2VkQ29k
ZUJsb2NrLT5yZWNvcmRQYXJzZShyb290Tm9kZS0+ZmVhdHVyZXMoKSwgcm9vdE5vZGUtPmhhc0Nh
cHR1cmVkVmFyaWFibGVzKCksIGxpbmVDb3VudCwgdW5saW5rZWRFbmRDb2x1bW4pOwpAQCAtMTA4
LDcgKzExMSw3IEBAIFVubGlua2VkQ29kZUJsb2NrVHlwZSogZ2VuZXJhdGVVbmxpbmtlZENvZGVC
bG9ja0ltcGwoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzCiAgICAgUmVmUHRyPFREWkVudmly
b25tZW50TGluaz4gcGFyZW50VmFyaWFibGVzVW5kZXJURFo7CiAgICAgaWYgKHZhcmlhYmxlc1Vu
ZGVyVERaKQogICAgICAgICBwYXJlbnRWYXJpYWJsZXNVbmRlclREWiA9IFREWkVudmlyb25tZW50
TGluazo6Y3JlYXRlKHZtLm1fY29tcGFjdFZhcmlhYmxlTWFwLT5nZXQoKnZhcmlhYmxlc1VuZGVy
VERaKSwgbnVsbHB0cik7Ci0gICAgZXJyb3IgPSBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUo
dm0sIHJvb3ROb2RlLmdldCgpLCBzb3VyY2UsIHVubGlua2VkQ29kZUJsb2NrLCBjb2RlR2VuZXJh
dGlvbk1vZGUsIHBhcmVudFZhcmlhYmxlc1VuZGVyVERaLCBlY21hTW9kZSk7CisgICAgZXJyb3Ig
PSBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUodm0sIHJvb3ROb2RlLmdldCgpLCBzb3VyY2Us
IHVubGlua2VkQ29kZUJsb2NrLCBjb2RlR2VuZXJhdGlvbk1vZGUsIHBhcmVudFZhcmlhYmxlc1Vu
ZGVyVERaLCBwcml2YXRlTmFtZUVudmlyb25tZW50LCBlY21hTW9kZSk7CiAKICAgICBpZiAoZXJy
b3IuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTExNywxNCArMTIwLDE0
IEBAIFVubGlua2VkQ29kZUJsb2NrVHlwZSogZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ltcGwo
Vk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzCiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBVbmxpbmtl
ZENvZGVCbG9ja1R5cGUsIGNsYXNzIEV4ZWN1dGFibGVUeXBlPgotVW5saW5rZWRDb2RlQmxvY2tU
eXBlKiBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrKFZNJiB2bSwgRXhlY3V0YWJsZVR5cGUqIGV4
ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJTdHJpY3RNb2RlIHN0
cmljdE1vZGUsIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBPcHRpb25TZXQ8Q29kZUdl
bmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIFBhcnNlckVycm9yJiBlcnJvciwgRXZh
bENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgY29uc3QgVERaRW52aXJvbm1lbnQqIHZhcmlh
Ymxlc1VuZGVyVERaID0gbnVsbHB0ciwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50
U2NvcGVQcml2YXRlTmFtZXMgPSBudWxscHRyKQorVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBnZW5l
cmF0ZVVubGlua2VkQ29kZUJsb2NrKFZNJiB2bSwgRXhlY3V0YWJsZVR5cGUqIGV4ZWN1dGFibGUs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUs
IEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25N
b2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIFBhcnNlckVycm9yJiBlcnJvciwgRXZhbENvbnRleHRU
eXBlIGV2YWxDb250ZXh0VHlwZSwgY29uc3QgVERaRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVy
VERaID0gbnVsbHB0ciwgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogcHJpdmF0ZU5hbWVF
bnZpcm9ubWVudCA9IG51bGxwdHIpCiB7Ci0gICAgcmV0dXJuIGdlbmVyYXRlVW5saW5rZWRDb2Rl
QmxvY2tJbXBsPFVubGlua2VkQ29kZUJsb2NrVHlwZSwgRXhlY3V0YWJsZVR5cGU+KHZtLCBzb3Vy
Y2UsIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIGNvZGVHZW5lcmF0aW9uTW9kZSwgZXJyb3IsIGV2
YWxDb250ZXh0VHlwZSwgZXhlY3V0YWJsZS0+ZGVyaXZlZENvbnRleHRUeXBlKCksIGV4ZWN1dGFi
bGUtPmlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgdmFyaWFibGVzVW5kZXJURFosIHBhcmVudFNj
b3BlUHJpdmF0ZU5hbWVzLCBleGVjdXRhYmxlKTsKKyAgICByZXR1cm4gZ2VuZXJhdGVVbmxpbmtl
ZENvZGVCbG9ja0ltcGw8VW5saW5rZWRDb2RlQmxvY2tUeXBlLCBFeGVjdXRhYmxlVHlwZT4odm0s
IHNvdXJjZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgY29kZUdlbmVyYXRpb25Nb2RlLCBlcnJv
ciwgZXZhbENvbnRleHRUeXBlLCBleGVjdXRhYmxlLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgZXhl
Y3V0YWJsZS0+aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCB2YXJpYWJsZXNVbmRlclREWiwgcHJp
dmF0ZU5hbWVFbnZpcm9ubWVudCwgZXhlY3V0YWJsZSk7CiB9CiAKLVVubGlua2VkRXZhbENvZGVC
bG9jayogZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ZvckRpcmVjdEV2YWwoVk0mIHZtLCBEaXJl
Y3RFdmFsRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBK
U1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1v
ZGUsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgUGFy
c2VyRXJyb3ImIGVycm9yLCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlLCBjb25zdCBU
RFpFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFosIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1l
bnQqIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzKQorVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBnZW5l
cmF0ZVVubGlua2VkQ29kZUJsb2NrRm9yRGlyZWN0RXZhbChWTSYgdm0sIERpcmVjdEV2YWxFeGVj
dXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTUGFyc2VyU3Ry
aWN0TW9kZSBzdHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgT3B0aW9u
U2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBQYXJzZXJFcnJvciYg
ZXJyb3IsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIGNvbnN0IFREWkVudmlyb25t
ZW50KiB2YXJpYWJsZXNVbmRlclREWiwgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogcHJp
dmF0ZU5hbWVFbnZpcm9ubWVudCkKIHsKLSAgICByZXR1cm4gZ2VuZXJhdGVVbmxpbmtlZENvZGVC
bG9jazxVbmxpbmtlZEV2YWxDb2RlQmxvY2s+KHZtLCBleGVjdXRhYmxlLCBzb3VyY2UsIHN0cmlj
dE1vZGUsIHNjcmlwdE1vZGUsIGNvZGVHZW5lcmF0aW9uTW9kZSwgZXJyb3IsIGV2YWxDb250ZXh0
VHlwZSwgdmFyaWFibGVzVW5kZXJURFosIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzKTsKKyAgICBy
ZXR1cm4gZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9jazxVbmxpbmtlZEV2YWxDb2RlQmxvY2s+KHZt
LCBleGVjdXRhYmxlLCBzb3VyY2UsIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIGNvZGVHZW5lcmF0
aW9uTW9kZSwgZXJyb3IsIGV2YWxDb250ZXh0VHlwZSwgdmFyaWFibGVzVW5kZXJURFosIHByaXZh
dGVOYW1lRW52aXJvbm1lbnQpOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgVW5saW5rZWRDb2RlQmxv
Y2tUeXBlPgpAQCAtMjQ4LDcgKzI1MSw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBD
b2RlQ2FjaGU6OmdldFVubGlua2VkR2xvYmFsRnVuY3Rpb25FeGVjdXRhYmxlKFZNJiB2CiAgICAg
Ly8gVGhlIEZ1bmN0aW9uIGNvbnN0cnVjdG9yIG9ubHkgaGFzIGFjY2VzcyB0byBnbG9iYWwgdmFy
aWFibGVzLCBzbyBubyB2YXJpYWJsZXMgd2lsbCBiZSB1bmRlciBURFogdW5sZXNzIHRoZXkncmUK
ICAgICAvLyBpbiB0aGUgZ2xvYmFsIGxleGljYWwgZW52aXJvbm1lbnQsIHdoaWNoIHdlIGFsd2F5
cyBURFogY2hlY2sgYWNjZXNzZXMgZnJvbS4KICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVj
dEFiaWxpdHkgPSBjb25zdHJ1Y3RBYmlsaXR5Rm9yUGFyc2VNb2RlKG1ldGFkYXRhLT5wYXJzZU1v
ZGUoKSk7Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJs
ZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUodm0sIHNvdXJjZSwgbWV0YWRh
dGEsIFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2Ny
aXB0TW9kZTo6Q2xhc3NpYywgbnVsbHB0ciwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBOZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8pOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3Jl
YXRlKHZtLCBzb3VyY2UsIG1ldGFkYXRhLCBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1
Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIG51bGxwdHIsIFdURjo6bnVs
bG9wdCwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
cjo6Tm8sIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lKTsKIAogICAgIGlmICghc291cmNl
LnByb3ZpZGVyKCktPnNvdXJjZVVSTERpcmVjdGl2ZSgpLmlzTnVsbCgpKQogICAgICAgICBmdW5j
dGlvbkV4ZWN1dGFibGUtPnNldFNvdXJjZVVSTERpcmVjdGl2ZShzb3VyY2UucHJvdmlkZXIoKS0+
c291cmNlVVJMRGlyZWN0aXZlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29kZUNhY2hlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2Rl
Q2FjaGUuaAppbmRleCA5Y2MxY2E3MDA0NDc5Y2U1N2QyM2M2NDQ3Yzg0YzFjYzhkNmM5ZmRiLi42
MGE3N2QyYWYzYWQwYWI3NDJiNDA0N2I0OTY3MmY4ZjMyMTljOTczIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaApAQCAtMjU0LDcgKzI1NCw3IEBAIHRlbXBsYXRl
IDw+IHN0cnVjdCBDYWNoZVR5cGVzPFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaz4gewog
ICAgIHN0YXRpYyBjb25zdGV4cHIgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IFNvdXJjZVBh
cnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVNb2RlOwogfTsKIAotVW5saW5rZWRFdmFsQ29kZUJsb2Nr
KiBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrRm9yRGlyZWN0RXZhbChWTSYsIERpcmVjdEV2YWxF
eGVjdXRhYmxlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyU3RyaWN0TW9kZSwgSlNQYXJz
ZXJTY3JpcHRNb2RlLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgUGFyc2VyRXJyb3Im
LCBFdmFsQ29udGV4dFR5cGUsIGNvbnN0IFREWkVudmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclRE
WiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVQcml2YXRlTmFtZXMpOwor
VW5saW5rZWRFdmFsQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrRm9yRGlyZWN0
RXZhbChWTSYsIERpcmVjdEV2YWxFeGVjdXRhYmxlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFy
c2VyU3RyaWN0TW9kZSwgSlNQYXJzZXJTY3JpcHRNb2RlLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRp
b25Nb2RlPiwgUGFyc2VyRXJyb3ImLCBFdmFsQ29udGV4dFR5cGUsIGNvbnN0IFREWkVudmlyb25t
ZW50KiB2YXJpYWJsZXNVbmRlclREWiwgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCopOwog
VW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiByZWN1cnNpdmVseUdlbmVyYXRlVW5saW5rZWRDb2Rl
QmxvY2tGb3JQcm9ncmFtKFZNJiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyU3RyaWN0TW9k
ZSwgSlNQYXJzZXJTY3JpcHRNb2RlLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgUGFy
c2VyRXJyb3ImLCBFdmFsQ29udGV4dFR5cGUpOwogVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrKiByZWN1cnNpdmVseUdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tGb3JNb2R1bGVQcm9ncmFt
KFZNJiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyU3RyaWN0TW9kZSwgSlNQYXJzZXJTY3Jp
cHRNb2RlLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgUGFyc2VyRXJyb3ImLCBFdmFs
Q29udGV4dFR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKaW5kZXggYzdjMjljMDUwMjk2MjMxMGQzNjlmNGU5
NDYxNmI5ZDEwMmRiNjkyNi4uZjZmNzkzMDdkZmU3OWY4YTJiMWI4ODBiMWI4NmZiYjI2OWM0MjVj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4
ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2
YWxFeGVjdXRhYmxlLmNwcApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAot
RGlyZWN0RXZhbEV4ZWN1dGFibGUqIERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBEZXJpdmVk
Q29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
ciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0
LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250
ZXh0VHlwZSwgY29uc3QgVERaRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaLCBjb25zdCBW
YXJpYWJsZUVudmlyb25tZW50KiBwcml2YXRlTmFtZXMsIEVDTUFNb2RlIGVjbWFNb2RlKQorRGly
ZWN0RXZhbEV4ZWN1dGFibGUqIERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBEZXJpdmVkQ29u
dGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBu
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0lu
c2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIGNv
bnN0IFREWkVudmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclREWiwgY29uc3QgUHJpdmF0ZU5hbWVF
bnZpcm9ubWVudCogcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTQ0LDcgKzQ0LDcgQEAgRGlyZWN0RXZhbEV4ZWN1dGFi
bGUqIERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byogZXhlY3V0
YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERpcmVjdEV2YWxFeGVjdXRhYmxlPih2
bS5oZWFwKSkgRGlyZWN0RXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGVjbWFN
b2RlLmlzU3RyaWN0KCksIGRlcml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwg
ZXZhbENvbnRleHRUeXBlKTsKKyAgICBhdXRvKiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8RGlyZWN0RXZhbEV4ZWN1dGFibGU+KHZtLmhlYXApKSBEaXJlY3RFdmFsRXhl
Y3V0YWJsZShnbG9iYWxPYmplY3QsIHNvdXJjZSwgZWNtYU1vZGUuaXNTdHJpY3QoKSwgZGVyaXZl
ZENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgcHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlv
biwgZXZhbENvbnRleHRUeXBlKTsKICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbih2bSk7
CiAKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKQEAgLTUyLDcgKzUyLDcgQEAgRGlyZWN0RXZhbEV4
ZWN1dGFibGUqIERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwKICAgICBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJh
dGlvbk1vZGUgPSBnbG9iYWxPYmplY3QtPmRlZmF1bHRDb2RlR2VuZXJhdGlvbk1vZGUoKTsKIAog
ICAgIC8vIFdlIGRvbid0IGJvdGhlciB3aXRoIENvZGVDYWNoZSBoZXJlIGJlY2F1c2UgZGlyZWN0
IGV2YWwgdXNlcyBhIHNwZWNpYWxpemVkIERpcmVjdEV2YWxDb2RlQ2FjaGUuCi0gICAgVW5saW5r
ZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZEV2YWxDb2RlID0gZ2VuZXJhdGVVbmxpbmtlZENvZGVC
bG9ja0ZvckRpcmVjdEV2YWwodm0sIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPnNvdXJjZSgpLCBz
dHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIGNvZGVHZW5lcmF0aW9uTW9k
ZSwgZXJyb3IsIGV2YWxDb250ZXh0VHlwZSwgdmFyaWFibGVzVW5kZXJURFosIHByaXZhdGVOYW1l
cyk7CisgICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZEV2YWxDb2RlID0gZ2VuZXJh
dGVVbmxpbmtlZENvZGVCbG9ja0ZvckRpcmVjdEV2YWwodm0sIGV4ZWN1dGFibGUsIGV4ZWN1dGFi
bGUtPnNvdXJjZSgpLCBzdHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIGNv
ZGVHZW5lcmF0aW9uTW9kZSwgZXJyb3IsIGV2YWxDb250ZXh0VHlwZSwgdmFyaWFibGVzVW5kZXJU
RFosIHByaXZhdGVOYW1lRW52aXJvbm1lbnQpOwogCiAgICAgaWYgKGdsb2JhbE9iamVjdC0+aGFz
RGVidWdnZXIoKSkKICAgICAgICAgZ2xvYmFsT2JqZWN0LT5kZWJ1Z2dlcigpLT5zb3VyY2VQYXJz
ZWQoZ2xvYmFsT2JqZWN0LCBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLCBlcnJvci5s
aW5lKCksIGVycm9yLm1lc3NhZ2UoKSk7CkBAIC02NywxMCArNjcsMTAgQEAgRGlyZWN0RXZhbEV4
ZWN1dGFibGUqIERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwKICAgICByZXR1cm4gZXhlY3V0YWJsZTsKIH0KIAotRGlyZWN0RXZhbEV4ZWN1
dGFibGU6OkRpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRD
b250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
IG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQs
IGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRl
eHRUeXBlKQotICAgIDogRXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGluU3Ry
aWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBp
c0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIpCitEaXJlY3RFdmFsRXhlY3V0YWJsZTo6RGlyZWN0RXZhbEV4ZWN1dGFibGUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBi
b29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlw
ZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIs
IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29sIGlz
QXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFs
Q29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKQorICAgIDogRXZhbEV4ZWN1dGFibGUoZ2xvYmFs
T2JqZWN0LCBzb3VyY2UsIGluU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fy
cm93RnVuY3Rpb25Db250ZXh0LCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250ZXh0
VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50
KQogewotICAgIEFTU0VSVChuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9PSBOZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplcjo6Tm8gfHwgZGVyaXZlZENvbnRleHRUeXBlID09IERlcml2ZWRDb250
ZXh0VHlwZTo6RGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCk7CisgICAgQVNTRVJUKChuZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplciA9PSBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8gJiYg
cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPT0gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmUp
IHx8IGRlcml2ZWRDb250ZXh0VHlwZSA9PSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRDb25z
dHJ1Y3RvckNvbnRleHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oCmluZGV4IDhj
NTJjYjY4MWU4ZDA1ZDI2NGVhZjMwZDZjOTRkMTNiZTcxZDM1ODguLjM2MmNlZDhkN2IxNzExMjBm
MmIyYmU1ZmQ1Yzk1NjBlMzA1OWVlMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuaApAQCAtMzEsOSArMzEsOSBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogY2xhc3MgRGlyZWN0RXZhbEV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMg
RXZhbEV4ZWN1dGFibGUgewogcHVibGljOgotICAgIHN0YXRpYyBEaXJlY3RFdmFsRXhlY3V0YWJs
ZSogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIERlcml2ZWRDb250
ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0aW9u
Q29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSwg
Y29uc3QgVERaRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBjb25zdCBWYXJp
YWJsZUVudmlyb25tZW50KiBwcml2YXRlTmFtZXMsIEVDTUFNb2RlKTsKKyAgICBzdGF0aWMgRGly
ZWN0RXZhbEV4ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNv
ZGUmLCBEZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2
YXRlQnJhbmRSZXF1aXJlbWVudCwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlz
SW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBlLCBjb25zdCBURFpFbnZpcm9u
bWVudCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1l
bnQqLCBFQ01BTW9kZSk7CiBwcml2YXRlOgotICAgIERpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xv
YmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBEZXJp
dmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dG
dW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4
dFR5cGUpOworICAgIERpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3Qg
U291cmNlQ29kZSYsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUsIE5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCwgYm9vbCBp
c0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZh
bENvbnRleHRUeXBlKTsKIH07CiAKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKERpcmVjdEV2YWxFeGVj
dXRhYmxlKSA9PSBzaXplb2YoRXZhbEV4ZWN1dGFibGUpLCAiIik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5jcHAKaW5kZXggMmVjMTM3YTczNjIy
NDIxYjVmOWQxMjJjMjczNTE4ZDVlNjM4NjQ5Yy4uMGIzZDQxNjRhYTY1YWJkMDA0ZmVlOThiOGNl
Y2U4Nzk2ZGZiYzJhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXZhbEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2
YWxFeGVjdXRhYmxlLmNwcApAQCAtMzIsOSArMzIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNv
bnN0IENsYXNzSW5mbyBFdmFsRXhlY3V0YWJsZTo6c19pbmZvID0geyAiRXZhbEV4ZWN1dGFibGUi
LCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEV2
YWxFeGVjdXRhYmxlKSB9OwogCi1FdmFsRXhlY3V0YWJsZTo6RXZhbEV4ZWN1dGFibGUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGlu
U3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9v
bCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwg
RXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpCitFdmFsRXhlY3V0YWJsZTo6RXZhbEV4ZWN1
dGFibGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250
ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5h
cnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJl
cXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KQogICAgIDogQmFzZShnbG9iYWxPYmpl
Y3QtPnZtKCkuZXZhbEV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIGdsb2JhbE9iamVjdC0+dm0o
KSwgc291cmNlLCBpblN0cmljdENvbnRleHQsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1
bmN0aW9uQ29udGV4dCwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBldmFsQ29udGV4dFR5cGUs
IE5vSW50cmluc2ljKQogICAgICwgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcihzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4obmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpKQorICAgICwgbV9wcml2
YXRlQnJhbmRSZXF1aXJlbWVudChzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQpKQogewogICAgIEFTU0VSVChzb3VyY2UucHJvdmlkZXIoKS0+c291cmNlVHlwZSgp
ID09IFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaAppbmRleCA2N2U2OWM4NjI5YmEz
ZmIzODExNDgxMTM2YjhlN2U5OTQ4MGVkNzcxLi41MjYwMjUxYWNlZTIyNWU5YjU3OWY4ZTgyZjZl
ZGM4MTBjN2FkZWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
dmFsRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxF
eGVjdXRhYmxlLmgKQEAgLTYyLDEzICs2MiwxNCBAQCBwdWJsaWM6CiAKICAgICBERUNMQVJFX0lO
Rk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJu
IEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5k
OjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIFN1cGVyQmluZGluZzo6Tm90TmVl
ZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUoKSwg
bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBm
YWxzZSwgZXZhbENvbnRleHRUeXBlKCkpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJs
ZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1c2VzRXZhbCgpLCBmYWxzZSwg
UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5v
bmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQs
IFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBuZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNl
LCBldmFsQ29udGV4dFR5cGUoKSk7IH0KIAogICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlcygpIHsg
cmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJpYWJsZXMoKTsgfQogICAgIHVu
c2lnbmVkIG51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKCkgeyByZXR1cm4gbV91bmxpbmtl
ZEV2YWxDb2RlQmxvY2stPm51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKCk7IH0KICAgICB1
bnNpZ25lZCBudW1Ub3BMZXZlbEZ1bmN0aW9uRGVjbHMoKSB7IHJldHVybiBtX3VubGlua2VkRXZh
bENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KICAgICBib29sIGFsbG93RGly
ZWN0RXZhbENhY2hlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPmFs
bG93RGlyZWN0RXZhbENhY2hlKCk7IH0KICAgICBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBu
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyPihtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsg
fQorICAgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ+KG1fcHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQpOyB9CiAgICAgVGVtcGxhdGVPYmplY3RNYXAmIGVuc3VyZVRl
bXBsYXRlT2JqZWN0TWFwKFZNJik7CiAKIHByb3RlY3RlZDoKQEAgLTc2LDExICs3NywxMiBAQCBw
cm90ZWN0ZWQ6CiAgICAgZnJpZW5kIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CiAKICAgICB1c2lu
ZyBCYXNlOjpmaW5pc2hDcmVhdGlvbjsKLSAgICBFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVj
dCosIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRl
eHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFy
eUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsK
KyAgICBFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBi
b29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5j
dGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5
cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7
CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7
CiAKICAgICB1bnNpZ25lZCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIDogMTsKKyAgICB1
bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsKIAogICAgIFdyaXRlQmFycmll
cjxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPiBtX2V2YWxDb2RlQmxvY2s7CiAgICAgV3JpdGVC
YXJyaWVyPFVubGlua2VkRXZhbENvZGVCbG9jaz4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2s7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3Bw
CmluZGV4IDQxNGU3YmRmNzdhYjRmYzc2NGI1NjVkZjZmMWJkNGEwZDY0YjMwY2IuLjdhMjkxMGU4
ODdmMmExNGUyZjU4OTI3NWEwY2IyMThjN2I1ZWQ4MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCkBAIC0zMjYsNyArMzI2LDcg
QEAgSlNPYmplY3QqIGNyZWF0ZVREWkVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CiAKIEpTT2JqZWN0KiBjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBtYWtlU3RyaW5nKCJDYW5ub3QgYWNjZXNzIGludmFsaWQgcHJpdmF0ZSBmaWVsZCIpLCBk
ZWZhdWx0U291cmNlQXBwZW5kZXIsIFR5cGVOb3RoaW5nKTsKKyAgICByZXR1cm4gY3JlYXRlVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygiSW52YWxpZCBwcml2YXRlIG1lbWJlciBh
Y2Nlc3MiKSwgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBUeXBlTm90aGluZyk7CiB9CiAKIEpTT2Jq
ZWN0KiBjcmVhdGVSZWRlZmluZWRQcml2YXRlTmFtZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRp
cmVjdEV2YWxFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
ZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCmluZGV4IDk4ZDdlMmI4M2EyNzkxMmZhNTRjMmMyNWVl
MTgzYmZiNGUwNDZjNzMuLjc0OTgyMDUwMThjZGVmOGYzZjgzNjdiNGJiZTJlZjc5ZGJkMTdjMWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4
ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0
RXZhbEV4ZWN1dGFibGUuY3BwCkBAIC02OSw3ICs2OSw3IEBAIEluZGlyZWN0RXZhbEV4ZWN1dGFi
bGUqIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqCiBjb25zdGV4cHIgYm9vbCBpblN0cmljdENvbnRleHQgPSBmYWxzZTsKIGNvbnN0ZXhwciBi
b29sIGluc2lkZU9yZGluYXJ5RnVuY3Rpb24gPSBmYWxzZTsKIEluZGlyZWN0RXZhbEV4ZWN1dGFi
bGU6OkluZGlyZWN0RXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRl
eHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFs
Q29udGV4dFR5cGUpCi0gICAgOiBFdmFsRXhlY3V0YWJsZShnbG9iYWxPYmplY3QsIHNvdXJjZSwg
aW5TdHJpY3RDb250ZXh0LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQsIGluc2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXI6Ok5vKQorICAgIDogRXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBz
b3VyY2UsIGluU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rp
b25Db250ZXh0LCBpbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBldmFsQ29udGV4dFR5cGUsIE5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyOjpObywgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmUp
CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IDli
OTM4YjNlNWU3YTA0NTQ0YTU1OGYwMGUzNDk1YmFhNWFmZjkxNDcuLjgyOTY1ZDE4NzMyMTc0NzRk
MzcwNTlhYjQ3NjRhOTM2NjBiYWVjMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaApAQCAtMTg0LDYgKzE4NCw4IEBAIHB1YmxpYzoKICAgICBpbmxpbmUgYm9vbCBn
ZXRQcml2YXRlRmllbGQoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOwogICAgIGlubGluZSB2b2lkIHNldFByaXZhdGVGaWVsZChKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgaW5saW5lIHZvaWQg
ZGVmaW5lUHJpdmF0ZUZpZWxkKEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBpbmxpbmUgYm9vbCBjaGVja1ByaXZhdGVCcmFuZChK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUgYnJhbmQpOworICAgIGlubGluZSB2b2lkIHNldFByaXZh
dGVCcmFuZChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgYnJhbmQpOwogCiAgICAgdW5zaWduZWQg
Z2V0QXJyYXlMZW5ndGgoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5kZXggMDA1ZWUxNDY2NDM1NThmY2I3NzQ4NmRi
MzAyNTgwNGM3MDAwZGJjZC4uNjhkMTEzOTYwNTI3MzE1ZGYwZWY4ODAwYjNiMmZkYTE4YWYwODkz
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxp
bmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVz
LmgKQEAgLTY2OSw0ICs2NjksNDUgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpTT2JqZWN0OjpnZXRO
b25SZWlmaWVkU3RhdGljUHJvcGVydHlOYW1lcyhWTSYgdm0sIFByb3BlcnR5TmEKICAgICB9CiB9
CiAKK2lubGluZSBib29sIEpTT2JqZWN0OjpjaGVja1ByaXZhdGVCcmFuZChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJyYW5kKQoreworICAgIEFTU0VSVChicmFuZC5pc1N5
bWJvbCgpKTsKKyAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gdGhpcy0+c3RydWN0dXJlKHZtKTsKKyAgICBpZiAoIXN0cnVjdHVyZS0+aXNCcmFuZGVkU3Ry
dWN0dXJlKCkgfHwgIWpzQ2FzdDxCcmFuZGVkU3RydWN0dXJlKj4oc3RydWN0dXJlKS0+Y2hlY2tC
cmFuZChhc1N5bWJvbChicmFuZCkpKSB7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9i
amVjdCwgc2NvcGUsIGNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKGdsb2JhbE9iamVjdCkp
OworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGZhbHNlKTsKKyAgICB9CisgICAg
RVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkpOworCisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRQcml2YXRlQnJhbmQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBicmFuZCkKK3sKKyAgICBBU1NFUlQoYnJhbmQuaXNT
eW1ib2woKSk7CisgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IHRoaXMtPnN0cnVjdHVyZSh2bSk7CisgICAgaWYgKHN0cnVjdHVyZS0+aXNCcmFuZGVkU3Ry
dWN0dXJlKCkgJiYganNDYXN0PEJyYW5kZWRTdHJ1Y3R1cmUqPihzdHJ1Y3R1cmUpLT5jaGVja0Jy
YW5kKGFzU3ltYm9sKGJyYW5kKSkpIHsKKyAgICAgICAgLy8gV2UgYXJlIHRyeWluZyB0byBpbnN0
YWxsIGEgYnJhbmQgYWxyZWFkeSBpbnN0YWxsZWQKKyAgICAgICAgLy8gRklYTUU6IFB1dCBhIGJl
dHRlciBlcnJvciBtZXNzYWdlCisgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwg
c2NvcGUsIGNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKGdsb2JhbE9iamVjdCkpOworICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHZvaWQoKSk7CisgICAgfQorICAgIEVYQ0VQ
VElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpKTsKKworICAgIHNjb3BlLnJlbGVhc2UoKTsK
KworICAgIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlIGRlZmVycmVk
V2F0Y2hwb2ludEZpcmUodm0sIHN0cnVjdHVyZSk7CisKKyAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVj
dHVyZSA9IFN0cnVjdHVyZTo6c2V0QnJhbmRUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIGFzU3lt
Ym9sKGJyYW5kKSwgJmRlZmVycmVkV2F0Y2hwb2ludEZpcmUpOworICAgIEFTU0VSVChuZXdTdHJ1
Y3R1cmUtPmlzQnJhbmRlZFN0cnVjdHVyZSgpKTsKKyAgICBBU1NFUlQobmV3U3RydWN0dXJlLT5v
dXRPZkxpbmVDYXBhY2l0eSgpIHx8ICF0aGlzLT5zdHJ1Y3R1cmUodm0pLT5vdXRPZkxpbmVDYXBh
Y2l0eSgpKTsKKyAgICB0aGlzLT5zZXRTdHJ1Y3R1cmUodm0sIG5ld1N0cnVjdHVyZSk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTY29wZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3Bl
LmNwcAppbmRleCA0ZmIyNGEyODI3MzM1Y2I3NTliZmNmYTk4Yjk3OTg1YTU5NDk4ODFhLi5mYzc3
NDJlMjMwODk2N2U5OTEyNWJmMDZmYjMxYzdlNjNiOGI3MGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Njb3BlLmNwcApAQCAtMzIxLDcgKzMyMSw3IEBAIFJlc29sdmVPcCBK
U1Njb3BlOjphYnN0cmFjdFJlc29sdmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgc2l6
ZV90IGRlcHRoT2ZmCiAgICAgcmV0dXJuIG9wOwogfQogCi12b2lkIEpTU2NvcGU6OmNvbGxlY3RD
bG9zdXJlVmFyaWFibGVzVW5kZXJURFooSlNTY29wZSogc2NvcGUsIFREWkVudmlyb25tZW50JiBy
ZXN1bHQsIFZhcmlhYmxlRW52aXJvbm1lbnQmIHByaXZhdGVOYW1lcykKK3ZvaWQgSlNTY29wZTo6
Y29sbGVjdENsb3N1cmVWYXJpYWJsZXNVbmRlclREWihKU1Njb3BlKiBzY29wZSwgVERaRW52aXJv
bm1lbnQmIHJlc3VsdCwgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCYgcHJpdmF0ZU5hbWVFbnZpcm9u
bWVudCkKIHsKICAgICBmb3IgKDsgc2NvcGU7IHNjb3BlID0gc2NvcGUtPm5leHQoKSkgewogICAg
ICAgICBpZiAoIXNjb3BlLT5pc0xleGljYWxTY29wZSgpICYmICFzY29wZS0+aXNDYXRjaFNjb3Bl
KCkpCkBAIC0zNDAsOCArMzQwLDkgQEAgdm9pZCBKU1Njb3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlh
Ymxlc1VuZGVyVERaKEpTU2NvcGUqIHNjb3BlLCBURFpFbnZpcm9ubWVudCYgcmUKICAgICAgICAg
ICAgIHJlc3VsdC5hZGQoaXRlci0+a2V5KTsKIAogICAgICAgICBpZiAoc3ltYm9sVGFibGUtPmhh
c1ByaXZhdGVOYW1lcygpKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8gbmFtZSA6IHN5bWJvbFRh
YmxlLT5wcml2YXRlTmFtZXMoKSkKLSAgICAgICAgICAgICAgICBwcml2YXRlTmFtZXMudXNlUHJp
dmF0ZU5hbWUobmFtZSk7ICAgIAorICAgICAgICAgICAgYXV0byBwcml2YXRlTmFtZXMgPSBzeW1i
b2xUYWJsZS0+cHJpdmF0ZU5hbWVzKCk7CisgICAgICAgICAgICBmb3IgKGF1dG8gZW5kID0gcHJp
dmF0ZU5hbWVzLmVuZCgpLCBpdGVyID0gcHJpdmF0ZU5hbWVzLmJlZ2luKCk7IGl0ZXIgIT0gZW5k
OyArK2l0ZXIpCisgICAgICAgICAgICAgICAgcHJpdmF0ZU5hbWVFbnZpcm9ubWVudC5hZGQoaXRl
ci0+a2V5LCBpdGVyLT52YWx1ZSk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Njb3BlLmgKaW5kZXggN2EzYzI0MTUxMWI4N2VkM2RhZDljZGM5MzEx
ZDE1MDViOTEzYmU3Yy4uZTRjZDBiYjMwOTdmZGMzMTZkMzBhY2Q2ZmY5MDdjOTJmODYwMTMxMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaApAQCAtMjcsMTIgKzI3LDEy
IEBACiAKICNpbmNsdWRlICJHZXRQdXRJbmZvLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNp
bmNsdWRlICJWYXJpYWJsZUVudmlyb25tZW50LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFz
cyBTY29wZUNoYWluSXRlcmF0b3I7CiBjbGFzcyBTeW1ib2xUYWJsZTsKLWNsYXNzIFZhcmlhYmxl
RW52aXJvbm1lbnQ7CiBjbGFzcyBXYXRjaHBvaW50U2V0OwogCiB1c2luZyBURFpFbnZpcm9ubWVu
dCA9IEhhc2hTZXQ8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgSWRlbnRpZmllclJlcEhhc2g+
OwpAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaGFzQ29uc3RhbnRT
Y29wZShSZXNvbHZlVHlwZSk7CiAgICAgc3RhdGljIEpTU2NvcGUqIGNvbnN0YW50U2NvcGVGb3JD
b2RlQmxvY2soUmVzb2x2ZVR5cGUsIENvZGVCbG9jayopOwogCi0gICAgc3RhdGljIHZvaWQgY29s
bGVjdENsb3N1cmVWYXJpYWJsZXNVbmRlclREWihKU1Njb3BlKiwgVERaRW52aXJvbm1lbnQmIHJl
c3VsdCwgVmFyaWFibGVFbnZpcm9ubWVudCYgcHJpdmF0ZU5hbWVzKTsKKyAgICBzdGF0aWMgdm9p
ZCBjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKEpTU2NvcGUqLCBURFpFbnZpcm9ubWVu
dCYgcmVzdWx0LCBQcml2YXRlTmFtZUVudmlyb25tZW50Jik7CiAKICAgICBzdGF0aWMgdm9pZCB2
aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oCmluZGV4
IDA5OWQ4OTlhZDVlNjNhNzQzMzU4ZTJhYmIyMGFiMzRmNTliOTYwZWMuLmI4NTkxNGZmOGVhMGRk
MDNjNjI0Nzc1MzU5NmZmNDJkNTYxNjZiMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaApAQCAtNjMsNyArNjMs
NyBAQCBwdWJsaWM6CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBl
eGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCks
IGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6
Ok1vZHVsZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxl
RXZhbHVhdGVNb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUoKSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXI6Ok5vLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlLCBFdmFsQ29udGV4dFR5
cGU6Ok5vbmUpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7
IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1c2VzRXZhbCgpLCBmYWxzZSwgUHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQ6Ok5vbmUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2Ny
aXB0TW9kZTo6TW9kdWxlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2Rl
OjpNb2R1bGVFdmFsdWF0ZU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBOZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplcjo6Tm8sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgZmFsc2UsIEV2YWxD
b250ZXh0VHlwZTo6Tm9uZSk7IH0KIAogICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
ayogdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKCkgeyByZXR1cm4gbV91bmxpbmtlZE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2suZ2V0KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zLmNwcAppbmRleCA4MDEzYTE5YjgzZDk4YjEzNDAxMTJlODMzYTg5ODk4NGQx
OWM1Mzc3Li5hYTE3YzRiYWNlNjgzNGIwZmJiMWNjNGU1Y2FmNjkzOTRkZTVlNDAyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcApAQCAtNTM5LDYgKzUzOSw5IEBA
IHZvaWQgT3B0aW9uczo6cmVjb21wdXRlRGVwZW5kZW50T3B0aW9ucygpCiAgICAgICAgIE9wdGlv
bnM6OnJhbmRvbUludGVncml0eUF1ZGl0UmF0ZSgpID0gMDsKICAgICBlbHNlIGlmIChPcHRpb25z
OjpyYW5kb21JbnRlZ3JpdHlBdWRpdFJhdGUoKSA+IDEuMCkKICAgICAgICAgT3B0aW9uczo6cmFu
ZG9tSW50ZWdyaXR5QXVkaXRSYXRlKCkgPSAxLjA7CisgICAgCisgICAgaWYgKE9wdGlvbnM6OnVz
ZVByaXZhdGVNZXRob2RzKCkpCisgICAgICAgIE9wdGlvbnM6OnVzZVByaXZhdGVDbGFzc0ZpZWxk
cygpID0gdHJ1ZTsKIAogICAgIGlmICghT3B0aW9uczo6YWxsb3dVbnN1cHBvcnRlZFRpZXJzKCkp
IHsKICNkZWZpbmUgRElTQUJMRV9USUVSUyhvcHRpb24sIGZsYWdzLCAuLi4pIGRvIHsgXApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggZmYzYmYzNWNh
YWY5NmFkMTI3NTE2YmIwNzU5NDlmNmRhOTg1NjUwYi4uN2M1ODk1YzBhZjljMzM1NjRmMmZkYzk5
ZmNhMjZkYjJmNzdlNDNjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zTGlzdC5oCkBAIC01MTIsNiArNTEyLDcgQEAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjYW5V
c2VKSVRDYWdlKCk7CiAgICAgdihCb29sLCBleHBvc2VQcm9maWxlcnNPbkdsb2JhbE9iamVjdCwg
ZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgZXhwb3NlIGZ1bmN0aW9ucyB0byBlbmFi
bGUvZGlzYWJsZSBib3RoIHRoZSBzYW1wbGluZyBwcm9maWxlciBhbmQgdGhlIHN1cGVyIHNhbXBs
ZXIiKSBcCiAgICAgdihCb29sLCBhbGxvd1Vuc3VwcG9ydGVkVGllcnMsIGZhbHNlLCBOb3JtYWws
ICJJZiB0cnVlLCB3ZSB3aWxsIG5vdCBkaXNhYmxlIERGRyBvciBGVEwgd2hlbiBhbiBleHBlcmlt
ZW50YWwgZmVhdHVyZSBpcyBlbmFibGVkLiIpIFwKICAgICB2KEJvb2wsIHVzZVByaXZhdGVDbGFz
c0ZpZWxkcywgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgdGhlIHBhcnNlciB3aWxsIHVuZGVyc3Rh
bmQgcHJpdmF0ZSBkYXRhIGZpZWxkcyBpbnNpZGUgY2xhc3Nlcy4iKSBcCisgICAgdihCb29sLCB1
c2VQcml2YXRlTWV0aG9kcywgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIHRoZSBwYXJzZXIgd2ls
bCB1bmRlcnN0YW5kIHByaXZhdGUgbWV0aG9kcyBpbnNpZGUgY2xhc3Nlcy4iKSBcCiAgICAgdihC
b29sLCByZXR1cm5FYXJseUZyb21JbmZpbml0ZUxvb3BzRm9yRnV6emluZywgZmFsc2UsIE5vcm1h
bCwgbnVsbHB0cikgXAogICAgIHYoU2l6ZSwgZWFybHlSZXR1cm5Gcm9tSW5maW5pdGVMb29wc0xp
bWl0LCAxMzAwMDAwMDAwLCBOb3JtYWwsICJXaGVuIHJldHVybkVhcmx5RnJvbUluZmluaXRlTG9v
cHNGb3JGdXp6aW5nIGlzIHRydWUsIHRoaXMgZGV0ZXJtaW5lcyB0aGUgbnVtYmVyIG9mIGV4ZWN1
dGlvbnMgYSBsb29wIGNhbiBydW4gZm9yIGJlZm9yZSBqdXN0IHJldHVybmluZy4gVGhpcyBpcyBo
ZWxwZnVsIGZvciB0aGUgZnV6emVyIHNvIGl0IGRvZXNuJ3QgZ2V0IHN0dWNrIGluIGluZmluaXRl
IGxvb3BzLiIpIFwKICAgICB2KEJvb2wsIHVzZUxJQ01GdXp6aW5nLCBmYWxzZSwgTm9ybWFsLCBu
dWxscHRyKSBcCkBAIC01NjgsNyArNTY5LDggQEAgZW51bSBFeHBlcmltZW50YWxPcHRpb25GbGFn
cyB7CiB9OwogCiAjZGVmaW5lIEZPUl9FQUNIX0pTQ19FWFBFUklNRU5UQUxfT1BUSU9OKHYpIFwK
LSAgICB2KHVzZVByaXZhdGVDbGFzc0ZpZWxkcywgKFN1cHBvcnRzRlRMIHwgU3VwcG9ydHNERkcp
LCAiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjc4MSIsICJodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNzg0IikKKyAgICB2KHVzZVBy
aXZhdGVDbGFzc0ZpZWxkcywgKFN1cHBvcnRzRlRMIHwgU3VwcG9ydHNERkcpLCAiaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjc4MSIsICJodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNzg0IikgXAorICAgIHYodXNlUHJpdmF0ZU1ldGhv
ZHMsIChTdXBwb3J0c0ZUTCB8IFN1cHBvcnRzREZHKSwgImh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTI3ODEiLCAiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMjc4NCIpCiAKIGNvbnN0ZXhwciBzaXplX3QgY291bnROdW1iZXJPZkpTQ09w
dGlvbnMoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
Z3JhbUV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1F
eGVjdXRhYmxlLmgKaW5kZXggYjg3MTVhYTcyYmJjYjczMzlkNmUzNDEzYWM1OWM3NDQxMTdiODJh
OC4uOTQ5NzYzMTIwNWNhMGU0ZDBhMjk0ZTA0NWNlNzZiNzFhZDExNDRhYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCkBAIC03MSw3
ICs3MSw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhl
Y3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5m
byh1c2VzRXZhbCgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJz
ZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFy
c2VNb2RlOjpQcm9ncmFtTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIE5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyOjpObywgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgRXZhbENv
bnRleHRUeXBlOjpOb25lKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkg
Y29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8odXNlc0V2YWwoKSwgZmFsc2UsIFByaXZhdGVC
cmFuZFJlcXVpcmVtZW50OjpOb25lLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBKU1Bh
cnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQ
YXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUoKSwgTmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXI6Ok5vLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlLCBFdmFs
Q29udGV4dFR5cGU6Ok5vbmUpOyB9CiAKICAgICBUZW1wbGF0ZU9iamVjdE1hcCYgZW5zdXJlVGVt
cGxhdGVPYmplY3RNYXAoVk0mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5jcHAKaW5kZXggZDM4YzM5ZTQ0N2Q2MzEzYWFmMThjZTEyMTdkNzIzM2U3ZjYwYzgx
Zi4uOWNhMWFhZjZhY2MwNjg0NDVhN2Y5ZTIwYTZlYWUxN2Y0OGJjODg1MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC00MjQsNyArNDI0LDcgQEAg
UHJvcGVydHlUYWJsZSogU3RydWN0dXJlOjptYXRlcmlhbGl6ZVByb3BlcnR5VGFibGUoVk0mIHZt
LCBib29sIHNldFByb3BlcnR5VGFibGUKIAogICAgIGZvciAoc2l6ZV90IGkgPSBzdHJ1Y3R1cmVz
LnNpemUoKTsgaS0tOykgewogICAgICAgICBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVzW2ldOwotICAg
ICAgICBpZiAoIXN0cnVjdHVyZS0+bV90cmFuc2l0aW9uUHJvcGVydHlOYW1lKQorICAgICAgICBp
ZiAoIXN0cnVjdHVyZS0+bV90cmFuc2l0aW9uUHJvcGVydHlOYW1lIHx8IHN0cnVjdHVyZS0+dHJh
bnNpdGlvbktpbmQoKSA9PSBUcmFuc2l0aW9uS2luZDo6U2V0QnJhbmQpCiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgc3dpdGNoIChzdHJ1Y3R1cmUtPnRyYW5zaXRpb25LaW5kKCkpIHsK
ICAgICAgICAgY2FzZSBUcmFuc2l0aW9uS2luZDo6UHJvcGVydHlBZGRpdGlvbjogewpAQCAtMTQ5
Niw0ICsxNDk2LDkwIEBAIGF1dG8gU3RydWN0dXJlOjpmaW5kUHJvcGVydHlIYXNoRW50cnkoUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QgLT4gT3B0aW9uCiAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKIH0KIAorQnJhbmRlZFN0cnVjdHVyZTo6QnJhbmRlZFN0cnVjdHVyZShWTSYgdm0s
IFN0cnVjdHVyZSogcHJldmlvdXMsIFVuaXF1ZWRTdHJpbmdJbXBsKiBicmFuZFVpZCwgRGVmZXJy
ZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqIGRlZmVycmVkKQorICAgIDogU3Ry
dWN0dXJlKHZtLCBwcmV2aW91cywgZGVmZXJyZWQpCisgICAgLCBtX2JyYW5kKGJyYW5kVWlkKQor
eworICAgIGlmIChwcmV2aW91cy0+aXNCcmFuZGVkU3RydWN0dXJlKCkpCisgICAgICAgIG1fcGFy
ZW50QnJhbmQuc2V0KHZtLCB0aGlzLCBqc0Nhc3Q8QnJhbmRlZFN0cnVjdHVyZSo+KHByZXZpb3Vz
KSk7CisgICAgdGhpcy0+c2V0SXNCcmFuZGVkU3RydWN0dXJlKHRydWUpOworfQorCitCcmFuZGVk
U3RydWN0dXJlOjpCcmFuZGVkU3RydWN0dXJlKFZNJiB2bSwgQnJhbmRlZFN0cnVjdHVyZSogcHJl
dmlvdXMsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiBkZWZlcnJl
ZCkKKyAgICA6IFN0cnVjdHVyZSh2bSwgcHJldmlvdXMsIGRlZmVycmVkKQorICAgICwgbV9icmFu
ZChwcmV2aW91cy0+bV9icmFuZCkKKyAgICAsIG1fcGFyZW50QnJhbmQodm0sIHRoaXMsIHByZXZp
b3VzLT5tX3BhcmVudEJyYW5kLmdldCgpLCBXcml0ZUJhcnJpZXI8QnJhbmRlZFN0cnVjdHVyZT46
Ok1heUJlTnVsbCkKK3sKKyAgICB0aGlzLT5zZXRJc0JyYW5kZWRTdHJ1Y3R1cmUodHJ1ZSk7Cit9
CisKK1N0cnVjdHVyZSogQnJhbmRlZFN0cnVjdHVyZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJl
KiBwcmV2aW91cywgVW5pcXVlZFN0cmluZ0ltcGwqIGJyYW5kVWlkLCBEZWZlcnJlZFN0cnVjdHVy
ZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogZGVmZXJyZWQpCit7CisgICAgQVNTRVJUKHZtLnN0
cnVjdHVyZVN0cnVjdHVyZSk7CisgICAgQnJhbmRlZFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QnJhbmRlZFN0cnVjdHVyZT4odm0uaGVhcCkpIEJy
YW5kZWRTdHJ1Y3R1cmUodm0sIHByZXZpb3VzLCBicmFuZFVpZCwgZGVmZXJyZWQpOworICAgIG5l
d1N0cnVjdHVyZS0+ZmluaXNoQ3JlYXRpb24odm0sIHByZXZpb3VzKTsKKyAgICByZXR1cm4gbmV3
U3RydWN0dXJlOworfQorCitib29sIEJyYW5kZWRTdHJ1Y3R1cmU6OmNoZWNrQnJhbmQoU3ltYm9s
KiBicmFuZCkKK3sKKyAgICBVbmlxdWVkU3RyaW5nSW1wbCogYnJhbmRVaWQgPSAmYnJhbmQtPnVp
ZCgpOworICAgIGZvciAoQnJhbmRlZFN0cnVjdHVyZSogY3VycmVudFN0cnVjdHVyZSA9IHRoaXM7
IGN1cnJlbnRTdHJ1Y3R1cmU7IGN1cnJlbnRTdHJ1Y3R1cmUgPSBjdXJyZW50U3RydWN0dXJlLT5t
X3BhcmVudEJyYW5kLmdldCgpKSB7CisgICAgICAgIGlmIChicmFuZFVpZCA9PSBjdXJyZW50U3Ry
dWN0dXJlLT5tX2JyYW5kKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJl
dHVybiBmYWxzZTsKK30KKworU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnNldEJyYW5kVHJhbnNpdGlv
bkZyb21FeGlzdGluZ1N0cnVjdHVyZUltcGwoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFVuaXF1ZWRT
dHJpbmdJbXBsKiBicmFuZElEKQoreworICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzT2JqZWN0KCkp
OworCisgICAgaWYgKHN0cnVjdHVyZS0+aGFzQmVlbkRpY3Rpb25hcnkoKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBpZiAoU3RydWN0dXJlKiBleGlzdGluZ1RyYW5zaXRpb24gPSBz
dHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblRhYmxlLmdldChicmFuZElELCAwLCBUcmFuc2l0aW9uS2lu
ZDo6U2V0QnJhbmQpKQorICAgICAgICByZXR1cm4gZXhpc3RpbmdUcmFuc2l0aW9uOworCisgICAg
cmV0dXJuIG51bGxwdHI7Cit9CisKK1N0cnVjdHVyZSogU3RydWN0dXJlOjpzZXRCcmFuZFRyYW5z
aXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVDb25jdXJyZW50bHkoU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFVuaXF1ZWRTdHJpbmdJbXBsKiBicmFuZElEKQoreworICAgIENvbmN1cnJlbnRKU0xvY2tl
ciBsb2NrZXIoc3RydWN0dXJlLT5tX2xvY2spOworICAgIHJldHVybiBzZXRCcmFuZFRyYW5zaXRp
b25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKHN0cnVjdHVyZSwgYnJhbmRJRCk7Cit9CisKK1N0
cnVjdHVyZSogU3RydWN0dXJlOjpzZXRCcmFuZFRyYW5zaXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgU3ltYm9sKiBicmFuZCwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0
Y2hwb2ludEZpcmUqIGRlZmVycmVkKQoreworICAgIGlmICghc3RydWN0dXJlLT5pc0RpY3Rpb25h
cnkoKSkgeworICAgICAgICBpZiAoU3RydWN0dXJlKiBleGlzdGluZ1RyYW5zaXRpb24gPSBzdHJ1
Y3R1cmUtPm1fdHJhbnNpdGlvblRhYmxlLmdldCgmYnJhbmQtPnVpZCgpLCAwLCBUcmFuc2l0aW9u
S2luZDo6U2V0QnJhbmQpKSB7CisgICAgICAgICAgICBBU1NFUlQoZXhpc3RpbmdUcmFuc2l0aW9u
LT50cmFuc2l0aW9uS2luZCgpID09IFRyYW5zaXRpb25LaW5kOjpTZXRCcmFuZCk7CisgICAgICAg
ICAgICByZXR1cm4gZXhpc3RpbmdUcmFuc2l0aW9uOworICAgICAgICB9CisgICAgfQorCisgICAg
U3RydWN0dXJlKiB0cmFuc2l0aW9uID0gQnJhbmRlZFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBzdHJ1
Y3R1cmUsICZicmFuZC0+dWlkKCksIGRlZmVycmVkKTsKKyAgICB0cmFuc2l0aW9uLT5zZXRUcmFu
c2l0aW9uS2luZChUcmFuc2l0aW9uS2luZDo6U2V0QnJhbmQpOworCisgICAgdHJhbnNpdGlvbi0+
bV9jYWNoZWRQcm90b3R5cGVDaGFpbi5zZXRNYXlCZU51bGwodm0sIHRyYW5zaXRpb24sIHN0cnVj
dHVyZS0+bV9jYWNoZWRQcm90b3R5cGVDaGFpbi5nZXQoKSk7CisgICAgdHJhbnNpdGlvbi0+bV9i
bG9iLnNldEluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3Rvcnkoc3RydWN0dXJlLT5pbmRleGluZ01v
ZGVJbmNsdWRpbmdIaXN0b3J5KCkpOworICAgIHRyYW5zaXRpb24tPm1fdHJhbnNpdGlvblByb3Bl
cnR5TmFtZSA9ICZicmFuZC0+dWlkKCk7CisgICAgdHJhbnNpdGlvbi0+c2V0VHJhbnNpdGlvblBy
b3BlcnR5QXR0cmlidXRlcygwKTsKKyAgICB0cmFuc2l0aW9uLT5zZXRQcm9wZXJ0eVRhYmxlKHZt
LCBzdHJ1Y3R1cmUtPnRha2VQcm9wZXJ0eVRhYmxlT3JDbG9uZUlmUGlubmVkKHZtKSk7CisgICAg
dHJhbnNpdGlvbi0+c2V0TWF4T2Zmc2V0KHZtLCBzdHJ1Y3R1cmUtPm1heE9mZnNldCgpKTsKKyAg
ICBjaGVja09mZnNldCh0cmFuc2l0aW9uLT5tYXhPZmZzZXQoKSwgdHJhbnNpdGlvbi0+aW5saW5l
Q2FwYWNpdHkoKSk7CisKKyAgICBpZiAoc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkgeworICAg
ICAgICBQcm9wZXJ0eVRhYmxlKiB0YWJsZSA9IHRyYW5zaXRpb24tPmVuc3VyZVByb3BlcnR5VGFi
bGUodm0pOworICAgICAgICB0cmFuc2l0aW9uLT5waW4oaG9sZExvY2sodHJhbnNpdGlvbi0+bV9s
b2NrKSwgdm0sIHRhYmxlKTsKKyAgICB9IGVsc2UgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKHN0cnVjdHVyZS0+bV9sb2NrKTsKKyAgICAgICAgc3RydWN0dXJlLT5tX3RyYW5zaXRp
b25UYWJsZS5hZGQodm0sIHRyYW5zaXRpb24pOworICAgIH0KKworICAgIHRyYW5zaXRpb24tPmNo
ZWNrT2Zmc2V0Q29uc2lzdGVuY3koKTsKKyAgICByZXR1cm4gdHJhbnNpdGlvbjsKK30KKwogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5o
CmluZGV4IDNlNDc1MTRjOWNkNjFhOTg2YTMwMGEwOTk2ZGEwOWQ3NzZkZGYyMDYuLmY5ZTQ5ZWE5
YjQ1YWQ5NWZjZGU5YzcwZWY2YjFiN2Y0MTY0OWNhMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5oCkBAIC0xMjMsNyArMTIzLDcgQEAgcHJpdmF0ZToKICAgICBj
b25zdCBTdHJ1Y3R1cmUqIG1fc3RydWN0dXJlOwogfTsKIAotY2xhc3MgU3RydWN0dXJlIGZpbmFs
IDogcHVibGljIEpTQ2VsbCB7CitjbGFzcyBTdHJ1Y3R1cmUgOiBwdWJsaWMgSlNDZWxsIHsKICAg
ICBzdGF0aWMgY29uc3RleHByIHVpbnQxNl90IHNob3J0SW52YWxpZE9mZnNldCA9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8dWludDE2X3Q+OjptYXgoKSAtIDE7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1
aW50MTZfdCB1c2VSYXJlRGF0YUZsYWcgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6
bWF4KCk7CiBwdWJsaWM6CkBAIC0xNDYsMTMgKzE0Niw3IEBAIHB1YmxpYzoKIAogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGlzVmFsaWRQcm90b3R5cGUoSlNWYWx1ZSk7CiAKLXBy
aXZhdGU6Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCi0gICAgewotICAgICAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgICAgIEFTU0VSVChtX3Byb3RvdHlwZS5nZXQo
KS5pc0VtcHR5KCkgfHwgaXNWYWxpZFByb3RvdHlwZShtX3Byb3RvdHlwZS5nZXQoKSkpOwotICAg
IH0KLQorcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBjb25zdCBT
dHJ1Y3R1cmUqIHByZXZpb3VzKQogICAgIHsKICAgICAgICAgdGhpcy0+ZmluaXNoQ3JlYXRpb24o
dm0pOwpAQCAtMTY1LDYgKzE1OSwxMyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgfQogCitw
cml2YXRlOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtKQorICAgIHsKKyAgICAgICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICBBU1NFUlQobV9wcm90b3R5cGUuZ2V0
KCkuaXNFbXB0eSgpIHx8IGlzVmFsaWRQcm90b3R5cGUobV9wcm90b3R5cGUuZ2V0KCkpKTsKKyAg
ICB9CisKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQ3JlYXRpbmdFYXJseUNlbGxU
YWcpCiAgICAgewogICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgdGhpcywgQ3JlYXRp
bmdFYXJseUNlbGwpOwpAQCAtMjA2LDYgKzIwNyw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBwcmV2ZW50RXh0ZW5zaW9uc1RyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqKTsKICAg
ICBzdGF0aWMgU3RydWN0dXJlKiBub25Qcm9wZXJ0eVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUq
LCBUcmFuc2l0aW9uS2luZCk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVy
ZSogbm9uUHJvcGVydHlUcmFuc2l0aW9uU2xvdyhWTSYsIFN0cnVjdHVyZSosIFRyYW5zaXRpb25L
aW5kKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBzZXRCcmFuZFRyYW5zaXRpb25Gcm9tRXhpc3Rp
bmdTdHJ1Y3R1cmVDb25jdXJyZW50bHkoU3RydWN0dXJlKiwgVW5pcXVlZFN0cmluZ0ltcGwqKTsK
KyAgICBzdGF0aWMgU3RydWN0dXJlKiBzZXRCcmFuZFRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUq
LCBTeW1ib2wqIGJyYW5kLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50Rmly
ZSogPSBudWxscHRyKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNTZWFsZWQoVk0m
KTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzRnJvemVuKFZNJik7CkBAIC03MTUsMjEg
KzcxOCwyNSBAQCBwdWJsaWM6CiAgICAgREVGSU5FX0JJVEZJRUxEKGJvb2wsIGhhc0JlZW5EaWN0
aW9uYXJ5LCBIYXNCZWVuRGljdGlvbmFyeSwgMSwgMjcpOwogICAgIERFRklORV9CSVRGSUVMRChi
b29sLCBwcm90ZWN0UHJvcGVydHlUYWJsZVdoaWxlVHJhbnNpdGlvbmluZywgUHJvdGVjdFByb3Bl
cnR5VGFibGVXaGlsZVRyYW5zaXRpb25pbmcsIDEsIDI4KTsKICAgICBERUZJTkVfQklURklFTEQo
Ym9vbCwgaGFzVW5kZXJzY29yZVByb3RvUHJvcGVydHlFeGNsdWRpbmdPcmlnaW5hbFByb3RvLCBI
YXNVbmRlcnNjb3JlUHJvdG9Qcm9wZXJ0eUV4Y2x1ZGluZ09yaWdpbmFsUHJvdG8sIDEsIDI5KTsK
KyAgICBERUZJTkVfQklURklFTEQoYm9vbCwgaXNCcmFuZGVkU3RydWN0dXJlLCBJc0JyYW5kZWRT
dHJ1Y3R1cmUsIDEsIDMwKTsKIAogICAgIHN0YXRpY19hc3NlcnQoc19iaXRXaWR0aE9mVHJhbnNp
dGlvblByb3BlcnR5QXR0cmlidXRlcyA8PSBzaXplb2YoVHJhbnNpdGlvblByb3BlcnR5QXR0cmli
dXRlcykgKiA4KTsKICAgICBzdGF0aWNfYXNzZXJ0KHNfYml0V2lkdGhPZlRyYW5zaXRpb25LaW5k
IDw9IHNpemVvZihUcmFuc2l0aW9uS2luZCkgKiA4KTsKIAorcHJvdGVjdGVkOgorICAgIFN0cnVj
dHVyZShWTSYsIFN0cnVjdHVyZSosIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9p
bnRGaXJlKik7CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiwgY29uc3QgQ2xhc3NJbmZv
KiwgSW5kZXhpbmdUeXBlLCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSk7CiAgICAgU3RydWN0dXJl
KFZNJik7Ci0gICAgU3RydWN0dXJlKFZNJiwgU3RydWN0dXJlKiwgRGVmZXJyZWRTdHJ1Y3R1cmVU
cmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqKTsKIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZShWTSYsIFN0cnVjdHVyZSosIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRG
aXJlKiA9IG51bGxwdHIpOwogICAgIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5
VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKFN0cnVjdHVyZSosIFVuaXF1ZWRTdHJp
bmdJbXBsKiB1aWQsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFByb3BlcnR5T2Zmc2V0Jik7CiAgICAg
c3RhdGljIFN0cnVjdHVyZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3Ry
dWN0dXJlSW1wbChTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMs
IFByb3BlcnR5T2Zmc2V0Jik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogc2V0QnJhbmRUcmFuc2l0
aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlSW1wbChTdHJ1Y3R1cmUqLCBVbmlxdWVkU3RyaW5nSW1w
bCopOwogCiAgICAgLy8gVGhpcyB3aWxsIHJldHVybiB0aGUgc3RydWN0dXJlIHRoYXQgaGFzIGEg
dXNhYmxlIHByb3BlcnR5IHRhYmxlLCB0aGF0IHByb3BlcnR5IHRhYmxlLAogICAgIC8vIGFuZCB0
aGUgbGlzdCBvZiBzdHJ1Y3R1cmVzIHRoYXQgd2UgdmlzaXRlZCBiZWZvcmUgd2UgZ290IHRvIGl0
LiBJZiBpdCByZXR1cm5zIGEKQEAgLTg3NCw0ICs4ODEsMjkgQEAgcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgSlNEb2xsYXJWTUhlbHBlcjsKIH07CiAKK2NsYXNzIEJyYW5kZWRTdHJ1Y3R1cmUg
ZmluYWwgOiBwdWJsaWMgU3RydWN0dXJlIHsKKyAgICB0eXBlZGVmIFN0cnVjdHVyZSBCYXNlOwor
CitwdWJsaWM6CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nl
c3M+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgewor
ICAgICAgICByZXR1cm4gJnZtLmJyYW5kZWRTdHJ1Y3R1cmVTcGFjZTsKKyAgICB9CisKKyAgICBi
b29sIGNoZWNrQnJhbmQoU3ltYm9sKiBicmFuZCk7CisKK3ByaXZhdGU6IAorICAgIEJyYW5kZWRT
dHJ1Y3R1cmUoVk0mLCBTdHJ1Y3R1cmUqLCBVbmlxdWVkU3RyaW5nSW1wbCogYnJhbmQsIERlZmVy
cmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKik7CisgICAgQnJhbmRlZFN0cnVj
dHVyZShWTSYsIEJyYW5kZWRTdHJ1Y3R1cmUqLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25X
YXRjaHBvaW50RmlyZSopOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlKFZNJiwgU3Ry
dWN0dXJlKiwgVW5pcXVlZFN0cmluZ0ltcGwqIGJyYW5kLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5z
aXRpb25XYXRjaHBvaW50RmlyZSogPSBudWxscHRyKTsKKworICAgIFVuaXF1ZWRTdHJpbmdJbXBs
KiBtX2JyYW5kOworICAgIFdyaXRlQmFycmllcjxCcmFuZGVkU3RydWN0dXJlPiBtX3BhcmVudEJy
YW5kOworCisgICAgZnJpZW5kIGNsYXNzIFN0cnVjdHVyZTsKK307CisKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5l
cy5oCmluZGV4IDczOWUxZWYzYjljN2NlYzIzNTRiNmE2YzU0Y2E5OTdmYzVmZDJhYzUuLmQ0ZTVh
NTA3MmYzMDMyMzdmODllNWMwOThlNDM5NjQyNjVkYTViZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKQEAgLTYxLDcgKzYxLDEyIEBA
IGlubGluZSBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSkKIGlu
bGluZSBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBwcmV2
aW91cywgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqIGRlZmVycmVk
KQogewogICAgIEFTU0VSVCh2bS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUpOwotICAgIFN0cnVjdHVyZSog
bmV3U3RydWN0dXJlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3RydWN0dXJlPih2bS5o
ZWFwKSkgU3RydWN0dXJlKHZtLCBwcmV2aW91cywgZGVmZXJyZWQpOworICAgIFN0cnVjdHVyZSog
bmV3U3RydWN0dXJlOworICAgIGlmIChwcmV2aW91cy0+aXNCcmFuZGVkU3RydWN0dXJlKCkpCisg
ICAgICAgIG5ld1N0cnVjdHVyZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEJyYW5kZWRT
dHJ1Y3R1cmU+KHZtLmhlYXApKSBCcmFuZGVkU3RydWN0dXJlKHZtLCBqc0Nhc3Q8QnJhbmRlZFN0
cnVjdHVyZSo+KHByZXZpb3VzKSwgZGVmZXJyZWQpOworICAgIGVsc2UKKyAgICAgICAgbmV3U3Ry
dWN0dXJlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3RydWN0dXJlPih2bS5oZWFwKSkg
U3RydWN0dXJlKHZtLCBwcmV2aW91cywgZGVmZXJyZWQpOworCiAgICAgbmV3U3RydWN0dXJlLT5m
aW5pc2hDcmVhdGlvbih2bSwgcHJldmlvdXMpOwogICAgIHJldHVybiBuZXdTdHJ1Y3R1cmU7CiB9
CkBAIC0xODEsNiArMTg2LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6OmZvckVhY2hQcm9wZXJ0eUNvbmN1
cnJlbnRseShjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogICAgICAgICBjYXNlIFRyYW5zaXRpb25L
aW5kOjpQcm9wZXJ0eUF0dHJpYnV0ZUNoYW5nZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIFRyYW5zaXRpb25LaW5kOjpQcm9wZXJ0eURlbGV0aW9uOgorICAgICAgICBjYXNlIFRy
YW5zaXRpb25LaW5kOjpTZXRCcmFuZDoKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBk
ZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5o
CmluZGV4IDYzY2Y4ZTAyMTIyMTE0NWVjMWM5ZTNmNjQzNTBlNGEzN2FlMzk3YzYuLjgwNjJjMmM3
ODdjM2Y1YThiZDZiMmJhYzdlMzg4YTJjNjNiNDZmYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oCkBAIC01
NSw3ICs1NSwxMCBAQCBlbnVtIGNsYXNzIFRyYW5zaXRpb25LaW5kIDogdWludDhfdCB7CiAgICAg
QWRkSW5kZXhlZEFjY2Vzc29ycywKICAgICBQcmV2ZW50RXh0ZW5zaW9ucywKICAgICBTZWFsLAot
ICAgIEZyZWV6ZQorICAgIEZyZWV6ZSwKKworICAgIC8vIFN1cHBvcnQgZm9yIHRyYW5zaXRpb25z
IHJlbGF0ZWQgd2l0aCBwcml2YXRlIGJyYW5kCisgICAgU2V0QnJhbmQKIH07CiAKIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBGaXJzdE5vblByb3BlcnR5VHJhbnNpdGlvbktpbmQgPSBUcmFuc2l0aW9u
S2luZDo6QWxsb2NhdGVVbmRlY2lkZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TeW1ib2xUYWJsZS5jcHAKaW5kZXggMTY0Y2E2ZDQzMTBlNmJiMzhlNjQ3ZTJmNmJlMmY5Zjdk
OWYzMjY1Yy4uZmI0NjAwMWJhZWQyZjljMWM4N2U1NzIyZTI2MTViNDE0NWQxODcwMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcApAQCAtMTg0LDcg
KzE4NCw3IEBAIFN5bWJvbFRhYmxlKiBTeW1ib2xUYWJsZTo6Y2xvbmVTY29wZVBhcnQoVk0mIHZt
KQogCiAgICAgICAgIHsKICAgICAgICAgICAgIGZvciAoYXV0byBuYW1lIDogbV9yYXJlRGF0YS0+
bV9wcml2YXRlTmFtZXMpCi0gICAgICAgICAgICAgICAgcmVzdWx0LT5tX3JhcmVEYXRhLT5tX3By
aXZhdGVOYW1lcy5hZGQobmFtZSk7CisgICAgICAgICAgICAgICAgcmVzdWx0LT5tX3JhcmVEYXRh
LT5tX3ByaXZhdGVOYW1lcy5hZGQobmFtZS5rZXksIG5hbWUudmFsdWUpOwogICAgICAgICB9CiAg
ICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3lt
Ym9sVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgK
aW5kZXggNTlhNzIzMDVkM2E3MDQyMGFiYjFhZjRlZmJlNjdmZDZjY2RmZGVhMC4uYTUzODFjY2Jl
ZTFjYjdjM2JjY2Q2NWVhN2UwODE2ZWI0M2E1OTU2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiU2Nv
cGVkQXJndW1lbnRzVGFibGUuaCIKICNpbmNsdWRlICJUeXBlTG9jYXRpb24uaCIKICNpbmNsdWRl
ICJWYXJPZmZzZXQuaCIKKyNpbmNsdWRlICJWYXJpYWJsZUVudmlyb25tZW50LmgiCiAjaW5jbHVk
ZSAiV2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvSGFzaFRy
YWl0cy5oPgpAQCAtNDUwLDggKzQ1MSw3IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEhhc2hNYXA8
UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgUmVmUHRyPFR5cGVTZXQ+LCBJZGVudGlmaWVyUmVw
SGFzaD4gVW5pcXVlVHlwZVNldE1hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8VmFyT2Zmc2V0LCBS
ZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiBPZmZzZXRUb1ZhcmlhYmxlTWFwOwogICAgIHR5cGVk
ZWYgVmVjdG9yPFN5bWJvbFRhYmxlRW50cnkqPiBMb2NhbFRvRW50cnlWZWM7Ci0gICAgdHlwZWRl
ZiBIYXNoU2V0PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPiBQ
cml2YXRlTmFtZVNldDsKLSAgICB0eXBlZGVmIFdURjo6SXRlcmF0b3JSYW5nZTx0eXBlbmFtZSBQ
cml2YXRlTmFtZVNldDo6aXRlcmF0b3I+IFByaXZhdGVOYW1lSXRlcmF0b3JSYW5nZTsKKyAgICB0
eXBlZGVmIFdURjo6SXRlcmF0b3JSYW5nZTx0eXBlbmFtZSBQcml2YXRlTmFtZUVudmlyb25tZW50
OjppdGVyYXRvcj4gUHJpdmF0ZU5hbWVJdGVyYXRvclJhbmdlOwogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQpAQCAtNjA1LDE0ICs2MDUsMTQgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gbWFrZUl0ZXJhdG9yUmFuZ2UobV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYmVn
aW4oKSwgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZW5kKCkpOwogICAgIH0KIAotICAgIHZv
aWQgYWRkUHJpdmF0ZU5hbWUoVW5pcXVlZFN0cmluZ0ltcGwqIGtleSkKKyAgICB2b2lkIGFkZFBy
aXZhdGVOYW1lKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGtleSwgUHJpdmF0ZU5h
bWVFbnRyeSB2YWx1ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChrZXkgJiYgIWtleS0+aXNTeW1i
b2woKSk7CiAgICAgICAgIGlmICghbV9yYXJlRGF0YSkKICAgICAgICAgICAgIG1fcmFyZURhdGEg
PSBXVEY6Om1ha2VVbmlxdWU8U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKIAotICAgICAgICBBU1NF
UlQoIW1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmNvbnRhaW5zKGtleSkpOwotICAgICAgICBt
X3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoa2V5KTsKKyAgICAgICAgQVNTRVJUKG1fcmFy
ZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmZpbmQoa2V5KSA9PSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVO
YW1lcy5lbmQoKSk7CisgICAgICAgIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChrZXks
IHZhbHVlKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbnRyeT4KQEAgLTc1Niw3
ICs3NTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIE9mZnNldFRvVmFyaWFibGVNYXAgbV9vZmZzZXRU
b1ZhcmlhYmxlTWFwOwogICAgICAgICBVbmlxdWVUeXBlU2V0TWFwIG1fdW5pcXVlVHlwZVNldE1h
cDsKICAgICAgICAgV3JpdGVCYXJyaWVyPENvZGVCbG9jaz4gbV9jb2RlQmxvY2s7Ci0gICAgICAg
IFByaXZhdGVOYW1lU2V0IG1fcHJpdmF0ZU5hbWVzOworICAgICAgICBQcml2YXRlTmFtZUVudmly
b25tZW50IG1fcHJpdmF0ZU5hbWVzOwogICAgIH07CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKaW5kZXggODQwM2UyYzgxYzcyNjgxYzBkNTEwODc5YThiZTk4MGY2
ZTFlMGY4Yy4uYzMyZGUzZjM1OTY4N2YwZDJlNjZjMWZlMDM1YzM2NTRjZDM1NjVjMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMzY5LDYgKzM2OSw3IEBAIFZNOjpWTShW
TVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSwgV1RGOjpSdW5Mb29wKiBydW5Mb29wLCBi
b29sKiBzdWNjZXNzKQogICAgICwgc3RydWN0dXJlQ2hhaW5TcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VChoZWFwLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTdHJ1Y3R1cmVDaGFpbikKICAgICAsIHN0
cnVjdHVyZVJhcmVEYXRhU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxl
Q2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgU3RydWN0dXJlUmFyZURhdGEpIC8vIEhhc2g6MHhhY2E0
ZTYyZAogICAgICwgc3RydWN0dXJlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1
Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgU3RydWN0dXJlKSAvLyBIYXNoOjB4MWYxYmNk
Y2EKKyAgICAsIGJyYW5kZWRTdHJ1Y3R1cmVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBk
ZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBCcmFuZGVkU3RydWN0dXJlKQogICAg
ICwgc3ltYm9sVGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVD
ZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTeW1ib2xUYWJsZSkgLy8gSGFzaDoweGM1MjE1YWZkCiAg
ICAgLCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cyhleGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlU3BhY2UpCiAgICAgLCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dp
dGhGaW5hbGl6ZXJzKGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCmluZGV4IDI3YWFmYzAzMjY2ZmQzN2MyNWFhMmE0MzEyMmViNmExM2U2
NThjOTcuLjJlODc2NjM3ZGM5YzkwYmViMmY0ZGYxZTBkNDFiNDA2OTIwZmNkMTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtNDY1LDYgKzQ2NSw3IEBAIHB1YmxpYzoKICAgICBJ
c29TdWJzcGFjZSBzdHJ1Y3R1cmVDaGFpblNwYWNlOwogICAgIElzb1N1YnNwYWNlIHN0cnVjdHVy
ZVJhcmVEYXRhU3BhY2U7CiAgICAgSXNvU3Vic3BhY2Ugc3RydWN0dXJlU3BhY2U7CisgICAgSXNv
U3Vic3BhY2UgYnJhbmRlZFN0cnVjdHVyZVNwYWNlOwogICAgIElzb1N1YnNwYWNlIHN5bWJvbFRh
YmxlU3BhY2U7CiAKICNkZWZpbmUgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihu
YW1lKSBcCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDhlZjY0NGM3YTlkNjNkN2Y3ZTg4YzU3MGNjMzkxZWQwMGEyZjMyOGMuLmJhOTJkNDEy
ZmNlMWNmM2EzYzczZDg3MmQ4YTE4MDJiZDNlNjRkZWMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMjEtMDEt
MjkgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgorCisgICAgICAgIFtFU05leHRd
IEltcGxlbWVudCBwcml2YXRlIG1ldGhvZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5NDQzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVy
LXN1cGVyLWNhbGwtZnJvbS1hcnJvdy1mdW5jdGlvbi5qczogQWRkZWQuCisgICAgICAgICogc3Ry
ZXNzL3ByaXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVyLWNhbGwtZnJvbS1ldmFsLmpz
OiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2QtYnJhbmQtY2hlY2suanM6
IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZC1jaGFuZ2UtYXR0cmlidXRl
LWZyb20tYnJhbmRlZC1zdHJ1Y3R1cmUuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2
YXRlLW1ldGhvZC1jaGFuZ2UtcHJvdG90eXBlLWZyb20tYnJhbmRlZC1zdHJ1Y3R1cmUuanM6IEFk
ZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZC1jaGVjay1wcml2YXRlLWJyYW5k
LWljLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2QtY2hlY2stc3Ry
dWN0dXJlLW1pc3MuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZC1j
b21wYXJpc29uLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2QtZGVs
ZXRlLXByb3BlcnR5LWZyb20tYnJhbmRlZC1zdHJ1Y3R1cmUuanM6IEFkZGVkLgorICAgICAgICAq
IHN0cmVzcy9wcml2YXRlLW1ldGhvZC1leHRlbmRzLWJyYW5kLWNoZWNrLmpzOiBBZGRlZC4KKyAg
ICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2QtZ2V0LWFuZC1jYWxsLmpzOiBBZGRlZC4KKyAg
ICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2QtaW52YWxpZC1tdWx0aXBsZS1icmFuZC1pbnN0
YWxsYXRpb24uanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZC1pbnZh
bGlkYXRlLWNvbXBpbGVkLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzOiBBZGRlZC4KKyAgICAgICAg
KiBzdHJlc3MvcHJpdmF0ZS1tZXRob2QtbmVzdGVkLWNsYXNzLmpzOiBBZGRlZC4KKyAgICAgICAg
KiBzdHJlc3MvcHJpdmF0ZS1tZXRob2Qtb24tc2VhbGVkLW9iamVjdHMuanM6IEFkZGVkLgorICAg
ICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZC1vbi11bmNhY2hlYWJsZS1kaWN0aW9uYXJ5Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2QtcG9seW1vcnBoaWMtd2l0
aC1jb25zdGFudC1zeW1ib2wuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1l
dGhvZC1zZXQtYnJhbmQtc2hvdWxkLWhhdmUtd3JpdGUtYmFycmllci5qczogQWRkZWQuCisgICAg
ICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9kLXVudHlwZWQtdXNlLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2Qtd2l0aC11bmNhY2hlYWJsZS1kaWN0aW9uYXJ5LXRy
YW5zaXRpb24uanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZHMtaW5s
aW5lLWNhY2hlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2RzLW1l
Z2Ftb3JwaGljLWljLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2Rz
LW9uLXByb3h5LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2RzLXBv
bHktaWMtbXVsdGlwbGUtY2xhc3Nlcy5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZh
dGUtbWV0aG9kcy1wb2x5LWljLXNpbmdsZS1jbGFzcy5qczogQWRkZWQuCisgICAgICAgICogc3Ry
ZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWRpcmVjdC1ldmFsLmpzOiBBZGRlZC4KKyAg
ICAgICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1sOgorCiAyMDIxLTAyLTAxICBZdXN1a2UgU3V6dWtp
ICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gQWRkIEAgaW4gRXJyb3Iuc3Rh
Y2sgaWYgVVJMIGV4aXN0cwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1icmFu
ZC1pbnN0YWxsZWQtYWZ0ZXItc3VwZXItY2FsbC1mcm9tLWFycm93LWZ1bmN0aW9uLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvcHJpdmF0ZS1icmFuZC1pbnN0YWxsZWQtYWZ0ZXItc3VwZXItY2FsbC1mcm9t
LWFycm93LWZ1bmN0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlMjljN2JjMTFjMzYzNDM5MTViZDIwMmU4
MDIyMzdhODgwNDFlNGYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRl
LWJyYW5kLWluc3RhbGxlZC1hZnRlci1zdXBlci1jYWxsLWZyb20tYXJyb3ctZnVuY3Rpb24uanMK
QEAgLTAsMCArMSwyNyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2Rz
PXRydWUiKQorCitmdW5jdGlvbiBhc3NlcnQoYSwgZSkgeworICAgIGlmIChhICE9PSBlKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEp
OworfQorCitjbGFzcyBBIHt9CisKK2NsYXNzIEMgZXh0ZW5kcyBBIHsKKyAgICAjbWV0aG9kKCkg
eworICAgICAgICByZXR1cm4gImJhc2UiOworICAgIH0KKworICAgIGNvbnN0cnVjdG9yKCkgewor
ICAgICAgICBsZXQgaW5pdCA9ICgpID0+IHN1cGVyKCk7CisgICAgICAgIGluaXQoKTsKKyAgICB9
CisKKyAgICBiYXNlQWNjZXNzKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jbWV0aG9kKCk7Cisg
ICAgfQorfQorCitsZXQgYyA9IG5ldyBDKCk7Cithc3NlcnQoYy5iYXNlQWNjZXNzKCksICJiYXNl
Iik7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYnJhbmQtaW5zdGFsbGVk
LWFmdGVyLXN1cGVyLWNhbGwtZnJvbS1ldmFsLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1i
cmFuZC1pbnN0YWxsZWQtYWZ0ZXItc3VwZXItY2FsbC1mcm9tLWV2YWwuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OWUxNmVlMzhlMzQxY2NjMTYxMDU0ZGIxNzJiNWUyMjFmYjY4NmM4MgotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVyLWNh
bGwtZnJvbS1ldmFsLmpzCkBAIC0wLDAgKzEsMjYgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11
c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsKKyAgICBp
ZiAoYSAhPT0gZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAi
IGJ1dCBnb3Q6ICIgKyBhKTsKK30KKworY2xhc3MgQSB7fQorCitjbGFzcyBDIGV4dGVuZHMgQSB7
CisgICAgI21ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuICJiYXNlIjsKKyAgICB9CisKKyAgICBj
b25zdHJ1Y3RvcigpIHsKKyAgICAgICAgZXZhbCgic3VwZXIoKSIpOworICAgIH0KKworICAgIGJh
c2VBY2Nlc3MoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtZXRob2QoKTsKKyAgICB9Cit9CisK
K2xldCBjID0gbmV3IEMoKTsKK2Fzc2VydChjLmJhc2VBY2Nlc3MoKSwgImJhc2UiKTsKKwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtYnJhbmQtY2hlY2suanMgYi9K
U1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1icmFuZC1jaGVjay5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
YTUxNzVhM2Y1YmNhZjliMjQwYjE5NjAwYTdiN2JkZDFlYjA1ZTQ5Ci0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtYnJhbmQtY2hlY2suanMKQEAgLTAsMCAr
MSwzMyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQor
CitmdW5jdGlvbiBhc3NlcnQoYSwgZSkgeworICAgIGlmIChhICE9PSBlKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworfQorCitj
bGFzcyBDIHsKKyAgICAjbSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI2Y7CisgICAgfQorCisg
ICAgbWV0aG9kKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jbSgpOworICAgIH0KKworICAgICNm
ID0gNDsKK30KKworbGV0IGMgPSBuZXcgQygpOworYXNzZXJ0KGMubWV0aG9kKCksIDQpOworCit0
cnkgeworICAgIGNsYXNzIEMgeworICAgICAgICAjbSgpIHsgcmV0dXJuIDM7IH0KKyAgICB9CisK
KyAgICBsZXQgbyA9IG5ldyBDKCk7CisgICAgYy5tZXRob2QuY2FsbChvKTsKK30gY2F0Y2ggKGUp
IHsKKyAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIFR5cGVFcnJvciwgdHJ1ZSk7Cit9CisKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWNoYW5nZS1hdHRyaWJ1dGUtZnJv
bS1icmFuZGVkLXN0cnVjdHVyZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWNo
YW5nZS1hdHRyaWJ1dGUtZnJvbS1icmFuZGVkLXN0cnVjdHVyZS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzkw
YzQwMzU5Yzk5ZTBjNzZlNjc3MTU1ZDIzZDE3MWNhMzY0NGQyCi0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtY2hhbmdlLWF0dHJpYnV0ZS1mcm9tLWJyYW5k
ZWQtc3RydWN0dXJlLmpzCkBAIC0wLDAgKzEsNTAgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11
c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6
IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgICAgIGlmIChhY3R1YWwgIT09IGV4
cGVjdGVkKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGV4cGVj
dGVkICsgIiBidXQgZ290OiAiICsgYWN0dWFsKTsKKyAgICB9LAorCisgICAgdGhyb3dzOiBmdW5j
dGlvbiAoZXhwZWN0ZWRFcnJvciwgb3ApIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICBvcCgp
OworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBl
eHBlY3RlZEVycm9yKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVk
IHRvIHRocm93OiAiICsgZXhwZWN0ZWRFcnJvciArICIgYnV0IHRocmV3OiAiICsgZSk7CisgICAg
ICAgIH0KKyAgICB9Cit9OworCitjbGFzcyBDIHsKKyAgICAjbSgpIHsgcmV0dXJuICd0ZXN0Jzsg
fQorCisgICAgYWNjZXNzKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jbSgpOworICAgIH0KK30K
KworbGV0IGMxID0gbmV3IEMoKTsKK2MxLmZvbyA9ICd0ZXN0JzsKK2Fzc2VydC5zYW1lVmFsdWUo
YzEuYWNjZXNzKCksICd0ZXN0Jyk7Cithc3NlcnQuc2FtZVZhbHVlKGMxLmZvbywgJ3Rlc3QnKTsK
K2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgYzEuYWNjZXNzLmNh
bGwoe30pOworfSk7CisKK09iamVjdC5kZWZpbmVQcm9wZXJ0eShjMSwgJ2ZvbycsIHsKKyAgICB3
cml0YWJsZTogZmFsc2UsCisgICAgZW51bWVyYWJsZTogZmFsc2UKK30pOworCithc3NlcnQuc2Ft
ZVZhbHVlKGMxLmFjY2VzcygpLCAndGVzdCcpOworYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1
bmN0aW9uICgpIHsKKyAgICBjMS5hY2Nlc3MuY2FsbCh7fSk7Cit9KTsKKworbGV0IGRlc2NyaXB0
b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGMxLCAnZm9vJyk7CisKK2Fzc2Vy
dC5zYW1lVmFsdWUoZGVzY3JpcHRvci52YWx1ZSwgJ3Rlc3QnKTsKK2Fzc2VydC5zYW1lVmFsdWUo
ZGVzY3JpcHRvci5lbnVtZXJhYmxlLCBmYWxzZSk7Cithc3NlcnQuc2FtZVZhbHVlKGRlc2NyaXB0
b3Iud3JpdGFibGUsIGZhbHNlKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0
ZS1tZXRob2QtY2hhbmdlLXByb3RvdHlwZS1mcm9tLWJyYW5kZWQtc3RydWN0dXJlLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtY2hhbmdlLXByb3RvdHlwZS1mcm9tLWJyYW5kZWQt
c3RydWN0dXJlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVkYjFmNjY5Y2EwMmZkNzY0ZWUxZmE0M2Y1NmY3MDlm
YTUzNmQzM2YKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhv
ZC1jaGFuZ2UtcHJvdG90eXBlLWZyb20tYnJhbmRlZC1zdHJ1Y3R1cmUuanMKQEAgLTAsMCArMSw0
MCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCits
ZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7CisgICAg
ICAgIGlmIChsaHMgIT09IHJocykKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0
ZWQ6ICIgKyBsaHMgKyAiIGJ1ZyBnb3Q6ICIgKyByaHMpOworICAgIH0sCisKKyAgICB0aHJvd3M6
IGZ1bmN0aW9uIChleHBlY3RlZEVycm9yLCBvcCkgeworICAgICAgICB0cnkgeworICAgICAgICAg
IG9wKCk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5j
ZW9mIGV4cGVjdGVkRXJyb3IpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhw
ZWN0ZWQgdG8gdGhyb3c6ICIgKyBleHBlY3RlZEVycm9yICsgIiBidXQgdGhyZXc6ICIgKyBlKTsK
KyAgICAgICAgfQorICAgIH0KK307CisKK2NsYXNzIEMgeworICAgICNtKCkgeyByZXR1cm4gJ3Rl
c3QnOyB9CisKKyAgICBhY2Nlc3MoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtKCk7CisgICAg
fQorfQorCitsZXQgYzEgPSBuZXcgQygpOworYXNzZXJ0LnNhbWVWYWx1ZShjMS5hY2Nlc3MoKSwg
J3Rlc3QnKTsKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgYzEu
YWNjZXNzLmNhbGwoe30pOworfSk7CisKK09iamVjdC5zZXRQcm90b3R5cGVPZihjMSwgbnVsbCk7
CisKK2Fzc2VydC5zYW1lVmFsdWUoYzEuYWNjZXNzLCB1bmRlZmluZWQpOworYXNzZXJ0LnNhbWVW
YWx1ZShDLnByb3RvdHlwZS5hY2Nlc3MuY2FsbChjMSksICd0ZXN0Jyk7Cithc3NlcnQudGhyb3dz
KFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgIGMxLmFjY2Vzcy5jYWxsKHt9KTsKK30pOwor
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1jaGVjay1wcml2YXRl
LWJyYW5kLWljLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtY2hlY2stcHJpdmF0
ZS1icmFuZC1pYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44N2QzMmU2NDMyMjdjMTkwMThjNDBiNzFlZDk3ODJl
MWU5NmYzMjJjCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRo
b2QtY2hlY2stcHJpdmF0ZS1icmFuZC1pYy5qcwpAQCAtMCwwICsxLDQwIEBACisvL0AgcmVxdWly
ZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7Cisg
ICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCkgeworICAgICAgICBpZiAo
YWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0
ZWQ6ICIgKyBhY3R1YWwgKyAiIGJ1ZyBnb3Q6ICIgKyBleHBlY3RlZCk7CisgICAgfSwKKyAgICB0
aHJvd3M6IGZ1bmN0aW9uIChleHBlY3RlZEVycm9yLCBvcCkgeworICAgICAgICB0cnkgeworICAg
ICAgICAgIG9wKCk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKCEoZSBp
bnN0YW5jZW9mIGV4cGVjdGVkRXJyb3IpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleHBlY3RlZEVycm9yICsgIiBidXQgdGhyZXc6ICIg
KyBlKTsKKyAgICAgICAgfQorICAgIH0KK307CisKK2Z1bmN0aW9uIGNsYXNzRmFjdG9yeSgpIHsK
KyAgICByZXR1cm4gY2xhc3MgeworICAgICAgICAjbWV0aG9kKCkgeworICAgICAgICAgICAgcmV0
dXJuICd0ZXN0JzsKKyAgICAgICAgfQorCisgICAgICAgIGFjY2VzcygpIHsKKyAgICAgICAgICAg
IHJldHVybiB0aGlzLiNtZXRob2QoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworbGV0IEMxID0g
Y2xhc3NGYWN0b3J5KCk7CitsZXQgQzIgPSBjbGFzc0ZhY3RvcnkoKTsKKworbGV0IGMxID0gbmV3
IEMxKCk7CitsZXQgYzIgPSBuZXcgQzIoKTsKKworYXNzZXJ0LnNhbWVWYWx1ZShjMS5hY2Nlc3Mo
KSwgJ3Rlc3QnKTsKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAg
YzIuYWNjZXNzLmNhbGwoYzEpCit9KTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJp
dmF0ZS1tZXRob2QtY2hlY2stc3RydWN0dXJlLW1pc3MuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2
YXRlLW1ldGhvZC1jaGVjay1zdHJ1Y3R1cmUtbWlzcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ODBkN2Y3ZWVl
NzA0ZWYwY2I4ZDkwOTgwMDM1MTAxMWFmMzMwMzFjCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtY2hlY2stc3RydWN0dXJlLW1pc3MuanMKQEAgLTAsMCAr
MSw1MSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQor
CitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAg
ICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBl
ICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfSwKKyAgICBzaG91bGRUaHJvdzogZnVuY3Rpb24o
ZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAg
ICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0
aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNl
cHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQor
ICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBl
eGNlcHRpb24ubmFtZSArICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7CisgICAgICAgIH0K
KworICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0
ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2xldCBpID0gMDsKKworY2xhc3Mg
QyB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIGlmIChpID49IDUwMDApCisgICAgICAg
ICAgICB0aGlzLnByb3BlcnR5ID0gaTsKKyAgICB9CisKKyAgICAjbWV0aG9kKHYpIHsKKyAgICAg
ICAgdGhpcy5maWVsZCA9IHY7CisgICAgfQorCisgICAgYWNjZXNzKHYpIHsKKyAgICAgICAgdGhp
cy4jbWV0aG9kKHYpOworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLmFjY2Vzcyk7CisK
K2xldCBjID0gbmV3IEMoKTsKK2ZvciAoOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGMuYWNjZXNz
KCdmb28nICsgaSk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmZpZWxkLCAnZm9vJyArIGkpOwor
fQorCithc3NlcnQuc2hvdWxkVGhyb3coVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICBjLmFj
Y2Vzcy5jYWxsKHt9LCAndGVzdCcpOworfSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L3ByaXZhdGUtbWV0aG9kLWNvbXBhcmlzb24uanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1l
dGhvZC1jb21wYXJpc29uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2ZGE3ODY3YmE0OGViNzdhMWI0MDE0Y2Y0
ZWY2NDE2ZDEyNGE3ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRl
LW1ldGhvZC1jb21wYXJpc29uLmpzCkBAIC0wLDAgKzEsMzEgQEAKKy8vQCByZXF1aXJlT3B0aW9u
cygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1l
VmFsdWU6IGZ1bmN0aW9uIChsaHMsIHJocykgeworICAgICAgICBpZiAobGhzICE9PSByaHMpCisg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgbGhzICsgIiBidWcgZ290
OiAiICsgcmhzKTsKKyAgICB9LAorCisgICAgdGhyb3dzOiBmdW5jdGlvbiAoZXhwZWN0ZWRFcnJv
ciwgb3ApIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICBvcCgpOworICAgICAgICB9IGNhdGNo
KGUpIHsKKyAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEVycm9yKSkKKyAg
ICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhw
ZWN0ZWRFcnJvciArICIgYnV0IHRocmV3OiAiICsgZSk7CisgICAgICAgIH0KKyAgICB9Cit9Owor
CitjbGFzcyBDIHsKKyAgICAjbSgpIHsgcmV0dXJuICd0ZXN0MjYyJzsgfQorCisgICAgZ2V0UHJp
dmF0ZU1ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI207CisgICAgfQorfQorCitsZXQg
YzEgPSBuZXcgQygpOworbGV0IGMyID0gbmV3IEMoKTsKKworYXNzZXJ0LnNhbWVWYWx1ZShjMS5n
ZXRQcml2YXRlTWV0aG9kKCksIGMyLmdldFByaXZhdGVNZXRob2QoKSk7CisKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWRlbGV0ZS1wcm9wZXJ0eS1mcm9tLWJyYW5k
ZWQtc3RydWN0dXJlLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtZGVsZXRlLXBy
b3BlcnR5LWZyb20tYnJhbmRlZC1zdHJ1Y3R1cmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmVmYWU1ZjIxY2Nk
ODI2MmMxYWVlYzdmNjVkYmU3Yjk2ZGY5MDI3ZQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL3ByaXZhdGUtbWV0aG9kLWRlbGV0ZS1wcm9wZXJ0eS1mcm9tLWJyYW5kZWQtc3RydWN0
dXJlLmpzCkBAIC0wLDAgKzEsNDIgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRl
TWV0aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9u
IChsaHMsIHJocykgeworICAgICAgICBpZiAobGhzICE9PSByaHMpCisgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgbGhzICsgIiBidWcgZ290OiAiICsgcmhzKTsKKyAg
ICB9LAorCisgICAgdGhyb3dzOiBmdW5jdGlvbiAoZXhwZWN0ZWRFcnJvciwgb3ApIHsKKyAgICAg
ICAgdHJ5IHsKKyAgICAgICAgICBvcCgpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAg
ICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEVycm9yKSkKKyAgICAgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhwZWN0ZWRFcnJvciArICIg
YnV0IHRocmV3OiAiICsgZSk7CisgICAgICAgIH0KKyAgICB9Cit9OworCitjbGFzcyBDIHsKKyAg
ICAjbSgpIHsgcmV0dXJuICd0ZXN0JzsgfQorCisgICAgYWNjZXNzKCkgeworICAgICAgICByZXR1
cm4gdGhpcy4jbSgpOworICAgIH0KK30KKworbGV0IGMxID0gbmV3IEMoKTsKK2MxLmZvbyA9ICd0
ZXN0JzsKK2Fzc2VydC5zYW1lVmFsdWUoYzEuYWNjZXNzKCksICd0ZXN0Jyk7Cithc3NlcnQuc2Ft
ZVZhbHVlKGMxLmZvbywgJ3Rlc3QnKTsKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlv
biAoKSB7CisgICAgYzEuYWNjZXNzLmNhbGwoe30pOworfSk7CisKK2RlbGV0ZSBjMS5mb287CisK
K2Fzc2VydC5zYW1lVmFsdWUoYzEuYWNjZXNzKCksICd0ZXN0Jyk7Cithc3NlcnQuc2FtZVZhbHVl
KGMxLmZvbywgdW5kZWZpbmVkKTsKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAo
KSB7CisgICAgYzEuYWNjZXNzLmNhbGwoe30pOworfSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL3ByaXZhdGUtbWV0aG9kLWV4dGVuZHMtYnJhbmQtY2hlY2suanMgYi9KU1Rlc3RzL3N0
cmVzcy9wcml2YXRlLW1ldGhvZC1leHRlbmRzLWJyYW5kLWNoZWNrLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMy
NjY0YjJmY2NjZjY4OTVjMjE0NTFmNzY5NzhjN2EyODRjN2EzZDEKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1leHRlbmRzLWJyYW5kLWNoZWNrLmpzCkBA
IC0wLDAgKzEsNDEgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10
cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsK
K30KKworY2xhc3MgQmFzZSB7CisgICAgI21CYXNlKCkgeworICAgICAgICByZXR1cm4gNDsKKyAg
ICB9CisKKyAgICBtZXRob2RCYXNlKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jbUJhc2UoKTsK
KyAgICB9Cit9CisKK2NsYXNzIEMgZXh0ZW5kcyBCYXNlIHsKKyAgICAjbSgpIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuI2Y7CisgICAgfQorCisgICAgbWV0aG9kKCkgeworICAgICAgICByZXR1cm4g
dGhpcy4jbSgpOworICAgIH0KKworICAgICNmID0gMTU7Cit9CisKK2xldCBjID0gbmV3IEMoKTsK
K2Fzc2VydChjLm1ldGhvZCgpLCAxNSk7Cithc3NlcnQoYy5tZXRob2RCYXNlKCksIDQpOworCits
ZXQgYmFzZSA9IG5ldyBCYXNlICgpOworYXNzZXJ0KGJhc2UubWV0aG9kQmFzZSgpLCA0KTsKK3Ry
eSB7CisgICAgYy5tZXRob2QuY2FsbChiYXNlKTsKK30gY2F0Y2ggKGUpIHsKKyAgICBhc3NlcnQo
ZSBpbnN0YW5jZW9mIFR5cGVFcnJvciwgdHJ1ZSk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL3ByaXZhdGUtbWV0aG9kLWdldC1hbmQtY2FsbC5qcyBiL0pTVGVzdHMvc3RyZXNzL3By
aXZhdGUtbWV0aG9kLWdldC1hbmQtY2FsbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMzE3ZTFlNzdlNDMzNmQ0
ZWRiOGI4MzA3ZjYzNWJkODBhNmEyZjg4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvcHJpdmF0ZS1tZXRob2QtZ2V0LWFuZC1jYWxsLmpzCkBAIC0wLDAgKzEsMjQgQEAKKy8vQCBy
ZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9
IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChsaHMsIHJocykgeworICAgICAgICBpZiAobGhz
ICE9PSByaHMpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgbGhz
ICsgIiBidWcgZ290OiAiICsgcmhzKTsKKyAgICB9Cit9OworCitjbGFzcyBDIHsKKyAgICAjbSgp
IHsgcmV0dXJuIHRoaXMuX3Y7IH0KKworICAgIGdldFByaXZhdGVNZXRob2QoKSB7CisgICAgICAg
IHJldHVybiB0aGlzLiNtOworICAgIH0KK30KKworbGV0IGMgPSBuZXcgQygpOworCitsZXQgbzEg
PSB7X3Y6ICd0ZXN0MjYyJ307CitsZXQgbzIgPSB7X3Y6ICdmb28nfTsKK2Fzc2VydC5zYW1lVmFs
dWUoYy5nZXRQcml2YXRlTWV0aG9kKCkuY2FsbChvMSksICd0ZXN0MjYyJyk7Cithc3NlcnQuc2Ft
ZVZhbHVlKGMuZ2V0UHJpdmF0ZU1ldGhvZCgpLmNhbGwobzIpLCAnZm9vJyk7CisKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWludmFsaWQtbXVsdGlwbGUtYnJhbmQt
aW5zdGFsbGF0aW9uLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtaW52YWxpZC1t
dWx0aXBsZS1icmFuZC1pbnN0YWxsYXRpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Q3NzUwNzlmMzE0ZDA4
ODBjZjdiOGM2NjE4NjdhZDVlZjkyMmE0MwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL3ByaXZhdGUtbWV0aG9kLWludmFsaWQtbXVsdGlwbGUtYnJhbmQtaW5zdGFsbGF0aW9uLmpz
CkBAIC0wLDAgKzEsNTEgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9k
cz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhLCBl
KSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVj
dGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAgIH0sCisgICAgc2hvdWxkVGhyb3c6
IGZ1bmN0aW9uKGV4Y2VwdGlvbiwgZnVuY3RvcikgeworICAgICAgICBsZXQgdGhyZXdFeGNlcHRp
b247CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7CisgICAgICAgICAgICB0
aHJld0V4Y2VwdGlvbiA9IGZhbHNlOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAg
IHRocmV3RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICghZSBpbnN0YW5jZW9mIGV4
Y2VwdGlvbikKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRo
cm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBpdCB0aHJvd3M6ICIgKyBlLm5hbWUpOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aHJld0V4Y2VwdGlvbikKKyAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIg
YnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7CisgICAgfQorfQorCitsZXQgaSA9IDA7
CisKK2xldCBvID0ge307CitjbGFzcyBCYXNlIHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAg
ICAgcmV0dXJuIG87CisgICAgfQorfQorCitjbGFzcyBDIGV4dGVuZHMgQmFzZSB7CisgICAgI21l
dGhvZCh2KSB7CisgICAgICAgIHRoaXMuZmllbGQgPSB2OworICAgIH0KKworICAgIGFjY2Vzcyh2
KSB7CisgICAgICAgIHRoaXMuI21ldGhvZCh2KTsKKyAgICB9Cit9Citub0lubGluZShDLnByb3Rv
dHlwZS5hY2Nlc3MpOworCitsZXQgYyA9IG5ldyBDKCk7CitDLnByb3RvdHlwZS5hY2Nlc3MuY2Fs
bChjLCAnZm9vJyk7Cithc3NlcnQuc2FtZVZhbHVlKGMuZmllbGQsICdmb28nKTsKKworYXNzZXJ0
LnNob3VsZFRocm93KFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgYyA9IG5ldyBDKCk7Cit9
KTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtaW52YWxpZGF0
ZS1jb21waWxlZC13aXRoLWNvbnN0YW50LXN5bWJvbC5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZh
dGUtbWV0aG9kLWludmFsaWRhdGUtY29tcGlsZWQtd2l0aC1jb25zdGFudC1zeW1ib2wuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjlkM2M3MmIwMzhiYjBhZDdlZTc5OWQ1MjE0N2MyMmJkODZiYTU5NAotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWludmFsaWRhdGUtY29t
cGlsZWQtd2l0aC1jb25zdGFudC1zeW1ib2wuanMKQEAgLTAsMCArMSw2MiBAQAorLy9AIHJlcXVp
cmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0gewor
ICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAgICBpZiAoYSAhPT0gZSkgCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsg
YSk7CisgICAgfSwKKyAgICB0aHJvd3M6IGZ1bmN0aW9uKGV4Y2VwdGlvbiwgZnVuY3Rvcikgewor
ICAgICAgICBsZXQgdGhyZXdFeGNlcHRpb247CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBm
dW5jdG9yKCk7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IGZhbHNlOworICAgICAgICB9
IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAg
ICAgIGlmICghZSBpbnN0YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBp
dCB0aHJvd3M6ICIgKyBlLm5hbWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aHJld0V4
Y2VwdGlvbikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6
ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7
CisgICAgfQorfQorCitmdW5jdGlvbiBmYWN0b3J5Q2xhc3MoKSB7CisgICAgY2xhc3MgQyB7Cisg
ICAgICAgICNtZXRob2QoKSB7CisgICAgICAgICAgICByZXR1cm4gJ3Rlc3QnOworICAgICAgICB9
CisgICAgCisgICAgICAgIGFjY2VzcygpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLiNtZXRo
b2QoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBub0lubGluZShDLnByb3RvdHlwZS5hY2Nlc3Mp
OworCisgICAgcmV0dXJuIEM7Cit9CisKK2xldCBDID0gZmFjdG9yeUNsYXNzKCk7CisKK2ZvciAo
bGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBh
c3NlcnQuc2FtZVZhbHVlKGMuYWNjZXNzKCksICd0ZXN0Jyk7CisgICAgYXNzZXJ0LnRocm93cyhU
eXBlRXJyb3IsICgpID0+IHsKKyAgICAgICAgYy5hY2Nlc3MuY2FsbCh7fSk7CisgICAgfSk7Cit9
CisKK2xldCBDMiA9IGZhY3RvcnlDbGFzcygpOworCitsZXQgYzIgPSBuZXcgQzIoKTsKK2Fzc2Vy
dC5zYW1lVmFsdWUoYzIuYWNjZXNzKCksICd0ZXN0Jyk7CisKK2xldCBjID0gbmV3IEMoKTsKKwor
YXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICBjLmFjY2Vzcy5jYWxsKGMyKTsK
K30pOworCithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgKCkgPT4geworICAgIGMyLmFjY2Vzcy5j
YWxsKGMpOworfSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1u
ZXN0ZWQtY2xhc3MuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1uZXN0ZWQtY2xh
c3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOGNkZjQ4OTlhNDNlNjllZDBkYWIzNGMyMjYzZWZkMzg4M2Q5YTIy
ZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLW5lc3Rl
ZC1jbGFzcy5qcwpAQCAtMCwwICsxLDY4IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJp
dmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBlKSB7CisgICAgaWYgKGEg
IT09IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQg
Z290OiAiICsgYSk7Cit9CisKKygoKSA9PiB7CisgICAgY2xhc3MgQmFzZSB7CisgICAgICAgIEMg
PSBjbGFzcyB7CisgICAgICAgICAgICBtZXRob2QoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHRoaXMuI21CYXNlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAjbUJh
c2UoKSB7CisgICAgICAgICAgICByZXR1cm4gNDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxl
dCBiYXNlID0gbmV3IEJhc2UoKTsKKyAgICBsZXQgYyA9IG5ldyBiYXNlLkMoKTsKKyAgICBhc3Nl
cnQoYy5tZXRob2QuY2FsbChiYXNlKSwgNCk7CisKKyAgICB0cnkgeworICAgICAgICBjLm1ldGhv
ZCgpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBUeXBl
RXJyb3IsIHRydWUpOworICAgIH0KK30pKCk7CisKKy8vIFRlc3Qgc2hhZG93IG1ldGhvZHMKKwor
KCgpID0+IHsKKyAgICBjbGFzcyBCYXNlIHsKKyAgICAgICAgbWV0aG9kKCkgeworICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuI20oKTsKKyAgICAgICAgfQorCisgICAgICAgIEMgPSBjbGFzcyB7Cisg
ICAgICAgICAgICBtZXRob2QobykgeworICAgICAgICAgICAgICAgIHJldHVybiBvLiNtKCk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICNtKCkgeworICAgICAgICAgICAgICAgIHJldHVy
biB0aGlzLmZvbzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9vID0gNDsKKyAgICAg
ICAgfTsKKworICAgICAgICAjbSgpIHsKKyAgICAgICAgICAgIHJldHVybiAiZm9vIjsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGxldCBiYXNlID0gbmV3IEJhc2UoKTsKKyAgICBsZXQgYyA9IG5l
dyBiYXNlLkMoKTsKKyAgICBhc3NlcnQoYy5tZXRob2QoYyksIDQpOworICAgIGFzc2VydChiYXNl
Lm1ldGhvZCgpLCAiZm9vIik7CisKKyAgICB0cnkgeworICAgICAgICBjLm1ldGhvZChiYXNlKTsK
KyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGFzc2VydChlIGluc3RhbmNlb2YgVHlwZUVycm9y
LCB0cnVlKTsKKyAgICB9Cit9KSgpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2
YXRlLW1ldGhvZC1vbi1zZWFsZWQtb2JqZWN0cy5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUt
bWV0aG9kLW9uLXNlYWxlZC1vYmplY3RzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2MmYwOTk0MzEyMjU3MTQ5
MjFhYmQ1ZTE1YmFkYTRmYjg1MDZjNjAKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9wcml2YXRlLW1ldGhvZC1vbi1zZWFsZWQtb2JqZWN0cy5qcwpAQCAtMCwwICsxLDY0IEBACisv
L0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3Nl
cnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCkgeworICAg
ICAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cigiRXhwZWN0ZWQ6ICIgKyBhY3R1YWwgKyAiIGJ1ZyBnb3Q6ICIgKyBleHBlY3RlZCk7CisgICAg
fSwKKworICAgIHRocm93czogZnVuY3Rpb24gKGV4cGVjdGVkRXJyb3IsIG9wKSB7CisgICAgICAg
IHRyeSB7CisgICAgICAgICAgb3AoKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAg
ICBpZiAoIShlIGluc3RhbmNlb2YgZXhwZWN0ZWRFcnJvcikpCisgICAgICAgICAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4cGVjdGVkRXJyb3IgKyAiIGJ1
dCB0aHJldzogIiArIGUpOworICAgICAgICB9CisgICAgfQorfTsKKworY2xhc3MgQyB7CisgICAg
I20oKSB7IHJldHVybiAndGVzdCc7IH0KKworICAgIGFjY2VzcygpIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuI20oKTsKKyAgICB9Cit9CisKK2xldCBjMSA9IG5ldyBDKCk7Cithc3NlcnQuc2FtZVZh
bHVlKGMxLmFjY2VzcygpLCAndGVzdCcpOworYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0
aW9uICgpIHsKKyAgICBjMS5hY2Nlc3MuY2FsbCh7fSk7Cit9KTsKKworT2JqZWN0LnNlYWwoYzEp
OworCithc3NlcnQuc2FtZVZhbHVlKGMxLmFjY2VzcygpLCAndGVzdCcpOworYXNzZXJ0LnRocm93
cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgpIHsKKyAgICBjMS5hY2Nlc3MuY2FsbCh7fSk7Cit9KTsK
KworLy8gUGVyZm9ybSBhIHNldCBicmFuZCB0cmFuc2l0aW9uIG9uIGZyb3plbiBvYmplY3QKK2xl
dCBzZWFsZWRPYmplY3QgPSB7fTsKK09iamVjdC5mcmVlemUoc2VhbGVkT2JqZWN0KTsKKworY2xh
c3MgQmFzZSB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIHJldHVybiBzZWFsZWRPYmpl
Y3Q7CisgICAgfQorfQorCitjbGFzcyBEIGV4dGVuZHMgQmFzZSB7CisgICAgI20oKSB7IHJldHVy
biAndGVzdCBEJzsgfQorCisgICAgc3RhdGljIGFjY2VzcyhvKSB7CisgICAgICAgIHJldHVybiBv
LiNtKCk7CisgICAgfQorfQorCitsZXQgZCA9IG5ldyBEKCk7CisKK2Fzc2VydC5zYW1lVmFsdWUo
RC5hY2Nlc3MoZCksICd0ZXN0IEQnKTsKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlv
biAoKSB7CisgICAgRC5hY2Nlc3Moe30pOworfSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL3ByaXZhdGUtbWV0aG9kLW9uLXVuY2FjaGVhYmxlLWRpY3Rpb25hcnkuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9wcml2YXRlLW1ldGhvZC1vbi11bmNhY2hlYWJsZS1kaWN0aW9uYXJ5LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmEwNTUxNTBlZDc0NTRhNWIwMDllNzEyMWM1NDY4NmE4MzAwOTQ3NGEKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1vbi11bmNhY2hlYWJsZS1k
aWN0aW9uYXJ5LmpzCkBAIC0wLDAgKzEsNjQgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQ
cml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1
bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgICAgIGlmIChhY3R1YWwgIT09IGV4cGVj
dGVkKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGFjdHVhbCAr
ICIgYnVnIGdvdDogIiArIGV4cGVjdGVkKTsKKyAgICB9LAorCisgICAgdGhyb3dzOiBmdW5jdGlv
biAoZXhwZWN0ZWRFcnJvciwgb3ApIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICBvcCgpOwor
ICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBl
Y3RlZEVycm9yKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRv
IHRocm93OiAiICsgZXhwZWN0ZWRFcnJvciArICIgYnV0IHRocmV3OiAiICsgZSk7CisgICAgICAg
IH0KKyAgICB9Cit9OworCitjbGFzcyBDIHsKKyAgICAjbSgpIHsgcmV0dXJuICd0ZXN0JzsgfQor
CisgICAgYWNjZXNzKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jbSgpOworICAgIH0KK30KKwor
bGV0IGMxID0gbmV3IEMoKTsKK2Fzc2VydC5zYW1lVmFsdWUoYzEuYWNjZXNzKCksICd0ZXN0Jyk7
Cithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgIGMxLmFjY2Vzcy5j
YWxsKHt9KTsKK30pOworCitPYmplY3QuZnJlZXplKGMxKTsKKworYXNzZXJ0LnNhbWVWYWx1ZShj
MS5hY2Nlc3MoKSwgJ3Rlc3QnKTsKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAo
KSB7CisgICAgYzEuYWNjZXNzLmNhbGwoe30pOworfSk7CisKKy8vIFBlcmZvcm0gYSBzZXQgYnJh
bmQgdHJhbnNpdGlvbiBvbiBmcm96ZW4gb2JqZWN0CitsZXQgZnJvemVuT2JqZWN0ID0ge307CitP
YmplY3QuZnJlZXplKGZyb3plbk9iamVjdCk7CisKK2NsYXNzIEJhc2UgeworICAgIGNvbnN0cnVj
dG9yKCkgeworICAgICAgICByZXR1cm4gZnJvemVuT2JqZWN0OworICAgIH0KK30KKworY2xhc3Mg
RCBleHRlbmRzIEJhc2UgeworICAgICNtKCkgeyByZXR1cm4gJ3Rlc3QgRCc7IH0KKworICAgIHN0
YXRpYyBhY2Nlc3MobykgeworICAgICAgICByZXR1cm4gby4jbSgpOworICAgIH0KK30KKworbGV0
IGQgPSBuZXcgRCgpOworCithc3NlcnQuc2FtZVZhbHVlKEQuYWNjZXNzKGQpLCAndGVzdCBEJyk7
Cithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgIEQuYWNjZXNzKHt9
KTsKK30pOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1wb2x5
bW9ycGhpYy13aXRoLWNvbnN0YW50LXN5bWJvbC5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUt
bWV0aG9kLXBvbHltb3JwaGljLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAw
MTc2MjdhNTMwOTlhMjAxZmJlYWViM2Q5MTdiMDM2YmY5MzFjMTYKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1wb2x5bW9ycGhpYy13aXRoLWNvbnN0YW50
LXN5bWJvbC5qcwpAQCAtMCwwICsxLDUzIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJp
dmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5j
dGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9LAorICAgIHNo
b3VsZFRocm93OiBmdW5jdGlvbihleGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRo
cmV3RXhjZXB0aW9uOworICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOworICAg
ICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChlKSB7Cisg
ICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICBpZiAoIWUgaW5z
dGFuY2VvZiBleGNlcHRpb24pCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBl
Y3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgaXQgdGhyb3dzOiAiICsg
ZS5uYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9u
Lm5hbWUgKyAiIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworICAgIH0KK30KKwor
bGV0IGkgPSAwOworCitjbGFzcyBCYXNlIHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAg
aWYgKGkgJSAyKQorICAgICAgICAgICAgdGhpcy5hbm90aGVyRmllbGQgPSBpOworICAgIH0KK30K
KworY2xhc3MgQyBleHRlbmRzIEJhc2UgeworICAgICNtZXRob2QoKSB7CisgICAgICAgIHJldHVy
biAndGVzdCc7CisgICAgfQorCisgICAgYWNjZXNzKCkgeworICAgICAgICByZXR1cm4gdGhpcy4j
bWV0aG9kKCk7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuYWNjZXNzKTsKKworZm9y
ICg7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgY291bnQgPSBpOworICAgIGxldCBjID0gbmV3IEMo
KTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuYWNjZXNzKCksICd0ZXN0Jyk7Cit9CisKK2Fzc2Vy
dC5zaG91bGRUaHJvdyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICBjLmFjY2Vzcy5jYWxsKHt9KTsK
K30pOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1zZXQtYnJh
bmQtc2hvdWxkLWhhdmUtd3JpdGUtYmFycmllci5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUt
bWV0aG9kLXNldC1icmFuZC1zaG91bGQtaGF2ZS13cml0ZS1iYXJyaWVyLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmNiMzliN2E1ZTczY2IzM2Y0NDQ0ZTFmZjQwMzJkY2Q0NTY1MTVjNTMKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1zZXQtYnJhbmQtc2hvdWxkLWhhdmUt
d3JpdGUtYmFycmllci5qcwpAQCAtMCwwICsxLDQxIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0t
dXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVl
OiBmdW5jdGlvbihhLCBlKSB7CisgICAgICAgIGlmIChhICE9PSBlKQorICAgICAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9
Cit9OworCitsZXQgb2JqID0ge307CitsZXQgb3ZlcnJpZGVTdXBlciA9IGZhbHNlCitjbGFzcyBC
YXNlIHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgaWYgKG92ZXJyaWRlU3VwZXIpCisg
ICAgICAgICAgICByZXR1cm4gb2JqOworICAgICAgICByZXR1cm4ge307CisgICAgfQorfQorCitj
bGFzcyBDIGV4dGVuZHMgQmFzZSB7CisgICAgI21ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuICd0
ZXN0JzsKKyAgICB9CisKKyAgICBzdGF0aWMgYWNjZXNzKG8pIHsKKyAgICAgICAgcmV0dXJuIG8u
I21ldGhvZCgpOworICAgIH0KK30KK25vSW5saW5lKEMuYWNjZXNzKTsKKworZ2MoKTsKK2xldCBj
ID0gbmV3IEMoKTsgLy8gVGhpcyBpcyBkb25lIHRvIGZpbGwgSUMgcGF0aAorYyA9IG51bGw7CisK
K292ZXJyaWRlU3VwZXIgPSB0cnVlOworbmV3IEMoKTsKK2VkZW5HQygpOyAvLyB0aGlzIGxlYXZl
cyBvYmogd2l0aCBhIFN0cnVjdXRyZSB0aGF0IHdhcyBmcmVlZAorZm9yIChsZXQgaSA9IDA7IGkg
PCAxMDAwMDsgaSsrKSB7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShDLmFjY2VzcyhvYmopLCAndGVz
dCcpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC11bnR5
cGVkLXVzZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLXVudHlwZWQtdXNlLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmI4N2M5ODUxNzYxOTM2ZTFhMDczMjcxMWRmNjFjOTExYzJkYjgwOWMKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC11bnR5cGVkLXVz
ZS5qcwpAQCAtMCwwICsxLDU3IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1l
dGhvZHM9dHJ1ZSIsICItLXVzZUFjY2Vzc0lubGluaW5nPWZhbHNlIikKKworbGV0IGFzc2VydCA9
IHsKKyAgICBzaG91bGRUaHJvdzogZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAg
ICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0
b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0
Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAg
aWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGl0IHRo
cm93czogIiArIGUubmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRocmV3RXhjZXB0
aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiAr
IGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKKyAg
ICB9Cit9CisKK2NsYXNzIEMgeworICAjbWV0aG9kKCkge30KKworICBhY2Nlc3ModikgeworICAg
ICAgbGV0IG8gPSB0aGlzOworICAgICAgLy8gVGhpcyBicmFuY2ggaXMgaGVyZSB0byBhdm9pZCBD
aGVja1ByaXZhdGVCcmFuZCB0byBiZSBmb2xkZWQuCisgICAgICBpZiAodiA+IDEwMCkKKyAgICAg
ICAgICBvID0ge307CisgICAgICBvLiNtZXRob2QoKTsKKyAgfQorfQorbm9JbmxpbmUoQy5wcm90
b3R5cGUuYWNjZXNzKTsKKworbGV0IGMgPSBuZXcgQygpOworCisvLyBMZXQncyB0cmlnZ2VyIEpJ
VCBjb21waWxhdGlvbiBmb3IgYEMucHJvdG90eXBlLmFjY2Vzc2AKK2ZvciAobGV0IGkgPSAwOyBp
IDwgMTAwMDA7IGkrKykgeworICAgIGMuYWNjZXNzKDE1KTsKK30KKworZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgYXNzZXJ0LnNob3VsZFRocm93KFR5cGVFcnJvciwgKCkg
PT4geworICAgICAgICBjLmFjY2Vzcy5jYWxsKHt9LCAwKTsKKyAgICB9KTsKKworICAgIGFzc2Vy
dC5zaG91bGRUaHJvdyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICAgICAgYy5hY2Nlc3MuY2FsbCgx
NSwgMCk7CisgICAgfSk7CisKKyAgICBhc3NlcnQuc2hvdWxkVGhyb3coVHlwZUVycm9yLCAoKSA9
PiB7CisgICAgICAgIGMuc2V0RmllbGQuY2FsbCgnc3RyaW5nJywgMCk7CisgICAgfSk7CisKKyAg
ICBhc3NlcnQuc2hvdWxkVGhyb3coVHlwZUVycm9yLCAoKSA9PiB7CisgICAgICAgIGMuc2V0Rmll
bGQuY2FsbChTeW1ib2woJ3N5bWJvbCcpLCAwKTsKKyAgICB9KTsKK30KKwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2Qtd2l0aC11bmNhY2hlYWJsZS1kaWN0aW9uYXJ5
LXRyYW5zaXRpb24uanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC13aXRoLXVuY2Fj
aGVhYmxlLWRpY3Rpb25hcnktdHJhbnNpdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMjEyODhlYmU2ZDgy
MWYzM2NiMWUyZTVmMzhkNjUxMTRmNzIzMWRlCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3MvcHJpdmF0ZS1tZXRob2Qtd2l0aC11bmNhY2hlYWJsZS1kaWN0aW9uYXJ5LXRyYW5zaXRp
b24uanMKQEAgLTAsMCArMSwzOSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVN
ZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24g
KGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICAgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgYWN0dWFsICsgIiBidWcg
Z290OiAiICsgZXhwZWN0ZWQpOworICAgIH0sCisKKyAgICB0aHJvd3M6IGZ1bmN0aW9uIChleHBl
Y3RlZEVycm9yLCBvcCkgeworICAgICAgICB0cnkgeworICAgICAgICAgIG9wKCk7CisgICAgICAg
IH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVkRXJy
b3IpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6
ICIgKyBleHBlY3RlZEVycm9yICsgIiBidXQgdGhyZXc6ICIgKyBlKTsKKyAgICAgICAgfQorICAg
IH0KK307CisKK2NsYXNzIEMgeworICAgICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisKKyAgICBh
Y2Nlc3MoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtKCk7CisgICAgfQorfQorCitsZXQgYzEg
PSBuZXcgQygpOworYXNzZXJ0LnNhbWVWYWx1ZShjMS5hY2Nlc3MoKSwgJ3Rlc3QnKTsKK2Fzc2Vy
dC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgYzEuYWNjZXNzLmNhbGwoe30p
OworfSk7CisKKyR2bS50b1VuY2FjaGVhYmxlRGljdGlvbmFyeShjMSk7CisKK2Fzc2VydC5zYW1l
VmFsdWUoYzEuYWNjZXNzKCksICd0ZXN0Jyk7Cithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVu
Y3Rpb24gKCkgeworICAgIGMxLmFjY2Vzcy5jYWxsKHt9KTsKK30pOworCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZHMtaW5saW5lLWNhY2hlLmpzIGIvSlNUZXN0cy9z
dHJlc3MvcHJpdmF0ZS1tZXRob2RzLWlubGluZS1jYWNoZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45N2NiN2Y4
OWUxYzAxY2NlMTVjYmM3MTQ2MTM2YjFhYWYzN2I3OWY2Ci0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2RzLWlubGluZS1jYWNoZS5qcwpAQCAtMCwwICsxLDIy
IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2Z1
bmN0aW9uIGFzc2VydChhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhw
ZWN0ZWQpCisgICAgICAgIHRocm93IEVycm9yKCJFeHBlY3RlZDogIiArIGV4cGVjdGVkICsgIiBB
Y3R1YWw6ICIgKyBhY3R1YWwpOworfQorCitjbGFzcyBDIHsKKyAgICAjbWV0aG9kKCkgeworICAg
ICAgICByZXR1cm4gJ2Zvbyc7CisgICAgfQorCisgICAgYWNjZXNzKCkgeworICAgICAgIHJldHVy
biB0aGlzLiNtZXRob2QoKTsKKyAgICB9Cit9CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7
IGkrKykgeworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQoYy5hY2Nlc3MoKSwgJ2Zv
bycpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZHMtbWVn
YW1vcnBoaWMtaWMuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZHMtbWVnYW1vcnBo
aWMtaWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uM2MxNjZkNmI3NmI3ODVkYWI4MzQ2NzQyZDUwYTIxNmJkYzZh
MGVkMQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1t
ZWdhbW9ycGhpYy1pYy5qcwpAQCAtMCwwICsxLDI1IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0t
dXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChhY3R1YWwsIGV4cGVj
dGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IEVycm9y
KCJFeHBlY3RlZDogIiArIGV4cGVjdGVkICsgIiBBY3R1YWw6ICIgKyBhY3R1YWwpOworfQorCitm
dW5jdGlvbiBjbGFzc0V4cHIoKSB7CisgICAgcmV0dXJuIGNsYXNzIHsKKyAgICAgICAgI21ldGhv
ZCgpIHsKKyAgICAgICAgICAgIHJldHVybiAnZm9vJzsKKyAgICAgICAgfQorCisgICAgICAgIGFj
Y2VzcygpIHsKKyAgICAgICAgICAgcmV0dXJuIHRoaXMuI21ldGhvZCgpOworICAgICAgICB9Cisg
ICAgfQorfQorCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgQyA9
IGNsYXNzRXhwcigpOworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQoYy5hY2Nlc3Mo
KSwgJ2ZvbycpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhv
ZHMtb24tcHJveHkuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZHMtb24tcHJveHku
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZmI1ZmRmY2I2MjM0ZDU0MGFhMGZhMTJlOGU3Nzc2ZDA2M2FhNWE5Zgot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1vbi1wcm94
eS5qcwpAQCAtMCwwICsxLDQyIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1l
dGhvZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBlLCBtKSB7CisgICAgaWYgKGEgIT09
IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihtKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0QXJy
YXlDb250ZW50KGEsIGUpIHsKKyAgICBhc3NlcnQoYS5sZW5ndGgsIGUubGVuZ3RoLCAiU2l6ZSBv
ZiBhcnJheXMgZG9lc24ndCBtYXRjaCIpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYS5sZW5n
dGg7IGkrKykKKyAgICAgICAgYXNzZXJ0KGFbaV0sIGVbaV0sICJhWyIgKyBpICsgIl0gPSAiICsg
YVtpXSArICIgYnV0IGVbIiArIGkgKyAiXSA9ICIgKyBlW2ldKTsKK30KKworbGV0IGFyciA9IFtd
OworCitjbGFzcyBQcm94eUJhc2UgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICByZXR1
cm4gbmV3IFByb3h5KHRoaXMsIHsKKyAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKG9iaiwgcHJv
cCkgeworICAgICAgICAgICAgICAgIGFyci5wdXNoKHByb3ApOworICAgICAgICAgICAgICAgIHJl
dHVybiBvYmpbcHJvcF07CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KK30KKwor
Y2xhc3MgVGVzdCBleHRlbmRzIFByb3h5QmFzZSB7CisgICAgI20oKSB7CisgICAgICAgIHJldHVy
biAzOworICAgIH0KKworICAgIG1ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI20oKTsK
KyAgICB9Cit9CisKK2xldCB0ID0gbmV3IFRlc3QoKTsKK2xldCByID0gdC5tZXRob2QoKTsKK2Fz
c2VydChyLCAzLCAiRXhwZWN0ZWQ6IDMgYnV0IGdvdDogIiArIHIpOworCithc3NlcnRBcnJheUNv
bnRlbnQoYXJyLCBbJ21ldGhvZCddKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJp
dmF0ZS1tZXRob2RzLXBvbHktaWMtbXVsdGlwbGUtY2xhc3Nlcy5qcyBiL0pTVGVzdHMvc3RyZXNz
L3ByaXZhdGUtbWV0aG9kcy1wb2x5LWljLW11bHRpcGxlLWNsYXNzZXMuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OWY2YzZkNmE2NTU2ZTgzMTU2NjMwODc2YTgxMzllZjg1MmRiMWQ4MAotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1wb2x5LWljLW11bHRpcGxlLWNsYXNz
ZXMuanMKQEAgLTAsMCArMSwyOCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVN
ZXRob2RzPXRydWUiKQorCitmdW5jdGlvbiBhc3NlcnQoYWN0dWFsLCBleHBlY3RlZCkgeworICAg
IGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBFcnJvcigiRXhwZWN0ZWQ6
ICIgKyBleHBlY3RlZCArICIgQWN0dWFsOiAiICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gY2xh
c3NFeHByKCkgeworICAgIHJldHVybiBjbGFzcyB7CisgICAgICAgICNtZXRob2QoKSB7CisgICAg
ICAgICAgICByZXR1cm4gJ2Zvbyc7CisgICAgICAgIH0KKworICAgICAgICBhY2Nlc3MoKSB7Cisg
ICAgICAgICAgIHJldHVybiB0aGlzLiNtZXRob2QoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwor
bGV0IEMxID0gY2xhc3NFeHByKCk7CitsZXQgQzIgPSBjbGFzc0V4cHIoKTsKKworbGV0IGFyciA9
IFtDMSwgQzJdOworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IGMg
PSBuZXcgYXJyW2kgJSBhcnIubGVuZ3RoXSgpOworICAgIGFzc2VydChjLmFjY2VzcygpLCAnZm9v
Jyk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1wb2x5
LWljLXNpbmdsZS1jbGFzcy5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1wb2x5
LWljLXNpbmdsZS1jbGFzcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YzQ4NWI0Zjg4ZTk0NDU5MjM2OGI4ZDVm
NWY4MDU0OTlmY2YyNTY0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0
ZS1tZXRob2RzLXBvbHktaWMtc2luZ2xlLWNsYXNzLmpzCkBAIC0wLDAgKzEsMjUgQEAKKy8vQCBy
ZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworZnVuY3Rpb24gYXNz
ZXJ0KGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAg
ICAgICAgdGhyb3cgRXJyb3IoIkV4cGVjdGVkOiAiICsgZXhwZWN0ZWQgKyAiIEFjdHVhbDogIiAr
IGFjdHVhbCk7Cit9CisKK2NsYXNzIEMgeworICAgICNtZXRob2QoKSB7CisgICAgICAgIHJldHVy
biAnZm9vJzsKKyAgICB9CisKKyAgICBhY2Nlc3MoKSB7CisgICAgICAgcmV0dXJuIHRoaXMuI21l
dGhvZCgpOworICAgIH0KK30KKworbGV0IGMxID0gbmV3IEMoKTsKK2xldCBjMiA9IG5ldyBDKCk7
CitjMi5iYXIgPSAnYmFyJzsKK2xldCBhcnIgPSBbYzEsIGMyXTsKK2ZvciAobGV0IGkgPSAwOyBp
IDwgMTAwMDA7IGkrKykgeworICAgIGFzc2VydChhcnJbaSAlIGFyci5sZW5ndGhdLmFjY2Vzcygp
LCAnZm9vJyk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbmFtZXMt
YXZhaWxhYmxlLW9uLWRpcmVjdC1ldmFsLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1l
cy1hdmFpbGFibGUtb24tZGlyZWN0LWV2YWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjRjZTBlMGFmODA1Nzhl
ODk3MTZhMTY3MmVkYzE3NzMwNWIwNjRmMwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWRpcmVjdC1ldmFsLmpzCkBAIC0wLDAgKzEs
MjMgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKwor
bGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChsaHMsIHJocykgeworICAg
ICAgICBpZiAobGhzICE9PSByaHMpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVj
dGVkOiAiICsgcmhzICsgIiBidWcgZ290OiAiICsgbGhzKTsKKyAgICB9Cit9OworCisoZnVuY3Rp
b24gKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICAjbSgpIHsgcmV0dXJuICd0ZXN0JzsgfQor
CisgICAgICAgIGNhbGxNZXRob2RGcm9tRXZhbCgpIHsKKyAgICAgICAgICAgIGxldCBzZWxmID0g
dGhpczsKKyAgICAgICAgICAgIHJldHVybiBldmFsKCdzZWxmLiNtKCknKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuY2Fs
bE1ldGhvZEZyb21FdmFsKCksICd0ZXN0Jyk7Cit9KSgpOworCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3Rlc3QyNjIvY29uZmlnLnlhbWwgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKaW5kZXgg
ODNhNmE3MmQ0Y2YzZjRjMWM5Y2Y4YWI3MTk5Y2JkZmM0ZTBjODhmNi4uYTE3NjQ2ODZhNGJiM2I0
MWVlNDNjY2RkOTAwYzljOTI3ZGFjZGYwMyAxMDA2NDQKLS0tIGEvSlNUZXN0cy90ZXN0MjYyL2Nv
bmZpZy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbApAQCAtNCw2ICs0LDcg
QEAgZmxhZ3M6CiAgIFdlYWtSZWY6IHVzZVdlYWtSZWZzCiAgIEZpbmFsaXphdGlvblJlZ2lzdHJ5
OiB1c2VXZWFrUmVmcwogICBjbGFzcy1maWVsZHMtcHJpdmF0ZTogdXNlUHJpdmF0ZUNsYXNzRmll
bGRzCisgIGNsYXNzLW1ldGhvZHMtcHJpdmF0ZTogdXNlUHJpdmF0ZU1ldGhvZHMKICAgY2xhc3Mt
c3RhdGljLWZpZWxkcy1wdWJsaWM6IHVzZVB1YmxpY1N0YXRpY0NsYXNzRmllbGRzCiAgIGNsYXNz
LXN0YXRpYy1maWVsZHMtcHJpdmF0ZTogdXNlUHJpdmF0ZVN0YXRpY0NsYXNzRmllbGRzCiAgIElu
dGwuRGF0ZVRpbWVGb3JtYXQtZGF5UGVyaW9kOiB1c2VJbnRsRGF0ZVRpbWVGb3JtYXREYXlQZXJp
b2QKQEAgLTE5LDcgKzIwLDYgQEAgc2tpcDoKICAgICAtIHJlZ2V4cC1sb29rYmVoaW5kCiAgICAg
LSBsZWdhY3ktcmVnZXhwCiAKLSAgICAtIGNsYXNzLW1ldGhvZHMtcHJpdmF0ZQogICAgIC0gY2xh
c3Mtc3RhdGljLW1ldGhvZHMtcHJpdmF0ZQogICAgIC0gY2xlYW51cFNvbWUKICAgICAtIGhvc3Qt
Z2MtcmVxdWlyZWQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418929</attachid>
            <date>2021-02-01 14:46:15 -0800</date>
            <delta_ts>2021-02-08 13:45:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194434-20210201194612.patch</filename>
            <type>text/plain</type>
            <size>340925</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MGE0ZDdmOWFkYjU3YWRhNzVkZWVmMjM2YTgyYzFhYmQ3MTkxZmRhLi5hYzU0ZDllZDZiMDJhZWNm
OGVlYTQ1ZDUxZDZhMzVlOWU4NDFiNjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MTcgQEAKKzIwMjEtMDEtMjkgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtFU05leHRdIEltcGxlbWVudCBwcml2YXRlIG1ldGhvZHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDQzNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYWRk
aW5nIHN1cHBvcnQgdG8gcHJpdmF0ZSBtZXRob2RzIGZvbGxvd2luZyB0aGUKKyAgICAgICAgc3Bl
Y2lmaWNhdGlvbiBvbiBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtcHJpdmF0ZS1tZXRob2RzLy4K
KyAgICAgICAgVGhpcyBpcyBpbnRyb2R1Y2luZyBhIG5ldyB3YXkgdG8gZGVjbGFyZSBwcml2YXRl
IG1ldGhvZHMgb24KKyAgICAgICAgY2xhc3Mgc3ludGF4LiBQcml2YXRlIG1ldGhvZHMgYXJlIG9u
bHkgYWNjZXNzaWJsZSB3aXRoaW4KKyAgICAgICAgY2xhc3NlcyB0aGV5IHdlcmUgZGVjbGFyZWQs
IGFuZCBvbmx5IGNhbiBiZSBjYWxsZWQgZnJvbQorICAgICAgICBvYmplY3RzIHRoYXQgYXJlIGlu
c3RhbmNlIG9mIHRoZXNlIGNsYXNzZXMuCisgICAgICAgIFRvIGd1YXJhbnRlZSBzdWNoIHJ1bGVz
LCB0aGUgcHJvcG9zYWwgcHJlc2VudHMgdGhlIGNvbmNlcHQgb2YKKyAgICAgICAgQnJhbmQgQ2hl
Y2suIER1cmluZyBjbGFzcyBldmFsdWF0aW9uLCBpZiBhIHByaXZhdGUgbWV0aG9kIGlzIHByZXNl
bnQsCisgICAgICAgIGEgYGJyYW5kYCBpcyBpbnN0YWxsZWQgaW4gdGhpcyBjbGFzcy4gRXZlcnkg
aW5zdGFuY2Ugb2Ygc3VjaCBjbGFzcworICAgICAgICB0aGVuIGdldHMgdGhpcyBicmFuZCBpbnN0
YWxsZWQgZHVyaW5nIGBbW0NvbnN0cnVjdF1dYCBvcGVyYXRpb24uIEl0CisgICAgICAgIG1lYW5z
IHRoYXQgYW4gb2JqZWN0IGNhbiBoYXZlIG11bHRpcGxlIGJyYW5kcyAoZS5nIHdoZW4gdGhlcmUg
aXMgYWxzbworICAgICAgICBwcml2YXRlIG1ldGhvZHMgZGVjbGFyZWQgb24gc3VwZXIgY2xhc3Mp
LiBCZWZvcmUgYWNjZXNzaW5nIGEgcHJpdmF0ZQorICAgICAgICBtZXRob2QsIHRoZXJlIGlzIGEg
Y2hlY2sgdG8gdmFsaWRhdGUgaWYgdGhlIHRhcmdldCBvZiB0aGUgY2FsbCBoYXMgdGhlCisgICAg
ICAgIGJyYW5kIG9mIGNhbGxlZSBtZXRob2QuCisgICAgICAgIFRoZSBicmFuZCBjaGVjayBtZWNo
YW5pc20gaXMgaW1wbGVtZW50ZWQgdXNpbmcgYSBgQHByaXZhdGVCcmFuZGAKKyAgICAgICAgc3Rv
cmVkIG9uIGNsYXNzIHNjb3BlLiBIZXJlIGlzIGEgcmVwcmVzZW50YXRpb24gb2YgaG93IHRoaXMg
bWVjaGFuaXNtCisgICAgICAgIHdvcmtzOgorCisgICAgICAgIGBgYAorICAgICAgICBjbGFzcyBD
IHsKKyAgICAgICAgICAgICNtKCkgeyByZXR1cm4gMzsgfQorICAgICAgICAgICAgbWV0aG9kKCkg
eyByZXR1cm4gdGhpcy4jbSgpOyB9CisgICAgICAgIH0KKworICAgICAgICBsZXQgYyA9IG5ldyBD
KCk7CisgICAgICAgIGNvbnNvbGUubG9nKGMubWV0aG9kKCkpOyAvLyBwcmludHMgMworICAgICAg
ICBgYGAKKworICAgICAgICBHZW5lcmF0ZWQgYnl0ZWNvZGUgZm9yIHRoZSBmb2xsb3dpbmcgcmVw
cmVzZW50YXRpb246CisgICAgICAgIGBgYAorICAgICAgICB7IC8vIGNsYXNzIGxleGljYWwgc2Nv
cGUKKyAgICAgICAgICAgIGNvbnN0IEBwcml2YXRlQnJhbmQgPSBAY3JlYXRlUHJpdmF0ZVN5bWJv
bCgpOworICAgICAgICAgICAgY29uc3QgI20gPSBmdW5jdGlvbiAoKSB7IHJldHVybiAzOyB9Cisg
ICAgICAgICAgICBDLnByb3RvdHlwZS5tZXRob2QgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICAgICBAY2hlY2tfcHJpdmF0ZV9icmFuZCh0aGlzLCBAcHJpdmF0ZUJyYW5kKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gI20uY2FsbCh0aGlzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IEMgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBAc2V0X3ByaXZhdGVfYnJhbmQodGhp
cywgQHByaXZhdGVCcmFuZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBs
ZXQgYyA9IG5ldyBDKCk7CisgICAgICAgIGNvbnNvbGUubG9nKGMubWV0aG9kKCkpOyAvLyBwcmlu
dHMgMworICAgICAgICBgYGAKKworICAgICAgICAjIFJlc29sdmluZyBjb3JyZWN0IGJyYW5kIHRv
IGNoZWNrCisKKyAgICAgICAgSW4gdGhlIGNhc2Ugb2Ygc2hhZG93aW5nIG9yIG5lc3RlZCBzY29w
ZSwgd2UgbmVlZCB0byBlbWl0IGJyYW5kCisgICAgICAgIGNoZWNrcyB0byB0aGUgcmlnaHQgcHJp
dmF0ZSBicmFuZC4gU2VlIGNvZGUgYmVsb3c6CisKKyAgICAgICAgYGBgCisgICAgICAgIGNsYXNz
IEMgeworICAgICAgICAgICAgI20oKSB7IHJldHVybiAzOyB9CisgICAgICAgICAgICBtZXRob2Qo
KSB7IHJldHVybiB0aGlzLiNtKCk7fQorCisgICAgICAgICAgICBBID0gY2xhc3MgeworICAgICAg
ICAgICAgICAgICNtMigpIHsgcmV0dXJuIDM7IH0KKyAgICAgICAgICAgICAgICBmb28obykgeyBy
ZXR1cm4gdGhpcy4jbSgpOyB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYGBg
CisKKyAgICAgICAgVGhlIGNhbGwgb2YgIiNtIiBpbiBgZm9vYCByZWZlcnMgdG8gIkM6OiNtIi4g
SW4gc3VjaCBjYXNlLCB3ZSBuZWVkIHRvCisgICAgICAgIGNoZWNrIEMncyBwcml2YXRlIGJyYW5k
LCBpbnN0ZWFkIG9mIEEncyBwcml2YXRlIGJyYW5kLgorICAgICAgICBUbyBwZXJmb3JtIHRoZSBw
cm9wZXIgY2hlY2ssIHdlIGZpcnN0IHJlc29sdmUgc2NvcGUgb2YgIiNtIiBhbmQgdGhlbgorICAg
ICAgICBjaGVjayB0aGUgcHJpdmF0ZSBicmFuZCBvZiB0aGlzIHNjb3BlICh0aGUgc2NvcGUgd2hl
cmUgdGhlIHByaXZhdGUKKyAgICAgICAgbWV0aG9kIGFuZCBicmFuZCBhcmUgc3RvcmVkIGlzIHRo
ZSBzYW1lKS4KKyAgICAgICAgU28gdGhlIGJ5dGVjb2RlIHRvIGxvb2t1cCB0aGUgcmlnaHQgYnJh
bmQgaXM6CisKKyAgICAgICAgYGBgCisgICAgICAgIHJlc29sdmVfc2NvcGUgbG9jMTAsICIjbSIK
KyAgICAgICAgZ2V0X2Zyb21fc2NvcGUgbG9jMTEsIGxvYzEwLCAiQHByaXZhdGVCcmFuZCIKKyAg
ICAgICAgY2hlY2tfcHJpdmF0ZV9icmFuZCB0aGlzLCBsb2MxMQorICAgICAgICBnZXRfZnJvbV9z
Y29wZSBsb2MxMSwgbG9jMTAsICIjbSIKKyAgICAgICAgLy8gc2V0dXAgY2FsbCBmcmFtZQorICAg
ICAgICBjYWxsIGxvYzExLCAuLi4KKyAgICAgICAgLy8gLi4uCisgICAgICAgIGBgYAorCisgICAg
ICAgICMgQnJhbmQgY2hlY2sgbWVjaGFuaXNtCisKKyAgICAgICAgV2UgYXJlIGludHJvZHVjaW5n
IGluIHRoaXMgcGF0Y2ggMiBuZXcgYnl0ZWNvZGVzIHRvIGFsbG93IGJyYW5kIGNoZWNrCisgICAg
ICAgIG9mIG9iamVjdHM6IGBvcF9zZXRfYnJhbmRgIGFuZCBgb3BfY2hlY2tfYnJhbmRgLgorICAg
ICAgICBgb3Bfc2V0X2JyYW5kYCBzZXRzIGEgbmV3IGJyYW5kIGluIGFuIG9iamVjdCwgc28gd2Ug
Y2FuIHBlcmZvcm0gdGhlIGJyYW5kCisgICAgICAgIGNoZWNrIGxhdGVyIHdoZW4gYWNjZXNzaW5n
IHByaXZhdGUgbWV0aG9kcy4gVGhpcyBvcGVyYXRpb25zIHRocm93cyB3aGVuCisgICAgICAgIHRy
eWluZyB0byBhZGQgdGhlIHNhbWUgYnJhbmQgdHdpY2UgaW4gYW4gT2JqZWN0LgorICAgICAgICBg
b3BfY2hlY2tfYnJhbmRgIGNoZWNrcyBpZiB0aGUgZ2l2ZW4gb2JqZWN0IGNvbnRhaW5zIHRoZSBi
cmFuZCB3ZSBhcmUKKyAgICAgICAgbG9va2luZyBmb3IuIEl0IHRyYXZlcnNlcyB0aGUgYnJhbmQg
Y2hhaW4gdG8gdmVyaWZ5IGlmIHRoZSBicmFuZCBpcworICAgICAgICBwcmVzZW50LCBhbmQgdGhy
b3dzIGBUeXBlRXJyb3JgIG90aGVyd2lzZS4KKworICAgICAgICBXZSBhcmUgYWxzbyBpbnRyb2R1
Y2luZyBhIHN1YmNsYXNzIGZvciBTdHJ1Y3R1cmUgY2FsbGVkIEJyYW5kZWRTdHJ1Y3R1cmUuCisg
ICAgICAgIEl0IGlzIHVzZWQgdG8gc3RvcmUgYnJhbmRzIGFuZCB0byBhbGxvdyBicmFuZCBjaGVj
ayBtZWNoYW5pc20uIEJyYW5kZWRTdHJ1Y3R1cmUKKyAgICAgICAgc3RvcmVzIGEgYnJhbmQgYW5k
IGEgcGFyZW50IHBvaW50ZXIgdG8gYW5vdGhlciBCcmFuZGVkU3RydWN0dXJlIHRoYXQgYWxsb3cK
KyAgICAgICAgdXMgdHJhdmVyc2UgdGhlIGJyYW5kIGNoYWluLiBXaXRoIGBCcmFuZGVkU3RydWN0
dXJlYCwgd2UgY2FuIHRoZW4KKyAgICAgICAgaW5mZXIgdGhhdCBhIGdpdmVuIG9iamVjdCBoYXMg
dGhlIGJyYW5kIHdlIGFyZSBsb29raW5nIGZvciBqdXN0CisgICAgICAgIGNoZWNraW5nIGl0cyBz
dHJ1Y3R1cmVJZC4gVGhpcyBpcyB2ZXJ5IGdvb2Qgb3B0aW1pemF0aW9uLCBzaW5jZSB3ZSBjYW4K
KyAgICAgICAgcmVkdWNlIG1vc3Qgb2YgYnJhbmQgY2hlY2tzIHRvIHN0cnVjdHVyZSBjaGVja3Mu
CisKKyAgICAgICAgV2UgY3JlYXRlZCBhIG5ldyBraW5kIG9mIHRyYW5zaXRpb24gY2FsbGVkIGBT
ZXRCcmFuZGAgdGhhdCBoYXBwZW5zIHdoZW4KKyAgICAgICAgYG9wX3NldF9icmFuZGAgaXMgZXhl
Y3V0ZWQuIFRoaXMgYWxsb3cgdXMgdG8gY2FjaGUgc3VjaCBraW5kIG9mCisgICAgICAgIHRyYXNp
dGlvbnMgb24gdHJhc2l0aW9uIHRhYmxlIHVzaW5nIHRoZSBrZXkgYDxicmFuZC0+dWlkLCAwLAor
ICAgICAgICBUcmFuc2l0aW9uS2luZDo6U2V0QnJhbmQ+YC4gRHVyaW5nIHRoaXMgdHJhbnNpdGlv
biwgd2UgdGFrZSBwcmV2aW91cworICAgICAgICBzdHJ1Y3R1cmUgYW5kIGFwcGx5IG9uZSBvZiB0
aGUgZm9sbG93aW5nIHJ1bGVzOgorCisgICAgICAgICAgICAxLiBJZiBpdOKAmXMgYSBCcmFuZGVk
U3RydWN0dXJlLCB3ZSB0aGVuIHNldCBpdCB0byBgbV9wYXJlbnRCcmFuZGAsCisgICAgICAgICAg
ICB0byBhbGxvdyBwcm9wZXIgYnJhbmQgY2hhaW4gY2hlY2suCisgICAgICAgIAorICAgICAgICAg
ICAgMi4gSWYgaXTigJlzIG5vdCBhIEJyYW5kZWRTdHJ1Y3R1cmUsIHdlIHNldCBgbV9wYXJlbnRC
cmFuZGAgdG8gbnVsbHB0ciwKKyAgICAgICAgICAgIG1lYW5pbmcgdGhhdCB0aGlzIGlzIHRoZSBm
aXJzdCBicmFuZCBiZWluZyBhZGRlZCB0byB0aGUgb2JqZWN0CisgICAgICAgICAgICB3aXRoIHRo
aXMgc3RydWN0dXJlLgorICAgICAgICAKKyAgICAgICAgRm9yIG5vdywgd2UgYXJlIHVzaW5nIHRo
ZSBmbGFnIGBpc0JyYW5kZWRTdHJ1Y3R1cmVgIHRvIGlkZW50aWZ5IHRoYXQgYQorICAgICAgICBn
aXZlbiBTdHJ1Y3R1cmUgaXMgYSBCcmFuZGVkU3RydWN0dXJlLiBUaGlzIGlzIGRvbmUgdG8gYXZv
aWQgY2hhbmdlcworICAgICAgICBvbiBwbGFjZXMgd2hlcmUgd2UgYXJlIGNoZWNraW5nIGZvciBg
dm0uc3RydWN0dXJlU3RydWN0dXJlKClgLgorICAgICAgICBIb3dldmVyLCBpZiB3ZSBldmVyIG5l
ZWQgc3BhY2Ugb24gU3RydWN0dXJlLCB0aGlzIGZsYWcgaXMgYSBnb29kCisgICAgICAgIGNhbmRp
ZGF0ZSB0byBiZSBkZWxldGVkIGFuZCB3ZSBjYW4gbW92ZSB0byBhIHNvbHV0aW9uIHRoYXQgdXNl
cworICAgICAgICBgdm0uYnJhbmRlZFN0cnVjdHVyZVN0cnVjdHVyZSgpYDsKKworICAgICAgICAg
IyBKSVQgU3VwcG9ydAorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBpbmNsdWRlcyBpbml0aWFs
IEpJVCBzdXBwb3J0IGZvciBgc2V0X3ByaXZhdGVfYnJhbmRgCisgICAgICAgIGFuZCBgY2hlY2tf
cHJpdmF0ZV9icmFuZGAuIE9uIEJhc2VsaW5lIEpJVCwgd2UgYXJlIHVzaW5nCisgICAgICAgIGBK
SVRQcmF2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3JgIHRvIHN1cHBvcnQgSUMgZm9yIGJvdGggb3Bl
cmFuZHMuCisgICAgICAgIE9uIERGR0J5dGVDb2RlUGFyc2VyIHdlIGFyZSB0cnlpbmcgdG8gaW5s
aW5lIGJyYW5kIGFjY2VzcyB3aGVuZXZlcgorICAgICAgICBwb3NzaWJsZSwgYW5kIGZhbGxiYWNr
aW5nIHRvIGBTZXRQcml2YXRlQnJhbmRgIGFuZAorICAgICAgICBgQ2hlY2tQcml2YXRlQnJhbmRg
IG90aGVyd2lzZS4gVGhvc2Ugbm9kZXMgYXJlIG5vdCBiZWluZyBvcHRpbWl6ZWQgYXQKKyAgICAg
ICAgdGhlaXIgZnVsbCBwb3RlbnRpYWwsIGJ1dCB0aGUgY29kZSBnZW5lcmF0ZWQgYnkgdGhlbSBp
cyBhbHNvIHJlbHlpbmcgb24gCisgICAgICAgIGBKSVRQcmF2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0
b3JgIHRvIGhhdmUgSUMgc3VwcG9ydCBmb3IgYm90aCBERkcgYW5kCisgICAgICAgIEZUTC4gRHVy
aW5nIERGRyBwYXJzaW5nIHdlIHRyeSByZWR1Y2UgdGhvc2UgYWNjZXNzICB0byBgQ2hlY2tJZGVu
dGlmZWlyYAorICAgICAgICBhbmQgYENoZWNrU3RydWN0dXJlYCAod2l0aCBgUHV0U3RydWN0dXJl
YCBmb3IgYHNldF9wcml2YXRlX2JyYW5kYCBjYXNlcykKKyAgICAgICAgYmFzZWQgb24gYXZhaWxh
YmxlIHByb2ZpbGVkIGRhdGEuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNv
dXJjZXMudHh0OgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6Cisg
ICAgICAgIChKU0M6OkJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9y
KToKKyAgICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKToK
KyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaDoKKworICAgICAgICBXZSBh
cmUgYWRkaW5nIGEgbmV3IHBhcmFtZXRlciBgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnRgIHRvIHBy
b3BhZ2F0ZQorICAgICAgICB3aGVuIGEgZGVmYXVsdCBjb25zdHJ1Y3RvciBuZWVkcyB0byBlbWl0
IGNvZGUgdG8gc2V0dXAgcHJpdmF0ZSBicmFuZAorICAgICAgICBvbiBpbnN0YW5jZXMuCisKKyAg
ICAgICAgKiBidWlsdGlucy9CdWlsdGluTmFtZXMuaDoKKworICAgICAgICBBZGRpbmcgYEBwcml2
YXRlQnJhbmRgIHRoYXQgIHdlIHVzZSB0byBzdG9yZSBwcml2YXRlIGJyYW5kIG9uCisgICAgICAg
IGNsYXNzJ3Mgc2NvcGUuCisKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y3JlYXRlQ2hlY2tQcml2YXRlQnJhbmQpOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGVTZXRQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlND
OjpBY2Nlc3NDYXNlOjpyZXF1aXJlc0lkZW50aWZpZXJOYW1lTWF0Y2ggY29uc3QpOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpyZXF1aXJlc0ludDMyUHJvcGVydHlDaGVjayBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6Om5lZWRzU2NyYXRjaEZQUiBjb25zdCk6CisgICAgICAg
IChKU0M6OkFjY2Vzc0Nhc2U6OmZvckVhY2hEZXBlbmRlbnRDZWxsIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6QWNjZXNzQ2FzZTo6ZG9lc0NhbGxzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNz
Q2FzZTo6Y2FuUmVwbGFjZSBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmR1bXAg
Y29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCk6Cisg
ICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbCk6CisgICAgICAgICogYnl0ZWNv
ZGUvQWNjZXNzQ2FzZS5oOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpzdHJ1Y3R1cmUgY29u
c3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpuZXdTdHJ1Y3R1cmUgY29uc3QpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRl
eEltcGwpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToK
KyAgICAgICAgKiBieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5jcHA6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6YXBwZW5kVmFyaWFudCk6Cisg
ICAgICAgIChKU0M6OkNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOjpjb21wdXRlRm9yQmFzZWxpbmUp
OgorICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6Q2hlY2tQcml2YXRlQnJh
bmRTdGF0dXMpOgorICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6Y29tcHV0
ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2spOgorICAgICAgICAoSlNDOjpDaGVj
a1ByaXZhdGVCcmFuZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgIChKU0M6OkNoZWNrUHJp
dmF0ZUJyYW5kU3RhdHVzOjpzbG93VmVyc2lvbiBjb25zdCk6CisgICAgICAgIChKU0M6OkNoZWNr
UHJpdmF0ZUJyYW5kU3RhdHVzOjptZXJnZSk6CisgICAgICAgIChKU0M6OkNoZWNrUHJpdmF0ZUJy
YW5kU3RhdHVzOjpmaWx0ZXIpOgorICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVCcmFuZFN0YXR1
czo6c2luZ2xlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChKU0M6OkNoZWNrUHJpdmF0ZUJy
YW5kU3RhdHVzOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChKU0M6OkNoZWNrUHJpdmF0ZUJy
YW5kU3RhdHVzOjptYXJrSWZDaGVhcCk6CisgICAgICAgIChKU0M6OkNoZWNrUHJpdmF0ZUJyYW5k
U3RhdHVzOjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVz
OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFN0YXR1
cy5oOiBBZGRlZC4KKyAgICAgICAgKiBieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q2hlY2tQcml2YXRlQnJhbmRWYXJpYW50OjpDaGVj
a1ByaXZhdGVCcmFuZFZhcmlhbnQpOgorICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVCcmFuZFZh
cmlhbnQ6On5DaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQpOgorICAgICAgICAoSlNDOjpDaGVja1By
aXZhdGVCcmFuZFZhcmlhbnQ6OmF0dGVtcHRUb01lcmdlKToKKyAgICAgICAgKEpTQzo6Q2hlY2tQ
cml2YXRlQnJhbmRWYXJpYW50OjptYXJrSWZDaGVhcCk6CisgICAgICAgIChKU0M6OkNoZWNrUHJp
dmF0ZUJyYW5kVmFyaWFudDo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVC
cmFuZFZhcmlhbnQ6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKEpTQzo6Q2hlY2tQcml2YXRl
QnJhbmRWYXJpYW50OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2hlY2tQcml2YXRlQnJh
bmRWYXJpYW50OjpkdW1wSW5Db250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9DaGVj
a1ByaXZhdGVCcmFuZFZhcmlhbnQuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkNoZWNrUHJpdmF0
ZUJyYW5kVmFyaWFudDo6c3RydWN0dXJlU2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2hlY2tQ
cml2YXRlQnJhbmRWYXJpYW50OjpzdHJ1Y3R1cmVTZXQpOgorICAgICAgICAoSlNDOjpDaGVja1By
aXZhdGVCcmFuZFZhcmlhbnQ6OmlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpDaGVj
a1ByaXZhdGVCcmFuZFZhcmlhbnQ6Om92ZXJsYXBzKToKKyAgICAgICAgKiBieXRlY29kZS9Db2Rl
QmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKToKKyAgICAg
ICAgKiBieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxl
SW5mbzo6RXhlY3V0YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6cHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3Jw
aGljQWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJh
dGUpOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBieXRlY29kZS9S
ZWNvcmRlZFN0YXR1c2VzLmNwcDoKKyAgICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNlczo6b3Bl
cmF0b3I9KToKKyAgICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNlczo6YWRkQ2hlY2tQcml2YXRl
QnJhbmRTdGF0dXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1c2VzOjphZGRTZXRQcml2
YXRlQnJhbmRTdGF0dXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1c2VzOjp2aXNpdEFn
Z3JlZ2F0ZSk6CisgICAgICAgIChKU0M6OlJlY29yZGVkU3RhdHVzZXM6Om1hcmtJZkNoZWFwKToK
KyAgICAgICAgKiBieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmg6CisgICAgICAgIChKU0M6OlJl
Y29yZGVkU3RhdHVzZXM6OmZvckVhY2hWZWN0b3IpOgorICAgICAgICAqIGJ5dGVjb2RlL1NldFBy
aXZhdGVCcmFuZFN0YXR1cy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpTZXRQcml2YXRlQnJh
bmRTdGF0dXM6OmFwcGVuZFZhcmlhbnQpOgorICAgICAgICAoSlNDOjpTZXRQcml2YXRlQnJhbmRT
dGF0dXM6OmNvbXB1dGVGb3JCYXNlbGluZSk6CisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFu
ZFN0YXR1czo6U2V0UHJpdmF0ZUJyYW5kU3RhdHVzKToKKyAgICAgICAgKEpTQzo6U2V0UHJpdmF0
ZUJyYW5kU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjayk6
CisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAg
ICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFN0YXR1czo6c2xvd1ZlcnNpb24gY29uc3QpOgorICAg
ICAgICAoSlNDOjpTZXRQcml2YXRlQnJhbmRTdGF0dXM6Om1lcmdlKToKKyAgICAgICAgKEpTQzo6
U2V0UHJpdmF0ZUJyYW5kU3RhdHVzOjpmaWx0ZXIpOgorICAgICAgICAoSlNDOjpTZXRQcml2YXRl
QnJhbmRTdGF0dXM6OnNpbmdsZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpTZXRQ
cml2YXRlQnJhbmRTdGF0dXM6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKEpTQzo6U2V0UHJp
dmF0ZUJyYW5kU3RhdHVzOjptYXJrSWZDaGVhcCk6CisgICAgICAgIChKU0M6OlNldFByaXZhdGVC
cmFuZFN0YXR1czo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpTZXRQcml2YXRlQnJhbmRTdGF0
dXM6OmR1bXAgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1NldFByaXZhdGVCcmFuZFN0YXR1
cy5oOiBBZGRlZC4KKyAgICAgICAgKiBieXRlY29kZS9TZXRQcml2YXRlQnJhbmRWYXJpYW50LmNw
cDogQWRkZWQuCisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFZhcmlhbnQ6OlNldFByaXZh
dGVCcmFuZFZhcmlhbnQpOgorICAgICAgICAoSlNDOjpTZXRQcml2YXRlQnJhbmRWYXJpYW50Ojp+
U2V0UHJpdmF0ZUJyYW5kVmFyaWFudCk6CisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFZh
cmlhbnQ6OmF0dGVtcHRUb01lcmdlKToKKyAgICAgICAgKEpTQzo6U2V0UHJpdmF0ZUJyYW5kVmFy
aWFudDo6bWFya0lmQ2hlYXApOgorICAgICAgICAoSlNDOjpTZXRQcml2YXRlQnJhbmRWYXJpYW50
OjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFZhcmlhbnQ6OnZpc2l0
QWdncmVnYXRlKToKKyAgICAgICAgKEpTQzo6U2V0UHJpdmF0ZUJyYW5kVmFyaWFudDo6ZHVtcCBj
b25zdCk6CisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFZhcmlhbnQ6OmR1bXBJbkNvbnRl
eHQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1NldFByaXZhdGVCcmFuZFZhcmlhbnQuaDog
QWRkZWQuCisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFZhcmlhbnQ6Om9sZFN0cnVjdHVy
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFZhcmlhbnQ6Om5ld1N0cnVj
dHVyZSBjb25zdCk6CisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFZhcmlhbnQ6OmlkZW50
aWZpZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpTZXRQcml2YXRlQnJhbmRWYXJpYW50OjpvdmVy
bGFwcyk6CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6cmVzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0
cnVjdHVyZVN0dWJJbmZvLmg6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
Y3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2sp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OlVubGlua2VkQ29kZUJsb2NrOjpwcml2YXRlQnJhbmRSZXF1aXJlbWVudCBjb25zdCk6CisgICAg
ICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpT
Qzo6VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6OnByaXZhdGVCcmFuZFJlcXVpcmVtZW50IGNv
bnN0KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHA6
CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayk6CisgICAg
ICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUu
aDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorCisgICAgICAg
IFdlIGNoYW5nZWQgQnl0ZWNvZGVHZW5lcmF0b3IgZm9yIEZ1bmN0aW9uTm9kZSBhbmQgRXZhbE5v
ZGUgdG8KKyAgICAgICAgcHJvcGFnYXRlIHBhcmVudFNjb3BlIFZhcmlhYmxlRW52aXJvbm1lbnQu
IFRoZXNlIGVudmlyb25tZW50cyBzdG9yZXMKKyAgICAgICAgcHJpdmF0ZSBuYW1lIGVudHJpZXMg
dGhhdCBhcmUgdmlzaWJsZSBpbnRvIHRoZSBzY29wZSBvZiB0aGUKKyAgICAgICAgZnVuY3Rpb24v
ZXZhbC4KKyAgICAgICAgVGhpcyBpcyByZXF1aXJlZCB0byBpZGVudGlmeSB0aGUga2luZCBvZiBh
Y2Nlc3MgYSBwcml2YXRlIG5hbWUgaXMKKyAgICAgICAgcmVmZXJyaW5nIHRvLCBzaW5jZSBpdCBj
YW4gYmUgYSBwcml2YXRlIGZpZWxkIG9yIGEgcHJpdmF0ZSBtZXRob2QuCisKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Omluc3RhbnRpYXRlTGV4aWNhbFZhcmlhYmxlcyk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0UHJpdmF0ZU5hbWUpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZVByaXZhdGVCcmFuZCk6CisKKyAg
ICAgICAgVGhlIHByb2Nlc3MgdG8gY3JlYXRlIGEgcHJpdmF0ZSBicmFuZCBpcyBhcyBmb2xsb3dz
OgorICAgICAgICAgICAgMS4gQ3JlYXRlIGEgUHJpdmF0ZVN5bWJvbCB1c2luZyBgQGNyZWF0ZVBy
aXZhdGVTeW1ib2xgLgorICAgICAgICAgICAgMi4gU3RvcmUgdGhpcyBzeW1ib2wgaW50byBhIGdp
dmVuIHNjb3BlIChpLmUgY2xhc3MgbGV4aWNhbCBzY29wZSkKKyAgICAgICAgICAgICAgIG9uIGBA
cHJpdmF0ZUJyYW5kYCB2YXJpYWJsZS4KKworICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdEluc3RhbGxQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdEdldFByaXZhdGVCcmFuZCk6CisKKyAgICAgICAgV2UgYWRkZWQgYG1fcHJpdmF0
ZU5hbWVzU3RhY2tgIHRvIEJ5dGVjb2RlR2VuZXJhdG9yIHRvIHJlcHJlc2VudCB0aGUKKyAgICAg
ICAgc2NvcGUgY2hhaW4gb2YgYXZhaWxhYmxlIHByaXZhdGUgbmFtZXMgd2hpbGUgZ2VuZXJhdGlu
ZyBieXRlY29kZS4KKworICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENoZWNr
UHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmlzUHJpdmF0
ZU1ldGhvZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoUHJpdmF0ZUFj
Y2Vzc05hbWVzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnBvcFByaXZhdGVB
Y2Nlc3NOYW1lcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZXRBdmFpbGFi
bGVQcml2YXRlQWNjZXNzTmFtZXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0TmV3Q2xhc3NGaWVsZEluaXRpYWxpemVyRnVuY3Rpb24pOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdEdldEJ5VmFsKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OnByaXZhdGVCcmFuZFJlcXVpcmVtZW50IGNvbnN0KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6Om1ha2VGdW5jdGlvbik6CisKKyAgICAgICAgVGhpcyBjaGFuZ2UgaXMgcmVx
dWlyZWQgdG8gcHJvcGVybHkgcHJvcGFnYXRlIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50CisgICAg
ICAgIHRvIGFycm93IGZ1bmN0aW9ucyB0aGF0IGNhbiBwb3RlbnRpYWxseSBjYWxsIGBzdXBlcigp
YC4KKworICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAo
SlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjplbWl0RGVjbGFyZVByaXZhdGVGaWVsZE5hbWVzKToKKyAg
ICAgICAgKEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpT
Qzo6UHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkpOgorICAgICAgICAo
SlNDOjpCYXNlRG90Tm9kZTo6ZW1pdEdldFByb3BlcnR5VmFsdWUpOgorCisgICAgICAgIEFkZGlu
ZyBzdXBwb3J0IHRvIHByb3Blcmx5IGFjY2VzcyBwcml2YXRlIG1ldGhvZC4gU2luY2Ugd2Ugc3Rv
cmUKKyAgICAgICAgcHJpdmF0ZSBtZXRob2RzIG9uIGNsYXNzIGxleGljYWwgc2NvcGUsIHdlIG5l
ZWQgYSBkaWZmZXJlbnQgc2V0IG9mCisgICAgICAgIGluc3RydWN0aW9ucyB0byBhY2Nlc3MgYSBw
cml2YXRlIG1ldGhvZC4KKworICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6ZW1pdFB1dFByb3Bl
cnR5KToKKworICAgICAgICBJbiB0aGUgY2FzZSBvZiB3ZSB0cnlpbmcgdG8gd3JpdGUgaW4gYSBw
cml2YXRlIG1ldGhvZCwgd2UgbmVlZCB0bworICAgICAgICB0aHJvdyBhIFR5cGVFcnJvciBhY2Nv
cmRpbmcgdG8gc3BlY2lmaWNhdGlvbgorICAgICAgICAoaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2Fs
LXByaXZhdGUtbWV0aG9kcy8jc2VjLXByaXZhdGVmaWVsZHNldCkuCisKKyAgICAgICAgKEpTQzo6
RnVuY3Rpb25DYWxsVmFsdWVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpQb3N0
Zml4Tm9kZTo6ZW1pdERvdCk6CisgICAgICAgIChKU0M6OlByZWZpeE5vZGU6OmVtaXREb3QpOgor
ICAgICAgICAoSlNDOjpDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRl
YnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXJDYWxs
RnJhbWU6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKiBkZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAo
SlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpmaWx0ZXJJ
Q1N0YXR1cyk6CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3Bw
OgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmls
aXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAg
ICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToK
KyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OmNsb2JiZXJzRXhpdFN0YXRlKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAq
IGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmspOgorICAgICAgICAqIGRmZy9ERkdKSVRD
b21waWxlci5oOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjphZGRQcml2YXRlQnJh
bmRBY2Nlc3MpOgorICAgICAgICAqIGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAgICAgKiBkZmcv
REZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0NoZWNrUHJpdmF0ZUJyYW5k
U3RhdHVzKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjaGVja1ByaXZhdGVCcmFuZFN0YXR1
cyk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzU2V0UHJpdmF0ZUJyYW5kU3RhdHVzKToK
KyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzZXRQcml2YXRlQnJhbmRTdGF0dXMpOgorICAgICAg
ICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPYmplY3RBbGxvY2F0aW9u
U2lua2luZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChK
U0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrUHJp
dmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNl
dFByaXZhdGVCcmFuZCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgor
ICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAg
ICogZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwOgorICAgICAgICAqIGZ0bC9GVExD
YXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAg
ICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVQcml2YXRlQnJhbmRBY2Nlc3MpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlU2V0UHJpdmF0ZUJyYW5kKToKKyAgICAg
ICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmV2YWwpOgor
ICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxl
TWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKToK
KyAgICAgICAgKEpTQzo6SklUOjpsaW5rKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAg
ICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUUHJp
dmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OmdlbmVyYXRl
RmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6
OmZpbmFsaXplKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaDoKKyAg
ICAgICAgKEpTQzo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpKSVRQcml2YXRlQnJh
bmRBY2Nlc3NHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NH
ZW5lcmF0b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlv
bnMuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAg
ICAoSlNDOjpnZXRQcml2YXRlTmFtZSk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoK
KyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX3NldF9wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NoZWNr
X3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3By
aXZhdGVfYnJhbmQpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5kKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9zZXRfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9jaGVja19wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0U2xvd19vcF9jaGVja19wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5j
cHA6CisgICAgICAgIChKU0M6OnRyeUNhY2hlQ2hlY2tQcml2YXRlQnJhbmQpOgorICAgICAgICAo
SlNDOjpyZXBhdGNoQ2hlY2tQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZVNl
dFByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OnJlcGF0Y2hTZXRQcml2YXRlQnJhbmQpOgor
ICAgICAgICAoSlNDOjpyZXNldENoZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6cmVz
ZXRTZXRQcml2YXRlQnJhbmQpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmg6CisgICAgICAgICog
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xP
V19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAg
ICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5jcHA6Cisg
ICAgICAgIChKU0M6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpGdW5jdGlvbk1ldGFkYXRhTm9kZSk6
CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjpp
c1ByaXZhdGVNZW1iZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6aXNQcml2
YXRlRmllbGQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgor
ICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6CisgICAgICAgIChK
U0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlc3Npb24pOgorICAgICAgICAq
IHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OmRlY2xhcmVQcml2YXRlTWV0
aG9kKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OmRlY2xhcmVQcml2YXRlRmllbGQpOgorICAgICAg
ICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UpOgorICAgICAgICAoSlNDOjpwYXJzZSk6
CisgICAgICAgIChKU0M6OlNjb3BlOjpkZWNsYXJlUHJpdmF0ZU5hbWUpOiBEZWxldGVkLgorICAg
ICAgICAqIHBhcnNlci9QYXJzZXJNb2Rlcy5oOgorICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVj
a2VyLmg6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZURvdEFjY2Vzcyk6Cisg
ICAgICAgICogcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwOgorICAgICAgICAoSlNDOjpW
YXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZU1ldGhvZCk6CisgICAgICAgICogcGFy
c2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9u
bWVudEVudHJ5Ojppc1ByaXZhdGVGaWVsZCBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxl
RW52aXJvbm1lbnRFbnRyeTo6aXNQcml2YXRlTWV0aG9kIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5OjpzZXRJc1ByaXZhdGVGaWVsZCk6CisgICAgICAgIChK
U0M6OlZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeTo6c2V0SXNQcml2YXRlTWV0aG9kKToKKyAgICAg
ICAgKEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6aXNNZXRob2QgY29uc3QpOgorICAgICAgICAoSlND
OjpQcml2YXRlTmFtZUVudHJ5Ojppc1ByaXZhdGVNZXRob2RPckFjZXNzb3IgY29uc3QpOgorICAg
ICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjphZGRQcml2YXRlTmFtZSk6CisgICAgICAg
IChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlRmllbGQpOgorICAgICAg
ICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZU1ldGhvZCk6CisgICAg
ICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OnByaXZhdGVOYW1lRW52aXJvbm1lbnQgY29u
c3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpoYXNQcml2YXRlTWV0aG9k
T3JBY2Nlc3NvciBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmFk
ZFByaXZhdGVOYW1lc0Zyb20pOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50
cnk6OmlzUHJpdmF0ZU5hbWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpWYXJpYWJs
ZUVudmlyb25tZW50RW50cnk6OnNldElzUHJpdmF0ZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZU5hbWUpOiBEZWxldGVkLgor
ICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAgICAoSlNDOjpDYWNoZWRD
b2RlQmxvY2tSYXJlRGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ29kZUJsb2Nr
UmFyZURhdGE6OmRlY29kZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZEZ1bmN0aW9uRXhl
Y3V0YWJsZVJhcmVEYXRhOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRGdW5jdGlvbkV4
ZWN1dGFibGVSYXJlRGF0YTo6ZGVjb2RlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkRnVu
Y3Rpb25FeGVjdXRhYmxlOjpwcml2YXRlQnJhbmRSZXF1aXJlbWVudCBjb25zdCk6CisgICAgICAg
IChKU0M6OkNhY2hlZENvZGVCbG9jazo6ZGVyaXZlZENvbnRleHRUeXBlIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6Q2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlOjplbmNvZGUpOgorICAgICAgICAoSlND
OjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUp
OgorICAgICAgICAoSlNDOjpDYWNoZWRDb2RlQmxvY2s6Om5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6Cisg
ICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsKToKKyAgICAgICAgKEpT
Qzo6Z2VuZXJhdGVVbmxpbmtlZENvZGVCbG9jayk6CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5s
aW5rZWRDb2RlQmxvY2tGb3JEaXJlY3RFdmFsKToKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpn
ZXRVbmxpbmtlZEdsb2JhbEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgICogcnVudGltZS9D
b2RlQ2FjaGUuaDoKKyAgICAgICAgKiBydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6RGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OkRpcmVjdEV2YWxFeGVjdXRhYmxlOjpEaXJlY3RFdmFsRXhlY3V0YWJsZSk6CisgICAgICAg
ICogcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRXZh
bEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6RXZhbEV4ZWN1
dGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpT
Qzo6RXZhbEV4ZWN1dGFibGU6OmV4ZWN1dGFibGVJbmZvIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
RXZhbEV4ZWN1dGFibGU6OnByaXZhdGVCcmFuZFJlcXVpcmVtZW50IGNvbnN0KToKKyAgICAgICAg
KiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVJbnZh
bGlkUHJpdmF0ZU5hbWVFcnJvcik6CisgICAgICAgICogcnVudGltZS9JbmRpcmVjdEV2YWxFeGVj
dXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6SW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6SW5kaXJl
Y3RFdmFsRXhlY3V0YWJsZSk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpj
aGVja1ByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRQcml2YXRlQnJh
bmQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5jcHA6CisgICAgICAgIChKU0M6OkpTU2Nv
cGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFopOgorICAgICAgICAqIHJ1bnRpbWUv
SlNTY29wZS5oOgorICAgICAgICAqIHJ1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaDoK
KyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpPcHRpb25zOjpy
ZWNvbXB1dGVEZXBlbmRlbnRPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnNMaXN0
Lmg6CisgICAgICAgICogcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1
bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjptYXRlcmlhbGl6
ZVByb3BlcnR5VGFibGUpOgorICAgICAgICAoSlNDOjpCcmFuZGVkU3RydWN0dXJlOjpCcmFuZGVk
U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6QnJhbmRlZFN0cnVjdHVyZTo6Y3JlYXRlKToKKyAg
ICAgICAgKEpTQzo6QnJhbmRlZFN0cnVjdHVyZTo6Y2hlY2tCcmFuZCk6CisgICAgICAgIChKU0M6
OlN0cnVjdHVyZTo6c2V0QnJhbmRUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlSW1wbCk6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6c2V0QnJhbmRUcmFuc2l0aW9uRnJvbUV4aXN0aW5n
U3RydWN0dXJlQ29uY3VycmVudGx5KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpzZXRCcmFu
ZFRyYW5zaXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0
dXJlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSk6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6Zm9yRWFjaFByb3BlcnR5Q29uY3VycmVudGx5KToKKyAgICAgICAg
KiBydW50aW1lL1N0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
U3ltYm9sVGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZTo6Y2xvbmVTY29wZVBh
cnQpOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuaDoKKyAgICAgICAgKiBydW50aW1l
L1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6
CisKIDIwMjEtMDItMDEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbSlNDXSBBZGQgQCBpbiBFcnJvci5zdGFjayBpZiBVUkwgZXhpc3RzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYTY0YTM2NTQyYWVmOTVhMTA5ODNhZjhkOTk0YWVl
YmUzZmRiZGFlMS4uNmNkZDJjMTYyM2FjNmNhZGFlM2FlMjRiMDZjMTY0MGU5ZTcyZmU4OSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTM4LDYgKzUzOCw4IEBAIHNldChK
YXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgYnl0ZWNvZGUvQ2Fs
bExpbmtJbmZvLmgKICAgICBieXRlY29kZS9DYWxsTW9kZS5oCiAgICAgYnl0ZWNvZGUvQ2FsbFZh
cmlhbnQuaAorICAgIGJ5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmgKKyAgICBieXRl
Y29kZS9DaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQuaAogICAgIGJ5dGVjb2RlL0NvZGVCbG9jay5o
CiAgICAgYnl0ZWNvZGUvQ29kZUJsb2NrSGFzaC5oCiAgICAgYnl0ZWNvZGUvQ29kZU9yaWdpbi5o
CkBAIC01NzMsNiArNTc1LDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JL
X0hFQURFUlMKICAgICBieXRlY29kZS9PcGVyYW5kcy5oCiAgICAgYnl0ZWNvZGUvUHJvcGVydHlD
b25kaXRpb24uaAogICAgIGJ5dGVjb2RlL1B1dEJ5SWRGbGFncy5oCisgICAgYnl0ZWNvZGUvU2V0
UHJpdmF0ZUJyYW5kU3RhdHVzLmgKKyAgICBieXRlY29kZS9TZXRQcml2YXRlQnJhbmRWYXJpYW50
LmgKICAgICBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCiAgICAgYnl0ZWNvZGUvU3RydWN0dXJl
U2V0LmgKICAgICBieXRlY29kZS9TdXBlclNhbXBsZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA4M2RlNzliODQxZjliMWZhMzk1MzcyNWQyNWUyMTE5NWIwZDAwNDU4Li40ZDZl
ODE5NGM5NjY5Yzg2NDgzMDk3YTFjY2VkZTIyYjhmMGYyZGYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTI0Myw5ICsxMjQzLDEzIEBACiAJCTg2MTU4QUIzMTU1QzhCNDAwMEI0
NUM5QyAvKiBQcm9wZXJ0eU5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2MTU4QUIyMTU1QzhCM0YwMEI0NUM5QyAvKiBQcm9wZXJ0eU5hbWUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjE4MTY3
NzFGQjc5MjQyMDBFQ0M0RUMgLyogQmlnSW50T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjE4MTY3NjFGQjc5MjJGMDBFQ0M0RUMgLyogQmln
SW50T2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJODYyNTUzRDIxNjEzNkUxQTAwOUYxN0QwIC8qIEpTUHJveHkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MjU1M0NGMTYxMzZBQTUwMDlGMTdE
MCAvKiBKU1Byb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJODYyODFFRjAyNUI2MTYwMDAwMzY3MDA0IC8qIENoZWNrUHJpdmF0ZUJyYW5kVmFy
aWFudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYy
ODFFRUYyNUI2MTYwMDAwMzY3MDA0IC8qIENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudC5oICovOyB9
OworCQk4NjI4MUVGNDI1QjYxQUYwMDAzNjcwMDQgLyogQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MjgxRUYz
MjVCNjFBRjAwMDM2NzAwNCAvKiBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5oICovOyB9OwogCQk4
NjNCMjNFMDBGQzYxMTg5MDA3MDNBQTQgLyogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjNCMjNERjBGQzYwRTYy
MDA3MDNBQTQgLyogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODYzRkJDNUEyNUIwOTNCOTAwRjZDOTMwIC8q
IFdhc21WYWx1ZUxvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NjNGQkM1ODI1QjA5M0I5MDBGNkM5MzAgLyogV2FzbVZhbHVlTG9jYXRpb24u
aCAqLzsgfTsKIAkJODY1QTMwRjExMzUwMDdFMTAwQ0RCNDlFIC8qIEpTQ0pTVmFsdWVJbmxpbmVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjVBMzBG
MDEzNTAwN0UxMDBDREI0OUUgLyogSlNDSlNWYWx1ZUlubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NjVEQTBDNTI1Qjg5NTc0MDA4NzU3
NzIgLyogU2V0UHJpdmF0ZUJyYW5kVmFyaWFudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODY1REEwQzQyNUI4OTU3NDAwODc1NzcyIC8qIFNldFByaXZh
dGVCcmFuZFZhcmlhbnQuaCAqLzsgfTsKKwkJODY1REEwQzgyNUI4OTYwQzAwODc1NzcyIC8qIFNl
dFByaXZhdGVCcmFuZFN0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODY1REEwQzcyNUI4OTYwQzAwODc1NzcyIC8qIFNldFByaXZhdGVCcmFuZFN0
YXR1cy5oICovOyB9OwogCQk4NjY3MzlEMjEzQkZERTcxMDAyM0Q4N0MgLyogQmlnSW50ZWdlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY2NzM5RDAx
M0JGREU3MTAwMjNEODdDIC8qIEJpZ0ludGVnZXIuaCAqLzsgfTsKIAkJODY2NzM5RDMxM0JGREU3
MTAwMjNEODdDIC8qIFVpbnQxNldpdGhGcmFjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY2NzM5RDExM0JGREU3MTAwMjNEODdDIC8qIFVpbnQx
NldpdGhGcmFjdGlvbi5oICovOyB9OwogCQk4NjcwNEI0MzEyREI4QTgxMDBBOUZFN0IgLyogWWFy
clN5bnRheENoZWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg2NzA0QjQxMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5oICov
OyB9OwpAQCAtNDE0MCw2ICs0MTQ0LDEwIEBACiAJCTg2MTgxNjc4MUZCNzkzMTMwMEVDQzRFQyAv
KiBCaWdJbnRPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmlnSW50T2JqZWN0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYyNTUzQ0UxNjEzNkFBNTAwOUYxN0QwIC8q
IEpTUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQcm94
eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2MjU1M0NGMTYxMzZBQTUwMDlG
MTdEMCAvKiBKU1Byb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJv
eHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODYyODFFRUYyNUI2MTYwMDAwMzY3
MDA0IC8qIENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDaGVja1By
aXZhdGVCcmFuZFZhcmlhbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODYyODFF
RjEyNUI2MTY1RTAwMzY3MDA0IC8qIENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4NjI4MUVGMzI1QjYxQUYwMDAzNjcwMDQgLyogQ2hlY2tQcml2YXRl
QnJhbmRTdGF0dXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODYyODFFRjUyNUI2MUIwNjAwMzY3MDA0IC8q
IENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENoZWNrUHJp
dmF0ZUJyYW5kU3RhdHVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYzQjIz
REYwRkM2MEU2MjAwNzAzQUE0IC8qIE1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYzQzZEOTgxNTIxMTExMjAwNTg1RTRFIC8qIFlhcnJDYW5v
bmljYWxpemVVQ1MyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFlh
cnJDYW5vbmljYWxpemVVQ1MyLmNwcDsgcGF0aCA9IHlhcnIvWWFyckNhbm9uaWNhbGl6ZVVDUzIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjNDNkQ5OTE1MjExMTEyMDA1ODVF
NEUgLyogWWFyckNhbm9uaWNhbGl6ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBZYXJyQ2Fub25pY2FsaXplLmg7IHBhdGggPSB5YXJyL1lhcnJDYW5vbmljYWxpemUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQxNTAsNiArNDE1OCwxMCBAQAogCQk4NjQwOTIz
QjE1NkVFRDNCMDA1NjZDQzIgLyogQVJNNjRSZWdpc3RlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQVJNNjRSZWdpc3RlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODY0MDkyM0MxNTZFRUQzQjAwNTY2Q0IyIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJBUk02NC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjVBMzBGMDEzNTAwN0UxMDBDREI0OUUgLyog
SlNDSlNWYWx1ZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlND
SlNWYWx1ZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODY1REEwQzQy
NUI4OTU3NDAwODc1NzcyIC8qIFNldFByaXZhdGVCcmFuZFZhcmlhbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2V0UHJpdmF0ZUJyYW5kVmFyaWFudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk4NjVEQTBDNjI1Qjg5NTlFMDA4NzU3NzIgLyogU2V0UHJpdmF0ZUJyYW5kVmFyaWFudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTZXRQcml2YXRlQnJhbmRWYXJpYW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODY1REEwQzcyNUI4OTYwQzAwODc1NzcyIC8qIFNldFByaXZh
dGVCcmFuZFN0YXR1cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXRQcml2YXRlQnJhbmRTdGF0dXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODY1REEwQzkyNUI4OTYyQTAwODc1NzcyIC8q
IFNldFByaXZhdGVCcmFuZFN0YXR1cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXRQcml2YXRl
QnJhbmRTdGF0dXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjY3MzlEMDEz
QkZERTcxMDAyM0Q4N0MgLyogQmlnSW50ZWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBCaWdJbnRlZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2Njcz
OUQxMTNCRkRFNzEwMDIzRDg3QyAvKiBVaW50MTZXaXRoRnJhY3Rpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVWludDE2V2l0aEZyYWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg2NzA0QjQwMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hl
Y2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBZYXJyU3ludGF4
Q2hlY2tlci5jcHA7IHBhdGggPSB5YXJyL1lhcnJTeW50YXhDaGVja2VyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg0MDksNiArODQyMSwxMCBAQAogCQkJCTYyNzY3MzIyMUI2
ODBDMUUwMEZEOUYyRSAvKiBDYWxsTW9kZS5oICovLAogCQkJCTBGM0I3RTI0MTlBMTFCODAwMEQ5
QkM1NiAvKiBDYWxsVmFyaWFudC5jcHAgKi8sCiAJCQkJMEYzQjdFMjUxOUExMUI4MDAwRDlCQzU2
IC8qIENhbGxWYXJpYW50LmggKi8sCisJCQkJODYyODFFRjUyNUI2MUIwNjAwMzY3MDA0IC8qIENo
ZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmNwcCAqLywKKwkJCQk4NjI4MUVGMzI1QjYxQUYwMDAzNjcw
MDQgLyogQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuaCAqLywKKwkJCQk4NjI4MUVGMTI1QjYxNjVF
MDAzNjcwMDQgLyogQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50LmNwcCAqLywKKwkJCQk4NjI4MUVF
RjI1QjYxNjAwMDAzNjcwMDQgLyogQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50LmggKi8sCiAJCQkJ
OTY5QTA3OTAwRUQxRDNBRTAwRjFGNjgxIC8qIENvZGVCbG9jay5jcHAgKi8sCiAJCQkJOTY5QTA3
OTEwRUQxRDNBRTAwRjFGNjgxIC8qIENvZGVCbG9jay5oICovLAogCQkJCTBGOEY5NDNEMTY2NzYz
MkQwMEQ2MTk3MSAvKiBDb2RlQmxvY2tIYXNoLmNwcCAqLywKQEAgLTg1NDMsNiArODU1OSwxMCBA
QAogCQkJCTBGNDRBN0FBMjBCRjY4NUUwMDIyQjE3MSAvKiBSZWNvcmRlZFN0YXR1c2VzLmggKi8s
CiAJCQkJMEZGNjBBQkYxNjc0MEY4MTAwMDI5Nzc5IC8qIFJlZHVjZVdoaXRlc3BhY2UuY3BwICov
LAogCQkJCTBGRjYwQUMwMTY3NDBGODEwMDAyOTc3OSAvKiBSZWR1Y2VXaGl0ZXNwYWNlLmggKi8s
CisJCQkJODY1REEwQzkyNUI4OTYyQTAwODc1NzcyIC8qIFNldFByaXZhdGVCcmFuZFN0YXR1cy5j
cHAgKi8sCisJCQkJODY1REEwQzcyNUI4OTYwQzAwODc1NzcyIC8qIFNldFByaXZhdGVCcmFuZFN0
YXR1cy5oICovLAorCQkJCTg2NURBMEM2MjVCODk1OUUwMDg3NTc3MiAvKiBTZXRQcml2YXRlQnJh
bmRWYXJpYW50LmNwcCAqLywKKwkJCQk4NjVEQTBDNDI1Qjg5NTc0MDA4NzU3NzIgLyogU2V0UHJp
dmF0ZUJyYW5kVmFyaWFudC5oICovLAogCQkJCTBGRDgyRTg0MTQxRjNGREEwMDE3OUM5NCAvKiBT
cGVjdWxhdGVkVHlwZS5jcHAgKi8sCiAJCQkJMEZEODJFNEYxNDFEQUVBMTAwMTc5Qzk0IC8qIFNw
ZWN1bGF0ZWRUeXBlLmggKi8sCiAJCQkJMEZCNDM4QTIxOTI3MEIxRDAwRTFGQkM5IC8qIFN0cnVj
dHVyZVNldC5jcHAgKi8sCkBAIC05MzMxLDYgKzkzNTEsOCBAQAogCQkJCUZFQzE2MDMyMjMzOUU5
RjkwMEEwNENCOCAvKiBDZWxsU2l6ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxQzNEREExQkJD
RTA5RTAwRTUyM0U0IC8qIENlbGxTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTMzOEUyQTcy
Mzk2RUZGQjAwQzYxQkFEIC8qIENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk4NjI4MUVGNDI1QjYxQUYwMDAzNjcwMDQgLyogQ2hlY2tQcml2YXRlQnJhbmRT
dGF0dXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTg2MjgxRUYwMjVCNjE2MDAwMDM2NzAwNCAvKiBD
aGVja1ByaXZhdGVCcmFuZFZhcmlhbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNkFBQUU1MEUx
RjQyNjUwMEFEODdEOCAvKiBDbGFzc0luZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTA1MDI2
MUFBOTA5NTYwMEQzM0IzMyAvKiBDbG9uZWRBcmd1bWVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMThDNDVFMEUxNkY1Q0QwMEIzNDQ2MCAvKiBDTG9vcFN0YWNrLmggaW4gSGVhZGVycyAqLywK
QEAgLTEwMzgyLDYgKzEwNDA0LDggQEAKIAkJCQlBNTRDRjJGNjE4NEVBQjI0MDAyMzdGMTkgLyog
U2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5REE2MTdEMTI4NTgwMDVGNUZG
OSAvKiBTZXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5MERENkUxODJGNDk5
NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQk4
NjVEQTBDODI1Qjg5NjBDMDA4NzU3NzIgLyogU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk4NjVEQTBDNTI1Qjg5NTc0MDA4NzU3NzIgLyogU2V0UHJpdmF0ZUJyYW5k
VmFyaWFudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyOTlEQTIxN0QxMjg0ODAwNUY1RkY5IC8q
IFNldFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFRTk4NDExQTg4NjVCNzAwNzU0
RTkzIC8qIFNldHVwVmFyYXJnc0ZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlEQzE3RTgxODFD
OUM5MUQ5MDA4QTZBQjMgLyogU2hhZG93Q2hpY2tlbi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU291cmNlcy50eHQKaW5kZXggMTdjMzk3MDVkMjlmNmY4OTUzMzZkN2JmMTc1NjU4ZGM3
NDQxZjg5MS4uNmE5YjMxYzE2OGI0MDYxNzhiYzA4ODZhOWQ2MjAwMWY1YWZhZTNjNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtMjExLDYgKzIxMSw4IEBAIGJ5dGVjb2RlL0NhbGxM
aW5rSW5mby5jcHAKIGJ5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAogYnl0ZWNvZGUvQ2FsbE1v
ZGUuY3BwCiBieXRlY29kZS9DYWxsVmFyaWFudC5jcHAKK2J5dGVjb2RlL0NoZWNrUHJpdmF0ZUJy
YW5kU3RhdHVzLmNwcAorYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50LmNwcAogYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAogYnl0ZWNvZGUvQ29kZUJsb2NrSGFzaC5jcHAKIGJ5dGVjb2Rl
L0NvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAKQEAgLTI3MSw2ICsyNzMsOCBAQCBi
eXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAogYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwCiBi
eXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAogYnl0ZWNvZGUvUmVkdWNlV2hpdGVzcGFjZS5j
cHAKK2J5dGVjb2RlL1NldFByaXZhdGVCcmFuZFN0YXR1cy5jcHAKK2J5dGVjb2RlL1NldFByaXZh
dGVCcmFuZFZhcmlhbnQuY3BwCiBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKIGJ5dGVjb2Rl
L1N0cnVjdHVyZVNldC5jcHAKIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9p
bnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bkV4ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGlu
RXhlY3V0YWJsZXMuY3BwCmluZGV4IDFhMjE0OTJhNjUxZTEwZTBkODczZmE0ZDliZGUxMjkxNmFi
OWFiNDkuLjY2NDE3YzQxMzIxZDI0NzliNTY4ODhmYWFmYWRkYTljY2Q5YzNlYzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMu
Y3BwCkBAIC01OSw3ICs1OSw3IEBAIFNvdXJjZUNvZGUgQnVpbHRpbkV4ZWN1dGFibGVzOjpkZWZh
dWx0Q29uc3RydWN0b3JTb3VyY2VDb2RlKENvbnN0cnVjdG9yS2luZCBjb25zCiAgICAgcmV0dXJu
IFNvdXJjZUNvZGUoKTsKIH0KIAotVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5F
eGVjdXRhYmxlczo6Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yKENvbnN0cnVjdG9yS2luZCBjb25z
dHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKQorVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yKENvbnN0
cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRl
QnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCkKIHsKICAgICBzd2l0Y2gg
KGNvbnN0cnVjdG9yS2luZCkgewogICAgIGNhc2UgQ29uc3RydWN0b3JLaW5kOjpOb25lOgpAQCAt
NjcsNyArNjcsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFi
bGVzOjpjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoQ29uc3RydQogICAgICAgICBicmVhazsKICAg
ICBjYXNlIENvbnN0cnVjdG9yS2luZDo6QmFzZToKICAgICBjYXNlIENvbnN0cnVjdG9yS2luZDo6
RXh0ZW5kczoKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUV4ZWN1dGFibGUobV92bSwgZGVmYXVsdENv
bnN0cnVjdG9yU291cmNlQ29kZShjb25zdHJ1Y3RvcktpbmQpLCBuYW1lLCBjb25zdHJ1Y3Rvcktp
bmQsIENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdCwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIpOworICAgICAgICByZXR1cm4gY3JlYXRlRXhlY3V0YWJsZShtX3ZtLCBkZWZhdWx0Q29u
c3RydWN0b3JTb3VyY2VDb2RlKGNvbnN0cnVjdG9yS2luZCksIG5hbWUsIGNvbnN0cnVjdG9yS2lu
ZCwgQ29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0LCBuZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplciwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTc4LDcgKzc4LDcgQEAgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlQnVpbHRpbkV4ZWN1
dGFibGUoY29uc3QgU28KICAgICByZXR1cm4gY3JlYXRlRXhlY3V0YWJsZShtX3ZtLCBjb2RlLCBu
YW1lLCBjb25zdHJ1Y3RvcktpbmQsIGNvbnN0cnVjdEFiaWxpdHksIE5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyOjpObyk7CiB9CiAKLVVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGlu
RXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rv
cktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgTmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpCitVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKFZNJiB2bSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBDb25zdHJ1
Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxp
dHksIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
LCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCkKIHsKICAg
ICAvLyBGSVhNRTogQ2FuIHdlIGp1c3QgbWFrZSBNZXRhRGF0YSBjb21wdXRhdGlvbiBiZSBjb25z
dGV4cHIgYW5kIGhhdmUgdGhlIGNvbXBpbGVyIGRvIHRoaXMgZm9yIHVzPwogICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTMyNzIKQEAgLTI1MSw3ICsyNTEs
NyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVh
dGVFeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgUwogICAgICAgICB9CiAgICAgfQogCi0gICAgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUodm0sIHNvdXJjZSwgJm1ldGFkYXRhLCBraW5kLCBjb25z
dHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIG51bGxwdHIsIERlcml2
ZWRDb250ZXh0VHlwZTo6Tm9uZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGlzQnVpbHRp
bkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0
ZSh2bSwgc291cmNlLCAmbWV0YWRhdGEsIGtpbmQsIGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2Vy
U2NyaXB0TW9kZTo6Q2xhc3NpYywgbnVsbHB0ciwgV1RGOjpudWxsb3B0LCBEZXJpdmVkQ29udGV4
dFR5cGU6Ok5vbmUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBwcml2YXRlQnJhbmRSZXF1
aXJlbWVudCwgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IpOwogICAgIHJldHVybiBm
dW5jdGlvbkV4ZWN1dGFibGU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaAppbmRleCA0NTE2MzhlODczZjc5NmM4YzRkMjYy
OWM3YjVhYWZiZmFlYjI0Yjk4Li40M2UzODI3NWIxYjlhYTM2MTY3YTJhZTkxZDM1ODc4NjAzODA3
ODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4
ZWN1dGFibGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5F
eGVjdXRhYmxlcy5oCkBAIC01OCw5ICs1OCw5IEBAIFNvdXJjZUNvZGUgbmFtZSMjU291cmNlKCk7
CiAjdW5kZWYgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMKIAogICAgIHN0YXRpYyBTb3VyY2VD
b2RlIGRlZmF1bHRDb25zdHJ1Y3RvclNvdXJjZUNvZGUoQ29uc3RydWN0b3JLaW5kKTsKLSAgICBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yKENvbnN0
cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVEZWZhdWx0Q29u
c3RydWN0b3IoQ29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOwogCi0gICAgc3Rh
dGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVFeGVjdXRhYmxlKFZNJiwgY29u
c3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXImLCBDb25zdHJ1Y3RvcktpbmQsIENvbnN0
cnVjdEFiaWxpdHksIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsKKyAgICBzdGF0aWMgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUV4ZWN1dGFibGUoVk0mLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYsIENvbnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJp
bGl0eSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50
ID0gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmUpOwogCiAgICAgdm9pZCBmaW5hbGl6ZVVu
Y29uZGl0aW9uYWxseSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVp
bHRpbk5hbWVzLmgKaW5kZXggNDRjNmIyMzVlZmVjZDM1MDQ2YzcxZjdhYmU5ZDJiM2Y3NWQzOWY5
MS4uZWIxNjEwNGUxMmRkMTBkODk2MDUyZGZlYTMwOTUzNGYzNTI1ODNjNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaApAQCAtMTcyLDYgKzE3Miw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKHdlYkFzc2VtYmx5Q29tcGlsZVN0cmVhbWlu
Z0ludGVybmFsKSBcCiAgICAgbWFjcm8od2ViQXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVhbWluZ0lu
dGVybmFsKSBcCiAgICAgbWFjcm8oaW5zdGFuY2VGaWVsZEluaXRpYWxpemVyKSBcCisgICAgbWFj
cm8ocHJpdmF0ZUJyYW5kKSBcCiAgICAgbWFjcm8oaGFzT3duUHJvcGVydHlGdW5jdGlvbikgXAog
ICAgIG1hY3JvKGNyZWF0ZVByaXZhdGVTeW1ib2wpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAppbmRleCA2MjVlODU3MmJjODVlOWMzOGJmMWI1YWFj
ZTk4Y2ZlYThkNjU2ZTQ5Li4zZWJhMzE4NzI4YmIzNGZkZDE5ZTAwYzhiM2Y2M2MzZWQxZDg4YTZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCkBA
IC0xMzMsNiArMTMzLDE4IEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNl
OjpjcmVhdGVEZWxldGUoCiAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihu
ZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIERlbGV0ZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBuZXdT
dHJ1Y3R1cmUsIHsgfSwgeyB9KSk7CiB9CiAKK3N0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBB
Y2Nlc3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVCcmFuZChWTSYgdm0sIEpTQ2VsbCogb3duZXIs
IENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7
CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2
bSwgb3duZXIsIENoZWNrUHJpdmF0ZUJyYW5kLCBpZGVudGlmaWVyLCBpbnZhbGlkT2Zmc2V0LCBz
dHJ1Y3R1cmUsIHsgfSwgeyB9KSk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBB
Y2Nlc3NDYXNlOjpjcmVhdGVTZXRQcml2YXRlQnJhbmQoCisgICAgVk0mIHZtLCBKU0NlbGwqIG93
bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cnVjdHVyZSogb2xkU3RydWN0
dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChvbGRT
dHJ1Y3R1cmUgPT0gbmV3U3RydWN0dXJlLT5wcmV2aW91c0lEKCkpOworICAgIHJldHVybiBzdGQ6
OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBTZXRQcml2
YXRlQnJhbmQsIGlkZW50aWZpZXIsIGludmFsaWRPZmZzZXQsIG5ld1N0cnVjdHVyZSwgeyB9LCB7
IH0pKTsKK30KKwogQWNjZXNzQ2FzZTo6fkFjY2Vzc0Nhc2UoKQogewogfQpAQCAtMjg4LDYgKzMw
MCw4IEBAIGJvb2wgQWNjZXNzQ2FzZTo6cmVxdWlyZXNJZGVudGlmaWVyTmFtZU1hdGNoKCkgY29u
c3QKICAgICBjYXNlIERpcmVjdEFyZ3VtZW50c0xlbmd0aDoKICAgICBjYXNlIFNjb3BlZEFyZ3Vt
ZW50c0xlbmd0aDoKICAgICBjYXNlIE1vZHVsZU5hbWVzcGFjZUxvYWQ6CisgICAgY2FzZSBDaGVj
a1ByaXZhdGVCcmFuZDoKKyAgICBjYXNlIFNldFByaXZhdGVCcmFuZDoKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgY2FzZSBJbnN0YW5jZU9mSGl0OgogICAgIGNhc2UgSW5zdGFuY2VPZk1pc3M6
CkBAIC0zNDEsNiArMzU1LDggQEAgYm9vbCBBY2Nlc3NDYXNlOjpyZXF1aXJlc0ludDMyUHJvcGVy
dHlDaGVjaygpIGNvbnN0CiAgICAgY2FzZSBJbnN0YW5jZU9mSGl0OgogICAgIGNhc2UgSW5zdGFu
Y2VPZk1pc3M6CiAgICAgY2FzZSBJbnN0YW5jZU9mR2VuZXJpYzoKKyAgICBjYXNlIENoZWNrUHJp
dmF0ZUJyYW5kOgorICAgIGNhc2UgU2V0UHJpdmF0ZUJyYW5kOgogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgY2FzZSBJbmRleGVkSW50MzJMb2FkOgogICAgIGNhc2UgSW5kZXhlZERvdWJsZUxv
YWQ6CkBAIC0zODMsNiArMzk5LDggQEAgYm9vbCBBY2Nlc3NDYXNlOjpuZWVkc1NjcmF0Y2hGUFIo
KSBjb25zdAogICAgIGNhc2UgSW50cmluc2ljR2V0dGVyOgogICAgIGNhc2UgSW5IaXQ6CiAgICAg
Y2FzZSBJbk1pc3M6CisgICAgY2FzZSBDaGVja1ByaXZhdGVCcmFuZDoKKyAgICBjYXNlIFNldFBy
aXZhdGVCcmFuZDoKICAgICBjYXNlIEFycmF5TGVuZ3RoOgogICAgIGNhc2UgU3RyaW5nTGVuZ3Ro
OgogICAgIGNhc2UgRGlyZWN0QXJndW1lbnRzTGVuZ3RoOgpAQCAtNDcwLDYgKzQ4OCw4IEBAIHZv
aWQgQWNjZXNzQ2FzZTo6Zm9yRWFjaERlcGVuZGVudENlbGwoVk0mIHZtLCBjb25zdCBGdW5jdG9y
JiBmdW5jdG9yKSBjb25zdAogICAgIGNhc2UgR2V0R2V0dGVyOgogICAgIGNhc2UgSW5IaXQ6CiAg
ICAgY2FzZSBJbk1pc3M6CisgICAgY2FzZSBDaGVja1ByaXZhdGVCcmFuZDoKKyAgICBjYXNlIFNl
dFByaXZhdGVCcmFuZDoKICAgICBjYXNlIEFycmF5TGVuZ3RoOgogICAgIGNhc2UgU3RyaW5nTGVu
Z3RoOgogICAgIGNhc2UgRGlyZWN0QXJndW1lbnRzTGVuZ3RoOgpAQCAtNTE5LDYgKzUzOSw4IEBA
IGJvb2wgQWNjZXNzQ2FzZTo6ZG9lc0NhbGxzKFZNJiB2bSwgVmVjdG9yPEpTQ2VsbCo+KiBjZWxs
c1RvTWFya0lmRG9lc0NhbGxzKSBjb25zCiAgICAgY2FzZSBJbnRyaW5zaWNHZXR0ZXI6CiAgICAg
Y2FzZSBJbkhpdDoKICAgICBjYXNlIEluTWlzczoKKyAgICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5k
OgorICAgIGNhc2UgU2V0UHJpdmF0ZUJyYW5kOgogICAgIGNhc2UgQXJyYXlMZW5ndGg6CiAgICAg
Y2FzZSBTdHJpbmdMZW5ndGg6CiAgICAgY2FzZSBEaXJlY3RBcmd1bWVudHNMZW5ndGg6CkBAIC02
NzAsNiArNjkyLDggQEAgYm9vbCBBY2Nlc3NDYXNlOjpjYW5SZXBsYWNlKGNvbnN0IEFjY2Vzc0Nh
c2UmIG90aGVyKSBjb25zdAogICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JTZXR0ZXI6CiAgICAgY2Fz
ZSBJbkhpdDoKICAgICBjYXNlIEluTWlzczoKKyAgICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5kOgor
ICAgIGNhc2UgU2V0UHJpdmF0ZUJyYW5kOgogICAgICAgICBpZiAob3RoZXIudHlwZSgpICE9IHR5
cGUoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNzAxLDcgKzcyNSw3IEBAIHZv
aWQgQWNjZXNzQ2FzZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgICAgICBvdXQu
cHJpbnQoY29tbWEsICJwcm90b3R5cGUgYWNjZXNzIGNoYWluID0gIik7CiAgICAgICAgIG1fcG9s
eVByb3RvQWNjZXNzQ2hhaW4tPmR1bXAoc3RydWN0dXJlKCksIG91dCk7CiAgICAgfSBlbHNlIHsK
LSAgICAgICAgaWYgKG1fdHlwZSA9PSBUcmFuc2l0aW9uIHx8IG1fdHlwZSA9PSBEZWxldGUpCisg
ICAgICAgIGlmIChtX3R5cGUgPT0gVHJhbnNpdGlvbiB8fCBtX3R5cGUgPT0gRGVsZXRlIHx8IG1f
dHlwZSA9PSBTZXRQcml2YXRlQnJhbmQpCiAgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsICJz
dHJ1Y3R1cmUgPSAiLCBwb2ludGVyRHVtcChzdHJ1Y3R1cmUoKSksICIgLT4gIiwgcG9pbnRlckR1
bXAobmV3U3RydWN0dXJlKCkpKTsKICAgICAgICAgZWxzZSBpZiAobV9zdHJ1Y3R1cmUpCiAgICAg
ICAgICAgICBvdXQucHJpbnQoY29tbWEsICJzdHJ1Y3R1cmUgPSAiLCBwb2ludGVyRHVtcChtX3N0
cnVjdHVyZS5nZXQoKSkpOwpAQCAtMTMzMiw2ICsxMzU2LDEyIEBAIHZvaWQgQWNjZXNzQ2FzZTo6
Z2VuZXJhdGVXaXRoR3VhcmQoCiAgICAgICAgICAgICBzdGF0ZS5mYWlsQW5kSWdub3JlLmFwcGVu
ZChmYWlsQW5kSWdub3JlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIGNhc2UgQ2hl
Y2tQcml2YXRlQnJhbmQ6IHsKKyAgICAgICAgZW1pdERlZmF1bHRHdWFyZCgpOworICAgICAgICBz
dGF0ZS5zdWNjZWVkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgICAgIAogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIGVtaXREZWZhdWx0R3VhcmQoKTsKQEAgLTIwMzQsNiArMjA2NCwxOSBA
QCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0
YXRlKQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgY2FzZSBTZXRQcml2YXRlQnJhbmQ6
IHsKKyAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhh
c0JlZW5JbnZhbGlkYXRlZCgpKTsKKyAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZSgpLT50cmFu
c2l0aW9uS2luZCgpID09IFRyYW5zaXRpb25LaW5kOjpTZXRCcmFuZCk7CisKKyAgICAgICAgdWlu
dDMyX3Qgc3RydWN0dXJlQml0cyA9IGJpdHdpc2VfY2FzdDx1aW50MzJfdD4obmV3U3RydWN0dXJl
KCktPmlkKCkpOworICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKHN0cnVjdHVyZUJpdHMpLAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOworCisgICAg
ICAgIHN0YXRlLnN1Y2NlZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGNhc2Ug
RGVsZXRlTm9uQ29uZmlndXJhYmxlOiB7CiAgICAgICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tMzIoZmFsc2UpLCB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpKTsKICAgICAgICAg
c3RhdGUuc3VjY2VlZCgpOwpAQCAtMjEwNyw2ICsyMTUwLDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpn
ZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICBjYXNlIEluZGV4
ZWRUeXBlZEFycmF5RmxvYXQzMkxvYWQ6CiAgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUZsb2F0
NjRMb2FkOgogICAgIGNhc2UgSW5kZXhlZFN0cmluZ0xvYWQ6CisgICAgY2FzZSBDaGVja1ByaXZh
dGVCcmFuZDoKICAgICAgICAgLy8gVGhlc2UgbmVlZCB0byBiZSBoYW5kbGVkIGJ5IGdlbmVyYXRl
V2l0aEd1YXJkKCksIHNpbmNlIHRoZSBndWFyZCBpcyBwYXJ0IG9mIHRoZQogICAgICAgICAvLyBh
bGdvcml0aG0uIFdlIGNhbiBiZSBzdXJlIHRoYXQgbm9ib2R5IHdpbGwgY2FsbCBnZW5lcmF0ZSgp
IGRpcmVjdGx5IGZvciB0aGVzZSBzaW5jZSB0aGV5CiAgICAgICAgIC8vIGFyZSBub3QgZ3VhcmRl
ZCBieSBzdHJ1Y3R1cmUgY2hlY2tzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
Y2Nlc3NDYXNlLmgKaW5kZXggMTA4ZmVmM2IzMzAxMmNmNGU3ZGIyN2UyMGE2MjYwMjA3ODVkMjE1
OS4uMzZlOTQ0N2U5ZTM2MmNkZDEwZTljNDJmNzUwNmYyMTJjYTc4ZjY3MSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCkBAIC0xMDgsNiArMTA4LDggQEAg
cHVibGljOgogICAgICAgICBJbnN0YW5jZU9mSGl0LAogICAgICAgICBJbnN0YW5jZU9mTWlzcywK
ICAgICAgICAgSW5zdGFuY2VPZkdlbmVyaWMsCisgICAgICAgIENoZWNrUHJpdmF0ZUJyYW5kLAor
ICAgICAgICBTZXRQcml2YXRlQnJhbmQsCiAgICAgICAgIEluZGV4ZWRJbnQzMkxvYWQsCiAgICAg
ICAgIEluZGV4ZWREb3VibGVMb2FkLAogICAgICAgICBJbmRleGVkQ29udGlndW91c0xvYWQsCkBA
IC0xNTMsNiArMTU1LDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiBjcmVhdGVEZWxldGUoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVu
dGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCiAgICAgICAg
IFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKTsKKworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
QWNjZXNzQ2FzZT4gY3JlYXRlQ2hlY2tQcml2YXRlQnJhbmQoVk0mLCBKU0NlbGwqIG93bmVyLCBD
YWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZVNldFByaXZhdGVCcmFuZChWTSYsIEpTQ2VsbCogb3duZXIs
IENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUq
IG5ld1N0cnVjdHVyZSk7CiAgICAgCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3ND
YXNlPiBmcm9tU3RydWN0dXJlU3R1YkluZm8oVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJ
ZGVudGlmaWVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogCkBAIC0xNjIsNyArMTY3LDcgQEAgcHVi
bGljOgogCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUoKSBjb25zdAogICAgIHsKLSAgICAgICAg
aWYgKG1fdHlwZSA9PSBUcmFuc2l0aW9uIHx8IG1fdHlwZSA9PSBEZWxldGUpCisgICAgICAgIGlm
IChtX3R5cGUgPT0gVHJhbnNpdGlvbiB8fCBtX3R5cGUgPT0gRGVsZXRlIHx8IG1fdHlwZSA9PSBT
ZXRQcml2YXRlQnJhbmQpCiAgICAgICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUtPnByZXZpb3Vz
SUQoKTsKICAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlLmdldCgpOwogICAgIH0KQEAgLTE3MCw3
ICsxNzUsNyBAQCBwdWJsaWM6CiAKICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSgpIGNvbnN0
CiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IFRyYW5zaXRpb24gfHwgbV90eXBlID09
IERlbGV0ZSk7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHJhbnNpdGlvbiB8fCBtX3R5cGUg
PT0gRGVsZXRlIHx8IG1fdHlwZSA9PSBTZXRQcml2YXRlQnJhbmQpOwogICAgICAgICByZXR1cm4g
bV9zdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCAxNTYxOWQzYTQ4YTE0MmI3MzEwYmJmZjMyZGE3
ZjM3ZDM2MDRhMTQxLi42NTRmNTYzZjhiNGY0NWFmMWE1YWVjMWNmNThjNjhhOWMxMWY5NDkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJi
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKQEAg
LTU4OCw2ICs1ODgsMjggQEAgb3AgOnB1dF9wcml2YXRlX25hbWUsCiAgICAgICAgIG5ld1N0cnVj
dHVyZUlEOiBTdHJ1Y3R1cmVJRCwKICAgICB9CiAKK29wIDpzZXRfcHJpdmF0ZV9icmFuZCwKKyAg
ICBhcmdzOiB7CisgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgYnJhbmQ6
IFZpcnR1YWxSZWdpc3RlciwKKyAgICB9LAorICAgIG1ldGFkYXRhOiB7CisgICAgICAgIG9sZFN0
cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJRCwKKyAgICAgICAgbmV3U3RydWN0dXJlSUQ6IFN0cnVjdHVy
ZUlELAorICAgICAgICBicmFuZDogV3JpdGVCYXJyaWVyW0pTQ2VsbF0sCisgICAgfQorCitvcCA6
Y2hlY2tfcHJpdmF0ZV9icmFuZCwKKyAgICBhcmdzOiB7CisgICAgICAgIGJhc2U6IFZpcnR1YWxS
ZWdpc3RlciwKKyAgICAgICAgYnJhbmQ6IFZpcnR1YWxSZWdpc3RlciwKKyAgICB9LAorICAgIG1l
dGFkYXRhOiB7CisgICAgICAgIHN0cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJRCwKKyAgICAgICAgYnJh
bmQ6IFdyaXRlQmFycmllcltKU0NlbGxdLAorICAgIH0KKyAgICAKKwogb3AgOnB1dF9ieV92YWws
CiAgICAgYXJnczogewogICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAppbmRleCBiMjY5
OGQ4NzhlNGE5MTVlMzg0NDQxZGViNDExNGQ0OWQ0NjBhMjQ0Li40MjVhZjI1YjgwNDkyOWY0NjFm
MGJiMTM4YzY1YThjZjU0YmI1MjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKQEAgLTIyOSw2ICsyMjksOCBAQCB2b2lkIGNvbXB1
dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIs
IGNvbnN0IEluc3RydQogICAgIFVTRVMoT3BHZXRCeVZhbCwgYmFzZSwgcHJvcGVydHkpCiAgICAg
VVNFUyhPcEdldFByaXZhdGVOYW1lLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wUHV0UHJp
dmF0ZU5hbWUsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSkKKyAgICBVU0VTKE9wU2V0UHJpdmF0ZUJy
YW5kLCBiYXNlLCBicmFuZCkKKyAgICBVU0VTKE9wQ2hlY2tQcml2YXRlQnJhbmQsIGJhc2UsIGJy
YW5kKQogICAgIFVTRVMoT3BJbkJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wT3Zl
cnJpZGVzSGFzSW5zdGFuY2UsIGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZVZhbHVlKQogICAgIFVT
RVMoT3BJbnN0YW5jZW9mLCB2YWx1ZSwgcHJvdG90eXBlKQpAQCAtMzk3LDYgKzM5OSw4IEBAIHZv
aWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJzLCBjb25z
dCBJbnN0cnVjdGlvbiogaW5zdHJ1CiAgICAgY2FzZSBvcF9wdXRfYnlfdmFsOgogICAgIGNhc2Ug
b3BfcHV0X2J5X3ZhbF9kaXJlY3Q6CiAgICAgY2FzZSBvcF9wdXRfcHJpdmF0ZV9uYW1lOgorICAg
IGNhc2Ugb3Bfc2V0X3ByaXZhdGVfYnJhbmQ6CisgICAgY2FzZSBvcF9jaGVja19wcml2YXRlX2Jy
YW5kOgogICAgIGNhc2Ugb3BfcHV0X2ludGVybmFsX2ZpZWxkOgogICAgIGNhc2Ugb3BfZGVmaW5l
X2RhdGFfcHJvcGVydHk6CiAgICAgY2FzZSBvcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHk6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJh
bmRTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NoZWNrUHJpdmF0
ZUJyYW5kU3RhdHVzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMjFiMDEyMDQxMmM2YTA3ZDI1MDhkYjQ2OTlm
YjY0ODQ5ZThlMDI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmNwcApAQCAtMCwwICsxLDI3MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuQS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmgiCisKKyNpbmNsdWRlICJD
YWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oIgorI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2lu
Y2x1ZGUgIklDU3RhdHVzVXRpbHMuaCIKKyNpbmNsdWRlICJQb2x5bW9ycGhpY0FjY2Vzcy5oIgor
I2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCisjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+
CisKK25hbWVzcGFjZSBKU0MgeworCitib29sIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOjphcHBl
bmRWYXJpYW50KGNvbnN0IENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudCYgdmFyaWFudCkKK3sKKyAg
ICByZXR1cm4gYXBwZW5kSUNTdGF0dXNWYXJpYW50KG1fdmFyaWFudHMsIHZhcmlhbnQpOworfQor
CitDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyBDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6Y29tcHV0
ZUZvckJhc2VsaW5lKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgSUNTdGF0dXNNYXAmIG1hcCwg
Qnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBFeGl0RmxhZyBkaWRFeGl0KQoreworICAgIENv
bmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoYmFzZWxpbmVCbG9jay0+bV9sb2NrKTsKKworICAgIENo
ZWNrUHJpdmF0ZUJyYW5kU3RhdHVzIHJlc3VsdDsKKworI2lmIEVOQUJMRShERkdfSklUKQorICAg
IHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKAorICAg
ICAgICBsb2NrZXIsIGJhc2VsaW5lQmxvY2ssIG1hcC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUlu
ZGV4KSkuc3R1YkluZm8pOworCisgICAgaWYgKGRpZEV4aXQpCisgICAgICAgIHJldHVybiByZXN1
bHQuc2xvd1ZlcnNpb24oKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG1hcCk7CisgICAgVU5V
U0VEX1BBUkFNKGRpZEV4aXQpOworICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKKyNl
bmRpZgorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworI2lmIEVOQUJMRShKSVQpCitDaGVja1By
aXZhdGVCcmFuZFN0YXR1czo6Q2hlY2tQcml2YXRlQnJhbmRTdGF0dXMoU3R1YkluZm9TdW1tYXJ5
IHN1bW1hcnksIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKK3sKKyAgICBzd2l0Y2ggKHN1
bW1hcnkpIHsKKyAgICBjYXNlIFN0dWJJbmZvU3VtbWFyeTo6Tm9JbmZvcm1hdGlvbjoKKyAgICAg
ICAgbV9zdGF0ZSA9IE5vSW5mb3JtYXRpb247CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFN0
dWJJbmZvU3VtbWFyeTo6U2ltcGxlOgorICAgIGNhc2UgU3R1YkluZm9TdW1tYXJ5OjpNYWtlc0Nh
bGxzOgorICAgIGNhc2UgU3R1YkluZm9TdW1tYXJ5OjpUYWtlc1Nsb3dQYXRoQW5kTWFrZXNDYWxs
czoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIGNhc2UgU3R1YkluZm9TdW1tYXJ5OjpUYWtlc1Nsb3dQYXRoOgorICAgICAgICBtX3N0
YXRlID0gc3R1YkluZm8udG9va1Nsb3dQYXRoID8gT2JzZXJ2ZWRUYWtlc1Nsb3dQYXRoIDogTGlr
ZWx5VGFrZXNTbG93UGF0aDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyBDaGVja1By
aXZhdGVCcmFuZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJh
Y2soCisgICAgY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKiBibG9jaywgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvKQoreworICAgIFN0dWJJbmZvU3VtbWFyeSBzdW1tYXJ5
ID0gU3RydWN0dXJlU3R1YkluZm86OnN1bW1hcnkoYmxvY2stPnZtKCksIHN0dWJJbmZvKTsKKyAg
ICBpZiAoIWlzSW5saW5lYWJsZShzdW1tYXJ5KSkKKyAgICAgICAgcmV0dXJuIENoZWNrUHJpdmF0
ZUJyYW5kU3RhdHVzKHN1bW1hcnksICpzdHViSW5mbyk7CisKKyAgICBDaGVja1ByaXZhdGVCcmFu
ZFN0YXR1cyByZXN1bHQ7CisgICAgcmVzdWx0Lm1fc3RhdGUgPSBTaW1wbGU7CisgICAgc3dpdGNo
IChzdHViSW5mby0+Y2FjaGVUeXBlKCkpIHsKKyAgICBjYXNlIENhY2hlVHlwZTo6VW5zZXQ6Cisg
ICAgICAgIHJldHVybiBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyhOb0luZm9ybWF0aW9uKTsKKwor
ICAgIGNhc2UgQ2FjaGVUeXBlOjpTdHViOiB7CisgICAgICAgIFBvbHltb3JwaGljQWNjZXNzKiBs
aXN0ID0gc3R1YkluZm8tPnUuc3R1YjsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGxpc3RJbmRl
eCA9IDA7IGxpc3RJbmRleCA8IGxpc3QtPnNpemUoKTsgKytsaXN0SW5kZXgpIHsKKyAgICAgICAg
ICAgIGNvbnN0IEFjY2Vzc0Nhc2UmIGFjY2VzcyA9IGxpc3QtPmF0KGxpc3RJbmRleCk7CisKKyAg
ICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYWNjZXNzLnN0cnVjdHVyZSgpOworICAg
ICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSk7CisgICAgICAgICAgICBBU1NFUlQoYWNjZXNzLnR5
cGUoKSA9PSBBY2Nlc3NDYXNlOjpDaGVja1ByaXZhdGVCcmFuZCk7CisKKyAgICAgICAgICAgIENo
ZWNrUHJpdmF0ZUJyYW5kVmFyaWFudCB2YXJpYW50KGFjY2Vzcy5pZGVudGlmaWVyKCksIFN0cnVj
dHVyZVNldChzdHJ1Y3R1cmUpKTsKKyAgICAgICAgICAgIGlmICghcmVzdWx0LmFwcGVuZFZhcmlh
bnQodmFyaWFudCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIENoZWNrUHJpdmF0ZUJyYW5kU3Rh
dHVzKEpTQzo6c2xvd1ZlcnNpb24oc3VtbWFyeSksICpzdHViSW5mbyk7CisgICAgICAgIH0KKwor
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGRlZmF1bHQ6CisgICAgICAgIHJl
dHVybiBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyhKU0M6OnNsb3dWZXJzaW9uKHN1bW1hcnkpLCAq
c3R1YkluZm8pOworICAgIH0KKworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzKCk7Cit9CisKK0NoZWNrUHJpdmF0ZUJy
YW5kU3RhdHVzIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOjpjb21wdXRlRm9yKAorICAgIENvZGVC
bG9jayogYmFzZWxpbmVCbG9jaywgSUNTdGF0dXNNYXAmIGJhc2VsaW5lTWFwLAorICAgIElDU3Rh
dHVzQ29udGV4dFN0YWNrJiBjb250ZXh0U3RhY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbikKK3sK
KyAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5k
ZXgoKTsKKyAgICBFeGl0RmxhZyBkaWRFeGl0ID0gaGFzQmFkQ2FjaGVFeGl0U2l0ZShiYXNlbGlu
ZUJsb2NrLCBieXRlY29kZUluZGV4KTsKKworICAgIGZvciAoSUNTdGF0dXNDb250ZXh0KiBjb250
ZXh0IDogY29udGV4dFN0YWNrKSB7CisgICAgICAgIElDU3RhdHVzIHN0YXR1cyA9IGNvbnRleHQt
PmdldChjb2RlT3JpZ2luKTsKKworICAgICAgICBhdXRvIGJsZXNzID0gWyZdIChjb25zdCBDaGVj
a1ByaXZhdGVCcmFuZFN0YXR1cyYgcmVzdWx0KSAtPiBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyB7
CisgICAgICAgICAgICBpZiAoIWNvbnRleHQtPmlzSW5saW5lZChjb2RlT3JpZ2luKSkgeworICAg
ICAgICAgICAgICAgIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzIGJhc2VsaW5lUmVzdWx0ID0gY29t
cHV0ZUZvckJhc2VsaW5lKAorICAgICAgICAgICAgICAgICAgICBiYXNlbGluZUJsb2NrLCBiYXNl
bGluZU1hcCwgYnl0ZWNvZGVJbmRleCwgZGlkRXhpdCk7CisgICAgICAgICAgICAgICAgYmFzZWxp
bmVSZXN1bHQubWVyZ2UocmVzdWx0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYmFzZWxpbmVS
ZXN1bHQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZGlkRXhpdC5pc1NldChFeGl0
RnJvbUlubGluZWQpKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQuc2xvd1ZlcnNpb24o
KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH07CisKKyAgICAgICAgaWYg
KHN0YXR1cy5zdHViSW5mbykgeworICAgICAgICAgICAgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMg
cmVzdWx0OworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tl
ciBsb2NrZXIoY29udGV4dC0+b3B0aW1pemVkQ29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNr
KAorICAgICAgICAgICAgICAgICAgICBsb2NrZXIsIGNvbnRleHQtPm9wdGltaXplZENvZGVCbG9j
aywgc3RhdHVzLnN0dWJJbmZvKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChyZXN1
bHQuaXNTZXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gYmxlc3MocmVzdWx0KTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHJldHVybiBjb21wdXRlRm9yQmFzZWxpbmUoYmFzZWxpbmVCbG9j
aywgYmFzZWxpbmVNYXAsIGJ5dGVjb2RlSW5kZXgsIGRpZEV4aXQpOworfQorCisjZW5kaWYgLy8g
RU5BQkxFKEpJVCkKKworQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMgQ2hlY2tQcml2YXRlQnJhbmRT
dGF0dXM6OnNsb3dWZXJzaW9uKCkgY29uc3QKK3sKKyAgICBpZiAob2JzZXJ2ZWRTbG93UGF0aCgp
KQorICAgICAgICByZXR1cm4gQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMoT2JzZXJ2ZWRUYWtlc1Ns
b3dQYXRoKTsKKyAgICByZXR1cm4gQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMoTGlrZWx5VGFrZXNT
bG93UGF0aCk7Cit9CisKK3ZvaWQgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6Om1lcmdlKGNvbnN0
IENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzJiBvdGhlcikKK3sKKyAgICBpZiAob3RoZXIubV9zdGF0
ZSA9PSBOb0luZm9ybWF0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIG1lcmdlU2xv
dyA9IFsmXSAoKSB7CisgICAgICAgIGlmIChvYnNlcnZlZFNsb3dQYXRoKCkgfHwgb3RoZXIub2Jz
ZXJ2ZWRTbG93UGF0aCgpKQorICAgICAgICAgICAgKnRoaXMgPSBDaGVja1ByaXZhdGVCcmFuZFN0
YXR1cyhPYnNlcnZlZFRha2VzU2xvd1BhdGgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICAq
dGhpcyA9IENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzKExpa2VseVRha2VzU2xvd1BhdGgpOworICAg
IH07CisKKyAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKKyAgICBjYXNlIE5vSW5mb3JtYXRpb246Cisg
ICAgICAgICp0aGlzID0gb3RoZXI7CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgU2ltcGxl
OgorICAgICAgICBpZiAobV9zdGF0ZSAhPSBvdGhlci5tX3N0YXRlKQorICAgICAgICAgICAgcmV0
dXJuIG1lcmdlU2xvdygpOworCisgICAgICAgIGZvciAoYXV0byYgb3RoZXJWYXJpYW50IDogb3Ro
ZXIubV92YXJpYW50cykgeworICAgICAgICAgICAgaWYgKCFhcHBlbmRWYXJpYW50KG90aGVyVmFy
aWFudCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1lcmdlU2xvdygpOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybjsKKworICAgIGNhc2UgTGlrZWx5VGFrZXNTbG93UGF0aDoKKyAgICBjYXNl
IE9ic2VydmVkVGFrZXNTbG93UGF0aDoKKyAgICAgICAgcmV0dXJuIG1lcmdlU2xvdygpOworICAg
IH0KKworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgQ2hlY2tQ
cml2YXRlQnJhbmRTdGF0dXM6OmZpbHRlcihjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNl
dCkKK3sKKyAgICBpZiAobV9zdGF0ZSAhPSBTaW1wbGUpCisgICAgICAgIHJldHVybjsKKyAgICBm
aWx0ZXJJQ1N0YXR1c1ZhcmlhbnRzKG1fdmFyaWFudHMsIHN0cnVjdHVyZVNldCk7CisgICAgaWYg
KG1fdmFyaWFudHMuaXNFbXB0eSgpKQorICAgICAgICBtX3N0YXRlID0gTm9JbmZvcm1hdGlvbjsK
K30KKworQ2FjaGVhYmxlSWRlbnRpZmllciBDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6c2luZ2xl
SWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgaWYgKG1fdmFyaWFudHMuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIENhY2hlYWJsZUlkZW50aWZpZXIgcmVzdWx0ID0g
bV92YXJpYW50cy5maXJzdCgpLmlkZW50aWZpZXIoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBtX3ZhcmlhbnRz
LnNpemUoKTsgKytpKSB7CisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9
IG1fdmFyaWFudHNbaV0uaWRlbnRpZmllcigpOworICAgICAgICBpZiAoIWlkZW50aWZpZXIpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaWYgKGlkZW50aWZpZXIgIT0gcmVz
dWx0KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK3ZvaWQgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6OnZpc2l0QWdncmVnYXRlKFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGZvciAoQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50
JiB2YXJpYW50IDogbV92YXJpYW50cykKKyAgICAgICAgdmFyaWFudC52aXNpdEFnZ3JlZ2F0ZSh2
aXNpdG9yKTsKK30KKwordm9pZCBDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6bWFya0lmQ2hlYXAo
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgZm9yIChDaGVja1ByaXZhdGVCcmFuZFZhcmlh
bnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKQorICAgICAgICB2YXJpYW50Lm1hcmtJZkNoZWFwKHZp
c2l0b3IpOworfQorCitib29sIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOjpmaW5hbGl6ZShWTSYg
dm0pCit7CisgICAgZm9yIChhdXRvJiB2YXJpYW50IDogbV92YXJpYW50cykgeworICAgICAgICBp
ZiAoIXZhcmlhbnQuZmluYWxpemUodm0pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6
ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91dC5wcmludCgiKCIpOworICAg
IHN3aXRjaCAobV9zdGF0ZSkgeworICAgIGNhc2UgTm9JbmZvcm1hdGlvbjoKKyAgICAgICAgb3V0
LnByaW50KCJOb0luZm9ybWF0aW9uIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2ltcGxl
OgorICAgICAgICBvdXQucHJpbnQoIlNpbXBsZSIpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IExpa2VseVRha2VzU2xvd1BhdGg6CisgICAgICAgIG91dC5wcmludCgiTGlrZWx5VGFrZXNTbG93
UGF0aCIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE9ic2VydmVkVGFrZXNTbG93UGF0aDoK
KyAgICAgICAgb3V0LnByaW50KCJPYnNlcnZlZFRha2VzU2xvd1BhdGgiKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIG91dC5wcmludCgiLCAiLCBsaXN0RHVtcChtX3ZhcmlhbnRzKSwgIiki
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5
MGI4ZjQzOTQ0NWZkZTkxNTQ3OTNjYTU3MzlkMzhmMWIyM2I4ODYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMu
aApAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuQS4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmll
ci5oIgorI2luY2x1ZGUgIkNoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudC5oIgorI2luY2x1ZGUgIkNv
ZGVPcmlnaW4uaCIKKyNpbmNsdWRlICJDb25jdXJyZW50SlNMb2NrLmgiCisjaW5jbHVkZSAiRXhp
dEZsYWcuaCIKKyNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgorI2luY2x1ZGUgIlN0dWJJbmZvU3Vt
bWFyeS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQWNjZXNzQ2FzZTsKK2NsYXNzIENv
ZGVCbG9jazsKK2NsYXNzIFN0cnVjdHVyZVN0dWJJbmZvOworCitjbGFzcyBDaGVja1ByaXZhdGVC
cmFuZFN0YXR1cyBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6
CisgICAgZW51bSBTdGF0ZSA6IHVpbnQ4X3QgeworICAgICAgICAvLyBJdCdzIHVuY2FjaGVkIHNv
IHdlIGhhdmUgbm8gaW5mb3JtYXRpb24uCisgICAgICAgIE5vSW5mb3JtYXRpb24sCisgICAgICAg
IC8vIEl0J3MgY2FjaGVkIGZvciBhIHNpbXBsZSBhY2Nlc3MuCisgICAgICAgIFNpbXBsZSwKKyAg
ICAgICAgLy8gSXQgd2lsbCBsaWtlbHkgdGFrZSB0aGUgc2xvdyBwYXRoLgorICAgICAgICBMaWtl
bHlUYWtlc1Nsb3dQYXRoLAorICAgICAgICAvLyBJdCBoYXMgYmVlbiBzZWVuIHRvIHRha2UgdGhl
IHNsb3cgcGF0aC4KKyAgICAgICAgT2JzZXJ2ZWRUYWtlc1Nsb3dQYXRoLAorICAgIH07CisKKyAg
ICBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cygpCisgICAgICAgIDogbV9zdGF0ZShOb0luZm9ybWF0
aW9uKQorICAgIHsKKyAgICB9CisKKyAgICBleHBsaWNpdCBDaGVja1ByaXZhdGVCcmFuZFN0YXR1
cyhTdGF0ZSBzdGF0ZSkKKyAgICAgICAgOiBtX3N0YXRlKHN0YXRlKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKHN0YXRlICE9IFNpbXBsZSk7CisgICAgfQorCisgICAgc3RhdGljIENoZWNrUHJpdmF0
ZUJyYW5kU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJQ1N0YXR1
c01hcCYgYmFzZWxpbmVNYXAsIElDU3RhdHVzQ29udGV4dFN0YWNrJiBkZmdDb250ZXh0U3RhY2ss
IENvZGVPcmlnaW4pOworCisgICAgU3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRl
OyB9CisKKyAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSAhPSBOb0luZm9y
bWF0aW9uOyB9CisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhaXNTZXQoKTsg
fQorICAgIGJvb2wgb2JzZXJ2ZWRTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0g
T2JzZXJ2ZWRUYWtlc1Nsb3dQYXRoOyB9CisgICAgYm9vbCBpc1NpbXBsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGUgPT0gU2ltcGxlOyB9CisgICAgY29uc3QgVmVjdG9yPENoZWNrUHJpdmF0ZUJy
YW5kVmFyaWFudCwgMT4mIHZhcmlhbnRzKCkgeyByZXR1cm4gbV92YXJpYW50czsgfQorICAgIENh
Y2hlYWJsZUlkZW50aWZpZXIgc2luZ2xlSWRlbnRpZmllcigpIGNvbnN0OworCisgICAgQ2hlY2tQ
cml2YXRlQnJhbmRTdGF0dXMgc2xvd1ZlcnNpb24oKSBjb25zdDsKKworICAgIC8vIEF0dGVtcHRz
IHRvIHJlZHVjZSB0aGUgc2V0IG9mIHZhcmlhbnRzIHRvIGZpdCB0aGUgZ2l2ZW4gc3RydWN0dXJl
IHNldC4gVGhpcyBtYXkgYmUgYXBwcm94aW1hdGUuCisgICAgdm9pZCBmaWx0ZXIoY29uc3QgU3Ry
dWN0dXJlU2V0Jik7CisKKyAgICB2b2lkIHZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9yJik7Cisg
ICAgdm9pZCBtYXJrSWZDaGVhcChTbG90VmlzaXRvciYpOworICAgIGJvb2wgZmluYWxpemUoVk0m
KTsKKworICAgIGJvb2wgYXBwZW5kVmFyaWFudChjb25zdCBDaGVja1ByaXZhdGVCcmFuZFZhcmlh
bnQmKTsKKworICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworCitwcml2YXRlOgor
ICAgIGV4cGxpY2l0IENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzKFN0dWJJbmZvU3VtbWFyeSwgU3Ry
dWN0dXJlU3R1YkluZm8mKTsKKyAgICB2b2lkIG1lcmdlKGNvbnN0IENoZWNrUHJpdmF0ZUJyYW5k
U3RhdHVzJik7CisKKyAgICBzdGF0aWMgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMgY29tcHV0ZUZv
ckJhc2VsaW5lKENvZGVCbG9jayosIElDU3RhdHVzTWFwJiwgQnl0ZWNvZGVJbmRleCwgRXhpdEZs
YWcpOworI2lmIEVOQUJMRShKSVQpCisgICAgc3RhdGljIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVz
IGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKAorICAgICAgICBjb25z
dCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIFN0cnVjdHVy
ZVN0dWJJbmZvKik7CisjZW5kaWYKKworICAgIFZlY3RvcjxDaGVja1ByaXZhdGVCcmFuZFZhcmlh
bnQsIDE+IG1fdmFyaWFudHM7CisgICAgU3RhdGUgbV9zdGF0ZTsKK307CisKK30gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NoZWNr
UHJpdmF0ZUJyYW5kVmFyaWFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2hlY2tQcml2YXRlQnJhbmRWYXJpYW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOWVjN2FlZjVlNTE0ZGNi
MjMwODJiYjdjMDcwYWJjYTdlN2U1MzZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudC5jcHAKQEAgLTAsMCAr
MSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuQS4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudC5oIgor
CisjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK0NoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudDo6Q2hlY2tQcml2YXRlQnJhbmRWYXJpYW50
KENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1
Y3R1cmVTZXQpCisgICAgOiBtX3N0cnVjdHVyZVNldChzdHJ1Y3R1cmVTZXQpCisgICAgLCBtX2lk
ZW50aWZpZXIoV1RGTW92ZShpZGVudGlmaWVyKSkKK3sgfQorCitDaGVja1ByaXZhdGVCcmFuZFZh
cmlhbnQ6On5DaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQoKSB7IH0KKworQ2hlY2tQcml2YXRlQnJh
bmRWYXJpYW50OjpDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQoY29uc3QgQ2hlY2tQcml2YXRlQnJh
bmRWYXJpYW50JiBvdGhlcikKK3sKKyAgICAqdGhpcyA9IG90aGVyOworfQorCitib29sIENoZWNr
UHJpdmF0ZUJyYW5kVmFyaWFudDo6YXR0ZW1wdFRvTWVyZ2UoY29uc3QgQ2hlY2tQcml2YXRlQnJh
bmRWYXJpYW50JiBvdGhlcikKK3sKKyAgICBpZiAoISFtX2lkZW50aWZpZXIgIT0gISFvdGhlci5t
X2lkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX2lkZW50aWZp
ZXIgJiYgKG1faWRlbnRpZmllciAhPSBvdGhlci5tX2lkZW50aWZpZXIpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBtX3N0cnVjdHVyZVNldC5tZXJnZShvdGhlci5tX3N0cnVjdHVyZVNl
dCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDaGVja1ByaXZhdGVCcmFuZFZhcmlh
bnQ6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIG1fc3RydWN0dXJl
U2V0Lm1hcmtJZkNoZWFwKHZpc2l0b3IpOworfQorCitib29sIENoZWNrUHJpdmF0ZUJyYW5kVmFy
aWFudDo6ZmluYWxpemUoVk0mIHZtKQoreworICAgIGlmICghbV9zdHJ1Y3R1cmVTZXQuaXNTdGls
bEFsaXZlKHZtKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQor
Cit2b2lkIENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudDo6dmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCit7CisgICAgbV9pZGVudGlmaWVyLnZpc2l0QWdncmVnYXRlKHZpc2l0b3Ip
OworfQorCit2b2lkIENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudDo6ZHVtcChQcmludFN0cmVhbSYg
b3V0KSBjb25zdAoreworICAgIGR1bXBJbkNvbnRleHQob3V0LCBudWxscHRyKTsKK30KKwordm9p
ZCBDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQ6OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91
dCwgRHVtcENvbnRleHQqIGNvbnRleHQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KCI8aWQ9JyIs
IG1faWRlbnRpZmllciwgIicsICIsIGluQ29udGV4dChzdHJ1Y3R1cmVTZXQoKSwgY29udGV4dCks
ICI+Iik7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmZlNGM0NmZmZWVlNTY3N2QyNDc1OGM2MGZmNjZlZTZiZjMzOTJkNzgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRW
YXJpYW50LmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlh
IFMuQS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlm
aWVyLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlU2V0LmgiCisjaW5jbHVkZSA8d3RmL0JveC5oPgor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM7CisKK2Ns
YXNzIENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CitwdWJsaWM6CisgICAgQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50KENhY2hlYWJsZUlkZW50
aWZpZXIsIGNvbnN0IFN0cnVjdHVyZVNldCYgPSBTdHJ1Y3R1cmVTZXQoKSk7CisKKyAgICB+Q2hl
Y2tQcml2YXRlQnJhbmRWYXJpYW50KCk7CisKKyAgICBDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQo
Y29uc3QgQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50Jik7CisKKyAgICBjb25zdCBTdHJ1Y3R1cmVT
ZXQmIHN0cnVjdHVyZVNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlU2V0OyB9CisgICAg
U3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQoKSB7IHJldHVybiBtX3N0cnVjdHVyZVNldDsgfQor
CisgICAgYm9vbCBhdHRlbXB0VG9NZXJnZShjb25zdCBDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQm
IG90aGVyKTsKKworICAgIHZvaWQgdmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImKTsKKyAgICB2
b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7CisgICAgYm9vbCBmaW5hbGl6ZShWTSYpOwor
CisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisgICAgdm9pZCBkdW1wSW5Db250
ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBjb25zdDsKKworICAgIENhY2hlYWJsZUlk
ZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCisg
ICAgYm9vbCBvdmVybGFwcyhjb25zdCBDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQmIG90aGVyKQor
ICAgIHsKKyAgICAgICAgaWYgKCEhbV9pZGVudGlmaWVyICE9ICEhb3RoZXIubV9pZGVudGlmaWVy
KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChtX2lkZW50aWZpZXIpIHsK
KyAgICAgICAgICAgIGlmIChtX2lkZW50aWZpZXIgIT0gb3RoZXIubV9pZGVudGlmaWVyKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc3Ry
dWN0dXJlU2V0KCkub3ZlcmxhcHMob3RoZXIuc3RydWN0dXJlU2V0KCkpOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBmcmllbmQgY2xhc3MgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM7CisKKyAgICBT
dHJ1Y3R1cmVTZXQgbV9zdHJ1Y3R1cmVTZXQ7CisgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBtX2lk
ZW50aWZpZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggYWYyYWM0YzkxYmI3MjMyYzRiZTM5NDk1
OTc3MWYwOWEzMjE4ZGQ0OC4uMDYyZGZhYzJlNDllZjA5ZThjYTliZDhjOTZkNmM1NGI2NmIwZTI3
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAg
LTU0NCw2ICs1NDQsOSBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBT
Y3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICBMSU5LKE9w
UHV0QnlWYWxEaXJlY3QpCiAgICAgICAgIExJTksoT3BQdXRQcml2YXRlTmFtZSkKIAorICAgICAg
ICBMSU5LKE9wU2V0UHJpdmF0ZUJyYW5kKQorICAgICAgICBMSU5LKE9wQ2hlY2tQcml2YXRlQnJh
bmQpCisKICAgICAgICAgTElOSyhPcE5ld0FycmF5KQogICAgICAgICBMSU5LKE9wTmV3QXJyYXlX
aXRoU2l6ZSkKICAgICAgICAgTElOSyhPcE5ld0FycmF5QnVmZmVyLCBhcnJheUFsbG9jYXRpb25Q
cm9maWxlKQpAQCAtMTMzOCw2ICsxMzQxLDMzIEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxM
SW50SW5saW5lQ2FjaGVzKCkKICAgICAgICAgICAgIG1ldGFkYXRhLm1fcHJvcGVydHkuY2xlYXIo
KTsKICAgICAgICAgfSk7CiAKKyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFNldFByaXZh
dGVCcmFuZD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeworICAgICAgICAgICAgU3RydWN0dXJlSUQg
b2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEOworICAgICAgICAgICAg
U3RydWN0dXJlSUQgbmV3U3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEOwor
ICAgICAgICAgICAgSlNDZWxsKiBicmFuZCA9IG1ldGFkYXRhLm1fYnJhbmQuZ2V0KCk7CisgICAg
ICAgICAgICBpZiAoKCFvbGRTdHJ1Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAu
c3RydWN0dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCkpKQorICAgICAgICAgICAgICAg
ICYmICghYnJhbmQgfHwgdm0uaGVhcC5pc01hcmtlZChicmFuZCkpCisgICAgICAgICAgICAgICAg
JiYgKCFuZXdTdHJ1Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAuc3RydWN0dXJl
SURUYWJsZSgpLmdldChuZXdTdHJ1Y3R1cmVJRCkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNsZWFy
aW5nIExMSW50IHNldF9wcml2YXRlX2JyYW5kIHRyYW5zaXRpb24uIik7CisgICAgICAgICAgICBt
ZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEID0gMDsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fbmV3
U3RydWN0dXJlSUQgPSAwOworICAgICAgICAgICAgbWV0YWRhdGEubV9icmFuZC5jbGVhcigpOwor
ICAgICAgICB9KTsKKworICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wQ2hlY2tQcml2YXRl
QnJhbmQ+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKKyAgICAgICAgICAgIFN0cnVjdHVyZUlEIHN0
cnVjdHVyZUlEID0gbWV0YWRhdGEubV9zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIEpTQ2VsbCog
YnJhbmQgPSBtZXRhZGF0YS5tX2JyYW5kLmdldCgpOworICAgICAgICAgICAgaWYgKCghc3RydWN0
dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQo
c3RydWN0dXJlSUQpKSkKKyAgICAgICAgICAgICAgICAmJiAoIWJyYW5kIHx8IHZtLmhlYXAuaXNN
YXJrZWQoYnJhbmQpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGRh
dGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNsZWFyaW5nIExMSW50IHNldF9wcml2
YXRlX2JyYW5kIHRyYW5zaXRpb24uIik7CisgICAgICAgICAgICBtZXRhZGF0YS5tX3N0cnVjdHVy
ZUlEID0gMDsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fYnJhbmQuY2xlYXIoKTsKKyAgICAgICAg
fSk7CisKICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFRvVGhpcz4oWyZdIChhdXRvJiBt
ZXRhZGF0YSkgewogICAgICAgICAgICAgaWYgKCFtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlE
IHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG1ldGFk
YXRhLm1fY2FjaGVkU3RydWN0dXJlSUQpKSkKICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4IDQ5
ZWRkNTI4NWQ1YzJjMjhiMWM5YTRiY2VlZjQ1MTcxOTkwYmU5MWMuLmNkNTlmYjRhNzMzZTkyNGU0
ZWIxM2E5YzAwNjkzMDQyZDM5ZDlkZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0zNiw5ICszNiwxMCBAQCBlbnVtIGNsYXNzIE5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIDogdWludDhfdCB7IE5vLCBZZXMgfTsKIC8vIEZJWE1F
OiBUaGVzZSBmbGFncywgUGFyc2VyTW9kZXMgYW5kIHByb3BhZ2F0aW9uIHRvIFhYWENvZGVCbG9j
a3Mgc2hvdWxkIGJlIHJlb3JnYW5pemVkLgogLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1MTU0Nwogc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKLSAgICBFeGVjdXRh
YmxlSW5mbyhib29sIHVzZXNFdmFsLCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wgaXNCdWlsdGlu
RnVuY3Rpb24sIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIEpTUGFyc2VyU2NyaXB0
TW9kZSBzY3JpcHRNb2RlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBTb3VyY2VQYXJzZU1v
ZGUgcGFyc2VNb2RlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBp
c0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzQ2xhc3NDb250ZXh0LCBFdmFsQ29udGV4dFR5
cGUgZXZhbENvbnRleHRUeXBlKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgdXNlc0V2YWwsIGJv
b2wgaXNDb25zdHJ1Y3RvciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24sIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1
Y3RvcktpbmQsIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBTdXBlckJpbmRpbmcgc3Vw
ZXJCaW5kaW5nLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBEZXJpdmVkQ29udGV4dFR5cGUg
ZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzQ2xh
c3NDb250ZXh0LCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKQogICAgICAgICA6IG1f
dXNlc0V2YWwodXNlc0V2YWwpCiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3RydWN0
b3IpCisgICAgICAgICwgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudChzdGF0aWNfY2FzdDx1bnNp
Z25lZD4ocHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpKQogICAgICAgICAsIG1faXNCdWlsdGluRnVu
Y3Rpb24oaXNCdWlsdGluRnVuY3Rpb24pCiAgICAgICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCiAgICAgICAgICwgbV9zdXBlckJp
bmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykpCkBAIC01Nyw2ICs1OCw3
IEBAIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiAKICAgICBib29sIHVzZXNFdmFsKCkgY29uc3Qg
eyByZXR1cm4gbV91c2VzRXZhbDsgfQogICAgIGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsg
cmV0dXJuIG1faXNDb25zdHJ1Y3RvcjsgfQorICAgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHBy
aXZhdGVCcmFuZFJlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQ+KG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOyB9CiAgICAgYm9v
bCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247
IH0KICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KICAgICBT
dXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3Vw
ZXJCaW5kaW5nPihtX3N1cGVyQmluZGluZyk7IH0KQEAgLTcxLDYgKzczLDcgQEAgc3RydWN0IEV4
ZWN1dGFibGVJbmZvIHsKIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV91c2VzRXZhbCA6IDE7CiAg
ICAgdW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKKyAgICB1bnNpZ25lZCBtX3ByaXZhdGVC
cmFuZFJlcXVpcmVtZW50IDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDog
MTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CiAgICAgdW5zaWduZWQgbV9z
dXBlckJpbmRpbmcgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXggMTIwMmYyNzk1NWI1NTZhMTEyMGNhZmViMDU0
NmUwYWM3ZGQ5ZmVmZS4uYThiODIwM2VlOTliNTVmZDU5M2MyOWZhY2E4ZjRiY2Y0NTM0N2E3OCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNj
ZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNB
Y2Nlc3MuY3BwCkBAIC00NjksNyArNDY5LDggQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5
bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2MKICAg
ICBhbGxvY2F0b3IubG9jayhzdGF0ZS5iYXNlR1BSKTsKICAgICBpZiAoc3RhdGUudS50aGlzR1BS
ICE9IEludmFsaWRHUFJSZWcpCiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0YXRlLnUudGhpc0dQ
Uik7Ci0gICAgYWxsb2NhdG9yLmxvY2soc3RhdGUudmFsdWVSZWdzKTsKKyAgICBpZiAoc3RhdGUu
dmFsdWVSZWdzKQorICAgICAgICBhbGxvY2F0b3IubG9jayhzdGF0ZS52YWx1ZVJlZ3MpOwogI2lm
IFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVRhZ0dQ
Uik7CiAgICAgaWYgKHN0dWJJbmZvLnYudGhpc1RhZ0dQUiAhPSBJbnZhbGlkR1BSUmVnKQpAQCAt
ODUyLDYgKzg1MywxMiBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgQWNj
ZXNzQ2FzZTo6QWNjZXNzVHlwZSB0eXBlKQogICAgIGNhc2UgQWNjZXNzQ2FzZTo6SW5NaXNzOgog
ICAgICAgICBvdXQucHJpbnQoIkluTWlzcyIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBB
Y2Nlc3NDYXNlOjpDaGVja1ByaXZhdGVCcmFuZDoKKyAgICAgICAgb3V0LnByaW50KCJDaGVja1By
aXZhdGVCcmFuZCIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBBY2Nlc3NDYXNlOjpTZXRQ
cml2YXRlQnJhbmQ6CisgICAgICAgIG91dC5wcmludCgiU2V0UHJpdmF0ZUJyYW5kIik7CisgICAg
ICAgIHJldHVybjsKICAgICBjYXNlIEFjY2Vzc0Nhc2U6OkFycmF5TGVuZ3RoOgogICAgICAgICBv
dXQucHJpbnQoIkFycmF5TGVuZ3RoIik7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAppbmRleCBkNjE1
YTEzZDljM2M0NzVhNjE2YzJlNTQ3NzI5NTU0NjE2OWM0NDRkLi43ZmY1MGU0ODU3OGEzZjY3MzA0
MmU3NDkzOWFjMmEyYWQ2NTY0NjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCkBAIC0zNSw2ICszNSw4IEBAIFJlY29yZGVk
U3RhdHVzZXMmIFJlY29yZGVkU3RhdHVzZXM6Om9wZXJhdG9yPShSZWNvcmRlZFN0YXR1c2VzJiYg
b3RoZXIpCiAgICAgcHV0cyA9IFdURk1vdmUob3RoZXIucHV0cyk7CiAgICAgaW5zID0gV1RGTW92
ZShvdGhlci5pbnMpOwogICAgIGRlbGV0ZXMgPSBXVEZNb3ZlKG90aGVyLmRlbGV0ZXMpOworICAg
IGNoZWNrUHJpdmF0ZUJyYW5kcyA9IFdURk1vdmUob3RoZXIuY2hlY2tQcml2YXRlQnJhbmRzKTsK
KyAgICBzZXRQcml2YXRlQnJhbmRzID0gV1RGTW92ZShvdGhlci5zZXRQcml2YXRlQnJhbmRzKTsK
ICAgICBzaHJpbmtUb0ZpdCgpOwogICAgIHJldHVybiAqdGhpczsKIH0KQEAgLTg0LDEyICs4Niwz
MiBAQCBEZWxldGVCeVN0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkRGVsZXRlQnlTdGF0dXMo
Y29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK0No
ZWNrUHJpdmF0ZUJyYW5kU3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGRDaGVja1ByaXZhdGVC
cmFuZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBjb25zdCBDaGVja1ByaXZh
dGVCcmFuZFN0YXR1cyYgc3RhdHVzKQoreworICAgIGF1dG8gc3RhdHVzUHRyID0gbWFrZVVuaXF1
ZTxDaGVja1ByaXZhdGVCcmFuZFN0YXR1cz4oc3RhdHVzKTsKKyAgICBDaGVja1ByaXZhdGVCcmFu
ZFN0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdldCgpOworICAgIGNoZWNrUHJpdmF0ZUJyYW5k
cy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoY29kZU9yaWdpbiwgV1RGTW92ZShzdGF0dXNQdHIpKSk7
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworU2V0UHJpdmF0ZUJyYW5kU3RhdHVzKiBSZWNvcmRl
ZFN0YXR1c2VzOjphZGRTZXRQcml2YXRlQnJhbmRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29k
ZU9yaWdpbiwgY29uc3QgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzJiBzdGF0dXMpCit7CisgICAgYXV0
byBzdGF0dXNQdHIgPSBtYWtlVW5pcXVlPFNldFByaXZhdGVCcmFuZFN0YXR1cz4oc3RhdHVzKTsK
KyAgICBTZXRQcml2YXRlQnJhbmRTdGF0dXMqIHJlc3VsdCA9IHN0YXR1c1B0ci5nZXQoKTsKKyAg
ICBzZXRQcml2YXRlQnJhbmRzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihjb2RlT3JpZ2luLCBXVEZN
b3ZlKHN0YXR1c1B0cikpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB2b2lkIFJlY29yZGVk
U3RhdHVzZXM6OnZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9yJiBzbG90VmlzaXRvcikKIHsKICAg
ICBmb3IgKGF1dG8mIHBhaXIgOiBnZXRzKQogICAgICAgICBwYWlyLnNlY29uZC0+dmlzaXRBZ2dy
ZWdhdGUoc2xvdFZpc2l0b3IpOwogICAgIGZvciAoYXV0byYgcGFpciA6IGRlbGV0ZXMpCiAgICAg
ICAgIHBhaXIuc2Vjb25kLT52aXNpdEFnZ3JlZ2F0ZShzbG90VmlzaXRvcik7CisgICAgZm9yIChh
dXRvJiBwYWlyIDogY2hlY2tQcml2YXRlQnJhbmRzKQorICAgICAgICBwYWlyLnNlY29uZC0+dmlz
aXRBZ2dyZWdhdGUoc2xvdFZpc2l0b3IpOworICAgIGZvciAoYXV0byYgcGFpciA6IHNldFByaXZh
dGVCcmFuZHMpCisgICAgICAgIHBhaXIuc2Vjb25kLT52aXNpdEFnZ3JlZ2F0ZShzbG90VmlzaXRv
cik7CiB9CiAKIHZvaWQgUmVjb3JkZWRTdGF0dXNlczo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3Im
IHNsb3RWaXNpdG9yKQpAQCAtMTAyLDYgKzEyNCwxMCBAQCB2b2lkIFJlY29yZGVkU3RhdHVzZXM6
Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiBzbG90VmlzaXRvcikKICAgICAgICAgcGFpci5zZWNv
bmQtPm1hcmtJZkNoZWFwKHNsb3RWaXNpdG9yKTsKICAgICBmb3IgKGF1dG8mIHBhaXIgOiBkZWxl
dGVzKQogICAgICAgICBwYWlyLnNlY29uZC0+bWFya0lmQ2hlYXAoc2xvdFZpc2l0b3IpOworICAg
IGZvciAoYXV0byYgcGFpciA6IGNoZWNrUHJpdmF0ZUJyYW5kcykKKyAgICAgICAgcGFpci5zZWNv
bmQtPm1hcmtJZkNoZWFwKHNsb3RWaXNpdG9yKTsKKyAgICBmb3IgKGF1dG8mIHBhaXIgOiBzZXRQ
cml2YXRlQnJhbmRzKQorICAgICAgICBwYWlyLnNlY29uZC0+bWFya0lmQ2hlYXAoc2xvdFZpc2l0
b3IpOwogfQogCiB2b2lkIFJlY29yZGVkU3RhdHVzZXM6OmZpbmFsaXplV2l0aG91dERlbGV0aW5n
KFZNJiB2bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNv
cmRlZFN0YXR1c2VzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRT
dGF0dXNlcy5oCmluZGV4IDllNzA1NWQyNDNmMjRhYTZhZjVhYTA5MmFkMzAyZWYxNWE4ZDA1NzUu
LmU4NDNiNjY4MDFlMDExN2M5ZWYzNzliYjA4M2M0OTRkN2IxMTg1NzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuaApAQCAtMjYsMTAg
KzI2LDEyIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCisj
aW5jbHVkZSAiQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuaCIKICNpbmNsdWRlICJEZWxldGVCeVN0
YXR1cy5oIgogI2luY2x1ZGUgIkdldEJ5U3RhdHVzLmgiCiAjaW5jbHVkZSAiSW5CeUlkU3RhdHVz
LmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgorI2luY2x1ZGUgIlNldFByaXZhdGVCcmFu
ZFN0YXR1cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDksNiArNTEsOCBAQCBzdHJ1Y3Qg
UmVjb3JkZWRTdGF0dXNlcyB7CiAgICAgUHV0QnlJZFN0YXR1cyogYWRkUHV0QnlJZFN0YXR1cyhj
b25zdCBDb2RlT3JpZ2luJiwgY29uc3QgUHV0QnlJZFN0YXR1cyYpOwogICAgIEluQnlJZFN0YXR1
cyogYWRkSW5CeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mLCBjb25zdCBJbkJ5SWRTdGF0dXMm
KTsKICAgICBEZWxldGVCeVN0YXR1cyogYWRkRGVsZXRlQnlTdGF0dXMoY29uc3QgQ29kZU9yaWdp
biYsIGNvbnN0IERlbGV0ZUJ5U3RhdHVzJik7CisgICAgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMq
IGFkZENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mLCBjb25zdCBDaGVj
a1ByaXZhdGVCcmFuZFN0YXR1cyYpOworICAgIFNldFByaXZhdGVCcmFuZFN0YXR1cyogYWRkU2V0
UHJpdmF0ZUJyYW5kU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mLCBjb25zdCBTZXRQcml2YXRlQnJh
bmRTdGF0dXMmKTsKICAgICAKICAgICB2b2lkIHZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9yJik7
CiAgICAgdm9pZCBtYXJrSWZDaGVhcChTbG90VmlzaXRvciYpOwpAQCAtNjYsNiArNzAsOCBAQCBz
dHJ1Y3QgUmVjb3JkZWRTdGF0dXNlcyB7CiAgICAgICAgIGZ1bmMocHV0cyk7CiAgICAgICAgIGZ1
bmMoaW5zKTsKICAgICAgICAgZnVuYyhkZWxldGVzKTsKKyAgICAgICAgZnVuYyhjaGVja1ByaXZh
dGVCcmFuZHMpOworICAgICAgICBmdW5jKHNldFByaXZhdGVCcmFuZHMpOwogICAgIH0KICAgICAK
ICAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxDYWxsTGlu
a1N0YXR1cz4+PiBjYWxsczsKQEAgLTczLDYgKzc5LDggQEAgc3RydWN0IFJlY29yZGVkU3RhdHVz
ZXMgewogICAgIFZlY3RvcjxzdGQ6OnBhaXI8Q29kZU9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPFB1
dEJ5SWRTdGF0dXM+Pj4gcHV0czsKICAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0
ZDo6dW5pcXVlX3B0cjxJbkJ5SWRTdGF0dXM+Pj4gaW5zOwogICAgIFZlY3RvcjxzdGQ6OnBhaXI8
Q29kZU9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPERlbGV0ZUJ5U3RhdHVzPj4+IGRlbGV0ZXM7Cisg
ICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8Q2hlY2tQcml2
YXRlQnJhbmRTdGF0dXM+Pj4gY2hlY2tQcml2YXRlQnJhbmRzOworICAgIFZlY3RvcjxzdGQ6OnBh
aXI8Q29kZU9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPFNldFByaXZhdGVCcmFuZFN0YXR1cz4+PiBz
ZXRQcml2YXRlQnJhbmRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TZXRQcml2YXRlQnJhbmRTdGF0dXMuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmU2Y2Y3NGJlNTVlYzJkOGI5ZDJlODkzNmEyMTZiMzhhMzU5ZDhiNzYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2V0UHJpdmF0
ZUJyYW5kU3RhdHVzLmNwcApAQCAtMCwwICsxLDI3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgSWdhbGlhIFMuQS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNl
dFByaXZhdGVCcmFuZFN0YXR1cy5oIgorCisjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllcklu
bGluZXMuaCIKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJJQ1N0YXR1c1V0aWxz
LmgiCisjaW5jbHVkZSAiUG9seW1vcnBoaWNBY2Nlc3MuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVT
dHViSW5mby5oIgorI2luY2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgorCituYW1lc3BhY2UgSlNDIHsK
KworYm9vbCBTZXRQcml2YXRlQnJhbmRTdGF0dXM6OmFwcGVuZFZhcmlhbnQoY29uc3QgU2V0UHJp
dmF0ZUJyYW5kVmFyaWFudCYgdmFyaWFudCkKK3sKKyAgICByZXR1cm4gYXBwZW5kSUNTdGF0dXNW
YXJpYW50KG1fdmFyaWFudHMsIHZhcmlhbnQpOworfQorCitTZXRQcml2YXRlQnJhbmRTdGF0dXMg
U2V0UHJpdmF0ZUJyYW5kU3RhdHVzOjpjb21wdXRlRm9yQmFzZWxpbmUoQ29kZUJsb2NrKiBiYXNl
bGluZUJsb2NrLCBJQ1N0YXR1c01hcCYgbWFwLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgs
IEV4aXRGbGFnIGRpZEV4aXQpCit7CisgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihiYXNl
bGluZUJsb2NrLT5tX2xvY2spOworCisgICAgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzIHJlc3VsdDsK
KworI2lmIEVOQUJMRShERkdfSklUKQorICAgIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mb1dp
dGhvdXRFeGl0U2l0ZUZlZWRiYWNrKAorICAgICAgICBsb2NrZXIsIGJhc2VsaW5lQmxvY2ssIG1h
cC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUluZGV4KSkuc3R1YkluZm8pOworCisgICAgaWYgKGRp
ZEV4aXQpCisgICAgICAgIHJldHVybiByZXN1bHQuc2xvd1ZlcnNpb24oKTsKKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKG1hcCk7CisgICAgVU5VU0VEX1BBUkFNKGRpZEV4aXQpOworICAgIFVOVVNF
RF9QQVJBTShieXRlY29kZUluZGV4KTsKKyNlbmRpZgorCisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KworI2lmIEVOQUJMRShKSVQpCitTZXRQcml2YXRlQnJhbmRTdGF0dXM6OlNldFByaXZhdGVCcmFu
ZFN0YXR1cyhTdHViSW5mb1N1bW1hcnkgc3VtbWFyeSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJ
bmZvKQoreworICAgIHN3aXRjaCAoc3VtbWFyeSkgeworICAgIGNhc2UgU3R1YkluZm9TdW1tYXJ5
OjpOb0luZm9ybWF0aW9uOgorICAgICAgICBtX3N0YXRlID0gTm9JbmZvcm1hdGlvbjsKKyAgICAg
ICAgcmV0dXJuOworICAgIGNhc2UgU3R1YkluZm9TdW1tYXJ5OjpTaW1wbGU6CisgICAgY2FzZSBT
dHViSW5mb1N1bW1hcnk6Ok1ha2VzQ2FsbHM6CisgICAgY2FzZSBTdHViSW5mb1N1bW1hcnk6OlRh
a2VzU2xvd1BhdGhBbmRNYWtlc0NhbGxzOgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBTdHViSW5mb1N1bW1hcnk6OlRha2Vz
U2xvd1BhdGg6CisgICAgICAgIG1fc3RhdGUgPSBzdHViSW5mby50b29rU2xvd1BhdGggPyBPYnNl
cnZlZFRha2VzU2xvd1BhdGggOiBMaWtlbHlUYWtlc1Nsb3dQYXRoOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK1NldFByaXZh
dGVCcmFuZFN0YXR1cyBTZXRQcml2YXRlQnJhbmRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dp
dGhvdXRFeGl0U2l0ZUZlZWRiYWNrKAorICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENv
ZGVCbG9jayogYmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbykKK3sKKyAgICBTdHVi
SW5mb1N1bW1hcnkgc3VtbWFyeSA9IFN0cnVjdHVyZVN0dWJJbmZvOjpzdW1tYXJ5KGJsb2NrLT52
bSgpLCBzdHViSW5mbyk7CisgICAgaWYgKCFpc0lubGluZWFibGUoc3VtbWFyeSkpCisgICAgICAg
IHJldHVybiBTZXRQcml2YXRlQnJhbmRTdGF0dXMoc3VtbWFyeSwgKnN0dWJJbmZvKTsKKworICAg
IFNldFByaXZhdGVCcmFuZFN0YXR1cyByZXN1bHQ7CisgICAgcmVzdWx0Lm1fc3RhdGUgPSBTaW1w
bGU7CisgICAgc3dpdGNoIChzdHViSW5mby0+Y2FjaGVUeXBlKCkpIHsKKyAgICBjYXNlIENhY2hl
VHlwZTo6VW5zZXQ6CisgICAgICAgIHJldHVybiBTZXRQcml2YXRlQnJhbmRTdGF0dXMoTm9JbmZv
cm1hdGlvbik7CisKKyAgICBjYXNlIENhY2hlVHlwZTo6U3R1YjogeworICAgICAgICBQb2x5bW9y
cGhpY0FjY2VzcyogbGlzdCA9IHN0dWJJbmZvLT51LnN0dWI7CisKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBsaXN0SW5kZXggPSAwOyBsaXN0SW5kZXggPCBsaXN0LT5zaXplKCk7ICsrbGlzdEluZGV4
KSB7CisgICAgICAgICAgICBjb25zdCBBY2Nlc3NDYXNlJiBhY2Nlc3MgPSBsaXN0LT5hdChsaXN0
SW5kZXgpOworCisgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGFjY2Vzcy5zdHJ1
Y3R1cmUoKTsKKyAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUpOworICAgICAgICAgICAgQVNT
RVJUKGFjY2Vzcy50eXBlKCkgPT0gQWNjZXNzQ2FzZTo6U2V0UHJpdmF0ZUJyYW5kKTsKKworICAg
ICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OnNldEJyYW5kVHJh
bnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseShzdHJ1Y3R1cmUsIGFjY2Vz
cy5pZGVudGlmaWVyKCkudWlkKCkpOworICAgICAgICAgICAgaWYgKCFuZXdTdHJ1Y3R1cmUpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIFNldFByaXZhdGVCcmFuZFN0YXR1cyhKU0M6OnNsb3dWZXJz
aW9uKHN1bW1hcnkpLCAqc3R1YkluZm8pOworCisgICAgICAgICAgICBTZXRQcml2YXRlQnJhbmRW
YXJpYW50IHZhcmlhbnQoYWNjZXNzLmlkZW50aWZpZXIoKSwgc3RydWN0dXJlLCBuZXdTdHJ1Y3R1
cmUpOworICAgICAgICAgICAgaWYgKCFyZXN1bHQuYXBwZW5kVmFyaWFudCh2YXJpYW50KSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gU2V0UHJpdmF0ZUJyYW5kU3RhdHVzKEpTQzo6c2xvd1ZlcnNp
b24oc3VtbWFyeSksICpzdHViSW5mbyk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KKworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBTZXRQcml2YXRlQnJh
bmRTdGF0dXMoSlNDOjpzbG93VmVyc2lvbihzdW1tYXJ5KSwgKnN0dWJJbmZvKTsKKyAgICB9CisK
KyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBTZXRQcml2YXRl
QnJhbmRTdGF0dXMoKTsKK30KKworU2V0UHJpdmF0ZUJyYW5kU3RhdHVzIFNldFByaXZhdGVCcmFu
ZFN0YXR1czo6Y29tcHV0ZUZvcigKKyAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIElDU3Rh
dHVzTWFwJiBiYXNlbGluZU1hcCwKKyAgICBJQ1N0YXR1c0NvbnRleHRTdGFjayYgY29udGV4dFN0
YWNrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCit7CisgICAgQnl0ZWNvZGVJbmRleCBieXRlY29k
ZUluZGV4ID0gY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KCk7CisgICAgRXhpdEZsYWcgZGlkRXhp
dCA9IGhhc0JhZENhY2hlRXhpdFNpdGUoYmFzZWxpbmVCbG9jaywgYnl0ZWNvZGVJbmRleCk7CisK
KyAgICBmb3IgKElDU3RhdHVzQ29udGV4dCogY29udGV4dCA6IGNvbnRleHRTdGFjaykgeworICAg
ICAgICBJQ1N0YXR1cyBzdGF0dXMgPSBjb250ZXh0LT5nZXQoY29kZU9yaWdpbik7CisKKyAgICAg
ICAgYXV0byBibGVzcyA9IFsmXSAoY29uc3QgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzJiByZXN1bHQp
IC0+IFNldFByaXZhdGVCcmFuZFN0YXR1cyB7CisgICAgICAgICAgICBpZiAoIWNvbnRleHQtPmlz
SW5saW5lZChjb2RlT3JpZ2luKSkgeworICAgICAgICAgICAgICAgIFNldFByaXZhdGVCcmFuZFN0
YXR1cyBiYXNlbGluZVJlc3VsdCA9IGNvbXB1dGVGb3JCYXNlbGluZSgKKyAgICAgICAgICAgICAg
ICAgICAgYmFzZWxpbmVCbG9jaywgYmFzZWxpbmVNYXAsIGJ5dGVjb2RlSW5kZXgsIGRpZEV4aXQp
OworICAgICAgICAgICAgICAgIGJhc2VsaW5lUmVzdWx0Lm1lcmdlKHJlc3VsdCk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGJhc2VsaW5lUmVzdWx0OworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaWYgKGRpZEV4aXQuaXNTZXQoRXhpdEZyb21JbmxpbmVkKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0LnNsb3dWZXJzaW9uKCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgICAgICB9OworCisgICAgICAgIGlmIChzdGF0dXMuc3R1YkluZm8pIHsKKyAgICAgICAgICAg
IFNldFByaXZhdGVCcmFuZFN0YXR1cyByZXN1bHQ7CisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb250ZXh0LT5vcHRpbWl6ZWRDb2RlQmxv
Y2stPm1fbG9jayk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZv
V2l0aG91dEV4aXRTaXRlRmVlZGJhY2soCisgICAgICAgICAgICAgICAgICAgIGxvY2tlciwgY29u
dGV4dC0+b3B0aW1pemVkQ29kZUJsb2NrLCBzdGF0dXMuc3R1YkluZm8pOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKHJlc3VsdC5pc1NldCgpKQorICAgICAgICAgICAgICAgIHJldHVy
biBibGVzcyhyZXN1bHQpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGNvbXB1dGVG
b3JCYXNlbGluZShiYXNlbGluZUJsb2NrLCBiYXNlbGluZU1hcCwgYnl0ZWNvZGVJbmRleCwgZGlk
RXhpdCk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCitTZXRQcml2YXRlQnJhbmRTdGF0
dXMgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOjpzbG93VmVyc2lvbigpIGNvbnN0Cit7CisgICAgaWYg
KG9ic2VydmVkU2xvd1BhdGgoKSkKKyAgICAgICAgcmV0dXJuIFNldFByaXZhdGVCcmFuZFN0YXR1
cyhPYnNlcnZlZFRha2VzU2xvd1BhdGgpOworICAgIHJldHVybiBTZXRQcml2YXRlQnJhbmRTdGF0
dXMoTGlrZWx5VGFrZXNTbG93UGF0aCk7Cit9CisKK3ZvaWQgU2V0UHJpdmF0ZUJyYW5kU3RhdHVz
OjptZXJnZShjb25zdCBTZXRQcml2YXRlQnJhbmRTdGF0dXMmIG90aGVyKQoreworICAgIGlmIChv
dGhlci5tX3N0YXRlID09IE5vSW5mb3JtYXRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGF1
dG8gbWVyZ2VTbG93ID0gWyZdICgpIHsKKyAgICAgICAgaWYgKG9ic2VydmVkU2xvd1BhdGgoKSB8
fCBvdGhlci5vYnNlcnZlZFNsb3dQYXRoKCkpCisgICAgICAgICAgICAqdGhpcyA9IFNldFByaXZh
dGVCcmFuZFN0YXR1cyhPYnNlcnZlZFRha2VzU2xvd1BhdGgpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICAqdGhpcyA9IFNldFByaXZhdGVCcmFuZFN0YXR1cyhMaWtlbHlUYWtlc1Nsb3dQYXRo
KTsKKyAgICB9OworCisgICAgc3dpdGNoIChtX3N0YXRlKSB7CisgICAgY2FzZSBOb0luZm9ybWF0
aW9uOgorICAgICAgICAqdGhpcyA9IG90aGVyOworICAgICAgICByZXR1cm47CisKKyAgICBjYXNl
IFNpbXBsZToKKyAgICAgICAgaWYgKG1fc3RhdGUgIT0gb3RoZXIubV9zdGF0ZSkKKyAgICAgICAg
ICAgIHJldHVybiBtZXJnZVNsb3coKTsKKworICAgICAgICBmb3IgKGF1dG8mIG90aGVyVmFyaWFu
dCA6IG90aGVyLm1fdmFyaWFudHMpIHsKKyAgICAgICAgICAgIGlmICghYXBwZW5kVmFyaWFudChv
dGhlclZhcmlhbnQpKQorICAgICAgICAgICAgICAgIHJldHVybiBtZXJnZVNsb3coKTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIExpa2VseVRha2VzU2xvd1BhdGg6Cisg
ICAgY2FzZSBPYnNlcnZlZFRha2VzU2xvd1BhdGg6CisgICAgICAgIHJldHVybiBtZXJnZVNsb3co
KTsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lk
IFNldFByaXZhdGVCcmFuZFN0YXR1czo6ZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0
dXJlU2V0KQoreworICAgIGlmIChtX3N0YXRlICE9IFNpbXBsZSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIG1fdmFyaWFudHMucmVtb3ZlQWxsTWF0Y2hpbmcoCisgICAgICAgIFsmXSAoYXV0byYgdmFy
aWFudCkgLT4gYm9vbCB7CisgICAgICAgICAgICByZXR1cm4gIXN0cnVjdHVyZVNldC5jb250YWlu
cyh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKTsKKyAgICAgICAgfSk7CisgICAgaWYgKG1fdmFyaWFu
dHMuaXNFbXB0eSgpKQorICAgICAgICBtX3N0YXRlID0gTm9JbmZvcm1hdGlvbjsKK30KKworQ2Fj
aGVhYmxlSWRlbnRpZmllciBTZXRQcml2YXRlQnJhbmRTdGF0dXM6OnNpbmdsZUlkZW50aWZpZXIo
KSBjb25zdAoreworICAgIGlmIChtX3ZhcmlhbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIHJlc3VsdCA9IG1fdmFyaWFudHMu
Zmlyc3QoKS5pZGVudGlmaWVyKCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgbV92YXJpYW50cy5zaXplKCk7ICsr
aSkgeworICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBtX3ZhcmlhbnRz
W2ldLmlkZW50aWZpZXIoKTsKKyAgICAgICAgaWYgKCFpZGVudGlmaWVyKQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIGlmIChpZGVudGlmaWVyICE9IHJlc3VsdCkKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2
b2lkIFNldFByaXZhdGVCcmFuZFN0YXR1czo6dmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCit7CisgICAgZm9yIChTZXRQcml2YXRlQnJhbmRWYXJpYW50JiB2YXJpYW50IDogbV92
YXJpYW50cykKKyAgICAgICAgdmFyaWFudC52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKK30KKwor
dm9pZCBTZXRQcml2YXRlQnJhbmRTdGF0dXM6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQoreworICAgIGZvciAoU2V0UHJpdmF0ZUJyYW5kVmFyaWFudCYgdmFyaWFudCA6IG1fdmFy
aWFudHMpCisgICAgICAgIHZhcmlhbnQubWFya0lmQ2hlYXAodmlzaXRvcik7Cit9CisKK2Jvb2wg
U2V0UHJpdmF0ZUJyYW5kU3RhdHVzOjpmaW5hbGl6ZShWTSYgdm0pCit7CisgICAgZm9yIChhdXRv
JiB2YXJpYW50IDogbV92YXJpYW50cykgeworICAgICAgICBpZiAoIXZhcmlhbnQuZmluYWxpemUo
dm0pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwordm9pZCBTZXRQcml2YXRlQnJhbmRTdGF0dXM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkg
Y29uc3QKK3sKKyAgICBvdXQucHJpbnQoIigiKTsKKyAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKKyAg
ICBjYXNlIE5vSW5mb3JtYXRpb246CisgICAgICAgIG91dC5wcmludCgiTm9JbmZvcm1hdGlvbiIp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNpbXBsZToKKyAgICAgICAgb3V0LnByaW50KCJT
aW1wbGUiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMaWtlbHlUYWtlc1Nsb3dQYXRoOgor
ICAgICAgICBvdXQucHJpbnQoIkxpa2VseVRha2VzU2xvd1BhdGgiKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBPYnNlcnZlZFRha2VzU2xvd1BhdGg6CisgICAgICAgIG91dC5wcmludCgiT2Jz
ZXJ2ZWRUYWtlc1Nsb3dQYXRoIik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBvdXQucHJp
bnQoIiwgIiwgbGlzdER1bXAobV92YXJpYW50cyksICIpIik7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NldFByaXZh
dGVCcmFuZFN0YXR1cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NldFByaXZh
dGVCcmFuZFN0YXR1cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlMTI4MmYyNGVkMGI5NDdkMWU4NjNkZDYxMzBh
ODE0NGJhNGQ1MzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmgKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJDb2RlT3JpZ2luLmgi
CisjaW5jbHVkZSAiQ29uY3VycmVudEpTTG9jay5oIgorI2luY2x1ZGUgIkV4aXRGbGFnLmgiCisj
aW5jbHVkZSAiSUNTdGF0dXNNYXAuaCIKKyNpbmNsdWRlICJTZXRQcml2YXRlQnJhbmRWYXJpYW50
LmgiCisjaW5jbHVkZSAiU3R1YkluZm9TdW1tYXJ5LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBBY2Nlc3NDYXNlOworY2xhc3MgQ29kZUJsb2NrOworY2xhc3MgU3RydWN0dXJlU3R1Yklu
Zm87CisKK2NsYXNzIFNldFByaXZhdGVCcmFuZFN0YXR1cyBmaW5hbCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZW51bSBTdGF0ZSA6IHVpbnQ4X3QgeworICAg
ICAgICAvLyBJdCdzIHVuY2FjaGVkIHNvIHdlIGhhdmUgbm8gaW5mb3JtYXRpb24uCisgICAgICAg
IE5vSW5mb3JtYXRpb24sCisgICAgICAgIC8vIEl0J3MgY2FjaGVkIGZvciBhIHNpbXBsZSBhY2Nl
c3MuCisgICAgICAgIFNpbXBsZSwKKyAgICAgICAgLy8gSXQgd2lsbCBsaWtlbHkgdGFrZSB0aGUg
c2xvdyBwYXRoLgorICAgICAgICBMaWtlbHlUYWtlc1Nsb3dQYXRoLAorICAgICAgICAvLyBJdCBo
YXMgYmVlbiBzZWVuIHRvIHRha2UgdGhlIHNsb3cgcGF0aC4KKyAgICAgICAgT2JzZXJ2ZWRUYWtl
c1Nsb3dQYXRoLAorICAgIH07CisKKyAgICBTZXRQcml2YXRlQnJhbmRTdGF0dXMoKQorICAgICAg
ICA6IG1fc3RhdGUoTm9JbmZvcm1hdGlvbikKKyAgICB7CisgICAgfQorCisgICAgZXhwbGljaXQg
U2V0UHJpdmF0ZUJyYW5kU3RhdHVzKFN0YXRlIHN0YXRlKQorICAgICAgICA6IG1fc3RhdGUoc3Rh
dGUpCisgICAgeworICAgICAgICBBU1NFUlQoc3RhdGUgIT0gU2ltcGxlKTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNl
bGluZUJsb2NrLCBJQ1N0YXR1c01hcCYgYmFzZWxpbmVNYXAsIElDU3RhdHVzQ29udGV4dFN0YWNr
JiBkZmdDb250ZXh0U3RhY2ssIENvZGVPcmlnaW4pOworCisgICAgU3RhdGUgc3RhdGUoKSBjb25z
dCB7IHJldHVybiBtX3N0YXRlOyB9CisKKyAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4g
bV9zdGF0ZSAhPSBOb0luZm9ybWF0aW9uOyB9CisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7
IHJldHVybiAhaXNTZXQoKTsgfQorICAgIGJvb2wgb2JzZXJ2ZWRTbG93UGF0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGUgPT0gT2JzZXJ2ZWRUYWtlc1Nsb3dQYXRoOyB9CisgICAgYm9vbCBpc1Np
bXBsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gU2ltcGxlOyB9CisgICAgY29uc3QgVmVj
dG9yPFNldFByaXZhdGVCcmFuZFZhcmlhbnQsIDE+JiB2YXJpYW50cygpIHsgcmV0dXJuIG1fdmFy
aWFudHM7IH0KKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIHNpbmdsZUlkZW50aWZpZXIoKSBjb25z
dDsKKworICAgIFNldFByaXZhdGVCcmFuZFN0YXR1cyBzbG93VmVyc2lvbigpIGNvbnN0OworCisg
ICAgLy8gQXR0ZW1wdHMgdG8gcmVkdWNlIHRoZSBzZXQgb2YgdmFyaWFudHMgdG8gZml0IHRoZSBn
aXZlbiBzdHJ1Y3R1cmUgc2V0LiBUaGlzIG1heSBiZSBhcHByb3hpbWF0ZS4KKyAgICB2b2lkIGZp
bHRlcihjb25zdCBTdHJ1Y3R1cmVTZXQmKTsKKworICAgIHZvaWQgdmlzaXRBZ2dyZWdhdGUoU2xv
dFZpc2l0b3ImKTsKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7CisgICAgYm9v
bCBmaW5hbGl6ZShWTSYpOworCisgICAgYm9vbCBhcHBlbmRWYXJpYW50KGNvbnN0IFNldFByaXZh
dGVCcmFuZFZhcmlhbnQmKTsKKworICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0Owor
Citwcml2YXRlOgorICAgIGV4cGxpY2l0IFNldFByaXZhdGVCcmFuZFN0YXR1cyhTdHViSW5mb1N1
bW1hcnksIFN0cnVjdHVyZVN0dWJJbmZvJik7CisgICAgdm9pZCBtZXJnZShjb25zdCBTZXRQcml2
YXRlQnJhbmRTdGF0dXMmKTsKKworICAgIHN0YXRpYyBTZXRQcml2YXRlQnJhbmRTdGF0dXMgY29t
cHV0ZUZvckJhc2VsaW5lKENvZGVCbG9jayosIElDU3RhdHVzTWFwJiwgQnl0ZWNvZGVJbmRleCwg
RXhpdEZsYWcpOworI2lmIEVOQUJMRShKSVQpCisgICAgc3RhdGljIFNldFByaXZhdGVCcmFuZFN0
YXR1cyBjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjaygKKyAgICAgICAg
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBTdHJ1
Y3R1cmVTdHViSW5mbyopOworI2VuZGlmCisKKyAgICBWZWN0b3I8U2V0UHJpdmF0ZUJyYW5kVmFy
aWFudCwgMT4gbV92YXJpYW50czsKKyAgICBTdGF0ZSBtX3N0YXRlOworfTsKKworfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2V0
UHJpdmF0ZUJyYW5kVmFyaWFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U2V0UHJpdmF0ZUJyYW5kVmFyaWFudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGRkZGU4YTI5MTNiNmVlNDg2
YjY4YWNiZjQwYTA0NzdmOTkwYmRhZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TZXRQcml2YXRlQnJhbmRWYXJpYW50LmNwcApAQCAtMCwwICsxLDEw
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuQS4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNldFByaXZhdGVCcmFuZFZhcmlhbnQuaCIKKworI2lu
Y2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0Mgewor
CitTZXRQcml2YXRlQnJhbmRWYXJpYW50OjpTZXRQcml2YXRlQnJhbmRWYXJpYW50KENhY2hlYWJs
ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVy
ZSogbmV3U3RydWN0dXJlKQorICAgIDogbV9vbGRTdHJ1Y3R1cmUob2xkU3RydWN0dXJlKQorICAg
ICwgbV9uZXdTdHJ1Y3R1cmUobmV3U3RydWN0dXJlKQorICAgICwgbV9pZGVudGlmaWVyKFdURk1v
dmUoaWRlbnRpZmllcikpCit7IH0KKworU2V0UHJpdmF0ZUJyYW5kVmFyaWFudDo6flNldFByaXZh
dGVCcmFuZFZhcmlhbnQoKSB7IH0KKworU2V0UHJpdmF0ZUJyYW5kVmFyaWFudDo6U2V0UHJpdmF0
ZUJyYW5kVmFyaWFudChjb25zdCBTZXRQcml2YXRlQnJhbmRWYXJpYW50JiBvdGhlcikKK3sKKyAg
ICAqdGhpcyA9IG90aGVyOworfQorCitib29sIFNldFByaXZhdGVCcmFuZFZhcmlhbnQ6OmF0dGVt
cHRUb01lcmdlKGNvbnN0IFNldFByaXZhdGVCcmFuZFZhcmlhbnQmIG90aGVyKQoreworICAgIGlm
ICghIW1faWRlbnRpZmllciAhPSAhIW90aGVyLm1faWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgaWYgKG1faWRlbnRpZmllciAmJiAobV9pZGVudGlmaWVyICE9IG90aGVy
Lm1faWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX29sZFN0
cnVjdHVyZSAhPSBvdGhlci5tX29sZFN0cnVjdHVyZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIEFTU0VSVChtX25ld1N0cnVjdHVyZSA9PSBvdGhlci5tX25ld1N0cnVjdHVyZSk7CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBTZXRQcml2YXRlQnJhbmRWYXJpYW50OjptYXJrSWZD
aGVhcChTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBpZiAobV9vbGRTdHJ1Y3R1cmUpCisg
ICAgICAgIG1fb2xkU3RydWN0dXJlLT5tYXJrSWZDaGVhcCh2aXNpdG9yKTsKKyAgICBpZiAobV9u
ZXdTdHJ1Y3R1cmUpCisgICAgICAgIG1fbmV3U3RydWN0dXJlLT5tYXJrSWZDaGVhcCh2aXNpdG9y
KTsKK30KKworYm9vbCBTZXRQcml2YXRlQnJhbmRWYXJpYW50OjpmaW5hbGl6ZShWTSYgdm0pCit7
CisgICAgaWYgKCF2bS5oZWFwLmlzTWFya2VkKG1fb2xkU3RydWN0dXJlKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmIChtX25ld1N0cnVjdHVyZSAmJiAhdm0uaGVhcC5pc01hcmtlZCht
X25ld1N0cnVjdHVyZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwordm9pZCBTZXRQcml2YXRlQnJhbmRWYXJpYW50Ojp2aXNpdEFnZ3JlZ2F0ZShTbG90Vmlz
aXRvciYgdmlzaXRvcikKK3sKKyAgICBtX2lkZW50aWZpZXIudmlzaXRBZ2dyZWdhdGUodmlzaXRv
cik7Cit9CisKK3ZvaWQgU2V0UHJpdmF0ZUJyYW5kVmFyaWFudDo6ZHVtcChQcmludFN0cmVhbSYg
b3V0KSBjb25zdAoreworICAgIGR1bXBJbkNvbnRleHQob3V0LCBudWxscHRyKTsKK30KKwordm9p
ZCBTZXRQcml2YXRlQnJhbmRWYXJpYW50OjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQs
IER1bXBDb250ZXh0KikgY29uc3QKK3sKKyAgICBvdXQucHJpbnQoIjwiKTsKKyAgICBvdXQucHJp
bnQoImlkPSciLCBtX2lkZW50aWZpZXIsICInIik7CisgICAgaWYgKG1fb2xkU3RydWN0dXJlKQor
ICAgICAgICBvdXQucHJpbnQoIiwgIiwgKm1fb2xkU3RydWN0dXJlKTsKKyAgICBpZiAobV9uZXdT
dHJ1Y3R1cmUpCisgICAgICAgIG91dC5wcmludCgiIC0+ICIsICptX25ld1N0cnVjdHVyZSk7Cisg
ICAgb3V0LnByaW50KCI+Iik7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NldFByaXZhdGVCcmFuZFZhcmlhbnQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TZXRQcml2YXRlQnJhbmRWYXJpYW50LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjg1ZTRhMGUwMWFmZDRkYmEwZThjNmU2NDY3MjQ0YjBmMzZhMGIzYQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TZXRQcml2YXRl
QnJhbmRWYXJpYW50LmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
SWdhbGlhIFMuQS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDYWNoZWFibGVJ
ZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8d3RmL0JveC5oPgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y2xhc3MgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOworCitjbGFzcyBTZXRQcml2YXRlQnJhbmRWYXJp
YW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBTZXRQcml2
YXRlQnJhbmRWYXJpYW50KENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZSogb2xkU3RydWN0
dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSk7CisKKyAgICB+U2V0UHJpdmF0ZUJyYW5kVmFy
aWFudCgpOworCisgICAgU2V0UHJpdmF0ZUJyYW5kVmFyaWFudChjb25zdCBTZXRQcml2YXRlQnJh
bmRWYXJpYW50Jik7CisKKyAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0
dXJuIG1fb2xkU3RydWN0dXJlOyB9CisgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX25ld1N0cnVjdHVyZTsgfQorCisgICAgYm9vbCBhdHRlbXB0VG9NZXJnZShj
b25zdCBTZXRQcml2YXRlQnJhbmRWYXJpYW50JiBvdGhlcik7CisKKyAgICB2b2lkIHZpc2l0QWdn
cmVnYXRlKFNsb3RWaXNpdG9yJik7CisgICAgdm9pZCBtYXJrSWZDaGVhcChTbG90VmlzaXRvciYp
OworICAgIGJvb2wgZmluYWxpemUoVk0mKTsKKworICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYp
IGNvbnN0OworICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0
KikgY29uc3Q7CisKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKworICAgIGJvb2wgb3ZlcmxhcHMoY29uc3QgU2V0UHJp
dmF0ZUJyYW5kVmFyaWFudCYgb3RoZXIpCisgICAgeworICAgICAgICBpZiAoISFtX2lkZW50aWZp
ZXIgIT0gISFvdGhlci5tX2lkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgaWYgKG1faWRlbnRpZmllcikgeworICAgICAgICAgICAgaWYgKG1faWRlbnRpZmllciAh
PSBvdGhlci5tX2lkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiBtX29sZFN0cnVjdHVyZSA9PSBvdGhlci5tX29sZFN0cnVj
dHVyZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFNldFByaXZhdGVCcmFu
ZFN0YXR1czsKKworICAgIFN0cnVjdHVyZSogbV9vbGRTdHJ1Y3R1cmU7CisgICAgU3RydWN0dXJl
KiBtX25ld1N0cnVjdHVyZTsKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsK
K307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKaW5kZXggNTI2ZmRhYmJhNTRkOTI3NGIz
ZDViODJiODdjZjhmMDgxMzhhNjQ5Ni4uMjY2ZDdkODU3NjQ2YjM4ODVlZjg3NDNhODkzMDEyYTQ0
NDVhOTFhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVj
dHVyZVN0dWJJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Ry
dWN0dXJlU3R1YkluZm8uY3BwCkBAIC0yODQsNiArMjg0LDEyIEBAIHZvaWQgU3RydWN0dXJlU3R1
YkluZm86OnJlc2V0KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmIGxvY2tlciwgQ29kZUJs
b2NrKiBjCiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpEZWxldGVCeVZhbDoKICAgICAgICAgcmVzZXRE
ZWxCeShjb2RlQmxvY2ssICp0aGlzLCBEZWxCeUtpbmQ6Ok5vcm1hbEJ5VmFsKTsKICAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZDoKKyAgICAgICAg
cmVzZXRDaGVja1ByaXZhdGVCcmFuZChjb2RlQmxvY2ssICp0aGlzKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpTZXRQcml2YXRlQnJhbmQ6CisgICAgICAgIHJlc2V0U2V0
UHJpdmF0ZUJyYW5kKGNvZGVCbG9jaywgKnRoaXMpOworICAgICAgICBicmVhazsKICAgICB9CiAg
ICAgCiAgICAgZGVyZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmgKaW5kZXggODlkZjRkN2IxMjhjY2JjMDQ5NmQxNWVkZDYyNjZj
ZmU3ZDIyOGNkMi4uYzViYjk1ZTBjMzc3YjdjOWI5NGQzOGM1YjQ0ODFhZTI5YmJhYzJlMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZv
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZv
LmgKQEAgLTU5LDYgKzU5LDggQEAgZW51bSBjbGFzcyBBY2Nlc3NUeXBlIDogaW50OF90IHsKICAg
ICBEZWxldGVCeUlELAogICAgIERlbGV0ZUJ5VmFsLAogICAgIEdldFByaXZhdGVOYW1lLAorICAg
IENoZWNrUHJpdmF0ZUJyYW5kLAorICAgIFNldFByaXZhdGVCcmFuZCwKIH07CiAKIGVudW0gY2xh
c3MgQ2FjaGVUeXBlIDogaW50OF90IHsKQEAgLTM1Miw2ICszNTQsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIEdQUlJlZyB0aGlzR1BSOwogICAgICAgICBHUFJSZWcgcHJvdG90eXBlR1BSOwogICAgICAg
ICBHUFJSZWcgcHJvcGVydHlHUFI7CisgICAgICAgIEdQUlJlZyBicmFuZEdQUjsKICAgICB9IHJl
Z3M7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBHUFJSZWcgdmFsdWVUYWdHUFI7CkBAIC0z
NjEsNiArMzY0LDcgQEAgcHVibGljOgogICAgIHVuaW9uIHsKICAgICAgICAgR1BSUmVnIHRoaXNU
YWdHUFI7CiAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eVRhZ0dQUjsKKyAgICAgICAgR1BSUmVnIGJy
YW5kVGFnR1BSOwogICAgIH0gdjsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCBiM2FkYzBiNzdlYjdj
NzI0MTg2YTk4MWM2MzUzYzMxOWE1OTliMGUwLi45M2RmZjc3NDJkMzc0ZWVjM2VmYTJkZTA3NGUy
ODQ4MWY5Njk2MTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTY5LDYgKzY5LDEwIEBAIFVubGlua2VkQ29kZUJs
b2NrOjpVbmxpbmtlZENvZGVCbG9jayhWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDb2Rl
VHlwZSBjb2RlCiAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoaG9sZExvY2soY2Vs
bExvY2soKSkpOwogICAgICAgICBtX3JhcmVEYXRhLT5tX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpZ
ZXMpOwogICAgIH0KKyAgICBpZiAoaW5mby5wcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpID09IFBy
aXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOZWVkZWQpIHsKKyAgICAgICAgY3JlYXRlUmFyZURhdGFJ
Zk5lY2Vzc2FyeShob2xkTG9jayhjZWxsTG9jaygpKSk7CisgICAgICAgIG1fcmFyZURhdGEtPm1f
cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQ6Ok5lZWRlZCk7CisgICAgfQogfQogCiB2b2lkIFVubGlua2VkQ29kZUJs
b2NrOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5o
CmluZGV4IDAwZGM2MTYzMzVmZDMxYjA0MzI1MWUzNDQwMGU1N2RlZjUzMTVkNWYuLjFmNTFlY2U1
ZDZmODZkNzA5NTExYjRhNGMxODJjNjRjYmZhMTgzYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC0yNjYsNiArMjY2LDEz
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpO
bzsKICAgICB9CiAKKyAgICBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1
aXJlbWVudCgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9yYXJlRGF0YSkKKyAgICAgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxQcml2YXRlQnJhbmRSZXF1aXJlbWVudD4obV9yYXJlRGF0
YS0+bV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7CisgICAgICAgIHJldHVybiBQcml2YXRlQnJh
bmRSZXF1aXJlbWVudDo6Tm9uZTsKKyAgICB9CisKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0m
KSBjb25zdDsKIAogICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyYgbGl2ZW5lc3NBbmFseXNp
cyhDb2RlQmxvY2sqIGNvZGVCbG9jaykKQEAgLTQwNyw2ICs0MTQsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIFJlZkNvdW50ZWRBcnJheTxDb25zdGFudElkZW50aWZpZXJTZXRFbnRyeT4gbV9jb25zdGFu
dElkZW50aWZpZXJTZXRzOwogCiAgICAgICAgIHVuc2lnbmVkIG1fbmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIgOiAxOworICAgICAgICB1bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50
IDogMTsKICAgICB9OwogCiAgICAgaW50IG91dE9mTGluZUp1bXBPZmZzZXQoSW5zdHJ1Y3Rpb25T
dHJlYW06Ok9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5oCmluZGV4IDJlYjk4NGMxYjA1YTQ1
ZTBhYTUyMGUxZmQzNzhhZDllMmZjOTMyMjIuLjk0YzY4NzBlOTk0YzJiZjVjOTgyY2U5NTJlNGM1
MzRiZGM5NmI0ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5oCkBAIC01MCw2ICs1MCw3IEBAIHB1
YmxpYzoKICAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9j
b2RlQmxvY2stPnN1cGVyQmluZGluZygpOyB9CiAgICAgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlw
dE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+c2NyaXB0TW9kZSgpOyB9CiAgICAg
TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSBj
b25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKTsg
fQorICAgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCk7IH0K
ICAgICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnVzZXNFdmFs
KCk7IH0KICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9j
b2RlQmxvY2stPnBhcnNlTW9kZSgpOyB9CiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSB7IHJl
dHVybiBtX2NvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9uKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUuY3BwCmluZGV4IDdlY2I0ZmM3NTlhZDBmMTEzODliNjY2OTQzZjA1N2RmM2IzZGQ3MWUuLjgw
NWRmODBhZDUyNjk2ZGUyNGExMDJiYWU4YzM0ODRkNzVhZmM5NmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlLmNwcApAQCAtNzAsMTEgKzcwLDEyIEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAKICAgICBib29sIGlz
Q2xhc3NDb250ZXh0ID0gZXhlY3V0YWJsZS0+c3VwZXJCaW5kaW5nKCkgPT0gU3VwZXJCaW5kaW5n
OjpOZWVkZWQgfHwgZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpD
bGFzc0ZpZWxkSW5pdGlhbGl6ZXJNb2RlOwogCi0gICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
ayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKHZtLCBGdW5jdGlv
bkNvZGUsIEV4ZWN1dGFibGVJbmZvKGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBraW5kID09IENvZGVG
b3JDb25zdHJ1Y3QsIGZ1bmN0aW9uS2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwgZXhl
Y3V0YWJsZS0+Y29uc3RydWN0b3JLaW5kKCksIHNjcmlwdE1vZGUsIGV4ZWN1dGFibGUtPnN1cGVy
QmluZGluZygpLCBwYXJzZU1vZGUsIGV4ZWN1dGFibGUtPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBl
eGVjdXRhYmxlLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBmYWxzZSwgaXNDbGFzc0Nv
bnRleHQsIEV2YWxDb250ZXh0VHlwZTo6RnVuY3Rpb25FdmFsQ29udGV4dCksIGNvZGVHZW5lcmF0
aW9uTW9kZSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5r
ZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKHZtLCBGdW5jdGlvbkNvZGUsIEV4ZWN1dGFibGVJ
bmZvKGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGV4ZWN1
dGFibGUtPnByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCksIGZ1bmN0aW9uS2luZCA9PSBVbmxpbmtl
ZEJ1aWx0aW5GdW5jdGlvbiwgZXhlY3V0YWJsZS0+Y29uc3RydWN0b3JLaW5kKCksIHNjcmlwdE1v
ZGUsIGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpLCBwYXJzZU1vZGUsIGV4ZWN1dGFibGUtPmRl
cml2ZWRDb250ZXh0VHlwZSgpLCBleGVjdXRhYmxlLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
cigpLCBmYWxzZSwgaXNDbGFzc0NvbnRleHQsIEV2YWxDb250ZXh0VHlwZTo6RnVuY3Rpb25FdmFs
Q29udGV4dCksIGNvZGVHZW5lcmF0aW9uTW9kZSk7CiAKICAgICBhdXRvIHBhcmVudFNjb3BlVERa
VmFyaWFibGVzID0gZXhlY3V0YWJsZS0+cGFyZW50U2NvcGVURFpWYXJpYWJsZXMoKTsKKyAgICBQ
cml2YXRlTmFtZUVudmlyb25tZW50IHBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQgPSBleGVj
dXRhYmxlLT5wYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50KCk7CiAgICAgRUNNQU1vZGUgZWNt
YU1vZGUgPSBleGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpID8gRUNNQU1vZGU6OnN0cmlj
dCgpIDogRUNNQU1vZGU6OnNsb3BweSgpOwotICAgIGVycm9yID0gQnl0ZWNvZGVHZW5lcmF0b3I6
OmdlbmVyYXRlKHZtLCBmdW5jdGlvbi5nZXQoKSwgc291cmNlLCByZXN1bHQsIGNvZGVHZW5lcmF0
aW9uTW9kZSwgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIGVjbWFNb2RlKTsKKyAgICBlcnJvciA9
IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSh2bSwgZnVuY3Rpb24uZ2V0KCksIHNvdXJjZSwg
cmVzdWx0LCBjb2RlR2VuZXJhdGlvbk1vZGUsIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCAmcGFy
ZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgZWNtYU1vZGUpOwogCiAgICAgaWYgKGVycm9yLmlz
VmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC04Miw3ICs4Myw3IEBAIHN0YXRp
YyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2Rl
QmxvY2soCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHBhcmVudFNvdXJjZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUq
IG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGtpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3Ry
dWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIFJlZlB0cjxURFpFbnZp
cm9ubWVudExpbms+IHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBEZXJpdmVkQ29udGV4dFR5cGUg
ZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplciwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvcikK
K1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBwYXJlbnRTb3Vy
Y2UsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBraW5k
LCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZSBz
Y3JpcHRNb2RlLCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiBwYXJlbnRTY29wZVREWlZhcmlh
YmxlcywgT3B0aW9uYWw8UHJpdmF0ZU5hbWVFbnZpcm9ubWVudD4gcGFyZW50UHJpdmF0ZU5hbWVF
bnZpcm9ubWVudCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVC
cmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29sIGlzQnVpbHRpbkRl
ZmF1bHRDbGFzc0NvbnN0cnVjdG9yKQogICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQogICAgICwg
bV9maXJzdExpbmVPZmZzZXQobm9kZS0+Zmlyc3RMaW5lKCkgLSBwYXJlbnRTb3VyY2UuZmlyc3RM
aW5lKCkub25lQmFzZWRJbnQoKSkKICAgICAsIG1faXNJblN0cmljdENvbnRleHQobm9kZS0+aXNJ
blN0cmljdENvbnRleHQoKSkKQEAgLTEwMyw2ICsxMDQsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdAogICAgICwgbV90eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQobm9kZS0+ZnVuY3Rpb25LZXl3
b3JkU3RhcnQoKSkKICAgICAsIG1fdHlwZVByb2ZpbGluZ0VuZE9mZnNldChub2RlLT5zdGFydFN0
YXJ0T2Zmc2V0KCkgKyBub2RlLT5zb3VyY2UoKS5sZW5ndGgoKSAtIDEpCiAgICAgLCBtX3BhcmFt
ZXRlckNvdW50KG5vZGUtPnBhcmFtZXRlckNvdW50KCkpCisgICAgLCBtX3ByaXZhdGVCcmFuZFJl
cXVpcmVtZW50KHN0YXRpY19jYXN0PHVuc2lnbmVkPihwcml2YXRlQnJhbmRSZXF1aXJlbWVudCkp
CiAgICAgLCBtX2ZlYXR1cmVzKDApCiAgICAgLCBtX3NvdXJjZVBhcnNlTW9kZShub2RlLT5wYXJz
ZU1vZGUoKSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihu
b2RlLT5jb25zdHJ1Y3RvcktpbmQoKSkpCkBAIC0xMjIsMTIgKzEyNCwxNSBAQCBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdAogICAgIEFTU0VSVChtX3NjcmlwdE1vZGUgPT0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHNjcmlwdE1vZGUpKTsKICAgICBBU1NFUlQobV9zdXBlckJpbmRpbmcgPT0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPnN1cGVyQmluZGluZygpKSk7CiAgICAgQVNTRVJUKG1fZGVy
aXZlZENvbnRleHRUeXBlID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXJpdmVkQ29udGV4dFR5
cGUpKTsKKyAgICBBU1NFUlQobV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9PSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4ocHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpKTsKICAgICBBU1NFUlQoIShtX2lz
QnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yICYmIGNvbnN0cnVjdG9yS2luZCgpID09IENv
bnN0cnVjdG9yS2luZDo6Tm9uZSkpOwogICAgIEFTU0VSVCghbV9uZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplciB8fCAoaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKSB8fCBkZXJpdmVkQ29udGV4
dFR5cGUgPT0gRGVyaXZlZENvbnRleHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KSk7
CiAgICAgaWYgKCFub2RlLT5jbGFzc1NvdXJjZSgpLmlzTnVsbCgpKQogICAgICAgICBzZXRDbGFz
c1NvdXJjZShub2RlLT5jbGFzc1NvdXJjZSgpKTsKICAgICBpZiAocGFyZW50U2NvcGVURFpWYXJp
YWJsZXMpCiAgICAgICAgIGVuc3VyZVJhcmVEYXRhKCkubV9wYXJlbnRTY29wZVREWlZhcmlhYmxl
cyA9IFdURk1vdmUocGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOworICAgIGlmIChwYXJlbnRQcml2
YXRlTmFtZUVudmlyb25tZW50KQorICAgICAgICBlbnN1cmVSYXJlRGF0YSgpLm1fcGFyZW50UHJp
dmF0ZU5hbWVFbnZpcm9ubWVudCA9IFdURk1vdmUoKnBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1l
bnQpOwogfQogCiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6flVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKaW5kZXggYmVhZjFlNWQ1YmU4ZjExYmVm
ZjNlZDNiMWI4MDc5NTljNDYyN2FiNy4uZmI3ZGJhOWVmYjRhYTA0ZGFkMzZhMTI4MWMwMTA4ZTUw
ZmJiZTRjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKQEAgLTcwLDEwICs3MCwxMCBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiAmdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5z
cGFjZTsKICAgICB9CiAKLSAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNy
ZWF0ZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25NZXRhZGF0YU5v
ZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIHVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25z
dHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRN
b2RlLCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywg
RGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5p
dGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNCdWlsdGluRGVmYXVs
dENsYXNzQ29uc3RydWN0b3IgPSBmYWxzZSkKKyAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIGNyZWF0ZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rp
b25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIHVubGlua2VkRnVuY3Rp
b25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0
TW9kZSBzY3JpcHRNb2RlLCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiBwYXJlbnRTY29wZVRE
WlZhcmlhYmxlcywgT3B0aW9uYWw8UHJpdmF0ZU5hbWVFbnZpcm9ubWVudD4gcGFyZW50UHJpdmF0
ZU5hbWVFbnZpcm9ubWVudCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwg
TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFBy
aXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29sIGlzQnVp
bHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yID0gZmFsc2UpCiAgICAgewogICAgICAgICBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0uaGVhcCkpCi0gICAgICAgICAgICBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgbm9kZSwgdW5saW5rZWRGdW5jdGlvbktpbmQsIGNv
bnN0cnVjdEFiaWxpdHksIHNjcmlwdE1vZGUsIFdURk1vdmUocGFyZW50U2NvcGVURFpWYXJpYWJs
ZXMpLCBkZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBpc0J1
aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3Rvcik7CisgICAgICAgICAgICBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSh2bSwgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUu
Z2V0KCksIHNvdXJjZSwgbm9kZSwgdW5saW5rZWRGdW5jdGlvbktpbmQsIGNvbnN0cnVjdEFiaWxp
dHksIHNjcmlwdE1vZGUsIFdURk1vdmUocGFyZW50U2NvcGVURFpWYXJpYWJsZXMpLCBXVEZNb3Zl
KHBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQpLCBkZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyLCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCwgaXNCdWlsdGlu
RGVmYXVsdENsYXNzQ29uc3RydWN0b3IpOwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRp
b24odm0pOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpAQCAtMTQzLDYgKzE0Myw4
IEBAIHB1YmxpYzoKICAgICBDb2RlRmVhdHVyZXMgZmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBt
X2ZlYXR1cmVzOyB9CiAgICAgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0
dXJuIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXM7IH0KIAorICAgIFByaXZhdGVCcmFuZFJlcXVpcmVt
ZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ+KG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOyB9CisK
ICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CiAgICAg
c3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIApAQCAtMTc0LDYgKzE3NiwxMyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIG1fcmFyZURh
dGEtPm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7CiAgICAgfQorCisgICAgUHJpdmF0ZU5hbWVF
bnZpcm9ubWVudCBwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50KCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgICAgIHJldHVybiBQcml2YXRlTmFtZUVu
dmlyb25tZW50KCk7CisgICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX3BhcmVudFByaXZhdGVO
YW1lRW52aXJvbm1lbnQ7CisgICAgfQogICAgIAogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gaXNBcnJvd0Z1bmN0aW9uUGFyc2VNb2RlKHBhcnNlTW9kZSgpKTsgfQog
CkBAIC0yMTAsNiArMjE5LDcgQEAgcHVibGljOgogICAgICAgICBTdHJpbmcgbV9zb3VyY2VNYXBw
aW5nVVJMRGlyZWN0aXZlOwogICAgICAgICBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiBtX3Bh
cmVudFNjb3BlVERaVmFyaWFibGVzOwogICAgICAgICBWZWN0b3I8SlNUZXh0UG9zaXRpb24+IG1f
Y2xhc3NGaWVsZExvY2F0aW9uczsKKyAgICAgICAgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCBtX3Bh
cmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQ7CiAgICAgfTsKIAogICAgIE5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI+KG1fbmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIpOyB9CkBAIC0yMjksNyArMjM5LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJp
dmF0ZToKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYsIFN0cnVjdHVyZSosIGNv
bnN0IFNvdXJjZUNvZGUmLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25L
aW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUsIFJlZlB0cjxURFpFbnZp
cm9ubWVudExpbms+LCAgSlNDOjpEZXJpdmVkQ29udGV4dFR5cGUsIEpTQzo6TmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IpOwor
ICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNJiwgU3RydWN0dXJlKiwgY29uc3QgU291
cmNlQ29kZSYsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgVW5saW5rZWRGdW5jdGlvbktpbmQsIENv
bnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZSwgUmVmUHRyPFREWkVudmlyb25tZW50
TGluaz4sIE9wdGlvbmFsPFByaXZhdGVOYW1lRW52aXJvbm1lbnQ+LCBKU0M6OkRlcml2ZWRDb250
ZXh0VHlwZSwgSlNDOjpOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQsIGJvb2wgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IpOwogICAgIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKERlY29kZXImLCBjb25zdCBDYWNoZWRGdW5jdGlvbkV4
ZWN1dGFibGUmKTsKIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xv
dFZpc2l0b3ImKTsKQEAgLTI2MSw3ICsyNzEsOCBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1f
aXNDYWNoZWQgOiAxOwogICAgIHVuc2lnbmVkIG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0Owog
ICAgIHVuc2lnbmVkIG1fdHlwZVByb2ZpbGluZ0VuZE9mZnNldDsKLSAgICB1bnNpZ25lZCBtX3Bh
cmFtZXRlckNvdW50OworICAgIHVuc2lnbmVkIG1fcGFyYW1ldGVyQ291bnQgOiAzMTsKKyAgICB1
bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsKICAgICBDb2RlRmVhdHVyZXMg
bV9mZWF0dXJlczsKICAgICBTb3VyY2VQYXJzZU1vZGUgbV9zb3VyY2VQYXJzZU1vZGU7CiAgICAg
dW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA2MTdj
YTBjYmM1NWJjZTZjYzA3ZTVlZGJlNTM0ZDk3YTk4NDI4OWY0Li40ZTU3MTllZjgyNThmM2IyOWZl
NjBkNzZkYjIwMmQyZjliMjhhNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMjg5LDcgKzI4OSw3
IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgcmV0dXJu
IFBhcnNlckVycm9yKFBhcnNlckVycm9yOjpFcnJvck5vbmUpOwogfQogCi1CeXRlY29kZUdlbmVy
YXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBQcm9ncmFtTm9kZSogcHJvZ3JhbU5vZGUs
IFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVy
YXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFJlZlB0cjxURFpFbnZpcm9ubWVu
dExpbms+JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRUNNQU1vZGUgZWNtYU1vZGUpCitCeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBQcm9ncmFtTm9kZSogcHJv
Z3JhbU5vZGUsIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8
Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFJlZlB0cjxURFpF
bnZpcm9ubWVudExpbms+JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgY29uc3QgUHJpdmF0ZU5h
bWVFbnZpcm9ubWVudCosIEVDTUFNb2RlIGVjbWFNb2RlKQogICAgIDogQnl0ZWNvZGVHZW5lcmF0
b3JCYXNlKG1ha2VVbmlxdWU8VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I+KHZtLCBjb2RlQmxv
Y2spLCBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdp
c3RlcnMoKSkKICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2RlKGNvZGVHZW5lcmF0aW9uTW9kZSkK
ICAgICAsIG1fc2NvcGVOb2RlKHByb2dyYW1Ob2RlKQpAQCAtMzM2LDcgKzMzNiw3IEBAIEJ5dGVj
b2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9n
cmFtTm9kZSwgVW5saW5rZWRQCiAgICAgfQogfQogCi1CeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2Rl
PiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+JiBw
YXJlbnRTY29wZVREWlZhcmlhYmxlcywgRUNNQU1vZGUgZWNtYU1vZGUpCitCeXRlY29kZUdlbmVy
YXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9k
ZSwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdl
bmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFJlZlB0cjxURFpFbnZpcm9u
bWVudExpbms+JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgY29uc3QgUHJpdmF0ZU5hbWVFbnZp
cm9ubWVudCogcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgRUNNQU1vZGUgZWNtYU1vZGUp
CiAgICAgOiBCeXRlY29kZUdlbmVyYXRvckJhc2UobWFrZVVuaXF1ZTxVbmxpbmtlZENvZGVCbG9j
a0dlbmVyYXRvcj4odm0sIGNvZGVCbG9jayksIENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxl
ZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKQogICAgICwgbV9jb2RlR2VuZXJhdGlvbk1v
ZGUoY29kZUdlbmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5vZGUoZnVuY3Rpb25Ob2RlKQpA
QCAtMzU5LDYgKzM1OSw4IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihW
TSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgLCBtX2VjbWFN
b2RlKGVjbWFNb2RlKQogICAgICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoY29kZUJsb2NrLT5kZXJp
dmVkQ29udGV4dFR5cGUoKSkKIHsKKyAgICBwdXNoUHJpdmF0ZUFjY2Vzc05hbWVzKHBhcmVudFBy
aXZhdGVOYW1lRW52aXJvbm1lbnQpOworCiAgICAgU3ltYm9sVGFibGUqIGZ1bmN0aW9uU3ltYm9s
VGFibGUgPSBTeW1ib2xUYWJsZTo6Y3JlYXRlKG1fdm0pOwogICAgIGZ1bmN0aW9uU3ltYm9sVGFi
bGUtPnNldFVzZXNOb25TdHJpY3RFdmFsKG1fdXNlc05vblN0cmljdEV2YWwpOwogICAgIGludCBz
eW1ib2xUYWJsZUNvbnN0YW50SW5kZXggPSAwOwpAQCAtNzA3LDYgKzcwOSw5IEBAIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rp
b25Ob2RlLCBVbmxpbmtlCiAgICAgICAgICAgICAgICAgY2FzZSBDb25zdHJ1Y3RvcktpbmQ6Ok5v
bmU6CiAgICAgICAgICAgICAgICAgY2FzZSBDb25zdHJ1Y3RvcktpbmQ6OkJhc2U6CiAgICAgICAg
ICAgICAgICAgICAgIGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChPcHRpb25zOjp1c2VQcml2YXRlTWV0aG9kcygpICYmIHByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50KCkgPT0gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5lZWRlZCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGVtaXRJbnN0YWxsUHJpdmF0ZUJyYW5kKCZtX3RoaXNSZWdpc3Rl
cik7CisKICAgICAgICAgICAgICAgICAgICAgZW1pdEluc3RhbmNlRmllbGRJbml0aWFsaXphdGlv
bklmTmVlZGVkKCZtX3RoaXNSZWdpc3RlciwgJm1fY2FsbGVlUmVnaXN0ZXIsIG1fc2NvcGVOb2Rl
LT5wb3NpdGlvbigpLCBtX3Njb3BlTm9kZS0+cG9zaXRpb24oKSwgbV9zY29wZU5vZGUtPnBvc2l0
aW9uKCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNl
IENvbnN0cnVjdG9yS2luZDo6RXh0ZW5kczoKQEAgLTgzOCw3ICs4NDMsNyBAQCBCeXRlY29kZUdl
bmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9u
Tm9kZSwgVW5saW5rZQogICAgIHB1c2hMZXhpY2FsU2NvcGUobV9zY29wZU5vZGUsIFREWkNoZWNr
T3B0aW1pemF0aW9uOjpPcHRpbWl6ZSwgTmVzdGVkU2NvcGVUeXBlOjpJc05vdE5lc3RlZCwgbnVs
bHB0ciwgc2hvdWxkSW5pdGlhbGl6ZUJsb2NrU2NvcGVkRnVuY3Rpb25zKTsKIH0KIAotQnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2YWxOb2Rl
LCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0
aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBSZWZQdHI8VERaRW52aXJvbm1lbnRM
aW5rPiYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIEVDTUFNb2RlIGVjbWFNb2RlKQorQnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2YWxOb2Rl
LCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0
aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBSZWZQdHI8VERaRW52aXJvbm1lbnRM
aW5rPiYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1l
bnQqIHBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQsIEVDTUFNb2RlIGVjbWFNb2RlKQogICAg
IDogQnl0ZWNvZGVHZW5lcmF0b3JCYXNlKG1ha2VVbmlxdWU8VW5saW5rZWRDb2RlQmxvY2tHZW5l
cmF0b3I+KHZtLCBjb2RlQmxvY2spLCBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZl
U3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSkKICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2RlKGNv
ZGVHZW5lcmF0aW9uTW9kZSkKICAgICAsIG1fc2NvcGVOb2RlKGV2YWxOb2RlKQpAQCAtODU2LDYg
Kzg2MSw4IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEV2
YWxOb2RlKiBldmFsTm9kZSwgVW5saW5rZWRFdmFsQ29kCiB7CiAgICAgbV9jb2RlQmxvY2stPnNl
dE51bVBhcmFtZXRlcnMoMSk7CiAKKyAgICBwdXNoUHJpdmF0ZUFjY2Vzc05hbWVzKHBhcmVudFBy
aXZhdGVOYW1lRW52aXJvbm1lbnQpOworCiAgICAgbV9jYWNoZWRQYXJlbnRURFogPSBwYXJlbnRT
Y29wZVREWlZhcmlhYmxlczsKIAogICAgIGVtaXRFbnRlcigpOwpAQCAtOTAxLDcgKzkwOCw3IEBA
IEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEV2YWxOb2RlKiBl
dmFsTm9kZSwgVW5saW5rZWRFdmFsQ29kCiAgICAgcHVzaExleGljYWxTY29wZShtX3Njb3BlTm9k
ZSwgVERaQ2hlY2tPcHRpbWl6YXRpb246Ok9wdGltaXplLCBOZXN0ZWRTY29wZVR5cGU6OklzTm90
TmVzdGVkLCBudWxscHRyLCBzaG91bGRJbml0aWFsaXplQmxvY2tTY29wZWRGdW5jdGlvbnMpOwog
fQogCi1CeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBNb2R1bGVQ
cm9ncmFtTm9kZSogbW9kdWxlUHJvZ3JhbU5vZGUsIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJh
dGlvbk1vZGUsIGNvbnN0IFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+JiBwYXJlbnRTY29wZVRE
WlZhcmlhYmxlcywgRUNNQU1vZGUgZWNtYU1vZGUpCitCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IoVk0mIHZtLCBNb2R1bGVQcm9ncmFtTm9kZSogbW9kdWxlUHJvZ3JhbU5vZGUs
IFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29k
ZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFJlZlB0cjxURFpFbnZp
cm9ubWVudExpbms+JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgY29uc3QgUHJpdmF0ZU5hbWVF
bnZpcm9ubWVudCosIEVDTUFNb2RlIGVjbWFNb2RlKQogICAgIDogQnl0ZWNvZGVHZW5lcmF0b3JC
YXNlKG1ha2VVbmlxdWU8VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I+KHZtLCBjb2RlQmxvY2sp
LCBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3Rl
cnMoKSkKICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2RlKGNvZGVHZW5lcmF0aW9uTW9kZSkKICAg
ICAsIG1fc2NvcGVOb2RlKG1vZHVsZVByb2dyYW1Ob2RlKQpAQCAtMTg5Myw4ICsxOTAwLDEwIEBA
IGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6Omluc3RhbnRpYXRlTGV4aWNhbFZhcmlhYmxlcyhjb25z
dCBWYXJpYWJsZUVudmlyb25tZW50JiBsCiAKICAgICAgICAgICAgIC8vIEZJWE1FOiBvbmx5IGRv
IHRoaXMgaWYgdGhlcmUgaXMgYW4gZXZhbCgpIHdpdGhpbiBhIG5lc3RlZCBzY29wZSAtLS0gb3Ro
ZXJ3aXNlIGl0IGlzbid0IG5lZWRlZC4KICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY2NjMKLSAgICAgICAgICAgIGlmIChlbnRyeS52YWx1
ZS5pc1ByaXZhdGVOYW1lKCkpCi0gICAgICAgICAgICAgICAgc3ltYm9sVGFibGUtPmFkZFByaXZh
dGVOYW1lKGVudHJ5LmtleS5nZXQoKSk7CisgICAgICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNQ
cml2YXRlRmllbGQoKSkKKyAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+YWRkUHJpdmF0ZU5h
bWUoZW50cnkua2V5LmdldCgpLCBQcml2YXRlTmFtZUVudHJ5KFByaXZhdGVOYW1lRW50cnk6OlRy
YWl0czo6SXNEZWNsYXJlZCkpOworICAgICAgICAgICAgZWxzZSBpZiAoZW50cnkudmFsdWUuaXNQ
cml2YXRlTWV0aG9kKCkpCisgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUtPmFkZFByaXZhdGVO
YW1lKGVudHJ5LmtleS5nZXQoKSwgUHJpdmF0ZU5hbWVFbnRyeShQcml2YXRlTmFtZUVudHJ5OjpU
cmFpdHM6OklzRGVjbGFyZWQgfCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzTWV0aG9kKSk7
CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGhhc0NhcHR1cmVkVmFyaWFibGVzOwpAQCAt
MjcxNCw3ICsyNzIzLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRC
eVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmEKICAgICByZXR1cm4gdmFs
dWU7CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0R2V0QnlW
YWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0
eSkKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0UHJpdmF0ZU5hbWUoUmVn
aXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSkKIHsK
ICAgICBPcEdldFByaXZhdGVOYW1lOjplbWl0KHRoaXMsIGRzdCwgYmFzZSwgcHJvcGVydHkpOwog
ICAgIHJldHVybiBkc3Q7CkBAIC0yNzUwLDEyICsyNzU5LDQ0IEBAIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0RGVmaW5lUHJpdmF0ZUZpZWxkKFJlZ2lzdGVySUQqIGJhc2UsIFJl
Z2lzdGVyCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0Q3JlYXRlUHJpdmF0ZUJyYW5kKFJlZ2lzdGVySUQqIHNjb3BlLCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3RFbmQpCit7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNyZWF0ZVBy
aXZhdGVTeW1ib2wgPSBtb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0
YW50OjpjcmVhdGVQcml2YXRlU3ltYm9sKTsKKworICAgIENhbGxBcmd1bWVudHMgYXJndW1lbnRz
KCp0aGlzLCBudWxscHRyLCAwKTsKKyAgICBlbWl0TG9hZChhcmd1bWVudHMudGhpc1JlZ2lzdGVy
KCksIGpzVW5kZWZpbmVkKCkpOworICAgIFJlZ2lzdGVySUQqIG5ld1N5bWJvbCA9IGVtaXRDYWxs
KGZpbmFsRGVzdGluYXRpb24obnVsbHB0ciwgY3JlYXRlUHJpdmF0ZVN5bWJvbC5nZXQoKSksIGNy
ZWF0ZVByaXZhdGVTeW1ib2wuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgYXJndW1lbnRzLCBk
aXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQsIERlYnVnZ2FibGVDYWxsOjpObyk7CisKKyAgICBW
YXJpYWJsZSBwcml2YXRlQnJhbmRWYXIgPSB2YXJpYWJsZShwcm9wZXJ0eU5hbWVzKCkuYnVpbHRp
bk5hbWVzKCkucHJpdmF0ZUJyYW5kUHJpdmF0ZU5hbWUoKSk7CisKKyAgICBlbWl0UHV0VG9TY29w
ZShzY29wZSwgcHJpdmF0ZUJyYW5kVmFyLCBuZXdTeW1ib2wsIERvTm90VGhyb3dJZk5vdEZvdW5k
LCBJbml0aWFsaXphdGlvbk1vZGU6OkluaXRpYWxpemF0aW9uKTsKK30KKwordm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEluc3RhbGxQcml2YXRlQnJhbmQoUmVnaXN0ZXJJRCogdGFyZ2V0KQor
eworICAgIFZhcmlhYmxlIHByaXZhdGVCcmFuZFZhciA9IHZhcmlhYmxlKHByb3BlcnR5TmFtZXMo
KS5idWlsdGluTmFtZXMoKS5wcml2YXRlQnJhbmRQcml2YXRlTmFtZSgpKTsKKyAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gcHJpdmF0ZUJyYW5kVmFyU2NvcGUgPSBlbWl0UmVzb2x2ZVNjb3BlKG51bGxw
dHIsIHByaXZhdGVCcmFuZFZhcik7CisgICAgUmVnaXN0ZXJJRCogcHJpdmF0ZUJyYW5kU3ltYm9s
ID0gZW1pdEdldFByaXZhdGVCcmFuZChuZXdUZW1wb3JhcnkoKSwgcHJpdmF0ZUJyYW5kVmFyU2Nv
cGUuZ2V0KCkpOworICAgIE9wU2V0UHJpdmF0ZUJyYW5kOjplbWl0KHRoaXMsIHRhcmdldCwgcHJp
dmF0ZUJyYW5kU3ltYm9sKTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRHZXRQcml2YXRlQnJhbmQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzY29wZSkKK3sK
KyAgICBWYXJpYWJsZSBwcml2YXRlQnJhbmRWYXIgPSB2YXJpYWJsZShwcm9wZXJ0eU5hbWVzKCku
YnVpbHRpbk5hbWVzKCkucHJpdmF0ZUJyYW5kUHJpdmF0ZU5hbWUoKSk7CisgICAgcmV0dXJuIGVt
aXRHZXRGcm9tU2NvcGUoZHN0LCBzY29wZSwgcHJpdmF0ZUJyYW5kVmFyLCBUaHJvd0lmTm90Rm91
bmQpOworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFByaXZhdGVGaWVs
ZFB1dChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCog
dmFsdWUpCiB7CiAgICAgT3BQdXRQcml2YXRlTmFtZTo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0
eSwgdmFsdWUsIFByaXZhdGVGaWVsZFB1dEtpbmQ6OnNldCgpKTsKICAgICByZXR1cm4gdmFsdWU7
CiB9CiAKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDaGVja1ByaXZhdGVCcmFuZChSZWdp
c3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBicmFuZFN5bWJvbCkKK3sKKyAgICBPcENoZWNrUHJp
dmF0ZUJyYW5kOjplbWl0KHRoaXMsIGJhc2UsIGJyYW5kU3ltYm9sKTsKK30KKwogdm9pZCBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdFN1cGVyU2FtcGxlckJlZ2luKCkKIHsKICAgICBPcFN1cGVyU2Ft
cGxlckJlZ2luOjplbWl0KHRoaXMpOwpAQCAtMjg5MCw2ICsyOTMxLDMyIEBAIHZvaWQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmxpZnRURFpDaGVja0lmUG9zc2libGUoY29uc3QgVmFyaWFibGUmIHZhcmlh
YmxlKQogICAgIH0KIH0KIAorYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6aXNQcml2YXRlTWV0aG9k
KGNvbnN0IElkZW50aWZpZXImIGlkZW50KQoreworICAgIGZvciAodW5zaWduZWQgaSA9IG1fcHJp
dmF0ZU5hbWVzU3RhY2suc2l6ZSgpOyBpLS07ICkgeworICAgICAgICBhdXRvJiBtYXAgPSBtX3By
aXZhdGVOYW1lc1N0YWNrW2ldOworICAgICAgICBhdXRvIGl0ID0gbWFwLmZpbmQoaWRlbnQuaW1w
bCgpKTsKKyAgICAgICAgaWYgKGl0ICE9IG1hcC5lbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBp
dC0+dmFsdWUuaXNNZXRob2QoKTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3Zv
aWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnB1c2hQcml2YXRlQWNjZXNzTmFtZXMoY29uc3QgUHJpdmF0
ZU5hbWVFbnZpcm9ubWVudCogZW52aXJvbm1lbnQpCit7CisgICAgaWYgKCFlbnZpcm9ubWVudCB8
fCAhZW52aXJvbm1lbnQtPnNpemUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wcml2YXRl
TmFtZXNTdGFjay5hcHBlbmQoKmVudmlyb25tZW50KTsKK30KKwordm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6cG9wUHJpdmF0ZUFjY2Vzc05hbWVzKCkKK3sKKyAgICBBU1NFUlQobV9wcml2YXRlTmFt
ZXNTdGFjay5zaXplKCkpOworICAgIG1fcHJpdmF0ZU5hbWVzU3RhY2sucmVtb3ZlTGFzdCgpOwor
fQorCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoVERaVmFyaWFibGVzKGNvbnN0IFZhcmlh
YmxlRW52aXJvbm1lbnQmIGVudmlyb25tZW50LCBURFpDaGVja09wdGltaXphdGlvbiBvcHRpbWl6
YXRpb24sIFREWlJlcXVpcmVtZW50IHJlcXVpcmVtZW50KQogewogICAgIGlmICghZW52aXJvbm1l
bnQuc2l6ZSgpKQpAQCAtMjkxMSw2ICsyOTc4LDI4IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OnB1c2hURFpWYXJpYWJsZXMoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgZW52aXJvbm1lbnQs
CiAgICAgbV9URFpTdGFjay5hcHBlbmQoVERaU3RhY2tFbnRyeSB7IFdURk1vdmUobWFwKSwgbnVs
bHB0ciB9KTsKIH0KIAorT3B0aW9uYWw8UHJpdmF0ZU5hbWVFbnZpcm9ubWVudD4gQnl0ZWNvZGVH
ZW5lcmF0b3I6OmdldEF2YWlsYWJsZVByaXZhdGVBY2Nlc3NOYW1lcygpCit7CisgICAgUHJpdmF0
ZU5hbWVFbnZpcm9ubWVudCByZXN1bHQ7CisgICAgU21hbGxQdHJTZXQ8VW5pcXVlZFN0cmluZ0lt
cGwqLCAxNj4gZXhjbHVkZWROYW1lczsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3ByaXZhdGVO
YW1lc1N0YWNrLnNpemUoKTsgaS0tOyApIHsKKyAgICAgICAgYXV0byYgbWFwID0gbV9wcml2YXRl
TmFtZXNTdGFja1tpXTsKKyAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1hcCkgIHsKKyAgICAg
ICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc1ByaXZhdGVNZXRob2RPckFjZXNzb3IoKSkgeworICAg
ICAgICAgICAgICAgIGlmICghZXhjbHVkZWROYW1lcy5jb250YWlucyhlbnRyeS5rZXkuZ2V0KCkp
KSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoZW50cnkua2V5LCBlbnRyeS52YWx1
ZSk7CisgICAgICAgICAgICAgICAgICAgIGV4Y2x1ZGVkTmFtZXMuYWRkKGVudHJ5LmtleS5nZXQo
KSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAg
ICAgZXhjbHVkZWROYW1lcy5hZGQoZW50cnkua2V5LmdldCgpKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIGlmICghcmVzdWx0LnNpemUoKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICByZXR1cm4gcmVzdWx0OworfQorCiBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiBCeXRl
Y29kZUdlbmVyYXRvcjo6Z2V0VmFyaWFibGVzVW5kZXJURFooKQogewogICAgIFJlZlB0cjxURFpF
bnZpcm9ubWVudExpbms+IHBhcmVudCA9IG1fY2FjaGVkUGFyZW50VERaOwpAQCAtMzEyMCw5ICsz
MjA5LDkgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdNZXRob2REZWZp
bml0aW9uKFJlZ2lzdGVySUQqIGRzdCwgTWV0aG9kRGUKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCogZHN0LCBD
b25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLAot
ICAgIGNvbnN0IElkZW50aWZpZXImIGVjbWFOYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBjbGFzc1Nv
dXJjZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIpCisgICAgY29uc3QgSWRlbnRpZmllciYgZWNtYU5hbWUsIGNvbnN0IFNvdXJjZUNvZGUmIGNs
YXNzU291cmNlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQp
CiB7Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBtX3ZtLmJ1
aWx0aW5FeGVjdXRhYmxlcygpLT5jcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoY29uc3RydWN0b3JL
aW5kLCBuYW1lLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcik7CisgICAgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBtX3ZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5j
cmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoY29uc3RydWN0b3JLaW5kLCBuYW1lLCBuZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplciwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOwogICAgIGV4ZWN1dGFi
bGUtPnNldEludmFsaWRUeXBlUHJvZmlsaW5nT2Zmc2V0cygpOwogICAgIGV4ZWN1dGFibGUtPnNl
dEVjbWFOYW1lKGVjbWFOYW1lKTsKICAgICBleGVjdXRhYmxlLT5zZXRDbGFzc1NvdXJjZShjbGFz
c1NvdXJjZSk7CkBAIC0zMTQ2LDEzICszMjM1LDE0IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0TmV3Q2xhc3NGaWVsZEluaXRpYWxpemVyRnVuY3Rpb24oUmVnaXN0ZXJJRCoK
ICAgICB9CiAKICAgICBhdXRvIHZhcmlhYmxlc1VuZGVyVERaID0gZ2V0VmFyaWFibGVzVW5kZXJU
RFooKTsKKyAgICBPcHRpb25hbDxQcml2YXRlTmFtZUVudmlyb25tZW50PiBwYXJlbnRQcml2YXRl
TmFtZUVudmlyb25tZW50ID0gZ2V0QXZhaWxhYmxlUHJpdmF0ZUFjY2Vzc05hbWVzKCk7CiAgICAg
U291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6Q2xhc3NGaWVsZElu
aXRpYWxpemVyTW9kZTsKICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkgPSBD
b25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7CiAKICAgICBjb25zdCBib29sIGFsd2F5
c1N0cmljdEluQ2xhc3MgPSB0cnVlOwogICAgIEZ1bmN0aW9uTWV0YWRhdGFOb2RlIG1ldGFkYXRh
KHBhcnNlckFyZW5hKCksIEpTVG9rZW5Mb2NhdGlvbigpLCBKU1Rva2VuTG9jYXRpb24oKSwgMCwg
MCwgMCwgMCwgMCwgYWx3YXlzU3RyaWN0SW5DbGFzcywgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBz
dXBlckJpbmRpbmcsIDAsIHBhcnNlTW9kZSwgZmFsc2UpOwogICAgIG1ldGFkYXRhLmZpbmlzaFBh
cnNpbmcobV9zY29wZU5vZGUtPnNvdXJjZSgpLCBJZGVudGlmaWVyKCksIEZ1bmN0aW9uTW9kZTo6
TWV0aG9kRGVmaW5pdGlvbik7Ci0gICAgYXV0byBpbml0aWFsaXplciA9IFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgpLCAmbWV0YWRh
dGEsIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlu
a2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIHNjcmlwdE1vZGUoKSwgV1RGTW92
ZSh2YXJpYWJsZXNVbmRlclREWiksIG5ld0Rlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXI6Ok5vKTsKKyAgICBhdXRvIGluaXRpYWxpemVyID0gVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksICZtZXRh
ZGF0YSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5s
aW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwgc2NyaXB0TW9kZSgpLCBXVEZN
b3ZlKHZhcmlhYmxlc1VuZGVyVERaKSwgV1RGTW92ZShwYXJlbnRQcml2YXRlTmFtZUVudmlyb25t
ZW50KSwgbmV3RGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6
Tm8sIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lKTsKICAgICBpbml0aWFsaXplci0+c2V0
Q2xhc3NGaWVsZExvY2F0aW9ucyhXVEZNb3ZlKGNsYXNzRmllbGRMb2NhdGlvbnMpKTsKIAogICAg
IHVuc2lnbmVkIGluZGV4ID0gbV9jb2RlQmxvY2stPmFkZEZ1bmN0aW9uRXhwcihpbml0aWFsaXpl
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgKaW5kZXggNTBiNTQ2NWY5Yjc1YjI4YjliY2I4ZDNkOGUxZTMzOWUxYTdl
MDMxMC4uYmJmYjU2ODE5OGY0NDQ1NTdkYTMxMzNjMjk2NjNjZDQyMDFlN2JlNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaApAQCAtNDA4LDEwICs0MDgsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgog
ICAgICAgICB0eXBlZGVmIERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrIEZ1bmN0aW9u
U3RhY2s7CiAKLSAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBQcm9ncmFtTm9kZSosIFVu
bGlua2VkUHJvZ3JhbUNvZGVCbG9jayosIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBj
b25zdCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiYsIEVDTUFNb2RlKTsKLSAgICAgICAgQnl0
ZWNvZGVHZW5lcmF0b3IoVk0mLCBGdW5jdGlvbk5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFJlZlB0cjxURFpFbnZp
cm9ubWVudExpbms+JiwgRUNNQU1vZGUpOwotICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYs
IEV2YWxOb2RlKiwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0
aW9uTW9kZT4sIGNvbnN0IFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+JiwgRUNNQU1vZGUpOwot
ICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIE1vZHVsZVByb2dyYW1Ob2RlKiwgVW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4s
IGNvbnN0IFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+JiwgRUNNQU1vZGUpOworICAgICAgICBC
eXRlY29kZUdlbmVyYXRvcihWTSYsIFByb2dyYW1Ob2RlKiwgVW5saW5rZWRQcm9ncmFtQ29kZUJs
b2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFJlZlB0cjxURFpFbnZp
cm9ubWVudExpbms+JiwgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCosIEVDTUFNb2RlKTsK
KyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBGdW5jdGlvbk5vZGUqLCBVbmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFJl
ZlB0cjxURFpFbnZpcm9ubWVudExpbms+JiwgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCos
IEVDTUFNb2RlKTsKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBFdmFsTm9kZSosIFVu
bGlua2VkRXZhbENvZGVCbG9jayosIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBjb25z
dCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiYsIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1l
bnQqLCBFQ01BTW9kZSk7CisgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgTW9kdWxlUHJv
Z3JhbU5vZGUqLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29k
ZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4mLCBjb25z
dCBQcml2YXRlTmFtZUVudmlyb25tZW50KiwgRUNNQU1vZGUpOwogCiAgICAgICAgIH5CeXRlY29k
ZUdlbmVyYXRvcigpOwogICAgICAgICAKQEAgLTQyNSwyMCArNDI1LDIxIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBib29sIG5lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dCgpIGNv
bnN0IHsgcmV0dXJuIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0OyB9CiAgICAg
ICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlTm9kZS0+dXNlc0V2YWwo
KTsgfQogICAgICAgICBib29sIHVzZXNUaGlzKCkgY29uc3QgeyByZXR1cm4gbV9zY29wZU5vZGUt
PnVzZXNUaGlzKCk7IH0KKyAgICAgICAgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+cHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQoKTsgfQogICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5k
KCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmNvbnN0cnVjdG9yS2luZCgpOyB9CiAgICAg
ICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9j
ay0+c3VwZXJCaW5kaW5nKCk7IH0KICAgICAgICAgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1v
ZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+c2NyaXB0TW9kZSgpOyB9CiAgICAgICAg
IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkg
Y29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCk7
IH0KIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBOb2RlLCB0eXBlbmFtZSBVbmxpbmtlZENv
ZGVCbG9jaz4KLSAgICAgICAgc3RhdGljIFBhcnNlckVycm9yIGdlbmVyYXRlKFZNJiB2bSwgTm9k
ZSogbm9kZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgVW5saW5rZWRDb2RlQmxvY2sq
IHVubGlua2VkQ29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2Vu
ZXJhdGlvbk1vZGUsIGNvbnN0IFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+JiBwYXJlbnRTY29w
ZVREWlZhcmlhYmxlcywgRUNNQU1vZGUgZWNtYU1vZGUpCisgICAgICAgIHN0YXRpYyBQYXJzZXJF
cnJvciBnZW5lcmF0ZShWTSYgdm0sIE5vZGUqIG5vZGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZUNvZGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywgT3B0aW9uU2V0PENv
ZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBSZWZQdHI8VERaRW52
aXJvbm1lbnRMaW5rPiYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIGNvbnN0IFByaXZhdGVOYW1l
RW52aXJvbm1lbnQqIHByaXZhdGVOYW1lRW52aXJvbm1lbnQsIEVDTUFNb2RlIGVjbWFNb2RlKQog
ICAgICAgICB7CiAgICAgICAgICAgICBNb25vdG9uaWNUaW1lIGJlZm9yZTsKICAgICAgICAgICAg
IGlmIChVTkxJS0VMWShPcHRpb25zOjpyZXBvcnRCeXRlY29kZUNvbXBpbGVUaW1lcygpKSkKICAg
ICAgICAgICAgICAgICBiZWZvcmUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKIAogICAgICAgICAg
ICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwotICAgICAgICAgICAgYXV0byBieXRlY29kZUdl
bmVyYXRvciA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVHZW5lcmF0b3I+KHZtLCBub2RlLCB1bmxpbmtl
ZENvZGVCbG9jaywgY29kZUdlbmVyYXRpb25Nb2RlLCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywg
ZWNtYU1vZGUpOworICAgICAgICAgICAgYXV0byBieXRlY29kZUdlbmVyYXRvciA9IG1ha2VVbmlx
dWU8Qnl0ZWNvZGVHZW5lcmF0b3I+KHZtLCBub2RlLCB1bmxpbmtlZENvZGVCbG9jaywgY29kZUdl
bmVyYXRpb25Nb2RlLCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgcHJpdmF0ZU5hbWVFbnZpcm9u
bWVudCwgZWNtYU1vZGUpOwogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBieXRlY29kZUdlbmVy
YXRvci0+Z2VuZXJhdGUoKTsKIAogICAgICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnJl
cG9ydEJ5dGVjb2RlQ29tcGlsZVRpbWVzKCkpKSB7CkBAIC03NzQsNyArNzc1LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uKFJlZ2lzdGVy
SUQqIGRzdCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dE5ld0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmNFeHByTm9kZSopOwot
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKFJlZ2lzdGVySUQq
IGRzdCwgQ29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBJZGVu
dGlmaWVyJiBlY21hTmFtZSwgY29uc3QgU291cmNlQ29kZSYgY2xhc3NTb3VyY2UsIE5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0RlZmF1bHRD
b25zdHJ1Y3RvcihSZWdpc3RlcklEKiBkc3QsIENvbnN0cnVjdG9yS2luZCwgY29uc3QgSWRlbnRp
ZmllciYgbmFtZSwgY29uc3QgSWRlbnRpZmllciYgZWNtYU5hbWUsIGNvbnN0IFNvdXJjZUNvZGUm
IGNsYXNzU291cmNlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3Q2xhc3NGaWVsZEluaXRpYWxp
emVyRnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+JiYgY2xh
c3NGaWVsZExvY2F0aW9ucywgYm9vbCBpc0Rlcml2ZWQpOwogICAgICAgICBSZWdpc3RlcklEKiBl
bWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCosIEFycm93RnVuY0V4cHJO
b2RlKik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdNZXRob2REZWZpbml0aW9uKFJlZ2lz
dGVySUQqIGRzdCwgTWV0aG9kRGVmaW5pdGlvbk5vZGUqKTsKQEAgLTgxNSw3ICs4MTYsNiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERpcmVjdFNldFByb3RvdHlw
ZU9mKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3RvdHlwZSk7CiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9w
ZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0QnlW
YWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdGhpc1ZhbHVlLCBSZWdpc3RlcklEKiBw
cm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGly
ZWN0R2V0QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklE
KiBwcm9wZXJ0eSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREaXJlY3RQdXRCeVZhbChSZWdp
c3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGVsZXRlQnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSk7CiAKQEAgLTgyMyw2ICs4MjMsMTIg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRJbnRlcm5hbEZp
ZWxkKFJlZ2lzdGVySUQqIGJhc2UsIHVuc2lnbmVkIGluZGV4LCBSZWdpc3RlcklEKiB2YWx1ZSk7
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREZWZpbmVQcml2YXRlRmllbGQoUmVnaXN0ZXJJRCog
YmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdFByaXZhdGVGaWVsZFB1dChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3Rl
cklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOworICAgICAgICBSZWdpc3RlcklEKiBl
bWl0R2V0UHJpdmF0ZU5hbWUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdp
c3RlcklEKiBwcm9wZXJ0eSk7CisKKyAgICAgICAgdm9pZCBlbWl0Q3JlYXRlUHJpdmF0ZUJyYW5k
KFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsK
KyAgICAgICAgdm9pZCBlbWl0SW5zdGFsbFByaXZhdGVCcmFuZChSZWdpc3RlcklEKiB0YXJnZXQp
OworICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0UHJpdmF0ZUJyYW5kKFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogc2NvcGUpOworICAgICAgICB2b2lkIGVtaXRDaGVja1ByaXZhdGVCcmFu
ZChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBicmFuZCk7CiAKICAgICAgICAgdm9pZCBl
bWl0U3VwZXJTYW1wbGVyQmVnaW4oKTsKICAgICAgICAgdm9pZCBlbWl0U3VwZXJTYW1wbGVyRW5k
KCk7CkBAIC0xMTc2LDE2ICsxMTgyLDE5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
RGVyaXZlZENvbnRleHRUeXBlIG5ld0Rlcml2ZWRDb250ZXh0VHlwZSA9IERlcml2ZWRDb250ZXh0
VHlwZTo6Tm9uZTsKIAogICAgICAgICAgICAgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSBtZXRhZGF0YS0+aXNDb25zdHJ1Y3RvckFuZE5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyKCkgPyBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6WWVz
IDogTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vOworICAgICAgICAgICAgUHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBtZXRhZGF0YS0+cHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQoKTsKICAgICAgICAgICAgIGlmIChTb3VyY2VQYXJzZU1vZGVTZXQo
U291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSwgU291cmNlUGFyc2VNb2RlOjpBc3lu
Y0Fycm93RnVuY3Rpb25Nb2RlLCBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbkJv
ZHlNb2RlKS5jb250YWlucyhtZXRhZGF0YS0+cGFyc2VNb2RlKCkpKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RXh0ZW5kcyB8fCBp
c0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSkgewogICAgICAgICAgICAgICAgICAgICBuZXdE
ZXJpdmVkQ29udGV4dFR5cGUgPSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRDb25zdHJ1Y3Rv
ckNvbnRleHQ7CiAgICAgICAgICAgICAgICAgICAgIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
ID0gbV9jb2RlQmxvY2stPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCk7CisgICAgICAgICAg
ICAgICAgICAgIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID0gbV9jb2RlQmxvY2stPnByaXZhdGVC
cmFuZFJlcXVpcmVtZW50KCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVs
c2UgaWYgKG1fY29kZUJsb2NrLT5pc0NsYXNzQ29udGV4dCgpIHx8IGlzRGVyaXZlZENsYXNzQ29u
dGV4dCgpKQogICAgICAgICAgICAgICAgICAgICBuZXdEZXJpdmVkQ29udGV4dFR5cGUgPSBEZXJp
dmVkQ29udGV4dFR5cGU6OkRlcml2ZWRNZXRob2RDb250ZXh0OwogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBhdXRvIG9wdGlvbmFsVmFyaWFibGVzVW5kZXJURFogPSBnZXRWYXJpYWJsZXNV
bmRlclREWigpOworICAgICAgICAgICAgT3B0aW9uYWw8UHJpdmF0ZU5hbWVFbnZpcm9ubWVudD4g
cGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCA9IGdldEF2YWlsYWJsZVByaXZhdGVBY2Nlc3NO
YW1lcygpOwogCiAgICAgICAgICAgICAvLyBGSVhNRTogVGhlc2UgZmxhZ3MsIFBhcnNlck1vZGVz
IGFuZCBwcm9wYWdhdGlvbiB0byBYWFhDb2RlQmxvY2tzIHNob3VsZCBiZSByZW9yZ2FuaXplZC4K
ICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTE1NDcKQEAgLTExOTQsMTAgKzEyMDMsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSAmJiBtZXRhZGF0
YS0+Y29uc3RydWN0b3JLaW5kKCkgIT0gQ29uc3RydWN0b3JLaW5kOjpOb25lKQogICAgICAgICAg
ICAgICAgIGNvbnN0cnVjdEFiaWxpdHkgPSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3Q7
CiAKLSAgICAgICAgICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRl
KG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgbWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0aW9u
KCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNv
bnN0cnVjdEFiaWxpdHksIHNjcmlwdE1vZGUoKSwgV1RGTW92ZShvcHRpb25hbFZhcmlhYmxlc1Vu
ZGVyVERaKSwgbmV3RGVyaXZlZENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
cik7CisgICAgICAgICAgICByZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0
ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksIG1ldGFkYXRhLCBpc0J1aWx0aW5GdW5jdGlv
bigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBj
b25zdHJ1Y3RBYmlsaXR5LCBzY3JpcHRNb2RlKCksIFdURk1vdmUob3B0aW9uYWxWYXJpYWJsZXNV
bmRlclREWiksIFdURk1vdmUocGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCksIG5ld0Rlcml2
ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFuZFJl
cXVpcmVtZW50KTsKICAgICAgICAgfQogCiAgICAgICAgIFJlZlB0cjxURFpFbnZpcm9ubWVudExp
bms+IGdldFZhcmlhYmxlc1VuZGVyVERaKCk7CisgICAgICAgIE9wdGlvbmFsPFByaXZhdGVOYW1l
RW52aXJvbm1lbnQ+IGdldEF2YWlsYWJsZVByaXZhdGVBY2Nlc3NOYW1lcygpOwogCiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRDb25zdHJ1Y3RWYXJhcmdzKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0
ZXJJRCogZnVuYywgUmVnaXN0ZXJJRCogdGhpc1JlZ2lzdGVyLCBSZWdpc3RlcklEKiBhcmd1bWVu
dHMsIFJlZ2lzdGVySUQqIGZpcnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zm
c2V0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIERlYnVnZ2FibGVDYWxs
KTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbE9wPgpAQCAtMTI1Myw2ICsxMjYzLDEx
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgbV9sYXN0SW5zdHJ1Y3Rpb24gPSBwcmV2
TGFzdEluc3RydWN0aW9uOwogICAgICAgICB9CiAKKyAgICAgICAgYm9vbCBpc1ByaXZhdGVNZXRo
b2QoY29uc3QgSWRlbnRpZmllciYpOworCisgICAgICAgIHZvaWQgcHVzaFByaXZhdGVBY2Nlc3NO
YW1lcyhjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50Kik7CisgICAgICAgIHZvaWQgcG9wUHJp
dmF0ZUFjY2Vzc05hbWVzKCk7CisKICAgICBwcml2YXRlOgogICAgICAgICBPcHRpb25TZXQ8Q29k
ZUdlbmVyYXRpb25Nb2RlPiBtX2NvZGVHZW5lcmF0aW9uTW9kZTsKIApAQCAtMTI2Niw2ICsxMjgx
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgUmVmUHRyPFREWkVudmlyb25tZW50TGlu
az4gbV9jYWNoZWRQYXJlbnRURFo7CiAgICAgICAgIFZlY3RvcjxURFpTdGFja0VudHJ5PiBtX1RE
WlN0YWNrOworICAgICAgICBWZWN0b3I8UHJpdmF0ZU5hbWVFbnZpcm9ubWVudD4gbV9wcml2YXRl
TmFtZXNTdGFjazsKICAgICAgICAgT3B0aW9uYWw8c2l6ZV90PiBtX3ZhclNjb3BlTGV4aWNhbFNj
b3BlU3RhY2tJbmRleDsKICAgICAgICAgdm9pZCBwdXNoVERaVmFyaWFibGVzKGNvbnN0IFZhcmlh
YmxlRW52aXJvbm1lbnQmLCBURFpDaGVja09wdGltaXphdGlvbiwgVERaUmVxdWlyZW1lbnQpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAKaW5kZXggMGUxYjk1ZjRmNmE4MjM0MDI5YzM2MmE2YjIzM2NlYjU2ZDQ2ZTAzYS4uZmIw
MjcyZjQxODJmNTNkMzg3N2EwNzMwMWFiYjFmNTJlODUyZmI0OCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtNTYzLDcg
KzU2Myw3IEBAIHZvaWQgUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdERlY2xhcmVQcml2YXRlRmllbGRO
YW1lcyhCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IGNyZWF0ZVByaXZhdGVTeW1ib2w7CiAgICAgZm9yIChQcm9wZXJ0eUxpc3ROb2RlKiBwID0gdGhp
czsgcDsgcCA9IHAtPm1fbmV4dCkgewogICAgICAgICBjb25zdCBQcm9wZXJ0eU5vZGUmIG5vZGUg
PSAqcC0+bV9ub2RlOwotICAgICAgICBpZiAobm9kZS50eXBlKCkgJiBQcm9wZXJ0eU5vZGU6OlBy
aXZhdGUpIHsKKyAgICAgICAgaWYgKG5vZGUudHlwZSgpICYgUHJvcGVydHlOb2RlOjpQcml2YXRl
RmllbGQpIHsKICAgICAgICAgICAgIGlmICghY3JlYXRlUHJpdmF0ZVN5bWJvbCkKICAgICAgICAg
ICAgICAgICBjcmVhdGVQcml2YXRlU3ltYm9sID0gZ2VuZXJhdG9yLm1vdmVMaW5rVGltZUNvbnN0
YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OmNyZWF0ZVByaXZhdGVTeW1ib2wpOwogCkBA
IC01ODksNyArNTg5LDcgQEAgUmVnaXN0ZXJJRCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGUKICAgICAgICAgaWYgKHAt
PmlzQ29tcHV0ZWRDbGFzc0ZpZWxkKCkpCiAgICAgICAgICAgICBlbWl0U2F2ZUNvbXB1dGVkRmll
bGROYW1lKGdlbmVyYXRvciwgKnAtPm1fbm9kZSk7CiAKLSAgICAgICAgaWYgKHAtPmlzSW5zdGFu
Y2VDbGFzc0ZpZWxkKCkpIHsKKyAgICAgICAgaWYgKHAtPmlzSW5zdGFuY2VDbGFzc0ZpZWxkKCkg
JiYgIShwLT5tX25vZGUtPnR5cGUoKSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0ZU1ldGhvZCkpIHsK
ICAgICAgICAgICAgIEFTU0VSVChpbnN0YW5jZUZpZWxkTG9jYXRpb25zKTsKICAgICAgICAgICAg
IGluc3RhbmNlRmllbGRMb2NhdGlvbnMtPmFwcGVuZChwLT5wb3NpdGlvbigpKTsKICAgICAgICAg
ICAgIGNvbnRpbnVlOwpAQCAtNzU3LDcgKzc1Nyw3IEBAIFJlZ2lzdGVySUQqIFByb3BlcnR5TGlz
dE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
CiB2b2lkIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRQdXRDb25zdGFudFByb3BlcnR5KEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIG5ld09iaiwgUHJvcGVydHlOb2RlJiBu
b2RlKQogewogICAgIC8vIFByaXZhdGUgZmllbGRzIGFyZSBoYW5kbGVkIGluIGEgc3ludGhldGlj
IGNsYXNzRmllbGRJbml0aWFsaXplciBmdW5jdGlvbiwgbm90IGhlcmUuCi0gICAgQVNTRVJUKCEo
bm9kZS50eXBlKCkgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGUpKTsKKyAgICBBU1NFUlQoIShub2Rl
LnR5cGUoKSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0ZUZpZWxkKSk7CiAKICAgICBpZiAoUHJvcGVy
dHlOb2RlOjppc1VuZGVyc2NvcmVQcm90b1NldHRlcihnZW5lcmF0b3Iudm0oKSwgbm9kZSkpIHsK
ICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3RvdHlwZSA9IGdlbmVyYXRvci5lbWl0Tm9k
ZShub2RlLm1fYXNzaWduKTsKQEAgLTc4Miw2ICs3ODIsMTQgQEAgdm9pZCBQcm9wZXJ0eUxpc3RO
b2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWcKIAogICAgIGlmIChub2RlLmlzQ2xhc3NQcm9wZXJ0eSgpKSB7CiAgICAgICAgIEFTU0VS
VChub2RlLm5lZWRzU3VwZXJCaW5kaW5nKCkpOworCisgICAgICAgIGlmIChub2RlLnR5cGUoKSAm
IFByb3BlcnR5Tm9kZTo6UHJpdmF0ZU1ldGhvZCkgeworICAgICAgICAgICAgVmFyaWFibGUgdmFy
ID0gZ2VuZXJhdG9yLnZhcmlhYmxlKCpub2RlLm5hbWUoKSk7CisgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdFB1dFRvU2NvcGUoZ2VuZXJhdG9yLnNjb3BlUmVnaXN0ZXIoKSwgdmFyLCB2YWx1ZS5n
ZXQoKSwgRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6Q29uc3RJbml0
aWFsaXphdGlvbik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcGVydHlOYW1lUmVnaXN0ZXI7CiAgICAgICAgIGlmIChub2Rl
Lm5hbWUoKSkKICAgICAgICAgICAgIHByb3BlcnR5TmFtZSA9IGdlbmVyYXRvci5lbWl0TG9hZChu
dWxscHRyLCAqbm9kZS5uYW1lKCkpOwogCkBAIC05MTAsMTQgKzkxOCwyNCBAQCBSZWdpc3RlcklE
KiBEb3RBY2Nlc3Nvck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcgogCiBSZWdpc3RlcklEKiBCYXNlRG90Tm9kZTo6ZW1pdEdldFByb3BlcnR5
VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBiYXNlLCBSZWZQdHI8UmVnaXN0ZXJJRD4mIHRoaXNWYWx1ZSkKIHsKLSAgICBpZiAo
aXNQcml2YXRlRmllbGQoKSkgeworICAgIGlmIChpc1ByaXZhdGVNZW1iZXIoKSkgeworICAgICAg
ICBpZiAoZ2VuZXJhdG9yLmlzUHJpdmF0ZU1ldGhvZChpZGVudGlmaWVyKCkpKSB7CisgICAgICAg
ICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnRpZmllcigpKTsKKyAg
ICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2
ZVNjb3BlKG51bGxwdHIsIHZhcik7CisKKyAgICAgICAgICAgIFJlZ2lzdGVySUQqIHByaXZhdGVC
cmFuZFN5bWJvbCA9IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZUJyYW5kKGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDaGVj
a1ByaXZhdGVCcmFuZChiYXNlLCBwcml2YXRlQnJhbmRTeW1ib2wpOworCisgICAgICAgICAgICBy
ZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZHN0LCBzY29wZS5nZXQoKSwgdmFyLCBU
aHJvd0lmTm90Rm91bmQpOworICAgICAgICB9CisKICAgICAgICAgVmFyaWFibGUgdmFyID0gZ2Vu
ZXJhdG9yLnZhcmlhYmxlKG1faWRlbnQpOwogICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCF2
YXIubG9jYWwoKSwgIlByaXZhdGUgRmllbGQgbmFtZXMgbXVzdCBiZSBzdG9yZWQgaW4gY2FwdHVy
ZWQgdmFyaWFibGVzIik7CiAKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2Vu
ZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAg
ICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShwcml2YXRlTmFtZS5nZXQoKSwgc2NvcGUuZ2V0
KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQpOwotICAgICAgICByZXR1cm4gZ2VuZXJhdG9y
LmVtaXREaXJlY3RHZXRCeVZhbChkc3QsIGJhc2UsIHByaXZhdGVOYW1lLmdldCgpKTsKKyAgICAg
ICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZU5hbWUoZHN0LCBiYXNlLCBwcml2YXRl
TmFtZS5nZXQoKSk7CiAgICAgfQogCiAgICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkgewpA
QCAtOTM3LDcgKzk1NSwxOCBAQCBSZWdpc3RlcklEKiBCYXNlRG90Tm9kZTo6ZW1pdEdldFByb3Bl
cnR5VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaQogCiBSZWdpc3RlcklE
KiBCYXNlRG90Tm9kZTo6ZW1pdFB1dFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZWZQdHI8UmVnaXN0ZXJJ
RD4mIHRoaXNWYWx1ZSkKIHsKLSAgICBpZiAoaXNQcml2YXRlRmllbGQoKSkgeworICAgIGlmIChp
c1ByaXZhdGVNZW1iZXIoKSkgeworICAgICAgICBhdXRvIGlkZW50aWZpZXJOYW1lID0gaWRlbnRp
ZmllcigpOworICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzUHJpdmF0ZU1ldGhvZChpZGVudGlmaWVy
TmFtZSkpIHsKKyAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShp
ZGVudGlmaWVyTmFtZSk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBn
ZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOworCisgICAgICAgICAgICBS
ZWdpc3RlcklEKiBwcml2YXRlQnJhbmRTeW1ib2wgPSBnZW5lcmF0b3IuZW1pdEdldFByaXZhdGVC
cmFuZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpKTsKKyAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0Q2hlY2tQcml2YXRlQnJhbmQoYmFzZSwgcHJpdmF0ZUJyYW5kU3ltYm9s
KTsKKworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvd1R5cGVFcnJvcigiVHJ5aW5nIHRv
IGFjY2VzcyBhIG5vdCBkZWZpbmVkIHByaXZhdGUgc2V0dGVyIik7CisgICAgICAgIH0KKwogICAg
ICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUobV9pZGVudCk7CiAgICAgICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoIXZhci5sb2NhbCgpLCAiUHJpdmF0ZSBGaWVsZCBuYW1lcyBt
dXN0IGJlIHN0b3JlZCBpbiBjYXB0dXJlZCB2YXJpYWJsZXMiKTsKIApAQCAtMTA5NSwxMiArMTEy
NCwxNCBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZQogICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRQdXRUaGlzVG9BcnJvd0Z1bmN0aW9uQ29udGV4dFNjb3BlKCk7CiAKICAgICAgICAgLy8gSW5p
dGlhbGl6ZSBpbnN0YW5jZSBmaWVsZHMgYWZ0ZXIgc3VwZXItY2FsbC4KKyAgICAgICAgaWYgKE9w
dGlvbnM6OnVzZVByaXZhdGVNZXRob2RzKCkgJiYgZ2VuZXJhdG9yLnByaXZhdGVCcmFuZFJlcXVp
cmVtZW50KCkgPT0gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5lZWRlZCkKKyAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0SW5zdGFsbFByaXZhdGVCcmFuZChnZW5lcmF0b3IudGhpc1JlZ2lzdGVy
KCkpOworCiAgICAgICAgIGlmIChnZW5lcmF0b3IubmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIo
KSA9PSBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6WWVzKSB7CiAgICAgICAgICAgICBBU1NF
UlQoZ2VuZXJhdG9yLmlzQ29uc3RydWN0b3IoKSB8fCBnZW5lcmF0b3IuaXNEZXJpdmVkQ29uc3Ry
dWN0b3JDb250ZXh0KCkpOwogICAgICAgICAgICAgZnVuYyA9IGdlbmVyYXRvci5lbWl0TG9hZERl
cml2ZWRDb25zdHJ1Y3RvcigpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRJbnN0YW5jZUZp
ZWxkSW5pdGlhbGl6YXRpb25JZk5lZWRlZChnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCksIGZ1bmMu
Z2V0KCksIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIH0KLQog
ICAgICAgICByZXR1cm4gcmV0OwogICAgIH0KIApAQCAtMjI1NCwxNCArMjI4NSwxNCBAQCBSZWdp
c3RlcklEKiBQb3N0Zml4Tm9kZTo6ZW1pdERvdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QpCiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRv
dEFjY2Vzc29yLT5kaXZvdCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RTdGFydCgpLCBkb3RBY2Nlc3Nv
ci0+ZGl2b3RFbmQoKSk7CiAKLSAgICBpZiAoZG90QWNjZXNzb3ItPmlzUHJpdmF0ZUZpZWxkKCkp
IHsKKyAgICBpZiAoZG90QWNjZXNzb3ItPmlzUHJpdmF0ZU1lbWJlcigpKSB7CiAgICAgICAgIEFT
U0VSVCghYmFzZUlzU3VwZXIpOwogICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFy
aWFibGUoaWRlbnQpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0
b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwogICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgICAgIGdl
bmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHByaXZhdGVOYW1lLmdldCgpLCBzY29wZS5nZXQoKSwg
dmFyLCBEb05vdFRocm93SWZOb3RGb3VuZCk7CiAKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXREaXJlY3RHZXRCeVZhbChnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCksIGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpKTsKKyAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlTmFtZShnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCksIGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpKTsKICAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IG9sZFZhbHVlID0gZW1pdFBvc3RJbmNPckRlYyhnZW5lcmF0b3Is
IGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCksIG1fb3BlcmF0b3Ip
OwogICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJpdmF0ZUZpZWxkUHV0
KGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpLCB2YWx1ZS5nZXQoKSk7CkBAIC0yNDkzLDE0
ICsyNTI0LDE0IEBAIFJlZ2lzdGVySUQqIFByZWZpeE5vZGU6OmVtaXREb3QoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogCiAgICAgZ2VuZXJhdG9yLmVtaXRF
eHByZXNzaW9uSW5mbyhkb3RBY2Nlc3Nvci0+ZGl2b3QoKSwgZG90QWNjZXNzb3ItPmRpdm90U3Rh
cnQoKSwgZG90QWNjZXNzb3ItPmRpdm90RW5kKCkpOwogICAgIFJlZ2lzdGVySUQqIHZhbHVlOwot
ICAgIGlmIChkb3RBY2Nlc3Nvci0+aXNQcml2YXRlRmllbGQoKSkgeworICAgIGlmIChkb3RBY2Nl
c3Nvci0+aXNQcml2YXRlTWVtYmVyKCkpIHsKICAgICAgICAgQVNTRVJUKCFiYXNlTm9kZS0+aXNT
dXBlck5vZGUoKSk7CiAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShp
ZGVudCk7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0
UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBw
cml2YXRlTmFtZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIERv
Tm90VGhyb3dJZk5vdEZvdW5kKTsKIAotICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0RGly
ZWN0R2V0QnlWYWwocHJvcERzdC5nZXQoKSwgYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCkp
OworICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZU5hbWUocHJvcERzdC5n
ZXQoKSwgYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCkpOwogICAgICAgICBlbWl0SW5jT3JE
ZWMoZ2VuZXJhdG9yLCB2YWx1ZSwgbV9vcGVyYXRvcik7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0
RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRQcml2YXRlRmllbGRQdXQoYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUu
Z2V0KCksIHZhbHVlKTsKQEAgLTQ4OTcsNiArNDkyOCwxMyBAQCBSZWdpc3RlcklEKiBDbGFzc0V4
cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRAogICAgIGlmIChtX25lZWRzTGV4aWNhbFNjb3BlKQogICAgICAgICBnZW5lcmF0b3IucHVz
aExleGljYWxTY29wZSh0aGlzLCBCeXRlY29kZUdlbmVyYXRvcjo6VERaQ2hlY2tPcHRpbWl6YXRp
b246Ok9wdGltaXplLCBCeXRlY29kZUdlbmVyYXRvcjo6TmVzdGVkU2NvcGVUeXBlOjpJc05lc3Rl
ZCk7CiAKKyAgICBib29sIGhhc1ByaXZhdGVOYW1lcyA9ICEhbV9sZXhpY2FsVmFyaWFibGVzLnBy
aXZhdGVOYW1lc1NpemUoKTsKKyAgICBib29sIHNob3VsZEVtaXRQcml2YXRlQnJhbmQgPSBtX2xl
eGljYWxWYXJpYWJsZXMuaGFzUHJpdmF0ZU1ldGhvZE9yQWNjZXNzb3IoKTsKKyAgICBpZiAoaGFz
UHJpdmF0ZU5hbWVzKQorICAgICAgICBnZW5lcmF0b3IucHVzaFByaXZhdGVBY2Nlc3NOYW1lcyht
X2xleGljYWxWYXJpYWJsZXMucHJpdmF0ZU5hbWVFbnZpcm9ubWVudCgpKTsKKyAgICBpZiAoc2hv
dWxkRW1pdFByaXZhdGVCcmFuZCkKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRDcmVhdGVQcml2YXRl
QnJhbmQoZ2VuZXJhdG9yLnNjb3BlUmVnaXN0ZXIoKSwgbV9wb3NpdGlvbiwgbV9wb3NpdGlvbiwg
bV9wb3NpdGlvbik7CisKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3VwZXJjbGFzczsKICAgICBp
ZiAobV9jbGFzc0hlcml0YWdlKSB7CiAgICAgICAgIHN1cGVyY2xhc3MgPSBnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCk7CkBAIC00OTA3LDE3ICs0OTQ1LDE4IEBAIFJlZ2lzdGVySUQqIENsYXNzRXhw
ck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklECiAgICAgYm9vbCBuZWVkc0hvbWVPYmplY3QgPSBmYWxzZTsKIAogICAgIGF1dG8gbmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSB0aGlzLT5oYXNJbnN0YW5jZUZpZWxkcygpID8gTmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXI6OlllcyA6IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpO
bzsKLQorICAgIGF1dG8gcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBzaG91bGRFbWl0UHJpdmF0
ZUJyYW5kID8gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5lZWRlZCA6IFByaXZhdGVCcmFuZFJl
cXVpcmVtZW50OjpOb25lOwogICAgIGlmIChtX2NvbnN0cnVjdG9yRXhwcmVzc2lvbikgewogICAg
ICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvckV4cHJlc3Npb24tPmlzRnVuY0V4cHJOb2RlKCkpOwog
ICAgICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbWV0YWRhdGEgPSBzdGF0aWNfY2FzdDxGdW5j
RXhwck5vZGUqPihtX2NvbnN0cnVjdG9yRXhwcmVzc2lvbiktPm1ldGFkYXRhKCk7CiAgICAgICAg
IG1ldGFkYXRhLT5zZXRFY21hTmFtZShlY21hTmFtZSgpKTsKICAgICAgICAgbWV0YWRhdGEtPnNl
dENsYXNzU291cmNlKG1fY2xhc3NTb3VyY2UpOwogICAgICAgICBtZXRhZGF0YS0+c2V0TmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIobmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPT0gTmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Olllcyk7CisgICAgICAgIG1ldGFkYXRhLT5zZXRQcml2YXRl
QnJhbmRSZXF1aXJlbWVudChwcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7CiAgICAgICAgIGNvbnN0
cnVjdG9yID0gZ2VuZXJhdG9yLmVtaXROb2RlKGNvbnN0cnVjdG9yLmdldCgpLCBtX2NvbnN0cnVj
dG9yRXhwcmVzc2lvbik7CiAgICAgICAgIG5lZWRzSG9tZU9iamVjdCA9IG1fY2xhc3NIZXJpdGFn
ZSB8fCBtZXRhZGF0YS0+c3VwZXJCaW5kaW5nKCkgPT0gU3VwZXJCaW5kaW5nOjpOZWVkZWQ7CiAg
ICAgfSBlbHNlCi0gICAgICAgIGNvbnN0cnVjdG9yID0gZ2VuZXJhdG9yLmVtaXROZXdEZWZhdWx0
Q29uc3RydWN0b3IoY29uc3RydWN0b3IuZ2V0KCksIG1fY2xhc3NIZXJpdGFnZSA/IENvbnN0cnVj
dG9yS2luZDo6RXh0ZW5kcyA6IENvbnN0cnVjdG9yS2luZDo6QmFzZSwgbV9uYW1lLCBlY21hTmFt
ZSgpLCBtX2NsYXNzU291cmNlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcik7CisgICAgICAg
IGNvbnN0cnVjdG9yID0gZ2VuZXJhdG9yLmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoY29uc3Ry
dWN0b3IuZ2V0KCksIG1fY2xhc3NIZXJpdGFnZSA/IENvbnN0cnVjdG9yS2luZDo6RXh0ZW5kcyA6
IENvbnN0cnVjdG9yS2luZDo6QmFzZSwgbV9uYW1lLCBlY21hTmFtZSgpLCBtX2NsYXNzU291cmNl
LCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOwog
CiAgICAgY29uc3QgYXV0byYgcHJvcGVydHlOYW1lcyA9IGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVz
KCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3RvdHlwZSA9IGdlbmVyYXRvci5lbWl0TmV3
T2JqZWN0KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSk7CkBAIC00OTk2LDYgKzUwMzUsOSBAQCBS
ZWdpc3RlcklEKiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogICAgIGlmIChtX25lZWRzTGV4aWNhbFNjb3BlKQogICAg
ICAgICBnZW5lcmF0b3IucG9wTGV4aWNhbFNjb3BlKHRoaXMpOwogCisgICAgaWYgKGhhc1ByaXZh
dGVOYW1lcykKKyAgICAgICAgZ2VuZXJhdG9yLnBvcFByaXZhdGVBY2Nlc3NOYW1lcygpOworCiAg
ICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwg
Y29uc3RydWN0b3IuZ2V0KCkpLCBjb25zdHJ1Y3Rvci5nZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCmluZGV4
IDg3N2U2MzI1NTBiY2Q1MjA2MGE3NTQ1YWVmNTA4NmRjMTkzYTRmZGYuLjc0MGFkODJjNzk1NGEw
Zjk4MjgyMjgzNTY4YjEzZTE5Zjg0MWJmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcApAQCAtMjU5LDExICsyNTksMTEg
QEAgSlNWYWx1ZSBEZWJ1Z2dlckNhbGxGcmFtZTo6ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24o
Y29uc3QgU3RyaW5nJiBzY3JpcHQsIEpTT2IKICAgICAgICAgZXZhbENvbnRleHRUeXBlID0gRXZh
bENvbnRleHRUeXBlOjpOb25lOwogCiAgICAgVERaRW52aXJvbm1lbnQgdmFyaWFibGVzVW5kZXJU
RFo7Ci0gICAgVmFyaWFibGVFbnZpcm9ubWVudCBwcml2YXRlTmFtZXM7Ci0gICAgSlNTY29wZTo6
Y29sbGVjdENsb3N1cmVWYXJpYWJsZXNVbmRlclREWihzY29wZSgpLT5qc1Njb3BlKCksIHZhcmlh
Ymxlc1VuZGVyVERaLCBwcml2YXRlTmFtZXMpOworICAgIFByaXZhdGVOYW1lRW52aXJvbm1lbnQg
cHJpdmF0ZU5hbWVFbnZpcm9ubWVudDsKKyAgICBKU1Njb3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlh
Ymxlc1VuZGVyVERaKHNjb3BlKCktPmpzU2NvcGUoKSwgdmFyaWFibGVzVW5kZXJURFosIHByaXZh
dGVOYW1lRW52aXJvbm1lbnQpOwogCiAgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBjb2RlQmxvY2st
Pm93bmVyRXhlY3V0YWJsZSgpLT5pc0luU3RyaWN0Q29udGV4dCgpID8gRUNNQU1vZGU6OnN0cmlj
dCgpIDogRUNNQU1vZGU6OnNsb3BweSgpOwotICAgIGF1dG8qIGV2YWwgPSBEaXJlY3RFdmFsRXhl
Y3V0YWJsZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgbWFrZVNvdXJjZShzY3JpcHQsIGNhbGxGcmFt
ZS0+Y2FsbGVyU291cmNlT3JpZ2luKHZtKSksIGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2so
KS0+ZGVyaXZlZENvbnRleHRUeXBlKCksIGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+
bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9j
aygpLT5pc0Fycm93RnVuY3Rpb24oKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJ
bnNpZGVPcmRpbmFyeUZ1bmN0aW9uKCksIGV2YWxDb250ZXh0VHlwZSwgJnZhcmlhYmxlc1VuZGVy
VERaLCAmcHJpdmF0ZU5hbWVzLCBlY21hTW9kZSk7CisgICAgYXV0byogZXZhbCA9IERpcmVjdEV2
YWxFeGVjdXRhYmxlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtYWtlU291cmNlKHNjcmlwdCwgY2Fs
bEZyYW1lLT5jYWxsZXJTb3VyY2VPcmlnaW4odm0pKSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVC
bG9jaygpLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9j
aygpLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBjb2RlQmxvY2stPnVubGlua2VkQ29k
ZUJsb2NrKCktPnByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCksIGNvZGVCbG9jay0+dW5saW5rZWRD
b2RlQmxvY2soKS0+aXNBcnJvd0Z1bmN0aW9uKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxl
KCktPmlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbigpLCBldmFsQ29udGV4dFR5cGUsICZ2YXJpYWJs
ZXNVbmRlclREWiwgJnByaXZhdGVOYW1lRW52aXJvbm1lbnQsIGVjbWFNb2RlKTsKICAgICBpZiAo
VU5MSUtFTFkoY2F0Y2hTY29wZS5leGNlcHRpb24oKSkpIHsKICAgICAgICAgZXhjZXB0aW9uID0g
Y2F0Y2hTY29wZS5leGNlcHRpb24oKTsKICAgICAgICAgY2F0Y2hTY29wZS5jbGVhckV4Y2VwdGlv
bigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDdiNWI2ODQ1ODg1YTQ1ZDMyY2Y5MDIyYzA5MGVh
YWZlZTg3M2Q2YmQuLjQ2MGE2MGU0MjM5MDEwZDRmOWI0ZTRkNzlmYWFlN2FhZjI3ODMyOTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50
ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBcnJheUNvbnN0
cnVjdG9yLmgiCiAjaW5jbHVkZSAiQXJyYXlQcm90b3R5cGUuaCIKICNpbmNsdWRlICJDYWNoZWFi
bGVJZGVudGlmaWVySW5saW5lcy5oIgorI2luY2x1ZGUgIkNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVz
LmgiCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkRGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJDbG9iYmVyU3RhdGUuaCIKICNpbmNsdWRlICJET01KSVRHZXR0ZXJT
ZXR0ZXIuaCIKQEAgLTQ3LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJNYXRoQ29tbW9uLmgiCiAjaW5j
bHVkZSAiTnVtYmVyQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCisj
aW5jbHVkZSAiU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmgiCiAjaW5jbHVkZSAiU3RyaW5nT2JqZWN0
LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlQ2FjaGUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVSYXJl
RGF0YUlubGluZXMuaCIKQEAgLTQwMzUsNiArNDAzNyw4IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJM
aW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgQ2hlY2tQcml2YXRlQnJhbmQ6
CisgICAgY2FzZSBTZXRQcml2YXRlQnJhbmQ6CiAgICAgY2FzZSBQdXRQcml2YXRlTmFtZTogewog
ICAgICAgICBjbG9iYmVyV29ybGQoKTsKICAgICAgICAgYnJlYWs7CkBAIC00MzY1LDYgKzQzNjks
OCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRl
RWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1
czoKICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5
U3RhdHVzOgorICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CisgICAgY2Fz
ZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAgY2FzZSBDbGVhckNhdGNoTG9jYWxz
OgogICAgICAgICBicmVhazsKIApAQCAtNDU1Myw2ICs0NTU5LDIxIEBAIHZvaWQgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmZpbHRlcklDU3RhdHVzKE5vZGUqIG5vZGUp
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJh
bmRTdGF0dXM6IHsKKyAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgaWYgKHZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpCisg
ICAgICAgICAgICBub2RlLT5jaGVja1ByaXZhdGVCcmFuZFN0YXR1cygpLT5maWx0ZXIodmFsdWUu
bV9zdHJ1Y3R1cmUudG9TdHJ1Y3R1cmVTZXQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwor
ICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOiB7CisgICAgICAgIEFic3RyYWN0
VmFsdWUmIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIGlmICh2YWx1
ZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgpKQorICAgICAgICAgICAgbm9kZS0+c2V0UHJpdmF0ZUJy
YW5kU3RhdHVzKCktPmZpbHRlcih2YWx1ZS5tX3N0cnVjdHVyZS50b1N0cnVjdHVyZVNldCgpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorCisKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3Bw
CmluZGV4IDZiMzYxOTk1ZTJkODU2Y2NjYzg0Yzk5NTJmZDBjZDNjY2I1M2FjOGYuLjZmODE3Mzg4
YWMzOGZlNWFmZTAyMGU0MGYwNGUzNjczNTQxNTU2MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcApA
QCAtNDA2LDYgKzQwNiw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJD
YWxsTGlua1N0YXR1czoKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoK
ICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgorICAgICAgICAgICAg
ICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CisgICAgICAgICAgICAgICAg
Y2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogCiAgICAgICAgICAgICAgICAgY2FzZSBDaGVja0FycmF5T3JFbXB0eToKQEAgLTEyNjYs
NyArMTI2OCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlk
U3RhdHVzOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAgICAg
ICAgICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBGaWx0ZXJEZWxldGVCeVN0YXR1czogeworICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyRGVs
ZXRlQnlTdGF0dXM6CisgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFu
ZFN0YXR1czoKKyAgICAgICAgICAgICAgICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1
czogewogICAgICAgICAgICAgICAgICAgICBpZiAoIWlzRWxpbWluYXRlZEFsbG9jYXRpb24obm9k
ZS0+Y2hpbGQxKCkubm9kZSgpKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUobV9ncmFwaCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGMzMDJiY2VkMDg5Yzlj
NDNjMjlkZGY4ODFlYTI4NzcyNjQzZDc0MGQuLjM5M2MwNWIxOWUzNWMwOGEzOTQyNGU3MTE5OTk1
NDc2ODE0YWMwM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVPcGVyYW5k
c0ZvckNoZWNrcG9pbnQuaCIKICNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5o
IgogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCisjaW5jbHVkZSAiQ2hlY2tQcml2YXRlQnJh
bmRTdGF0dXMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJDb2RlQmxvY2tX
aXRoSklUVHlwZS5oIgogI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgpAQCAtNzQsNiArNzUs
NyBAQAogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMu
aCIKICNpbmNsdWRlICJSZWdFeHBQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJTZXRQcml2YXRlQnJh
bmRTdGF0dXMuaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgogI2luY2x1ZGUgIlN0cmlu
Z0NvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlU3R1YkluZm8uaCIKQEAgLTYyNTgs
NiArNjI2MCw5MSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxp
bWl0KQogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X2J5X3ZhbF93aXRoX3RoaXMpOwog
ICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9jaGVja19wcml2YXRlX2JyYW5kOiB7CisgICAg
ICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcENoZWNrUHJp
dmF0ZUJyYW5kPigpOworICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29kZS5tX2Jh
c2UpOworICAgICAgICAgICAgTm9kZSogYnJhbmQgPSBnZXQoYnl0ZWNvZGUubV9icmFuZCk7Cisg
ICAgICAgICAgICBib29sIGNvbXBpbGVkQXNDaGVja1N0cnVjdHVyZSA9IGZhbHNlOworCisgICAg
ICAgICAgICBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyBjaGVja1N0YXR1cyA9IENoZWNrUHJpdmF0
ZUJyYW5kU3RhdHVzOjpjb21wdXRlRm9yKAorICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tU
b3AtPm1fcHJvZmlsZWRCbG9jaywKKyAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5t
X2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNrLAorICAgICAgICAgICAgICAgIGN1cnJlbnRD
b2RlT3JpZ2luKCkpOworCisgICAgICAgICAgICBpZiAoIW1faW5saW5lU3RhY2tUb3AtPm1fZXhp
dFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZElkZW50KQorICAgICAgICAg
ICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1f
Y3VycmVudEluZGV4LCBCYWRUeXBlKQorICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNr
VG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDb25zdGFu
dFZhbHVlKSkgeworCisgICAgICAgICAgICAgICAgaWYgKENhY2hlYWJsZUlkZW50aWZpZXIgaWRl
bnRpZmllciA9IGNoZWNrU3RhdHVzLnNpbmdsZUlkZW50aWZpZXIoKSkgeworICAgICAgICAgICAg
ICAgICAgICBtX2dyYXBoLmlkZW50aWZpZXJzKCkuZW5zdXJlKGlkZW50aWZpZXIudWlkKCkpOwor
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaWRlbnRpZmllci5pc1N5bWJvbCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plbiA9IG1fZ3JhcGguZnJlZXplU3Ryb25n
KGlkZW50aWZpZXIuY2VsbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVj
a0lzQ29uc3RhbnQsIE9wSW5mbyhmcm96ZW4pLCBicmFuZCk7CisKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGNoZWNrU3RhdHVzLmlzU2ltcGxlKCkgJiYgY2hlY2tTdGF0dXMudmFyaWFudHMoKS5z
aXplKCkgJiYgT3B0aW9uczo6dXNlQWNjZXNzSW5saW5pbmcoKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKGNoZWNrU3RhdHVzLnZhcmlhbnRzKCkuc2l6ZSgpID09IDEpOyAvLyBJ
ZiB3ZSBoYXZlIHNpbmdsZSBpZGVudGlmaWVyLCB3ZSBzaG91bGQgaGF2ZSBvbmx5IDEgdmFyaWFu
dC4KKyAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudCB2YXJp
YW50ID0gY2hlY2tTdGF0dXMudmFyaWFudHMoKVswXTsKKworICAgICAgICAgICAgICAgICAgICAg
ICAgYWRkVG9HcmFwaChGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1cywgT3BJbmZvKG1fZ3Jh
cGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMoKS5hZGRDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyhj
dXJyZW50Q29kZU9yaWdpbigpLCBjaGVja1N0YXR1cykpLCBiYXNlKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBoLmFkZFN0
cnVjdHVyZVNldCh2YXJpYW50LnN0cnVjdHVyZVNldCgpKSksIGJhc2UpOworCisgICAgICAgICAg
ICAgICAgICAgICAgICBjb21waWxlZEFzQ2hlY2tTdHJ1Y3R1cmUgPSB0cnVlOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBpZiAoIWNvbXBpbGVkQXNDaGVja1N0cnVjdHVyZSkKKyAgICAgICAgICAgICAgICBhZGRU
b0dyYXBoKENoZWNrUHJpdmF0ZUJyYW5kLCBiYXNlLCBicmFuZCk7CisKKyAgICAgICAgICAgIE5F
WFRfT1BDT0RFKG9wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOworICAgICAgICB9CisKKyAgICAgICAg
Y2FzZSBvcF9zZXRfcHJpdmF0ZV9icmFuZDogeworICAgICAgICAgICAgYXV0byBieXRlY29kZSA9
IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BTZXRQcml2YXRlQnJhbmQ+KCk7CisgICAgICAgICAg
ICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1fYmFzZSk7CisgICAgICAgICAgICBOb2RlKiBi
cmFuZCA9IGdldChieXRlY29kZS5tX2JyYW5kKTsKKworICAgICAgICAgICAgYm9vbCBpbmxpbmVk
U2V0UHJpdmF0ZUJyYW5kID0gZmFsc2U7CisgICAgICAgICAgICBTZXRQcml2YXRlQnJhbmRTdGF0
dXMgc2V0U3RhdHVzID0gU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOjpjb21wdXRlRm9yKAorICAgICAg
ICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKKyAgICAgICAgICAg
ICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNrLAor
ICAgICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCkpOworCisgICAgICAgICAgICBpZiAo
IW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5k
ZXgsIEJhZElkZW50KQorICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4
aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRUeXBlKQorICAgICAgICAg
ICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1f
Y3VycmVudEluZGV4LCBCYWRDb25zdGFudFZhbHVlKSkgeworCisgICAgICAgICAgICAgICAgaWYg
KENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IHNldFN0YXR1cy5zaW5nbGVJZGVudGlm
aWVyKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGlkZW50aWZpZXIuaXNTeW1ib2wo
KSk7CisgICAgICAgICAgICAgICAgICAgIEZyb3plblZhbHVlKiBmcm96ZW4gPSBtX2dyYXBoLmZy
ZWV6ZVN0cm9uZyhpZGVudGlmaWVyLmNlbGwoKSk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRv
R3JhcGgoQ2hlY2tJc0NvbnN0YW50LCBPcEluZm8oZnJvemVuKSwgYnJhbmQpOworCisKKyAgICAg
ICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBpbmNsdWRlIGEgTXVsdGlTZXRQcml2
YXRlQnJhbmQgdG8gaGFuZGxlIHBvbHltb3JwaGljIGNhc2VzCisgICAgICAgICAgICAgICAgICAg
IGlmIChzZXRTdGF0dXMuaXNTaW1wbGUoKSAmJiBzZXRTdGF0dXMudmFyaWFudHMoKS5zaXplKCkg
PT0gMSAmJiBPcHRpb25zOjp1c2VBY2Nlc3NJbmxpbmluZygpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBTZXRQcml2YXRlQnJhbmRWYXJpYW50IHZhcmlhbnQgPSBzZXRTdGF0dXMudmFyaWFu
dHMoKVswXTsKKworICAgICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJTZXRQ
cml2YXRlQnJhbmRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2Vz
KCkuYWRkU2V0UHJpdmF0ZUJyYW5kU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIHNldFN0YXR1
cykpLCBiYXNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1
Y3R1cmUsIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldCh2YXJpYW50Lm9sZFN0cnVjdHVy
ZSgpKSksIGJhc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHZhcmlhbnQub2xk
U3RydWN0dXJlKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkp
OworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHZhcmlhbnQubmV3U3RydWN0dXJlKCkp
OworCisgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2l0aW9uKiB0cmFuc2l0aW9uID0gbV9n
cmFwaC5tX3RyYW5zaXRpb25zLmFkZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQub2xkU3RydWN0dXJlKCkpLCBtX2dyYXBoLnJl
Z2lzdGVyU3RydWN0dXJlKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpKTsKKworICAgICAgICAgICAg
ICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRTdHJ1Y3R1cmUsIE9wSW5mbyh0cmFuc2l0aW9uKSwg
YmFzZSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZWRTZXRQcml2YXRlQnJhbmQg
PSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWlubGluZWRTZXRQcml2YXRlQnJhbmQpCisgICAg
ICAgICAgICAgICAgYWRkVG9HcmFwaChTZXRQcml2YXRlQnJhbmQsIGJhc2UsIGJyYW5kKTsKKwor
ICAgICAgICAgICAgTkVYVF9PUENPREUob3Bfc2V0X3ByaXZhdGVfYnJhbmQpOworICAgICAgICB9
CisKICAgICAgICAgY2FzZSBvcF9wdXRfcHJpdmF0ZV9uYW1lOiB7CiAgICAgICAgICAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOwog
ICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29kZS5tX2Jhc2UpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDEwYjg1YWQ5MTVh
OWJhYjIyZmZmNDUwMDYyYTEzMWFmZGE3NTZkYjMuLmFjYTAwZGU0ZjY1MWY5NGVhNDhjOTRjNjg1
OTllYTVkMjdlZGJjMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFi
aWxpdGllcy5jcHAKQEAgLTI5NCw2ICsyOTQsOCBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0
eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSQog
ICAgIGNhc2Ugb3Bfc3VwZXJfc2FtcGxlcl9lbmQ6CiAgICAgY2FzZSBvcF9nZXRfcHJpdmF0ZV9u
YW1lOgogICAgIGNhc2Ugb3BfcHV0X3ByaXZhdGVfbmFtZToKKyAgICBjYXNlIG9wX3NldF9wcml2
YXRlX2JyYW5kOgorICAgIGNhc2Ugb3BfY2hlY2tfcHJpdmF0ZV9icmFuZDoKICAgICAgICAgcmV0
dXJuIENhbkNvbXBpbGVBbmRJbmxpbmU7CiAKICAgICBjYXNlIG9wX3N3aXRjaF9zdHJpbmc6IC8v
IERvbid0IGlubGluZSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gY29weSBzdHJpbmcgdGFibGVz
IGluIHRoZSBjb25jdXJyZW50IEpJVC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgKaW5kZXggNTRlMzVlN2M1NjhhNTA2MTk2ZjEzZmE1OTY3NDgzZmU3YWU4NDYwNi4u
YzYzNGI3MjZlMTdmZTU3OGRhN2RkZmU5MjI2YTY5ZTNiNjE3MjZkMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTUwNSw2ICs1MDUsOCBAQCB2b2lkIGNs
b2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVh
ZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICBjYXNl
IEZpbHRlckluQnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgorICAg
IGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJTZXRQ
cml2YXRlQnJhbmRTdGF0dXM6CiAgICAgICAgIHdyaXRlKFNpZGVTdGF0ZSk7CiAgICAgICAgIHJl
dHVybjsKICAgICAgICAgCkBAIC02NzcsNiArNjc5LDkgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRl
RnUKICAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKICAgICBjYXNlIEdldFByaXZhdGVOYW1l
OgogICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOgorICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
aGF2ZSBhIGJldHRlciBjbG9iZXJpemUgcnVsZSBmb3IgYm90aCBDaGVja1ByaXZhdGVCcmFuZCBh
bmQgU2V0UHJpdmF0ZUJyYW5kCisgICAgY2FzZSBDaGVja1ByaXZhdGVCcmFuZDoKKyAgICBjYXNl
IFNldFByaXZhdGVCcmFuZDoKICAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eToKICAgICBjYXNl
IERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgY2FzZSBEZWxldGVCeUlkOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAppbmRleCBi
OTVmMjQzNTBiYjc1OWRlZDY4OTZjZmU2MzAxZTRmYmU1OTBiYzdlLi42ZmQ0YTc2YjYxOGY4OTJi
YTU1N2I5ODNkM2ZlNTUzMjY0YzRkOGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcApAQCAtODQsNiArODQsOCBAQCBib29sIGNs
b2JiZXJzRXhpdFN0YXRlKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEZpbHRl
clB1dEJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CiAgICAgY2FzZSBG
aWx0ZXJEZWxldGVCeVN0YXR1czoKKyAgICBjYXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5kU3Rh
dHVzOgorICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOgogICAgIGNhc2UgVHJ5
R2V0QnlJZDoKICAgICAgICAgLy8gVGhlc2UgZG8gY2xvYmJlciBtZW1vcnksIGJ1dCBub3RoaW5n
IHRoYXQgaXMgb2JzZXJ2YWJsZS4gSXQgbWF5IGJlIG5pY2UgdG8gc2VwYXJhdGUgdGhlCiAgICAg
ICAgIC8vIGhlYXBzIGludG8gdGhvc2UgdGhhdCBhcmUgb2JzZXJ2YWJsZSBhbmQgdGhvc2UgdGhh
dCBhcmVuJ3QsIGJ1dCB3ZSBkb24ndCBkbyB0aGF0IHJpZ2h0IG5vdy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCBlOTkzZmIwNjFhYjM5ZDA2ODVjMjExMmNlNTNh
NjQ0NjBhZDdmZTlkLi5iNzE2MTBhNTFkYjcxN2U1M2RiZTVlNDliM2NhZTZiYjA3ODUyNjYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0yNTAsNiArMjUwLDgg
QEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgRmlsdGVy
UHV0QnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKICAgICBjYXNlIEZp
bHRlckRlbGV0ZUJ5U3RhdHVzOgorICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0
dXM6CisgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAgY2FzZSBEYXRl
R2V0SW50MzJPck5hTjoKICAgICBjYXNlIERhdGVHZXRUaW1lOgogICAgIGNhc2UgRGF0YVZpZXdH
ZXRJbnQ6CkBAIC0zMjcsNiArMzI5LDggQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlKQogICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgogICAgIGNhc2UgR2V0UHJpdmF0
ZU5hbWU6CiAgICAgY2FzZSBHZXRQcml2YXRlTmFtZUJ5SWQ6CisgICAgY2FzZSBTZXRQcml2YXRl
QnJhbmQ6CisgICAgY2FzZSBDaGVja1ByaXZhdGVCcmFuZDoKICAgICBjYXNlIFB1dFN0YWNrOgog
ICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CiAgICAgY2FzZSBSZWdFeHBFeGVjOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggYzJhNDVkMDQ4ZDg3N2E0
YzdjYThhMTJkZTMyNTdiM2I1MDg5M2U0My4uMTgxY2IyYjZmOWM4NzQ4YzI3MWQ4NWNhNjNhN2Vh
Mjk0OWM4YTM2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwCkBAIC0xOTMxLDYgKzE5MzEsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAKKyAgICAg
ICAgY2FzZSBTZXRQcml2YXRlQnJhbmQ6IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4o
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxTeW1ib2xVc2U+KG5vZGUtPmNo
aWxkMigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBD
aGVja1ByaXZhdGVCcmFuZDoKICAgICAgICAgY2FzZSBQdXRQcml2YXRlTmFtZTogewogICAgICAg
ICAgICAgZml4RWRnZTxTeW1ib2xVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtMjgyNyw2ICsyODM0LDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBGaWx0ZXJQ
dXRCeUlkU3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKICAgICAgICAg
Y2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZh
dGVCcmFuZFN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6
CiAgICAgICAgIGNhc2UgSW52YWxpZGF0aW9uUG9pbnQ6CiAgICAgICAgIGNhc2UgQ3JlYXRlQXJn
dW1lbnRzQnV0dGVyZmx5OgogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCmluZGV4IGQ4NmFjYTQxZDZjNDlkZmI2YTYxYzFj
NThjMzUzMWVmMWRlNjcwMWQuLjc4MjY0Y2VhMDE3NWM0ZDYyYTQyZWEwYzE1N2UwNDQxYjViNTgx
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCkBA
IC0yNDUsNiArMjQ1LDcgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5r
QnVmZmVyKQogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZGVsQnlWYWxzLCBsaW5rQnVmZmVy
KTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2luQnlJZHMsIGxpbmtCdWZmZXIpOwogICAg
IGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5zdGFuY2VPZnMsIGxpbmtCdWZmZXIpOworICAgIGZp
bmFsaXplSW5saW5lQ2FjaGVzKG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMsIGxpbmtCdWZmZXIpOwog
CiAgICAgYXV0byBsaW5rQ2FsbFRodW5rID0gRnVuY3Rpb25QdHI8Tm9QdHJUYWc+KHZtKCkuZ2V0
Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkp
OwogICAgIGZvciAoYXV0byYgcmVjb3JkIDogbV9qc0NhbGxzKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKaW5kZXggOTlmYmI4MmE4OGJjZmY0MzA1YzkzMzM3
YjRmYmUyMjlmZjMxNGUwZC4uODhkNjI3NjcyNDhlMTg4ZWYwMzc1OTYzZGMxNzJiZmM1NGJiZDgw
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaApAQCAtMjEy
LDYgKzIxMiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1faW5CeUlkcy5hcHBlbmQoSW5saW5lQ2Fj
aGVXcmFwcGVyPEpJVEluQnlJZEdlbmVyYXRvcj4oZ2VuLCBzbG93UGF0aCkpOwogICAgIH0KIAor
ICAgIHZvaWQgYWRkUHJpdmF0ZUJyYW5kQWNjZXNzKGNvbnN0IEpJVFByaXZhdGVCcmFuZEFjY2Vz
c0dlbmVyYXRvciYgZ2VuLCBTbG93UGF0aEdlbmVyYXRvciogc2xvd1BhdGgpCisgICAgeworICAg
ICAgICBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzLmFwcGVuZChJbmxpbmVDYWNoZVdyYXBwZXI8SklU
UHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yPihnZW4sIHNsb3dQYXRoKSk7CisgICAgfQorCiAg
ICAgdm9pZCBhZGRKU0NhbGwoQ2FsbCBmYXN0Q2FsbCwgQ2FsbCBzbG93Q2FsbCwgRGF0YUxhYmVs
UHRyIHRhcmdldFRvQ2hlY2ssIENhbGxMaW5rSW5mbyogaW5mbykKICAgICB7CiAgICAgICAgIG1f
anNDYWxscy5hcHBlbmQoSlNDYWxsUmVjb3JkKGZhc3RDYWxsLCBzbG93Q2FsbCwgdGFyZ2V0VG9D
aGVjaywgaW5mbykpOwpAQCAtMzYyLDYgKzM2Nyw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPElu
bGluZUNhY2hlV3JhcHBlcjxKSVREZWxCeVZhbEdlbmVyYXRvcj4sIDQ+IG1fZGVsQnlWYWxzOwog
ICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBwZXI8SklUSW5CeUlkR2VuZXJhdG9yPiwgND4gbV9p
bkJ5SWRzOwogICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBwZXI8SklUSW5zdGFuY2VPZkdlbmVy
YXRvcj4sIDQ+IG1faW5zdGFuY2VPZnM7CisgICAgVmVjdG9yPElubGluZUNhY2hlV3JhcHBlcjxK
SVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I+LCA0PiBtX3ByaXZhdGVCcmFuZEFjY2Vzc2Vz
OwogICAgIFZlY3RvcjxKU0NhbGxSZWNvcmQsIDQ+IG1fanNDYWxsczsKICAgICBWZWN0b3I8SlNE
aXJlY3RDYWxsUmVjb3JkLCA0PiBtX2pzRGlyZWN0Q2FsbHM7CiAgICAgVmVjdG9yPEpTRGlyZWN0
VGFpbENhbGxSZWNvcmQsIDQ+IG1fanNEaXJlY3RUYWlsQ2FsbHM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdNYXlFeGl0LmNwcAppbmRleCAwNWI5M2JlMDkxYWZhMWMxMTBlNWI4ZDM4YmRj
M2MxYWQzOTdjMTU1Li42N2JhMTg0NWQxNmJmODMzYmQ1NjkzMzNiOTVhODRjOGEyYmNlMjQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKQEAgLTEwOCw2ICsxMDgs
OCBAQCBFeGl0TW9kZSBtYXlFeGl0SW1wbChHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIFN0YXRl
VHlwZSYgc3RhdGUpCiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmls
dGVySW5CeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CisgICAgY2Fz
ZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlclNldFByaXZh
dGVCcmFuZFN0YXR1czoKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFN0ckNhdDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggMjYwNGM3ZTdhZDkzNDlmOTczYjAyNGNmOTJl
ZGVkZjEyYTM4YzFlNi4uNTg5M2JlODA2NjAxNjk5YjY3MDE0MGIyMWNlOWI3NGVhZjkzZDExYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2lu
Y2x1ZGUgIkIzU3BhcnNlQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkJhc2ljQmxvY2tMb2NhdGlv
bi5oIgorI2luY2x1ZGUgIkNoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudC5oIgogI2luY2x1ZGUgIkNv
ZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0FkamFjZW5jeUxpc3QuaCIKICNpbmNsdWRlICJERkdB
cml0aE1vZGUuaCIKQEAgLTU0LDYgKzU1LDcgQEAKICNpbmNsdWRlICJPcGVyYW5kcy5oIgogI2lu
Y2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQdXRCeUlkVmFyaWFudC5o
IgorI2luY2x1ZGUgIlNldFByaXZhdGVCcmFuZFZhcmlhbnQuaCIKICNpbmNsdWRlICJTcGVjdWxh
dGVkVHlwZS5oIgogI2luY2x1ZGUgIlR5cGVMb2NhdGlvbi5oIgogI2luY2x1ZGUgIlZhbHVlUHJv
ZmlsZS5oIgpAQCAtMzE0MCw2ICszMTQyLDI4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1f
b3BJbmZvLmFzPERlbGV0ZUJ5U3RhdHVzKj4oKTsKICAgICB9CiAKKyAgICBib29sIGhhc0NoZWNr
UHJpdmF0ZUJyYW5kU3RhdHVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBvcCgpID09IEZpbHRl
ckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOworICAgIH0KKworICAgIENoZWNrUHJpdmF0ZUJyYW5k
U3RhdHVzKiBjaGVja1ByaXZhdGVCcmFuZFN0YXR1cygpCisgICAgeworICAgICAgICBBU1NFUlQo
aGFzQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMoKSk7CisgICAgICAgIHJldHVybiBtX29wSW5mby5h
czxDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyo+KCk7CisgICAgfQorCisgICAgYm9vbCBoYXNTZXRQ
cml2YXRlQnJhbmRTdGF0dXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gRmlsdGVy
U2V0UHJpdmF0ZUJyYW5kU3RhdHVzOworICAgIH0KKworICAgIFNldFByaXZhdGVCcmFuZFN0YXR1
cyogc2V0UHJpdmF0ZUJyYW5kU3RhdHVzKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNTZXRQ
cml2YXRlQnJhbmRTdGF0dXMoKSk7CisgICAgICAgIHJldHVybiBtX29wSW5mby5hczxTZXRQcml2
YXRlQnJhbmRTdGF0dXMqPigpOworICAgIH0KKwogICAgIHZvaWQgZHVtcENoaWxkcmVuKFByaW50
U3RyZWFtJiBvdXQpCiAgICAgewogICAgICAgICBpZiAoIWNoaWxkMSgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDY0OTZjMTc4MDQxYzkxOWU5NDBhZjQ0NDg4
NWJkNGVkOWIxYzBjNTEuLjIzNzFmYmZkZGIyNzNmYjgxZDg3Y2VlNWEzNGU5YjA0MWYyNzkyZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTIxMiw2ICsyMTIs
OCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oUHV0QnlWYWxB
bGlhcywgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAgbWFjcm8oUHV0
UHJpdmF0ZU5hbWUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQdXRQcml2YXRlTmFt
ZUJ5SWQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhDaGVja1ByaXZhdGVCcmFuZCwg
Tm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKFNldFByaXZhdGVCcmFuZCwgTm9kZU11c3RH
ZW5lcmF0ZSkgXAogICAgIG1hY3JvKFRyeUdldEJ5SWQsIE5vZGVSZXN1bHRKUykgXAogICAgIG1h
Y3JvKEdldEJ5SWQsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNy
byhHZXRCeUlkRmx1c2gsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKQEAgLTU0
NCw2ICs1NDYsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8o
RmlsdGVySW5CeUlkU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oRmlsdGVy
UHV0QnlJZFN0YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEZpbHRlckRlbGV0
ZUJ5U3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oRmlsdGVyQ2hlY2tQcml2
YXRlQnJhbmRTdGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhGaWx0ZXJTZXRQ
cml2YXRlQnJhbmRTdGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICAvKiBEYXRhIHZpZXcg
YWNjZXNzICovIFwKICAgICBtYWNybyhEYXRhVmlld0dldEludCwgTm9kZU11c3RHZW5lcmF0ZSB8
IE5vZGVSZXN1bHRKUykgLyogVGhlIGdldHMgYXJlIG11c3QgZ2VuZXJhdGUgZm9yIG5vdyBiZWNh
dXNlIHRoZXkgZG8gYm91bmRzIGNoZWNrcyAqLyBcCiAgICAgbWFjcm8oRGF0YVZpZXdHZXRGbG9h
dCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHREb3VibGUpIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5n
UGhhc2UuY3BwCmluZGV4IDk5NTRkNTkxMjJlZmJiMTlmYjkwOGMxMTBmNmY3ZGJjNWM4NWQ1MjEu
LjdhNjllNGU4ZDVmZTU4ZTc1ODlhYjU1NTk5YWMzMzllZjBkMzRiMTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lu
a2luZ1BoYXNlLmNwcApAQCAtMTI2MSw2ICsxMjYxLDggQEAgcHJpdmF0ZToKICAgICAgICAgY2Fz
ZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoK
ICAgICAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJD
aGVja1ByaXZhdGVCcmFuZFN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJh
bmRTdGF0dXM6CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBkZWZhdWx0OgpAQCAtMjYx
MSw2ICsyNjEzLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlclB1dEJ5
SWRTdGF0dXM6CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CiAgICAg
ICAgICAgICAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKKyAgICAgICAgICAgICAgICBj
YXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOgorICAgICAgICAgICAgICAgIGNhc2Ug
RmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOgogICAgICAgICAgICAgICAgICAgICBpZiAobm9k
ZS0+Y2hpbGQxKCktPmlzUGhhbnRvbUFsbG9jYXRpb24oKSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIG5vZGUtPnJlbW92ZVdpdGhvdXRDaGVja3MoKTsKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IGFiMWZlOGFlY2ExMzljZGJhODc0MDhkNzgx
YzU4YTJjOTI5NDI1ZmQuLjVkNzNmYzcyODg3NzE5Yjk1YjMxZDlkNjlmMGE1M2I2ZDc4NWI3NDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0xMzg0LDYgKzEzODQsOCBAQCBwcml2YXRlOgog
ICAgICAgICBjYXNlIFB1dEJ5VmFsOgogICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgogICAg
ICAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKKyAgICAgICAgY2FzZSBTZXRQcml2YXRlQnJh
bmQ6CisgICAgICAgIGNhc2UgQ2hlY2tQcml2YXRlQnJhbmQ6CiAgICAgICAgIGNhc2UgUHV0Q2xv
c3VyZVZhcjoKICAgICAgICAgY2FzZSBQdXRJbnRlcm5hbEZpZWxkOgogICAgICAgICBjYXNlIFB1
dFRvQXJndW1lbnRzOgpAQCAtMTQ1MCw2ICsxNDUyLDggQEAgcHJpdmF0ZToKICAgICAgICAgY2Fz
ZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoK
ICAgICAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJD
aGVja1ByaXZhdGVCcmFuZFN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJh
bmRTdGF0dXM6CiAgICAgICAgIGNhc2UgQ2xlYXJDYXRjaExvY2FsczoKICAgICAgICAgY2FzZSBE
YXRhVmlld1NldDoKICAgICAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggYTRmNGM3NTc3NGFkN2U2
N2UwN2Y5Yzg0OTNmZjkwZDJiYjQ1NDc1Yi4uMDBhNDUxMzdhOGYxN2Q2OWZjZDhkZGQxYzE1Yzkz
Y2VhOWQ2NjRiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZl
VG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVj
dXRlLmgKQEAgLTM2Miw2ICszNjIsOCBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0
ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNh
c2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKICAg
ICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgorICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRl
QnJhbmRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAg
ICAgIC8vIFdlIGRvbid0IHdhbnQgdGhlc2UgdG8gYmUgbW92ZWQgYW55d2hlcmUgb3RoZXIgdGhh
biB3aGVyZSB3ZSBwdXQgdGhlbSwgc2luY2Ugd2Ugd2FudCB0aGVtCiAgICAgICAgIC8vIHRvIGNh
cHR1cmUgInByb2ZpbGluZyIgYXQgdGhlIHBvaW50IGluIGNvbnRyb2wgZmxvdyBoZXJlIHRoZSB1
c2VyIHB1dCB0aGVtLgogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01MzIsNiArNTM0LDggQEAg
Ym9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKICAg
ICBjYXNlIEdldFByaXZhdGVOYW1lOgogICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOgorICAg
IGNhc2UgQ2hlY2tQcml2YXRlQnJhbmQ6CisgICAgY2FzZSBTZXRQcml2YXRlQnJhbmQ6CiAgICAg
Y2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6CiAgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5
OgogICAgIGNhc2UgQXJyYXlpZnk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDBjMzM0MjI4ZjI0ODQ2NDQwM2FkMmNlZDhhZWU4Y2E2
ODVhNzAzMjUuLmY3MmE1Nzk4Y2MyMDUwNjFhZjI4Y2UxOGUzMDBhZDA3NDhhMjY3YTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0z
NjY3LDYgKzM2NjcsNzcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dFByaXZhdGVO
YW1lQnlJZChOb2RlKiBub2RlKQogICAgIG5vUmVzdWx0KG5vZGUpOwogfQogCit2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQoTm9kZSogbm9kZSkKK3sKKyAgICBK
U1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBicmFuZFZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKworICAgIEpTVmFs
dWVSZWdzIGJhc2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVncygpOworCisgICAgR1BSUmVnIGJyYW5k
R1BSID0gYnJhbmRWYWx1ZS5ncHIoKTsKKworICAgIHNwZWN1bGF0ZVN5bWJvbChub2RlLT5jaGls
ZDIoKSwgYnJhbmRHUFIpOworCisgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gbm9kZS0+b3Jp
Z2luLnNlbWFudGljOworICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRD
YWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9y
aWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CisgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9
IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93
Q2FzZXM7CisgICAgaWYgKG5lZWRzVHlwZUNoZWNrKG5vZGUtPmNoaWxkMSgpLCBTcGVjQ2VsbCkp
CisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdz
KSk7CisKKyAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IgZ2VuKAorICAgICAgICBt
X2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkNoZWNr
UHJpdmF0ZUJyYW5kLCB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBiYXNlUmVncywgSlNWYWx1ZVJl
Z3M6OnBheWxvYWRPbmx5KGJyYW5kR1BSKSk7CisKKyAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVy
dHlJc1N5bWJvbCA9IHRydWU7CisgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOworICAg
IHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKworICAgIHN0ZDo6dW5pcXVl
X3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAg
IHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9S
ZXN1bHQsCisgICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VSZWdz
LCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShicmFuZEdQUikpOworCisgICAgbV9qaXQuYWRkUHJp
dmF0ZUJyYW5kQWNjZXNzKGdlbiwgc2xvd1BhdGguZ2V0KCkpOworICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKKworICAgIG5vUmVzdWx0KG5vZGUpOworfQorCit2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU2V0UHJpdmF0ZUJyYW5kKE5vZGUqIG5vZGUpCit7
CisgICAgQVNTRVJUKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKTsKKyAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCBicmFuZFZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKworICAg
IEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICBHUFJSZWcgYnJhbmRHUFIgPSBicmFu
ZFZhbHVlLmdwcigpOworCisgICAgc3BlY3VsYXRlU3ltYm9sKG5vZGUtPmNoaWxkMigpLCBicmFu
ZEdQUik7CisKKyAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50
aWM7CisgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5k
R2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0
cmVhbS0+c2l6ZSgpKTsKKyAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNl
ZFJlZ2lzdGVycygpOworCisgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKKyAg
ICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IgZ2VuKAorICAgICAgICBtX2ppdC5jb2Rl
QmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVCcmFu
ZCwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VH
UFIpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYnJhbmRHUFIpKTsKKworICAgIGdlbi5zdHVi
SW5mbygpLT5wcm9wZXJ0eUlzU3ltYm9sID0gdHJ1ZTsKKyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0
aChtX2ppdCk7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOworCisg
ICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRo
Q2FsbCgKKyAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRP
cHRpbWl6ZSwgTm9SZXN1bHQsIAorICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5m
bygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxs
VmFsdWUoYnJhbmRHUFIpKTsKKworICAgIG1faml0LmFkZFByaXZhdGVCcmFuZEFjY2VzcyhnZW4s
IHNsb3dQYXRoLmdldCgpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQ
YXRoKSk7CisKKyAgICBub1Jlc3VsdChub2RlKTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUNoZWNrVHlwZUluZm9GbGFncyhOb2RlKiBub2RlKQogewogICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDNjNjkxMmUzZjgxYTE1YzdkMGFk
MGFkODE3Mzc0ZDQ3NGZiZDIzM2QuLmI5YWU2ZTNmYWJjNDBhZTQzMDlhNjg0YTdlY2EzYTRiNWI0
OTY5Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmgKQEAgLTEzNzMsNiArMTM3Myw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZh
bFdpdGhUaGlzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVQdXRQcml2YXRlTmFtZShOb2RlKik7
CiAgICAgdm9pZCBjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKE5vZGUqKTsKKyAgICB2b2lkIGNv
bXBpbGVDaGVja1ByaXZhdGVCcmFuZChOb2RlKik7CisgICAgdm9pZCBjb21waWxlU2V0UHJpdmF0
ZUJyYW5kKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeU9mZnNldChOb2RlKik7CiAgICAg
dm9pZCBjb21waWxlUHV0QnlPZmZzZXQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU1hdGNoU3Ry
dWN0dXJlKE5vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDFlOGI4YzI5NmM0MDI2MDc2MzQ0OGUzNjQwMzk2
YjY5YTg1ZDgxMTUuLjA3MzI5MDdhN2ZjMmQwNTJhMjYxNTZmN2JiZmViNGE1NzFlYzc3YzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcApAQCAtMjYwNiw2ICsyNjA2LDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBDaGVja1By
aXZhdGVCcmFuZDogeworICAgICAgICBjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQobm9kZSk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgU2V0UHJpdmF0ZUJyYW5kOiB7CisgICAg
ICAgIGNvbXBpbGVTZXRQcml2YXRlQnJhbmQobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KwogICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CiAgICAgY2FzZSBQdXRCeVZhbDoKICAgICBjYXNl
IFB1dEJ5VmFsQWxpYXM6IHsKQEAgLTQyNDEsNiArNDI1MSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAg
ICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1
czoKKyAgICBjYXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOgorICAgIGNhc2UgRmls
dGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOgogICAgICAgICBtX2ludGVycHJldGVyLmZpbHRlcklD
U3RhdHVzKG5vZGUpOwogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJlYWs7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApp
bmRleCA5YTk3NzI4MWNjN2Q4ZmU3Yjk4NDMyNzg4MTVlYTE0ZDQ2OGZkYmM5Li5iYzk0MDU3NWJh
ODQ2YTI3ZWQyODkyNzVjZDUzZTY4NjZjMjE1ZWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTI5NjQsNiArMjk2NCwxNiBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFr
OwogICAgIH0KIAorICAgIGNhc2UgQ2hlY2tQcml2YXRlQnJhbmQ6IHsKKyAgICAgICAgY29tcGls
ZUNoZWNrUHJpdmF0ZUJyYW5kKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBj
YXNlIFNldFByaXZhdGVCcmFuZDogeworICAgICAgICBjb21waWxlU2V0UHJpdmF0ZUJyYW5kKG5v
ZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0Ogog
ICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOiB7CkBAIC01Njc3LDYg
KzU2ODcsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
Y2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgog
ICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZh
dGVCcmFuZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czoKICAg
ICAgICAgbV9pbnRlcnByZXRlci5maWx0ZXJJQ1N0YXR1cyhub2RlKTsKICAgICAgICAgbm9SZXN1
bHQobm9kZSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAppbmRleCA3MGU3
ODM5OGMzNmEyODY4ZmFmNzI3YzQ4ZWYxMzkxMmQ4ZDM5YTY4Li5iOTA2NjVlY2NlNTJjNTdmNDRi
NzBkNDY3YzRhNGU1YTVmMzcwMmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcApAQCAtMjczLDYg
KzI3Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAKKyAgICAgICAgICAgIGNhc2UgU2V0UHJpdmF0ZUJyYW5kOgogICAgICAgICAgICAgY2FzZSBQ
dXRCeUlkOgogICAgICAgICAgICAgY2FzZSBQdXRCeUlkRmx1c2g6CiAgICAgICAgICAgICBjYXNl
IFB1dEJ5SWREaXJlY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcAppbmRleCA2NjllNWJiODIzNjczY2FkYmE2OWI1
ZmYyNzI5YmM4Y2Q0MzMxMzM5Li4wNjNlZTMxYjA1NWQ2NDA1YmFhOGVhNTgxYjg3MGQyZGE4NmRl
MDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3
YXJkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJn
c0ZvcndhcmRpbmdQaGFzZS5jcHAKQEAgLTE5OSw2ICsxOTksOCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKICAgICAgICAgICAgIGNhc2UgRmlsdGVy
SW5CeUlkU3RhdHVzOgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKKyAg
ICAgICAgICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CisgICAgICAgICAg
ICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czoKICAgICAgICAgICAgICAgICBicmVh
azsKIAogICAgICAgICAgICAgY2FzZSBHZXRCeU9mZnNldDogewpAQCAtNDAyLDYgKzQwNCw4IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgogICAgICAg
ICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CiAgICAgICAgICAgICBjYXNlIEZpbHRlckRl
bGV0ZUJ5U3RhdHVzOgorICAgICAgICAgICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0
YXR1czoKKyAgICAgICAgICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOgogICAg
ICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS5ub2RlKCkgPT0gY2FuZGlkYXRlKQogICAg
ICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUobV9ncmFwaCk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAK
aW5kZXggMzUyNTNiNjA0ZTQ3OGRmMGEyMjhkM2IxM2Y1Y2NhMzUyMmI0NmIyNC4uM2QxNDkyNTNm
NmQ2YjdkMTYyNTc1NGIwMmQwY2NiMTJjZWZlMGY0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtNDAwLDEyICs0MDAsMTYgQEAgaW5saW5l
IENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQdXRQcml2
YXRlTmFtZUJ5SWQ6CiAgICAgY2FzZSBHZXRQcml2YXRlTmFtZToKICAgICBjYXNlIEdldFByaXZh
dGVOYW1lQnlJZDoKKyAgICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5kOgorICAgIGNhc2UgU2V0UHJp
dmF0ZUJyYW5kOgogICAgIGNhc2UgTWF0Y2hTdHJ1Y3R1cmU6CiAgICAgY2FzZSBGaWx0ZXJDYWxs
TGlua1N0YXR1czoKICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVy
UHV0QnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKICAgICBjYXNlIEZp
bHRlckRlbGV0ZUJ5U3RhdHVzOgorICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0
dXM6CisgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAgY2FzZSBDcmVh
dGVUaGlzOgogICAgIGNhc2UgQ3JlYXRlUHJvbWlzZToKICAgICBjYXNlIENyZWF0ZUdlbmVyYXRv
cjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRl
eCBlYTFmMzcyMzljMjg5ZGYxMmNjZDMxYmVmNGY1NTlkYmE3ZjYxMDVjLi44Y2QzZWNjNzJhYzRk
OTBkYjRjYWZkNzBlMjc1MmZlYjM4YTczODlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC05NjEsNiArOTYxLDEyIEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgSW5CeVZhbDoKICAgICAgICAgICAgIGNvbXBpbGVJbkJ5VmFsKCk7CiAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDaGVja1ByaXZhdGVCcmFuZDoKKyAgICAgICAg
ICAgIGNvbXBpbGVDaGVja1ByaXZhdGVCcmFuZCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgU2V0UHJpdmF0ZUJyYW5kOgorICAgICAgICAgICAgY29tcGlsZVNldFByaXZhdGVC
cmFuZCgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSGFzT3duUHJvcGVydHk6
CiAgICAgICAgICAgICBjb21waWxlSGFzT3duUHJvcGVydHkoKTsKICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMTYzOCw2ICsxNjQ0LDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBGaWx0ZXJQdXRC
eUlkU3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKICAgICAgICAgY2Fz
ZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVC
cmFuZFN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6CiAg
ICAgICAgICAgICBjb21waWxlRmlsdGVySUNTdGF0dXMoKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIERhdGVHZXRJbnQzMk9yTmFOOgpAQCAtNDA4Myw2ICs0MDkxLDgzIEBAIHBy
aXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lkIGNvbXBpbGVQcml2YXRlQnJhbmRB
Y2Nlc3MoTFZhbHVlIGJhc2UsIExWYWx1ZSBicmFuZCwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQor
ICAgIHsKKyAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKKyAgICAgICAgUGF0Y2hwb2ludFZh
bHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChWb2lkKTsKKyAgICAgICAgcGF0Y2hw
b2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGJhc2UpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBl
bmRTb21lUmVnaXN0ZXIoYnJhbmQpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RD
ZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rlcikp
OworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRl
UmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CisgICAgICAgIHBhdGNocG9pbnQtPmNs
b2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKworICAgICAgICBS
ZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0gcHJlcGFy
ZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOworCisgICAgICAgIFN0YXRlKiBz
dGF0ZSA9ICZtX2Z0bFN0YXRlOworICAgICAgICBib29sIGJhc2VJc0NlbGwgPSBhYnN0cmFjdFZh
bHVlKG1fbm9kZS0+Y2hpbGQxKCkpLmlzVHlwZShTcGVjQ2VsbCk7CisgICAgICAgIHBhdGNocG9p
bnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdl
bmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hS
ZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworCisgICAgICAgICAgICBDYWxsU2l0ZUlu
ZGV4IGNhbGxTaXRlSW5kZXggPSBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5h
ZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisKKyAgICAgICAg
ICAgIC8vIFRoaXMgaXMgdGhlIGRpcmVjdCBleGl0IHRhcmdldCBmb3Igb3BlcmF0aW9uIGNhbGxz
LgorICAgICAgICAgICAgQm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPSBl
eGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGppdCk7
CisKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGV4aXQgZm9yIGNhbGwgSUMncyBjcmVhdGVk
IGJ5IHRoZSBJQyBmb3IgZ2V0dGVycy4gV2UgZG9uJ3QgaGF2ZQorICAgICAgICAgICAgLy8gdG8g
ZG8gYW55dGhpbmcgd2VpcmQgb3RoZXIgdGhhbiBjYWxsIHRoaXMsIHNpbmNlIGl0IHdpbGwgYXNz
b2NpYXRlIHRoZSBleGl0IHdpdGgKKyAgICAgICAgICAgIC8vIHRoZSBjYWxsc2l0ZSBpbmRleC4K
KyAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb25Gb3JVbndp
bmQocGFyYW1zLCBjYWxsU2l0ZUluZGV4KTsKKworICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIg
PSBwYXJhbXNbMF0uZ3ByKCk7CisgICAgICAgICAgICBHUFJSZWcgYnJhbmRHUFIgPSBwYXJhbXNb
MV0uZ3ByKCk7CisKKyAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVFByaXZhdGVC
cmFuZEFjY2Vzc0dlbmVyYXRvcj46OmNyZWF0ZSgKKyAgICAgICAgICAgICAgICBqaXQuY29kZUJs
b2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwgYWNjZXNzVHlwZSwK
KyAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJl
Z3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKGJyYW5kR1BSKSk7CisKKyAgICAgICAgICAgIENDYWxs
SGVscGVyczo6SnVtcCBub3RDZWxsOworICAgICAgICAgICAgaWYgKCFiYXNlSXNDZWxsKQorICAg
ICAgICAgICAgICAgIG5vdENlbGwgPSBqaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VHUFIpOworCisg
ICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKKyAgICAgICAgICAg
IENDYWxsSGVscGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgpOworCisgICAgICAgICAgICBw
YXJhbXMuYWRkTGF0ZVBhdGgoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAg
ICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKwor
ICAgICAgICAgICAgICAgIGF1dG8gb3BlcmF0aW9uVG9DYWxsID0gYWNjZXNzVHlwZSA9PSBBY2Nl
c3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZCA/IG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0
aW1pemUgOiBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZTsKKworICAgICAgICAgICAg
ICAgIGlmIChub3RDZWxsLmlzU2V0KCkpCisgICAgICAgICAgICAgICAgICAgIG5vdENlbGwubGlu
aygmaml0KTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmso
JmppdCk7CisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2lu
ID0gaml0LmxhYmVsKCk7CisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQ
YXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFy
YW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAor
ICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25Ub0NhbGwsIElu
dmFsaWRHUFJSZWcsCisgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBiYXNlR1BS
LCBicmFuZEdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRv
bmUsICZqaXQpOworCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENh
bGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKKworICAgICAgICAgICAgICAgIGppdC5h
ZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKKyAgICAgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLT5maW5hbGl6ZShsaW5rQnVmZmVyLCBsaW5rQnVmZmVyKTsKKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9CisKKyAg
ICB2b2lkIGNvbXBpbGVDaGVja1ByaXZhdGVCcmFuZCgpCisgICAgeworICAgICAgICBjb21waWxl
UHJpdmF0ZUJyYW5kQWNjZXNzKGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSksIGxvd1N5bWJv
bChtX25vZGUtPmNoaWxkMigpKSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQpOworICAg
IH0KKworICAgIHZvaWQgY29tcGlsZVNldFByaXZhdGVCcmFuZCgpCisgICAgeworICAgICAgICBE
RkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0g
Q2VsbFVzZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpOworICAgICAgICBjb21waWxlUHJp
dmF0ZUJyYW5kQWNjZXNzKGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIGxvd1N5bWJvbChtX25v
ZGUtPmNoaWxkMigpKSwgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5kKTsKKyAgICB9CisKICAg
ICB2b2lkIGNvbXBpbGVQdXRCeUlkV2l0aFRoaXMoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNl
bWFudGljKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwCmluZGV4IGIwNTE3YmQ5NzdjMTRiNWEzMWNmNTBlYzU2YzI1YjZmZDI1NjZkMTUu
LjdlZjk1OTE5OTVjZWRlZWVjN2UxNmQ2ODBjMjdkYmZhNDk5MjA1ZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtMTQ0LDkg
KzE0NCw5IEBAIEpTVmFsdWUgZXZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgRUNNQU1vZGUgZWNtYU1vCiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIFREWkVudmlyb25tZW50IHZhcmlhYmxlc1VuZGVyVERaOwotICAgICAgICBWYXJpYWJs
ZUVudmlyb25tZW50IHByaXZhdGVOYW1lczsKLSAgICAgICAgSlNTY29wZTo6Y29sbGVjdENsb3N1
cmVWYXJpYWJsZXNVbmRlclREWihjYWxsZXJTY29wZUNoYWluLCB2YXJpYWJsZXNVbmRlclREWiwg
cHJpdmF0ZU5hbWVzKTsKLSAgICAgICAgZXZhbCA9IERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVh
dGUoZ2xvYmFsT2JqZWN0LCBtYWtlU291cmNlKHByb2dyYW1Tb3VyY2UsIGNhbGxlckNvZGVCbG9j
ay0+c291cmNlKCkucHJvdmlkZXIoKS0+c291cmNlT3JpZ2luKCkpLCBkZXJpdmVkQ29udGV4dFR5
cGUsIGNhbGxlclVubGlua2VkQ29kZUJsb2NrLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigp
LCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBjYWxsZXJDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJs
ZSgpLT5pc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24oKSwgZXZhbENvbnRleHRUeXBlLCAmdmFyaWFi
bGVzVW5kZXJURFosICZwcml2YXRlTmFtZXMsIGVjbWFNb2RlKTsKKyAgICAgICAgUHJpdmF0ZU5h
bWVFbnZpcm9ubWVudCBwcml2YXRlTmFtZUVudmlyb25tZW50OworICAgICAgICBKU1Njb3BlOjpj
b2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKGNhbGxlclNjb3BlQ2hhaW4sIHZhcmlhYmxl
c1VuZGVyVERaLCBwcml2YXRlTmFtZUVudmlyb25tZW50KTsKKyAgICAgICAgZXZhbCA9IERpcmVj
dEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtYWtlU291cmNlKHByb2dyYW1T
b3VyY2UsIGNhbGxlckNvZGVCbG9jay0+c291cmNlKCkucHJvdmlkZXIoKS0+c291cmNlT3JpZ2lu
KCkpLCBkZXJpdmVkQ29udGV4dFR5cGUsIGNhbGxlclVubGlua2VkQ29kZUJsb2NrLT5uZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplcigpLCBjYWxsZXJVbmxpbmtlZENvZGVCbG9jay0+cHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQoKSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgY2FsbGVyQ29kZUJsb2Nr
LT5vd25lckV4ZWN1dGFibGUoKS0+aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKCksIGV2YWxDb250
ZXh0VHlwZSwgJnZhcmlhYmxlc1VuZGVyVERaLCAmcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgZWNt
YU1vZGUpOwogICAgICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0g
IWV2YWwpOwogICAgICAgICBpZiAoIWV2YWwpCiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKaW5kZXggOTRkMWY5MjZjZjJhZjE3
ZWFhMjg5NGJjYWE1ZGYzNTk3YmUxNWYwZS4uN2Y0ZDVkMWMxZGNkMmJlY2E3ZTYzZWJjNzFkMDU1
MGQ1OWQ5NzI0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKQEAgLTc1LDcgKzc1
LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKE9wZXJhdGlvbkdldFByaXZhdGVOYW1l
T3B0aW1pemUpIFwKICAgICBtYWNybyhPcGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWQpIFwKICAg
ICBtYWNybyhPcGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWRPcHRpbWl6ZSkgXAotICAgIG1hY3Jv
KE9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZEdlbmVyaWMpCisgICAgbWFjcm8oT3BlcmF0aW9u
R2V0UHJpdmF0ZU5hbWVCeUlkR2VuZXJpYykgXAorICAgIG1hY3JvKENoZWNrUHJpdmF0ZUJyYW5k
QWRkQWNjZXNzQ2FzZSkgXAorICAgIG1hY3JvKFNldFByaXZhdGVCcmFuZEFkZEFjY2Vzc0Nhc2Up
IFwKKyAgICBtYWNybyhDaGVja1ByaXZhdGVCcmFuZFJlcGxhY2VXaXRoSnVtcCkgXAorICAgIG1h
Y3JvKFNldFByaXZhdGVCcmFuZFJlcGxhY2VXaXRoSnVtcCkKKworCisKIAogY2xhc3MgSUNFdmVu
dCB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggYWNjMzRkMGVhOGJj
MzRjOWNmMWJkMWE4MWIwNWZjZjQ3YzkwZDc5Mi4uNmEzZmJkNzZjNTFkYTRkN2FkNWEwMmFkOTM5
MjkzNTIxYTUzMDJkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMzU4LDYgKzM1
OCw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5F
X09QKG9wX2dldF9ieV9pZF9kaXJlY3QpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfYnlfdmFs
KQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X3ByaXZhdGVfbmFtZSkKKyAgICAgICAgREVGSU5F
X09QKG9wX3NldF9wcml2YXRlX2JyYW5kKQorICAgICAgICBERUZJTkVfT1Aob3BfY2hlY2tfcHJp
dmF0ZV9icmFuZCkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9wcm90b3R5cGVfb2YpCiAgICAg
ICAgIERFRklORV9PUChvcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlKQogICAgICAgICBERUZJTkVf
T1Aob3BfaW5zdGFuY2VvZikKQEAgLTUwOCw2ICs1MTAsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVTbG93Q2FzZXMoKQogICAgIG1fZGVsQnlWYWxJbmRleCA9IDA7CiAgICAgbV9kZWxCeUlk
SW5kZXggPSAwOwogICAgIG1faW5zdGFuY2VPZkluZGV4ID0gMDsKKyAgICBtX3ByaXZhdGVCcmFu
ZEFjY2Vzc0luZGV4ID0gMDsKICAgICBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCA9IDA7CiAgICAg
bV9jYWxsTGlua0luZm9JbmRleCA9IDA7CiAKQEAgLTU2NCw2ICs1NjcsOCBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bf
Z2V0X2J5X2lkX2RpcmVjdCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2dldF9ieV92
YWwpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9nZXRfcHJpdmF0ZV9uYW1lKQorICAg
ICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bfc2V0X3ByaXZhdGVfYnJhbmQpCisgICAgICAgIERF
RklORV9TTE9XQ0FTRV9PUChvcF9jaGVja19wcml2YXRlX2JyYW5kKQogICAgICAgICBERUZJTkVf
U0xPV0NBU0VfT1Aob3BfaW5zdGFuY2VvZikKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9w
X2luc3RhbmNlb2ZfY3VzdG9tKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bfamxlc3Mp
CkBAIC02NTQsNiArNjU5LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkK
ICAgICBSRUxFQVNFX0FTU0VSVChtX3B1dEJ5SWRJbmRleCA9PSBtX3B1dEJ5SWRzLnNpemUoKSk7
CiAgICAgUkVMRUFTRV9BU1NFUlQobV9pbkJ5SWRJbmRleCA9PSBtX2luQnlJZHMuc2l6ZSgpKTsK
ICAgICBSRUxFQVNFX0FTU0VSVChtX2luc3RhbmNlT2ZJbmRleCA9PSBtX2luc3RhbmNlT2ZzLnNp
emUoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQobV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleCA9PSBt
X3ByaXZhdGVCcmFuZEFjY2Vzc2VzLnNpemUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9jYWxs
TGlua0luZm9JbmRleCA9PSBtX2NhbGxDb21waWxhdGlvbkluZm8uc2l6ZSgpKTsKIAogICAgIGlm
IChzaG91bGRFbWl0UHJvZmlsaW5nKCkpCkBAIC05MDIsNiArOTA4LDcgQEAgQ29tcGlsYXRpb25S
ZXN1bHQgSklUOjpsaW5rKCkKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2RlbEJ5VmFscywg
cGF0Y2hCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5CeUlkcywgcGF0Y2hC
dWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5zdGFuY2VPZnMsIHBhdGNoQnVm
ZmVyKTsKKyAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzLCBw
YXRjaEJ1ZmZlcik7CiAKICAgICBpZiAobV9ieVZhbENvbXBpbGF0aW9uSW5mby5zaXplKCkpIHsK
ICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gZXhjZXB0
aW9uSGFuZGxlciA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8RXhjZXB0aW9uSGFuZGxlclB0clRh
Zz4obV9leGNlcHRpb25IYW5kbGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDdjMzVi
NTY3MzQ3NzVlMzZlZmMzOTZkNTcyYjk5MjE1YzU5ZTZkZjIuLjJlYWQ1NWRjMDU0YzA3MjYxMTBi
ODQ1YWQwOGM4N2I3YzNhOTg0MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNTYzLDYg
KzU2Myw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X2lk
X2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5
X3ZhbChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X3ByaXZh
dGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bfc2V0X3By
aXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2No
ZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
X29wX2dldF9hcmd1bWVudF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9p
ZCBlbWl0X29wX2dldF9wcm90b3R5cGVfb2YoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKik7CkBAIC02OTUsNiArNjk3
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2J5X2lk
X2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVt
aXRTbG93X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfc2V0X3By
aXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChj
b25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAg
ICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYXJndW1lbnRfYnlfdmFsKGNvbnN0IEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVt
aXRTbG93X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2luc3RhbmNlb2YoY29u
c3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CkBAIC05
ODUsNiArOTg5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFZlY3RvcjxKSVREZWxCeUlk
R2VuZXJhdG9yPiBtX2RlbEJ5SWRzOwogICAgICAgICBWZWN0b3I8SklURGVsQnlWYWxHZW5lcmF0
b3I+IG1fZGVsQnlWYWxzOwogICAgICAgICBWZWN0b3I8SklUSW5zdGFuY2VPZkdlbmVyYXRvcj4g
bV9pbnN0YW5jZU9mczsKKyAgICAgICAgVmVjdG9yPEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVy
YXRvcj4gbV9wcml2YXRlQnJhbmRBY2Nlc3NlczsKICAgICAgICAgVmVjdG9yPEJ5VmFsQ29tcGls
YXRpb25JbmZvPiBtX2J5VmFsQ29tcGlsYXRpb25JbmZvOwogICAgICAgICBWZWN0b3I8Q2FsbENv
bXBpbGF0aW9uSW5mbz4gbV9jYWxsQ29tcGlsYXRpb25JbmZvOwogICAgICAgICBWZWN0b3I8SnVt
cFRhYmxlPiBtX2ptcFRhYmxlOwpAQCAtMTAwOCw2ICsxMDEzLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHVuc2lnbmVkIG1fZGVsQnlWYWxJbmRleCB7IFVJTlRfTUFYIH07CiAgICAgICAg
IHVuc2lnbmVkIG1fZGVsQnlJZEluZGV4IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWduZWQg
bV9pbnN0YW5jZU9mSW5kZXggeyBVSU5UX01BWCB9OworICAgICAgICB1bnNpZ25lZCBtX3ByaXZh
dGVCcmFuZEFjY2Vzc0luZGV4IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWduZWQgbV9ieVZh
bEluc3RydWN0aW9uSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBtX2NhbGxM
aW5rSW5mb0luZGV4IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWduZWQgbV9ieXRlY29kZUNv
dW50SGF2aW5nU2xvd0Nhc2UgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IDliYzI2MjNiM2ZkNTA3ZGM5
YWZjOThhNzcwMTg2ZjFlNTgxYjVjOGUuLjkxZWRjZjcyYzE4NmNlYjc4MzUyNjFiNTZlZjFiOWE2
ODFjZmY5OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC0zMjQsNiArMzI0LDM2IEBAIHZvaWQgSklUR2V0QnlW
YWxHZW5lcmF0b3I6OmZpbmFsaXplKAogICAgICAgICBmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQ
YXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKIH0KIAorSklU
UHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0
b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJ
bmRleCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVy
U2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBicmFuZCkK
KyAgICA6IEJhc2UoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBhY2Nlc3NU
eXBlLCB1c2VkUmVnaXN0ZXJzKQoreworICAgIG1fc3R1YkluZm8tPmhhc0NvbnN0YW50SWRlbnRp
ZmllciA9IGZhbHNlOworCisgICAgbV9zdHViSW5mby0+YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQ
UigpOworICAgIG1fc3R1YkluZm8tPnJlZ3MuYnJhbmRHUFIgPSBicmFuZC5wYXlsb2FkR1BSKCk7
CisgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSBJbnZhbGlkR1BSUmVnOworI2lmIFVTRShKU1ZB
TFVFMzJfNjQpCisgICAgbV9zdHViSW5mby0+YmFzZVRhZ0dQUiA9IGJhc2UudGFnR1BSKCk7Cisg
ICAgbV9zdHViSW5mby0+di5icmFuZFRhZ0dQUiA9IGJyYW5kLnRhZ0dQUigpOworICAgIG1fc3R1
YkluZm8tPnZhbHVlVGFnR1BSID0gSW52YWxpZEdQUlJlZzsKKyNlbmRpZgorfQorCit2b2lkIEpJ
VFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2Vt
YmxlciYgaml0KQoreworICAgIG1fc3RhcnQgPSBqaXQubGFiZWwoKTsKKyAgICBtX3Nsb3dQYXRo
SnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAgbV9kb25lID0gaml0LmxhYmVsKCk7Cit9
CisKK3ZvaWQgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpmaW5hbGl6ZSgKKyAgICBM
aW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCit7CisgICAgQVNTRVJU
KG1fc3RhcnQuaXNTZXQoKSk7CisgICAgQmFzZTo6ZmluYWxpemUoCisgICAgICAgIGZhc3RQYXRo
LCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9z
dGFydCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2Vu
ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJh
dG9yLmgKaW5kZXggODUzODM1YTM5MzU4NTI5MTI3ZGUyZjM5N2I0OTc5OTgyNGUzNmY2Yi4uZDZj
YTZlMTZhM2YzMmM2NDBmOTZjYjI1NTE5NTU0OGIwZjJlYjY1MSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaApAQCAtMjQ2LDEy
ICsyNDYsMzYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBKU1ZhbHVlUmVncyBtX2Jhc2U7CiAg
ICAgSlNWYWx1ZVJlZ3MgbV9yZXN1bHQ7Ci0gICAgSlNWYWx1ZVJlZ3MgbV87CiAKICAgICBNYWNy
b0Fzc2VtYmxlcjo6TGFiZWwgbV9zdGFydDsKICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxl
SnVtcCBtX3Nsb3dQYXRoSnVtcDsKIH07CiAKK2NsYXNzIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dl
bmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CisgICAgdXNpbmcgQmFz
ZSA9IEpJVElubGluZUNhY2hlR2VuZXJhdG9yOworcHVibGljOgorICAgIEpJVFByaXZhdGVCcmFu
ZEFjY2Vzc0dlbmVyYXRvcigpIHsgfQorCisgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJh
dG9yKAorICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nl
c3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgSlNWYWx1
ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgYnJhbmQpOworCisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1
bXAgc2xvd1BhdGhKdW1wKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3Nsb3dQYXRo
SnVtcC5tX2p1bXAuaXNTZXQoKSk7CisgICAgICAgIHJldHVybiBtX3Nsb3dQYXRoSnVtcC5tX2p1
bXA7CisgICAgfQorCisgICAgdm9pZCBmaW5hbGl6ZSgKKyAgICAgICAgTGlua0J1ZmZlciYgZmFz
dFBhdGhMaW5rQnVmZmVyLCBMaW5rQnVmZmVyJiBzbG93UGF0aExpbmtCdWZmZXIpOworICAgIAor
ICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOworCitwcml2YXRlOgor
ICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX3N0YXJ0OworICAgIE1hY3JvQXNzZW1ibGVyOjpQ
YXRjaGFibGVKdW1wIG1fc2xvd1BhdGhKdW1wOworfTsKKwogdGVtcGxhdGU8dHlwZW5hbWUgVmVj
dG9yVHlwZT4KIHZvaWQgZmluYWxpemVJbmxpbmVDYWNoZXMoVmVjdG9yVHlwZSYgdmVjdG9yLCBM
aW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCA2Y2NhMWM5MjQ0OWFkYTRi
YTMxYTY4YTkxOTc0MmI5ODEwYTEyOTU4Li45MTg1NzA1NTZmMGY5N2EyY2Q2YTVjZTI3ZGE0Mjhh
OWQ0NzZjZGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAKQEAgLTEwOTQsNiArMTA5NCwxMDEgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYywgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KgogICAgIGRp
cmVjdFB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgYXNPYmplY3QoYmFzZVZhbHVlKSwgc3Vic2NyaXB0
LCB2YWx1ZSwgYnlWYWxJbmZvLCBlY21hTW9kZSk7CiB9CiAKK0pTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJyYW5kKSkKK3sK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkQmFzZVZhbHVlKTsKKyAgICBKU1ZhbHVlIGJyYW5kID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRCcmFuZCk7CisKKyAgICBBU1NFUlQoYmFzZVZhbHVlLmlzT2JqZWN0KCkp
OworICAgIEFTU0VSVChicmFuZC5pc1N5bWJvbCgpKTsKKworICAgIEpTT2JqZWN0KiBiYXNlT2Jq
ZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKKyAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9
IGJhc2VPYmplY3QtPnN0cnVjdHVyZSh2bSk7CisgICAgYmFzZU9iamVjdC0+c2V0UHJpdmF0ZUJy
YW5kKGdsb2JhbE9iamVjdCwgYnJhbmQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHZvaWQoKSk7CisKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJs
b2NrKCk7CisgICAgaWYgKENhY2hlYWJsZUlkZW50aWZpZXI6OmlzQ2FjaGVhYmxlSWRlbnRpZmll
ckNlbGwoYnJhbmQpKSB7CisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9
IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21DZWxsKGJyYW5kLmFzQ2VsbCgpKTsKKyAg
ICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeSh2bSwgY29kZUJsb2NrLCBiYXNl
T2JqZWN0LT5zdHJ1Y3R1cmUodm0pLCBpZGVudGlmaWVyKSkKKyAgICAgICAgICAgIHJlcGF0Y2hT
ZXRQcml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIG9sZFN0
cnVjdHVyZSwgaWRlbnRpZmllciwgKnN0dWJJbmZvKTsKKyAgICB9CisKK30KKworSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblNldFByaXZhdGVCcmFuZEdlbmVyaWMsIHZvaWQsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8s
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRC
cmFuZCkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Q
cm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2VWYWx1ZSk7CisgICAgSlNWYWx1ZSBicmFuZCA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQnJhbmQpOworCisgICAgaWYgKHN0dWJJbmZvKQorICAg
ICAgICBzdHViSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKKworICAgIEFTU0VSVChiYXNlVmFs
dWUuaXNPYmplY3QoKSk7CisgICAgQVNTRVJUKGJyYW5kLmlzU3ltYm9sKCkpOworCisgICAgSlNP
YmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOworICAgIGJhc2VPYmplY3Qt
PnNldFByaXZhdGVCcmFuZChnbG9iYWxPYmplY3QsIGJyYW5kKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOworfQorCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJyYW5kKSkKK3sKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkQmFzZVZhbHVlKTsKKyAgICBKU1ZhbHVlIGJyYW5kID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRCcmFuZCk7CisKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGJhc2VWYWx1ZS50
b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZv
aWQoKSk7CisKKyAgICBBU1NFUlQoYnJhbmQuaXNTeW1ib2woKSk7CisKKyAgICBiYXNlT2JqZWN0
LT5jaGVja1ByaXZhdGVCcmFuZChnbG9iYWxPYmplY3QsIGJyYW5kKTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBj
YWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgIGlmIChDYWNoZWFibGVJZGVudGlmaWVyOjppc0Nh
Y2hlYWJsZUlkZW50aWZpZXJDZWxsKGJyYW5kKSkgeworICAgICAgICBDYWNoZWFibGVJZGVudGlm
aWVyIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tQ2VsbChicmFu
ZC5hc0NlbGwoKSk7CisgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nQnkodm0s
IGNvZGVCbG9jaywgYmFzZU9iamVjdC0+c3RydWN0dXJlKHZtKSwgaWRlbnRpZmllcikpCisgICAg
ICAgICAgICByZXBhdGNoQ2hlY2tQcml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ss
IGJhc2VPYmplY3QsIGlkZW50aWZpZXIsICpzdHViSW5mbyk7CisgICAgfQorfQorCitKU0NfREVG
SU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRHZW5lcmljLCB2b2lk
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJ
bmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkQnJhbmQpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0
aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUgYmFzZVZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOworICAgIEpTVmFsdWUgYnJh
bmQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJyYW5kKTsKKworICAgIHN0dWJJbmZvLT50b29r
U2xvd1BhdGggPSB0cnVlOworCisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBiYXNlVmFsdWUu
dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOworCisgICAgQVNTRVJUKGJyYW5kLmlzU3ltYm9sKCkpOworCisgICAgYmFzZU9iamVj
dC0+Y2hlY2tQcml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0LCBicmFuZCk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKK30KKwogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFs
SW5mbyogYnlWYWxJbmZvLCBQcml2YXRlRmllbGRQdXRLaW5kIHB1dEtpbmQpKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTIyNzYsNiArMjM3MSw4IEBAIEFMV0FZU19J
TkxJTkUgc3RhdGljIEpTVmFsdWUgZ2V0UHJpdmF0ZU5hbWUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgp
KTsKIAogICAgIEpTT2JqZWN0KiBiYXNlID0gYmFzZVZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVj
dCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKKwogICAgIFBy
b3BlcnR5U2xvdCBzbG90KGJhc2UsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpH
ZXRPd25Qcm9wZXJ0eSk7CiAgICAgYmFzZS0+Z2V0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwg
ZmllbGROYW1lLCBzbG90KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVl
KCkpOwpAQCAtMjM4Miw3ICsyNDc5LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbkdldFByaXZhdGVOYW1lQnlJZE9wdGltaXplLCBFbmNvZGVkSlNWYWx1ZSwgKEoKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzbG90LmdldFZhbHVlKGdsb2JhbE9iamVjdCwgZmll
bGROYW1lKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShnZXRQcml2YXRl
TmFtZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBmaWVsZE5hbWUpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShnZXRQcml2YXRlTmFt
ZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBmaWVsZE5hbWUpKSk7CiB9CiAK
IEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWRHZW5l
cmljLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIGJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJZGVudGlmaWVyKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggOTQyNWI1MTdmOThlZWY2
M2UzNDlkMDc5NTFjMTk4MGVkZDU5OTE4OC4uMmZjM2E1YzY2MjAyNDY0YTA0YmU0MjEwZGEyNjg0
YjJmYmViMDFhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgK
QEAgLTE5Miw2ICsxOTIsMTEgQEAgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Q
dXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUsIHZvaWQKIEpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0QnlJZFNldFByaXZhdGVGaWVsZFN0cmljdCwgdm9p
ZCwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpKTsKIEpT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0QnlJZFNldFByaXZhdGVGaWVsZFN0
cmljdE9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyos
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2Us
IHVpbnRwdHJfdCkpOwogCitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblNldFBy
aXZhdGVCcmFuZE9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHVi
SW5mbyosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkpOworSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplLCB2b2lkLCAoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSkpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25TZXRQcml2YXRl
QnJhbmRHZW5lcmljLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyos
IEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkpOworSlNDX0RFQ0xBUkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZEdlbmVyaWMsIHZvaWQsIChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVl
KSk7CisKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVP
cHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRK
U1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgUHJpdmF0ZUZpZWxkUHV0S2luZCkp
OwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVy
aWMsIHZvaWQsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIFByaXZhdGVGaWVsZFB1dEtpbmQpKTsKIEpT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZSwgdm9pZCwg
KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggMGJkOWZjNjNhYTk4ZTBmNDlhZjY5
ZTYwODc4NDE3NjU3NjY3YTQzZC4uN2EwYTE5NjY0OTc1NjQ3NWQwYzllMjk0MGMwNjczOGZjYzM4
YzY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
cy5jcHAKQEAgLTE0Miw2ICsxNDIsNzkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9wcml2
YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUKICAgICBn
ZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogfQogCit2b2lkIEpJ
VDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wU2V0UHJpdmF0ZUJyYW5kPigpOworICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNv
ZGUubV9iYXNlOworICAgIFZpcnR1YWxSZWdpc3RlciBicmFuZCA9IGJ5dGVjb2RlLm1fYnJhbmQ7
CisgICAgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKKyAgICBHUFJSZWcgYnJhbmRHUFIgPSByZWdU
MTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VHUFIpOworICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYnJhbmQsIGJyYW5kR1BSKTsKKworICAgIGVtaXRKdW1wU2xvd0Nh
c2VJZk5vdEpTQ2VsbChiYXNlR1BSLCBiYXNlKTsKKworICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vz
c0dlbmVyYXRvciBnZW4oCisgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6U2V0
UHJpdmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisg
ICAgICAgIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhicmFuZEdQUikpOworICAg
IGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1Bh
dGhKdW1wKCkpOworICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMuYXBwZW5kKGdlbik7CisKKyAg
ICAvLyBXZSBzaG91bGQgZW1pdCB3cml0ZS1iYXJyaWVyIGF0IHRoZSBlbmQgb2Ygc2VxdWVuY2Ug
c2luY2Ugd3JpdGUtYmFycmllciBjbG9iYmVycyByZWdpc3RlcnMuCisgICAgLy8gSUMgY2FuIHdy
aXRlIG5ldyBTdHJ1Y3R1cmUgd2l0aG91dCB3cml0ZS1iYXJyaWVyIGlmIGEgYmFzZSBpcyBjZWxs
LgorICAgIC8vIEZJWE1FOiBVc2UgVW5jb25kaXRpb25hbFdyaXRlQmFycmllciBpbiBCYXNlbGlu
ZSBlZmZlY3RpdmVseSB0byByZWR1Y2UgY29kZSBzaXplLgorICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkzOTUKKyAgICBlbWl0V3JpdGVCYXJyaWVyKGJh
c2UsIFNob3VsZEZpbHRlckJhc2UpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3By
aXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiBpdGVyKQoreworICAgIEdQUlJlZyBiYXNlR1BSID0gcmVnVDA7CisgICAgR1BSUmVn
IGJyYW5kR1BSID0gcmVnVDE7CisKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworCisgICAg
SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yJiBnZW4gPSBtX3ByaXZhdGVCcmFuZEFjY2Vz
c2VzW21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXhdOworICAgICsrbV9wcml2YXRlQnJhbmRBY2Nl
c3NJbmRleDsKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBDYWxsIGNh
bGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplLCBUcnVz
dGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBi
YXNlR1BSLCBicmFuZEdQUik7CisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJl
Z2luLCBjYWxsKTsKK30KKwordm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQ2hlY2tQcml2YXRlQnJhbmQ+KCk7CisgICAg
VmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lz
dGVyIGJyYW5kID0gYnl0ZWNvZGUubV9icmFuZDsKKworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoYmFzZSwgcmVnVDApOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnJhbmQsIHJlZ1Qx
KTsKKworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7CisKKyAg
ICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IgZ2VuKAorICAgICAgICBtX2NvZGVCbG9j
aywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJ
bmRleCksIEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6c3R1YlVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1
ZVJlZ3MocmVnVDEpKTsKKyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgYWRk
U2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBtX3ByaXZhdGVCcmFuZEFjY2Vzc2Vz
LmFwcGVuZChnZW4pOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9i
cmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCit7CisgICAgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKKyAgICBHUFJSZWcgYnJhbmRH
UFIgPSByZWdUMTsKKworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisKKyAgICBKSVRQcml2
YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9w
cml2YXRlQnJhbmRBY2Nlc3NJbmRleF07CisgICAgKyttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4
OworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIENhbGwgY2FsbCA9IGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSwgVHJ1c3RlZElt
bVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgYmFzZUdQ
UiwgYnJhbmRHUFIpOworICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwg
Y2FsbCk7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWxfZGlyZWN0KGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdF9vcF9wdXRfYnlfdmFs
PE9wUHV0QnlWYWxEaXJlY3Q+KGN1cnJlbnRJbnN0cnVjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRleCBiMTRh
NTA2MzQ5NDUxNTkzODNlN2QwOWFiNWI5ZGU0YzM1MGRkZTgyLi5kODYxNTFiNjMxMWY0ZGMyNmRj
NDNmZGZkOTc1YjU2ZDZmNGU5NzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKQEAgLTM4MCw2ICszODAsODAgQEAgdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmUKICAgICBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCsrOwogfQog
Cit2b2lkIEpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wU2V0UHJpdmF0ZUJyYW5kPigpOworICAgIFZpcnR1YWxSZWdpc3RlciBiYXNl
ID0gYnl0ZWNvZGUubV9iYXNlOworICAgIFZpcnR1YWxSZWdpc3RlciBicmFuZCA9IGJ5dGVjb2Rl
Lm1fYnJhbmQ7CisgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MocmVnVDEsIHJlZ1QwKTsKKyAgICBK
U1ZhbHVlUmVncyBicmFuZFJlZ3MocmVnVDMsIHJlZ1QyKTsKKyAgICBlbWl0TG9hZChiYXNlLCBi
YXNlUmVncy50YWdHUFIoKSwgYmFzZVJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICBlbWl0TG9hZChi
cmFuZCwgYnJhbmRSZWdzLnRhZ0dQUigpLCBicmFuZFJlZ3MucGF5bG9hZEdQUigpKTsKKworICAg
IGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCBiYXNlUmVncy50YWdHUFIoKSk7CisK
KyAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IgZ2VuKAorICAgICAgICBtX2NvZGVC
bG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleCksIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVCcmFuZCwgUmVnaXN0ZXJTZXQ6OnN0dWJV
bmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBiYXNlUmVncywgYnJhbmRSZWdzKTsKKyAg
ICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQ
YXRoSnVtcCgpKTsKKyAgICBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzLmFwcGVuZChnZW4pOworCisg
ICAgLy8gV2Ugc2hvdWxkIGVtaXQgd3JpdGUtYmFycmllciBhdCB0aGUgZW5kIG9mIHNlcXVlbmNl
IHNpbmNlIHdyaXRlLWJhcnJpZXIgY2xvYmJlcnMgcmVnaXN0ZXJzLgorICAgIC8vIElDIGNhbiB3
cml0ZSBuZXcgU3RydWN0dXJlIHdpdGhvdXQgd3JpdGUtYmFycmllciBpZiBhIGJhc2UgaXMgY2Vs
bC4KKyAgICAvLyBGSVhNRTogVXNlIFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIgaW4gQmFzZWxp
bmUgZWZmZWN0aXZlbHkgdG8gcmVkdWNlIGNvZGUgc2l6ZS4KKyAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5Mzk1CisgICAgZW1pdFdyaXRlQmFycmllcihi
YXNlLCBTaG91bGRGaWx0ZXJCYXNlKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX3NldF9w
cml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlcikKK3sKKyAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyhyZWdUMSwgcmVnVDAp
OworICAgIEpTVmFsdWVSZWdzIGJyYW5kUmVncyhyZWdUMywgcmVnVDIpOworCisgICAgbGlua0Fs
bFNsb3dDYXNlcyhpdGVyKTsKKworICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYg
Z2VuID0gbV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4XTsK
KyAgICArK21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXg7CisgICAgTGFiZWwgY29sZFBhdGhCZWdp
biA9IGxhYmVsKCk7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TZXRQ
cml2YXRlQnJhbmRPcHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgYmFzZVJlZ3MsIGJyYW5kUmVncyk7CisgICAgZ2VuLnJl
cG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKK30KKwordm9pZCBKSVQ6OmVt
aXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
Q2hlY2tQcml2YXRlQnJhbmQ+KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29k
ZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJyYW5kID0gYnl0ZWNvZGUubV9icmFuZDsK
KyAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyhyZWdUMSwgcmVnVDApOworICAgIEpTVmFsdWVSZWdz
IGJyYW5kUmVncyhyZWdUMywgcmVnVDIpOworICAgIGVtaXRMb2FkKGJhc2UsIGJhc2VSZWdzLnRh
Z0dQUigpLCBiYXNlUmVncy5wYXlsb2FkR1BSKCkpOworICAgIGVtaXRMb2FkKGJyYW5kLCBicmFu
ZFJlZ3MudGFnR1BSKCksIGJyYW5kUmVncy5wYXlsb2FkR1BSKCkpOworCisgICAgZW1pdEp1bXBT
bG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIGJhc2VSZWdzLnRhZ0dQUigpKTsKKworICAgIEpJVFBy
aXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCisgICAgICAgIG1fY29kZUJsb2NrLCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwg
QWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwKKyAgICAgICAgYmFzZVJlZ3MsIGJyYW5kUmVncyk7CisgICAgZ2VuLmdl
bmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAo
KSk7CisgICAgbV9wcml2YXRlQnJhbmRBY2Nlc3Nlcy5hcHBlbmQoZ2VuKTsKK30KKwordm9pZCBK
SVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIEpTVmFsdWVSZWdz
IGJhc2VSZWdzKHJlZ1QxLCByZWdUMCk7CisgICAgSlNWYWx1ZVJlZ3MgYnJhbmRSZWdzKHJlZ1Qz
LCByZWdUMik7CisKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworCisgICAgSklUUHJpdmF0
ZUJyYW5kQWNjZXNzR2VuZXJhdG9yJiBnZW4gPSBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzW21fcHJp
dmF0ZUJyYW5kQWNjZXNzSW5kZXhdOworICAgICsrbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleDsK
KyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBDYWxsIGNhbGwgPSBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUsIFRydXN0ZWRJbW1Q
dHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VSZWdz
LCBicmFuZFJlZ3MpOworICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwg
Y2FsbCk7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWxfZGlyZWN0KGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdF9vcF9wdXRfYnlfdmFs
PE9wUHV0QnlWYWxEaXJlY3Q+KGN1cnJlbnRJbnN0cnVjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmNwcAppbmRleCA1N2I2YzEzM2Y4ZjI3ZDNiZDMwZDVjYTM5NDE3Y2RjOTky
MjViYzE4Li40YzY4NWZhYjlmZGM2OGE4NTNhZTk0ZjkwZGI2ZjQyMTlkNWU2NTY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTEwMDUsNiArMTAwNSwxMTIgQEAgdm9p
ZCByZXBhdGNoSW5CeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayog
Y29kZUJsb2NrLCBKU09iamVjdCoKICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNv
ZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkluQnlJZCk7
CiB9CiAKK3N0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUNoZWNrUHJpdmF0ZUJyYW5k
KAorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2Nr
LCBKU09iamVjdCogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBicmFuZElELAorICAgIFN0cnVj
dHVyZVN0dWJJbmZvJiBzdHViSW5mbykKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCByZXN1bHQ7CisgICAgSWRlbnRpZmllciBp
ZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIGJyYW5kSUQudWlkKCkpOworCisgICAgewor
ICAgICAgICBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2Nr
LCB2bS5oZWFwKTsKKyAgICAgICAgaWYgKGZvcmNlSUNGYWlsdXJlKGdsb2JhbE9iamVjdCkpCisg
ICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKworICAgICAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IGJhc2UtPnN0cnVjdHVyZSh2bSk7CisKKyAgICAgICAgSW5saW5lQ2FjaGVBY3Rp
b24gYWN0aW9uID0gYWN0aW9uRm9yQ2VsbCh2bSwgYmFzZSk7CisgICAgICAgIGlmIChhY3Rpb24g
IT0gQXR0ZW1wdFRvQ2FjaGUpCisgICAgICAgICAgICByZXR1cm4gYWN0aW9uOworCisgICAgICAg
IGJvb2wgaXNCYXNlUHJvcGVydHkgPSB0cnVlOworICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkNo
ZWNrUHJpdmF0ZUJyYW5kQWRkQWNjZXNzQ2FzZSwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRl
bnQsIGlzQmFzZVByb3BlcnR5KSk7CisKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVCcmFuZCh2bSwgY29k
ZUJsb2NrLCBicmFuZElELCBzdHJ1Y3R1cmUpOworCisgICAgICAgIHJlc3VsdCA9IHN0dWJJbmZv
LmFkZEFjY2Vzc0Nhc2UobG9ja2VyLCBnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgRUNNQU1vZGU6
OnN0cmljdCgpLCBicmFuZElELCBXVEZNb3ZlKG5ld0Nhc2UpKTsKKworICAgICAgICBpZiAocmVz
dWx0LmdlbmVyYXRlZFNvbWVDb2RlKCkpIHsKKyAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6
Q2hlY2tQcml2YXRlQnJhbmRSZXBsYWNlV2l0aEp1bXAsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCks
IGlkZW50LCBpc0Jhc2VQcm9wZXJ0eSkpOworCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChy
ZXN1bHQuY29kZSgpKTsKKyAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVt
cChzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3Vs
dC5jb2RlKCkpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZpcmVXYXRjaHBvaW50c0FuZENs
ZWFyU3R1YklmTmVlZGVkKHZtLCBzdHViSW5mbywgY29kZUJsb2NrLCByZXN1bHQpOworCisgICAg
cmV0dXJuIHJlc3VsdC5zaG91bGRHaXZlVXBOb3coKSA/IEdpdmVVcE9uQ2FjaGUgOiBSZXRyeUNh
Y2hlTGF0ZXI7Cit9CisKK3ZvaWQgcmVwYXRjaENoZWNrUHJpdmF0ZUJyYW5kKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU09iamVjdCogYmFzZU9i
amVjdCwgQ2FjaGVhYmxlSWRlbnRpZmllciBicmFuZElELCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1
YkluZm8pCit7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2Up
OworCisgICAgaWYgKHRyeUNhY2hlQ2hlY2tQcml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0LCBjb2Rl
QmxvY2ssIGJhc2VPYmplY3QsIGJyYW5kSUQsIHN0dWJJbmZvKSA9PSBHaXZlVXBPbkNhY2hlKQor
ICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93
UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRHZW5lcmljKTsKK30K
Kworc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlU2V0UHJpdmF0ZUJyYW5kKAorICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU09i
amVjdCogYmFzZSwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXIg
YnJhbmRJRCwKKyAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCit7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgcmVzdWx0
OworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBicmFuZElE
LnVpZCgpKTsKKworICAgIHsKKyAgICAgICAgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihjb2RlQmxvY2stPm1fbG9jaywgdm0uaGVhcCk7CisgICAgICAgIGlmIChmb3JjZUlDRmFpbHVy
ZShnbG9iYWxPYmplY3QpKQorICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisgICAg
ICAgIAorICAgICAgICBBU1NFUlQob2xkU3RydWN0dXJlKTsKKworICAgICAgICBpZiAob2xkU3Ry
dWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkKKyAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0
ZXI7CisKKyAgICAgICAgSW5saW5lQ2FjaGVBY3Rpb24gYWN0aW9uID0gYWN0aW9uRm9yQ2VsbCh2
bSwgYmFzZSk7CisgICAgICAgIGlmIChhY3Rpb24gIT0gQXR0ZW1wdFRvQ2FjaGUpCisgICAgICAg
ICAgICByZXR1cm4gYWN0aW9uOworICAgICAgICAKKyAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1
Y3R1cmUgPSBTdHJ1Y3R1cmU6OnNldEJyYW5kVHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVy
ZUNvbmN1cnJlbnRseShvbGRTdHJ1Y3R1cmUsIGJyYW5kSUQudWlkKCkpOworICAgICAgICBpZiAo
IW5ld1N0cnVjdHVyZSkKKyAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7CisgICAg
ICAgIGlmIChuZXdTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQorICAgICAgICAgICAgcmV0dXJu
IEdpdmVVcE9uQ2FjaGU7CisgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQo
KSA9PSBvbGRTdHJ1Y3R1cmUpOworICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlLT50cmFuc2l0
aW9uS2luZCgpID09IFRyYW5zaXRpb25LaW5kOjpTZXRCcmFuZCk7CisgICAgICAgIEFTU0VSVChu
ZXdTdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOworICAgICAgICAKKyAgICAgICAgYm9vbCBpc0Jhc2VQ
cm9wZXJ0eSA9IHRydWU7CisgICAgICAgIExPR19JQygoSUNFdmVudDo6U2V0UHJpdmF0ZUJyYW5k
QWRkQWNjZXNzQ2FzZSwgb2xkU3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIGlzQmFzZVBy
b3BlcnR5KSk7CisKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2Ug
PSBBY2Nlc3NDYXNlOjpjcmVhdGVTZXRQcml2YXRlQnJhbmQodm0sIGNvZGVCbG9jaywgYnJhbmRJ
RCwgb2xkU3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUpOworCisgICAgICAgIHJlc3VsdCA9IHN0dWJJ
bmZvLmFkZEFjY2Vzc0Nhc2UobG9ja2VyLCBnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgRUNNQU1v
ZGU6OnN0cmljdCgpLCBicmFuZElELCBXVEZNb3ZlKG5ld0Nhc2UpKTsKKworICAgICAgICBpZiAo
cmVzdWx0LmdlbmVyYXRlZFNvbWVDb2RlKCkpIHsKKyAgICAgICAgICAgIExPR19JQygoSUNFdmVu
dDo6U2V0UHJpdmF0ZUJyYW5kUmVwbGFjZVdpdGhKdW1wLCBvbGRTdHJ1Y3R1cmUtPmNsYXNzSW5m
bygpLCBpZGVudCwgaXNCYXNlUHJvcGVydHkpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6
OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0
aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmaXJl
V2F0Y2hwb2ludHNBbmRDbGVhclN0dWJJZk5lZWRlZCh2bSwgc3R1YkluZm8sIGNvZGVCbG9jaywg
cmVzdWx0KTsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0LnNob3VsZEdpdmVVcE5vdygpID8gR2l2
ZVVwT25DYWNoZSA6IFJldHJ5Q2FjaGVMYXRlcjsKK30KKwordm9pZCByZXBhdGNoU2V0UHJpdmF0
ZUJyYW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2Nr
LCBKU09iamVjdCogYmFzZU9iamVjdCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIENhY2hlYWJs
ZUlkZW50aWZpZXIgYnJhbmRJRCwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQoreworICAg
IFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKworICAgIGlmICh0
cnlDYWNoZVNldFByaXZhdGVCcmFuZChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVj
dCwgb2xkU3RydWN0dXJlLCAgYnJhbmRJRCwgc3R1YkluZm8pID09IEdpdmVVcE9uQ2FjaGUpCisg
ICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQ
YXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRHZW5lcmljKTsKK30KKwog
c3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5zdGFuY2VPZigKICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZSB2YWx1
ZVZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1Yklu
Zm8sCiAgICAgYm9vbCB3YXNGb3VuZCkKQEAgLTE1ODAsNiArMTY4NiwxOCBAQCB2b2lkIHJlc2V0
SW5zdGFuY2VPZihTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiAgICAgcmVzZXRQYXRjaGFi
bGVKdW1wKHN0dWJJbmZvKTsKIH0KIAordm9pZCByZXNldENoZWNrUHJpdmF0ZUJyYW5kKENvZGVC
bG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCit7CisgICAgZnRs
VGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9j
YXRpb24sIG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUpOworICAgIElubGluZUFj
Y2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExv
Y2F0aW9uKTsKK30KKwordm9pZCByZXNldFNldFByaXZhdGVCcmFuZChDb2RlQmxvY2sqIGNvZGVC
bG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQoreworICAgIGZ0bFRodW5rQXdhcmVS
ZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVy
YXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSk7CisgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVT
dHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworfQor
CiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4ganNUb1dhc21JQ0NvZGVQdHIo
Vk0mIHZtLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpTT2JqZWN0KiBjYWxsZWUpCiB7
CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZXBhdGNoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaApp
bmRleCA1ZGQyMGM2MzZhMDUxNjg3ZDkxNmU4MGFiNzgzYjBlOWU2NmQzMWRhLi5lZTZkNmYzZmM4
NmZkMTBjZjg5NDk3ODM3YTRhOGI2YTU0YjczMzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlcGF0Y2guaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Jl
cGF0Y2guaApAQCAtNTMsNiArNTMsOCBAQCB2b2lkIHJlcGF0Y2hHZXRCeShKU0dsb2JhbE9iamVj
dCosIENvZGVCbG9jayosIEpTVmFsdWUsIENhY2hlYWJsZUlkZW50aWZpZXIsIGNvbgogdm9pZCBy
ZXBhdGNoUHV0QnlJRChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUsIFN0cnVj
dHVyZSosIENhY2hlYWJsZUlkZW50aWZpZXIsIGNvbnN0IFB1dFByb3BlcnR5U2xvdCYsIFN0cnVj
dHVyZVN0dWJJbmZvJiwgUHV0S2luZCk7CiB2b2lkIHJlcGF0Y2hEZWxldGVCeShKU0dsb2JhbE9i
amVjdCosIENvZGVCbG9jayosIERlbGV0ZVByb3BlcnR5U2xvdCYsIEpTVmFsdWUsIFN0cnVjdHVy
ZSosIENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZvJiwgRGVsQnlLaW5kLCBF
Q01BTW9kZSk7CiB2b2lkIHJlcGF0Y2hJbkJ5SUQoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sq
LCBKU09iamVjdCosIENhY2hlYWJsZUlkZW50aWZpZXIsIGJvb2wgd2FzRm91bmQsIGNvbnN0IFBy
b3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJbmZvJik7Cit2b2lkIHJlcGF0Y2hDaGVja1ByaXZh
dGVCcmFuZChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTT2JqZWN0KiwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mKTsKK3ZvaWQgcmVwYXRjaFNldFByaXZhdGVC
cmFuZChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTT2JqZWN0KiwgU3RydWN0dXJlKiwg
Q2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVwYXRjaElu
c3RhbmNlT2YoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlIHZhbHVlLCBKU1Zh
bHVlIHByb3RvdHlwZSwgU3RydWN0dXJlU3R1YkluZm8mLCBib29sIHdhc0ZvdW5kKTsKIHZvaWQg
bGlua0ZvcihWTSYsIENhbGxGcmFtZSosIENhbGxMaW5rSW5mbyYsIENvZGVCbG9jayosIEpTT2Jq
ZWN0KiBjYWxsZWUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPik7CiB2b2lk
IGxpbmtEaXJlY3RGb3IoQ2FsbEZyYW1lKiwgQ2FsbExpbmtJbmZvJiwgQ29kZUJsb2NrKiwgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KTsKQEAgLTY0LDYgKzY2LDggQEAgdm9p
ZCByZXNldFB1dEJ5SUQoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVz
ZXREZWxCeShDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIERlbEJ5S2luZCk7CiB2b2lk
IHJlc2V0SW5CeUlEKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlc2V0
SW5zdGFuY2VPZihTdHJ1Y3R1cmVTdHViSW5mbyYpOwordm9pZCByZXNldENoZWNrUHJpdmF0ZUJy
YW5kKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7Cit2b2lkIHJlc2V0U2V0UHJpdmF0
ZUJyYW5kKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIGZ0bFRodW5rQXdh
cmVSZXBhdGNoQ2FsbChDb2RlQmxvY2sqLCBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQdHJU
YWc+LCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IG5ld0NhbGxlZUZ1bmN0aW9uKTsKIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBqc1RvV2FzbUlDQ29kZVB0cihWTSYs
IENvZGVTcGVjaWFsaXphdGlvbktpbmQsIEpTT2JqZWN0KiBjYWxsZWUpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCBkMTVhYmE4MWYw
YmRjODdlODdjZWUyZDI4M2VjNzNjZjY1MDc2MTUxLi40YTI5OTEwZjJjNGJhYmYyYTczMjQyNjg1
YWViNjkyNDE3YWJkN2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAKQEAgLTEzMDEsNiArMTMwMSw3NyBAQCBMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfcHV0X3ByaXZhdGVfbmFtZSkKICAgICBMTElOVF9FTkQoKTsgICAgCiB9CiAK
K0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zZXRfcHJpdmF0ZV9icmFuZCkKK3sKKyAg
ICBMTElOVF9CRUdJTigpOworCisgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcFNldFByaXZh
dGVCcmFuZD4oKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1l
LCBieXRlY29kZS5tX2Jhc2UpOworICAgIEpTVmFsdWUgYnJhbmQgPSBnZXRPcGVyYW5kKGNhbGxG
cmFtZSwgYnl0ZWNvZGUubV9icmFuZCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5t
ZXRhZGF0YShjb2RlQmxvY2spOworICAgIEFTU0VSVChiYXNlVmFsdWUuaXNPYmplY3QoKSk7Cisg
ICAgQVNTRVJUKGJyYW5kLmlzU3ltYm9sKCkpOworCisgICAgSlNPYmplY3QqIGJhc2VPYmplY3Qg
PSBhc09iamVjdChiYXNlVmFsdWUpOworICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gYmFz
ZU9iamVjdC0+c3RydWN0dXJlKHZtKTsKKworICAgIGJhc2VPYmplY3QtPnNldFByaXZhdGVCcmFu
ZChnbG9iYWxPYmplY3QsIGJyYW5kKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKwor
ICAgIGlmICghTExJTlRfQUxXQVlTX0FDQ0VTU19TTE9XICYmICFvbGRTdHJ1Y3R1cmUtPmlzRGlj
dGlvbmFyeSgpKSB7CisgICAgICAgIEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29k
ZUJsb2NrLT5tX2xvY2ssIHZtLmhlYXApOworICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVy
ZSA9IGJhc2VPYmplY3QtPnN0cnVjdHVyZSh2bSk7CisKKyAgICAgICAgQVNTRVJUKG9sZFN0cnVj
dHVyZSA9PSBuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7CisgICAgICAgIEFTU0VSVChvbGRT
dHJ1Y3R1cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpOwor
CisgICAgICAgIC8vIFN0YXJ0IG91dCBieSBjbGVhcmluZyBvdXQgdGhlIG9sZCBjYWNoZS4KKyAg
ICAgICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgIG1ldGFkYXRhLm1f
bmV3U3RydWN0dXJlSUQgPSAwOworICAgICAgICBtZXRhZGF0YS5tX2JyYW5kLmNsZWFyKCk7CisK
KyAgICAgICAgaWYgKCFuZXdTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7CisgICAgICAgICAg
ICBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEID0gb2xkU3RydWN0dXJlLT5pZCgpOworICAgICAg
ICAgICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRCA9IG5ld1N0cnVjdHVyZS0+aWQoKTsKKyAg
ICAgICAgICAgIG1ldGFkYXRhLm1fYnJhbmQuc2V0KHZtLCBjb2RlQmxvY2ssIGJyYW5kLmFzQ2Vs
bCgpKTsKKyAgICAgICAgfQorICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2sp
OworICAgIH0KKworICAgIExMSU5UX0VORCgpOyAgICAKK30KKworTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX2NoZWNrX3ByaXZhdGVfYnJhbmQpCit7CisgICAgTExJTlRfQkVHSU4oKTsK
KworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BDaGVja1ByaXZhdGVCcmFuZD4oKTsKKyAg
ICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAgSlNW
YWx1ZSBiYXNlVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKTsK
KyAgICBKU1ZhbHVlIGJyYW5kID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYnJh
bmQpOworCisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBiYXNlVmFsdWUudG9PYmplY3QoZ2xv
YmFsT2JqZWN0KTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKworICAgIEFTU0VSVChi
cmFuZC5pc1N5bWJvbCgpKTsKKworICAgIGJhc2VPYmplY3QtPmNoZWNrUHJpdmF0ZUJyYW5kKGds
b2JhbE9iamVjdCwgYnJhbmQpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworCisgICAg
Ly8gU2luY2UgYSBicmFuZCBjYW4ndCBldmVyIGJlIHJlbW92ZWQgZnJvbSBhbiBvYmplY3QsIGl0
J3Mgc2FmZSB0bworICAgIC8vIHJlbHkgb24gU3RydWN0dXJlSUQgZXZlbiBpZiBpdCdzIGFuIHVu
Y2FjaGVhYmxlIGRpY3Rpb25hcnkuCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlT2Jq
ZWN0LT5zdHJ1Y3R1cmUodm0pOworICAgIGlmICghTExJTlRfQUxXQVlTX0FDQ0VTU19TTE9XKSB7
CisgICAgICAgIEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xv
Y2ssIHZtLmhlYXApOworCisgICAgICAgIG1ldGFkYXRhLm1fc3RydWN0dXJlSUQgPSBzdHJ1Y3R1
cmUtPmlkKCk7CisgICAgICAgIG1ldGFkYXRhLm1fYnJhbmQuc2V0KHZtLCBjb2RlQmxvY2ssIGJy
YW5kLmFzQ2VsbCgpKTsKKyAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsK
KyAgICB9CisKKyAgICBMTElOVF9FTkQoKTsgICAgCit9CisKIExMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9kZWxfYnlfdmFsKQogewogICAgIExMSU5UX0JFR0lOKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCmluZGV4IDk4MWIzNmU1ZTgwNDUy
ODhjMGViNTFlOGY4YmY0ZWZkOTUzMGM5OGYuLjQ3MTFhOGVhNTI1MjdlZjAzMWQ4NmQ1NjY2OWRm
ZDI1ZjMwMzE0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5oCkBAIC03Nyw2ICs3Nyw4IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfZ2V0X2FyZ3VtZW50X2J5X3ZhbCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX3B1dF9ieV92YWwpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9wdXRfYnlfdmFsX2RpcmVjdCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX3B1dF9wcml2YXRlX25hbWUpOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9jaGVja19wcml2YXRlX2JyYW5kKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfc2V0X3ByaXZhdGVfYnJhbmQpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFsKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfcHV0X2dldHRlcl9ieV9pZCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX3B1dF9zZXR0ZXJfYnlfaWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCBlYTQzMWNl
NzNlZDgyMTg2MmQzNmUyZjA1NmQyZTBmMmQzYThlOTQ1Li42NjU3MWJlYjVjNjBiMTE3OWI0YTdj
MGJhZjk0OGJhMjI5MmRkZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtMjk5MSwzICsyOTkxLDQ4
IEBAIGVuZCkKIG9wKGZ1enplcl9yZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQsIG1hY3JvICgp
CiAgICAgbm90U3VwcG9ydGVkKCkKIGVuZCkKKworCitsbGludE9wV2l0aE1ldGFkYXRhKG9wX2No
ZWNrX3ByaXZhdGVfYnJhbmQsIE9wQ2hlY2tQcml2YXRlQnJhbmQsIG1hY3JvIChzaXplLCBnZXQs
IGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorICAgIG1ldGFkYXRhKHQ1LCB0MikKKyAgICBn
ZXQobV9iYXNlLCB0MykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0
MywgQ2VsbFRhZywgdDAsIC5vcENoZWNrUHJpdmF0ZUJyYW5kU2xvdykKKyAgICBnZXQobV9icmFu
ZCwgdDMpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDMsIENlbGxU
YWcsIHQxLCAub3BDaGVja1ByaXZhdGVCcmFuZFNsb3cpCisKKyAgICBsb2FkaSBPcENoZWNrUHJp
dmF0ZUJyYW5kOjpNZXRhZGF0YTo6bV9zdHJ1Y3R1cmVJRFt0NV0sIHQzCisgICAgYmluZXEgSlND
ZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDMsIC5vcENoZWNrUHJpdmF0ZUJyYW5kU2xvdworCisg
ICAgbG9hZHAgT3BDaGVja1ByaXZhdGVCcmFuZDo6TWV0YWRhdGE6Om1fYnJhbmRbdDVdLCB0Mwor
ICAgIGJwbmVxIHQzLCB0MSwgLm9wQ2hlY2tQcml2YXRlQnJhbmRTbG93CisgICAgZGlzcGF0Y2go
KQorCisub3BDaGVja1ByaXZhdGVCcmFuZFNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9z
bG93X3BhdGhfY2hlY2tfcHJpdmF0ZV9icmFuZCkKKyAgICBkaXNwYXRjaCgpCitlbmQpCisKKwor
bGxpbnRPcFdpdGhNZXRhZGF0YShvcF9zZXRfcHJpdmF0ZV9icmFuZCwgT3BTZXRQcml2YXRlQnJh
bmQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorICAgIG1l
dGFkYXRhKHQ1LCB0MikKKyAgICBnZXQobV9iYXNlLCB0MykKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZChzaXplLCB0MywgQ2VsbFRhZywgdDAsIC5vcFNldFByaXZhdGVCcmFuZFNs
b3cpCisgICAgZ2V0KG1fYnJhbmQsIHQzKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkKHNpemUsIHQzLCBDZWxsVGFnLCB0MSwgLm9wU2V0UHJpdmF0ZUJyYW5kU2xvdykKKworICAg
IGxvYWRpIE9wU2V0UHJpdmF0ZUJyYW5kOjpNZXRhZGF0YTo6bV9vbGRTdHJ1Y3R1cmVJRFt0NV0s
IHQyCisgICAgYmluZXEgdDIsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIC5vcFNldFByaXZh
dGVCcmFuZFNsb3cKKworICAgIGxvYWRwIE9wU2V0UHJpdmF0ZUJyYW5kOjpNZXRhZGF0YTo6bV9i
cmFuZFt0NV0sIHQzCisgICAgYnBuZXEgdDMsIHQxLCAub3BTZXRQcml2YXRlQnJhbmRTbG93CisK
KyAgICBsb2FkaSBPcFNldFByaXZhdGVCcmFuZDo6TWV0YWRhdGE6Om1fbmV3U3RydWN0dXJlSURb
dDVdLCB0MQorICAgIHN0b3JlaSB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXQorICAgIHdy
aXRlQmFycmllck9uT3BlcmFuZChzaXplLCBnZXQsIG1fYmFzZSkKKyAgICBkaXNwYXRjaCgpCisK
Ky5vcFNldFByaXZhdGVCcmFuZFNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3Bh
dGhfc2V0X3ByaXZhdGVfYnJhbmQpCisgICAgZGlzcGF0Y2goKQorZW5kKQorCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmlu
ZGV4IGUxMmRjMzgzYmNlNzYzZmI4YjYxNzNiMzIxMmE2YTM1NmU2MTNlM2QuLjI3ZTc2ZDJmMjA2
NWNlNzhjNDNiYTQzNDM2NWM5MzU5ZDkxOWNiMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0xODE1LDYgKzE4
MTUsNDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wdXRfcHJpdmF0ZV9uYW1lLCBPcFB1dFBy
aXZhdGVOYW1lLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXMKICAgICBkaXNwYXRjaCgpCiBlbmQpCiAK
K2xsaW50T3BXaXRoTWV0YWRhdGEob3Bfc2V0X3ByaXZhdGVfYnJhbmQsIE9wU2V0UHJpdmF0ZUJy
YW5kLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKKyAgICBn
ZXQobV9iYXNlLCB0MykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChzaXplLCB0Mywg
dDAsIC5vcFNldFByaXZhdGVCcmFuZFNsb3cpCisgICAgZ2V0KG1fYnJhbmQsIHQzKQorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQzLCB0MSwgLm9wU2V0UHJpdmF0ZUJyYW5k
U2xvdykKKyAgICBtZXRhZGF0YSh0NSwgdDIpCisgICAgbG9hZGkgT3BTZXRQcml2YXRlQnJhbmQ6
Ok1ldGFkYXRhOjptX29sZFN0cnVjdHVyZUlEW3Q1XSwgdDIKKyAgICBiaW5lcSB0MiwgSlNDZWxs
OjptX3N0cnVjdHVyZUlEW3QwXSwgLm9wU2V0UHJpdmF0ZUJyYW5kU2xvdworCisgICAgbG9hZHAg
T3BTZXRQcml2YXRlQnJhbmQ6Ok1ldGFkYXRhOjptX2JyYW5kW3Q1XSwgdDMKKyAgICBicG5lcSB0
MywgdDEsIC5vcFNldFByaXZhdGVCcmFuZFNsb3cKKworICAgIGxvYWRpIE9wU2V0UHJpdmF0ZUJy
YW5kOjpNZXRhZGF0YTo6bV9uZXdTdHJ1Y3R1cmVJRFt0NV0sIHQxCisgICAgc3RvcmVpIHQxLCBK
U0NlbGw6Om1fc3RydWN0dXJlSURbdDBdCisgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kKHNpemUs
IGdldCwgbV9iYXNlKQorICAgIGRpc3BhdGNoKCkKKworLm9wU2V0UHJpdmF0ZUJyYW5kU2xvdzoK
KyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9zZXRfcHJpdmF0ZV9icmFuZCkKKyAg
ICBkaXNwYXRjaCgpCitlbmQpCisKK2xsaW50T3BXaXRoTWV0YWRhdGEob3BfY2hlY2tfcHJpdmF0
ZV9icmFuZCwgT3BDaGVja1ByaXZhdGVCcmFuZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gs
IG1ldGFkYXRhLCByZXR1cm4pCisgICAgbWV0YWRhdGEodDUsIHQyKQorICAgIGdldChtX2Jhc2Us
IHQzKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQzLCB0MCwgLm9wQ2hl
Y2tQcml2YXRlQnJhbmRTbG93KQorICAgIGdldChtX2JyYW5kLCB0MykKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlQ2VsbChzaXplLCB0MywgdDEsIC5vcENoZWNrUHJpdmF0ZUJyYW5kU2xvdykK
KworICAgIGxvYWRwIE9wQ2hlY2tQcml2YXRlQnJhbmQ6Ok1ldGFkYXRhOjptX2JyYW5kW3Q1XSwg
dDMKKyAgICBicW5lcSB0MywgdDEsIC5vcENoZWNrUHJpdmF0ZUJyYW5kU2xvdworCisgICAgbG9h
ZGkgT3BDaGVja1ByaXZhdGVCcmFuZDo6TWV0YWRhdGE6Om1fc3RydWN0dXJlSURbdDVdLCB0Mgor
ICAgIGJpbmVxIHQyLCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCAub3BDaGVja1ByaXZhdGVC
cmFuZFNsb3cKKyAgICBkaXNwYXRjaCgpCisKKy5vcENoZWNrUHJpdmF0ZUJyYW5kU2xvdzoKKyAg
ICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9jaGVja19wcml2YXRlX2JyYW5kKQorICAg
IGRpc3BhdGNoKCkKK2VuZCkKKwogbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVT
dHJ1Y3QsIG9zckV4aXRQb2ludCkKICAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVO
YW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEs
IHJldHVybikKICAgICAgICAgbWFjcm8gY29udGlndW91c1B1dEJ5VmFsKHN0b3JlQ2FsbGJhY2sp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IDY0YTY2Zjc2NWM4ZjRk
Mjg0OTZkYTljZTZjNDRhYmIwOGFhODgxYjkuLjAyYjc4NzVjY2FmNmFmZjY2M2FjMWVlZjVhZGRi
OGRiZDM0MDkzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC0y
MDIsNiArMjAyLDcgQEAgRnVuY3Rpb25NZXRhZGF0YU5vZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2Rl
KAogICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25z
dHJ1Y3RvcktpbmQpKQogICAgICAgICAsIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObykpCiAgICAg
ICAgICwgbV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbihpc0Fycm93RnVuY3Rpb25Cb2R5
RXhwcmVzc2lvbikKKyAgICAgICAgLCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50KHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZSkpCiAgICAgICAgICwg
bV9wYXJzZU1vZGUobW9kZSkKICAgICAgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQog
ICAgICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikKQEAgLTIyNiw2ICsyMjcsNyBAQCBGdW5j
dGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUoCiAgICAgICAgICwgbV9jb25z
dHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCiAgICAg
ICAgICwgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vKSkKICAgICAgICAgLCBtX2lzQXJyb3dGdW5j
dGlvbkJvZHlFeHByZXNzaW9uKGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQorICAgICAg
ICAsIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByaXZh
dGVCcmFuZFJlcXVpcmVtZW50OjpOb25lKSkKICAgICAgICAgLCBtX3BhcnNlTW9kZShtb2RlKQog
ICAgICAgICAsIG1fc3RhcnRDb2x1bW4oc3RhcnRDb2x1bW4pCiAgICAgICAgICwgbV9lbmRDb2x1
bW4oZW5kQ29sdW1uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IGVkOTA3
NzUzOTA1N2Y1MzYxNjIzZmM3OWQ3ZWJiY2I5OGMwMTdiZGYuLjRiZjkzODZmMjZmMDI5ODNiNzg4
NjllNGEyNTAyNWY2MGVjOGFiMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgK
QEAgLTcyMSw3ICs3MjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBlbnVtIGNsYXNzIENsYXNz
RWxlbWVudFRhZyA6IHVpbnQ4X3QgeyBObywgSW5zdGFuY2UsIFN0YXRpYywgTGFzdFRhZyB9Owog
ICAgIGNsYXNzIFByb3BlcnR5Tm9kZSBmaW5hbCA6IHB1YmxpYyBQYXJzZXJBcmVuYUZyZWVhYmxl
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIGVudW0gVHlwZSA6IHVpbnQ4X3QgeyBDb25zdGFudCA9
IDEsIEdldHRlciA9IDIsIFNldHRlciA9IDQsIENvbXB1dGVkID0gOCwgU2hvcnRoYW5kID0gMTYs
IFNwcmVhZCA9IDMyLCBQcml2YXRlID0gNjQgfTsKKyAgICAgICAgZW51bSBUeXBlIDogdWludDhf
dCB7IENvbnN0YW50ID0gMSwgR2V0dGVyID0gMiwgU2V0dGVyID0gNCwgQ29tcHV0ZWQgPSA4LCBT
aG9ydGhhbmQgPSAxNiwgU3ByZWFkID0gMzIsIFByaXZhdGVGaWVsZCA9IDY0LCBQcml2YXRlTWV0
aG9kID0gMTI4IH07CiAKICAgICAgICAgUHJvcGVydHlOb2RlKGNvbnN0IElkZW50aWZpZXImLCBF
eHByZXNzaW9uTm9kZSosIFR5cGUsIFN1cGVyQmluZGluZywgQ2xhc3NFbGVtZW50VGFnKTsKICAg
ICAgICAgUHJvcGVydHlOb2RlKEV4cHJlc3Npb25Ob2RlKiwgVHlwZSwgU3VwZXJCaW5kaW5nLCBD
bGFzc0VsZW1lbnRUYWcpOwpAQCAtNzQwLDcgKzc0MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBib29sIGlzSW5zdGFuY2VDbGFzc0ZpZWxkKCkgY29uc3QgeyByZXR1cm4gaXNJbnN0YW5j
ZUNsYXNzUHJvcGVydHkoKSAmJiAhbmVlZHNTdXBlckJpbmRpbmcoKTsgfQogICAgICAgICBib29s
IGlzU3RhdGljQ2xhc3NGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGlzU3RhdGljQ2xhc3NQcm9wZXJ0
eSgpICYmICFuZWVkc1N1cGVyQmluZGluZygpOyB9CiAgICAgICAgIGJvb2wgaXNPdmVycmlkZGVu
QnlEdXBsaWNhdGUoKSBjb25zdCB7IHJldHVybiBtX2lzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlOyB9
Ci0gICAgICAgIGJvb2wgaXNQcml2YXRlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlICYgUHJpdmF0
ZTsgfQorICAgICAgICBib29sIGlzUHJpdmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSAmIChQ
cml2YXRlRmllbGQgfCBQcml2YXRlTWV0aG9kKTsgfQogICAgICAgICBib29sIGhhc0NvbXB1dGVk
TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXhwcmVzc2lvbjsgfQogICAgICAgICBib29sIGlzQ29t
cHV0ZWRDbGFzc0ZpZWxkKCkgY29uc3QgeyByZXR1cm4gaXNDbGFzc0ZpZWxkKCkgJiYgaGFzQ29t
cHV0ZWROYW1lKCk7IH0KICAgICAgICAgdm9pZCBzZXRJc092ZXJyaWRkZW5CeUR1cGxpY2F0ZSgp
IHsgbV9pc092ZXJyaWRkZW5CeUR1cGxpY2F0ZSA9IHRydWU7IH0KQEAgLTc2MCw3ICs3NjAsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogbV9uYW1lOwogICAg
ICAgICBFeHByZXNzaW9uTm9kZSogbV9leHByZXNzaW9uOwogICAgICAgICBFeHByZXNzaW9uTm9k
ZSogbV9hc3NpZ247Ci0gICAgICAgIHVuc2lnbmVkIG1fdHlwZSA6IDc7CisgICAgICAgIHVuc2ln
bmVkIG1fdHlwZTsKICAgICAgICAgdW5zaWduZWQgbV9uZWVkc1N1cGVyQmluZGluZyA6IDE7CiAg
ICAgICAgIHN0YXRpY19hc3NlcnQoMSA8PCAyID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENsYXNz
RWxlbWVudFRhZzo6TGFzdFRhZyksICJDbGFzc0VsZW1lbnRUYWcgc2hvdWxkbid0IHVzZSBtb3Jl
IHRoYW4gdHdvIGJpdHMiKTsKICAgICAgICAgdW5zaWduZWQgbV9jbGFzc0VsZW1lbnRUYWcgOiAy
OwpAQCAtODM4LDcgKzgzOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1fc3Vi
c2NyaXB0SGFzQXNzaWdubWVudHM7CiAgICAgfTsKIAotICAgIGVudW0gY2xhc3MgRG90VHlwZSB7
IE5hbWUsIFByaXZhdGVGaWVsZCB9OworICAgIGVudW0gY2xhc3MgRG90VHlwZSB7IE5hbWUsIFBy
aXZhdGVNZW1iZXIgfTsKICAgICBjbGFzcyBCYXNlRG90Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9u
Tm9kZSB7CiAgICAgcHVibGljOgogICAgICAgICBCYXNlRG90Tm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERvdFR5cGUp
OwpAQCAtODQ2LDcgKzg0Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBFeHByZXNzaW9u
Tm9kZSogYmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZTsgfQogICAgICAgICBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudDsgfQogICAgICAgICBE
b3RUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KLSAgICAgICAgYm9vbCBpc1By
aXZhdGVGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBEb3RUeXBlOjpQcml2YXRlRmll
bGQ7IH0KKyAgICAgICAgYm9vbCBpc1ByaXZhdGVNZW1iZXIoKSBjb25zdCB7IHJldHVybiBtX3R5
cGUgPT0gRG90VHlwZTo6UHJpdmF0ZU1lbWJlcjsgfQogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBiYXNlLCBSZWZQdHI8UmVnaXN0ZXJJRD4mIHRoaXNWYWx1ZSk7CiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlKTsKQEAgLTg3MCw3ICs4NzAsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBmaW5hbDsKIAogICAgICAgICBib29sIGlz
TG9jYXRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIGJvb2wgaXNQ
cml2YXRlTG9jYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3R5cGUgPT0gRG90VHlw
ZTo6UHJpdmF0ZUZpZWxkOyB9CisgICAgICAgIGJvb2wgaXNQcml2YXRlTG9jYXRpb24oKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX3R5cGUgPT0gRG90VHlwZTo6UHJpdmF0ZU1lbWJlcjsgfQog
ICAgICAgICBib29sIGlzRG90QWNjZXNzb3JOb2RlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIH07CiAKQEAgLTIxNjEsNiArMjE2MSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB2b2lkIHNldEVjbWFOYW1lKGNvbnN0IElkZW50aWZpZXImIGVjbWFOYW1lKSB7IG1fZWNt
YU5hbWUgPSBlY21hTmFtZTsgfQogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBlY21hTmFtZSgp
IHsgcmV0dXJuIG1faWRlbnQuaXNFbXB0eSgpID8gbV9lY21hTmFtZSA6IG1faWRlbnQ7IH0KIAor
ICAgICAgICB2b2lkIHNldFByaXZhdGVCcmFuZFJlcXVpcmVtZW50KFByaXZhdGVCcmFuZFJlcXVp
cmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KSB7IG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOyB9Cisg
ICAgICAgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ+KG1fcHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQpOyB9CisKICAgICAgICAgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSgp
IHsgcmV0dXJuIG1fZnVuY3Rpb25Nb2RlOyB9CiAKICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0
YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbk5hbWVTdGFydDsgfQpAQCAtMjIwOSw2ICsy
MjEyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JL
aW5kIDogMjsKICAgICAgICAgdW5zaWduZWQgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA6
IDE7CiAgICAgICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gOiAx
OworICAgICAgICB1bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsKICAgICAg
ICAgU291cmNlUGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogICAgICAgICBGdW5jdGlvbk1vZGUgbV9m
dW5jdGlvbk1vZGU7CiAgICAgICAgIElkZW50aWZpZXIgbV9pZGVudDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCBhYmZmNDQwNDNmYmM0OWVjZTk2M2MzNGRiZWVm
NjNiMWYxZWY0NTY3Li40YzM3OWIzMDliOTNkZDUyYjZiZDYzMWZkODVhMmY4OGNmYTVjODU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yODcwLDYgKzI4NzAs
NyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVDbGFzc0V4cHJlc3Npb24gUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MoVAogICAgIGNsYXNzU2NvcGUtPnNldElzTGV4aWNh
bFNjb3BlKCk7CiAgICAgY2xhc3NTY29wZS0+cHJldmVudFZhckRlY2xhcmF0aW9ucygpOwogICAg
IGNsYXNzU2NvcGUtPnNldFN0cmljdE1vZGUoKTsKKyAgICBib29sIGRlY2xhcmVzUHJpdmF0ZU1l
dGhvZCA9IGZhbHNlOwogICAgIG5leHQoKTsKIAogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocmVx
dWlyZW1lbnRzICE9IEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50czo6VW5uYW1lZCwgIkN1cnJlbnRs
eSwgdGhlcmUgaXMgbm8gY2FsbGVyIHRoYXQgdXNlcyBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHM6
OlVubmFtZWQgZm9yIGNsYXNzIHN5bnRheC4iKTsKQEAgLTI5ODksMTYgKzI5OTAsMjIgQEAgcGFy
c2VNZXRob2Q6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQUklWQVRFTkFNRTog
ewogICAgICAgICAgICAgQVNTRVJUKE9wdGlvbnM6OnVzZVByaXZhdGVDbGFzc0ZpZWxkcygpKTsK
LSAgICAgICAgICAgIEpTVG9rZW4gdG9rZW4gPSBtX3Rva2VuOwogICAgICAgICAgICAgaWRlbnQg
PSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKICAgICAgICAgICAgIGlmICghT3B0aW9uczo6dXNlUHJp
dmF0ZVN0YXRpY0NsYXNzRmllbGRzKCkpCiAgICAgICAgICAgICAgICAgZmFpbElmVHJ1ZSh0YWcg
PT0gQ2xhc3NFbGVtZW50VGFnOjpTdGF0aWMsICJTdGF0aWMgY2xhc3MgZWxlbWVudCBjYW5ub3Qg
YmUgcHJpdmF0ZSIpOwogICAgICAgICAgICAgZmFpbElmVHJ1ZShpc0dldHRlciB8fCBpc1NldHRl
ciwgIkNhbm5vdCBwYXJzZSBjbGFzcyBtZXRob2Qgd2l0aCBwcml2YXRlIG5hbWUiKTsKICAgICAg
ICAgICAgIEFTU0VSVChpZGVudCk7CiAgICAgICAgICAgICBuZXh0KCk7Ci0gICAgICAgICAgICBm
YWlsSWZUcnVlKG1hdGNoQW5kVXBkYXRlKE9QRU5QQVJFTiwgdG9rZW4pLCAiQ2Fubm90IHBhcnNl
IGNsYXNzIG1ldGhvZCB3aXRoIHByaXZhdGUgbmFtZSIpOwotICAgICAgICAgICAgc2VtYW50aWNG
YWlsSWZUcnVlKGNsYXNzU2NvcGUtPmRlY2xhcmVQcml2YXRlTmFtZSgqaWRlbnQpICYgRGVjbGFy
YXRpb25SZXN1bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbiwgIkNhbm5vdCBkZWNsYXJl
IHByaXZhdGUgZmllbGQgdHdpY2UiKTsKLSAgICAgICAgICAgIHR5cGUgPSBzdGF0aWNfY2FzdDxQ
cm9wZXJ0eU5vZGU6OlR5cGU+KHR5cGUgfCBQcm9wZXJ0eU5vZGU6OlByaXZhdGUpOworICAgICAg
ICAgICAgaWYgKE9wdGlvbnM6OnVzZVByaXZhdGVNZXRob2RzKCkgJiYgbWF0Y2goT1BFTlBBUkVO
KSkgeworICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShjbGFzc1Njb3BlLT5kZWNs
YXJlUHJpdmF0ZU1ldGhvZCgqaWRlbnQpICYgRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBs
aWNhdGVEZWNsYXJhdGlvbiwgIkNhbm5vdCBkZWNsYXJlIHByaXZhdGUgbWV0aG9kIHR3aWNlIik7
CisgICAgICAgICAgICAgICAgZGVjbGFyZXNQcml2YXRlTWV0aG9kID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICB0eXBlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlIHwgUHJv
cGVydHlOb2RlOjpQcml2YXRlTWV0aG9kKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaChPUEVOUEFSRU4pLCAiQ2Fu
bm90IHBhcnNlIGNsYXNzIG1ldGhvZCB3aXRoIHByaXZhdGUgbmFtZSIpOworICAgICAgICAgICAg
c2VtYW50aWNGYWlsSWZUcnVlKGNsYXNzU2NvcGUtPmRlY2xhcmVQcml2YXRlRmllbGQoKmlkZW50
KSAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb24sICJDYW5u
b3QgZGVjbGFyZSBwcml2YXRlIGZpZWxkIHR3aWNlIik7CisgICAgICAgICAgICB0eXBlID0gc3Rh
dGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlIHwgUHJvcGVydHlOb2RlOjpQcml2YXRl
RmllbGQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoK
QEAgLTMwODQsMTAgKzMwOTEsMTkgQEAgcGFyc2VNZXRob2Q6CiAgICAgaW5mby5lbmRPZmZzZXQg
PSB0b2tlbkxvY2F0aW9uKCkuZW5kT2Zmc2V0IC0gMTsKICAgICBjb25zdW1lT3JGYWlsKENMT1NF
QlJBQ0UsICJFeHBlY3RlZCBhIGNsb3NpbmcgJ30nIGFmdGVyIGEgY2xhc3MgYm9keSIpOwogCisg
ICAgaWYgKGRlY2xhcmVzUHJpdmF0ZU1ldGhvZCkgeworICAgICAgICBJZGVudGlmaWVyIHByaXZh
dGVCcmFuZElkZW50aWZpZXIgPSBtX3ZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnBy
aXZhdGVCcmFuZFByaXZhdGVOYW1lKCk7CisgICAgICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBk
ZWNsYXJhdGlvblJlc3VsdCA9IGNsYXNzU2NvcGUtPmRlY2xhcmVMZXhpY2FsVmFyaWFibGUoJnBy
aXZhdGVCcmFuZElkZW50aWZpZXIsIHRydWUpOworICAgICAgICBBU1NFUlRfVU5VU0VEKGRlY2xh
cmF0aW9uUmVzdWx0LCBkZWNsYXJhdGlvblJlc3VsdCA9PSBEZWNsYXJhdGlvblJlc3VsdDo6VmFs
aWQpOworICAgICAgICBjbGFzc1Njb3BlLT51c2VWYXJpYWJsZSgmcHJpdmF0ZUJyYW5kSWRlbnRp
ZmllciwgZmFsc2UpOworICAgICAgICBjbGFzc1Njb3BlLT5hZGRDbG9zZWRWYXJpYWJsZUNhbmRp
ZGF0ZVVuY29uZGl0aW9uYWxseShwcml2YXRlQnJhbmRJZGVudGlmaWVyLmltcGwoKSk7CisgICAg
fQorCiAgICAgaWYgKE9wdGlvbnM6OnVzZVByaXZhdGVDbGFzc0ZpZWxkcygpKSB7CiAgICAgICAg
IC8vIEZhaWwgaWYgdGhlcmUgYXJlIG5vIHBhcmVudCBwcml2YXRlIG5hbWUgc2NvcGVzIGFuZCBh
bnkgdXNlZC1idXQtdW5kZWNsYXJlZCBwcml2YXRlIG5hbWVzLgogICAgICAgICBzZW1hbnRpY0Zh
aWxJZkZhbHNlKGNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzVG9PdXRlclNjb3BlKCksICJDYW5u
b3QgcmVmZXJlbmNlIHVuZGVjbGFyZWQgcHJpdmF0ZSBuYW1lcyIpOwogICAgIH0KKwogICAgIGF1
dG8gY2xhc3NFeHByZXNzaW9uID0gY29udGV4dC5jcmVhdGVDbGFzc0V4cHIobG9jYXRpb24sIGlu
Zm8sIGNsYXNzU2NvcGUtPmZpbmFsaXplTGV4aWNhbEVudmlyb25tZW50KCksIGNvbnN0cnVjdG9y
LCBwYXJlbnRDbGFzcywgY2xhc3NFbGVtZW50cyk7CiAgICAgcG9wU2NvcGUoY2xhc3NTY29wZSwg
VHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbyk7CiAgICAgcmV0dXJuIGNsYXNzRXhw
cmVzc2lvbjsKQEAgLTUxNjUsNyArNTE4MSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzCiAg
ICAgICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmRmFsc2UodXNlUHJpdmF0ZU5hbWUoaWRl
bnQpLCAiQ2Fubm90IHJlZmVyZW5jZSBwcml2YXRlIG5hbWVzIG91dHNpZGUgb2YgY2xhc3MiKTsK
ICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZXJTdGF0ZS5sYXN0UHJpdmF0ZU5hbWUgPSBpZGVu
dDsKICAgICAgICAgICAgICAgICAgICAgY3VycmVudFNjb3BlKCktPnVzZVZhcmlhYmxlKGlkZW50
LCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgICAgIHR5cGUgPSBEb3RUeXBlOjpQcml2YXRlRmll
bGQ7CisgICAgICAgICAgICAgICAgICAgIHR5cGUgPSBEb3RUeXBlOjpQcml2YXRlTWVtYmVyOwog
ICAgICAgICAgICAgICAgICAgICBtX3Rva2VuLm1fdHlwZSA9IElERU5UOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBtYXRjaE9yRmFpbChJREVOVCwgIkV4cGVjdGVkIGEgcHJv
cGVydHkgbmFtZSBhZnRlciAiLCBvcHRpb25hbENoYWluQmFzZSA/ICInPy4nIiA6ICInLiciKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDkwNTY1YmE0NDAyNzQxZTdm
OTQ3NGMyOTk2NjQ1Mzk0MDkyNTU0NzEuLjY4ZWZjYWRlYWEzZjYwOTUzZmU5NmNkMmViZmQwZDdi
YTg1NDQ5NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtNTAwLDEx
ICs1MDAsMjggQEAgcHVibGljOgogICAgICAgICBtX2xleGljYWxWYXJpYWJsZXMudXNlUHJpdmF0
ZU5hbWUoaWRlbnQpOwogICAgIH0KIAotICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJl
UHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgRGVjbGFyYXRpb25SZXN1
bHRNYXNrIGRlY2xhcmVQcml2YXRlTWV0aG9kKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogICAg
IHsKICAgICAgICAgQVNTRVJUKG1fYWxsb3dzTGV4aWNhbERlY2xhcmF0aW9ucyk7CiAgICAgICAg
IERlY2xhcmF0aW9uUmVzdWx0TWFzayByZXN1bHQgPSBEZWNsYXJhdGlvblJlc3VsdDo6VmFsaWQ7
Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9sZXhpY2FsVmFyaWFibGVzLmRlY2xhcmVQcml2
YXRlTmFtZShpZGVudCk7CisgICAgICAgIGJvb2wgYWRkUmVzdWx0ID0gbV9sZXhpY2FsVmFyaWFi
bGVzLmRlY2xhcmVQcml2YXRlTWV0aG9kKGlkZW50KTsKKworICAgICAgICBpZiAoIWFkZFJlc3Vs
dCkgeworICAgICAgICAgICAgcmVzdWx0IHw9IERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVw
bGljYXRlRGVjbGFyYXRpb247CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9
CisKKyAgICAgICAgdXNlVmFyaWFibGUoJmlkZW50LCBmYWxzZSk7CisgICAgICAgIGFkZENsb3Nl
ZFZhcmlhYmxlQ2FuZGlkYXRlVW5jb25kaXRpb25hbGx5KGlkZW50LmltcGwoKSk7CisKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVj
bGFyZVByaXZhdGVGaWVsZChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICB7CisgICAgICAg
IEFTU0VSVChtX2FsbG93c0xleGljYWxEZWNsYXJhdGlvbnMpOworICAgICAgICBEZWNsYXJhdGlv
blJlc3VsdE1hc2sgcmVzdWx0ID0gRGVjbGFyYXRpb25SZXN1bHQ6OlZhbGlkOworICAgICAgICBh
dXRvIGFkZFJlc3VsdCA9IG1fbGV4aWNhbFZhcmlhYmxlcy5kZWNsYXJlUHJpdmF0ZUZpZWxkKGlk
ZW50KTsKICAgICAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgIHJl
c3VsdCB8PSBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uOwog
ICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtOTQ0LDcgKzk2MSw3IEBAIHB1YmxpYzoKICAgICB+
UGFyc2VyKCk7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4KLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFyc2VyRXJyb3ImLCBjb25zdCBJZGVudGlmaWVy
JiwgUGFyc2luZ0NvbnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFt
ZXRlcnNFbmRQb3NpdGlvbiA9IFdURjo6bnVsbG9wdCwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVu
dCogPSBudWxscHRyLCBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiA9IG51bGxwdHIpOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZShQYXJzZXJFcnJvciYsIGNvbnN0
IElkZW50aWZpZXImLCBQYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0
cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gV1RGOjpudWxsb3B0LCBjb25zdCBQcml2YXRl
TmFtZUVudmlyb25tZW50KiA9IG51bGxwdHIsIGNvbnN0IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4q
ID0gbnVsbHB0cik7CiAKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXds
aW5lKCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgp
OyB9CiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uQmVmb3JlTGFzdFRva2VuKCkgY29uc3Qg
eyByZXR1cm4gbV9sZXhlci0+bGFzdFRva2VuTG9jYXRpb24oKTsgfQpAQCAtMjA4MCw3ICsyMDk3
LDcgQEAgcHJpdmF0ZToKIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRl
IDxjbGFzcyBQYXJzZWROb2RlPgotc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IElkZW50aWZpZXImIGNh
bGxlZU5hbWUsIFBhcnNpbmdDb250ZXh0IHBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1
bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIGNvbnN0IFZhcmlhYmxlRW52
aXJvbm1lbnQqIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzLCBjb25zdCBWZWN0b3I8SlNUZXh0UG9z
aXRpb24+KiBjbGFzc0ZpZWxkTG9jYXRpb25zKQorc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IElkZW50
aWZpZXImIGNhbGxlZU5hbWUsIFBhcnNpbmdDb250ZXh0IHBhcnNpbmdDb250ZXh0LCBPcHRpb25h
bDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIGNvbnN0IFBy
aXZhdGVOYW1lRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzLCBjb25zdCBWZWN0
b3I8SlNUZXh0UG9zaXRpb24+KiBjbGFzc0ZpZWxkTG9jYXRpb25zKQogewogICAgIGludCBlcnJM
aW5lOwogICAgIFN0cmluZyBlcnJNc2c7CkBAIC0yMDk2LDkgKzIxMTMsOSBAQCBzdGQ6OnVuaXF1
ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlKFBhcnNlckVycm9yJiBl
cnJvciwgY29uc3QgSQogICAgIEFTU0VSVChtX3NvdXJjZS0+c3RhcnRDb2x1bW4oKSA+IE9yZGlu
YWxOdW1iZXI6OmJlZm9yZUZpcnN0KCkpOwogICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uID0gbV9z
b3VyY2UtPnN0YXJ0Q29sdW1uKCkuemVyb0Jhc2VkSW50KCk7CiAKLSAgICBpZiAoaXNFdmFsTm9k
ZTxQYXJzZWROb2RlPigpICYmIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzICYmIHBhcmVudFNjb3Bl
UHJpdmF0ZU5hbWVzLT5wcml2YXRlTmFtZXNTaXplKCkpIHsKKyAgICBpZiAoaXNFdmFsTm9kZTxQ
YXJzZWROb2RlPigpICYmIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzICYmIHBhcmVudFNjb3BlUHJp
dmF0ZU5hbWVzLT5zaXplKCkpIHsKICAgICAgICAgY3VycmVudFNjb3BlKCktPnNldElzUHJpdmF0
ZU5hbWVTY29wZSgpOwotICAgICAgICBwYXJlbnRTY29wZVByaXZhdGVOYW1lcy0+Y29weVByaXZh
dGVOYW1lc1RvKGN1cnJlbnRTY29wZSgpLT5sZXhpY2FsVmFyaWFibGVzKCkpOworICAgICAgICBj
dXJyZW50U2NvcGUoKS0+bGV4aWNhbFZhcmlhYmxlcygpLmFkZFByaXZhdGVOYW1lc0Zyb20ocGFy
ZW50U2NvcGVQcml2YXRlTmFtZXMpOwogICAgIH0KIAogICAgIGF1dG8gcGFyc2VSZXN1bHQgPSBw
YXJzZUlubmVyKGNhbGxlZU5hbWUsIHBhcnNpbmdDb250ZXh0LCBmdW5jdGlvbkNvbnN0cnVjdG9y
UGFyYW1ldGVyc0VuZFBvc2l0aW9uLCBjbGFzc0ZpZWxkTG9jYXRpb25zKTsKQEAgLTIxODUsNyAr
MjIwMiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgKICAgICBEZXJpdmVk
Q29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlID0gRGVyaXZlZENvbnRleHRUeXBlOjpOb25l
LAogICAgIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUgPSBFdmFsQ29udGV4dFR5cGU6
Ok5vbmUsCiAgICAgRGVidWdnZXJQYXJzZURhdGEqIGRlYnVnZ2VyUGFyc2VEYXRhID0gbnVsbHB0
ciwKLSAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVByaXZhdGVOYW1l
cyA9IG51bGxwdHIsCisgICAgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogcGFyZW50U2Nv
cGVQcml2YXRlTmFtZXMgPSBudWxscHRyLAogICAgIGNvbnN0IFZlY3RvcjxKU1RleHRQb3NpdGlv
bj4qIGNsYXNzRmllbGRMb2NhdGlvbnMgPSBudWxscHRyLAogICAgIGJvb2wgaXNJbnNpZGVPcmRp
bmFyeUZ1bmN0aW9uID0gZmFsc2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlck1vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlck1vZGVzLmgKaW5kZXggNzk1MThhMzA1NGQ3ZjY1NWE4OTc3ODYzZmE0MTlmNDNiNjg1ZDAx
OS4uMWNkYWZjNTg1OTI2MDc2Y2YxM2I2MzhmYTIxNjI3ZDJmNzU1ZGI2NCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaApAQCAtMzcsNiArMzcsOCBAQCBlbnVt
IGNsYXNzIEpTUGFyc2VyU2NyaXB0TW9kZSB7IENsYXNzaWMsIE1vZHVsZSB9OwogCiBlbnVtIGNs
YXNzIFN1cGVyQmluZGluZyB7IE5lZWRlZCwgTm90TmVlZGVkIH07CiAKK2VudW0gY2xhc3MgUHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQgeyBOb25lLCBOZWVkZWQgfTsKKwogZW51bSBjbGFzcyBDb2Rl
R2VuZXJhdGlvbk1vZGUgOiB1aW50OF90IHsKICAgICBEZWJ1Z2dlciA9IDEgPDwgMCwKICAgICBU
eXBlUHJvZmlsZXIgPSAxIDw8IDEsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3lu
dGF4Q2hlY2tlci5oCmluZGV4IDg1NjFmMTU2YmY3MzAwNGRhYmI5ZjdkN2Y0MmFlZTZhOGVhNGE5
MTkuLjllZjJlZjdiZDIxZjQzMzE5YjQ2ZDk3MjYyZTQ1YWU3MmY1OWRhZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC0xNzksNyArMTc5LDcg
QEAgcHVibGljOgogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJvb2xlYW4oY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgYm9vbCkgeyByZXR1cm4gQm9vbEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlw
ZSBjcmVhdGVOdWxsKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpIHsgcmV0dXJuIE51bGxFeHByOyB9
CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQnJhY2tldEFjY2Vzcyhjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUsIGJvb2wsIGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIEJyYWNrZXRFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRG90
QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBjb25zdCBJZGVu
dGlmaWVyKiwgRG90VHlwZSB0eXBlLCBpbnQsIGludCwgaW50KSB7IHJldHVybiB0eXBlID09IERv
dFR5cGU6OlByaXZhdGVGaWVsZCA/IFByaXZhdGVEb3RFeHByIDogRG90RXhwcjsgfQorICAgIEV4
cHJlc3Npb25UeXBlIGNyZWF0ZURvdEFjY2Vzcyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uVHlwZSwgY29uc3QgSWRlbnRpZmllciosIERvdFR5cGUgdHlwZSwgaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gdHlwZSA9PSBEb3RUeXBlOjpQcml2YXRlTWVtYmVyID8gUHJpdmF0ZURvdEV4
cHIgOiBEb3RFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlUmVnRXhwKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZp
ZXImIGZsYWdzLCBpbnQpIHsgcmV0dXJuIFlhcnI6Omhhc0Vycm9yKFlhcnI6OmNoZWNrU3ludGF4
KHBhdHRlcm4uc3RyaW5nKCksIGZsYWdzLnN0cmluZygpKSkgPyAwIDogUmVnRXhwRXhwcjsgfQog
ICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvblR5cGUsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhwcjsgfQog
ICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvblR5cGUsIGludCwgaW50KSB7IHJldHVybiBOZXdFeHByOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcAppbmRl
eCA4MWE5YzkzOGRjMTFhNDIwMGRjYzQyODZjZjM0ZTc1ZTUyNDY4YzY1Li4zZWM1N2MzZTJhYmE1
ZGIzN2I3ZmI2MmUzYzlmMGExNjNmYjVkZTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAKQEAgLTEwNCw2ICsxMDQsNDAg
QEAgdm9pZCBWYXJpYWJsZUVudmlyb25tZW50OjptYXJrVmFyaWFibGVBc0V4cG9ydGVkKGNvbnN0
IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4KICAgICBmaW5kUmVzdWx0LT52YWx1ZS5zZXRJc0V4
cG9ydGVkKCk7CiB9CiAKK2Jvb2wgVmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVByaXZhdGVN
ZXRob2QoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikKK3sKKyAg
ICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgIG1fcmFyZURhdGEgPSBtYWtlVW5pcXVlPFZhcmlh
YmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhPigpOworCisgICAgYXV0byBmaW5kUmVzdWx0ID0gbV9y
YXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZmluZChpZGVudGlmaWVyKTsKKworICAgIGlmIChmaW5k
UmVzdWx0ID09IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmVuZCgpKSB7CisgICAgICAgIFBy
aXZhdGVOYW1lRW50cnkgbWV0YShQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzRGVjbGFyZWQg
fCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzTWV0aG9kKTsKKworICAgICAgICBhdXRvIGVu
dHJ5ID0gVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCk7CisgICAgICAgIGVudHJ5LnNldElzUHJp
dmF0ZU1ldGhvZCgpOworICAgICAgICBlbnRyeS5zZXRJc0NvbnN0KCk7CisgICAgICAgIGVudHJ5
LnNldElzQ2FwdHVyZWQoKTsKKyAgICAgICAgbV9tYXAuYWRkKGlkZW50aWZpZXIsIGVudHJ5KTsK
KworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFk
ZChpZGVudGlmaWVyLCBtZXRhKTsKKyAgICAgICAgcmV0dXJuIGFkZFJlc3VsdC5pc05ld0VudHJ5
OworICAgIH0KKworICAgIGlmIChmaW5kUmVzdWx0LT52YWx1ZS5pc0RlY2xhcmVkKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsgLy8gRXJyb3I6IGRlY2xhcmluZyBhIGR1cGxpY2F0ZSBwcml2YXRl
IG5hbWUuCisKKyAgICBhdXRvIGVudHJ5ID0gVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCk7Cisg
ICAgZW50cnkuc2V0SXNQcml2YXRlTWV0aG9kKCk7CisgICAgZW50cnkuc2V0SXNDb25zdCgpOwor
ICAgIGVudHJ5LnNldElzQ2FwdHVyZWQoKTsKKyAgICBtX21hcC5hZGQoaWRlbnRpZmllciwgZW50
cnkpOworCisgICAgLy8gaXQgd2FzIHByZXZpb3VzbHkgdXNlZCwgbWFyayBpdCBhcyBkZWNsYXJl
ZC4KKyAgICBQcml2YXRlTmFtZUVudHJ5IG1ldGEoUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJ
c0RlY2xhcmVkIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc1VzZWQgfCBQcml2YXRlTmFt
ZUVudHJ5OjpUcmFpdHM6OklzTWV0aG9kKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmFyZURh
dGEtPm1fcHJpdmF0ZU5hbWVzLnNldChpZGVudGlmaWVyLCBtZXRhKTsKKyAgICByZXR1cm4gIWFk
ZFJlc3VsdC5pc05ld0VudHJ5OworfQogCiB2b2lkIENvbXBhY3RURFpFbnZpcm9ubWVudDo6c29y
dENvbXBhY3QoQ29tcGFjdCYgY29tcGFjdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKaW5kZXggNTJlOWFhNDY1ODM3NTY5MzA4
MWIzNzc3ZTljN2FiN2NhOTFiZWU0My4uZjZkMzU4YjE5NzAwMmQyMGRlOTdmNDA2OTNjMzNmNjlk
NTU3MzgyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJs
ZUVudmlyb25tZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJs
ZUVudmlyb25tZW50LmgKQEAgLTQ1LDcgKzQ1LDggQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJ
TkUgYm9vbCBpc0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNGdW5jdGlvbjsg
fQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1BhcmFtZXRlcigpIGNvbnN0IHsgcmV0dXJuIG1f
Yml0cyAmIElzUGFyYW1ldGVyOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzU2xvcHB5TW9k
ZUhvaXN0aW5nQ2FuZGlkYXRlKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNTbG9wcHlNb2Rl
SG9pc3RpbmdDYW5kaWRhdGU7IH0KLSAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQcml2YXRlTmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzUHJpdmF0ZU5hbWU7IH0KKyAgICBBTFdBWVNf
SU5MSU5FIGJvb2wgaXNQcml2YXRlRmllbGQoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1By
aXZhdGVGaWVsZDsgfQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1ByaXZhdGVNZXRob2QoKSBj
b25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1ByaXZhdGVNZXRob2Q7IH0KIAogICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzZXRJc0NhcHR1cmVkKCkgeyBtX2JpdHMgfD0gSXNDYXB0dXJlZDsgfQogICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0NvbnN0KCkgeyBtX2JpdHMgfD0gSXNDb25zdDsgfQpA
QCAtNTcsNyArNTgsOCBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzRnVu
Y3Rpb24oKSB7IG1fYml0cyB8PSBJc0Z1bmN0aW9uOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldElzUGFyYW1ldGVyKCkgeyBtX2JpdHMgfD0gSXNQYXJhbWV0ZXI7IH0KICAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0SXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGUoKSB7IG1fYml0cyB8
PSBJc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZTsgfQotICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXRJc1ByaXZhdGVOYW1lKCkgeyBtX2JpdHMgfD0gSXNQcml2YXRlTmFtZTsgfQorICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXRJc1ByaXZhdGVGaWVsZCgpIHsgbV9iaXRzIHw9IElzUHJpdmF0
ZUZpZWxkOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzUHJpdmF0ZU1ldGhvZCgpIHsg
bV9iaXRzIHw9IElzUHJpdmF0ZU1ldGhvZDsgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGNs
ZWFySXNWYXIoKSB7IG1fYml0cyAmPSB+SXNWYXI7IH0KIApAQCAtODAsNyArODIsOCBAQCBwcml2
YXRlOgogICAgICAgICBJc0Z1bmN0aW9uID0gMSA8PCA3LAogICAgICAgICBJc1BhcmFtZXRlciA9
IDEgPDwgOCwKICAgICAgICAgSXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGUgPSAxIDw8IDks
Ci0gICAgICAgIElzUHJpdmF0ZU5hbWUgPSAxIDw8IDEwLAorICAgICAgICBJc1ByaXZhdGVGaWVs
ZCA9IDEgPDwgMTAsCisgICAgICAgIElzUHJpdmF0ZU1ldGhvZCA9IDEgPDwgMTEsCiAgICAgfTsK
ICAgICB1aW50MTZfdCBtX2JpdHMgeyAwIH07CiB9OwpAQCAtOTAsMTEgKzkzLDE2IEBAIHN0cnVj
dCBWYXJpYWJsZUVudmlyb25tZW50RW50cnlIYXNoVHJhaXRzIDogSGFzaFRyYWl0czxWYXJpYWJs
ZUVudmlyb25tZW50RW50cnk+CiB9OwogCiBzdHJ1Y3QgUHJpdmF0ZU5hbWVFbnRyeSB7CisgICAg
ZnJpZW5kIGNsYXNzIENhY2hlZFByaXZhdGVOYW1lRW50cnk7CisKIHB1YmxpYzoKICAgICBQcml2
YXRlTmFtZUVudHJ5KHVpbnQxNl90IHRyYWl0cyA9IDApIHsgbV9iaXRzID0gdHJhaXRzOyB9CiAK
ICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNVc2VkKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYg
SXNVc2VkOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzRGVjbGFyZWQoKSBjb25zdCB7IHJl
dHVybiBtX2JpdHMgJiBJc0RlY2xhcmVkOyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzTWV0
aG9kKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNNZXRob2Q7IH0KKworICAgIGJvb2wgaXNQ
cml2YXRlTWV0aG9kT3JBY2Vzc29yKCkgY29uc3QgeyByZXR1cm4gaXNNZXRob2QoKTsgfQogCiAg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzVXNlZCgpIHsgbV9iaXRzIHw9IElzVXNlZDsgfQog
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0RlY2xhcmVkKCkgeyBtX2JpdHMgfD0gSXNEZWNs
YXJlZDsgfQpAQCAtMTA3LDggKzExNSwxMCBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgZW51bSBU
cmFpdHMgOiB1aW50MTZfdCB7CisgICAgICAgIE5vbmUgPSAwLAogICAgICAgICBJc1VzZWQgPSAx
IDw8IDAsCiAgICAgICAgIElzRGVjbGFyZWQgPSAxIDw8IDEsCisgICAgICAgIElzTWV0aG9kID0g
MSA8PCAyLAogICAgIH07CiAKIHByaXZhdGU6CkBAIC0xMTYsMTUgKzEyNiwxOCBAQCBwcml2YXRl
OgogfTsKIAogc3RydWN0IFByaXZhdGVOYW1lRW50cnlIYXNoVHJhaXRzIDogSGFzaFRyYWl0czxQ
cml2YXRlTmFtZUVudHJ5PiB7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlv
biA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0g
ZmFsc2U7CiB9OwogCit0eXBlZGVmIEhhc2hNYXA8UGFja2VkUmVmUHRyPFVuaXF1ZWRTdHJpbmdJ
bXBsPiwgUHJpdmF0ZU5hbWVFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVm
UHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnlIYXNoVHJhaXRzPiBQcml2
YXRlTmFtZUVudmlyb25tZW50OworCiBjbGFzcyBWYXJpYWJsZUVudmlyb25tZW50IHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFBh
Y2tlZFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSwg
SWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4s
IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeUhhc2hUcmFpdHM+IE1hcDsKLSAgICB0eXBlZGVmIEhh
c2hNYXA8UGFja2VkUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgUHJpdmF0ZU5hbWVFbnRyeSwg
SWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4s
IFByaXZhdGVOYW1lRW50cnlIYXNoVHJhaXRzPiBQcml2YXRlTmFtZXM7CisKIHB1YmxpYzoKKwog
ICAgIFZhcmlhYmxlRW52aXJvbm1lbnQoKSB7IH0KICAgICBWYXJpYWJsZUVudmlyb25tZW50KFZh
cmlhYmxlRW52aXJvbm1lbnQmJiBvdGhlcikKICAgICAgICAgOiBtX21hcChXVEZNb3ZlKG90aGVy
Lm1fbWFwKSkKQEAgLTE0Niw2ICsxNTksMTYgQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUg
TWFwOjpjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX21hcC5lbmQoKTsgfQog
ICAgIEFMV0FZU19JTkxJTkUgTWFwOjpBZGRSZXN1bHQgYWRkKGNvbnN0IFJlZlB0cjxVbmlxdWVk
U3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpIHsgcmV0dXJuIG1fbWFwLmFkZChpZGVudGlmaWVyLCBW
YXJpYWJsZUVudmlyb25tZW50RW50cnkoKSk7IH0KICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6QWRk
UmVzdWx0IGFkZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBhZGQoaWRl
bnRpZmllci5pbXBsKCkpOyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIFByaXZhdGVOYW1lRW52aXJv
bm1lbnQ6OkFkZFJlc3VsdCBhZGRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudGlm
aWVyKSB7IHJldHVybiBhZGRQcml2YXRlTmFtZShpZGVudGlmaWVyLmltcGwoKSk7IH0KKyAgICBB
TFdBWVNfSU5MSU5FIFByaXZhdGVOYW1lRW52aXJvbm1lbnQ6OkFkZFJlc3VsdCBhZGRQcml2YXRl
TmFtZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQorICAgIHsK
KyAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICAgICAgbV9yYXJlRGF0YSA9IG1ha2VV
bmlxdWU8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+KCk7CisKKyAgICAgICAgcmV0dXJu
IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChpZGVudGlmaWVyLCBQcml2YXRlTmFtZUVu
dHJ5KCkpOworICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbWFwLnNpemUoKSArIHByaXZhdGVOYW1lc1NpemUoKTsgfQogICAgIEFMV0FZ
U19JTkxJTkUgdW5zaWduZWQgbWFwU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKTsg
fQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBjb250YWlucyhjb25zdCBSZWZQdHI8VW5pcXVlZFN0
cmluZ0ltcGw+JiBpZGVudGlmaWVyKSBjb25zdCB7IHJldHVybiBtX21hcC5jb250YWlucyhpZGVu
dGlmaWVyKTsgfQpAQCAtMTY0LDE3ICsxODcsMjAgQEAgcHVibGljOgogICAgIGJvb2wgaXNFdmVy
eXRoaW5nQ2FwdHVyZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkOyB9
CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fbWFwLnNpemUoKTsgfQogCi0g
ICAgdXNpbmcgUHJpdmF0ZU5hbWVzUmFuZ2UgPSBXVEY6Okl0ZXJhdG9yUmFuZ2U8UHJpdmF0ZU5h
bWVzOjppdGVyYXRvcj47CisgICAgdXNpbmcgUHJpdmF0ZU5hbWVzUmFuZ2UgPSBXVEY6Okl0ZXJh
dG9yUmFuZ2U8UHJpdmF0ZU5hbWVFbnZpcm9ubWVudDo6aXRlcmF0b3I+OwogCi0gICAgQUxXQVlT
X0lOTElORSBNYXA6OkFkZFJlc3VsdCBkZWNsYXJlUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmll
ciYgaWRlbnRpZmllcikgeyByZXR1cm4gZGVjbGFyZVByaXZhdGVOYW1lKGlkZW50aWZpZXIuaW1w
bCgpKTsgfQorICAgIEFMV0FZU19JTkxJTkUgTWFwOjpBZGRSZXN1bHQgZGVjbGFyZVByaXZhdGVG
aWVsZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBkZWNsYXJlUHJpdmF0
ZUZpZWxkKGlkZW50aWZpZXIuaW1wbCgpKTsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1c2VQ
cml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHVzZVByaXZhdGVOYW1l
KGlkZW50aWZpZXIuaW1wbCgpKTsgfQogCi0gICAgTWFwOjpBZGRSZXN1bHQgZGVjbGFyZVByaXZh
dGVOYW1lKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCisgICAg
Ym9vbCBkZWNsYXJlUHJpdmF0ZU1ldGhvZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7
IHJldHVybiBkZWNsYXJlUHJpdmF0ZU1ldGhvZChpZGVudGlmaWVyLmltcGwoKSk7IH0KKyAgICBi
b29sIGRlY2xhcmVQcml2YXRlTWV0aG9kKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4m
IGlkZW50aWZpZXIpOworCisgICAgTWFwOjpBZGRSZXN1bHQgZGVjbGFyZVByaXZhdGVGaWVsZChj
b25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQogICAgIHsKICAgICAg
ICAgYXV0byYgbWV0YSA9IGdldE9yQWRkUHJpdmF0ZU5hbWUoaWRlbnRpZmllci5nZXQoKSk7CiAg
ICAgICAgIG1ldGEuc2V0SXNEZWNsYXJlZCgpOwogICAgICAgICBhdXRvIGVudHJ5ID0gVmFyaWFi
bGVFbnZpcm9ubWVudEVudHJ5KCk7Ci0gICAgICAgIGVudHJ5LnNldElzUHJpdmF0ZU5hbWUoKTsK
KyAgICAgICAgZW50cnkuc2V0SXNQcml2YXRlRmllbGQoKTsKICAgICAgICAgZW50cnkuc2V0SXND
b25zdCgpOwogICAgICAgICBlbnRyeS5zZXRJc0NhcHR1cmVkKCk7CiAgICAgICAgIHJldHVybiBt
X21hcC5hZGQoaWRlbnRpZmllciwgZW50cnkpOwpAQCAtMjAxLDYgKzIyNywyNiBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5zaXplKCk7CiAgICAg
fQogCisgICAgQUxXQVlTX0lOTElORSBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiBwcml2
YXRlTmFtZUVudmlyb25tZW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghbV9yYXJlRGF0
YSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gJm1fcmFyZURh
dGEtPm1fcHJpdmF0ZU5hbWVzOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgYm9vbCBoYXNQ
cml2YXRlTWV0aG9kT3JBY2Nlc3NvcigpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIW1fcmFy
ZURhdGEpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgZm9yIChhdXRvIGVu
dHJ5IDogcHJpdmF0ZU5hbWVzKCkpIHsKKyAgICAgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc1By
aXZhdGVNZXRob2RPckFjZXNzb3IoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICBBTFdBWVNfSU5M
SU5FIGJvb2wgaGFzUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKICAg
ICB7CiAgICAgICAgIGlmICghbV9yYXJlRGF0YSkKQEAgLTIyMiw2ICsyNjgsMjAgQEAgcHVibGlj
OgogICAgICAgICB9CiAgICAgfQogCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGFkZFByaXZhdGVO
YW1lc0Zyb20oY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogcHJpdmF0ZU5hbWVFbnZpcm9u
bWVudCkKKyAgICB7CisgICAgICAgIGlmICghcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgICAgICBt
X3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4oKTsK
KworICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiAqcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCkgewor
ICAgICAgICAgICAgQVNTRVJUKGVudHJ5LnZhbHVlLmlzRGVjbGFyZWQoKSk7CisgICAgICAgICAg
ICBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoZW50cnkua2V5LCBlbnRyeS52YWx1ZSk7
CisgICAgICAgIH0KKyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY29weVVuZGVjbGFy
ZWRQcml2YXRlTmFtZXNUbyhWYXJpYWJsZUVudmlyb25tZW50JiBvdXRlcikgY29uc3QgewogICAg
ICAgICAvLyBVc2VkIGJ5IHRoZSBQYXJzZXIgdG8gdHJhbnNmZXIgcmVjb3JkZWQgdXNlcyBvZiBQ
cml2YXRlTmFtZXMgZnJvbSBhbgogICAgICAgICAvLyBpbm5lciBQcml2YXRlTmFtZUVudmlyb25t
ZW50IGludG8gYW4gb3V0ZXIgb25lLCBpbiBjYXNlIGEgUE5FIGlzIHVzZWQKQEAgLTI0NCw3ICsz
MDQsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICAgICAgUmFyZURhdGEoY29uc3QgUmFyZURh
dGEmKSA9IGRlZmF1bHQ7CiAgICAgICAgIFJhcmVEYXRhJiBvcGVyYXRvcj0oY29uc3QgUmFyZURh
dGEmKSA9IGRlZmF1bHQ7Ci0gICAgICAgIFByaXZhdGVOYW1lcyBtX3ByaXZhdGVOYW1lczsKKyAg
ICAgICAgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCBtX3ByaXZhdGVOYW1lczsKICAgICB9OwogCiBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVk
VHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3Bw
CmluZGV4IGNmZGM5ZWRiMDU1YTgzMTkwMTdhODkzYzRlYjY1ZDQ2NThhYmQ0OGEuLmUzMDI0ZDg3
YTg1ODc5Y2M3OTc3MDQzNzY3ZTVmMTdmOWY1MzY3ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTk5NCw2ICs5OTQsNyBAQCBwdWJsaWM6
CiAgICAgICAgIG1fYml0VmVjdG9ycy5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9iaXRWZWN0
b3JzKTsKICAgICAgICAgbV9jb25zdGFudElkZW50aWZpZXJTZXRzLmVuY29kZShlbmNvZGVyLCBy
YXJlRGF0YS5tX2NvbnN0YW50SWRlbnRpZmllclNldHMpOwogICAgICAgICBtX25lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyID0gcmFyZURhdGEubV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjsK
KyAgICAgICAgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9IHJhcmVEYXRhLm1fcHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQ7CiAgICAgfQogCiAgICAgVW5saW5rZWRDb2RlQmxvY2s6OlJhcmVEYXRh
KiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikgY29uc3QKQEAgLTEwMDgsNiArMTAwOSw3IEBAIHB1
YmxpYzoKICAgICAgICAgbV9iaXRWZWN0b3JzLmRlY29kZShkZWNvZGVyLCByYXJlRGF0YS0+bV9i
aXRWZWN0b3JzKTsKICAgICAgICAgbV9jb25zdGFudElkZW50aWZpZXJTZXRzLmRlY29kZShkZWNv
ZGVyLCByYXJlRGF0YS0+bV9jb25zdGFudElkZW50aWZpZXJTZXRzKTsKICAgICAgICAgcmFyZURh
dGEtPm1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSBtX25lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyOworICAgICAgICByYXJlRGF0YS0+bV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9IG1f
cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ7CiAgICAgICAgIHJldHVybiByYXJlRGF0YTsKICAgICB9
CiAKQEAgLTEwMjEsOCArMTAyMywxMSBAQCBwcml2YXRlOgogICAgIENhY2hlZFZlY3RvcjxDYWNo
ZWRCaXRWZWN0b3I+IG1fYml0VmVjdG9yczsKICAgICBDYWNoZWRWZWN0b3I8Q2FjaGVkQ29uc3Rh
bnRJZGVudGlmaWVyU2V0RW50cnk+IG1fY29uc3RhbnRJZGVudGlmaWVyU2V0czsKICAgICB1bnNp
Z25lZCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIDogMTsKKyAgICB1bnNpZ25lZCBtX3By
aXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsKIH07CiAKK3R5cGVkZWYgQ2FjaGVkSGFzaE1hcDxD
YWNoZWRSZWZQdHI8Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGwsIFVuaXF1ZWRTdHJpbmdJbXBsLCBX
VEY6OlBhY2tlZFB0clRyYWl0czxVbmlxdWVkU3RyaW5nSW1wbD4+LCBQcml2YXRlTmFtZUVudHJ5
LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+
PiwgUHJpdmF0ZU5hbWVFbnRyeUhhc2hUcmFpdHM+IENhY2hlZFByaXZhdGVOYW1lRW52aXJvbm1l
bnQ7CisKIGNsYXNzIENhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnRSYXJlRGF0YSA6IHB1YmxpYyBD
YWNoZWRPYmplY3Q8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+IHsKIHB1YmxpYzoKICAg
ICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50
OjpSYXJlRGF0YSYgcmFyZURhdGEpCkBAIC0xMDM2LDcgKzEwNDEsNyBAQCBwdWJsaWM6CiAgICAg
fQogCiBwcml2YXRlOgotICAgIENhY2hlZEhhc2hNYXA8Q2FjaGVkUmVmUHRyPENhY2hlZFVuaXF1
ZWRTdHJpbmdJbXBsLCBVbmlxdWVkU3RyaW5nSW1wbCwgV1RGOjpQYWNrZWRQdHJUcmFpdHM8VW5p
cXVlZFN0cmluZ0ltcGw+PiwgUHJpdmF0ZU5hbWVFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhh
c2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnlIYXNo
VHJhaXRzPiBtX3ByaXZhdGVOYW1lczsKKyAgICBDYWNoZWRQcml2YXRlTmFtZUVudmlyb25tZW50
IG1fcHJpdmF0ZU5hbWVzOwogfTsKIAogY2xhc3MgQ2FjaGVkVmFyaWFibGVFbnZpcm9ubWVudCA6
IHB1YmxpYyBDYWNoZWRPYmplY3Q8VmFyaWFibGVFbnZpcm9ubWVudD4gewpAQCAtMTIxMyw3ICsx
MjE4LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBDYWNoZWRIYXNoU2V0PENh
Y2hlZFJlZlB0cjxDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPiBt
X3ByaXZhdGVOYW1lczsKKyAgICBDYWNoZWRQcml2YXRlTmFtZUVudmlyb25tZW50IG1fcHJpdmF0
ZU5hbWVzOwogfTsKIAogY2xhc3MgQ2FjaGVkU3ltYm9sVGFibGUgOiBwdWJsaWMgQ2FjaGVkT2Jq
ZWN0PFN5bWJvbFRhYmxlPiB7CkBAIC0xNzkwLDYgKzE3OTUsNyBAQCBwdWJsaWM6CiAgICAgewog
ICAgICAgICBtX2NsYXNzU291cmNlLmVuY29kZShlbmNvZGVyLCByYXJlRGF0YS5tX2NsYXNzU291
cmNlKTsKICAgICAgICAgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5lbmNvZGUoZW5jb2Rlciwg
cmFyZURhdGEubV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CisgICAgICAgIG1fcGFyZW50UHJp
dmF0ZU5hbWVFbnZpcm9ubWVudC5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9wYXJlbnRQcml2
YXRlTmFtZUVudmlyb25tZW50KTsKICAgICB9CiAKICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZTo6UmFyZURhdGEqIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKSBjb25zdApAQCAtMTc5Nywx
MiArMTgwMywxNCBAQCBwdWJsaWM6CiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
OjpSYXJlRGF0YSogcmFyZURhdGEgPSBuZXcgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlJh
cmVEYXRhIHsgfTsKICAgICAgICAgbV9jbGFzc1NvdXJjZS5kZWNvZGUoZGVjb2RlciwgcmFyZURh
dGEtPm1fY2xhc3NTb3VyY2UpOwogICAgICAgICBtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzLmRl
Y29kZShkZWNvZGVyLCByYXJlRGF0YS0+bV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CisgICAg
ICAgIG1fcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudC5kZWNvZGUoZGVjb2RlciwgcmFyZURh
dGEtPm1fcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCk7CiAgICAgICAgIHJldHVybiByYXJl
RGF0YTsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgQ2FjaGVkU291cmNlQ29kZVdpdGhvdXRQcm92
aWRlciBtX2NsYXNzU291cmNlOwogICAgIENhY2hlZFJlZlB0cjxDYWNoZWRURFpFbnZpcm9ubWVu
dExpbms+IG1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7CisgICAgQ2FjaGVkUHJpdmF0ZU5hbWVF
bnZpcm9ubWVudCBtX3BhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQ7CiB9OwogCiBjbGFzcyBD
YWNoZWRGdW5jdGlvbkV4ZWN1dGFibGUgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlPiB7CkBAIC0xODM4LDYgKzE4NDYsNyBAQCBwdWJsaWM6CiAgICAgdW5z
aWduZWQgc3VwZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdXBlckJpbmRpbmc7IH0KICAg
ICB1bnNpZ25lZCBkZXJpdmVkQ29udGV4dFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2Rlcml2ZWRD
b250ZXh0VHlwZTsgfQogICAgIHVuc2lnbmVkIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkg
Y29uc3QgeyByZXR1cm4gbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjsgfQorICAgIHVuc2ln
bmVkIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlQnJh
bmRSZXF1aXJlbWVudDsgfQogCiAgICAgSWRlbnRpZmllciBuYW1lKERlY29kZXImIGRlY29kZXIp
IGNvbnN0IHsgcmV0dXJuIG1fbmFtZS5kZWNvZGUoZGVjb2Rlcik7IH0KICAgICBJZGVudGlmaWVy
IGVjbWFOYW1lKERlY29kZXImIGRlY29kZXIpIGNvbnN0IHsgcmV0dXJuIG1fZWNtYU5hbWUuZGVj
b2RlKGRlY29kZXIpOyB9CkBAIC0xODY2LDcgKzE4NzUsOCBAQCBwcml2YXRlOgogICAgIHVuc2ln
bmVkIG1fcGFyYW1ldGVyc1N0YXJ0T2Zmc2V0IDogMzE7CiAgICAgdW5zaWduZWQgbV90eXBlUHJv
ZmlsaW5nU3RhcnRPZmZzZXQ7CiAgICAgdW5zaWduZWQgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0
OwotICAgIHVuc2lnbmVkIG1fcGFyYW1ldGVyQ291bnQ7CisgICAgdW5zaWduZWQgbV9wYXJhbWV0
ZXJDb3VudDozMTsKKyAgICB1bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsK
ICAgICBTb3VyY2VQYXJzZU1vZGUgbV9zb3VyY2VQYXJzZU1vZGU7CiAgICAgdW5zaWduZWQgbV9j
b25zdHJ1Y3RvcktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZnVuY3Rpb25Nb2RlIDogMjsgLy8g
RnVuY3Rpb25Nb2RlCkBAIC0xOTIzLDcgKzE5MzMsNiBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQg
aXNDbGFzc0NvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzQ2xhc3NDb250ZXh0OyB9CiAgICAg
dW5zaWduZWQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gbV9jb25zdHJ1Y3Rvcktp
bmQ7IH0KICAgICB1bnNpZ25lZCBkZXJpdmVkQ29udGV4dFR5cGUoKSBjb25zdCB7IHJldHVybiBt
X2Rlcml2ZWRDb250ZXh0VHlwZTsgfQotICAgIHVuc2lnbmVkIG5lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjsgfQog
ICAgIHVuc2lnbmVkIGV2YWxDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXZhbENvbnRl
eHRUeXBlOyB9CiAgICAgdW5zaWduZWQgaGFzVGFpbENhbGxzKCkgY29uc3QgeyByZXR1cm4gbV9o
YXNUYWlsQ2FsbHM7IH0KICAgICB1bnNpZ25lZCBoYXNDaGVja3BvaW50cygpIGNvbnN0IHsgcmV0
dXJuIG1faGFzQ2hlY2twb2ludHM7IH0KQEAgLTE5NTUsNyArMTk2NCw2IEBAIHByaXZhdGU6CiAg
ICAgdW5zaWduZWQgbV9pc0NsYXNzQ29udGV4dCA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1
Y3RvcktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZGVyaXZlZENvbnRleHRUeXBlIDogMjsKLSAg
ICB1bnNpZ25lZCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIDogMTsKICAgICB1bnNpZ25l
ZCBtX2V2YWxDb250ZXh0VHlwZSA6IDI7CiAgICAgdW5zaWduZWQgbV9oYXNUYWlsQ2FsbHMgOiAx
OwogICAgIHVuc2lnbmVkIG1fY29kZVR5cGUgOiAyOwpAQCAtMjIzNiw2ICsyMjQ0LDcgQEAgQUxX
QVlTX0lOTElORSB2b2lkIENhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFVubGkKICAgICBtX3N1cGVyQmluZGluZyA9IGV4ZWN1dGFibGUubV9z
dXBlckJpbmRpbmc7CiAgICAgbV9kZXJpdmVkQ29udGV4dFR5cGUgPSBleGVjdXRhYmxlLm1fZGVy
aXZlZENvbnRleHRUeXBlOwogICAgIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSBleGVj
dXRhYmxlLm1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI7CisgICAgbV9wcml2YXRlQnJhbmRS
ZXF1aXJlbWVudCA9IGV4ZWN1dGFibGUubV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudDsKIAogICAg
IG1fcmFyZURhdGEuZW5jb2RlKGVuY29kZXIsIGV4ZWN1dGFibGUubV9yYXJlRGF0YS5nZXQoKSk7
CiAKQEAgLTIyNzcsNiArMjI4Niw3IEBAIEFMV0FZU19JTkxJTkUgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKERlY29kZXImIGRlCiAgICAgLCBt
X3R5cGVQcm9maWxpbmdTdGFydE9mZnNldChjYWNoZWRFeGVjdXRhYmxlLnR5cGVQcm9maWxpbmdT
dGFydE9mZnNldCgpKQogICAgICwgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KGNhY2hlZEV4ZWN1
dGFibGUudHlwZVByb2ZpbGluZ0VuZE9mZnNldCgpKQogICAgICwgbV9wYXJhbWV0ZXJDb3VudChj
YWNoZWRFeGVjdXRhYmxlLnBhcmFtZXRlckNvdW50KCkpCisgICAgLCBtX3ByaXZhdGVCcmFuZFJl
cXVpcmVtZW50KGNhY2hlZEV4ZWN1dGFibGUucHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSkKICAg
ICAsIG1fZmVhdHVyZXMoY2FjaGVkRXhlY3V0YWJsZS5mZWF0dXJlcygpKQogICAgICwgbV9zb3Vy
Y2VQYXJzZU1vZGUoY2FjaGVkRXhlY3V0YWJsZS5zb3VyY2VQYXJzZU1vZGUoKSkKICAgICAsIG1f
Y29uc3RydWN0b3JLaW5kKGNhY2hlZEV4ZWN1dGFibGUuY29uc3RydWN0b3JLaW5kKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRleCAxYzczYjRjMzI0
MmZiMDdlMjhmYWUzZDFiYTFkZTczOGFiYjU3YTI1Li5jNDI5NzJhZmZkYzlmMjdhYzExYzlkZGM1
YzlkMzE4ZTkyYTY0ZDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVD
YWNoZS5jcHAKQEAgLTcxLDEzICs3MSwxMyBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZVVubGlua2Vk
Q29kZUJsb2NrRm9yRnVuY3Rpb25zKFZNJiB2bSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubAogfQog
CiB0ZW1wbGF0ZSA8Y2xhc3MgVW5saW5rZWRDb2RlQmxvY2tUeXBlLCBjbGFzcyBFeGVjdXRhYmxl
VHlwZSA9IFNjcmlwdEV4ZWN1dGFibGU+Ci1VbmxpbmtlZENvZGVCbG9ja1R5cGUqIGdlbmVyYXRl
VW5saW5rZWRDb2RlQmxvY2tJbXBsKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBK
U1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1v
ZGUsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgUGFy
c2VyRXJyb3ImIGVycm9yLCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlLCBEZXJpdmVk
Q29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQsIGNvbnN0IFREWkVudmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclREWiA9IG51bGxwdHIsIGNv
bnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzID0gbnVsbHB0
ciwgRXhlY3V0YWJsZVR5cGUqIGV4ZWN1dGFibGUgPSBudWxscHRyKQorVW5saW5rZWRDb2RlQmxv
Y2tUeXBlKiBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrSW1wbChWTSYgdm0sIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIEpTUGFyc2VyU2Ny
aXB0TW9kZSBzY3JpcHRNb2RlLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2Vu
ZXJhdGlvbk1vZGUsIFBhcnNlckVycm9yJiBlcnJvciwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250
ZXh0VHlwZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fy
cm93RnVuY3Rpb25Db250ZXh0LCBjb25zdCBURFpFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJU
RFogPSBudWxscHRyLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiBwcml2YXRlTmFtZUVu
dmlyb25tZW50ID0gbnVsbHB0ciwgRXhlY3V0YWJsZVR5cGUqIGV4ZWN1dGFibGUgPSBudWxscHRy
KQogewogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5
cGU+OjpSb290Tm9kZSBSb290Tm9kZTsKICAgICBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlv
biA9IGV4ZWN1dGFibGUgJiYgZXhlY3V0YWJsZS0+aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKCk7
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Um9vdE5vZGU+IHJvb3ROb2RlID0gcGFyc2U8Um9vdE5v
ZGU+KAotICAgICAgICB2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1v
ZGU6Ok5vdEJ1aWx0aW4sIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIENhY2hlVHlwZXM8VW5saW5r
ZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJy
b3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZGVyaXZlZENvbnRleHRUeXBlLCBl
dmFsQ29udGV4dFR5cGUsIG51bGxwdHIsIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzLCBudWxscHRy
LCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24pOworICAgICAgICB2bSwgc291cmNlLCBJZGVudGlm
aWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIHN0cmljdE1vZGUsIHNjcmlw
dE1vZGUsIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBTdXBl
ckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6Tm9u
ZSwgZGVyaXZlZENvbnRleHRUeXBlLCBldmFsQ29udGV4dFR5cGUsIG51bGxwdHIsIHByaXZhdGVO
YW1lRW52aXJvbm1lbnQsIG51bGxwdHIsIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbik7CiAKICAg
ICBpZiAoIXJvb3ROb2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTk0LDkgKzk0LDEy
IEBAIFVubGlua2VkQ29kZUJsb2NrVHlwZSogZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ltcGwo
Vk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzCiAgICAgYm9vbCB1c2VzRXZhbCA9IHJvb3ROb2Rl
LT5mZWF0dXJlcygpICYgRXZhbEZlYXR1cmU7CiAgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSByb290
Tm9kZS0+ZmVhdHVyZXMoKSAmIFN0cmljdE1vZGVGZWF0dXJlID8gRUNNQU1vZGU6OnN0cmljdCgp
IDogRUNNQU1vZGU6OnNsb3BweSgpOwogICAgIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyID0gTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5v
OwotICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19zYW1lX3Y8RXhlY3V0YWJsZVR5cGUsIERpcmVj
dEV2YWxFeGVjdXRhYmxlPikKKyAgICBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJh
bmRSZXF1aXJlbWVudCA9IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lOworICAgIGlmIGNv
bnN0ZXhwciAoc3RkOjppc19zYW1lX3Y8RXhlY3V0YWJsZVR5cGUsIERpcmVjdEV2YWxFeGVjdXRh
YmxlPikgewogICAgICAgICBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9IGV4ZWN1dGFibGUt
Pm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCk7Ci0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0
YWJsZUluZm8odXNlc0V2YWwsIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBz
Y3JpcHRNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgQ2FjaGVUeXBlczxVbmxpbmtlZENv
ZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGZhbHNlLCBldmFsQ29udGV4
dFR5cGUpOworICAgICAgICBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9IGV4ZWN1dGFibGUtPnBy
aXZhdGVCcmFuZFJlcXVpcmVtZW50KCk7CisgICAgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1
dGFibGVJbmZvKHVzZXNFdmFsLCBmYWxzZSwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGZhbHNl
LCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIHNjcmlwdE1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVl
ZGVkLCBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwgZGVyaXZl
ZENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgaXNBcnJvd0Z1bmN0aW9u
Q29udGV4dCwgZmFsc2UsIGV2YWxDb250ZXh0VHlwZSk7CiAKICAgICBVbmxpbmtlZENvZGVCbG9j
a1R5cGUqIHVubGlua2VkQ29kZUJsb2NrID0gVW5saW5rZWRDb2RlQmxvY2tUeXBlOjpjcmVhdGUo
dm0sIGV4ZWN1dGFibGVJbmZvLCBjb2RlR2VuZXJhdGlvbk1vZGUpOwogICAgIHVubGlua2VkQ29k
ZUJsb2NrLT5yZWNvcmRQYXJzZShyb290Tm9kZS0+ZmVhdHVyZXMoKSwgcm9vdE5vZGUtPmhhc0Nh
cHR1cmVkVmFyaWFibGVzKCksIGxpbmVDb3VudCwgdW5saW5rZWRFbmRDb2x1bW4pOwpAQCAtMTA4
LDcgKzExMSw3IEBAIFVubGlua2VkQ29kZUJsb2NrVHlwZSogZ2VuZXJhdGVVbmxpbmtlZENvZGVC
bG9ja0ltcGwoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzCiAgICAgUmVmUHRyPFREWkVudmly
b25tZW50TGluaz4gcGFyZW50VmFyaWFibGVzVW5kZXJURFo7CiAgICAgaWYgKHZhcmlhYmxlc1Vu
ZGVyVERaKQogICAgICAgICBwYXJlbnRWYXJpYWJsZXNVbmRlclREWiA9IFREWkVudmlyb25tZW50
TGluazo6Y3JlYXRlKHZtLm1fY29tcGFjdFZhcmlhYmxlTWFwLT5nZXQoKnZhcmlhYmxlc1VuZGVy
VERaKSwgbnVsbHB0cik7Ci0gICAgZXJyb3IgPSBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUo
dm0sIHJvb3ROb2RlLmdldCgpLCBzb3VyY2UsIHVubGlua2VkQ29kZUJsb2NrLCBjb2RlR2VuZXJh
dGlvbk1vZGUsIHBhcmVudFZhcmlhYmxlc1VuZGVyVERaLCBlY21hTW9kZSk7CisgICAgZXJyb3Ig
PSBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUodm0sIHJvb3ROb2RlLmdldCgpLCBzb3VyY2Us
IHVubGlua2VkQ29kZUJsb2NrLCBjb2RlR2VuZXJhdGlvbk1vZGUsIHBhcmVudFZhcmlhYmxlc1Vu
ZGVyVERaLCBwcml2YXRlTmFtZUVudmlyb25tZW50LCBlY21hTW9kZSk7CiAKICAgICBpZiAoZXJy
b3IuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTExNywxNCArMTIwLDE0
IEBAIFVubGlua2VkQ29kZUJsb2NrVHlwZSogZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ltcGwo
Vk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzCiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBVbmxpbmtl
ZENvZGVCbG9ja1R5cGUsIGNsYXNzIEV4ZWN1dGFibGVUeXBlPgotVW5saW5rZWRDb2RlQmxvY2tU
eXBlKiBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrKFZNJiB2bSwgRXhlY3V0YWJsZVR5cGUqIGV4
ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJTdHJpY3RNb2RlIHN0
cmljdE1vZGUsIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBPcHRpb25TZXQ8Q29kZUdl
bmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIFBhcnNlckVycm9yJiBlcnJvciwgRXZh
bENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgY29uc3QgVERaRW52aXJvbm1lbnQqIHZhcmlh
Ymxlc1VuZGVyVERaID0gbnVsbHB0ciwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50
U2NvcGVQcml2YXRlTmFtZXMgPSBudWxscHRyKQorVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBnZW5l
cmF0ZVVubGlua2VkQ29kZUJsb2NrKFZNJiB2bSwgRXhlY3V0YWJsZVR5cGUqIGV4ZWN1dGFibGUs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUs
IEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25N
b2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIFBhcnNlckVycm9yJiBlcnJvciwgRXZhbENvbnRleHRU
eXBlIGV2YWxDb250ZXh0VHlwZSwgY29uc3QgVERaRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVy
VERaID0gbnVsbHB0ciwgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogcHJpdmF0ZU5hbWVF
bnZpcm9ubWVudCA9IG51bGxwdHIpCiB7Ci0gICAgcmV0dXJuIGdlbmVyYXRlVW5saW5rZWRDb2Rl
QmxvY2tJbXBsPFVubGlua2VkQ29kZUJsb2NrVHlwZSwgRXhlY3V0YWJsZVR5cGU+KHZtLCBzb3Vy
Y2UsIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIGNvZGVHZW5lcmF0aW9uTW9kZSwgZXJyb3IsIGV2
YWxDb250ZXh0VHlwZSwgZXhlY3V0YWJsZS0+ZGVyaXZlZENvbnRleHRUeXBlKCksIGV4ZWN1dGFi
bGUtPmlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgdmFyaWFibGVzVW5kZXJURFosIHBhcmVudFNj
b3BlUHJpdmF0ZU5hbWVzLCBleGVjdXRhYmxlKTsKKyAgICByZXR1cm4gZ2VuZXJhdGVVbmxpbmtl
ZENvZGVCbG9ja0ltcGw8VW5saW5rZWRDb2RlQmxvY2tUeXBlLCBFeGVjdXRhYmxlVHlwZT4odm0s
IHNvdXJjZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgY29kZUdlbmVyYXRpb25Nb2RlLCBlcnJv
ciwgZXZhbENvbnRleHRUeXBlLCBleGVjdXRhYmxlLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgZXhl
Y3V0YWJsZS0+aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCB2YXJpYWJsZXNVbmRlclREWiwgcHJp
dmF0ZU5hbWVFbnZpcm9ubWVudCwgZXhlY3V0YWJsZSk7CiB9CiAKLVVubGlua2VkRXZhbENvZGVC
bG9jayogZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ZvckRpcmVjdEV2YWwoVk0mIHZtLCBEaXJl
Y3RFdmFsRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBK
U1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1v
ZGUsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgUGFy
c2VyRXJyb3ImIGVycm9yLCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlLCBjb25zdCBU
RFpFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFosIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1l
bnQqIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzKQorVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBnZW5l
cmF0ZVVubGlua2VkQ29kZUJsb2NrRm9yRGlyZWN0RXZhbChWTSYgdm0sIERpcmVjdEV2YWxFeGVj
dXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTUGFyc2VyU3Ry
aWN0TW9kZSBzdHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgT3B0aW9u
U2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBQYXJzZXJFcnJvciYg
ZXJyb3IsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIGNvbnN0IFREWkVudmlyb25t
ZW50KiB2YXJpYWJsZXNVbmRlclREWiwgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogcHJp
dmF0ZU5hbWVFbnZpcm9ubWVudCkKIHsKLSAgICByZXR1cm4gZ2VuZXJhdGVVbmxpbmtlZENvZGVC
bG9jazxVbmxpbmtlZEV2YWxDb2RlQmxvY2s+KHZtLCBleGVjdXRhYmxlLCBzb3VyY2UsIHN0cmlj
dE1vZGUsIHNjcmlwdE1vZGUsIGNvZGVHZW5lcmF0aW9uTW9kZSwgZXJyb3IsIGV2YWxDb250ZXh0
VHlwZSwgdmFyaWFibGVzVW5kZXJURFosIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzKTsKKyAgICBy
ZXR1cm4gZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9jazxVbmxpbmtlZEV2YWxDb2RlQmxvY2s+KHZt
LCBleGVjdXRhYmxlLCBzb3VyY2UsIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIGNvZGVHZW5lcmF0
aW9uTW9kZSwgZXJyb3IsIGV2YWxDb250ZXh0VHlwZSwgdmFyaWFibGVzVW5kZXJURFosIHByaXZh
dGVOYW1lRW52aXJvbm1lbnQpOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgVW5saW5rZWRDb2RlQmxv
Y2tUeXBlPgpAQCAtMjQ4LDcgKzI1MSw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBD
b2RlQ2FjaGU6OmdldFVubGlua2VkR2xvYmFsRnVuY3Rpb25FeGVjdXRhYmxlKFZNJiB2CiAgICAg
Ly8gVGhlIEZ1bmN0aW9uIGNvbnN0cnVjdG9yIG9ubHkgaGFzIGFjY2VzcyB0byBnbG9iYWwgdmFy
aWFibGVzLCBzbyBubyB2YXJpYWJsZXMgd2lsbCBiZSB1bmRlciBURFogdW5sZXNzIHRoZXkncmUK
ICAgICAvLyBpbiB0aGUgZ2xvYmFsIGxleGljYWwgZW52aXJvbm1lbnQsIHdoaWNoIHdlIGFsd2F5
cyBURFogY2hlY2sgYWNjZXNzZXMgZnJvbS4KICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVj
dEFiaWxpdHkgPSBjb25zdHJ1Y3RBYmlsaXR5Rm9yUGFyc2VNb2RlKG1ldGFkYXRhLT5wYXJzZU1v
ZGUoKSk7Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJs
ZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUodm0sIHNvdXJjZSwgbWV0YWRh
dGEsIFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2Ny
aXB0TW9kZTo6Q2xhc3NpYywgbnVsbHB0ciwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBOZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8pOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3Jl
YXRlKHZtLCBzb3VyY2UsIG1ldGFkYXRhLCBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1
Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIG51bGxwdHIsIFdURjo6bnVs
bG9wdCwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
cjo6Tm8sIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lKTsKIAogICAgIGlmICghc291cmNl
LnByb3ZpZGVyKCktPnNvdXJjZVVSTERpcmVjdGl2ZSgpLmlzTnVsbCgpKQogICAgICAgICBmdW5j
dGlvbkV4ZWN1dGFibGUtPnNldFNvdXJjZVVSTERpcmVjdGl2ZShzb3VyY2UucHJvdmlkZXIoKS0+
c291cmNlVVJMRGlyZWN0aXZlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29kZUNhY2hlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2Rl
Q2FjaGUuaAppbmRleCA5Y2MxY2E3MDA0NDc5Y2U1N2QyM2M2NDQ3Yzg0YzFjYzhkNmM5ZmRiLi42
MGE3N2QyYWYzYWQwYWI3NDJiNDA0N2I0OTY3MmY4ZjMyMTljOTczIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaApAQCAtMjU0LDcgKzI1NCw3IEBAIHRlbXBsYXRl
IDw+IHN0cnVjdCBDYWNoZVR5cGVzPFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaz4gewog
ICAgIHN0YXRpYyBjb25zdGV4cHIgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IFNvdXJjZVBh
cnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVNb2RlOwogfTsKIAotVW5saW5rZWRFdmFsQ29kZUJsb2Nr
KiBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrRm9yRGlyZWN0RXZhbChWTSYsIERpcmVjdEV2YWxF
eGVjdXRhYmxlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyU3RyaWN0TW9kZSwgSlNQYXJz
ZXJTY3JpcHRNb2RlLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgUGFyc2VyRXJyb3Im
LCBFdmFsQ29udGV4dFR5cGUsIGNvbnN0IFREWkVudmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclRE
WiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVQcml2YXRlTmFtZXMpOwor
VW5saW5rZWRFdmFsQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrRm9yRGlyZWN0
RXZhbChWTSYsIERpcmVjdEV2YWxFeGVjdXRhYmxlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFy
c2VyU3RyaWN0TW9kZSwgSlNQYXJzZXJTY3JpcHRNb2RlLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRp
b25Nb2RlPiwgUGFyc2VyRXJyb3ImLCBFdmFsQ29udGV4dFR5cGUsIGNvbnN0IFREWkVudmlyb25t
ZW50KiB2YXJpYWJsZXNVbmRlclREWiwgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCopOwog
VW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiByZWN1cnNpdmVseUdlbmVyYXRlVW5saW5rZWRDb2Rl
QmxvY2tGb3JQcm9ncmFtKFZNJiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyU3RyaWN0TW9k
ZSwgSlNQYXJzZXJTY3JpcHRNb2RlLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgUGFy
c2VyRXJyb3ImLCBFdmFsQ29udGV4dFR5cGUpOwogVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrKiByZWN1cnNpdmVseUdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tGb3JNb2R1bGVQcm9ncmFt
KFZNJiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyU3RyaWN0TW9kZSwgSlNQYXJzZXJTY3Jp
cHRNb2RlLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgUGFyc2VyRXJyb3ImLCBFdmFs
Q29udGV4dFR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKaW5kZXggYzdjMjljMDUwMjk2MjMxMGQzNjlmNGU5
NDYxNmI5ZDEwMmRiNjkyNi4uZjZmNzkzMDdkZmU3OWY4YTJiMWI4ODBiMWI4NmZiYjI2OWM0MjVj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4
ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2
YWxFeGVjdXRhYmxlLmNwcApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAot
RGlyZWN0RXZhbEV4ZWN1dGFibGUqIERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBEZXJpdmVk
Q29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
ciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0
LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250
ZXh0VHlwZSwgY29uc3QgVERaRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaLCBjb25zdCBW
YXJpYWJsZUVudmlyb25tZW50KiBwcml2YXRlTmFtZXMsIEVDTUFNb2RlIGVjbWFNb2RlKQorRGly
ZWN0RXZhbEV4ZWN1dGFibGUqIERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBEZXJpdmVkQ29u
dGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBu
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0lu
c2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIGNv
bnN0IFREWkVudmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclREWiwgY29uc3QgUHJpdmF0ZU5hbWVF
bnZpcm9ubWVudCogcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTQ0LDcgKzQ0LDcgQEAgRGlyZWN0RXZhbEV4ZWN1dGFi
bGUqIERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byogZXhlY3V0
YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERpcmVjdEV2YWxFeGVjdXRhYmxlPih2
bS5oZWFwKSkgRGlyZWN0RXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGVjbWFN
b2RlLmlzU3RyaWN0KCksIGRlcml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwg
ZXZhbENvbnRleHRUeXBlKTsKKyAgICBhdXRvKiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8RGlyZWN0RXZhbEV4ZWN1dGFibGU+KHZtLmhlYXApKSBEaXJlY3RFdmFsRXhl
Y3V0YWJsZShnbG9iYWxPYmplY3QsIHNvdXJjZSwgZWNtYU1vZGUuaXNTdHJpY3QoKSwgZGVyaXZl
ZENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgcHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlv
biwgZXZhbENvbnRleHRUeXBlKTsKICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbih2bSk7
CiAKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKQEAgLTUyLDcgKzUyLDcgQEAgRGlyZWN0RXZhbEV4
ZWN1dGFibGUqIERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwKICAgICBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJh
dGlvbk1vZGUgPSBnbG9iYWxPYmplY3QtPmRlZmF1bHRDb2RlR2VuZXJhdGlvbk1vZGUoKTsKIAog
ICAgIC8vIFdlIGRvbid0IGJvdGhlciB3aXRoIENvZGVDYWNoZSBoZXJlIGJlY2F1c2UgZGlyZWN0
IGV2YWwgdXNlcyBhIHNwZWNpYWxpemVkIERpcmVjdEV2YWxDb2RlQ2FjaGUuCi0gICAgVW5saW5r
ZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZEV2YWxDb2RlID0gZ2VuZXJhdGVVbmxpbmtlZENvZGVC
bG9ja0ZvckRpcmVjdEV2YWwodm0sIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPnNvdXJjZSgpLCBz
dHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIGNvZGVHZW5lcmF0aW9uTW9k
ZSwgZXJyb3IsIGV2YWxDb250ZXh0VHlwZSwgdmFyaWFibGVzVW5kZXJURFosIHByaXZhdGVOYW1l
cyk7CisgICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZEV2YWxDb2RlID0gZ2VuZXJh
dGVVbmxpbmtlZENvZGVCbG9ja0ZvckRpcmVjdEV2YWwodm0sIGV4ZWN1dGFibGUsIGV4ZWN1dGFi
bGUtPnNvdXJjZSgpLCBzdHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIGNv
ZGVHZW5lcmF0aW9uTW9kZSwgZXJyb3IsIGV2YWxDb250ZXh0VHlwZSwgdmFyaWFibGVzVW5kZXJU
RFosIHByaXZhdGVOYW1lRW52aXJvbm1lbnQpOwogCiAgICAgaWYgKGdsb2JhbE9iamVjdC0+aGFz
RGVidWdnZXIoKSkKICAgICAgICAgZ2xvYmFsT2JqZWN0LT5kZWJ1Z2dlcigpLT5zb3VyY2VQYXJz
ZWQoZ2xvYmFsT2JqZWN0LCBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLCBlcnJvci5s
aW5lKCksIGVycm9yLm1lc3NhZ2UoKSk7CkBAIC02NywxMCArNjcsMTAgQEAgRGlyZWN0RXZhbEV4
ZWN1dGFibGUqIERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwKICAgICByZXR1cm4gZXhlY3V0YWJsZTsKIH0KIAotRGlyZWN0RXZhbEV4ZWN1
dGFibGU6OkRpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRD
b250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
IG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQs
IGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRl
eHRUeXBlKQotICAgIDogRXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGluU3Ry
aWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBp
c0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIpCitEaXJlY3RFdmFsRXhlY3V0YWJsZTo6RGlyZWN0RXZhbEV4ZWN1dGFibGUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBi
b29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlw
ZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIs
IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29sIGlz
QXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFs
Q29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKQorICAgIDogRXZhbEV4ZWN1dGFibGUoZ2xvYmFs
T2JqZWN0LCBzb3VyY2UsIGluU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fy
cm93RnVuY3Rpb25Db250ZXh0LCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250ZXh0
VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50
KQogewotICAgIEFTU0VSVChuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9PSBOZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplcjo6Tm8gfHwgZGVyaXZlZENvbnRleHRUeXBlID09IERlcml2ZWRDb250
ZXh0VHlwZTo6RGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCk7CisgICAgQVNTRVJUKChuZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplciA9PSBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8gJiYg
cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPT0gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmUp
IHx8IGRlcml2ZWRDb250ZXh0VHlwZSA9PSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRDb25z
dHJ1Y3RvckNvbnRleHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oCmluZGV4IDhj
NTJjYjY4MWU4ZDA1ZDI2NGVhZjMwZDZjOTRkMTNiZTcxZDM1ODguLjM2MmNlZDhkN2IxNzExMjBm
MmIyYmU1ZmQ1Yzk1NjBlMzA1OWVlMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuaApAQCAtMzEsOSArMzEsOSBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogY2xhc3MgRGlyZWN0RXZhbEV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMg
RXZhbEV4ZWN1dGFibGUgewogcHVibGljOgotICAgIHN0YXRpYyBEaXJlY3RFdmFsRXhlY3V0YWJs
ZSogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIERlcml2ZWRDb250
ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0aW9u
Q29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSwg
Y29uc3QgVERaRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBjb25zdCBWYXJp
YWJsZUVudmlyb25tZW50KiBwcml2YXRlTmFtZXMsIEVDTUFNb2RlKTsKKyAgICBzdGF0aWMgRGly
ZWN0RXZhbEV4ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNv
ZGUmLCBEZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2
YXRlQnJhbmRSZXF1aXJlbWVudCwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlz
SW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBlLCBjb25zdCBURFpFbnZpcm9u
bWVudCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1l
bnQqLCBFQ01BTW9kZSk7CiBwcml2YXRlOgotICAgIERpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xv
YmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBEZXJp
dmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dG
dW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4
dFR5cGUpOworICAgIERpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3Qg
U291cmNlQ29kZSYsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUsIE5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCwgYm9vbCBp
c0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZh
bENvbnRleHRUeXBlKTsKIH07CiAKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKERpcmVjdEV2YWxFeGVj
dXRhYmxlKSA9PSBzaXplb2YoRXZhbEV4ZWN1dGFibGUpLCAiIik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5jcHAKaW5kZXggMmVjMTM3YTczNjIy
NDIxYjVmOWQxMjJjMjczNTE4ZDVlNjM4NjQ5Yy4uMGIzZDQxNjRhYTY1YWJkMDA0ZmVlOThiOGNl
Y2U4Nzk2ZGZiYzJhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXZhbEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2
YWxFeGVjdXRhYmxlLmNwcApAQCAtMzIsOSArMzIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNv
bnN0IENsYXNzSW5mbyBFdmFsRXhlY3V0YWJsZTo6c19pbmZvID0geyAiRXZhbEV4ZWN1dGFibGUi
LCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEV2
YWxFeGVjdXRhYmxlKSB9OwogCi1FdmFsRXhlY3V0YWJsZTo6RXZhbEV4ZWN1dGFibGUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGlu
U3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9v
bCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwg
RXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpCitFdmFsRXhlY3V0YWJsZTo6RXZhbEV4ZWN1
dGFibGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250
ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5h
cnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJl
cXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KQogICAgIDogQmFzZShnbG9iYWxPYmpl
Y3QtPnZtKCkuZXZhbEV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIGdsb2JhbE9iamVjdC0+dm0o
KSwgc291cmNlLCBpblN0cmljdENvbnRleHQsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1
bmN0aW9uQ29udGV4dCwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBldmFsQ29udGV4dFR5cGUs
IE5vSW50cmluc2ljKQogICAgICwgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcihzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4obmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpKQorICAgICwgbV9wcml2
YXRlQnJhbmRSZXF1aXJlbWVudChzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQpKQogewogICAgIEFTU0VSVChzb3VyY2UucHJvdmlkZXIoKS0+c291cmNlVHlwZSgp
ID09IFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaAppbmRleCA2N2U2OWM4NjI5YmEz
ZmIzODExNDgxMTM2YjhlN2U5OTQ4MGVkNzcxLi41MjYwMjUxYWNlZTIyNWU5YjU3OWY4ZTgyZjZl
ZGM4MTBjN2FkZWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
dmFsRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxF
eGVjdXRhYmxlLmgKQEAgLTYyLDEzICs2MiwxNCBAQCBwdWJsaWM6CiAKICAgICBERUNMQVJFX0lO
Rk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJu
IEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5k
OjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIFN1cGVyQmluZGluZzo6Tm90TmVl
ZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUoKSwg
bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBm
YWxzZSwgZXZhbENvbnRleHRUeXBlKCkpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJs
ZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1c2VzRXZhbCgpLCBmYWxzZSwg
UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5v
bmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQs
IFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBuZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNl
LCBldmFsQ29udGV4dFR5cGUoKSk7IH0KIAogICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlcygpIHsg
cmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJpYWJsZXMoKTsgfQogICAgIHVu
c2lnbmVkIG51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKCkgeyByZXR1cm4gbV91bmxpbmtl
ZEV2YWxDb2RlQmxvY2stPm51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKCk7IH0KICAgICB1
bnNpZ25lZCBudW1Ub3BMZXZlbEZ1bmN0aW9uRGVjbHMoKSB7IHJldHVybiBtX3VubGlua2VkRXZh
bENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KICAgICBib29sIGFsbG93RGly
ZWN0RXZhbENhY2hlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPmFs
bG93RGlyZWN0RXZhbENhY2hlKCk7IH0KICAgICBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBu
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyPihtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsg
fQorICAgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ+KG1fcHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQpOyB9CiAgICAgVGVtcGxhdGVPYmplY3RNYXAmIGVuc3VyZVRl
bXBsYXRlT2JqZWN0TWFwKFZNJik7CiAKIHByb3RlY3RlZDoKQEAgLTc2LDExICs3NywxMiBAQCBw
cm90ZWN0ZWQ6CiAgICAgZnJpZW5kIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CiAKICAgICB1c2lu
ZyBCYXNlOjpmaW5pc2hDcmVhdGlvbjsKLSAgICBFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVj
dCosIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRl
eHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFy
eUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsK
KyAgICBFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBi
b29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5j
dGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5
cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7
CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7
CiAKICAgICB1bnNpZ25lZCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIDogMTsKKyAgICB1
bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsKIAogICAgIFdyaXRlQmFycmll
cjxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPiBtX2V2YWxDb2RlQmxvY2s7CiAgICAgV3JpdGVC
YXJyaWVyPFVubGlua2VkRXZhbENvZGVCbG9jaz4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2s7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3Bw
CmluZGV4IDQxNGU3YmRmNzdhYjRmYzc2NGI1NjVkZjZmMWJkNGEwZDY0YjMwY2IuLmQ4NzQ0Nzk0
YmJiMWFkMzAzMWZiNDhhYmM2NGVlNTUwMzNjNmJhYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCkBAIC0zMzQsNiArMzM0LDE2
IEBAIEpTT2JqZWN0KiBjcmVhdGVSZWRlZmluZWRQcml2YXRlTmFtZUVycm9yKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIG1ha2VTdHJpbmcoIkNhbm5vdCByZWRlZmluZSBleGlzdGluZyBwcml2YXRlIGZpZWxkIiks
IGRlZmF1bHRTb3VyY2VBcHBlbmRlciwgVHlwZU5vdGhpbmcpOwogfQogCitKU09iamVjdCogY3Jl
YXRlUHJpdmF0ZU1ldGhvZEFjY2Vzc0Vycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
Cit7CisgICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmco
IkNhbm5vdCBhY2Nlc3MgcHJpdmF0ZSBtZXRob2QiX3MpLCBkZWZhdWx0U291cmNlQXBwZW5kZXIs
IFR5cGVOb3RoaW5nKTsKK30KKworSlNPYmplY3QqIGNyZWF0ZVJlaW5zdGFsbFByaXZhdGVNZXRo
b2RFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBjcmVh
dGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKCJDYW5ub3QgaW5zdGFsbCBzYW1l
IHByaXZhdGUgbWV0aG9kcyBvbiBvYmplY3QgbW9yZSB0aGFuIG9uY2UiX3MpLCBkZWZhdWx0U291
cmNlQXBwZW5kZXIsIFR5cGVOb3RoaW5nKTsKK30KKwogRXhjZXB0aW9uKiB0aHJvd091dE9mTWVt
b3J5RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUp
CiB7CiAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0
ZU91dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCmluZGV4IDk4
ZDdlMmI4M2EyNzkxMmZhNTRjMmMyNWVlMTgzYmZiNGUwNDZjNzMuLjc0OTgyMDUwMThjZGVmOGYz
ZjgzNjdiNGJiZTJlZjc5ZGJkMTdjMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCkBAIC02OSw3ICs2OSw3
IEBAIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUqIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiBjb25zdGV4cHIgYm9vbCBpblN0cmljdENvbnRl
eHQgPSBmYWxzZTsKIGNvbnN0ZXhwciBib29sIGluc2lkZU9yZGluYXJ5RnVuY3Rpb24gPSBmYWxz
ZTsKIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OkluZGlyZWN0RXZhbEV4ZWN1dGFibGUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBEZXJpdmVk
Q29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUpCi0gICAgOiBFdmFsRXhlY3V0YWJs
ZShnbG9iYWxPYmplY3QsIHNvdXJjZSwgaW5TdHJpY3RDb250ZXh0LCBkZXJpdmVkQ29udGV4dFR5
cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGluc2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxD
b250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vKQorICAgIDogRXZhbEV4
ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGluU3RyaWN0Q29udGV4dCwgZGVyaXZlZENv
bnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBpbnNpZGVPcmRpbmFyeUZ1bmN0aW9u
LCBldmFsQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObywgUHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmUpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5oCmluZGV4IDliOTM4YjNlNWU3YTA0NTQ0YTU1OGYwMGUzNDk1YmFhNWFm
ZjkxNDcuLjgyOTY1ZDE4NzMyMTc0NzRkMzcwNTlhYjQ3NjRhOTM2NjBiYWVjMjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtMTg0LDYgKzE4NCw4IEBAIHB1
YmxpYzoKICAgICBpbmxpbmUgYm9vbCBnZXRQcml2YXRlRmllbGQoSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIGlubGluZSB2b2lkIHNldFByaXZhdGVG
aWVsZChKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7CiAgICAgaW5saW5lIHZvaWQgZGVmaW5lUHJpdmF0ZUZpZWxkKEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBpbmxpbmUg
Ym9vbCBjaGVja1ByaXZhdGVCcmFuZChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgYnJhbmQpOwor
ICAgIGlubGluZSB2b2lkIHNldFByaXZhdGVCcmFuZChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUg
YnJhbmQpOwogCiAgICAgdW5zaWduZWQgZ2V0QXJyYXlMZW5ndGgoKSBjb25zdAogICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5kZXgg
MDA1ZWUxNDY2NDM1NThmY2I3NzQ4NmRiMzAyNTgwNGM3MDAwZGJjZC4uODhlYjJhYzBkOGYwMzlj
OWUxZjg0MGRiNTk3MzcxYjE2NDBkYzcyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKQEAgLTU3OCw2ICs1NzgsOCBAQCBpbmxpbmUgSlNW
YWx1ZSBKU09iamVjdDo6Z2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVpbnQ2NF90
IHByb3BlcnR5TmFtZQogCiBKU09iamVjdCogY3JlYXRlSW52YWxpZFByaXZhdGVOYW1lRXJyb3Io
SlNHbG9iYWxPYmplY3QqKTsKIEpTT2JqZWN0KiBjcmVhdGVSZWRlZmluZWRQcml2YXRlTmFtZUVy
cm9yKEpTR2xvYmFsT2JqZWN0Kik7CitKU09iamVjdCogY3JlYXRlUmVpbnN0YWxsUHJpdmF0ZU1l
dGhvZEVycm9yKEpTR2xvYmFsT2JqZWN0Kik7CitKU09iamVjdCogY3JlYXRlUHJpdmF0ZU1ldGhv
ZEFjY2Vzc0Vycm9yKEpTR2xvYmFsT2JqZWN0Kik7CiAKIEFMV0FZU19JTkxJTkUgYm9vbCBKU09i
amVjdDo6Z2V0UHJpdmF0ZUZpZWxkU2xvdChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CkBAIC02NjksNCArNjcxLDQzIEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKU09iamVj
dDo6Z2V0Tm9uUmVpZmllZFN0YXRpY1Byb3BlcnR5TmFtZXMoVk0mIHZtLCBQcm9wZXJ0eU5hCiAg
ICAgfQogfQogCitpbmxpbmUgYm9vbCBKU09iamVjdDo6Y2hlY2tQcml2YXRlQnJhbmQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBicmFuZCkKK3sKKyAgICBBU1NFUlQoYnJh
bmQuaXNTeW1ib2woKSk7CisgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSh2bSk7CisgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzQnJh
bmRlZFN0cnVjdHVyZSgpIHx8ICFqc0Nhc3Q8QnJhbmRlZFN0cnVjdHVyZSo+KHN0cnVjdHVyZSkt
PmNoZWNrQnJhbmQoYXNTeW1ib2woYnJhbmQpKSkgeworICAgICAgICB0aHJvd0V4Y2VwdGlvbihn
bG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVQcml2YXRlTWV0aG9kQWNjZXNzRXJyb3IoZ2xvYmFs
T2JqZWN0KSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgZmFsc2UpOworICAg
IH0KKyAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldFByaXZhdGVCcmFuZChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJyYW5kKQoreworICAgIEFTU0VSVChi
cmFuZC5pc1N5bWJvbCgpKTsKKyAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZtKTsKKyAgICBpZiAoc3RydWN0dXJlLT5pc0Jy
YW5kZWRTdHJ1Y3R1cmUoKSAmJiBqc0Nhc3Q8QnJhbmRlZFN0cnVjdHVyZSo+KHN0cnVjdHVyZSkt
PmNoZWNrQnJhbmQoYXNTeW1ib2woYnJhbmQpKSkgeworICAgICAgICB0aHJvd0V4Y2VwdGlvbihn
bG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSZWluc3RhbGxQcml2YXRlTWV0aG9kRXJyb3IoZ2xv
YmFsT2JqZWN0KSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgdm9pZCgpKTsK
KyAgICB9CisgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkpOworCisgICAg
c2NvcGUucmVsZWFzZSgpOworCisgICAgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hw
b2ludEZpcmUgZGVmZXJyZWRXYXRjaHBvaW50RmlyZSh2bSwgc3RydWN0dXJlKTsKKworICAgIFN0
cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpzZXRCcmFuZFRyYW5zaXRpb24odm0s
IHN0cnVjdHVyZSwgYXNTeW1ib2woYnJhbmQpLCAmZGVmZXJyZWRXYXRjaHBvaW50RmlyZSk7Cisg
ICAgQVNTRVJUKG5ld1N0cnVjdHVyZS0+aXNCcmFuZGVkU3RydWN0dXJlKCkpOworICAgIEFTU0VS
VChuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgfHwgIXRoaXMtPnN0cnVjdHVyZSh2
bSktPm91dE9mTGluZUNhcGFjaXR5KCkpOworICAgIHRoaXMtPnNldFN0cnVjdHVyZSh2bSwgbmV3
U3RydWN0dXJlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU2NvcGUuY3BwCmluZGV4IDRmYjI0YTI4MjczMzVjYjc1OWJmY2ZhOThiOTc5
ODVhNTk0OTg4MWEuLmZjNzc0MmUyMzA4OTY3ZTk5MTI1YmYwNmZiMzFjN2U2M2I4YjcwZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCkBAIC0zMjEsNyArMzIx
LDcgQEAgUmVzb2x2ZU9wIEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBzaXplX3QgZGVwdGhPZmYKICAgICByZXR1cm4gb3A7CiB9CiAKLXZvaWQg
SlNTY29wZTo6Y29sbGVjdENsb3N1cmVWYXJpYWJsZXNVbmRlclREWihKU1Njb3BlKiBzY29wZSwg
VERaRW52aXJvbm1lbnQmIHJlc3VsdCwgVmFyaWFibGVFbnZpcm9ubWVudCYgcHJpdmF0ZU5hbWVz
KQordm9pZCBKU1Njb3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKEpTU2NvcGUq
IHNjb3BlLCBURFpFbnZpcm9ubWVudCYgcmVzdWx0LCBQcml2YXRlTmFtZUVudmlyb25tZW50JiBw
cml2YXRlTmFtZUVudmlyb25tZW50KQogewogICAgIGZvciAoOyBzY29wZTsgc2NvcGUgPSBzY29w
ZS0+bmV4dCgpKSB7CiAgICAgICAgIGlmICghc2NvcGUtPmlzTGV4aWNhbFNjb3BlKCkgJiYgIXNj
b3BlLT5pc0NhdGNoU2NvcGUoKSkKQEAgLTM0MCw4ICszNDAsOSBAQCB2b2lkIEpTU2NvcGU6OmNv
bGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFooSlNTY29wZSogc2NvcGUsIFREWkVudmlyb25t
ZW50JiByZQogICAgICAgICAgICAgcmVzdWx0LmFkZChpdGVyLT5rZXkpOwogCiAgICAgICAgIGlm
IChzeW1ib2xUYWJsZS0+aGFzUHJpdmF0ZU5hbWVzKCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0
byBuYW1lIDogc3ltYm9sVGFibGUtPnByaXZhdGVOYW1lcygpKQotICAgICAgICAgICAgICAgIHBy
aXZhdGVOYW1lcy51c2VQcml2YXRlTmFtZShuYW1lKTsgICAgCisgICAgICAgICAgICBhdXRvIHBy
aXZhdGVOYW1lcyA9IHN5bWJvbFRhYmxlLT5wcml2YXRlTmFtZXMoKTsKKyAgICAgICAgICAgIGZv
ciAoYXV0byBlbmQgPSBwcml2YXRlTmFtZXMuZW5kKCksIGl0ZXIgPSBwcml2YXRlTmFtZXMuYmVn
aW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikKKyAgICAgICAgICAgICAgICBwcml2YXRlTmFtZUVu
dmlyb25tZW50LmFkZChpdGVyLT5rZXksIGl0ZXItPnZhbHVlKTsKICAgICAgICAgfQogICAgIH0K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaAppbmRleCA3YTNjMjQxNTEx
Yjg3ZWQzZGFkOWNkYzkzMTFkMTUwNWI5MTNiZTdjLi5lNGNkMGJiMzA5N2ZkYzMxNmQzMGFjZDZm
ZjkwN2M5MmY4NjAxMzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Njb3BlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5o
CkBAIC0yNywxMiArMjcsMTIgQEAKIAogI2luY2x1ZGUgIkdldFB1dEluZm8uaCIKICNpbmNsdWRl
ICJKU09iamVjdC5oIgorI2luY2x1ZGUgIlZhcmlhYmxlRW52aXJvbm1lbnQuaCIKIAogbmFtZXNw
YWNlIEpTQyB7CiAKIGNsYXNzIFNjb3BlQ2hhaW5JdGVyYXRvcjsKIGNsYXNzIFN5bWJvbFRhYmxl
OwotY2xhc3MgVmFyaWFibGVFbnZpcm9ubWVudDsKIGNsYXNzIFdhdGNocG9pbnRTZXQ7CiAKIHVz
aW5nIFREWkVudmlyb25tZW50ID0gSGFzaFNldDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBJ
ZGVudGlmaWVyUmVwSGFzaD47CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
Ym9vbCBoYXNDb25zdGFudFNjb3BlKFJlc29sdmVUeXBlKTsKICAgICBzdGF0aWMgSlNTY29wZSog
Y29uc3RhbnRTY29wZUZvckNvZGVCbG9jayhSZXNvbHZlVHlwZSwgQ29kZUJsb2NrKik7CiAKLSAg
ICBzdGF0aWMgdm9pZCBjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKEpTU2NvcGUqLCBU
RFpFbnZpcm9ubWVudCYgcmVzdWx0LCBWYXJpYWJsZUVudmlyb25tZW50JiBwcml2YXRlTmFtZXMp
OworICAgIHN0YXRpYyB2b2lkIGNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFooSlNTY29w
ZSosIFREWkVudmlyb25tZW50JiByZXN1bHQsIFByaXZhdGVOYW1lRW52aXJvbm1lbnQmKTsKIAog
ICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1F
eGVjdXRhYmxlLmgKaW5kZXggMDk5ZDg5OWFkNWU2M2E3NDMzNThlMmFiYjIwYWIzNGY1OWI5NjBl
Yy4uYjg1OTE0ZmY4ZWEwZGQwM2M2MjQ3NzUzNTk2ZmY0MmQ1NjE2NmIzNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZS5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAg
IEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJs
ZUluZm8odXNlc0V2YWwoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEpT
UGFyc2VyU2NyaXB0TW9kZTo6TW9kdWxlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNl
UGFyc2VNb2RlOjpNb2R1bGVFdmFsdWF0ZU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBOZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgZmFs
c2UsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRh
YmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGZhbHNl
LCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6
Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVk
LCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUV2YWx1YXRlTW9kZSwgZGVyaXZlZENvbnRleHRUeXBl
KCksIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObywgaXNBcnJvd0Z1bmN0aW9uQ29udGV4
dCgpLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsgfQogCiAgICAgVW5saW5rZWRNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2soKSB7IHJl
dHVybiBtX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5nZXQoKTsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCmluZGV4IDgwMTNhMTliODNkOThiMTM0
MDExMmU4MzNhODk4OTg0ZDE5YzUzNzcuLmFhMTdjNGJhY2U2ODM0YjBmYmIxY2M0ZTVjYWY2OTM5
NGRlNWU0MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCkBA
IC01MzksNiArNTM5LDkgQEAgdm9pZCBPcHRpb25zOjpyZWNvbXB1dGVEZXBlbmRlbnRPcHRpb25z
KCkKICAgICAgICAgT3B0aW9uczo6cmFuZG9tSW50ZWdyaXR5QXVkaXRSYXRlKCkgPSAwOwogICAg
IGVsc2UgaWYgKE9wdGlvbnM6OnJhbmRvbUludGVncml0eUF1ZGl0UmF0ZSgpID4gMS4wKQogICAg
ICAgICBPcHRpb25zOjpyYW5kb21JbnRlZ3JpdHlBdWRpdFJhdGUoKSA9IDEuMDsKKyAgICAKKyAg
ICBpZiAoT3B0aW9uczo6dXNlUHJpdmF0ZU1ldGhvZHMoKSkKKyAgICAgICAgT3B0aW9uczo6dXNl
UHJpdmF0ZUNsYXNzRmllbGRzKCkgPSB0cnVlOwogCiAgICAgaWYgKCFPcHRpb25zOjphbGxvd1Vu
c3VwcG9ydGVkVGllcnMoKSkgewogI2RlZmluZSBESVNBQkxFX1RJRVJTKG9wdGlvbiwgZmxhZ3Ms
IC4uLikgZG8geyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3Qu
aAppbmRleCBmZjNiZjM1Y2FhZjk2YWQxMjc1MTZiYjA3NTk0OWY2ZGE5ODU2NTBiLi43ZmRlMTcy
YmI1NzkxYzVkNWZlZWU3MDhiYjlkZDBjYTU5N2JlOGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAgLTUxMiw2ICs1MTIsNyBAQCBKU19FWFBPUlRf
UFJJVkFURSBib29sIGNhblVzZUpJVENhZ2UoKTsKICAgICB2KEJvb2wsIGV4cG9zZVByb2ZpbGVy
c09uR2xvYmFsT2JqZWN0LCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCBleHBvc2Ug
ZnVuY3Rpb25zIHRvIGVuYWJsZS9kaXNhYmxlIGJvdGggdGhlIHNhbXBsaW5nIHByb2ZpbGVyIGFu
ZCB0aGUgc3VwZXIgc2FtcGxlciIpIFwKICAgICB2KEJvb2wsIGFsbG93VW5zdXBwb3J0ZWRUaWVy
cywgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgbm90IGRpc2FibGUgREZHIG9yIEZU
TCB3aGVuIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlIGlzIGVuYWJsZWQuIikgXAogICAgIHYoQm9v
bCwgdXNlUHJpdmF0ZUNsYXNzRmllbGRzLCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB0aGUgcGFy
c2VyIHdpbGwgdW5kZXJzdGFuZCBwcml2YXRlIGRhdGEgZmllbGRzIGluc2lkZSBjbGFzc2VzLiIp
IFwKKyAgICB2KEJvb2wsIHVzZVByaXZhdGVNZXRob2RzLCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1
ZSwgdGhlIHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHJpdmF0ZSBtZXRob2RzIGluc2lkZSBjbGFz
c2VzLiIpIFwKICAgICB2KEJvb2wsIHJldHVybkVhcmx5RnJvbUluZmluaXRlTG9vcHNGb3JGdXp6
aW5nLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihTaXplLCBlYXJseVJldHVybkZy
b21JbmZpbml0ZUxvb3BzTGltaXQsIDEzMDAwMDAwMDAsIE5vcm1hbCwgIldoZW4gcmV0dXJuRWFy
bHlGcm9tSW5maW5pdGVMb29wc0ZvckZ1enppbmcgaXMgdHJ1ZSwgdGhpcyBkZXRlcm1pbmVzIHRo
ZSBudW1iZXIgb2YgZXhlY3V0aW9ucyBhIGxvb3AgY2FuIHJ1biBmb3IgYmVmb3JlIGp1c3QgcmV0
dXJuaW5nLiBUaGlzIGlzIGhlbHBmdWwgZm9yIHRoZSBmdXp6ZXIgc28gaXQgZG9lc24ndCBnZXQg
c3R1Y2sgaW4gaW5maW5pdGUgbG9vcHMuIikgXAogICAgIHYoQm9vbCwgdXNlTElDTUZ1enppbmcs
IGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKQEAgLTU2OCw3ICs1NjksOCBAQCBlbnVtIEV4cGVy
aW1lbnRhbE9wdGlvbkZsYWdzIHsKIH07CiAKICNkZWZpbmUgRk9SX0VBQ0hfSlNDX0VYUEVSSU1F
TlRBTF9PUFRJT04odikgXAotICAgIHYodXNlUHJpdmF0ZUNsYXNzRmllbGRzLCAoU3VwcG9ydHNG
VEwgfCBTdXBwb3J0c0RGRyksICJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjEyNzgxIiwgImh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI3
ODQiKQorICAgIHYodXNlUHJpdmF0ZUNsYXNzRmllbGRzLCAoU3VwcG9ydHNGVEwgfCBTdXBwb3J0
c0RGRyksICJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNzgxIiwg
Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI3ODQiKSBcCisgICAg
dih1c2VQcml2YXRlTWV0aG9kcywgKFN1cHBvcnRzRlRMIHwgU3VwcG9ydHNERkcpLCAiaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDQzNCIsICJodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NDM0IikKIAogY29uc3RleHByIHNpemVfdCBj
b3VudE51bWJlck9mSlNDT3B0aW9ucygpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaAppbmRleCBiODcxNWFhNzJiYmNiNzMzOWQ2ZTM0
MTNhYzU5Yzc0NDExN2I4MmE4Li45NDk3NjMxMjA1Y2EwZTRkMGEyOTRlMDQ1Y2U3NmI3MWFkMTE0
NGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhl
Y3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVj
dXRhYmxlLmgKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgICAgICAKICAgICBERUNMQVJF
X0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0
dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JL
aW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIFN1cGVyQmluZGluZzo6Tm90
TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUo
KSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0
KCksIGZhbHNlLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUpOyB9CisgICAgRXhlY3V0YWJsZUluZm8g
ZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1c2VzRXZhbCgp
LCBmYWxzZSwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmUsIGZhbHNlLCBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgU3VwZXJCaW5kaW5nOjpO
b3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGRlcml2ZWRDb250ZXh0VHlw
ZSgpLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8sIGlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQoKSwgZmFsc2UsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSk7IH0KIAogICAgIFRlbXBsYXRlT2Jq
ZWN0TWFwJiBlbnN1cmVUZW1wbGF0ZU9iamVjdE1hcChWTSYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCBkMzhjMzllNDQ3ZDYzMTNhYWYxOGNl
MTIxN2Q3MjMzZTdmNjBjODFmLi4zNjhkZTIwNjkyZDU4NTcwYWQ0OTRkNDY0YmYzMDFiYmFmYjE5
NmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAg
LTQyNCw3ICs0MjQsNyBAQCBQcm9wZXJ0eVRhYmxlKiBTdHJ1Y3R1cmU6Om1hdGVyaWFsaXplUHJv
cGVydHlUYWJsZShWTSYgdm0sIGJvb2wgc2V0UHJvcGVydHlUYWJsZQogCiAgICAgZm9yIChzaXpl
X3QgaSA9IHN0cnVjdHVyZXMuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgIHN0cnVjdHVyZSA9IHN0
cnVjdHVyZXNbaV07Ci0gICAgICAgIGlmICghc3RydWN0dXJlLT5tX3RyYW5zaXRpb25Qcm9wZXJ0
eU5hbWUpCisgICAgICAgIGlmICghc3RydWN0dXJlLT5tX3RyYW5zaXRpb25Qcm9wZXJ0eU5hbWUg
fHwgc3RydWN0dXJlLT50cmFuc2l0aW9uS2luZCgpID09IFRyYW5zaXRpb25LaW5kOjpTZXRCcmFu
ZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBzd2l0Y2ggKHN0cnVjdHVyZS0+dHJh
bnNpdGlvbktpbmQoKSkgewogICAgICAgICBjYXNlIFRyYW5zaXRpb25LaW5kOjpQcm9wZXJ0eUFk
ZGl0aW9uOiB7CkBAIC0xNDk2LDQgKzE0OTYsODcgQEAgYXV0byBTdHJ1Y3R1cmU6OmZpbmRQcm9w
ZXJ0eUhhc2hFbnRyeShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdCAtPiBPcHRpb24K
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCitCcmFuZGVkU3RydWN0dXJlOjpCcmFuZGVk
U3RydWN0dXJlKFZNJiB2bSwgU3RydWN0dXJlKiBwcmV2aW91cywgVW5pcXVlZFN0cmluZ0ltcGwq
IGJyYW5kVWlkLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogZGVm
ZXJyZWQpCisgICAgOiBTdHJ1Y3R1cmUodm0sIHByZXZpb3VzLCBkZWZlcnJlZCkKKyAgICAsIG1f
YnJhbmQoYnJhbmRVaWQpCit7CisgICAgaWYgKHByZXZpb3VzLT5pc0JyYW5kZWRTdHJ1Y3R1cmUo
KSkKKyAgICAgICAgbV9wYXJlbnRCcmFuZC5zZXQodm0sIHRoaXMsIGpzQ2FzdDxCcmFuZGVkU3Ry
dWN0dXJlKj4ocHJldmlvdXMpKTsKKyAgICB0aGlzLT5zZXRJc0JyYW5kZWRTdHJ1Y3R1cmUodHJ1
ZSk7Cit9CisKK0JyYW5kZWRTdHJ1Y3R1cmU6OkJyYW5kZWRTdHJ1Y3R1cmUoVk0mIHZtLCBCcmFu
ZGVkU3RydWN0dXJlKiBwcmV2aW91cywgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hw
b2ludEZpcmUqIGRlZmVycmVkKQorICAgIDogU3RydWN0dXJlKHZtLCBwcmV2aW91cywgZGVmZXJy
ZWQpCisgICAgLCBtX2JyYW5kKHByZXZpb3VzLT5tX2JyYW5kKQorICAgICwgbV9wYXJlbnRCcmFu
ZCh2bSwgdGhpcywgcHJldmlvdXMtPm1fcGFyZW50QnJhbmQuZ2V0KCksIFdyaXRlQmFycmllcjxC
cmFuZGVkU3RydWN0dXJlPjo6TWF5QmVOdWxsKQoreworICAgIHRoaXMtPnNldElzQnJhbmRlZFN0
cnVjdHVyZSh0cnVlKTsKK30KKworU3RydWN0dXJlKiBCcmFuZGVkU3RydWN0dXJlOjpjcmVhdGUo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHByZXZpb3VzLCBVbmlxdWVkU3RyaW5nSW1wbCogYnJhbmRVaWQs
IERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiBkZWZlcnJlZCkKK3sK
KyAgICBBU1NFUlQodm0uc3RydWN0dXJlU3RydWN0dXJlKTsKKyAgICBCcmFuZGVkU3RydWN0dXJl
KiBuZXdTdHJ1Y3R1cmUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxCcmFuZGVkU3RydWN0
dXJlPih2bS5oZWFwKSkgQnJhbmRlZFN0cnVjdHVyZSh2bSwgcHJldmlvdXMsIGJyYW5kVWlkLCBk
ZWZlcnJlZCk7CisgICAgbmV3U3RydWN0dXJlLT5maW5pc2hDcmVhdGlvbih2bSwgcHJldmlvdXMp
OworICAgIHJldHVybiBuZXdTdHJ1Y3R1cmU7Cit9CisKK2Jvb2wgQnJhbmRlZFN0cnVjdHVyZTo6
Y2hlY2tCcmFuZChTeW1ib2wqIGJyYW5kKQoreworICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBicmFu
ZFVpZCA9ICZicmFuZC0+dWlkKCk7CisgICAgZm9yIChCcmFuZGVkU3RydWN0dXJlKiBjdXJyZW50
U3RydWN0dXJlID0gdGhpczsgY3VycmVudFN0cnVjdHVyZTsgY3VycmVudFN0cnVjdHVyZSA9IGN1
cnJlbnRTdHJ1Y3R1cmUtPm1fcGFyZW50QnJhbmQuZ2V0KCkpIHsKKyAgICAgICAgaWYgKGJyYW5k
VWlkID09IGN1cnJlbnRTdHJ1Y3R1cmUtPm1fYnJhbmQpCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6
c2V0QnJhbmRUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlSW1wbChTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgVW5pcXVlZFN0cmluZ0ltcGwqIGJyYW5kSUQpCit7CisgICAgQVNTRVJUKHN0cnVj
dHVyZS0+aXNPYmplY3QoKSk7CisKKyAgICBpZiAoc3RydWN0dXJlLT5oYXNCZWVuRGljdGlvbmFy
eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmIChTdHJ1Y3R1cmUqIGV4aXN0
aW5nVHJhbnNpdGlvbiA9IHN0cnVjdHVyZS0+bV90cmFuc2l0aW9uVGFibGUuZ2V0KGJyYW5kSUQs
IDAsIFRyYW5zaXRpb25LaW5kOjpTZXRCcmFuZCkpCisgICAgICAgIHJldHVybiBleGlzdGluZ1Ry
YW5zaXRpb247CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworU3RydWN0dXJlKiBTdHJ1Y3R1
cmU6OnNldEJyYW5kVHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseShT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVW5pcXVlZFN0cmluZ0ltcGwqIGJyYW5kSUQpCit7CisgICAg
Q29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihzdHJ1Y3R1cmUtPm1fbG9jayk7CisgICAgcmV0dXJu
IHNldEJyYW5kVHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUltcGwoc3RydWN0dXJlLCBi
cmFuZElEKTsKK30KKworU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnNldEJyYW5kVHJhbnNpdGlvbihW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTeW1ib2wqIGJyYW5kLCBEZWZlcnJlZFN0cnVj
dHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogZGVmZXJyZWQpCit7CisgICAgU3RydWN0dXJl
KiBleGlzdGluZ1RyYW5zaXRpb24gPSBzZXRCcmFuZFRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1
Y3R1cmVJbXBsKHN0cnVjdHVyZSwgJmJyYW5kLT51aWQoKSk7CisgICAgaWYgKGV4aXN0aW5nVHJh
bnNpdGlvbikgCisgICAgICAgIHJldHVybiBleGlzdGluZ1RyYW5zaXRpb247CisKKyAgICBTdHJ1
Y3R1cmUqIHRyYW5zaXRpb24gPSBCcmFuZGVkU3RydWN0dXJlOjpjcmVhdGUodm0sIHN0cnVjdHVy
ZSwgJmJyYW5kLT51aWQoKSwgZGVmZXJyZWQpOworICAgIHRyYW5zaXRpb24tPnNldFRyYW5zaXRp
b25LaW5kKFRyYW5zaXRpb25LaW5kOjpTZXRCcmFuZCk7CisKKyAgICB0cmFuc2l0aW9uLT5tX2Nh
Y2hlZFByb3RvdHlwZUNoYWluLnNldE1heUJlTnVsbCh2bSwgdHJhbnNpdGlvbiwgc3RydWN0dXJl
LT5tX2NhY2hlZFByb3RvdHlwZUNoYWluLmdldCgpKTsKKyAgICB0cmFuc2l0aW9uLT5tX2Jsb2Iu
c2V0SW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeShzdHJ1Y3R1cmUtPmluZGV4aW5nTW9kZUlu
Y2x1ZGluZ0hpc3RvcnkoKSk7CisgICAgdHJhbnNpdGlvbi0+bV90cmFuc2l0aW9uUHJvcGVydHlO
YW1lID0gJmJyYW5kLT51aWQoKTsKKyAgICB0cmFuc2l0aW9uLT5zZXRUcmFuc2l0aW9uUHJvcGVy
dHlBdHRyaWJ1dGVzKDApOworICAgIHRyYW5zaXRpb24tPnNldFByb3BlcnR5VGFibGUodm0sIHN0
cnVjdHVyZS0+dGFrZVByb3BlcnR5VGFibGVPckNsb25lSWZQaW5uZWQodm0pKTsKKyAgICB0cmFu
c2l0aW9uLT5zZXRNYXhPZmZzZXQodm0sIHN0cnVjdHVyZS0+bWF4T2Zmc2V0KCkpOworICAgIGNo
ZWNrT2Zmc2V0KHRyYW5zaXRpb24tPm1heE9mZnNldCgpLCB0cmFuc2l0aW9uLT5pbmxpbmVDYXBh
Y2l0eSgpKTsKKworICAgIGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7CisgICAgICAg
IFByb3BlcnR5VGFibGUqIHRhYmxlID0gdHJhbnNpdGlvbi0+ZW5zdXJlUHJvcGVydHlUYWJsZSh2
bSk7CisgICAgICAgIHRyYW5zaXRpb24tPnBpbihob2xkTG9jayh0cmFuc2l0aW9uLT5tX2xvY2sp
LCB2bSwgdGFibGUpOworICAgIH0gZWxzZSB7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2soc3RydWN0dXJlLT5tX2xvY2spOworICAgICAgICBzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblRh
YmxlLmFkZCh2bSwgdHJhbnNpdGlvbik7CisgICAgfQorCisgICAgdHJhbnNpdGlvbi0+Y2hlY2tP
ZmZzZXRDb25zaXN0ZW5jeSgpOworICAgIHJldHVybiB0cmFuc2l0aW9uOworfQorCiB9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKaW5k
ZXggM2U0NzUxNGM5Y2Q2MWE5ODZhMzAwYTA5OTZkYTA5ZDc3NmRkZjIwNi4uZjllNDllYTliNDVh
ZDk1ZmNkZTljNzBlZjZiMWI3ZjQxNjQ5Y2EwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmgKQEAgLTEyMyw3ICsxMjMsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0
IFN0cnVjdHVyZSogbV9zdHJ1Y3R1cmU7CiB9OwogCi1jbGFzcyBTdHJ1Y3R1cmUgZmluYWwgOiBw
dWJsaWMgSlNDZWxsIHsKK2NsYXNzIFN0cnVjdHVyZSA6IHB1YmxpYyBKU0NlbGwgewogICAgIHN0
YXRpYyBjb25zdGV4cHIgdWludDE2X3Qgc2hvcnRJbnZhbGlkT2Zmc2V0ID0gc3RkOjpudW1lcmlj
X2xpbWl0czx1aW50MTZfdD46Om1heCgpIC0gMTsKICAgICBzdGF0aWMgY29uc3RleHByIHVpbnQx
Nl90IHVzZVJhcmVEYXRhRmxhZyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDE2X3Q+OjptYXgo
KTsKIHB1YmxpYzoKQEAgLTE0NiwxMyArMTQ2LDcgQEAgcHVibGljOgogCiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIGJvb2wgaXNWYWxpZFByb3RvdHlwZShKU1ZhbHVlKTsKIAotcHJpdmF0
ZToKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSkKLSAgICB7Ci0gICAgICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICAgICAgQVNTRVJUKG1fcHJvdG90eXBlLmdldCgpLmlz
RW1wdHkoKSB8fCBpc1ZhbGlkUHJvdG90eXBlKG1fcHJvdG90eXBlLmdldCgpKSk7Ci0gICAgfQot
Citwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0sIGNvbnN0IFN0cnVj
dHVyZSogcHJldmlvdXMpCiAgICAgewogICAgICAgICB0aGlzLT5maW5pc2hDcmVhdGlvbih2bSk7
CkBAIC0xNjUsNiArMTU5LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKK3ByaXZh
dGU6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCisgICAgeworICAgICAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIEFTU0VSVChtX3Byb3RvdHlwZS5nZXQoKS5p
c0VtcHR5KCkgfHwgaXNWYWxpZFByb3RvdHlwZShtX3Byb3RvdHlwZS5nZXQoKSkpOworICAgIH0K
KwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBDcmVhdGluZ0Vhcmx5Q2VsbFRhZykK
ICAgICB7CiAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCB0aGlzLCBDcmVhdGluZ0Vh
cmx5Q2VsbCk7CkBAIC0yMDYsNiArMjA3LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIHByZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSopOwogICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIG5vblByb3BlcnR5VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIFRy
YW5zaXRpb25LaW5kKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBu
b25Qcm9wZXJ0eVRyYW5zaXRpb25TbG93KFZNJiwgU3RydWN0dXJlKiwgVHJhbnNpdGlvbktpbmQp
OworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHNldEJyYW5kVHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0
cnVjdHVyZUNvbmN1cnJlbnRseShTdHJ1Y3R1cmUqLCBVbmlxdWVkU3RyaW5nSW1wbCopOworICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIHNldEJyYW5kVHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIFN5
bWJvbCogYnJhbmQsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiA9
IG51bGxwdHIpOwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1NlYWxlZChWTSYpOwog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNGcm96ZW4oVk0mKTsKQEAgLTcxNSwyMSArNzE4
LDI1IEBAIHB1YmxpYzoKICAgICBERUZJTkVfQklURklFTEQoYm9vbCwgaGFzQmVlbkRpY3Rpb25h
cnksIEhhc0JlZW5EaWN0aW9uYXJ5LCAxLCAyNyk7CiAgICAgREVGSU5FX0JJVEZJRUxEKGJvb2ws
IHByb3RlY3RQcm9wZXJ0eVRhYmxlV2hpbGVUcmFuc2l0aW9uaW5nLCBQcm90ZWN0UHJvcGVydHlU
YWJsZVdoaWxlVHJhbnNpdGlvbmluZywgMSwgMjgpOwogICAgIERFRklORV9CSVRGSUVMRChib29s
LCBoYXNVbmRlcnNjb3JlUHJvdG9Qcm9wZXJ0eUV4Y2x1ZGluZ09yaWdpbmFsUHJvdG8sIEhhc1Vu
ZGVyc2NvcmVQcm90b1Byb3BlcnR5RXhjbHVkaW5nT3JpZ2luYWxQcm90bywgMSwgMjkpOworICAg
IERFRklORV9CSVRGSUVMRChib29sLCBpc0JyYW5kZWRTdHJ1Y3R1cmUsIElzQnJhbmRlZFN0cnVj
dHVyZSwgMSwgMzApOwogCiAgICAgc3RhdGljX2Fzc2VydChzX2JpdFdpZHRoT2ZUcmFuc2l0aW9u
UHJvcGVydHlBdHRyaWJ1dGVzIDw9IHNpemVvZihUcmFuc2l0aW9uUHJvcGVydHlBdHRyaWJ1dGVz
KSAqIDgpOwogICAgIHN0YXRpY19hc3NlcnQoc19iaXRXaWR0aE9mVHJhbnNpdGlvbktpbmQgPD0g
c2l6ZW9mKFRyYW5zaXRpb25LaW5kKSAqIDgpOwogCitwcm90ZWN0ZWQ6CisgICAgU3RydWN0dXJl
KFZNJiwgU3RydWN0dXJlKiwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZp
cmUqKTsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCBjb25zdCBDbGFzc0luZm8qLCBJ
bmRleGluZ1R5cGUsIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KTsKICAgICBTdHJ1Y3R1cmUoVk0m
KTsKLSAgICBTdHJ1Y3R1cmUoVk0mLCBTdHJ1Y3R1cmUqLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5z
aXRpb25XYXRjaHBvaW50RmlyZSopOwogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlKFZN
JiwgU3RydWN0dXJlKiwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUq
ID0gbnVsbHB0cik7CiAgICAgCiAgICAgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVydHlUcmFu
c2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZUltcGwoU3RydWN0dXJlKiwgVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCwgdW5zaWduZWQgYXR0cmlidXRlcywgUHJvcGVydHlPZmZzZXQmKTsKICAgICBzdGF0
aWMgU3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1
cmVJbXBsKFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHJv
cGVydHlPZmZzZXQmKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBzZXRCcmFuZFRyYW5zaXRpb25G
cm9tRXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKFN0cnVjdHVyZSosIFVuaXF1ZWRTdHJpbmdJbXBsKik7
CiAKICAgICAvLyBUaGlzIHdpbGwgcmV0dXJuIHRoZSBzdHJ1Y3R1cmUgdGhhdCBoYXMgYSB1c2Fi
bGUgcHJvcGVydHkgdGFibGUsIHRoYXQgcHJvcGVydHkgdGFibGUsCiAgICAgLy8gYW5kIHRoZSBs
aXN0IG9mIHN0cnVjdHVyZXMgdGhhdCB3ZSB2aXNpdGVkIGJlZm9yZSB3ZSBnb3QgdG8gaXQuIElm
IGl0IHJldHVybnMgYQpAQCAtODc0LDQgKzg4MSwyOSBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBj
bGFzcyBKU0RvbGxhclZNSGVscGVyOwogfTsKIAorY2xhc3MgQnJhbmRlZFN0cnVjdHVyZSBmaW5h
bCA6IHB1YmxpYyBTdHJ1Y3R1cmUgeworICAgIHR5cGVkZWYgU3RydWN0dXJlIEJhc2U7CisKK3B1
YmxpYzoKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4K
KyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAg
ICAgIHJldHVybiAmdm0uYnJhbmRlZFN0cnVjdHVyZVNwYWNlOworICAgIH0KKworICAgIGJvb2wg
Y2hlY2tCcmFuZChTeW1ib2wqIGJyYW5kKTsKKworcHJpdmF0ZTogCisgICAgQnJhbmRlZFN0cnVj
dHVyZShWTSYsIFN0cnVjdHVyZSosIFVuaXF1ZWRTdHJpbmdJbXBsKiBicmFuZCwgRGVmZXJyZWRT
dHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqKTsKKyAgICBCcmFuZGVkU3RydWN0dXJl
KFZNJiwgQnJhbmRlZFN0cnVjdHVyZSosIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNo
cG9pbnRGaXJlKik7CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1
cmUqLCBVbmlxdWVkU3RyaW5nSW1wbCogYnJhbmQsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlv
bldhdGNocG9pbnRGaXJlKiA9IG51bGxwdHIpOworCisgICAgVW5pcXVlZFN0cmluZ0ltcGwqIG1f
YnJhbmQ7CisgICAgV3JpdGVCYXJyaWVyPEJyYW5kZWRTdHJ1Y3R1cmU+IG1fcGFyZW50QnJhbmQ7
CisKKyAgICBmcmllbmQgY2xhc3MgU3RydWN0dXJlOworfTsKKwogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgK
aW5kZXggNzM5ZTFlZjNiOWM3Y2VjMjM1NGI2YTZjNTRjYTk5N2ZjNWZkMmFjNS4uZDRlNWE1MDcy
ZjMwMzIzN2Y4OWU1YzA5OGU0Mzk2NDI2NWRhNWJkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaApAQCAtNjEsNyArNjEsMTIgQEAgaW5s
aW5lIFN0cnVjdHVyZSogU3RydWN0dXJlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtKQogaW5saW5l
IFN0cnVjdHVyZSogU3RydWN0dXJlOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHByZXZpb3Vz
LCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogZGVmZXJyZWQpCiB7
CiAgICAgQVNTRVJUKHZtLnN0cnVjdHVyZVN0cnVjdHVyZSk7Ci0gICAgU3RydWN0dXJlKiBuZXdT
dHJ1Y3R1cmUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTdHJ1Y3R1cmU+KHZtLmhlYXAp
KSBTdHJ1Y3R1cmUodm0sIHByZXZpb3VzLCBkZWZlcnJlZCk7CisgICAgU3RydWN0dXJlKiBuZXdT
dHJ1Y3R1cmU7CisgICAgaWYgKHByZXZpb3VzLT5pc0JyYW5kZWRTdHJ1Y3R1cmUoKSkKKyAgICAg
ICAgbmV3U3RydWN0dXJlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QnJhbmRlZFN0cnVj
dHVyZT4odm0uaGVhcCkpIEJyYW5kZWRTdHJ1Y3R1cmUodm0sIGpzQ2FzdDxCcmFuZGVkU3RydWN0
dXJlKj4ocHJldmlvdXMpLCBkZWZlcnJlZCk7CisgICAgZWxzZQorICAgICAgICBuZXdTdHJ1Y3R1
cmUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTdHJ1Y3R1cmU+KHZtLmhlYXApKSBTdHJ1
Y3R1cmUodm0sIHByZXZpb3VzLCBkZWZlcnJlZCk7CisKICAgICBuZXdTdHJ1Y3R1cmUtPmZpbmlz
aENyZWF0aW9uKHZtLCBwcmV2aW91cyk7CiAgICAgcmV0dXJuIG5ld1N0cnVjdHVyZTsKIH0KQEAg
LTE4MSw2ICsxODYsNyBAQCB2b2lkIFN0cnVjdHVyZTo6Zm9yRWFjaFByb3BlcnR5Q29uY3VycmVu
dGx5KGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgICAgIGNhc2UgVHJhbnNpdGlvbktpbmQ6
OlByb3BlcnR5QXR0cmlidXRlQ2hhbmdlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgVHJhbnNpdGlvbktpbmQ6OlByb3BlcnR5RGVsZXRpb246CisgICAgICAgIGNhc2UgVHJhbnNp
dGlvbktpbmQ6OlNldEJyYW5kOgogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgKaW5k
ZXggNjNjZjhlMDIxMjIxMTQ1ZWMxYzllM2Y2NDM1MGU0YTM3YWUzOTdjNi4uODA2MmMyYzc4N2Mz
ZjVhOGJkNmIyYmFjN2UzODhhMmM2M2I0NmZhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgKQEAgLTU1LDcg
KzU1LDEwIEBAIGVudW0gY2xhc3MgVHJhbnNpdGlvbktpbmQgOiB1aW50OF90IHsKICAgICBBZGRJ
bmRleGVkQWNjZXNzb3JzLAogICAgIFByZXZlbnRFeHRlbnNpb25zLAogICAgIFNlYWwsCi0gICAg
RnJlZXplCisgICAgRnJlZXplLAorCisgICAgLy8gU3VwcG9ydCBmb3IgdHJhbnNpdGlvbnMgcmVs
YXRlZCB3aXRoIHByaXZhdGUgYnJhbmQKKyAgICBTZXRCcmFuZAogfTsKIAogc3RhdGljIGNvbnN0
ZXhwciBhdXRvIEZpcnN0Tm9uUHJvcGVydHlUcmFuc2l0aW9uS2luZCA9IFRyYW5zaXRpb25LaW5k
OjpBbGxvY2F0ZVVuZGVjaWRlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N5bWJvbFRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5
bWJvbFRhYmxlLmNwcAppbmRleCAxNjRjYTZkNDMxMGU2YmIzOGU2NDdlMmY2YmUyZjlmN2Q5ZjMy
NjVjLi5mYjQ2MDAxYmFlZDJmOWMxYzg3ZTU3MjJlMjYxNWI0MTQ1ZDE4NzAyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCkBAIC0xODQsNyArMTg0
LDcgQEAgU3ltYm9sVGFibGUqIFN5bWJvbFRhYmxlOjpjbG9uZVNjb3BlUGFydChWTSYgdm0pCiAK
ICAgICAgICAgewogICAgICAgICAgICAgZm9yIChhdXRvIG5hbWUgOiBtX3JhcmVEYXRhLT5tX3By
aXZhdGVOYW1lcykKLSAgICAgICAgICAgICAgICByZXN1bHQtPm1fcmFyZURhdGEtPm1fcHJpdmF0
ZU5hbWVzLmFkZChuYW1lKTsKKyAgICAgICAgICAgICAgICByZXN1bHQtPm1fcmFyZURhdGEtPm1f
cHJpdmF0ZU5hbWVzLmFkZChuYW1lLmtleSwgbmFtZS52YWx1ZSk7CiAgICAgICAgIH0KICAgICB9
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xU
YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAppbmRl
eCA1OWE3MjMwNWQzYTcwNDIwYWJiMWFmNGVmYmU2N2ZkNmNjZGZkZWEwLi5hNTM4MWNjYmVlMWNi
N2MzYmNjZDY1ZWE3ZTA4MTZlYjQzYTU5NTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N5bWJvbFRhYmxlLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJTY29wZWRB
cmd1bWVudHNUYWJsZS5oIgogI2luY2x1ZGUgIlR5cGVMb2NhdGlvbi5oIgogI2luY2x1ZGUgIlZh
ck9mZnNldC5oIgorI2luY2x1ZGUgIlZhcmlhYmxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJX
YXRjaHBvaW50LmgiCiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRz
Lmg+CkBAIC00NTAsOCArNDUxLDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQ
dHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBSZWZQdHI8VHlwZVNldD4sIElkZW50aWZpZXJSZXBIYXNo
PiBVbmlxdWVUeXBlU2V0TWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDxWYXJPZmZzZXQsIFJlZlB0
cjxVbmlxdWVkU3RyaW5nSW1wbD4+IE9mZnNldFRvVmFyaWFibGVNYXA7CiAgICAgdHlwZWRlZiBW
ZWN0b3I8U3ltYm9sVGFibGVFbnRyeSo+IExvY2FsVG9FbnRyeVZlYzsKLSAgICB0eXBlZGVmIEhh
c2hTZXQ8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgSWRlbnRpZmllclJlcEhhc2g+IFByaXZh
dGVOYW1lU2V0OwotICAgIHR5cGVkZWYgV1RGOjpJdGVyYXRvclJhbmdlPHR5cGVuYW1lIFByaXZh
dGVOYW1lU2V0OjppdGVyYXRvcj4gUHJpdmF0ZU5hbWVJdGVyYXRvclJhbmdlOworICAgIHR5cGVk
ZWYgV1RGOjpJdGVyYXRvclJhbmdlPHR5cGVuYW1lIFByaXZhdGVOYW1lRW52aXJvbm1lbnQ6Oml0
ZXJhdG9yPiBQcml2YXRlTmFtZUl0ZXJhdG9yUmFuZ2U7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihWTSYgdm0pCkBAIC02MDUsMTQgKzYwNSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBtYWtlSXRlcmF0b3JSYW5nZShtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5iZWdpbigp
LCBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5lbmQoKSk7CiAgICAgfQogCi0gICAgdm9pZCBh
ZGRQcml2YXRlTmFtZShVbmlxdWVkU3RyaW5nSW1wbCoga2V5KQorICAgIHZvaWQgYWRkUHJpdmF0
ZU5hbWUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYga2V5LCBQcml2YXRlTmFtZUVu
dHJ5IHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGtleSAmJiAha2V5LT5pc1N5bWJvbCgp
KTsKICAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQogICAgICAgICAgICAgbV9yYXJlRGF0YSA9IFdU
Rjo6bWFrZVVuaXF1ZTxTeW1ib2xUYWJsZVJhcmVEYXRhPigpOwogCi0gICAgICAgIEFTU0VSVCgh
bV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuY29udGFpbnMoa2V5KSk7Ci0gICAgICAgIG1fcmFy
ZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChrZXkpOworICAgICAgICBBU1NFUlQobV9yYXJlRGF0
YS0+bV9wcml2YXRlTmFtZXMuZmluZChrZXkpID09IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVz
LmVuZCgpKTsKKyAgICAgICAgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKGtleSwgdmFs
dWUpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVudHJ5PgpAQCAtNzU2LDcgKzc1
Niw3IEBAIHB1YmxpYzoKICAgICAgICAgT2Zmc2V0VG9WYXJpYWJsZU1hcCBtX29mZnNldFRvVmFy
aWFibGVNYXA7CiAgICAgICAgIFVuaXF1ZVR5cGVTZXRNYXAgbV91bmlxdWVUeXBlU2V0TWFwOwog
ICAgICAgICBXcml0ZUJhcnJpZXI8Q29kZUJsb2NrPiBtX2NvZGVCbG9jazsKLSAgICAgICAgUHJp
dmF0ZU5hbWVTZXQgbV9wcml2YXRlTmFtZXM7CisgICAgICAgIFByaXZhdGVOYW1lRW52aXJvbm1l
bnQgbV9wcml2YXRlTmFtZXM7CiAgICAgfTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcAppbmRleCA4NDAzZTJjODFjNzI2ODFjMGQ1MTA4NzlhOGJlOTgwZjZlMWUw
ZjhjLi5jMzJkZTNmMzU5Njg3ZjBkMmU2NmMxZmUwMzVjMzY1NGNkMzU2NWMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0zNjksNiArMzY5LDcgQEAgVk06OlZNKFZNVHlw
ZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlLCBXVEY6OlJ1bkxvb3AqIHJ1bkxvb3AsIGJvb2wq
IHN1Y2Nlc3MpCiAgICAgLCBzdHJ1Y3R1cmVDaGFpblNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhl
YXAsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFN0cnVjdHVyZUNoYWluKQogICAgICwgc3RydWN0
dXJlUmFyZURhdGFTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxs
SGVhcENlbGxUeXBlLmdldCgpLCBTdHJ1Y3R1cmVSYXJlRGF0YSkgLy8gSGFzaDoweGFjYTRlNjJk
CiAgICAgLCBzdHJ1Y3R1cmVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGli
bGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTdHJ1Y3R1cmUpIC8vIEhhc2g6MHgxZjFiY2RjYQor
ICAgICwgYnJhbmRlZFN0cnVjdHVyZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3Ry
dWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEJyYW5kZWRTdHJ1Y3R1cmUpCiAgICAgLCBz
eW1ib2xUYWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxI
ZWFwQ2VsbFR5cGUuZ2V0KCksIFN5bWJvbFRhYmxlKSAvLyBIYXNoOjB4YzUyMTVhZmQKICAgICAs
IGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzKGV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2VTcGFjZSkKICAgICAsIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZp
bmFsaXplcnMoZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgKaW5kZXggMjdhYWZjMDMyNjZmZDM3YzI1YWEyYTQzMTIyZWI2YTEzZTY1OGM5
Ny4uMmU4NzY2MzdkYzljOTBiZWIyZjRkZjFlMGQ0MWI0MDY5MjBmY2QxMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oCkBAIC00NjUsNiArNDY1LDcgQEAgcHVibGljOgogICAgIElzb1N1
YnNwYWNlIHN0cnVjdHVyZUNoYWluU3BhY2U7CiAgICAgSXNvU3Vic3BhY2Ugc3RydWN0dXJlUmFy
ZURhdGFTcGFjZTsKICAgICBJc29TdWJzcGFjZSBzdHJ1Y3R1cmVTcGFjZTsKKyAgICBJc29TdWJz
cGFjZSBicmFuZGVkU3RydWN0dXJlU3BhY2U7CiAgICAgSXNvU3Vic3BhY2Ugc3ltYm9sVGFibGVT
cGFjZTsKIAogI2RlZmluZSBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKG5hbWUp
IFwKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggOGVmNjQ0YzdhOWQ2M2Q3ZjdlODhjNTcwY2MzOTFlZDAwYTJmMzI4Yy4uYmE5MmQ0MTJmY2Ux
Y2YzYTNjNzNkODcyZDhhMTgwMmJkM2U2NGRlYyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAyMS0wMS0yOSAg
Q2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTTmV4dF0gSW1w
bGVtZW50IHByaXZhdGUgbWV0aG9kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTk0NDM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1icmFuZC1pbnN0YWxsZWQtYWZ0ZXItc3Vw
ZXItY2FsbC1mcm9tLWFycm93LWZ1bmN0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3Mv
cHJpdmF0ZS1icmFuZC1pbnN0YWxsZWQtYWZ0ZXItc3VwZXItY2FsbC1mcm9tLWV2YWwuanM6IEFk
ZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZC1icmFuZC1jaGVjay5qczogQWRk
ZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWNoYW5nZS1hdHRyaWJ1dGUtZnJv
bS1icmFuZGVkLXN0cnVjdHVyZS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUt
bWV0aG9kLWNoYW5nZS1wcm90b3R5cGUtZnJvbS1icmFuZGVkLXN0cnVjdHVyZS5qczogQWRkZWQu
CisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWNoZWNrLXByaXZhdGUtYnJhbmQtaWMu
anM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZC1jaGVjay1zdHJ1Y3R1
cmUtbWlzcy5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWNvbXBh
cmlzb24uanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZC1kZWxldGUt
cHJvcGVydHktZnJvbS1icmFuZGVkLXN0cnVjdHVyZS5qczogQWRkZWQuCisgICAgICAgICogc3Ry
ZXNzL3ByaXZhdGUtbWV0aG9kLWV4dGVuZHMtYnJhbmQtY2hlY2suanM6IEFkZGVkLgorICAgICAg
ICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZC1nZXQtYW5kLWNhbGwuanM6IEFkZGVkLgorICAgICAg
ICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZC1pbnZhbGlkLW11bHRpcGxlLWJyYW5kLWluc3RhbGxh
dGlvbi5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWludmFsaWRh
dGUtY29tcGlsZWQtd2l0aC1jb25zdGFudC1zeW1ib2wuanM6IEFkZGVkLgorICAgICAgICAqIHN0
cmVzcy9wcml2YXRlLW1ldGhvZC1uZXN0ZWQtY2xhc3MuanM6IEFkZGVkLgorICAgICAgICAqIHN0
cmVzcy9wcml2YXRlLW1ldGhvZC1vbi1zZWFsZWQtb2JqZWN0cy5qczogQWRkZWQuCisgICAgICAg
ICogc3RyZXNzL3ByaXZhdGUtbWV0aG9kLW9uLXVuY2FjaGVhYmxlLWRpY3Rpb25hcnkuanM6IEFk
ZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZC1wb2x5bW9ycGhpYy13aXRoLWNv
bnN0YW50LXN5bWJvbC5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9k
LXNldC1icmFuZC1zaG91bGQtaGF2ZS13cml0ZS1iYXJyaWVyLmpzOiBBZGRlZC4KKyAgICAgICAg
KiBzdHJlc3MvcHJpdmF0ZS1tZXRob2QtdW50eXBlZC11c2UuanM6IEFkZGVkLgorICAgICAgICAq
IHN0cmVzcy9wcml2YXRlLW1ldGhvZC13aXRoLXVuY2FjaGVhYmxlLWRpY3Rpb25hcnktdHJhbnNp
dGlvbi5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1pbmxpbmUt
Y2FjaGUuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZHMtbWVnYW1v
cnBoaWMtaWMuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZHMtb24t
cHJveHkuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZHMtcG9seS1p
Yy1tdWx0aXBsZS1jbGFzc2VzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1t
ZXRob2RzLXBvbHktaWMtc2luZ2xlLWNsYXNzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3Mv
cHJpdmF0ZS1uYW1lcy1hdmFpbGFibGUtb24tZGlyZWN0LWV2YWwuanM6IEFkZGVkLgorICAgICAg
ICAqIHRlc3QyNjIvY29uZmlnLnlhbWw6CisKIDIwMjEtMDItMDEgIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBBZGQgQCBpbiBFcnJvci5zdGFjayBp
ZiBVUkwgZXhpc3RzCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLWJyYW5kLWlu
c3RhbGxlZC1hZnRlci1zdXBlci1jYWxsLWZyb20tYXJyb3ctZnVuY3Rpb24uanMgYi9KU1Rlc3Rz
L3N0cmVzcy9wcml2YXRlLWJyYW5kLWluc3RhbGxlZC1hZnRlci1zdXBlci1jYWxsLWZyb20tYXJy
b3ctZnVuY3Rpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2UyOWM3YmMxMWMzNjM0MzkxNWJkMjAyZTgwMjIz
N2E4ODA0MWU0ZgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYnJh
bmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVyLWNhbGwtZnJvbS1hcnJvdy1mdW5jdGlvbi5qcwpAQCAt
MCwwICsxLDI3IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1
ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBlKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7Cit9
CisKK2NsYXNzIEEge30KKworY2xhc3MgQyBleHRlbmRzIEEgeworICAgICNtZXRob2QoKSB7Cisg
ICAgICAgIHJldHVybiAiYmFzZSI7CisgICAgfQorCisgICAgY29uc3RydWN0b3IoKSB7CisgICAg
ICAgIGxldCBpbml0ID0gKCkgPT4gc3VwZXIoKTsKKyAgICAgICAgaW5pdCgpOworICAgIH0KKwor
ICAgIGJhc2VBY2Nlc3MoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtZXRob2QoKTsKKyAgICB9
Cit9CisKK2xldCBjID0gbmV3IEMoKTsKK2Fzc2VydChjLmJhc2VBY2Nlc3MoKSwgImJhc2UiKTsK
KwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1icmFuZC1pbnN0YWxsZWQtYWZ0
ZXItc3VwZXItY2FsbC1mcm9tLWV2YWwuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLWJyYW5k
LWluc3RhbGxlZC1hZnRlci1zdXBlci1jYWxsLWZyb20tZXZhbC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZTE2
ZWUzOGUzNDFjY2MxNjEwNTRkYjE3MmI1ZTIyMWZiNjg2YzgyCi0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1icmFuZC1pbnN0YWxsZWQtYWZ0ZXItc3VwZXItY2FsbC1m
cm9tLWV2YWwuanMKQEAgLTAsMCArMSwyNiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVBy
aXZhdGVNZXRob2RzPXRydWUiKQorCitmdW5jdGlvbiBhc3NlcnQoYSwgZSkgeworICAgIGlmIChh
ICE9PSBlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0
IGdvdDogIiArIGEpOworfQorCitjbGFzcyBBIHt9CisKK2NsYXNzIEMgZXh0ZW5kcyBBIHsKKyAg
ICAjbWV0aG9kKCkgeworICAgICAgICByZXR1cm4gImJhc2UiOworICAgIH0KKworICAgIGNvbnN0
cnVjdG9yKCkgeworICAgICAgICBldmFsKCJzdXBlcigpIik7CisgICAgfQorCisgICAgYmFzZUFj
Y2VzcygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI21ldGhvZCgpOworICAgIH0KK30KKworbGV0
IGMgPSBuZXcgQygpOworYXNzZXJ0KGMuYmFzZUFjY2VzcygpLCAiYmFzZSIpOworCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1icmFuZC1jaGVjay5qcyBiL0pTVGVz
dHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWJyYW5kLWNoZWNrLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhNTE3
NWEzZjViY2FmOWIyNDBiMTk2MDBhN2I3YmRkMWViMDVlNDkKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1icmFuZC1jaGVjay5qcwpAQCAtMCwwICsxLDMz
IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2Z1
bmN0aW9uIGFzc2VydChhLCBlKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7Cit9CisKK2NsYXNz
IEMgeworICAgICNtKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZjsKKyAgICB9CisKKyAgICBt
ZXRob2QoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtKCk7CisgICAgfQorCisgICAgI2YgPSA0
OworfQorCitsZXQgYyA9IG5ldyBDKCk7Cithc3NlcnQoYy5tZXRob2QoKSwgNCk7CisKK3RyeSB7
CisgICAgY2xhc3MgQyB7CisgICAgICAgICNtKCkgeyByZXR1cm4gMzsgfQorICAgIH0KKworICAg
IGxldCBvID0gbmV3IEMoKTsKKyAgICBjLm1ldGhvZC5jYWxsKG8pOworfSBjYXRjaCAoZSkgewor
ICAgIGFzc2VydChlIGluc3RhbmNlb2YgVHlwZUVycm9yLCB0cnVlKTsKK30KKwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtY2hhbmdlLWF0dHJpYnV0ZS1mcm9tLWJy
YW5kZWQtc3RydWN0dXJlLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtY2hhbmdl
LWF0dHJpYnV0ZS1mcm9tLWJyYW5kZWQtc3RydWN0dXJlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3OTBjNDAz
NTljOTllMGM3NmU2NzcxNTVkMjNkMTcxY2EzNjQ0ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1jaGFuZ2UtYXR0cmlidXRlLWZyb20tYnJhbmRlZC1z
dHJ1Y3R1cmUuanMKQEAgLTAsMCArMSw1MCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVBy
aXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVu
Y3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICAgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0
ZWQpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZXhwZWN0ZWQg
KyAiIGJ1dCBnb3Q6ICIgKyBhY3R1YWwpOworICAgIH0sCisKKyAgICB0aHJvd3M6IGZ1bmN0aW9u
IChleHBlY3RlZEVycm9yLCBvcCkgeworICAgICAgICB0cnkgeworICAgICAgICAgIG9wKCk7Cisg
ICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIGV4cGVj
dGVkRXJyb3IpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8g
dGhyb3c6ICIgKyBleHBlY3RlZEVycm9yICsgIiBidXQgdGhyZXc6ICIgKyBlKTsKKyAgICAgICAg
fQorICAgIH0KK307CisKK2NsYXNzIEMgeworICAgICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisK
KyAgICBhY2Nlc3MoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtKCk7CisgICAgfQorfQorCits
ZXQgYzEgPSBuZXcgQygpOworYzEuZm9vID0gJ3Rlc3QnOworYXNzZXJ0LnNhbWVWYWx1ZShjMS5h
Y2Nlc3MoKSwgJ3Rlc3QnKTsKK2Fzc2VydC5zYW1lVmFsdWUoYzEuZm9vLCAndGVzdCcpOworYXNz
ZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgpIHsKKyAgICBjMS5hY2Nlc3MuY2FsbCh7
fSk7Cit9KTsKKworT2JqZWN0LmRlZmluZVByb3BlcnR5KGMxLCAnZm9vJywgeworICAgIHdyaXRh
YmxlOiBmYWxzZSwKKyAgICBlbnVtZXJhYmxlOiBmYWxzZQorfSk7CisKK2Fzc2VydC5zYW1lVmFs
dWUoYzEuYWNjZXNzKCksICd0ZXN0Jyk7Cithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rp
b24gKCkgeworICAgIGMxLmFjY2Vzcy5jYWxsKHt9KTsKK30pOworCitsZXQgZGVzY3JpcHRvciA9
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYzEsICdmb28nKTsKKworYXNzZXJ0LnNh
bWVWYWx1ZShkZXNjcmlwdG9yLnZhbHVlLCAndGVzdCcpOworYXNzZXJ0LnNhbWVWYWx1ZShkZXNj
cmlwdG9yLmVudW1lcmFibGUsIGZhbHNlKTsKK2Fzc2VydC5zYW1lVmFsdWUoZGVzY3JpcHRvci53
cml0YWJsZSwgZmFsc2UpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1l
dGhvZC1jaGFuZ2UtcHJvdG90eXBlLWZyb20tYnJhbmRlZC1zdHJ1Y3R1cmUuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9wcml2YXRlLW1ldGhvZC1jaGFuZ2UtcHJvdG90eXBlLWZyb20tYnJhbmRlZC1zdHJ1
Y3R1cmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZWRiMWY2NjljYTAyZmQ3NjRlZTFmYTQzZjU2ZjcwOWZhNTM2
ZDMzZgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWNo
YW5nZS1wcm90b3R5cGUtZnJvbS1icmFuZGVkLXN0cnVjdHVyZS5qcwpAQCAtMCwwICsxLDQwIEBA
CisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBh
c3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAobGhzLCByaHMpIHsKKyAgICAgICAg
aWYgKGxocyAhPT0gcmhzKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDog
IiArIGxocyArICIgYnVnIGdvdDogIiArIHJocyk7CisgICAgfSwKKworICAgIHRocm93czogZnVu
Y3Rpb24gKGV4cGVjdGVkRXJyb3IsIG9wKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgb3Ao
KTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2Yg
ZXhwZWN0ZWRFcnJvcikpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZCB0byB0aHJvdzogIiArIGV4cGVjdGVkRXJyb3IgKyAiIGJ1dCB0aHJldzogIiArIGUpOworICAg
ICAgICB9CisgICAgfQorfTsKKworY2xhc3MgQyB7CisgICAgI20oKSB7IHJldHVybiAndGVzdCc7
IH0KKworICAgIGFjY2VzcygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI20oKTsKKyAgICB9Cit9
CisKK2xldCBjMSA9IG5ldyBDKCk7Cithc3NlcnQuc2FtZVZhbHVlKGMxLmFjY2VzcygpLCAndGVz
dCcpOworYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgpIHsKKyAgICBjMS5hY2Nl
c3MuY2FsbCh7fSk7Cit9KTsKKworT2JqZWN0LnNldFByb3RvdHlwZU9mKGMxLCBudWxsKTsKKwor
YXNzZXJ0LnNhbWVWYWx1ZShjMS5hY2Nlc3MsIHVuZGVmaW5lZCk7Cithc3NlcnQuc2FtZVZhbHVl
KEMucHJvdG90eXBlLmFjY2Vzcy5jYWxsKGMxKSwgJ3Rlc3QnKTsKK2Fzc2VydC50aHJvd3MoVHlw
ZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgYzEuYWNjZXNzLmNhbGwoe30pOworfSk7CisKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWNoZWNrLXByaXZhdGUtYnJh
bmQtaWMuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1jaGVjay1wcml2YXRlLWJy
YW5kLWljLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3ZDMyZTY0MzIyN2MxOTAxOGM0MGI3MWVkOTc4MmUxZTk2
ZjMyMmMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1j
aGVjay1wcml2YXRlLWJyYW5kLWljLmpzCkBAIC0wLDAgKzEsNDAgQEAKKy8vQCByZXF1aXJlT3B0
aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBz
YW1lVmFsdWU6IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgICAgIGlmIChhY3R1
YWwgIT09IGV4cGVjdGVkKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDog
IiArIGFjdHVhbCArICIgYnVnIGdvdDogIiArIGV4cGVjdGVkKTsKKyAgICB9LAorICAgIHRocm93
czogZnVuY3Rpb24gKGV4cGVjdGVkRXJyb3IsIG9wKSB7CisgICAgICAgIHRyeSB7CisgICAgICAg
ICAgb3AoKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBpZiAoIShlIGluc3Rh
bmNlb2YgZXhwZWN0ZWRFcnJvcikpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJF
eHBlY3RlZCB0byB0aHJvdzogIiArIGV4cGVjdGVkRXJyb3IgKyAiIGJ1dCB0aHJldzogIiArIGUp
OworICAgICAgICB9CisgICAgfQorfTsKKworZnVuY3Rpb24gY2xhc3NGYWN0b3J5KCkgeworICAg
IHJldHVybiBjbGFzcyB7CisgICAgICAgICNtZXRob2QoKSB7CisgICAgICAgICAgICByZXR1cm4g
J3Rlc3QnOworICAgICAgICB9CisKKyAgICAgICAgYWNjZXNzKCkgeworICAgICAgICAgICAgcmV0
dXJuIHRoaXMuI21ldGhvZCgpOworICAgICAgICB9CisgICAgfQorfQorCitsZXQgQzEgPSBjbGFz
c0ZhY3RvcnkoKTsKK2xldCBDMiA9IGNsYXNzRmFjdG9yeSgpOworCitsZXQgYzEgPSBuZXcgQzEo
KTsKK2xldCBjMiA9IG5ldyBDMigpOworCithc3NlcnQuc2FtZVZhbHVlKGMxLmFjY2VzcygpLCAn
dGVzdCcpOworYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgpIHsKKyAgICBjMi5h
Y2Nlc3MuY2FsbChjMSkKK30pOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRl
LW1ldGhvZC1jaGVjay1zdHJ1Y3R1cmUtbWlzcy5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUt
bWV0aG9kLWNoZWNrLXN0cnVjdHVyZS1taXNzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4MGQ3ZjdlZWU3MDRl
ZjBjYjhkOTA5ODAwMzUxMDExYWYzMzAzMWMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9wcml2YXRlLW1ldGhvZC1jaGVjay1zdHJ1Y3R1cmUtbWlzcy5qcwpAQCAtMCwwICsxLDUx
IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xl
dCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlm
IChhICE9PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAi
IGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9LAorICAgIHNob3VsZFRocm93OiBmdW5jdGlvbihleGNl
cHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9uOworICAgICAgICB0
cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24g
PSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlv
biA9IHRydWU7CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRpb24pCisgICAg
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2Vw
dGlvbi5uYW1lICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBleGVjdXRlZCB3
aXRob3V0IGV4Y2VwdGlvbiIpOworICAgIH0KK30KKworbGV0IGkgPSAwOworCitjbGFzcyBDIHsK
KyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgaWYgKGkgPj0gNTAwMCkKKyAgICAgICAgICAg
IHRoaXMucHJvcGVydHkgPSBpOworICAgIH0KKworICAgICNtZXRob2QodikgeworICAgICAgICB0
aGlzLmZpZWxkID0gdjsKKyAgICB9CisKKyAgICBhY2Nlc3ModikgeworICAgICAgICB0aGlzLiNt
ZXRob2Qodik7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuYWNjZXNzKTsKKworbGV0
IGMgPSBuZXcgQygpOworZm9yICg7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgYy5hY2Nlc3MoJ2Zv
bycgKyBpKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZmllbGQsICdmb28nICsgaSk7Cit9CisK
K2Fzc2VydC5zaG91bGRUaHJvdyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgIGMuYWNjZXNz
LmNhbGwoe30sICd0ZXN0Jyk7Cit9KTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJp
dmF0ZS1tZXRob2QtY29tcGFyaXNvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9k
LWNvbXBhcmlzb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDZkYTc4NjdiYTQ4ZWI3N2ExYjQwMTRjZjRlZjY0
MTZkMTI0YTdkNgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0
aG9kLWNvbXBhcmlzb24uanMKQEAgLTAsMCArMSwzMSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCIt
LXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1
ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7CisgICAgICAgIGlmIChsaHMgIT09IHJocykKKyAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBsaHMgKyAiIGJ1ZyBnb3Q6ICIg
KyByaHMpOworICAgIH0sCisKKyAgICB0aHJvd3M6IGZ1bmN0aW9uIChleHBlY3RlZEVycm9yLCBv
cCkgeworICAgICAgICB0cnkgeworICAgICAgICAgIG9wKCk7CisgICAgICAgIH0gY2F0Y2goZSkg
eworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVkRXJyb3IpKQorICAgICAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleHBlY3Rl
ZEVycm9yICsgIiBidXQgdGhyZXc6ICIgKyBlKTsKKyAgICAgICAgfQorICAgIH0KK307CisKK2Ns
YXNzIEMgeworICAgICNtKCkgeyByZXR1cm4gJ3Rlc3QyNjInOyB9CisKKyAgICBnZXRQcml2YXRl
TWV0aG9kKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jbTsKKyAgICB9Cit9CisKK2xldCBjMSA9
IG5ldyBDKCk7CitsZXQgYzIgPSBuZXcgQygpOworCithc3NlcnQuc2FtZVZhbHVlKGMxLmdldFBy
aXZhdGVNZXRob2QoKSwgYzIuZ2V0UHJpdmF0ZU1ldGhvZCgpKTsKKwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtZGVsZXRlLXByb3BlcnR5LWZyb20tYnJhbmRlZC1z
dHJ1Y3R1cmUuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1kZWxldGUtcHJvcGVy
dHktZnJvbS1icmFuZGVkLXN0cnVjdHVyZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZWZhZTVmMjFjY2Q4MjYy
YzFhZWVjN2Y2NWRiZTdiOTZkZjkwMjdlCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvcHJpdmF0ZS1tZXRob2QtZGVsZXRlLXByb3BlcnR5LWZyb20tYnJhbmRlZC1zdHJ1Y3R1cmUu
anMKQEAgLTAsMCArMSw0MiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRo
b2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGxo
cywgcmhzKSB7CisgICAgICAgIGlmIChsaHMgIT09IHJocykKKyAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBsaHMgKyAiIGJ1ZyBnb3Q6ICIgKyByaHMpOworICAgIH0s
CisKKyAgICB0aHJvd3M6IGZ1bmN0aW9uIChleHBlY3RlZEVycm9yLCBvcCkgeworICAgICAgICB0
cnkgeworICAgICAgICAgIG9wKCk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAg
aWYgKCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVkRXJyb3IpKQorICAgICAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleHBlY3RlZEVycm9yICsgIiBidXQg
dGhyZXc6ICIgKyBlKTsKKyAgICAgICAgfQorICAgIH0KK307CisKK2NsYXNzIEMgeworICAgICNt
KCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisKKyAgICBhY2Nlc3MoKSB7CisgICAgICAgIHJldHVybiB0
aGlzLiNtKCk7CisgICAgfQorfQorCitsZXQgYzEgPSBuZXcgQygpOworYzEuZm9vID0gJ3Rlc3Qn
OworYXNzZXJ0LnNhbWVWYWx1ZShjMS5hY2Nlc3MoKSwgJ3Rlc3QnKTsKK2Fzc2VydC5zYW1lVmFs
dWUoYzEuZm9vLCAndGVzdCcpOworYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgp
IHsKKyAgICBjMS5hY2Nlc3MuY2FsbCh7fSk7Cit9KTsKKworZGVsZXRlIGMxLmZvbzsKKworYXNz
ZXJ0LnNhbWVWYWx1ZShjMS5hY2Nlc3MoKSwgJ3Rlc3QnKTsKK2Fzc2VydC5zYW1lVmFsdWUoYzEu
Zm9vLCB1bmRlZmluZWQpOworYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgpIHsK
KyAgICBjMS5hY2Nlc3MuY2FsbCh7fSk7Cit9KTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvcHJpdmF0ZS1tZXRob2QtZXh0ZW5kcy1icmFuZC1jaGVjay5qcyBiL0pTVGVzdHMvc3RyZXNz
L3ByaXZhdGUtbWV0aG9kLWV4dGVuZHMtYnJhbmQtY2hlY2suanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzI2NjRi
MmZjY2NmNjg5NWMyMTQ1MWY3Njk3OGM3YTI4NGM3YTNkMQotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWV4dGVuZHMtYnJhbmQtY2hlY2suanMKQEAgLTAs
MCArMSw0MSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUi
KQorCitmdW5jdGlvbiBhc3NlcnQoYSwgZSkgeworICAgIGlmIChhICE9PSBlKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworfQor
CitjbGFzcyBCYXNlIHsKKyAgICAjbUJhc2UoKSB7CisgICAgICAgIHJldHVybiA0OworICAgIH0K
KworICAgIG1ldGhvZEJhc2UoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtQmFzZSgpOworICAg
IH0KK30KKworY2xhc3MgQyBleHRlbmRzIEJhc2UgeworICAgICNtKCkgeworICAgICAgICByZXR1
cm4gdGhpcy4jZjsKKyAgICB9CisKKyAgICBtZXRob2QoKSB7CisgICAgICAgIHJldHVybiB0aGlz
LiNtKCk7CisgICAgfQorCisgICAgI2YgPSAxNTsKK30KKworbGV0IGMgPSBuZXcgQygpOworYXNz
ZXJ0KGMubWV0aG9kKCksIDE1KTsKK2Fzc2VydChjLm1ldGhvZEJhc2UoKSwgNCk7CisKK2xldCBi
YXNlID0gbmV3IEJhc2UgKCk7Cithc3NlcnQoYmFzZS5tZXRob2RCYXNlKCksIDQpOwordHJ5IHsK
KyAgICBjLm1ldGhvZC5jYWxsKGJhc2UpOworfSBjYXRjaCAoZSkgeworICAgIGFzc2VydChlIGlu
c3RhbmNlb2YgVHlwZUVycm9yLCB0cnVlKTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvcHJpdmF0ZS1tZXRob2QtZ2V0LWFuZC1jYWxsLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0
ZS1tZXRob2QtZ2V0LWFuZC1jYWxsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzMTdlMWU3N2U0MzM2ZDRlZGI4
YjgzMDdmNjM1YmQ4MGE2YTJmODgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9w
cml2YXRlLW1ldGhvZC1nZXQtYW5kLWNhbGwuanMKQEAgLTAsMCArMSwyNCBAQAorLy9AIHJlcXVp
cmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0gewor
ICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7CisgICAgICAgIGlmIChsaHMgIT09
IHJocykKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBsaHMgKyAi
IGJ1ZyBnb3Q6ICIgKyByaHMpOworICAgIH0KK307CisKK2NsYXNzIEMgeworICAgICNtKCkgeyBy
ZXR1cm4gdGhpcy5fdjsgfQorCisgICAgZ2V0UHJpdmF0ZU1ldGhvZCgpIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuI207CisgICAgfQorfQorCitsZXQgYyA9IG5ldyBDKCk7CisKK2xldCBvMSA9IHtf
djogJ3Rlc3QyNjInfTsKK2xldCBvMiA9IHtfdjogJ2Zvbyd9OworYXNzZXJ0LnNhbWVWYWx1ZShj
LmdldFByaXZhdGVNZXRob2QoKS5jYWxsKG8xKSwgJ3Rlc3QyNjInKTsKK2Fzc2VydC5zYW1lVmFs
dWUoYy5nZXRQcml2YXRlTWV0aG9kKCkuY2FsbChvMiksICdmb28nKTsKKwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtaW52YWxpZC1tdWx0aXBsZS1icmFuZC1pbnN0
YWxsYXRpb24uanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1pbnZhbGlkLW11bHRp
cGxlLWJyYW5kLWluc3RhbGxhdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZDc3NTA3OWYzMTRkMDg4MGNm
N2I4YzY2MTg2N2FkNWVmOTIyYTQzCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
cHJpdmF0ZS1tZXRob2QtaW52YWxpZC1tdWx0aXBsZS1icmFuZC1pbnN0YWxsYXRpb24uanMKQEAg
LTAsMCArMSw1MSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRy
dWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsK
KyAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6
ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfSwKKyAgICBzaG91bGRUaHJvdzogZnVu
Y3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsK
KyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3
RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhy
ZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0
aW9uKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6
ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQg
ZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2xldCBpID0gMDsKKwor
bGV0IG8gPSB7fTsKK2NsYXNzIEJhc2UgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICBy
ZXR1cm4gbzsKKyAgICB9Cit9CisKK2NsYXNzIEMgZXh0ZW5kcyBCYXNlIHsKKyAgICAjbWV0aG9k
KHYpIHsKKyAgICAgICAgdGhpcy5maWVsZCA9IHY7CisgICAgfQorCisgICAgYWNjZXNzKHYpIHsK
KyAgICAgICAgdGhpcy4jbWV0aG9kKHYpOworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBl
LmFjY2Vzcyk7CisKK2xldCBjID0gbmV3IEMoKTsKK0MucHJvdG90eXBlLmFjY2Vzcy5jYWxsKGMs
ICdmb28nKTsKK2Fzc2VydC5zYW1lVmFsdWUoYy5maWVsZCwgJ2ZvbycpOworCithc3NlcnQuc2hv
dWxkVGhyb3coVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICBjID0gbmV3IEMoKTsKK30pOwor
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1pbnZhbGlkYXRlLWNv
bXBpbGVkLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1t
ZXRob2QtaW52YWxpZGF0ZS1jb21waWxlZC13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yOWQzYzcyYjAzOGJiMGFkN2VlNzk5ZDUyMTQ3YzIyYmQ4NmJhNTk0Ci0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtaW52YWxpZGF0ZS1jb21waWxl
ZC13aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpAQCAtMCwwICsxLDYyIEBACisvL0AgcmVxdWlyZU9w
dGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAg
c2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsK
KyAgICB9LAorICAgIHRocm93czogZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAg
ICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0
b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0
Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAg
aWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGl0IHRo
cm93czogIiArIGUubmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRocmV3RXhjZXB0
aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiAr
IGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIGZhY3RvcnlDbGFzcygpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAg
ICAgI21ldGhvZCgpIHsKKyAgICAgICAgICAgIHJldHVybiAndGVzdCc7CisgICAgICAgIH0KKyAg
ICAKKyAgICAgICAgYWNjZXNzKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI21ldGhvZCgp
OworICAgICAgICB9CisgICAgfQorICAgIG5vSW5saW5lKEMucHJvdG90eXBlLmFjY2Vzcyk7CisK
KyAgICByZXR1cm4gQzsKK30KKworbGV0IEMgPSBmYWN0b3J5Q2xhc3MoKTsKKworZm9yIChsZXQg
aSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGFzc2Vy
dC5zYW1lVmFsdWUoYy5hY2Nlc3MoKSwgJ3Rlc3QnKTsKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVF
cnJvciwgKCkgPT4geworICAgICAgICBjLmFjY2Vzcy5jYWxsKHt9KTsKKyAgICB9KTsKK30KKwor
bGV0IEMyID0gZmFjdG9yeUNsYXNzKCk7CisKK2xldCBjMiA9IG5ldyBDMigpOworYXNzZXJ0LnNh
bWVWYWx1ZShjMi5hY2Nlc3MoKSwgJ3Rlc3QnKTsKKworbGV0IGMgPSBuZXcgQygpOworCithc3Nl
cnQudGhyb3dzKFR5cGVFcnJvciwgKCkgPT4geworICAgIGMuYWNjZXNzLmNhbGwoYzIpOworfSk7
CisKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCAoKSA9PiB7CisgICAgYzIuYWNjZXNzLmNhbGwo
Yyk7Cit9KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLW5lc3Rl
ZC1jbGFzcy5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLW5lc3RlZC1jbGFzcy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44Y2RmNDg5OWE0M2U2OWVkMGRhYjM0YzIyNjNlZmQzODgzZDlhMjJkCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtbmVzdGVkLWNs
YXNzLmpzCkBAIC0wLDAgKzEsNjggQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRl
TWV0aG9kcz10cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsKKyAgICBpZiAoYSAhPT0g
ZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6
ICIgKyBhKTsKK30KKworKCgpID0+IHsKKyAgICBjbGFzcyBCYXNlIHsKKyAgICAgICAgQyA9IGNs
YXNzIHsKKyAgICAgICAgICAgIG1ldGhvZCgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhp
cy4jbUJhc2UoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgICNtQmFzZSgp
IHsKKyAgICAgICAgICAgIHJldHVybiA0OworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGJh
c2UgPSBuZXcgQmFzZSgpOworICAgIGxldCBjID0gbmV3IGJhc2UuQygpOworICAgIGFzc2VydChj
Lm1ldGhvZC5jYWxsKGJhc2UpLCA0KTsKKworICAgIHRyeSB7CisgICAgICAgIGMubWV0aG9kKCk7
CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIFR5cGVFcnJv
ciwgdHJ1ZSk7CisgICAgfQorfSkoKTsKKworLy8gVGVzdCBzaGFkb3cgbWV0aG9kcworCisoKCkg
PT4geworICAgIGNsYXNzIEJhc2UgeworICAgICAgICBtZXRob2QoKSB7CisgICAgICAgICAgICBy
ZXR1cm4gdGhpcy4jbSgpOworICAgICAgICB9CisKKyAgICAgICAgQyA9IGNsYXNzIHsKKyAgICAg
ICAgICAgIG1ldGhvZChvKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG8uI20oKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgI20oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRo
aXMuZm9vOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb28gPSA0OworICAgICAgICB9
OworCisgICAgICAgICNtKCkgeworICAgICAgICAgICAgcmV0dXJuICJmb28iOworICAgICAgICB9
CisgICAgfQorCisgICAgbGV0IGJhc2UgPSBuZXcgQmFzZSgpOworICAgIGxldCBjID0gbmV3IGJh
c2UuQygpOworICAgIGFzc2VydChjLm1ldGhvZChjKSwgNCk7CisgICAgYXNzZXJ0KGJhc2UubWV0
aG9kKCksICJmb28iKTsKKworICAgIHRyeSB7CisgICAgICAgIGMubWV0aG9kKGJhc2UpOworICAg
IH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBUeXBlRXJyb3IsIHRy
dWUpOworICAgIH0KK30pKCk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUt
bWV0aG9kLW9uLXNlYWxlZC1vYmplY3RzLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRo
b2Qtb24tc2VhbGVkLW9iamVjdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTYyZjA5OTQzMTIyNTcxNDkyMWFi
ZDVlMTViYWRhNGZiODUwNmM2MAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3By
aXZhdGUtbWV0aG9kLW9uLXNlYWxlZC1vYmplY3RzLmpzCkBAIC0wLDAgKzEsNjQgQEAKKy8vQCBy
ZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9
IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgICAg
IGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJF
eHBlY3RlZDogIiArIGFjdHVhbCArICIgYnVnIGdvdDogIiArIGV4cGVjdGVkKTsKKyAgICB9LAor
CisgICAgdGhyb3dzOiBmdW5jdGlvbiAoZXhwZWN0ZWRFcnJvciwgb3ApIHsKKyAgICAgICAgdHJ5
IHsKKyAgICAgICAgICBvcCgpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGlm
ICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEVycm9yKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhwZWN0ZWRFcnJvciArICIgYnV0IHRo
cmV3OiAiICsgZSk7CisgICAgICAgIH0KKyAgICB9Cit9OworCitjbGFzcyBDIHsKKyAgICAjbSgp
IHsgcmV0dXJuICd0ZXN0JzsgfQorCisgICAgYWNjZXNzKCkgeworICAgICAgICByZXR1cm4gdGhp
cy4jbSgpOworICAgIH0KK30KKworbGV0IGMxID0gbmV3IEMoKTsKK2Fzc2VydC5zYW1lVmFsdWUo
YzEuYWNjZXNzKCksICd0ZXN0Jyk7Cithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24g
KCkgeworICAgIGMxLmFjY2Vzcy5jYWxsKHt9KTsKK30pOworCitPYmplY3Quc2VhbChjMSk7CisK
K2Fzc2VydC5zYW1lVmFsdWUoYzEuYWNjZXNzKCksICd0ZXN0Jyk7Cithc3NlcnQudGhyb3dzKFR5
cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgIGMxLmFjY2Vzcy5jYWxsKHt9KTsKK30pOworCisv
LyBQZXJmb3JtIGEgc2V0IGJyYW5kIHRyYW5zaXRpb24gb24gZnJvemVuIG9iamVjdAorbGV0IHNl
YWxlZE9iamVjdCA9IHt9OworT2JqZWN0LmZyZWV6ZShzZWFsZWRPYmplY3QpOworCitjbGFzcyBC
YXNlIHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgcmV0dXJuIHNlYWxlZE9iamVjdDsK
KyAgICB9Cit9CisKK2NsYXNzIEQgZXh0ZW5kcyBCYXNlIHsKKyAgICAjbSgpIHsgcmV0dXJuICd0
ZXN0IEQnOyB9CisKKyAgICBzdGF0aWMgYWNjZXNzKG8pIHsKKyAgICAgICAgcmV0dXJuIG8uI20o
KTsKKyAgICB9Cit9CisKK2xldCBkID0gbmV3IEQoKTsKKworYXNzZXJ0LnNhbWVWYWx1ZShELmFj
Y2VzcyhkKSwgJ3Rlc3QgRCcpOworYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgp
IHsKKyAgICBELmFjY2Vzcyh7fSk7Cit9KTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
cHJpdmF0ZS1tZXRob2Qtb24tdW5jYWNoZWFibGUtZGljdGlvbmFyeS5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL3ByaXZhdGUtbWV0aG9kLW9uLXVuY2FjaGVhYmxlLWRpY3Rpb25hcnkuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTA1NTE1MGVkNzQ1NGE1YjAwOWU3MTIxYzU0Njg2YTgzMDA5NDc0YQotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLW9uLXVuY2FjaGVhYmxlLWRpY3Rp
b25hcnkuanMKQEAgLTAsMCArMSw2NCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZh
dGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rp
b24gKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICAgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQp
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgYWN0dWFsICsgIiBi
dWcgZ290OiAiICsgZXhwZWN0ZWQpOworICAgIH0sCisKKyAgICB0aHJvd3M6IGZ1bmN0aW9uIChl
eHBlY3RlZEVycm9yLCBvcCkgeworICAgICAgICB0cnkgeworICAgICAgICAgIG9wKCk7CisgICAg
ICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVk
RXJyb3IpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhy
b3c6ICIgKyBleHBlY3RlZEVycm9yICsgIiBidXQgdGhyZXc6ICIgKyBlKTsKKyAgICAgICAgfQor
ICAgIH0KK307CisKK2NsYXNzIEMgeworICAgICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisKKyAg
ICBhY2Nlc3MoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtKCk7CisgICAgfQorfQorCitsZXQg
YzEgPSBuZXcgQygpOworYXNzZXJ0LnNhbWVWYWx1ZShjMS5hY2Nlc3MoKSwgJ3Rlc3QnKTsKK2Fz
c2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgYzEuYWNjZXNzLmNhbGwo
e30pOworfSk7CisKK09iamVjdC5mcmVlemUoYzEpOworCithc3NlcnQuc2FtZVZhbHVlKGMxLmFj
Y2VzcygpLCAndGVzdCcpOworYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgpIHsK
KyAgICBjMS5hY2Nlc3MuY2FsbCh7fSk7Cit9KTsKKworLy8gUGVyZm9ybSBhIHNldCBicmFuZCB0
cmFuc2l0aW9uIG9uIGZyb3plbiBvYmplY3QKK2xldCBmcm96ZW5PYmplY3QgPSB7fTsKK09iamVj
dC5mcmVlemUoZnJvemVuT2JqZWN0KTsKKworY2xhc3MgQmFzZSB7CisgICAgY29uc3RydWN0b3Io
KSB7CisgICAgICAgIHJldHVybiBmcm96ZW5PYmplY3Q7CisgICAgfQorfQorCitjbGFzcyBEIGV4
dGVuZHMgQmFzZSB7CisgICAgI20oKSB7IHJldHVybiAndGVzdCBEJzsgfQorCisgICAgc3RhdGlj
IGFjY2VzcyhvKSB7CisgICAgICAgIHJldHVybiBvLiNtKCk7CisgICAgfQorfQorCitsZXQgZCA9
IG5ldyBEKCk7CisKK2Fzc2VydC5zYW1lVmFsdWUoRC5hY2Nlc3MoZCksICd0ZXN0IEQnKTsKK2Fz
c2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgRC5hY2Nlc3Moe30pOwor
fSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLXBvbHltb3Jw
aGljLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRo
b2QtcG9seW1vcnBoaWMtd2l0aC1jb25zdGFudC1zeW1ib2wuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDAxNzYy
N2E1MzA5OWEyMDFmYmVhZWIzZDkxN2IwMzZiZjkzMWMxNgotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLXBvbHltb3JwaGljLXdpdGgtY29uc3RhbnQtc3lt
Ym9sLmpzCkBAIC0wLDAgKzEsNTMgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRl
TWV0aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9u
IChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAgIH0sCisgICAgc2hvdWxk
VGhyb3c6IGZ1bmN0aW9uKGV4Y2VwdGlvbiwgZnVuY3RvcikgeworICAgICAgICBsZXQgdGhyZXdF
eGNlcHRpb247CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7CisgICAgICAg
ICAgICB0aHJld0V4Y2VwdGlvbiA9IGZhbHNlOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAg
ICAgICAgIHRocmV3RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICghZSBpbnN0YW5j
ZW9mIGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVk
IHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBpdCB0aHJvd3M6ICIgKyBlLm5h
bWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aHJld0V4Y2VwdGlvbikKKyAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFt
ZSArICIgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7CisgICAgfQorfQorCitsZXQg
aSA9IDA7CisKK2NsYXNzIEJhc2UgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICBpZiAo
aSAlIDIpCisgICAgICAgICAgICB0aGlzLmFub3RoZXJGaWVsZCA9IGk7CisgICAgfQorfQorCitj
bGFzcyBDIGV4dGVuZHMgQmFzZSB7CisgICAgI21ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuICd0
ZXN0JzsKKyAgICB9CisKKyAgICBhY2Nlc3MoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtZXRo
b2QoKTsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5hY2Nlc3MpOworCitmb3IgKDsg
aSA8IDEwMDAwOyBpKyspIHsKKyAgICBjb3VudCA9IGk7CisgICAgbGV0IGMgPSBuZXcgQygpOwor
ICAgIGFzc2VydC5zYW1lVmFsdWUoYy5hY2Nlc3MoKSwgJ3Rlc3QnKTsKK30KKworYXNzZXJ0LnNo
b3VsZFRocm93KFR5cGVFcnJvciwgKCkgPT4geworICAgIGMuYWNjZXNzLmNhbGwoe30pOworfSk7
CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLXNldC1icmFuZC1z
aG91bGQtaGF2ZS13cml0ZS1iYXJyaWVyLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRo
b2Qtc2V0LWJyYW5kLXNob3VsZC1oYXZlLXdyaXRlLWJhcnJpZXIuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Iz
OWI3YTVlNzNjYjMzZjQ0NDRlMWZmNDAzMmRjZDQ1NjUxNWM1MwotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLXNldC1icmFuZC1zaG91bGQtaGF2ZS13cml0
ZS1iYXJyaWVyLmpzCkBAIC0wLDAgKzEsNDEgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQ
cml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1
bmN0aW9uKGEsIGUpIHsKKyAgICAgICAgaWYgKGEgIT09IGUpCisgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAgIH0KK307
CisKK2xldCBvYmogPSB7fTsKK2xldCBvdmVycmlkZVN1cGVyID0gZmFsc2UKK2NsYXNzIEJhc2Ug
eworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICBpZiAob3ZlcnJpZGVTdXBlcikKKyAgICAg
ICAgICAgIHJldHVybiBvYmo7CisgICAgICAgIHJldHVybiB7fTsKKyAgICB9Cit9CisKK2NsYXNz
IEMgZXh0ZW5kcyBCYXNlIHsKKyAgICAjbWV0aG9kKCkgeworICAgICAgICByZXR1cm4gJ3Rlc3Qn
OworICAgIH0KKworICAgIHN0YXRpYyBhY2Nlc3MobykgeworICAgICAgICByZXR1cm4gby4jbWV0
aG9kKCk7CisgICAgfQorfQorbm9JbmxpbmUoQy5hY2Nlc3MpOworCitnYygpOworbGV0IGMgPSBu
ZXcgQygpOyAvLyBUaGlzIGlzIGRvbmUgdG8gZmlsbCBJQyBwYXRoCitjID0gbnVsbDsKKworb3Zl
cnJpZGVTdXBlciA9IHRydWU7CituZXcgQygpOworZWRlbkdDKCk7IC8vIHRoaXMgbGVhdmVzIG9i
aiB3aXRoIGEgU3RydWN1dHJlIHRoYXQgd2FzIGZyZWVkCitmb3IgKGxldCBpID0gMDsgaSA8IDEw
MDAwOyBpKyspIHsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKEMuYWNjZXNzKG9iaiksICd0ZXN0Jyk7
Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLXVudHlwZWQt
dXNlLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtdW50eXBlZC11c2UuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjg3Yzk4NTE3NjE5MzZlMWEwNzMyNzExZGY2MWM5MTFjMmRiODA5YwotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLXVudHlwZWQtdXNlLmpz
CkBAIC0wLDAgKzEsNTcgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9k
cz10cnVlIiwgIi0tdXNlQWNjZXNzSW5saW5pbmc9ZmFsc2UiKQorCitsZXQgYXNzZXJ0ID0gewor
ICAgIHNob3VsZFRocm93OiBmdW5jdGlvbihleGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAg
bGV0IHRocmV3RXhjZXB0aW9uOworICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3Rvcigp
OworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChl
KSB7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICBpZiAo
IWUgaW5zdGFuY2VvZiBleGNlcHRpb24pCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgaXQgdGhyb3dz
OiAiICsgZS5uYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24p
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhj
ZXB0aW9uLm5hbWUgKyAiIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworICAgIH0K
K30KKworY2xhc3MgQyB7CisgICNtZXRob2QoKSB7fQorCisgIGFjY2Vzcyh2KSB7CisgICAgICBs
ZXQgbyA9IHRoaXM7CisgICAgICAvLyBUaGlzIGJyYW5jaCBpcyBoZXJlIHRvIGF2b2lkIENoZWNr
UHJpdmF0ZUJyYW5kIHRvIGJlIGZvbGRlZC4KKyAgICAgIGlmICh2ID4gMTAwKQorICAgICAgICAg
IG8gPSB7fTsKKyAgICAgIG8uI21ldGhvZCgpOworICB9Cit9Citub0lubGluZShDLnByb3RvdHlw
ZS5hY2Nlc3MpOworCitsZXQgYyA9IG5ldyBDKCk7CisKKy8vIExldCdzIHRyaWdnZXIgSklUIGNv
bXBpbGF0aW9uIGZvciBgQy5wcm90b3R5cGUuYWNjZXNzYAorZm9yIChsZXQgaSA9IDA7IGkgPCAx
MDAwMDsgaSsrKSB7CisgICAgYy5hY2Nlc3MoMTUpOworfQorCitmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDAwOyBpKyspIHsKKyAgICBhc3NlcnQuc2hvdWxkVGhyb3coVHlwZUVycm9yLCAoKSA9PiB7
CisgICAgICAgIGMuYWNjZXNzLmNhbGwoe30sIDApOworICAgIH0pOworCisgICAgYXNzZXJ0LnNo
b3VsZFRocm93KFR5cGVFcnJvciwgKCkgPT4geworICAgICAgICBjLmFjY2Vzcy5jYWxsKDE1LCAw
KTsKKyAgICB9KTsKKworICAgIGFzc2VydC5zaG91bGRUaHJvdyhUeXBlRXJyb3IsICgpID0+IHsK
KyAgICAgICAgYy5zZXRGaWVsZC5jYWxsKCdzdHJpbmcnLCAwKTsKKyAgICB9KTsKKworICAgIGFz
c2VydC5zaG91bGRUaHJvdyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICAgICAgYy5zZXRGaWVsZC5j
YWxsKFN5bWJvbCgnc3ltYm9sJyksIDApOworICAgIH0pOworfQorCmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC13aXRoLXVuY2FjaGVhYmxlLWRpY3Rpb25hcnktdHJh
bnNpdGlvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLXdpdGgtdW5jYWNoZWFi
bGUtZGljdGlvbmFyeS10cmFuc2l0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyMTI4OGViZTZkODIxZjMz
Y2IxZTJlNWYzOGQ2NTExNGY3MjMxZGUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9wcml2YXRlLW1ldGhvZC13aXRoLXVuY2FjaGVhYmxlLWRpY3Rpb25hcnktdHJhbnNpdGlvbi5q
cwpAQCAtMCwwICsxLDM5IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhv
ZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYWN0
dWFsLCBleHBlY3RlZCkgeworICAgICAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBhY3R1YWwgKyAiIGJ1ZyBnb3Q6
ICIgKyBleHBlY3RlZCk7CisgICAgfSwKKworICAgIHRocm93czogZnVuY3Rpb24gKGV4cGVjdGVk
RXJyb3IsIG9wKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgb3AoKTsKKyAgICAgICAgfSBj
YXRjaChlKSB7CisgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgZXhwZWN0ZWRFcnJvcikp
CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiAr
IGV4cGVjdGVkRXJyb3IgKyAiIGJ1dCB0aHJldzogIiArIGUpOworICAgICAgICB9CisgICAgfQor
fTsKKworY2xhc3MgQyB7CisgICAgI20oKSB7IHJldHVybiAndGVzdCc7IH0KKworICAgIGFjY2Vz
cygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI20oKTsKKyAgICB9Cit9CisKK2xldCBjMSA9IG5l
dyBDKCk7Cithc3NlcnQuc2FtZVZhbHVlKGMxLmFjY2VzcygpLCAndGVzdCcpOworYXNzZXJ0LnRo
cm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgpIHsKKyAgICBjMS5hY2Nlc3MuY2FsbCh7fSk7Cit9
KTsKKworJHZtLnRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5KGMxKTsKKworYXNzZXJ0LnNhbWVWYWx1
ZShjMS5hY2Nlc3MoKSwgJ3Rlc3QnKTsKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlv
biAoKSB7CisgICAgYzEuYWNjZXNzLmNhbGwoe30pOworfSk7CisKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1pbmxpbmUtY2FjaGUuanMgYi9KU1Rlc3RzL3N0cmVz
cy9wcml2YXRlLW1ldGhvZHMtaW5saW5lLWNhY2hlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3Y2I3Zjg5ZTFj
MDFjY2UxNWNiYzcxNDYxMzZiMWFhZjM3Yjc5ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9wcml2YXRlLW1ldGhvZHMtaW5saW5lLWNhY2hlLmpzCkBAIC0wLDAgKzEsMjIgQEAK
Ky8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworZnVuY3Rp
b24gYXNzZXJ0KGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3Rl
ZCkKKyAgICAgICAgdGhyb3cgRXJyb3IoIkV4cGVjdGVkOiAiICsgZXhwZWN0ZWQgKyAiIEFjdHVh
bDogIiArIGFjdHVhbCk7Cit9CisKK2NsYXNzIEMgeworICAgICNtZXRob2QoKSB7CisgICAgICAg
IHJldHVybiAnZm9vJzsKKyAgICB9CisKKyAgICBhY2Nlc3MoKSB7CisgICAgICAgcmV0dXJuIHRo
aXMuI21ldGhvZCgpOworICAgIH0KK30KKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsr
KSB7CisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGFzc2VydChjLmFjY2VzcygpLCAnZm9vJyk7
Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1tZWdhbW9y
cGhpYy1pYy5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1tZWdhbW9ycGhpYy1p
Yy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zYzE2NmQ2Yjc2Yjc4NWRhYjgzNDY3NDJkNTBhMjE2YmRjNmEwZWQx
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2RzLW1lZ2Ft
b3JwaGljLWljLmpzCkBAIC0wLDAgKzEsMjUgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQ
cml2YXRlTWV0aG9kcz10cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGFjdHVhbCwgZXhwZWN0ZWQp
IHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgRXJyb3IoIkV4
cGVjdGVkOiAiICsgZXhwZWN0ZWQgKyAiIEFjdHVhbDogIiArIGFjdHVhbCk7Cit9CisKK2Z1bmN0
aW9uIGNsYXNzRXhwcigpIHsKKyAgICByZXR1cm4gY2xhc3MgeworICAgICAgICAjbWV0aG9kKCkg
eworICAgICAgICAgICAgcmV0dXJuICdmb28nOworICAgICAgICB9CisKKyAgICAgICAgYWNjZXNz
KCkgeworICAgICAgICAgICByZXR1cm4gdGhpcy4jbWV0aG9kKCk7CisgICAgICAgIH0KKyAgICB9
Cit9CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBDID0gY2xh
c3NFeHByKCk7CisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGFzc2VydChjLmFjY2VzcygpLCAn
Zm9vJyk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1v
bi1wcm94eS5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1vbi1wcm94eS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mYjVmZGZjYjYyMzRkNTQwYWEwZmExMmU4ZTc3NzZkMDYzYWE1YTlmCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2RzLW9uLXByb3h5Lmpz
CkBAIC0wLDAgKzEsNDIgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9k
cz10cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGEsIGUsIG0pIHsKKyAgICBpZiAoYSAhPT0gZSkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKG0pOworfQorCitmdW5jdGlvbiBhc3NlcnRBcnJheUNv
bnRlbnQoYSwgZSkgeworICAgIGFzc2VydChhLmxlbmd0aCwgZS5sZW5ndGgsICJTaXplIG9mIGFy
cmF5cyBkb2Vzbid0IG1hdGNoIik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsg
aSsrKQorICAgICAgICBhc3NlcnQoYVtpXSwgZVtpXSwgImFbIiArIGkgKyAiXSA9ICIgKyBhW2ld
ICsgIiBidXQgZVsiICsgaSArICJdID0gIiArIGVbaV0pOworfQorCitsZXQgYXJyID0gW107CisK
K2NsYXNzIFByb3h5QmFzZSB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIHJldHVybiBu
ZXcgUHJveHkodGhpcywgeworICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAob2JqLCBwcm9wKSB7
CisgICAgICAgICAgICAgICAgYXJyLnB1c2gocHJvcCk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IG9ialtwcm9wXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorfQorCitjbGFz
cyBUZXN0IGV4dGVuZHMgUHJveHlCYXNlIHsKKyAgICAjbSgpIHsKKyAgICAgICAgcmV0dXJuIDM7
CisgICAgfQorCisgICAgbWV0aG9kKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jbSgpOworICAg
IH0KK30KKworbGV0IHQgPSBuZXcgVGVzdCgpOworbGV0IHIgPSB0Lm1ldGhvZCgpOworYXNzZXJ0
KHIsIDMsICJFeHBlY3RlZDogMyBidXQgZ290OiAiICsgcik7CisKK2Fzc2VydEFycmF5Q29udGVu
dChhcnIsIFsnbWV0aG9kJ10pOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRl
LW1ldGhvZHMtcG9seS1pYy1tdWx0aXBsZS1jbGFzc2VzLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJp
dmF0ZS1tZXRob2RzLXBvbHktaWMtbXVsdGlwbGUtY2xhc3Nlcy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZjZj
NmQ2YTY1NTZlODMxNTY2MzA4NzZhODEzOWVmODUyZGIxZDgwCi0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2RzLXBvbHktaWMtbXVsdGlwbGUtY2xhc3Nlcy5q
cwpAQCAtMCwwICsxLDI4IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhv
ZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYg
KGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IEVycm9yKCJFeHBlY3RlZDogIiAr
IGV4cGVjdGVkICsgIiBBY3R1YWw6ICIgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiBjbGFzc0V4
cHIoKSB7CisgICAgcmV0dXJuIGNsYXNzIHsKKyAgICAgICAgI21ldGhvZCgpIHsKKyAgICAgICAg
ICAgIHJldHVybiAnZm9vJzsKKyAgICAgICAgfQorCisgICAgICAgIGFjY2VzcygpIHsKKyAgICAg
ICAgICAgcmV0dXJuIHRoaXMuI21ldGhvZCgpOworICAgICAgICB9CisgICAgfQorfQorCitsZXQg
QzEgPSBjbGFzc0V4cHIoKTsKK2xldCBDMiA9IGNsYXNzRXhwcigpOworCitsZXQgYXJyID0gW0Mx
LCBDMl07Citmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgYyA9IG5l
dyBhcnJbaSAlIGFyci5sZW5ndGhdKCk7CisgICAgYXNzZXJ0KGMuYWNjZXNzKCksICdmb28nKTsK
K30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2RzLXBvbHktaWMt
c2luZ2xlLWNsYXNzLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2RzLXBvbHktaWMt
c2luZ2xlLWNsYXNzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjNDg1YjRmODhlOTQ0NTkyMzY4YjhkNWY1Zjgw
NTQ5OWZjZjI1NjQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1l
dGhvZHMtcG9seS1pYy1zaW5nbGUtY2xhc3MuanMKQEAgLTAsMCArMSwyNSBAQAorLy9AIHJlcXVp
cmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitmdW5jdGlvbiBhc3NlcnQo
YWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAg
ICB0aHJvdyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBleHBlY3RlZCArICIgQWN0dWFsOiAiICsgYWN0
dWFsKTsKK30KKworY2xhc3MgQyB7CisgICAgI21ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuICdm
b28nOworICAgIH0KKworICAgIGFjY2VzcygpIHsKKyAgICAgICByZXR1cm4gdGhpcy4jbWV0aG9k
KCk7CisgICAgfQorfQorCitsZXQgYzEgPSBuZXcgQygpOworbGV0IGMyID0gbmV3IEMoKTsKK2My
LmJhciA9ICdiYXInOworbGV0IGFyciA9IFtjMSwgYzJdOworZm9yIChsZXQgaSA9IDA7IGkgPCAx
MDAwMDsgaSsrKSB7CisgICAgYXNzZXJ0KGFycltpICUgYXJyLmxlbmd0aF0uYWNjZXNzKCksICdm
b28nKTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1lcy1hdmFp
bGFibGUtb24tZGlyZWN0LWV2YWwuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5hbWVzLWF2
YWlsYWJsZS1vbi1kaXJlY3QtZXZhbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NGNlMGUwYWY4MDU3OGU4OTcx
NmExNjcyZWRjMTc3MzA1YjA2NGYzCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
cHJpdmF0ZS1uYW1lcy1hdmFpbGFibGUtb24tZGlyZWN0LWV2YWwuanMKQEAgLTAsMCArMSwyMyBA
QAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQg
YXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7CisgICAgICAg
IGlmIChsaHMgIT09IHJocykKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6
ICIgKyByaHMgKyAiIGJ1ZyBnb3Q6ICIgKyBsaHMpOworICAgIH0KK307CisKKyhmdW5jdGlvbiAo
KSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisKKyAg
ICAgICAgY2FsbE1ldGhvZEZyb21FdmFsKCkgeworICAgICAgICAgICAgbGV0IHNlbGYgPSB0aGlz
OworICAgICAgICAgICAgcmV0dXJuIGV2YWwoJ3NlbGYuI20oKScpOworICAgICAgICB9CisgICAg
fQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5jYWxsTWV0
aG9kRnJvbUV2YWwoKSwgJ3Rlc3QnKTsKK30pKCk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVz
dDI2Mi9jb25maWcueWFtbCBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAppbmRleCA4M2E2
YTcyZDRjZjNmNGMxYzljZjhhYjcxOTljYmRmYzRlMGM4OGY2Li5hMTc2NDY4NmE0YmIzYjQxZWU0
M2NjZGQ5MDBjOWM5MjdkYWNkZjAzIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmln
LnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCkBAIC00LDYgKzQsNyBAQCBm
bGFnczoKICAgV2Vha1JlZjogdXNlV2Vha1JlZnMKICAgRmluYWxpemF0aW9uUmVnaXN0cnk6IHVz
ZVdlYWtSZWZzCiAgIGNsYXNzLWZpZWxkcy1wcml2YXRlOiB1c2VQcml2YXRlQ2xhc3NGaWVsZHMK
KyAgY2xhc3MtbWV0aG9kcy1wcml2YXRlOiB1c2VQcml2YXRlTWV0aG9kcwogICBjbGFzcy1zdGF0
aWMtZmllbGRzLXB1YmxpYzogdXNlUHVibGljU3RhdGljQ2xhc3NGaWVsZHMKICAgY2xhc3Mtc3Rh
dGljLWZpZWxkcy1wcml2YXRlOiB1c2VQcml2YXRlU3RhdGljQ2xhc3NGaWVsZHMKICAgSW50bC5E
YXRlVGltZUZvcm1hdC1kYXlQZXJpb2Q6IHVzZUludGxEYXRlVGltZUZvcm1hdERheVBlcmlvZApA
QCAtMTksNyArMjAsNiBAQCBza2lwOgogICAgIC0gcmVnZXhwLWxvb2tiZWhpbmQKICAgICAtIGxl
Z2FjeS1yZWdleHAKIAotICAgIC0gY2xhc3MtbWV0aG9kcy1wcml2YXRlCiAgICAgLSBjbGFzcy1z
dGF0aWMtbWV0aG9kcy1wcml2YXRlCiAgICAgLSBjbGVhbnVwU29tZQogICAgIC0gaG9zdC1nYy1y
ZXF1aXJlZAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419624</attachid>
            <date>2021-02-08 13:45:43 -0800</date>
            <delta_ts>2021-02-08 14:38:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194434-20210208184540.patch</filename>
            <type>text/plain</type>
            <size>349231</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
OWZjM2QwNTRhN2MzZTExYmZlOTI2NDRlNGIzMGE5MTFjNzAwZThjLi41YTg4ZTkwMGQ2NWI3MzQ1
YjM0NGM5MjEzYjhkZTg1NGJmZjFjMjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MjkgQEAKKzIwMjEtMDEtMjkgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtFU05leHRdIEltcGxlbWVudCBwcml2YXRlIG1ldGhvZHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDQzNAorCisgICAgICAg
IFJldmlld2VkIGJ5IEZpbGlwIFBpemxvLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYWRkaW5n
IHN1cHBvcnQgdG8gcHJpdmF0ZSBtZXRob2RzIGZvbGxvd2luZyB0aGUKKyAgICAgICAgc3BlY2lm
aWNhdGlvbiBvbiBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtcHJpdmF0ZS1tZXRob2RzLy4KKyAg
ICAgICAgVGhpcyBpcyBpbnRyb2R1Y2luZyBhIG5ldyB3YXkgdG8gZGVjbGFyZSBwcml2YXRlIG1l
dGhvZHMgb24KKyAgICAgICAgY2xhc3Mgc3ludGF4LiBQcml2YXRlIG1ldGhvZHMgYXJlIG9ubHkg
YWNjZXNzaWJsZSB3aXRoaW4KKyAgICAgICAgY2xhc3NlcyB0aGV5IHdlcmUgZGVjbGFyZWQsIGFu
ZCBvbmx5IGNhbiBiZSBjYWxsZWQgZnJvbQorICAgICAgICBvYmplY3RzIHRoYXQgYXJlIGluc3Rh
bmNlIG9mIHRoZXNlIGNsYXNzZXMuCisgICAgICAgIFRvIGd1YXJhbnRlZSBzdWNoIHJ1bGVzLCB0
aGUgcHJvcG9zYWwgcHJlc2VudHMgdGhlIGNvbmNlcHQgb2YKKyAgICAgICAgQnJhbmQgQ2hlY2su
IER1cmluZyBjbGFzcyBldmFsdWF0aW9uLCBpZiBhIHByaXZhdGUgbWV0aG9kIGlzIHByZXNlbnQs
CisgICAgICAgIGEgYGJyYW5kYCBpcyBpbnN0YWxsZWQgaW4gdGhpcyBjbGFzcy4gRXZlcnkgaW5z
dGFuY2Ugb2Ygc3VjaCBjbGFzcworICAgICAgICB0aGVuIGdldHMgdGhpcyBicmFuZCBpbnN0YWxs
ZWQgZHVyaW5nIGBbW0NvbnN0cnVjdF1dYCBvcGVyYXRpb24uIEl0CisgICAgICAgIG1lYW5zIHRo
YXQgYW4gb2JqZWN0IGNhbiBoYXZlIG11bHRpcGxlIGJyYW5kcyAoZS5nIHdoZW4gdGhlcmUgaXMg
YWxzbworICAgICAgICBwcml2YXRlIG1ldGhvZHMgZGVjbGFyZWQgb24gc3VwZXIgY2xhc3MpLiBC
ZWZvcmUgYWNjZXNzaW5nIGEgcHJpdmF0ZQorICAgICAgICBtZXRob2QsIHRoZXJlIGlzIGEgY2hl
Y2sgdG8gdmFsaWRhdGUgaWYgdGhlIHRhcmdldCBvZiB0aGUgY2FsbCBoYXMgdGhlCisgICAgICAg
IGJyYW5kIG9mIGNhbGxlZSBtZXRob2QuCisgICAgICAgIFRoZSBicmFuZCBjaGVjayBtZWNoYW5p
c20gaXMgaW1wbGVtZW50ZWQgdXNpbmcgYSBgQHByaXZhdGVCcmFuZGAKKyAgICAgICAgc3RvcmVk
IG9uIGNsYXNzIHNjb3BlLiBIZXJlIGlzIGEgcmVwcmVzZW50YXRpb24gb2YgaG93IHRoaXMgbWVj
aGFuaXNtCisgICAgICAgIHdvcmtzOgorCisgICAgICAgIGBgYAorICAgICAgICBjbGFzcyBDIHsK
KyAgICAgICAgICAgICNtKCkgeyByZXR1cm4gMzsgfQorICAgICAgICAgICAgbWV0aG9kKCkgeyBy
ZXR1cm4gdGhpcy4jbSgpOyB9CisgICAgICAgIH0KKworICAgICAgICBsZXQgYyA9IG5ldyBDKCk7
CisgICAgICAgIGNvbnNvbGUubG9nKGMubWV0aG9kKCkpOyAvLyBwcmludHMgMworICAgICAgICBg
YGAKKworICAgICAgICBHZW5lcmF0ZWQgYnl0ZWNvZGUgZm9yIHRoZSBmb2xsb3dpbmcgcmVwcmVz
ZW50YXRpb246CisgICAgICAgIGBgYAorICAgICAgICB7IC8vIGNsYXNzIGxleGljYWwgc2NvcGUK
KyAgICAgICAgICAgIGNvbnN0IEBwcml2YXRlQnJhbmQgPSBAY3JlYXRlUHJpdmF0ZVN5bWJvbCgp
OworICAgICAgICAgICAgY29uc3QgI20gPSBmdW5jdGlvbiAoKSB7IHJldHVybiAzOyB9CisgICAg
ICAgICAgICBDLnByb3RvdHlwZS5tZXRob2QgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAg
ICBAY2hlY2tfcHJpdmF0ZV9icmFuZCh0aGlzLCBAcHJpdmF0ZUJyYW5kKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gI20uY2FsbCh0aGlzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEMg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBAc2V0X3ByaXZhdGVfYnJhbmQodGhpcywg
QHByaXZhdGVCcmFuZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBsZXQg
YyA9IG5ldyBDKCk7CisgICAgICAgIGNvbnNvbGUubG9nKGMubWV0aG9kKCkpOyAvLyBwcmludHMg
MworICAgICAgICBgYGAKKworICAgICAgICAjIFJlc29sdmluZyBjb3JyZWN0IGJyYW5kIHRvIGNo
ZWNrCisKKyAgICAgICAgSW4gdGhlIGNhc2Ugb2Ygc2hhZG93aW5nIG9yIG5lc3RlZCBzY29wZSwg
d2UgbmVlZCB0byBlbWl0IGJyYW5kCisgICAgICAgIGNoZWNrcyB0byB0aGUgcmlnaHQgcHJpdmF0
ZSBicmFuZC4gU2VlIGNvZGUgYmVsb3c6CisKKyAgICAgICAgYGBgCisgICAgICAgIGNsYXNzIEMg
eworICAgICAgICAgICAgI20oKSB7IHJldHVybiAzOyB9CisgICAgICAgICAgICBtZXRob2QoKSB7
IHJldHVybiB0aGlzLiNtKCk7fQorCisgICAgICAgICAgICBBID0gY2xhc3MgeworICAgICAgICAg
ICAgICAgICNtMigpIHsgcmV0dXJuIDM7IH0KKyAgICAgICAgICAgICAgICBmb28obykgeyByZXR1
cm4gby4jbSgpOyB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYGBgCisKKyAg
ICAgICAgVGhlIGNhbGwgb2YgIiNtIiBpbiBgZm9vYCByZWZlcnMgdG8gIkM6OiNtIi4gSW4gc3Vj
aCBjYXNlLCB3ZSBuZWVkIHRvCisgICAgICAgIGNoZWNrIEMncyBwcml2YXRlIGJyYW5kLCBpbnN0
ZWFkIG9mIEEncyBwcml2YXRlIGJyYW5kLgorICAgICAgICBUbyBwZXJmb3JtIHRoZSBwcm9wZXIg
Y2hlY2ssIHdlIGZpcnN0IHJlc29sdmUgc2NvcGUgb2YgIiNtIiBhbmQgdGhlbgorICAgICAgICBj
aGVjayB0aGUgcHJpdmF0ZSBicmFuZCBvZiB0aGlzIHNjb3BlICh0aGUgc2NvcGUgd2hlcmUgdGhl
IHByaXZhdGUKKyAgICAgICAgbWV0aG9kIGFuZCBicmFuZCBhcmUgc3RvcmVkIGlzIHRoZSBzYW1l
KS4KKyAgICAgICAgU28gdGhlIGJ5dGVjb2RlIHRvIGxvb2t1cCB0aGUgcmlnaHQgYnJhbmQgaXM6
CisKKyAgICAgICAgYGBgCisgICAgICAgIG1vdiBsb2M5LCBhcmcxCisgICAgICAgIHJlc29sdmVf
c2NvcGUgbG9jMTAsICIjbSIKKyAgICAgICAgZ2V0X2Zyb21fc2NvcGUgbG9jMTEsIGxvYzEwLCAi
QHByaXZhdGVCcmFuZCIKKyAgICAgICAgY2hlY2tfcHJpdmF0ZV9icmFuZCBsb2M5LCBsb2MxMQor
ICAgICAgICBnZXRfZnJvbV9zY29wZSBsb2MxMSwgbG9jMTAsICIjbSIKKyAgICAgICAgLy8gc2V0
dXAgY2FsbCBmcmFtZQorICAgICAgICBjYWxsIGxvYzExLCAuLi4KKyAgICAgICAgLy8gLi4uCisg
ICAgICAgIGBgYAorCisgICAgICAgICMgQnJhbmQgY2hlY2sgbWVjaGFuaXNtCisKKyAgICAgICAg
V2UgYXJlIGludHJvZHVjaW5nIGluIHRoaXMgcGF0Y2ggMiBuZXcgYnl0ZWNvZGVzIHRvIGFsbG93
IGJyYW5kIGNoZWNrCisgICAgICAgIG9mIG9iamVjdHM6IGBvcF9zZXRfYnJhbmRgIGFuZCBgb3Bf
Y2hlY2tfYnJhbmRgLgorICAgICAgICBgb3Bfc2V0X2JyYW5kYCBzZXRzIGEgbmV3IGJyYW5kIGlu
IGFuIG9iamVjdCwgc28gd2UgY2FuIHBlcmZvcm0gdGhlIGJyYW5kCisgICAgICAgIGNoZWNrIGxh
dGVyIHdoZW4gYWNjZXNzaW5nIHByaXZhdGUgbWV0aG9kcy4gVGhpcyBvcGVyYXRpb25zIHRocm93
cyB3aGVuCisgICAgICAgIHRyeWluZyB0byBhZGQgdGhlIHNhbWUgYnJhbmQgdHdpY2UgaW4gYW4g
T2JqZWN0LgorICAgICAgICBgb3BfY2hlY2tfYnJhbmRgIGNoZWNrcyBpZiB0aGUgZ2l2ZW4gb2Jq
ZWN0IGNvbnRhaW5zIHRoZSBicmFuZCB3ZSBhcmUKKyAgICAgICAgbG9va2luZyBmb3IuIEl0IHRy
YXZlcnNlcyB0aGUgYnJhbmQgY2hhaW4gdG8gdmVyaWZ5IGlmIHRoZSBicmFuZCBpcworICAgICAg
ICBwcmVzZW50LCBhbmQgdGhyb3dzIGBUeXBlRXJyb3JgIG90aGVyd2lzZS4KKworICAgICAgICBX
ZSBhcmUgYWxzbyBpbnRyb2R1Y2luZyBhIHN1YmNsYXNzIGZvciBTdHJ1Y3R1cmUgY2FsbGVkIEJy
YW5kZWRTdHJ1Y3R1cmUuCisgICAgICAgIEl0IGlzIHVzZWQgdG8gc3RvcmUgYnJhbmRzIGFuZCB0
byBhbGxvdyBicmFuZCBjaGVjayBtZWNoYW5pc20uIEJyYW5kZWRTdHJ1Y3R1cmUKKyAgICAgICAg
c3RvcmVzIGEgYnJhbmQgYW5kIGEgcGFyZW50IHBvaW50ZXIgdG8gYW5vdGhlciBCcmFuZGVkU3Ry
dWN0dXJlIHRoYXQgYWxsb3cKKyAgICAgICAgdXMgdHJhdmVyc2UgdGhlIGJyYW5kIGNoYWluLiBX
aXRoIGBCcmFuZGVkU3RydWN0dXJlYCwgd2UgY2FuIHRoZW4KKyAgICAgICAgaW5mZXIgdGhhdCBh
IGdpdmVuIG9iamVjdCBoYXMgdGhlIGJyYW5kIHdlIGFyZSBsb29raW5nIGZvciBqdXN0CisgICAg
ICAgIGNoZWNraW5nIGl0cyBzdHJ1Y3R1cmVJZC4gVGhpcyBpcyB2ZXJ5IGdvb2Qgb3B0aW1pemF0
aW9uLCBzaW5jZSB3ZSBjYW4KKyAgICAgICAgcmVkdWNlIG1vc3Qgb2YgYnJhbmQgY2hlY2tzIHRv
IHN0cnVjdHVyZSBjaGVja3MuCisKKyAgICAgICAgV2UgY3JlYXRlZCBhIG5ldyBraW5kIG9mIHRy
YW5zaXRpb24gY2FsbGVkIGBTZXRCcmFuZGAgdGhhdCBoYXBwZW5zIHdoZW4KKyAgICAgICAgYG9w
X3NldF9icmFuZGAgaXMgZXhlY3V0ZWQuIFRoaXMgYWxsb3cgdXMgdG8gY2FjaGUgc3VjaCBraW5k
IG9mCisgICAgICAgIHRyYXNpdGlvbnMgb24gdHJhc2l0aW9uIHRhYmxlIHVzaW5nIHRoZSBrZXkg
YDxicmFuZC0+dWlkLCAwLAorICAgICAgICBUcmFuc2l0aW9uS2luZDo6U2V0QnJhbmQ+YC4gRHVy
aW5nIHRoaXMgdHJhbnNpdGlvbiwgd2UgdGFrZSBwcmV2aW91cworICAgICAgICBzdHJ1Y3R1cmUg
YW5kIGFwcGx5IG9uZSBvZiB0aGUgZm9sbG93aW5nIHJ1bGVzOgorCisgICAgICAgICAgICAxLiBJ
ZiBpdOKAmXMgYSBCcmFuZGVkU3RydWN0dXJlLCB3ZSB0aGVuIHNldCBpdCB0byBgbV9wYXJlbnRC
cmFuZGAsCisgICAgICAgICAgICB0byBhbGxvdyBwcm9wZXIgYnJhbmQgY2hhaW4gY2hlY2suCisg
ICAgICAgIAorICAgICAgICAgICAgMi4gSWYgaXTigJlzIG5vdCBhIEJyYW5kZWRTdHJ1Y3R1cmUs
IHdlIHNldCBgbV9wYXJlbnRCcmFuZGAgdG8gbnVsbHB0ciwKKyAgICAgICAgICAgIG1lYW5pbmcg
dGhhdCB0aGlzIGlzIHRoZSBmaXJzdCBicmFuZCBiZWluZyBhZGRlZCB0byB0aGUgb2JqZWN0Cisg
ICAgICAgICAgICB3aXRoIHRoaXMgc3RydWN0dXJlLgorICAgICAgICAKKyAgICAgICAgRm9yIG5v
dywgd2UgYXJlIHVzaW5nIHRoZSBmbGFnIGBpc0JyYW5kZWRTdHJ1Y3R1cmVgIHRvIGlkZW50aWZ5
IHRoYXQgYQorICAgICAgICBnaXZlbiBTdHJ1Y3R1cmUgaXMgYSBCcmFuZGVkU3RydWN0dXJlLiBU
aGlzIGlzIGRvbmUgdG8gYXZvaWQgY2hhbmdlcworICAgICAgICBvbiBwbGFjZXMgd2hlcmUgd2Ug
YXJlIGNoZWNraW5nIGZvciBgdm0uc3RydWN0dXJlU3RydWN0dXJlKClgLgorICAgICAgICBIb3dl
dmVyLCBpZiB3ZSBldmVyIG5lZWQgc3BhY2Ugb24gU3RydWN0dXJlLCB0aGlzIGZsYWcgaXMgYSBn
b29kCisgICAgICAgIGNhbmRpZGF0ZSB0byBiZSBkZWxldGVkIGFuZCB3ZSBjYW4gbW92ZSB0byBh
IHNvbHV0aW9uIHRoYXQgdXNlcworICAgICAgICBgdm0uYnJhbmRlZFN0cnVjdHVyZVN0cnVjdHVy
ZSgpYDsKKworICAgICAgICAgIyBKSVQgU3VwcG9ydAorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxz
byBpbmNsdWRlcyBpbml0aWFsIEpJVCBzdXBwb3J0IGZvciBgc2V0X3ByaXZhdGVfYnJhbmRgCisg
ICAgICAgIGFuZCBgY2hlY2tfcHJpdmF0ZV9icmFuZGAuIE9uIEJhc2VsaW5lIEpJVCwgd2UgYXJl
IHVzaW5nCisgICAgICAgIGBKSVRQcmF2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3JgIHRvIHN1cHBv
cnQgSUMgZm9yIGJvdGggb3BlcmFuZHMuCisgICAgICAgIE9uIERGR0J5dGVDb2RlUGFyc2VyIHdl
IGFyZSB0cnlpbmcgdG8gaW5saW5lIGJyYW5kIGFjY2VzcyB3aGVuZXZlcgorICAgICAgICBwb3Nz
aWJsZSwgYW5kIGZhbGxiYWNraW5nIHRvIGBTZXRQcml2YXRlQnJhbmRgIGFuZAorICAgICAgICBg
Q2hlY2tQcml2YXRlQnJhbmRgIG90aGVyd2lzZS4gVGhvc2Ugbm9kZXMgYXJlIG5vdCBiZWluZyBv
cHRpbWl6ZWQgYXQKKyAgICAgICAgdGhlaXIgZnVsbCBwb3RlbnRpYWwsIGJ1dCB0aGUgY29kZSBn
ZW5lcmF0ZWQgYnkgdGhlbSBpcyBhbHNvIHJlbHlpbmcgb24gCisgICAgICAgIGBKSVRQcml2YXRl
QnJhbmRBY2Nlc3NHZW5lcmF0b3JgIHRvIGhhdmUgSUMgc3VwcG9ydCBmb3IgYm90aCBERkcgYW5k
CisgICAgICAgIEZUTC4gRHVyaW5nIERGRyBwYXJzaW5nLCB3ZSB0cnkgcmVkdWNlIHRob3NlIGFj
Y2VzcyAgdG8gYENoZWNrQ29uc3RhbnRgCisgICAgICAgIGFuZCBgQ2hlY2tTdHJ1Y3R1cmVgICh3
aXRoIGBQdXRTdHJ1Y3R1cmVgIGZvciBgc2V0X3ByaXZhdGVfYnJhbmRgIGNhc2VzKQorICAgICAg
ICBiYXNlZCBvbiBhdmFpbGFibGUgcHJvZmlsZWQgZGF0YS4gVGhpcyBpcyBtZWFudCB0byBtYWtl
IGJyYW5kIGNoZWNrcworICAgICAgICBhbG1vc3QgZnJlZSBvbiBERkcvRlRMIHRpZXJzIHdoZW4g
d2UgaGF2ZSBhIHNpbmdsZSBldmFsdWF0aW9uIG9mIGEKKyAgICAgICAgY2xhc3MsIHNpbmNlIHRo
ZSBgQ2hlY2tDb25zdGFudGAgY2FuIGJlIGVsaW1pbmF0ZWQgYnkgdGhlIGNvbnN0YW50LWZvbGRl
ZAorICAgICAgICBzY29wZSBsb2FkLCBhbmQgdGhlIGBDaGVja1N0cnVjdHVyZWAgaXMgdmVyeSBs
aWtlbHkgdG8gYmUgcmVkdW5kYW50CisgICAgICAgIHRvIGFueSBvdGhlciBgQ2hlY2tTdHJ1Y3R1
cmVgIHRoYXQgY2FuIGJlIHBlcmZvcm1lZCBvbiByZWNlaXZlcgorICAgICAgICB3aGVuIHdlIGhh
dmUgYSBmaW5pdGUgc3RydWN0dXJlIHNldC4KKyAgICAgICAgRm9yIGluc3RhbmNlLCB3aGVuIHdl
IGhhdmUgYSBicmFuZCBjaGVjayBvbiBhIHBhdGgtb2Ytbm8tcmV0dXJuIHRvCisgICAgICAgIGEg
YEdldEJ5T2Zmc2V0YCBzZXF1ZW5jZSBvbiB0aGUgc2FtZSByZWNlaXZlciwgdGhlIGBDaGVja1N0
cnVjdHVyZWAKKyAgICAgICAgZm9yIHRoZSBicmFuZCBjaGVjayB3aWxsIGVuYWJsZSBDU0Ugb2Yg
dGhlIGBDaGVja1N0cnVjdHVyZWAgdGhhdAorICAgICAgICB3b3VsZCBoYXBwZW4gZm9yIHRoYXQg
YEdldEJ5T2Zmc2V0YC4gU3VjaCBkZXNpZ24gaXMgcG9zc2libGUgYmVjYXVzZSBicmFuZAorICAg
ICAgICBjaGVja3Mgc3VwcG9ydHMgcG9seW1vcnBoaWMgYWNjZXNzIGNsb3NlIHRvIHdoYXQgd2Ug
aGF2ZSBmb3IKKyAgICAgICAgYEdldEJ5T2Zmc2V0YCBzZXF1ZW5jZXMuCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGJ1aWx0aW5zL0J1
aWx0aW5FeGVjdXRhYmxlcy5jcHA6CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVjdXRhYmxlczo6
Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFi
bGVzOjpjcmVhdGVFeGVjdXRhYmxlKToKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluRXhlY3V0
YWJsZXMuaDoKKworICAgICAgICBXZSBhcmUgYWRkaW5nIGEgbmV3IHBhcmFtZXRlciBgUHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnRgIHRvIHByb3BhZ2F0ZQorICAgICAgICB3aGVuIGEgZGVmYXVsdCBj
b25zdHJ1Y3RvciBuZWVkcyB0byBlbWl0IGNvZGUgdG8gc2V0dXAgcHJpdmF0ZSBicmFuZAorICAg
ICAgICBvbiBpbnN0YW5jZXMuCisKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluTmFtZXMuaDoK
KworICAgICAgICBBZGRpbmcgYEBwcml2YXRlQnJhbmRgIHRoYXQgIHdlIHVzZSB0byBzdG9yZSBw
cml2YXRlIGJyYW5kIG9uCisgICAgICAgIGNsYXNzJ3Mgc2NvcGUuCisKKyAgICAgICAgKiBieXRl
Y29kZS9BY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y3JlYXRlQ2hl
Y2tQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGVTZXRQcml2
YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpyZXF1aXJlc0lkZW50aWZpZXJO
YW1lTWF0Y2ggY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpyZXF1aXJlc0ludDMy
UHJvcGVydHlDaGVjayBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6Om5lZWRzU2Ny
YXRjaEZQUiBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmZvckVhY2hEZXBlbmRl
bnRDZWxsIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6ZG9lc0NhbGxzIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y2FuUmVwbGFjZSBjb25zdCk6CisgICAgICAg
IChKU0M6OkFjY2Vzc0Nhc2U6OmR1bXAgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNl
OjpnZW5lcmF0ZVdpdGhHdWFyZCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRl
SW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oOgorICAgICAgICAoSlNDOjpB
Y2Nlc3NDYXNlOjpzdHJ1Y3R1cmUgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpu
ZXdTdHJ1Y3R1cmUgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHA6CisgICAgICAgIChKU0M6OmNv
bXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVm
c0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9DaGVja1ByaXZhdGVC
cmFuZFN0YXR1cy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVCcmFuZFN0
YXR1czo6YXBwZW5kVmFyaWFudCk6CisgICAgICAgIChKU0M6OkNoZWNrUHJpdmF0ZUJyYW5kU3Rh
dHVzOjpjb21wdXRlRm9yQmFzZWxpbmUpOgorICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVCcmFu
ZFN0YXR1czo6Q2hlY2tQcml2YXRlQnJhbmRTdGF0dXMpOgorICAgICAgICAoSlNDOjpDaGVja1By
aXZhdGVCcmFuZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJh
Y2spOgorICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6Y29tcHV0ZUZvcik6
CisgICAgICAgIChKU0M6OkNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOjpzbG93VmVyc2lvbiBjb25z
dCk6CisgICAgICAgIChKU0M6OkNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOjptZXJnZSk6CisgICAg
ICAgIChKU0M6OkNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOjpmaWx0ZXIpOgorICAgICAgICAoSlND
OjpDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6c2luZ2xlSWRlbnRpZmllciBjb25zdCk6CisgICAg
ICAgIChKU0M6OkNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAg
ICAgIChKU0M6OkNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOjptYXJrSWZDaGVhcCk6CisgICAgICAg
IChKU0M6OkNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6
OkNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29k
ZS9DaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5oOiBBZGRlZC4KKyAgICAgICAgKiBieXRlY29kZS9D
aGVja1ByaXZhdGVCcmFuZFZhcmlhbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q2hlY2tQ
cml2YXRlQnJhbmRWYXJpYW50OjpDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQpOgorICAgICAgICAo
SlNDOjpDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQ6On5DaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQp
OgorICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQ6OmF0dGVtcHRUb01lcmdl
KToKKyAgICAgICAgKEpTQzo6Q2hlY2tQcml2YXRlQnJhbmRWYXJpYW50OjptYXJrSWZDaGVhcCk6
CisgICAgICAgIChKU0M6OkNoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudDo6ZmluYWxpemUpOgorICAg
ICAgICAoSlNDOjpDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQ6OnZpc2l0QWdncmVnYXRlKToKKyAg
ICAgICAgKEpTQzo6Q2hlY2tQcml2YXRlQnJhbmRWYXJpYW50OjpkdW1wIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6Q2hlY2tQcml2YXRlQnJhbmRWYXJpYW50OjpkdW1wSW5Db250ZXh0IGNvbnN0KToK
KyAgICAgICAgKiBieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQuaDogQWRkZWQuCisg
ICAgICAgIChKU0M6OkNoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudDo6c3RydWN0dXJlU2V0IGNvbnN0
KToKKyAgICAgICAgKEpTQzo6Q2hlY2tQcml2YXRlQnJhbmRWYXJpYW50OjpzdHJ1Y3R1cmVTZXQp
OgorICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQ6OmlkZW50aWZpZXIgY29u
c3QpOgorICAgICAgICAoSlNDOjpDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQ6Om92ZXJsYXBzKToK
KyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5hbGl6ZUxM
SW50SW5saW5lQ2FjaGVzKToKKyAgICAgICAgKiBieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oOgor
ICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6RXhlY3V0YWJsZUluZm8pOgorICAgICAgICAo
SlNDOjpFeGVjdXRhYmxlSW5mbzo6cHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgY29uc3QpOgorICAg
ICAgICAqIGJ5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6UG9s
eW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUpOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFs
KToKKyAgICAgICAgKiBieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcDoKKyAgICAgICAgKEpT
Qzo6UmVjb3JkZWRTdGF0dXNlczo6b3BlcmF0b3I9KToKKyAgICAgICAgKEpTQzo6UmVjb3JkZWRT
dGF0dXNlczo6YWRkQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMpOgorICAgICAgICAoSlNDOjpSZWNv
cmRlZFN0YXR1c2VzOjphZGRTZXRQcml2YXRlQnJhbmRTdGF0dXMpOgorICAgICAgICAoSlNDOjpS
ZWNvcmRlZFN0YXR1c2VzOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChKU0M6OlJlY29yZGVk
U3RhdHVzZXM6Om1hcmtJZkNoZWFwKToKKyAgICAgICAgKiBieXRlY29kZS9SZWNvcmRlZFN0YXR1
c2VzLmg6CisgICAgICAgIChKU0M6OlJlY29yZGVkU3RhdHVzZXM6OmZvckVhY2hWZWN0b3IpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1NldFByaXZhdGVCcmFuZFN0YXR1cy5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpTZXRQcml2YXRlQnJhbmRTdGF0dXM6OmFwcGVuZFZhcmlhbnQpOgorICAgICAg
ICAoSlNDOjpTZXRQcml2YXRlQnJhbmRTdGF0dXM6OmNvbXB1dGVGb3JCYXNlbGluZSk6CisgICAg
ICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFN0YXR1czo6U2V0UHJpdmF0ZUJyYW5kU3RhdHVzKToK
KyAgICAgICAgKEpTQzo6U2V0UHJpdmF0ZUJyYW5kU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9X
aXRob3V0RXhpdFNpdGVGZWVkYmFjayk6CisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFN0
YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFN0YXR1czo6
c2xvd1ZlcnNpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpTZXRQcml2YXRlQnJhbmRTdGF0dXM6
Om1lcmdlKToKKyAgICAgICAgKEpTQzo6U2V0UHJpdmF0ZUJyYW5kU3RhdHVzOjpmaWx0ZXIpOgor
ICAgICAgICAoSlNDOjpTZXRQcml2YXRlQnJhbmRTdGF0dXM6OnNpbmdsZUlkZW50aWZpZXIgY29u
c3QpOgorICAgICAgICAoSlNDOjpTZXRQcml2YXRlQnJhbmRTdGF0dXM6OnZpc2l0QWdncmVnYXRl
KToKKyAgICAgICAgKEpTQzo6U2V0UHJpdmF0ZUJyYW5kU3RhdHVzOjptYXJrSWZDaGVhcCk6Cisg
ICAgICAgIChKU0M6OlNldFByaXZhdGVCcmFuZFN0YXR1czo6ZmluYWxpemUpOgorICAgICAgICAo
SlNDOjpTZXRQcml2YXRlQnJhbmRTdGF0dXM6OmR1bXAgY29uc3QpOgorICAgICAgICAqIGJ5dGVj
b2RlL1NldFByaXZhdGVCcmFuZFN0YXR1cy5oOiBBZGRlZC4KKyAgICAgICAgKiBieXRlY29kZS9T
ZXRQcml2YXRlQnJhbmRWYXJpYW50LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlNldFByaXZh
dGVCcmFuZFZhcmlhbnQ6OlNldFByaXZhdGVCcmFuZFZhcmlhbnQpOgorICAgICAgICAoSlNDOjpT
ZXRQcml2YXRlQnJhbmRWYXJpYW50Ojp+U2V0UHJpdmF0ZUJyYW5kVmFyaWFudCk6CisgICAgICAg
IChKU0M6OlNldFByaXZhdGVCcmFuZFZhcmlhbnQ6OmF0dGVtcHRUb01lcmdlKToKKyAgICAgICAg
KEpTQzo6U2V0UHJpdmF0ZUJyYW5kVmFyaWFudDo6bWFya0lmQ2hlYXApOgorICAgICAgICAoSlND
OjpTZXRQcml2YXRlQnJhbmRWYXJpYW50OjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OlNldFBy
aXZhdGVCcmFuZFZhcmlhbnQ6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKEpTQzo6U2V0UHJp
dmF0ZUJyYW5kVmFyaWFudDo6ZHVtcCBjb25zdCk6CisgICAgICAgIChKU0M6OlNldFByaXZhdGVC
cmFuZFZhcmlhbnQ6OmR1bXBJbkNvbnRleHQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1Nl
dFByaXZhdGVCcmFuZFZhcmlhbnQuaDogQWRkZWQuCisgICAgICAgIChKU0M6OlNldFByaXZhdGVC
cmFuZFZhcmlhbnQ6Om9sZFN0cnVjdHVyZSBjb25zdCk6CisgICAgICAgIChKU0M6OlNldFByaXZh
dGVCcmFuZFZhcmlhbnQ6Om5ld1N0cnVjdHVyZSBjb25zdCk6CisgICAgICAgIChKU0M6OlNldFBy
aXZhdGVCcmFuZFZhcmlhbnQ6OmlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpTZXRQ
cml2YXRlQnJhbmRWYXJpYW50OjpvdmVybGFwcyk6CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0
dXJlU3R1YkluZm8uY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6cmVzZXQp
OgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmg6CisgICAgICAgICogYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVC
bG9jazo6VW5saW5rZWRDb2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpwcml2YXRlQnJhbmRS
ZXF1aXJlbWVudCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tH
ZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I6OnBy
aXZhdGVCcmFuZFJlcXVpcmVtZW50IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9Vbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgICogYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IpOgorCisgICAgICAgIFdlIGNoYW5nZWQgQnl0ZWNvZGVHZW5lcmF0b3IgZm9y
IEZ1bmN0aW9uTm9kZSBhbmQgRXZhbE5vZGUgdG8KKyAgICAgICAgcHJvcGFnYXRlIHBhcmVudFNj
b3BlIFZhcmlhYmxlRW52aXJvbm1lbnQuIFRoZXNlIGVudmlyb25tZW50cyBzdG9yZXMKKyAgICAg
ICAgcHJpdmF0ZSBuYW1lIGVudHJpZXMgdGhhdCBhcmUgdmlzaWJsZSBpbnRvIHRoZSBzY29wZSBv
ZiB0aGUKKyAgICAgICAgZnVuY3Rpb24vZXZhbC4KKyAgICAgICAgVGhpcyBpcyByZXF1aXJlZCB0
byBpZGVudGlmeSB0aGUga2luZCBvZiBhY2Nlc3MgYSBwcml2YXRlIG5hbWUgaXMKKyAgICAgICAg
cmVmZXJyaW5nIHRvLCBzaW5jZSBpdCBjYW4gYmUgYSBwcml2YXRlIGZpZWxkIG9yIGEgcHJpdmF0
ZSBtZXRob2QuCisKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Omluc3RhbnRpYXRl
TGV4aWNhbFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
R2V0UHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENy
ZWF0ZVByaXZhdGVCcmFuZCk6CisKKyAgICAgICAgVGhlIHByb2Nlc3MgdG8gY3JlYXRlIGEgcHJp
dmF0ZSBicmFuZCBpcyBhcyBmb2xsb3dzOgorICAgICAgICAgICAgMS4gQ3JlYXRlIGEgUHJpdmF0
ZVN5bWJvbCB1c2luZyBgQGNyZWF0ZVByaXZhdGVTeW1ib2xgLgorICAgICAgICAgICAgMi4gU3Rv
cmUgdGhpcyBzeW1ib2wgaW50byBhIGdpdmVuIHNjb3BlIChpLmUgY2xhc3MgbGV4aWNhbCBzY29w
ZSkKKyAgICAgICAgICAgICAgIG9uIGBAcHJpdmF0ZUJyYW5kYCB2YXJpYWJsZS4KKworICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEluc3RhbGxQcml2YXRlQnJhbmQpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFByaXZhdGVCcmFuZCk6CisKKyAg
ICAgICAgV2UgYWRkZWQgYG1fcHJpdmF0ZU5hbWVzU3RhY2tgIHRvIEJ5dGVjb2RlR2VuZXJhdG9y
IHRvIHJlcHJlc2VudCB0aGUKKyAgICAgICAgc2NvcGUgY2hhaW4gb2YgYXZhaWxhYmxlIHByaXZh
dGUgbmFtZXMgd2hpbGUgZ2VuZXJhdGluZyBieXRlY29kZS4KKworICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdENoZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmlzUHJpdmF0ZU1ldGhvZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjpwdXNoUHJpdmF0ZUFjY2Vzc05hbWVzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OnBvcFByaXZhdGVBY2Nlc3NOYW1lcyk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjpnZXRBdmFpbGFibGVQcml2YXRlQWNjZXNzTmFtZXMpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3Rvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3Q2xhc3NGaWVsZEluaXRpYWxpemVy
RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdEdl
dEJ5VmFsKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnByaXZhdGVCcmFuZFJlcXVp
cmVtZW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRl
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Om1ha2VGdW5jdGlvbik6CisKKyAg
ICAgICAgVGhpcyBjaGFuZ2UgaXMgcmVxdWlyZWQgdG8gcHJvcGVybHkgcHJvcGFnYXRlIFByaXZh
dGVCcmFuZFJlcXVpcmVtZW50CisgICAgICAgIHRvIGFycm93IGZ1bmN0aW9ucyB0aGF0IGNhbiBw
b3RlbnRpYWxseSBjYWxsIGBzdXBlcigpYC4KKworICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjplbWl0RGVjbGFy
ZVByaXZhdGVGaWVsZE5hbWVzKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1dENvbnN0
YW50UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6ZW1pdEdldFByb3BlcnR5
VmFsdWUpOgorCisgICAgICAgIEFkZGluZyBzdXBwb3J0IHRvIHByb3Blcmx5IGFjY2VzcyBwcml2
YXRlIG1ldGhvZC4gU2luY2Ugd2Ugc3RvcmUKKyAgICAgICAgcHJpdmF0ZSBtZXRob2RzIG9uIGNs
YXNzIGxleGljYWwgc2NvcGUsIHdlIG5lZWQgYSBkaWZmZXJlbnQgc2V0IG9mCisgICAgICAgIGlu
c3RydWN0aW9ucyB0byBhY2Nlc3MgYSBwcml2YXRlIG1ldGhvZC4KKworICAgICAgICAoSlNDOjpC
YXNlRG90Tm9kZTo6ZW1pdFB1dFByb3BlcnR5KToKKworICAgICAgICBJbiB0aGUgY2FzZSBvZiB3
ZSB0cnlpbmcgdG8gd3JpdGUgaW4gYSBwcml2YXRlIG1ldGhvZCwgd2UgbmVlZCB0bworICAgICAg
ICB0aHJvdyBhIFR5cGVFcnJvciBhY2NvcmRpbmcgdG8gc3BlY2lmaWNhdGlvbgorICAgICAgICAo
aHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXByaXZhdGUtbWV0aG9kcy8jc2VjLXByaXZhdGVmaWVs
ZHNldCkuCisKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsVmFsdWVOb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdERvdCk6CisgICAgICAgIChKU0M6
OlByZWZpeE5vZGU6OmVtaXREb3QpOgorICAgICAgICAoSlNDOjpDbGFzc0V4cHJOb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcDoKKyAg
ICAgICAgKEpTQzo6RGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9u
KToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhl
Y3V0ZUVmZmVjdHMpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5cGU+OjpmaWx0ZXJJQ1N0YXR1cyk6CisgICAgICAgICogZGZnL0RGR0FyZ3Vt
ZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgor
ICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNh
cGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcnNFeGl0U3Rh
dGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJzRXhpdFN0YXRlKToKKyAgICAgICAg
KiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAg
ICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNl
OjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAqIGRmZy9E
RkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6Omxpbmsp
OgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAoSlNDOjpERkc6OkpJ
VENvbXBpbGVyOjphZGRQcml2YXRlQnJhbmRBY2Nlc3MpOgorICAgICAgICAqIGRmZy9ERkdNYXlF
eGl0LmNwcDoKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6Omhhc0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
OjpjaGVja1ByaXZhdGVCcmFuZFN0YXR1cyk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFz
U2V0UHJpdmF0ZUJyYW5kU3RhdHVzKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzZXRQcml2
YXRlQnJhbmRTdGF0dXMpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAq
IGRmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZl
VG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUNoZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNldFByaXZhdGVCcmFuZCk6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJpZXJJbnNl
cnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2Uu
Y3BwOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpG
VEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQcml2YXRlQnJhbmRBY2Nlc3Mp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2hlY2tQcml2
YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
U2V0UHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6
CisgICAgICAgIChKU0M6OmV2YWwpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnBy
aXZhdGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKEpTQzo6SklUOjpsaW5rKToKKyAgICAg
ICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpKSVRQcml2
YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQcml2YXRlQnJhbmRB
Y2Nlc3NHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVRQcml2
YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKiBqaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6SklUUHJpdmF0ZUJyYW5kQWNjZXNz
R2VuZXJhdG9yOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IpOgorICAgICAgICAoSlND
OjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6Cisg
ICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04pOgorICAgICAgICAoSlNDOjpnZXRQcml2YXRlTmFtZSk6CisgICAgICAg
ICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3Mu
Y3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5kKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAqIGppdC9KSVRQ
cm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3NldF9w
cml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9zZXRfcHJpdmF0
ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jaGVja19wcml2YXRlX2JyYW5k
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9jaGVja19wcml2YXRlX2JyYW5kKToK
KyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OnRyeUNhY2hlQ2hlY2tQ
cml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjpyZXBhdGNoQ2hlY2tQcml2YXRlQnJhbmQpOgor
ICAgICAgICAoSlNDOjp0cnlDYWNoZVNldFByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OnJl
cGF0Y2hTZXRQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjpyZXNldENoZWNrUHJpdmF0ZUJy
YW5kKToKKyAgICAgICAgKEpTQzo6cmVzZXRTZXRQcml2YXRlQnJhbmQpOgorICAgICAgICAqIGpp
dC9SZXBhdGNoLmg6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAg
ICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xM
SW50U2xvd1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAg
ICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTWV0YWRhdGFOb2Rl
OjpGdW5jdGlvbk1ldGFkYXRhTm9kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAg
ICAgIChKU0M6OkJhc2VEb3ROb2RlOjppc1ByaXZhdGVNZW1iZXIgY29uc3QpOgorICAgICAgICAo
SlNDOjpCYXNlRG90Tm9kZTo6aXNQcml2YXRlRmllbGQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VDbGFzcyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJl
ckV4cHJlc3Npb24pOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6
U2NvcGU6OmRlY2xhcmVQcml2YXRlTWV0aG9kKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OmRlY2xh
cmVQcml2YXRlRmllbGQpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2Up
OgorICAgICAgICAoSlNDOjpwYXJzZSk6CisgICAgICAgIChKU0M6OlNjb3BlOjpkZWNsYXJlUHJp
dmF0ZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9QYXJzZXJNb2Rlcy5oOgorICAg
ICAgICAqIHBhcnNlci9TeW50YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNr
ZXI6OmNyZWF0ZURvdEFjY2Vzcyk6CisgICAgICAgICogcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1l
bnQuY3BwOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0
ZU1ldGhvZCk6CisgICAgICAgICogcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaDoKKyAgICAg
ICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5Ojppc1ByaXZhdGVGaWVsZCBjb25zdCk6
CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeTo6aXNQcml2YXRlTWV0aG9k
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5OjpzZXRJc1By
aXZhdGVGaWVsZCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeTo6c2V0
SXNQcml2YXRlTWV0aG9kKToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6aXNNZXRo
b2QgY29uc3QpOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5Ojppc1ByaXZhdGVNZXRo
b2RPckFjZXNzb3IgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50Ojph
ZGRQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xh
cmVQcml2YXRlRmllbGQpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNs
YXJlUHJpdmF0ZU1ldGhvZCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OnBy
aXZhdGVOYW1lRW52aXJvbm1lbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmly
b25tZW50OjpoYXNQcml2YXRlTWV0aG9kT3JBY2Nlc3NvciBjb25zdCk6CisgICAgICAgIChKU0M6
OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmFkZFByaXZhdGVOYW1lc0Zyb20pOgorICAgICAgICAoSlND
OjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OmlzUHJpdmF0ZU5hbWUgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OnNldElzUHJpdmF0ZU5h
bWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJl
UHJpdmF0ZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3Bw
OgorICAgICAgICAoSlNDOjpDYWNoZWRDb2RlQmxvY2tSYXJlRGF0YTo6ZW5jb2RlKToKKyAgICAg
ICAgKEpTQzo6Q2FjaGVkQ29kZUJsb2NrUmFyZURhdGE6OmRlY29kZSBjb25zdCk6CisgICAgICAg
IChKU0M6OkNhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZVJhcmVEYXRhOjplbmNvZGUpOgorICAgICAg
ICAoSlNDOjpDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGVSYXJlRGF0YTo6ZGVjb2RlIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6Q2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlOjpwcml2YXRlQnJhbmRSZXF1
aXJlbWVudCBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZENvZGVCbG9jazo6ZGVyaXZlZENv
bnRleHRUeXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxl
OjplbmNvZGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRDb2RlQmxvY2s6
Om5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBy
dW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRDb2Rl
QmxvY2tJbXBsKToKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtlZENvZGVCbG9jayk6Cisg
ICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tGb3JEaXJlY3RFdmFsKToKKyAg
ICAgICAgKEpTQzo6Q29kZUNhY2hlOjpnZXRVbmxpbmtlZEdsb2JhbEZ1bmN0aW9uRXhlY3V0YWJs
ZSk6CisgICAgICAgICogcnVudGltZS9Db2RlQ2FjaGUuaDoKKyAgICAgICAgKiBydW50aW1lL0Rp
cmVjdEV2YWxFeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6RGlyZWN0RXZhbEV4ZWN1dGFi
bGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkRpcmVjdEV2YWxFeGVjdXRhYmxlOjpEaXJlY3RF
dmFsRXhlY3V0YWJsZSk6CisgICAgICAgICogcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5o
OgorICAgICAgICAqIHJ1bnRpbWUvRXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpF
dmFsRXhlY3V0YWJsZTo6RXZhbEV4ZWN1dGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvRXZhbEV4
ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OmV4ZWN1dGFibGVJbmZv
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OnByaXZhdGVCcmFuZFJlcXVp
cmVtZW50IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwOgor
ICAgICAgICAoSlNDOjpjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcik6CisgICAgICAgICog
cnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6SW5kaXJl
Y3RFdmFsRXhlY3V0YWJsZTo6SW5kaXJlY3RFdmFsRXhlY3V0YWJsZSk6CisgICAgICAgICogcnVu
dGltZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpjaGVja1ByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpzZXRQcml2YXRlQnJhbmQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5j
cHA6CisgICAgICAgIChKU0M6OkpTU2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJU
RFopOgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5oOgorICAgICAgICAqIHJ1bnRpbWUvTW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgor
ICAgICAgICAoSlNDOjpPcHRpb25zOjpyZWNvbXB1dGVEZXBlbmRlbnRPcHRpb25zKToKKyAgICAg
ICAgKiBydW50aW1lL09wdGlvbnNMaXN0Lmg6CisgICAgICAgICogcnVudGltZS9Qcm9ncmFtRXhl
Y3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjptYXRlcmlhbGl6ZVByb3BlcnR5VGFibGUpOgorICAgICAgICAoSlNDOjpC
cmFuZGVkU3RydWN0dXJlOjpCcmFuZGVkU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6QnJhbmRl
ZFN0cnVjdHVyZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6QnJhbmRlZFN0cnVjdHVyZTo6Y2hl
Y2tCcmFuZCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6c2V0QnJhbmRUcmFuc2l0aW9uRnJv
bUV4aXN0aW5nU3RydWN0dXJlSW1wbCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6c2V0QnJh
bmRUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlQ29uY3VycmVudGx5KToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjpzZXRCcmFuZFRyYW5zaXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUv
U3RydWN0dXJlLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Zm9yRWFjaFByb3BlcnR5
Q29uY3VycmVudGx5KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZVRyYW5zaXRpb25UYWJs
ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuY3BwOgorICAgICAgICAoSlNDOjpT
eW1ib2xUYWJsZTo6Y2xvbmVTY29wZVBhcnQpOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFi
bGUuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToK
KyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMjEtMDItMDggIEFsaWNpYSBCb3lhIEdhcmPD
rWEgIDxhYm95YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIENvbnNvbGVNZXNzYWdlOiBEb24ndCBl
bmNvZGUgc3RyaW5nIEpTT05Mb2dWYWx1ZSdzIGFzIEpTT04KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dAppbmRleCA0ZGY4YTI1MGMwYzliZDIyM2U1Njg2YWQ3YzVmNjdmOWEwMTBlNzgw
Li4yYzBmOWVkY2NlMDFiNzk4Zjg3ZGMzNWVjNzMxZTY1YjNkMDZkMDdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01MzgsNiArNTM4LDggQEAgc2V0KEphdmFTY3JpcHRD
b3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBieXRlY29kZS9DYWxsTGlua0luZm8u
aAogICAgIGJ5dGVjb2RlL0NhbGxNb2RlLmgKICAgICBieXRlY29kZS9DYWxsVmFyaWFudC5oCisg
ICAgYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuaAorICAgIGJ5dGVjb2RlL0NoZWNr
UHJpdmF0ZUJyYW5kVmFyaWFudC5oCiAgICAgYnl0ZWNvZGUvQ29kZUJsb2NrLmgKICAgICBieXRl
Y29kZS9Db2RlQmxvY2tIYXNoLmgKICAgICBieXRlY29kZS9Db2RlT3JpZ2luLmgKQEAgLTU3Myw2
ICs1NzUsOCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwog
ICAgIGJ5dGVjb2RlL09wZXJhbmRzLmgKICAgICBieXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5o
CiAgICAgYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmgKKyAgICBieXRlY29kZS9TZXRQcml2YXRlQnJh
bmRTdGF0dXMuaAorICAgIGJ5dGVjb2RlL1NldFByaXZhdGVCcmFuZFZhcmlhbnQuaAogICAgIGJ5
dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKICAgICBieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAogICAg
IGJ5dGVjb2RlL1N1cGVyU2FtcGxlci5oCkBAIC04MjgsNiArODMyLDcgQEAgc2V0KEphdmFTY3Jp
cHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBydW50aW1lL0JpZ1VpbnQ2NEFy
cmF5LmgKICAgICBydW50aW1lL0Jvb2xlYW5PYmplY3QuaAogICAgIHJ1bnRpbWUvQm9vbGVhblBy
b3RvdHlwZS5oCisgICAgcnVudGltZS9CcmFuZGVkU3RydWN0dXJlLmgKICAgICBydW50aW1lL0J1
dHRlcmZseS5oCiAgICAgcnVudGltZS9CdXR0ZXJmbHlJbmxpbmVzLmgKICAgICBydW50aW1lL0J5
dGVjb2RlQ2FjaGVFcnJvci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQ5MjEy
N2ZjZDRmOGQ2YWU4NjQ5N2Q5OGM2ZWMxYTM1N2VhMDMyZDAuLjdhNWZjYjhmNDk1ZTJjMWQwMWRl
MTg5ODgxNWFmMTFjZWMyMjZlOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
MjQyLDEwICsxMjQyLDE1IEBACiAJCTg2MTJFNENEMTUyMzg5RUMwMEM4MzZCRSAvKiBNYXRjaFJl
c3VsdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYx
MkU0Q0IxNTIyOTE4NDAwQzgzNkJFIC8qIE1hdGNoUmVzdWx0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODYxNThBQjMxNTVDOEI0MDAwQjQ1QzlD
IC8qIFByb3BlcnR5TmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODYxNThBQjIxNTVDOEIzRjAwQjQ1QzlDIC8qIFByb3BlcnR5TmFtZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2MTgxNjc3MUZC
NzkyNDIwMEVDQzRFQyAvKiBCaWdJbnRPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MTgxNjc2MUZCNzkyMkYwMEVDQzRFQyAvKiBCaWdJbnRP
YmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk4NjFBRjYwNzI1RDE4QzlEMDAwQjYzRTEgLyogQnJhbmRlZFN0cnVjdHVyZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYxQUY2MDYyNUQxOEM5RDAw
MEI2M0UxIC8qIEJyYW5kZWRTdHJ1Y3R1cmUuaCAqLzsgfTsKIAkJODYyNTUzRDIxNjEzNkUxQTAw
OUYxN0QwIC8qIEpTUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2MjU1M0NGMTYxMzZBQTUwMDlGMTdEMCAvKiBKU1Byb3h5LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODYyODFFRjAyNUI2MTYw
MDAwMzY3MDA0IC8qIENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYyODFFRUYyNUI2MTYwMDAwMzY3MDA0IC8q
IENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudC5oICovOyB9OworCQk4NjI4MUVGNDI1QjYxQUYwMDAz
NjcwMDQgLyogQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MjgxRUYzMjVCNjFBRjAwMDM2NzAwNCAvKiBDaGVj
a1ByaXZhdGVCcmFuZFN0YXR1cy5oICovOyB9OwogCQk4NjNCMjNFMDBGQzYxMTg5MDA3MDNBQTQg
LyogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NjNCMjNERjBGQzYwRTYyMDA3MDNBQTQgLyogTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJODYzRkJDNUEyNUIwOTNCOTAwRjZDOTMwIC8qIFdhc21WYWx1ZUxvY2F0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjNGQkM1ODI1QjA5
M0I5MDBGNkM5MzAgLyogV2FzbVZhbHVlTG9jYXRpb24uaCAqLzsgfTsKIAkJODY1QTMwRjExMzUw
MDdFMTAwQ0RCNDlFIC8qIEpTQ0pTVmFsdWVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjVBMzBGMDEzNTAwN0UxMDBDREI0OUUgLyogSlND
SlNWYWx1ZUlubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk4NjVEQTBDNTI1Qjg5NTc0MDA4NzU3NzIgLyogU2V0UHJpdmF0ZUJyYW5kVmFy
aWFudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY1
REEwQzQyNUI4OTU3NDAwODc1NzcyIC8qIFNldFByaXZhdGVCcmFuZFZhcmlhbnQuaCAqLzsgfTsK
KwkJODY1REEwQzgyNUI4OTYwQzAwODc1NzcyIC8qIFNldFByaXZhdGVCcmFuZFN0YXR1cy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY1REEwQzcyNUI4
OTYwQzAwODc1NzcyIC8qIFNldFByaXZhdGVCcmFuZFN0YXR1cy5oICovOyB9OwogCQk4NjY3MzlE
MjEzQkZERTcxMDAyM0Q4N0MgLyogQmlnSW50ZWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY2NzM5RDAxM0JGREU3MTAwMjNEODdDIC8qIEJpZ0lu
dGVnZXIuaCAqLzsgfTsKIAkJODY2NzM5RDMxM0JGREU3MTAwMjNEODdDIC8qIFVpbnQxNldpdGhG
cmFjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODY2NzM5RDExM0JGREU3MTAwMjNEODdDIC8qIFVpbnQxNldpdGhGcmFjdGlvbi5oICovOyB9Owog
CQk4NjcwNEI0MzEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjQxMTJEQjhBODEw
MEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5oICovOyB9OwpAQCAtNDE0MCw4ICs0MTQ1LDEz
IEBACiAJCTg2MTU4QUIyMTU1QzhCM0YwMEI0NUM5QyAvKiBQcm9wZXJ0eU5hbWUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvcGVydHlOYW1lLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg2MTgxNjc2MUZCNzkyMkYwMEVDQzRFQyAvKiBCaWdJbnRPYmplY3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQmlnSW50T2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg2MTgxNjc4MUZCNzkzMTMwMEVDQzRFQyAvKiBCaWdJbnRPYmplY3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQmlnSW50T2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJODYxQUY2MDYyNUQxOEM5RDAwMEI2M0UxIC8qIEJyYW5kZWRTdHJ1Y3R1cmUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQnJhbmRlZFN0cnVjdHVyZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4NjI1NTNDRTE2MTM2QUE1MDA5RjE3RDAgLyogSlNQcm94eS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Byb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODYyNTUzQ0YxNjEzNkFBNTAwOUYxN0QwIC8qIEpTUHJveHkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk4NjI4MUVFRjI1QjYxNjAwMDAzNjcwMDQgLyogQ2hlY2tQcml2YXRlQnJhbmRW
YXJpYW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NjI4MUVGMTI1QjYxNjVFMDAzNjcwMDQgLyogQ2hl
Y2tQcml2YXRlQnJhbmRWYXJpYW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENoZWNrUHJpdmF0
ZUJyYW5kVmFyaWFudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2MjgxRUYz
MjVCNjFBRjAwMDM2NzAwNCAvKiBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4NjI4MUVGNTI1QjYxQjA2MDAzNjcwMDQgLyogQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjNCMjNERjBGQzYwRTYyMDA3MDNBQTQgLyogTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjND
NkQ5ODE1MjExMTEyMDA1ODVFNEUgLyogWWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gWWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwOyBw
YXRoID0geWFyci9ZYXJyQ2Fub25pY2FsaXplVUNTMi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg2M0M2RDk5MTUyMTExMTIwMDU4NUU0RSAvKiBZYXJyQ2Fub25pY2FsaXplLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFlhcnJDYW5vbmljYWxpemUuaDsgcGF0
aCA9IHlhcnIvWWFyckNhbm9uaWNhbGl6ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNDE1Miw2ICs0MTYyLDExIEBACiAJCTg2NDA5MjNCMTU2RUVEM0IwMDU2NkNDMiAvKiBBUk02
NFJlZ2lzdGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUk02NFJlZ2lz
dGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjQwOTIzQzE1NkVFRDNCMDA1
NjZDQjIgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNYWNyb0Fzc2VtYmxlckFSTTY0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTg2NUEzMEYwMTM1MDA3RTEwMENEQjQ5RSAvKiBKU0NKU1ZhbHVlSW5saW5lcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NKU1ZhbHVlSW5saW5lcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk4NjVEQTBDNDI1Qjg5NTc0MDA4NzU3NzIgLyogU2V0UHJp
dmF0ZUJyYW5kVmFyaWFudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXRQcml2YXRlQnJhbmRWYXJpYW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2NURBMEM2MjVCODk1OUUwMDg3NTc3
MiAvKiBTZXRQcml2YXRlQnJhbmRWYXJpYW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNldFBy
aXZhdGVCcmFuZFZhcmlhbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NjVE
QTBDNzI1Qjg5NjBDMDA4NzU3NzIgLyogU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNldFByaXZhdGVCcmFuZFN0YXR1cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4NjVEQTBDOTI1Qjg5NjJBMDA4NzU3NzIgLyogU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNldFByaXZhdGVCcmFuZFN0YXR1cy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2NjQ5NjdBMjVEMUREMTIwMDUxNkIzNiAvKiBCcmFuZGVk
U3RydWN0dXJlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJyYW5kZWRTdHJ1Y3R1cmUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjY3MzlEMDEzQkZERTcxMDAyM0Q4N0MgLyog
QmlnSW50ZWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCaWdJbnRlZ2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2NjczOUQxMTNCRkRFNzEwMDIzRDg3
QyAvKiBVaW50MTZXaXRoRnJhY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVWludDE2V2l0aEZyYWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2
NzA0QjQwMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBZYXJyU3ludGF4Q2hlY2tlci5jcHA7IHBhdGgg
PSB5YXJyL1lhcnJTeW50YXhDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTcxNTYsNiArNzE3MSw4IEBACiAJCQkJNzA0RkQzNTMwNTY5N0U2RDAwM0RCRUQ5IC8qIEJv
b2xlYW5PYmplY3QuaCAqLywKIAkJCQlCQzc5NTIzNDBFMTVFQjU2MDBBODk4QUIgLyogQm9vbGVh
blByb3RvdHlwZS5jcHAgKi8sCiAJCQkJQkM3OTUyMzUwRTE1RUI1NjAwQTg5OEFCIC8qIEJvb2xl
YW5Qcm90b3R5cGUuaCAqLywKKwkJCQk4NjY0OTY3QTI1RDFERDEyMDA1MTZCMzYgLyogQnJhbmRl
ZFN0cnVjdHVyZS5jcHAgKi8sCisJCQkJODYxQUY2MDYyNUQxOEM5RDAwMEI2M0UxIC8qIEJyYW5k
ZWRTdHJ1Y3R1cmUuaCAqLywKIAkJCQk5RTcyOTQwQTE5MEYwNTE0MDAxQTkxQjUgLyogQnVuZGxl
UGF0aC5oICovLAogCQkJCTlFNzI5NDA5MTkwRjAzMDYwMDFBOTFCNSAvKiBCdW5kbGVQYXRoLm1t
ICovLAogCQkJCTBGQjdGMzhCMTVFRDhFMzgwMEYxNjdCMiAvKiBCdXR0ZXJmbHkuaCAqLywKQEAg
LTg0MTYsNiArODQzMywxMCBAQAogCQkJCTYyNzY3MzIyMUI2ODBDMUUwMEZEOUYyRSAvKiBDYWxs
TW9kZS5oICovLAogCQkJCTBGM0I3RTI0MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5j
cHAgKi8sCiAJCQkJMEYzQjdFMjUxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmggKi8s
CisJCQkJODYyODFFRjUyNUI2MUIwNjAwMzY3MDA0IC8qIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVz
LmNwcCAqLywKKwkJCQk4NjI4MUVGMzI1QjYxQUYwMDAzNjcwMDQgLyogQ2hlY2tQcml2YXRlQnJh
bmRTdGF0dXMuaCAqLywKKwkJCQk4NjI4MUVGMTI1QjYxNjVFMDAzNjcwMDQgLyogQ2hlY2tQcml2
YXRlQnJhbmRWYXJpYW50LmNwcCAqLywKKwkJCQk4NjI4MUVFRjI1QjYxNjAwMDAzNjcwMDQgLyog
Q2hlY2tQcml2YXRlQnJhbmRWYXJpYW50LmggKi8sCiAJCQkJOTY5QTA3OTAwRUQxRDNBRTAwRjFG
NjgxIC8qIENvZGVCbG9jay5jcHAgKi8sCiAJCQkJOTY5QTA3OTEwRUQxRDNBRTAwRjFGNjgxIC8q
IENvZGVCbG9jay5oICovLAogCQkJCTBGOEY5NDNEMTY2NzYzMkQwMEQ2MTk3MSAvKiBDb2RlQmxv
Y2tIYXNoLmNwcCAqLywKQEAgLTg1NTAsNiArODU3MSwxMCBAQAogCQkJCTBGNDRBN0FBMjBCRjY4
NUUwMDIyQjE3MSAvKiBSZWNvcmRlZFN0YXR1c2VzLmggKi8sCiAJCQkJMEZGNjBBQkYxNjc0MEY4
MTAwMDI5Nzc5IC8qIFJlZHVjZVdoaXRlc3BhY2UuY3BwICovLAogCQkJCTBGRjYwQUMwMTY3NDBG
ODEwMDAyOTc3OSAvKiBSZWR1Y2VXaGl0ZXNwYWNlLmggKi8sCisJCQkJODY1REEwQzkyNUI4OTYy
QTAwODc1NzcyIC8qIFNldFByaXZhdGVCcmFuZFN0YXR1cy5jcHAgKi8sCisJCQkJODY1REEwQzcy
NUI4OTYwQzAwODc1NzcyIC8qIFNldFByaXZhdGVCcmFuZFN0YXR1cy5oICovLAorCQkJCTg2NURB
MEM2MjVCODk1OUUwMDg3NTc3MiAvKiBTZXRQcml2YXRlQnJhbmRWYXJpYW50LmNwcCAqLywKKwkJ
CQk4NjVEQTBDNDI1Qjg5NTc0MDA4NzU3NzIgLyogU2V0UHJpdmF0ZUJyYW5kVmFyaWFudC5oICov
LAogCQkJCTBGRDgyRTg0MTQxRjNGREEwMDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlwZS5jcHAgKi8s
CiAJCQkJMEZEODJFNEYxNDFEQUVBMTAwMTc5Qzk0IC8qIFNwZWN1bGF0ZWRUeXBlLmggKi8sCiAJ
CQkJMEZCNDM4QTIxOTI3MEIxRDAwRTFGQkM5IC8qIFN0cnVjdHVyZVNldC5jcHAgKi8sCkBAIC05
Mjc2LDYgKzkzMDEsNyBAQAogCQkJCUJDMThDM0VDMEUxNkY1Q0QwMEIzNDQ2MCAvKiBCb29sZWFu
T2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjQ2OTQzOTFGOTc0MzlFMDBDQ0IzRjkgLyog
Qm9vbGVhblByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTk2QjczMTkxQkRBMDY4MDAw
MzMxQjg0IC8qIEJvb2xlYW5Qcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NjFB
RjYwNzI1RDE4QzlEMDAwQjYzRTEgLyogQnJhbmRlZFN0cnVjdHVyZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkVBMDg2MjAxODJCN0EwNDAwRjZEODUxIC8qIEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCURFMjZFOTAzMUNCNUREMDUwMEQyQkU4MiAvKiBCdWlsdGluRXhlY3V0YWJsZUNy
ZWF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDgwMUE1MTg4MEQ2NkUwMDI2QzM5QiAvKiBC
dWlsdGluRXhlY3V0YWJsZXMuaCBpbiBIZWFkZXJzICovLApAQCAtOTM0MSw2ICs5MzY3LDggQEAK
IAkJCQlGRUMxNjAzMjIzMzlFOUY5MDBBMDRDQjggLyogQ2VsbFNpemUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMUMzRERBMUJCQ0UwOUUwMEU1MjNFNCAvKiBDZWxsU3RhdGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUzMzhFMkE3MjM5NkVGRkIwMEM2MUJBRCAvKiBDaGVja3BvaW50T1NSRXhpdFNp
ZGVTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODYyODFFRjQyNUI2MUFGMDAwMzY3MDA0IC8q
IENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NjI4MUVGMDI1
QjYxNjAwMDAzNjcwMDQgLyogQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzZBQUFFNTBFMUY0MjY1MDBBRDg3RDggLyogQ2xhc3NJbmZvLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkUwNTAyNjFBQTkwOTU2MDBEMzNCMzMgLyogQ2xvbmVkQXJndW1lbnRzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ1RTBFMTZGNUNEMDBCMzQ0NjAgLyogQ0xvb3BTdGFj
ay5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDM5Miw2ICsxMDQyMCw4IEBACiAJCQkJQTU0Q0YyRjYx
ODRFQUIyNDAwMjM3RjE5IC8qIFNjcmlwdFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzI5
OURBNjE3RDEyODU4MDA1RjVGRjkgLyogU2V0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE3OTBERDZFMTgyRjQ5OTcwMDU4ODgwNyAvKiBTZXRJdGVyYXRvclByb3RvdHlwZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJODY1REEwQzgyNUI4OTYwQzAwODc1NzcyIC8qIFNldFByaXZhdGVC
cmFuZFN0YXR1cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJODY1REEwQzUyNUI4OTU3NDAwODc1Nzcy
IC8qIFNldFByaXZhdGVCcmFuZFZhcmlhbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5REEy
MTdEMTI4NDgwMDVGNUZGOSAvKiBTZXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RUU5ODQxMUE4ODY1QjcwMDc1NEU5MyAvKiBTZXR1cFZhcmFyZ3NGcmFtZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJREMxN0U4MTgxQzlDOTFEOTAwOEE2QUIzIC8qIFNoYWRvd0NoaWNrZW4uaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IDE3YzM5NzA1ZDI5ZjZm
ODk1MzM2ZDdiZjE3NTY1OGRjNzQ0MWY4OTEuLjcxZjhlYTU3MzkxOGFjMDFmNjE5MWM1NDc4ZjI1
MDZkMjNmMDY5MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4
dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTIxMSw2ICsyMTEs
OCBAQCBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCiBieXRlY29kZS9DYWxsTGlua1N0YXR1cy5j
cHAKIGJ5dGVjb2RlL0NhbGxNb2RlLmNwcAogYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuY3BwCitieXRl
Y29kZS9DaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5jcHAKK2J5dGVjb2RlL0NoZWNrUHJpdmF0ZUJy
YW5kVmFyaWFudC5jcHAKIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHAKIGJ5dGVjb2RlL0NvZGVCbG9j
a0hhc2guY3BwCiBieXRlY29kZS9Db2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwCkBA
IC0yNzEsNiArMjczLDggQEAgYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKIGJ5dGVjb2RlL1B1
dEJ5SWRWYXJpYW50LmNwcAogYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKIGJ5dGVjb2Rl
L1JlZHVjZVdoaXRlc3BhY2UuY3BwCitieXRlY29kZS9TZXRQcml2YXRlQnJhbmRTdGF0dXMuY3Bw
CitieXRlY29kZS9TZXRQcml2YXRlQnJhbmRWYXJpYW50LmNwcAogYnl0ZWNvZGUvU3BlY3VsYXRl
ZFR5cGUuY3BwCiBieXRlY29kZS9TdHJ1Y3R1cmVTZXQuY3BwCiBieXRlY29kZS9TdHJ1Y3R1cmVT
dHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcApAQCAtNzM0LDYgKzczOCw3IEBAIHJ1bnRpbWUvQmln
SW50UHJvdG90eXBlLmNwcAogcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuY3BwCiBydW50aW1l
L0Jvb2xlYW5PYmplY3QuY3BwCiBydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwCitydW50aW1l
L0JyYW5kZWRTdHJ1Y3R1cmUuY3BwCiBydW50aW1lL0J5dGVjb2RlQ2FjaGVFcnJvci5jcHAKIHJ1
bnRpbWUvQ2FsbERhdGEuY3BwCiBydW50aW1lL0NhY2hlUGF5bG9hZC5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKaW5k
ZXggMWEyMTQ5MmE2NTFlMTBlMGQ4NzNmYTRkOWJkZTEyOTE2YWI5YWI0OS4uNjY0MTdjNDEzMjFk
MjQ3OWI1Njg4OGZhYWZhZGRhOWNjZDljM2VjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKQEAgLTU5LDcgKzU5LDcg
QEAgU291cmNlQ29kZSBCdWlsdGluRXhlY3V0YWJsZXM6OmRlZmF1bHRDb25zdHJ1Y3RvclNvdXJj
ZUNvZGUoQ29uc3RydWN0b3JLaW5kIGNvbnMKICAgICByZXR1cm4gU291cmNlQ29kZSgpOwogfQog
Ci1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVE
ZWZhdWx0Q29uc3RydWN0b3IoQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgY29uc3Qg
SWRlbnRpZmllciYgbmFtZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIpCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1
dGFibGVzOjpjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVj
dG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHBy
aXZhdGVCcmFuZFJlcXVpcmVtZW50KQogewogICAgIHN3aXRjaCAoY29uc3RydWN0b3JLaW5kKSB7
CiAgICAgY2FzZSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU6CkBAIC02Nyw3ICs2Nyw3IEBAIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZURlZmF1bHRD
b25zdHJ1Y3RvcihDb25zdHJ1CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29uc3RydWN0b3JL
aW5kOjpCYXNlOgogICAgIGNhc2UgQ29uc3RydWN0b3JLaW5kOjpFeHRlbmRzOgotICAgICAgICBy
ZXR1cm4gY3JlYXRlRXhlY3V0YWJsZShtX3ZtLCBkZWZhdWx0Q29uc3RydWN0b3JTb3VyY2VDb2Rl
KGNvbnN0cnVjdG9yS2luZCksIG5hbWUsIGNvbnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJpbGl0
eTo6Q2FuQ29uc3RydWN0LCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcik7CisgICAgICAgIHJl
dHVybiBjcmVhdGVFeGVjdXRhYmxlKG1fdm0sIGRlZmF1bHRDb25zdHJ1Y3RvclNvdXJjZUNvZGUo
Y29uc3RydWN0b3JLaW5kKSwgbmFtZSwgY29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5
OjpDYW5Db25zdHJ1Y3QsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBwcml2YXRlQnJhbmRS
ZXF1aXJlbWVudCk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVy
biBudWxscHRyOwpAQCAtNzgsNyArNzgsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShjb25zdCBTbwogICAg
IHJldHVybiBjcmVhdGVFeGVjdXRhYmxlKG1fdm0sIGNvZGUsIG5hbWUsIGNvbnN0cnVjdG9yS2lu
ZCwgY29uc3RydWN0QWJpbGl0eSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vKTsKIH0K
IAotVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRl
RXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgY29uc3QgSWRlbnRp
ZmllciYgbmFtZSwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJp
bGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplcikKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGlu
RXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rv
cktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgTmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVp
cmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KQogewogICAgIC8vIEZJWE1FOiBDYW4gd2Ug
anVzdCBtYWtlIE1ldGFEYXRhIGNvbXB1dGF0aW9uIGJlIGNvbnN0ZXhwciBhbmQgaGF2ZSB0aGUg
Y29tcGlsZXIgZG8gdGhpcyBmb3IgdXM/CiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MzI3MgpAQCAtMjUxLDcgKzI1MSw3IEBAIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUoVk0mIHZt
LCBjb25zdCBTCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNy
ZWF0ZSh2bSwgc291cmNlLCAmbWV0YWRhdGEsIGtpbmQsIGNvbnN0cnVjdEFiaWxpdHksIEpTUGFy
c2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgbnVsbHB0ciwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25l
LCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3Ry
dWN0b3IpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFi
bGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBzb3VyY2UsICZtZXRh
ZGF0YSwga2luZCwgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2lj
LCBudWxscHRyLCBXVEY6Om51bGxvcHQsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgbmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBpc0J1aWx0aW5E
ZWZhdWx0Q2xhc3NDb25zdHJ1Y3Rvcik7CiAgICAgcmV0dXJuIGZ1bmN0aW9uRXhlY3V0YWJsZTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5F
eGVjdXRhYmxlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlcy5oCmluZGV4IDQ1MTYzOGU4NzNmNzk2YzhjNGQyNjI5YzdiNWFhZmJmYWViMjRiOTgu
LjQzZTM4Mjc1YjFiOWFhMzYxNjdhMmFlOTFkMzU4Nzg2MDM4MDc4M2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgKQEAgLTU4
LDkgKzU4LDkgQEAgU291cmNlQ29kZSBuYW1lIyNTb3VyY2UoKTsKICN1bmRlZiBFWFBPU0VfQlVJ
TFRJTl9FWEVDVVRBQkxFUwogCiAgICAgc3RhdGljIFNvdXJjZUNvZGUgZGVmYXVsdENvbnN0cnVj
dG9yU291cmNlQ29kZShDb25zdHJ1Y3RvcktpbmQpOwotICAgIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoQ29uc3RydWN0b3JLaW5kLCBjb25zdCBJ
ZGVudGlmaWVyJiBuYW1lLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcik7CisgICAgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZURlZmF1bHRDb25zdHJ1Y3RvcihDb25zdHJ1Y3Rv
cktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
LCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7CiAKLSAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqIGNyZWF0ZUV4ZWN1dGFibGUoVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgY29u
c3QgSWRlbnRpZmllciYsIENvbnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJpbGl0eSwgTmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIpOworICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSogY3JlYXRlRXhlY3V0YWJsZShWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBJZGVu
dGlmaWVyJiwgQ29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBOZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBQcml2YXRlQnJhbmRSZXF1
aXJlbWVudDo6Tm9uZSk7CiAKICAgICB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbGx5KCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRleCA2
NmJiZDM4ODNiYzllNTdlYzViMDNlYjY1MmZhNWVjMzVkYjkwOTAzLi4wNDgwNTA5Y2Y4ZGY5ODEw
MTY5N2YxY2NhNDNkOWQ0MDhiYTZmZTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0J1aWx0aW5OYW1lcy5oCkBAIC0xNzMsNiArMTczLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgbWFjcm8od2ViQXNzZW1ibHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWwpIFwKICAgICBt
YWNybyh3ZWJBc3NlbWJseUluc3RhbnRpYXRlU3RyZWFtaW5nSW50ZXJuYWwpIFwKICAgICBtYWNy
byhpbnN0YW5jZUZpZWxkSW5pdGlhbGl6ZXIpIFwKKyAgICBtYWNybyhwcml2YXRlQnJhbmQpIFwK
ICAgICBtYWNybyhoYXNPd25Qcm9wZXJ0eUZ1bmN0aW9uKSBcCiAgICAgbWFjcm8oY3JlYXRlUHJp
dmF0ZVN5bWJvbCkgXAogICAgIG1hY3JvKGVudHJpZXMpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAppbmRleCA4OWJkMGZhODRjODJhZDg4ZDE4NzBl
N2FlYzcyZjA2YjkzMWE3MmVlLi40MWIxZmM0YjZkNzY2MTQwMjczZWJmMjkzYzBiNTQ0NDcyMjU5
NDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2Fz
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3Bw
CkBAIC0xMzMsNiArMTMzLDE4IEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3ND
YXNlOjpjcmVhdGVEZWxldGUoCiAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNl
PihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIERlbGV0ZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBu
ZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7CiB9CiAKK3N0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNl
PiBBY2Nlc3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVCcmFuZChWTSYgdm0sIEpTQ2VsbCogb3du
ZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
Cit7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2Fz
ZSh2bSwgb3duZXIsIENoZWNrUHJpdmF0ZUJyYW5kLCBpZGVudGlmaWVyLCBpbnZhbGlkT2Zmc2V0
LCBzdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNl
PiBBY2Nlc3NDYXNlOjpjcmVhdGVTZXRQcml2YXRlQnJhbmQoCisgICAgVk0mIHZtLCBKU0NlbGwq
IG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cnVjdHVyZSogb2xkU3Ry
dWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChv
bGRTdHJ1Y3R1cmUgPT0gbmV3U3RydWN0dXJlLT5wcmV2aW91c0lEKCkpOworICAgIHJldHVybiBz
dGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBTZXRQ
cml2YXRlQnJhbmQsIGlkZW50aWZpZXIsIGludmFsaWRPZmZzZXQsIG5ld1N0cnVjdHVyZSwgeyB9
LCB7IH0pKTsKK30KKwogQWNjZXNzQ2FzZTo6fkFjY2Vzc0Nhc2UoKQogewogfQpAQCAtMjkyLDYg
KzMwNCw4IEBAIGJvb2wgQWNjZXNzQ2FzZTo6cmVxdWlyZXNJZGVudGlmaWVyTmFtZU1hdGNoKCkg
Y29uc3QKICAgICBjYXNlIERpcmVjdEFyZ3VtZW50c0xlbmd0aDoKICAgICBjYXNlIFNjb3BlZEFy
Z3VtZW50c0xlbmd0aDoKICAgICBjYXNlIE1vZHVsZU5hbWVzcGFjZUxvYWQ6CisgICAgY2FzZSBD
aGVja1ByaXZhdGVCcmFuZDoKKyAgICBjYXNlIFNldFByaXZhdGVCcmFuZDoKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgY2FzZSBJbnN0YW5jZU9mSGl0OgogICAgIGNhc2UgSW5zdGFuY2VPZk1p
c3M6CkBAIC0zNDUsNiArMzU5LDggQEAgYm9vbCBBY2Nlc3NDYXNlOjpyZXF1aXJlc0ludDMyUHJv
cGVydHlDaGVjaygpIGNvbnN0CiAgICAgY2FzZSBJbnN0YW5jZU9mSGl0OgogICAgIGNhc2UgSW5z
dGFuY2VPZk1pc3M6CiAgICAgY2FzZSBJbnN0YW5jZU9mR2VuZXJpYzoKKyAgICBjYXNlIENoZWNr
UHJpdmF0ZUJyYW5kOgorICAgIGNhc2UgU2V0UHJpdmF0ZUJyYW5kOgogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgY2FzZSBJbmRleGVkSW50MzJMb2FkOgogICAgIGNhc2UgSW5kZXhlZERvdWJs
ZUxvYWQ6CkBAIC0zODcsNiArNDAzLDggQEAgYm9vbCBBY2Nlc3NDYXNlOjpuZWVkc1NjcmF0Y2hG
UFIoKSBjb25zdAogICAgIGNhc2UgSW50cmluc2ljR2V0dGVyOgogICAgIGNhc2UgSW5IaXQ6CiAg
ICAgY2FzZSBJbk1pc3M6CisgICAgY2FzZSBDaGVja1ByaXZhdGVCcmFuZDoKKyAgICBjYXNlIFNl
dFByaXZhdGVCcmFuZDoKICAgICBjYXNlIEFycmF5TGVuZ3RoOgogICAgIGNhc2UgU3RyaW5nTGVu
Z3RoOgogICAgIGNhc2UgRGlyZWN0QXJndW1lbnRzTGVuZ3RoOgpAQCAtNDc0LDYgKzQ5Miw4IEBA
IHZvaWQgQWNjZXNzQ2FzZTo6Zm9yRWFjaERlcGVuZGVudENlbGwoVk0mIHZtLCBjb25zdCBGdW5j
dG9yJiBmdW5jdG9yKSBjb25zdAogICAgIGNhc2UgR2V0R2V0dGVyOgogICAgIGNhc2UgSW5IaXQ6
CiAgICAgY2FzZSBJbk1pc3M6CisgICAgY2FzZSBDaGVja1ByaXZhdGVCcmFuZDoKKyAgICBjYXNl
IFNldFByaXZhdGVCcmFuZDoKICAgICBjYXNlIEFycmF5TGVuZ3RoOgogICAgIGNhc2UgU3RyaW5n
TGVuZ3RoOgogICAgIGNhc2UgRGlyZWN0QXJndW1lbnRzTGVuZ3RoOgpAQCAtNTIzLDYgKzU0Myw4
IEBAIGJvb2wgQWNjZXNzQ2FzZTo6ZG9lc0NhbGxzKFZNJiB2bSwgVmVjdG9yPEpTQ2VsbCo+KiBj
ZWxsc1RvTWFya0lmRG9lc0NhbGxzKSBjb25zCiAgICAgY2FzZSBJbnRyaW5zaWNHZXR0ZXI6CiAg
ICAgY2FzZSBJbkhpdDoKICAgICBjYXNlIEluTWlzczoKKyAgICBjYXNlIENoZWNrUHJpdmF0ZUJy
YW5kOgorICAgIGNhc2UgU2V0UHJpdmF0ZUJyYW5kOgogICAgIGNhc2UgQXJyYXlMZW5ndGg6CiAg
ICAgY2FzZSBTdHJpbmdMZW5ndGg6CiAgICAgY2FzZSBEaXJlY3RBcmd1bWVudHNMZW5ndGg6CkBA
IC02NzQsNiArNjk2LDggQEAgYm9vbCBBY2Nlc3NDYXNlOjpjYW5SZXBsYWNlKGNvbnN0IEFjY2Vz
c0Nhc2UmIG90aGVyKSBjb25zdAogICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JTZXR0ZXI6CiAgICAg
Y2FzZSBJbkhpdDoKICAgICBjYXNlIEluTWlzczoKKyAgICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5k
OgorICAgIGNhc2UgU2V0UHJpdmF0ZUJyYW5kOgogICAgICAgICBpZiAob3RoZXIudHlwZSgpICE9
IHR5cGUoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNzA1LDcgKzcyOSw3IEBA
IHZvaWQgQWNjZXNzQ2FzZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgICAgICBv
dXQucHJpbnQoY29tbWEsICJwcm90b3R5cGUgYWNjZXNzIGNoYWluID0gIik7CiAgICAgICAgIG1f
cG9seVByb3RvQWNjZXNzQ2hhaW4tPmR1bXAoc3RydWN0dXJlKCksIG91dCk7CiAgICAgfSBlbHNl
IHsKLSAgICAgICAgaWYgKG1fdHlwZSA9PSBUcmFuc2l0aW9uIHx8IG1fdHlwZSA9PSBEZWxldGUp
CisgICAgICAgIGlmIChtX3R5cGUgPT0gVHJhbnNpdGlvbiB8fCBtX3R5cGUgPT0gRGVsZXRlIHx8
IG1fdHlwZSA9PSBTZXRQcml2YXRlQnJhbmQpCiAgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEs
ICJzdHJ1Y3R1cmUgPSAiLCBwb2ludGVyRHVtcChzdHJ1Y3R1cmUoKSksICIgLT4gIiwgcG9pbnRl
ckR1bXAobmV3U3RydWN0dXJlKCkpKTsKICAgICAgICAgZWxzZSBpZiAobV9zdHJ1Y3R1cmUpCiAg
ICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsICJzdHJ1Y3R1cmUgPSAiLCBwb2ludGVyRHVtcCht
X3N0cnVjdHVyZS5nZXQoKSkpOwpAQCAtMTMzNiw2ICsxMzYwLDEyIEBAIHZvaWQgQWNjZXNzQ2Fz
ZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAgICAgICAgICAgICBzdGF0ZS5mYWlsQW5kSWdub3JlLmFw
cGVuZChmYWlsQW5kSWdub3JlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIGNhc2Ug
Q2hlY2tQcml2YXRlQnJhbmQ6IHsKKyAgICAgICAgZW1pdERlZmF1bHRHdWFyZCgpOworICAgICAg
ICBzdGF0ZS5zdWNjZWVkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgICAgIAogICAg
IGRlZmF1bHQ6CiAgICAgICAgIGVtaXREZWZhdWx0R3VhcmQoKTsKQEAgLTIwMzgsNiArMjA2OCwx
OSBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUm
IHN0YXRlKQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgY2FzZSBTZXRQcml2YXRlQnJh
bmQ6IHsKKyAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNl
dEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKKyAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZSgpLT50
cmFuc2l0aW9uS2luZCgpID09IFRyYW5zaXRpb25LaW5kOjpTZXRCcmFuZCk7CisKKyAgICAgICAg
dWludDMyX3Qgc3RydWN0dXJlQml0cyA9IGJpdHdpc2VfY2FzdDx1aW50MzJfdD4obmV3U3RydWN0
dXJlKCktPmlkKCkpOworICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKHN0cnVjdHVyZUJpdHMpLAorICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOworCisg
ICAgICAgIHN0YXRlLnN1Y2NlZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGNh
c2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOiB7CiAgICAgICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tMzIoZmFsc2UpLCB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpKTsKICAgICAg
ICAgc3RhdGUuc3VjY2VlZCgpOwpAQCAtMjExMSw2ICsyMTU0LDcgQEAgdm9pZCBBY2Nlc3NDYXNl
OjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICBjYXNlIElu
ZGV4ZWRUeXBlZEFycmF5RmxvYXQzMkxvYWQ6CiAgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUZs
b2F0NjRMb2FkOgogICAgIGNhc2UgSW5kZXhlZFN0cmluZ0xvYWQ6CisgICAgY2FzZSBDaGVja1By
aXZhdGVCcmFuZDoKICAgICAgICAgLy8gVGhlc2UgbmVlZCB0byBiZSBoYW5kbGVkIGJ5IGdlbmVy
YXRlV2l0aEd1YXJkKCksIHNpbmNlIHRoZSBndWFyZCBpcyBwYXJ0IG9mIHRoZQogICAgICAgICAv
LyBhbGdvcml0aG0uIFdlIGNhbiBiZSBzdXJlIHRoYXQgbm9ib2R5IHdpbGwgY2FsbCBnZW5lcmF0
ZSgpIGRpcmVjdGx5IGZvciB0aGVzZSBzaW5jZSB0aGV5CiAgICAgICAgIC8vIGFyZSBub3QgZ3Vh
cmRlZCBieSBzdHJ1Y3R1cmUgY2hlY2tzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9BY2Nlc3NDYXNlLmgKaW5kZXggMTA4ZmVmM2IzMzAxMmNmNGU3ZGIyN2UyMGE2MjYwMjA3ODVk
MjE1OS4uMzZlOTQ0N2U5ZTM2MmNkZDEwZTljNDJmNzUwNmYyMTJjYTc4ZjY3MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCkBAIC0xMDgsNiArMTA4LDgg
QEAgcHVibGljOgogICAgICAgICBJbnN0YW5jZU9mSGl0LAogICAgICAgICBJbnN0YW5jZU9mTWlz
cywKICAgICAgICAgSW5zdGFuY2VPZkdlbmVyaWMsCisgICAgICAgIENoZWNrUHJpdmF0ZUJyYW5k
LAorICAgICAgICBTZXRQcml2YXRlQnJhbmQsCiAgICAgICAgIEluZGV4ZWRJbnQzMkxvYWQsCiAg
ICAgICAgIEluZGV4ZWREb3VibGVMb2FkLAogICAgICAgICBJbmRleGVkQ29udGlndW91c0xvYWQs
CkBAIC0xNTMsNiArMTU1LDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPiBjcmVhdGVEZWxldGUoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJ
ZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCiAgICAg
ICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKTsKKworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8QWNjZXNzQ2FzZT4gY3JlYXRlQ2hlY2tQcml2YXRlQnJhbmQoVk0mLCBKU0NlbGwqIG93bmVy
LCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZVNldFByaXZhdGVCcmFuZChWTSYsIEpTQ2VsbCogb3du
ZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1
cmUqIG5ld1N0cnVjdHVyZSk7CiAgICAgCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiBmcm9tU3RydWN0dXJlU3R1YkluZm8oVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFi
bGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogCkBAIC0xNjIsNyArMTY3LDcgQEAg
cHVibGljOgogCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUoKSBjb25zdAogICAgIHsKLSAgICAg
ICAgaWYgKG1fdHlwZSA9PSBUcmFuc2l0aW9uIHx8IG1fdHlwZSA9PSBEZWxldGUpCisgICAgICAg
IGlmIChtX3R5cGUgPT0gVHJhbnNpdGlvbiB8fCBtX3R5cGUgPT0gRGVsZXRlIHx8IG1fdHlwZSA9
PSBTZXRQcml2YXRlQnJhbmQpCiAgICAgICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUtPnByZXZp
b3VzSUQoKTsKICAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlLmdldCgpOwogICAgIH0KQEAgLTE3
MCw3ICsxNzUsNyBAQCBwdWJsaWM6CiAKICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSgpIGNv
bnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IFRyYW5zaXRpb24gfHwgbV90eXBl
ID09IERlbGV0ZSk7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHJhbnNpdGlvbiB8fCBtX3R5
cGUgPT0gRGVsZXRlIHx8IG1fdHlwZSA9PSBTZXRQcml2YXRlQnJhbmQpOwogICAgICAgICByZXR1
cm4gbV9zdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCAxNTYxOWQzYTQ4YTE0MmI3MzEwYmJmZjMy
ZGE3ZjM3ZDM2MDRhMTQxLi42NTRmNTYzZjhiNGY0NWFmMWE1YWVjMWNmNThjNjhhOWMxMWY5NDkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIK
QEAgLTU4OCw2ICs1ODgsMjggQEAgb3AgOnB1dF9wcml2YXRlX25hbWUsCiAgICAgICAgIG5ld1N0
cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJRCwKICAgICB9CiAKK29wIDpzZXRfcHJpdmF0ZV9icmFuZCwK
KyAgICBhcmdzOiB7CisgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgYnJh
bmQ6IFZpcnR1YWxSZWdpc3RlciwKKyAgICB9LAorICAgIG1ldGFkYXRhOiB7CisgICAgICAgIG9s
ZFN0cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJRCwKKyAgICAgICAgbmV3U3RydWN0dXJlSUQ6IFN0cnVj
dHVyZUlELAorICAgICAgICBicmFuZDogV3JpdGVCYXJyaWVyW0pTQ2VsbF0sCisgICAgfQorCitv
cCA6Y2hlY2tfcHJpdmF0ZV9icmFuZCwKKyAgICBhcmdzOiB7CisgICAgICAgIGJhc2U6IFZpcnR1
YWxSZWdpc3RlciwKKyAgICAgICAgYnJhbmQ6IFZpcnR1YWxSZWdpc3RlciwKKyAgICB9LAorICAg
IG1ldGFkYXRhOiB7CisgICAgICAgIHN0cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJRCwKKyAgICAgICAg
YnJhbmQ6IFdyaXRlQmFycmllcltKU0NlbGxdLAorICAgIH0KKyAgICAKKwogb3AgOnB1dF9ieV92
YWwsCiAgICAgYXJnczogewogICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAppbmRleCBi
MjY5OGQ4NzhlNGE5MTVlMzg0NDQxZGViNDExNGQ0OWQ0NjBhMjQ0Li40MjVhZjI1YjgwNDkyOWY0
NjFmMGJiMTM4YzY1YThjZjU0YmI1MjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKQEAgLTIyOSw2ICsyMjksOCBAQCB2b2lkIGNv
bXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0
ZXIsIGNvbnN0IEluc3RydQogICAgIFVTRVMoT3BHZXRCeVZhbCwgYmFzZSwgcHJvcGVydHkpCiAg
ICAgVVNFUyhPcEdldFByaXZhdGVOYW1lLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wUHV0
UHJpdmF0ZU5hbWUsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSkKKyAgICBVU0VTKE9wU2V0UHJpdmF0
ZUJyYW5kLCBiYXNlLCBicmFuZCkKKyAgICBVU0VTKE9wQ2hlY2tQcml2YXRlQnJhbmQsIGJhc2Us
IGJyYW5kKQogICAgIFVTRVMoT3BJbkJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9w
T3ZlcnJpZGVzSGFzSW5zdGFuY2UsIGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZVZhbHVlKQogICAg
IFVTRVMoT3BJbnN0YW5jZW9mLCB2YWx1ZSwgcHJvdG90eXBlKQpAQCAtMzk3LDYgKzM5OSw4IEBA
IHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJzLCBj
b25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1CiAgICAgY2FzZSBvcF9wdXRfYnlfdmFsOgogICAgIGNh
c2Ugb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6CiAgICAgY2FzZSBvcF9wdXRfcHJpdmF0ZV9uYW1lOgor
ICAgIGNhc2Ugb3Bfc2V0X3ByaXZhdGVfYnJhbmQ6CisgICAgY2FzZSBvcF9jaGVja19wcml2YXRl
X2JyYW5kOgogICAgIGNhc2Ugb3BfcHV0X2ludGVybmFsX2ZpZWxkOgogICAgIGNhc2Ugb3BfZGVm
aW5lX2RhdGFfcHJvcGVydHk6CiAgICAgY2FzZSBvcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHk6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2YXRl
QnJhbmRTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NoZWNrUHJp
dmF0ZUJyYW5kU3RhdHVzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMjFiMDEyMDQxMmM2YTA3ZDI1MDhkYjQ2
OTlmYjY0ODQ5ZThlMDI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmNwcApAQCAtMCwwICsxLDI3MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuQS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmgiCisKKyNpbmNsdWRl
ICJDYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oIgorI2luY2x1ZGUgIkNvZGVCbG9jay5oIgor
I2luY2x1ZGUgIklDU3RhdHVzVXRpbHMuaCIKKyNpbmNsdWRlICJQb2x5bW9ycGhpY0FjY2Vzcy5o
IgorI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCisjaW5jbHVkZSA8d3RmL0xpc3REdW1w
Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitib29sIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOjph
cHBlbmRWYXJpYW50KGNvbnN0IENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudCYgdmFyaWFudCkKK3sK
KyAgICByZXR1cm4gYXBwZW5kSUNTdGF0dXNWYXJpYW50KG1fdmFyaWFudHMsIHZhcmlhbnQpOwor
fQorCitDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyBDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6Y29t
cHV0ZUZvckJhc2VsaW5lKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgSUNTdGF0dXNNYXAmIG1h
cCwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBFeGl0RmxhZyBkaWRFeGl0KQoreworICAg
IENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoYmFzZWxpbmVCbG9jay0+bV9sb2NrKTsKKworICAg
IENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzIHJlc3VsdDsKKworI2lmIEVOQUJMRShERkdfSklUKQor
ICAgIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKAor
ICAgICAgICBsb2NrZXIsIGJhc2VsaW5lQmxvY2ssIG1hcC5nZXQoQ29kZU9yaWdpbihieXRlY29k
ZUluZGV4KSkuc3R1YkluZm8pOworCisgICAgaWYgKGRpZEV4aXQpCisgICAgICAgIHJldHVybiBy
ZXN1bHQuc2xvd1ZlcnNpb24oKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG1hcCk7CisgICAg
VU5VU0VEX1BBUkFNKGRpZEV4aXQpOworICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsK
KyNlbmRpZgorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworI2lmIEVOQUJMRShKSVQpCitDaGVj
a1ByaXZhdGVCcmFuZFN0YXR1czo6Q2hlY2tQcml2YXRlQnJhbmRTdGF0dXMoU3R1YkluZm9TdW1t
YXJ5IHN1bW1hcnksIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKK3sKKyAgICBzd2l0Y2gg
KHN1bW1hcnkpIHsKKyAgICBjYXNlIFN0dWJJbmZvU3VtbWFyeTo6Tm9JbmZvcm1hdGlvbjoKKyAg
ICAgICAgbV9zdGF0ZSA9IE5vSW5mb3JtYXRpb247CisgICAgICAgIHJldHVybjsKKyAgICBjYXNl
IFN0dWJJbmZvU3VtbWFyeTo6U2ltcGxlOgorICAgIGNhc2UgU3R1YkluZm9TdW1tYXJ5OjpNYWtl
c0NhbGxzOgorICAgIGNhc2UgU3R1YkluZm9TdW1tYXJ5OjpUYWtlc1Nsb3dQYXRoQW5kTWFrZXND
YWxsczoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIGNhc2UgU3R1YkluZm9TdW1tYXJ5OjpUYWtlc1Nsb3dQYXRoOgorICAgICAgICBt
X3N0YXRlID0gc3R1YkluZm8udG9va1Nsb3dQYXRoID8gT2JzZXJ2ZWRUYWtlc1Nsb3dQYXRoIDog
TGlrZWx5VGFrZXNTbG93UGF0aDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyBDaGVj
a1ByaXZhdGVCcmFuZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVl
ZGJhY2soCisgICAgY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKiBibG9jaywg
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvKQoreworICAgIFN0dWJJbmZvU3VtbWFyeSBzdW1t
YXJ5ID0gU3RydWN0dXJlU3R1YkluZm86OnN1bW1hcnkoYmxvY2stPnZtKCksIHN0dWJJbmZvKTsK
KyAgICBpZiAoIWlzSW5saW5lYWJsZShzdW1tYXJ5KSkKKyAgICAgICAgcmV0dXJuIENoZWNrUHJp
dmF0ZUJyYW5kU3RhdHVzKHN1bW1hcnksICpzdHViSW5mbyk7CisKKyAgICBDaGVja1ByaXZhdGVC
cmFuZFN0YXR1cyByZXN1bHQ7CisgICAgcmVzdWx0Lm1fc3RhdGUgPSBTaW1wbGU7CisgICAgc3dp
dGNoIChzdHViSW5mby0+Y2FjaGVUeXBlKCkpIHsKKyAgICBjYXNlIENhY2hlVHlwZTo6VW5zZXQ6
CisgICAgICAgIHJldHVybiBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyhOb0luZm9ybWF0aW9uKTsK
KworICAgIGNhc2UgQ2FjaGVUeXBlOjpTdHViOiB7CisgICAgICAgIFBvbHltb3JwaGljQWNjZXNz
KiBsaXN0ID0gc3R1YkluZm8tPnUuc3R1YjsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGxpc3RJ
bmRleCA9IDA7IGxpc3RJbmRleCA8IGxpc3QtPnNpemUoKTsgKytsaXN0SW5kZXgpIHsKKyAgICAg
ICAgICAgIGNvbnN0IEFjY2Vzc0Nhc2UmIGFjY2VzcyA9IGxpc3QtPmF0KGxpc3RJbmRleCk7CisK
KyAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYWNjZXNzLnN0cnVjdHVyZSgpOwor
ICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSk7CisgICAgICAgICAgICBBU1NFUlQoYWNjZXNz
LnR5cGUoKSA9PSBBY2Nlc3NDYXNlOjpDaGVja1ByaXZhdGVCcmFuZCk7CisKKyAgICAgICAgICAg
IENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudCB2YXJpYW50KGFjY2Vzcy5pZGVudGlmaWVyKCksIFN0
cnVjdHVyZVNldChzdHJ1Y3R1cmUpKTsKKyAgICAgICAgICAgIGlmICghcmVzdWx0LmFwcGVuZFZh
cmlhbnQodmFyaWFudCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIENoZWNrUHJpdmF0ZUJyYW5k
U3RhdHVzKEpTQzo6c2xvd1ZlcnNpb24oc3VtbWFyeSksICpzdHViSW5mbyk7CisgICAgICAgIH0K
KworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGRlZmF1bHQ6CisgICAgICAg
IHJldHVybiBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyhKU0M6OnNsb3dWZXJzaW9uKHN1bW1hcnkp
LCAqc3R1YkluZm8pOworICAgIH0KKworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzKCk7Cit9CisKK0NoZWNrUHJpdmF0
ZUJyYW5kU3RhdHVzIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOjpjb21wdXRlRm9yKAorICAgIENv
ZGVCbG9jayogYmFzZWxpbmVCbG9jaywgSUNTdGF0dXNNYXAmIGJhc2VsaW5lTWFwLAorICAgIElD
U3RhdHVzQ29udGV4dFN0YWNrJiBjb250ZXh0U3RhY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbikK
K3sKKyAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBjb2RlT3JpZ2luLmJ5dGVjb2Rl
SW5kZXgoKTsKKyAgICBFeGl0RmxhZyBkaWRFeGl0ID0gaGFzQmFkQ2FjaGVFeGl0U2l0ZShiYXNl
bGluZUJsb2NrLCBieXRlY29kZUluZGV4KTsKKworICAgIGZvciAoSUNTdGF0dXNDb250ZXh0KiBj
b250ZXh0IDogY29udGV4dFN0YWNrKSB7CisgICAgICAgIElDU3RhdHVzIHN0YXR1cyA9IGNvbnRl
eHQtPmdldChjb2RlT3JpZ2luKTsKKworICAgICAgICBhdXRvIGJsZXNzID0gWyZdIChjb25zdCBD
aGVja1ByaXZhdGVCcmFuZFN0YXR1cyYgcmVzdWx0KSAtPiBDaGVja1ByaXZhdGVCcmFuZFN0YXR1
cyB7CisgICAgICAgICAgICBpZiAoIWNvbnRleHQtPmlzSW5saW5lZChjb2RlT3JpZ2luKSkgewor
ICAgICAgICAgICAgICAgIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzIGJhc2VsaW5lUmVzdWx0ID0g
Y29tcHV0ZUZvckJhc2VsaW5lKAorICAgICAgICAgICAgICAgICAgICBiYXNlbGluZUJsb2NrLCBi
YXNlbGluZU1hcCwgYnl0ZWNvZGVJbmRleCwgZGlkRXhpdCk7CisgICAgICAgICAgICAgICAgYmFz
ZWxpbmVSZXN1bHQubWVyZ2UocmVzdWx0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYmFzZWxp
bmVSZXN1bHQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZGlkRXhpdC5pc1NldChF
eGl0RnJvbUlubGluZWQpKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQuc2xvd1ZlcnNp
b24oKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH07CisKKyAgICAgICAg
aWYgKHN0YXR1cy5zdHViSW5mbykgeworICAgICAgICAgICAgQ2hlY2tQcml2YXRlQnJhbmRTdGF0
dXMgcmVzdWx0OworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xv
Y2tlciBsb2NrZXIoY29udGV4dC0+b3B0aW1pemVkQ29kZUJsb2NrLT5tX2xvY2spOworICAgICAg
ICAgICAgICAgIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRi
YWNrKAorICAgICAgICAgICAgICAgICAgICBsb2NrZXIsIGNvbnRleHQtPm9wdGltaXplZENvZGVC
bG9jaywgc3RhdHVzLnN0dWJJbmZvKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChy
ZXN1bHQuaXNTZXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gYmxlc3MocmVzdWx0KTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBjb21wdXRlRm9yQmFzZWxpbmUoYmFzZWxpbmVC
bG9jaywgYmFzZWxpbmVNYXAsIGJ5dGVjb2RlSW5kZXgsIGRpZEV4aXQpOworfQorCisjZW5kaWYg
Ly8gRU5BQkxFKEpJVCkKKworQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMgQ2hlY2tQcml2YXRlQnJh
bmRTdGF0dXM6OnNsb3dWZXJzaW9uKCkgY29uc3QKK3sKKyAgICBpZiAob2JzZXJ2ZWRTbG93UGF0
aCgpKQorICAgICAgICByZXR1cm4gQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMoT2JzZXJ2ZWRUYWtl
c1Nsb3dQYXRoKTsKKyAgICByZXR1cm4gQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMoTGlrZWx5VGFr
ZXNTbG93UGF0aCk7Cit9CisKK3ZvaWQgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6Om1lcmdlKGNv
bnN0IENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzJiBvdGhlcikKK3sKKyAgICBpZiAob3RoZXIubV9z
dGF0ZSA9PSBOb0luZm9ybWF0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIG1lcmdl
U2xvdyA9IFsmXSAoKSB7CisgICAgICAgIGlmIChvYnNlcnZlZFNsb3dQYXRoKCkgfHwgb3RoZXIu
b2JzZXJ2ZWRTbG93UGF0aCgpKQorICAgICAgICAgICAgKnRoaXMgPSBDaGVja1ByaXZhdGVCcmFu
ZFN0YXR1cyhPYnNlcnZlZFRha2VzU2xvd1BhdGgpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICAqdGhpcyA9IENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzKExpa2VseVRha2VzU2xvd1BhdGgpOwor
ICAgIH07CisKKyAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKKyAgICBjYXNlIE5vSW5mb3JtYXRpb246
CisgICAgICAgICp0aGlzID0gb3RoZXI7CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgU2lt
cGxlOgorICAgICAgICBpZiAobV9zdGF0ZSAhPSBvdGhlci5tX3N0YXRlKQorICAgICAgICAgICAg
cmV0dXJuIG1lcmdlU2xvdygpOworCisgICAgICAgIGZvciAoYXV0byYgb3RoZXJWYXJpYW50IDog
b3RoZXIubV92YXJpYW50cykgeworICAgICAgICAgICAgaWYgKCFhcHBlbmRWYXJpYW50KG90aGVy
VmFyaWFudCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1lcmdlU2xvdygpOworICAgICAgICB9
CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgTGlrZWx5VGFrZXNTbG93UGF0aDoKKyAgICBj
YXNlIE9ic2VydmVkVGFrZXNTbG93UGF0aDoKKyAgICAgICAgcmV0dXJuIG1lcmdlU2xvdygpOwor
ICAgIH0KKworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgQ2hl
Y2tQcml2YXRlQnJhbmRTdGF0dXM6OmZpbHRlcihjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVy
ZVNldCkKK3sKKyAgICBpZiAobV9zdGF0ZSAhPSBTaW1wbGUpCisgICAgICAgIHJldHVybjsKKyAg
ICBmaWx0ZXJJQ1N0YXR1c1ZhcmlhbnRzKG1fdmFyaWFudHMsIHN0cnVjdHVyZVNldCk7CisgICAg
aWYgKG1fdmFyaWFudHMuaXNFbXB0eSgpKQorICAgICAgICBtX3N0YXRlID0gTm9JbmZvcm1hdGlv
bjsKK30KKworQ2FjaGVhYmxlSWRlbnRpZmllciBDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6c2lu
Z2xlSWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgaWYgKG1fdmFyaWFudHMuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIENhY2hlYWJsZUlkZW50aWZpZXIgcmVzdWx0
ID0gbV92YXJpYW50cy5maXJzdCgpLmlkZW50aWZpZXIoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBtX3Zhcmlh
bnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmll
ciA9IG1fdmFyaWFudHNbaV0uaWRlbnRpZmllcigpOworICAgICAgICBpZiAoIWlkZW50aWZpZXIp
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaWYgKGlkZW50aWZpZXIgIT0g
cmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK3ZvaWQgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6OnZpc2l0QWdncmVnYXRl
KFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGZvciAoQ2hlY2tQcml2YXRlQnJhbmRWYXJp
YW50JiB2YXJpYW50IDogbV92YXJpYW50cykKKyAgICAgICAgdmFyaWFudC52aXNpdEFnZ3JlZ2F0
ZSh2aXNpdG9yKTsKK30KKwordm9pZCBDaGVja1ByaXZhdGVCcmFuZFN0YXR1czo6bWFya0lmQ2hl
YXAoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgZm9yIChDaGVja1ByaXZhdGVCcmFuZFZh
cmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKQorICAgICAgICB2YXJpYW50Lm1hcmtJZkNoZWFw
KHZpc2l0b3IpOworfQorCitib29sIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOjpmaW5hbGl6ZShW
TSYgdm0pCit7CisgICAgZm9yIChhdXRvJiB2YXJpYW50IDogbV92YXJpYW50cykgeworICAgICAg
ICBpZiAoIXZhcmlhbnQuZmluYWxpemUodm0pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDaGVja1ByaXZhdGVCcmFuZFN0YXR1
czo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91dC5wcmludCgiKCIpOwor
ICAgIHN3aXRjaCAobV9zdGF0ZSkgeworICAgIGNhc2UgTm9JbmZvcm1hdGlvbjoKKyAgICAgICAg
b3V0LnByaW50KCJOb0luZm9ybWF0aW9uIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2lt
cGxlOgorICAgICAgICBvdXQucHJpbnQoIlNpbXBsZSIpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIExpa2VseVRha2VzU2xvd1BhdGg6CisgICAgICAgIG91dC5wcmludCgiTGlrZWx5VGFrZXNT
bG93UGF0aCIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE9ic2VydmVkVGFrZXNTbG93UGF0
aDoKKyAgICAgICAgb3V0LnByaW50KCJPYnNlcnZlZFRha2VzU2xvd1BhdGgiKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIG91dC5wcmludCgiLCAiLCBsaXN0RHVtcChtX3ZhcmlhbnRzKSwg
IikiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQ5MGI4ZjQzOTQ0NWZkZTkxNTQ3OTNjYTU3MzlkMzhmMWIyM2I4ODYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJhbmRTdGF0
dXMuaApAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMu
QS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRp
Zmllci5oIgorI2luY2x1ZGUgIkNoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudC5oIgorI2luY2x1ZGUg
IkNvZGVPcmlnaW4uaCIKKyNpbmNsdWRlICJDb25jdXJyZW50SlNMb2NrLmgiCisjaW5jbHVkZSAi
RXhpdEZsYWcuaCIKKyNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgorI2luY2x1ZGUgIlN0dWJJbmZv
U3VtbWFyeS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQWNjZXNzQ2FzZTsKK2NsYXNz
IENvZGVCbG9jazsKK2NsYXNzIFN0cnVjdHVyZVN0dWJJbmZvOworCitjbGFzcyBDaGVja1ByaXZh
dGVCcmFuZFN0YXR1cyBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJs
aWM6CisgICAgZW51bSBTdGF0ZSA6IHVpbnQ4X3QgeworICAgICAgICAvLyBJdCdzIHVuY2FjaGVk
IHNvIHdlIGhhdmUgbm8gaW5mb3JtYXRpb24uCisgICAgICAgIE5vSW5mb3JtYXRpb24sCisgICAg
ICAgIC8vIEl0J3MgY2FjaGVkIGZvciBhIHNpbXBsZSBhY2Nlc3MuCisgICAgICAgIFNpbXBsZSwK
KyAgICAgICAgLy8gSXQgd2lsbCBsaWtlbHkgdGFrZSB0aGUgc2xvdyBwYXRoLgorICAgICAgICBM
aWtlbHlUYWtlc1Nsb3dQYXRoLAorICAgICAgICAvLyBJdCBoYXMgYmVlbiBzZWVuIHRvIHRha2Ug
dGhlIHNsb3cgcGF0aC4KKyAgICAgICAgT2JzZXJ2ZWRUYWtlc1Nsb3dQYXRoLAorICAgIH07CisK
KyAgICBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cygpCisgICAgICAgIDogbV9zdGF0ZShOb0luZm9y
bWF0aW9uKQorICAgIHsKKyAgICB9CisKKyAgICBleHBsaWNpdCBDaGVja1ByaXZhdGVCcmFuZFN0
YXR1cyhTdGF0ZSBzdGF0ZSkKKyAgICAgICAgOiBtX3N0YXRlKHN0YXRlKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKHN0YXRlICE9IFNpbXBsZSk7CisgICAgfQorCisgICAgc3RhdGljIENoZWNrUHJp
dmF0ZUJyYW5kU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJQ1N0
YXR1c01hcCYgYmFzZWxpbmVNYXAsIElDU3RhdHVzQ29udGV4dFN0YWNrJiBkZmdDb250ZXh0U3Rh
Y2ssIENvZGVPcmlnaW4pOworCisgICAgU3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0
YXRlOyB9CisKKyAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSAhPSBOb0lu
Zm9ybWF0aW9uOyB9CisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhaXNTZXQo
KTsgfQorICAgIGJvb2wgb2JzZXJ2ZWRTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUg
PT0gT2JzZXJ2ZWRUYWtlc1Nsb3dQYXRoOyB9CisgICAgYm9vbCBpc1NpbXBsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGUgPT0gU2ltcGxlOyB9CisgICAgY29uc3QgVmVjdG9yPENoZWNrUHJpdmF0
ZUJyYW5kVmFyaWFudCwgMT4mIHZhcmlhbnRzKCkgeyByZXR1cm4gbV92YXJpYW50czsgfQorICAg
IENhY2hlYWJsZUlkZW50aWZpZXIgc2luZ2xlSWRlbnRpZmllcigpIGNvbnN0OworCisgICAgQ2hl
Y2tQcml2YXRlQnJhbmRTdGF0dXMgc2xvd1ZlcnNpb24oKSBjb25zdDsKKworICAgIC8vIEF0dGVt
cHRzIHRvIHJlZHVjZSB0aGUgc2V0IG9mIHZhcmlhbnRzIHRvIGZpdCB0aGUgZ2l2ZW4gc3RydWN0
dXJlIHNldC4gVGhpcyBtYXkgYmUgYXBwcm94aW1hdGUuCisgICAgdm9pZCBmaWx0ZXIoY29uc3Qg
U3RydWN0dXJlU2V0Jik7CisKKyAgICB2b2lkIHZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9yJik7
CisgICAgdm9pZCBtYXJrSWZDaGVhcChTbG90VmlzaXRvciYpOworICAgIGJvb2wgZmluYWxpemUo
Vk0mKTsKKworICAgIGJvb2wgYXBwZW5kVmFyaWFudChjb25zdCBDaGVja1ByaXZhdGVCcmFuZFZh
cmlhbnQmKTsKKworICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworCitwcml2YXRl
OgorICAgIGV4cGxpY2l0IENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzKFN0dWJJbmZvU3VtbWFyeSwg
U3RydWN0dXJlU3R1YkluZm8mKTsKKyAgICB2b2lkIG1lcmdlKGNvbnN0IENoZWNrUHJpdmF0ZUJy
YW5kU3RhdHVzJik7CisKKyAgICBzdGF0aWMgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMgY29tcHV0
ZUZvckJhc2VsaW5lKENvZGVCbG9jayosIElDU3RhdHVzTWFwJiwgQnl0ZWNvZGVJbmRleCwgRXhp
dEZsYWcpOworI2lmIEVOQUJMRShKSVQpCisgICAgc3RhdGljIENoZWNrUHJpdmF0ZUJyYW5kU3Rh
dHVzIGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKAorICAgICAgICBj
b25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIFN0cnVj
dHVyZVN0dWJJbmZvKik7CisjZW5kaWYKKworICAgIFZlY3RvcjxDaGVja1ByaXZhdGVCcmFuZFZh
cmlhbnQsIDE+IG1fdmFyaWFudHM7CisgICAgU3RhdGUgbV9zdGF0ZTsKK307CisKK30gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0No
ZWNrUHJpdmF0ZUJyYW5kVmFyaWFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOWVjN2FlZjVlNTE0
ZGNiMjMwODJiYjdjMDcwYWJjYTdlN2U1MzZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudC5jcHAKQEAgLTAs
MCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuQS4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudC5o
IgorCisjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK0NoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudDo6Q2hlY2tQcml2YXRlQnJhbmRWYXJp
YW50KENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RydWN0dXJlU2V0JiBz
dHJ1Y3R1cmVTZXQpCisgICAgOiBtX3N0cnVjdHVyZVNldChzdHJ1Y3R1cmVTZXQpCisgICAgLCBt
X2lkZW50aWZpZXIoV1RGTW92ZShpZGVudGlmaWVyKSkKK3sgfQorCitDaGVja1ByaXZhdGVCcmFu
ZFZhcmlhbnQ6On5DaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQoKSB7IH0KKworQ2hlY2tQcml2YXRl
QnJhbmRWYXJpYW50OjpDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQoY29uc3QgQ2hlY2tQcml2YXRl
QnJhbmRWYXJpYW50JiBvdGhlcikKK3sKKyAgICAqdGhpcyA9IG90aGVyOworfQorCitib29sIENo
ZWNrUHJpdmF0ZUJyYW5kVmFyaWFudDo6YXR0ZW1wdFRvTWVyZ2UoY29uc3QgQ2hlY2tQcml2YXRl
QnJhbmRWYXJpYW50JiBvdGhlcikKK3sKKyAgICBpZiAoISFtX2lkZW50aWZpZXIgIT0gISFvdGhl
ci5tX2lkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX2lkZW50
aWZpZXIgJiYgKG1faWRlbnRpZmllciAhPSBvdGhlci5tX2lkZW50aWZpZXIpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBtX3N0cnVjdHVyZVNldC5tZXJnZShvdGhlci5tX3N0cnVjdHVy
ZVNldCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDaGVja1ByaXZhdGVCcmFuZFZh
cmlhbnQ6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIG1fc3RydWN0
dXJlU2V0Lm1hcmtJZkNoZWFwKHZpc2l0b3IpOworfQorCitib29sIENoZWNrUHJpdmF0ZUJyYW5k
VmFyaWFudDo6ZmluYWxpemUoVk0mIHZtKQoreworICAgIGlmICghbV9zdHJ1Y3R1cmVTZXQuaXNT
dGlsbEFsaXZlKHZtKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOwor
fQorCit2b2lkIENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudDo6dmlzaXRBZ2dyZWdhdGUoU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCit7CisgICAgbV9pZGVudGlmaWVyLnZpc2l0QWdncmVnYXRlKHZpc2l0
b3IpOworfQorCit2b2lkIENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudDo6ZHVtcChQcmludFN0cmVh
bSYgb3V0KSBjb25zdAoreworICAgIGR1bXBJbkNvbnRleHQob3V0LCBudWxscHRyKTsKK30KKwor
dm9pZCBDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQ6OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0m
IG91dCwgRHVtcENvbnRleHQqIGNvbnRleHQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KCI8aWQ9
JyIsIG1faWRlbnRpZmllciwgIicsICIsIGluQ29udGV4dChzdHJ1Y3R1cmVTZXQoKSwgY29udGV4
dCksICI+Iik7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmZlNGM0NmZmZWVlNTY3N2QyNDc1OGM2MGZmNjZlZTZiZjMzOTJkNzgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2hlY2tQcml2YXRlQnJh
bmRWYXJpYW50LmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdh
bGlhIFMuQS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDYWNoZWFibGVJZGVu
dGlmaWVyLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlU2V0LmgiCisjaW5jbHVkZSA8d3RmL0JveC5o
PgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM7CisK
K2NsYXNzIENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CitwdWJsaWM6CisgICAgQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50KENhY2hlYWJsZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cnVjdHVyZVNldCYgPSBTdHJ1Y3R1cmVTZXQoKSk7CisKKyAgICB+
Q2hlY2tQcml2YXRlQnJhbmRWYXJpYW50KCk7CisKKyAgICBDaGVja1ByaXZhdGVCcmFuZFZhcmlh
bnQoY29uc3QgQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50Jik7CisKKyAgICBjb25zdCBTdHJ1Y3R1
cmVTZXQmIHN0cnVjdHVyZVNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlU2V0OyB9Cisg
ICAgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQoKSB7IHJldHVybiBtX3N0cnVjdHVyZVNldDsg
fQorCisgICAgYm9vbCBhdHRlbXB0VG9NZXJnZShjb25zdCBDaGVja1ByaXZhdGVCcmFuZFZhcmlh
bnQmIG90aGVyKTsKKworICAgIHZvaWQgdmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImKTsKKyAg
ICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7CisgICAgYm9vbCBmaW5hbGl6ZShWTSYp
OworCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisgICAgdm9pZCBkdW1wSW5D
b250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBjb25zdDsKKworICAgIENhY2hlYWJs
ZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQor
CisgICAgYm9vbCBvdmVybGFwcyhjb25zdCBDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQmIG90aGVy
KQorICAgIHsKKyAgICAgICAgaWYgKCEhbV9pZGVudGlmaWVyICE9ICEhb3RoZXIubV9pZGVudGlm
aWVyKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChtX2lkZW50aWZpZXIp
IHsKKyAgICAgICAgICAgIGlmIChtX2lkZW50aWZpZXIgIT0gb3RoZXIubV9pZGVudGlmaWVyKQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
c3RydWN0dXJlU2V0KCkub3ZlcmxhcHMob3RoZXIuc3RydWN0dXJlU2V0KCkpOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM7CisKKyAg
ICBTdHJ1Y3R1cmVTZXQgbV9zdHJ1Y3R1cmVTZXQ7CisgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBt
X2lkZW50aWZpZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggYWYyYWM0YzkxYmI3MjMyYzRiZTM5
NDk1OTc3MWYwOWEzMjE4ZGQ0OC4uMDYyZGZhYzJlNDllZjA5ZThjYTliZDhjOTZkNmM1NGI2NmIw
ZTI3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAK
QEAgLTU0NCw2ICs1NDQsOSBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICBMSU5L
KE9wUHV0QnlWYWxEaXJlY3QpCiAgICAgICAgIExJTksoT3BQdXRQcml2YXRlTmFtZSkKIAorICAg
ICAgICBMSU5LKE9wU2V0UHJpdmF0ZUJyYW5kKQorICAgICAgICBMSU5LKE9wQ2hlY2tQcml2YXRl
QnJhbmQpCisKICAgICAgICAgTElOSyhPcE5ld0FycmF5KQogICAgICAgICBMSU5LKE9wTmV3QXJy
YXlXaXRoU2l6ZSkKICAgICAgICAgTElOSyhPcE5ld0FycmF5QnVmZmVyLCBhcnJheUFsbG9jYXRp
b25Qcm9maWxlKQpAQCAtMTMzOCw2ICsxMzQxLDMzIEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6
ZUxMSW50SW5saW5lQ2FjaGVzKCkKICAgICAgICAgICAgIG1ldGFkYXRhLm1fcHJvcGVydHkuY2xl
YXIoKTsKICAgICAgICAgfSk7CiAKKyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFNldFBy
aXZhdGVCcmFuZD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgeworICAgICAgICAgICAgU3RydWN0dXJl
SUQgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEOworICAgICAgICAg
ICAgU3RydWN0dXJlSUQgbmV3U3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlE
OworICAgICAgICAgICAgSlNDZWxsKiBicmFuZCA9IG1ldGFkYXRhLm1fYnJhbmQuZ2V0KCk7Cisg
ICAgICAgICAgICBpZiAoKCFvbGRTdHJ1Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2VkKHZtLmhl
YXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCkpKQorICAgICAgICAgICAg
ICAgICYmICghYnJhbmQgfHwgdm0uaGVhcC5pc01hcmtlZChicmFuZCkpCisgICAgICAgICAgICAg
ICAgJiYgKCFuZXdTdHJ1Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAuc3RydWN0
dXJlSURUYWJsZSgpLmdldChuZXdTdHJ1Y3R1cmVJRCkpKSkKKyAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNs
ZWFyaW5nIExMSW50IHNldF9wcml2YXRlX2JyYW5kIHRyYW5zaXRpb24uIik7CisgICAgICAgICAg
ICBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEID0gMDsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1f
bmV3U3RydWN0dXJlSUQgPSAwOworICAgICAgICAgICAgbWV0YWRhdGEubV9icmFuZC5jbGVhcigp
OworICAgICAgICB9KTsKKworICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wQ2hlY2tQcml2
YXRlQnJhbmQ+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKKyAgICAgICAgICAgIFN0cnVjdHVyZUlE
IHN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIEpTQ2Vs
bCogYnJhbmQgPSBtZXRhZGF0YS5tX2JyYW5kLmdldCgpOworICAgICAgICAgICAgaWYgKCghc3Ry
dWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5n
ZXQoc3RydWN0dXJlSUQpKSkKKyAgICAgICAgICAgICAgICAmJiAoIWJyYW5kIHx8IHZtLmhlYXAu
aXNNYXJrZWQoYnJhbmQpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAg
IGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNsZWFyaW5nIExMSW50IHNldF9w
cml2YXRlX2JyYW5kIHRyYW5zaXRpb24uIik7CisgICAgICAgICAgICBtZXRhZGF0YS5tX3N0cnVj
dHVyZUlEID0gMDsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fYnJhbmQuY2xlYXIoKTsKKyAgICAg
ICAgfSk7CisKICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFRvVGhpcz4oWyZdIChhdXRv
JiBtZXRhZGF0YSkgewogICAgICAgICAgICAgaWYgKCFtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVy
ZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG1l
dGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQpKSkKICAgICAgICAgICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4
IDQ5ZWRkNTI4NWQ1YzJjMjhiMWM5YTRiY2VlZjQ1MTcxOTkwYmU5MWMuLmNkNTlmYjRhNzMzZTky
NGU0ZWIxM2E5YzAwNjkzMDQyZDM5ZDlkZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0zNiw5ICszNiwxMCBAQCBlbnVtIGNsYXNz
IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIDogdWludDhfdCB7IE5vLCBZZXMgfTsKIC8vIEZJ
WE1FOiBUaGVzZSBmbGFncywgUGFyc2VyTW9kZXMgYW5kIHByb3BhZ2F0aW9uIHRvIFhYWENvZGVC
bG9ja3Mgc2hvdWxkIGJlIHJlb3JnYW5pemVkLgogLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1MTU0Nwogc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKLSAgICBFeGVj
dXRhYmxlSW5mbyhib29sIHVzZXNFdmFsLCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wgaXNCdWls
dGluRnVuY3Rpb24sIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIEpTUGFyc2VyU2Ny
aXB0TW9kZSBzY3JpcHRNb2RlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBTb3VyY2VQYXJz
ZU1vZGUgcGFyc2VNb2RlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBO
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9v
bCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzQ2xhc3NDb250ZXh0LCBFdmFsQ29udGV4
dFR5cGUgZXZhbENvbnRleHRUeXBlKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgdXNlc0V2YWws
IGJvb2wgaXNDb25zdHJ1Y3RvciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24sIENvbnN0cnVjdG9yS2luZCBjb25z
dHJ1Y3RvcktpbmQsIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBTdXBlckJpbmRpbmcg
c3VwZXJCaW5kaW5nLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBEZXJpdmVkQ29udGV4dFR5
cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlz
Q2xhc3NDb250ZXh0LCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKQogICAgICAgICA6
IG1fdXNlc0V2YWwodXNlc0V2YWwpCiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3Ry
dWN0b3IpCisgICAgICAgICwgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudChzdGF0aWNfY2FzdDx1
bnNpZ25lZD4ocHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpKQogICAgICAgICAsIG1faXNCdWlsdGlu
RnVuY3Rpb24oaXNCdWlsdGluRnVuY3Rpb24pCiAgICAgICAgICwgbV9jb25zdHJ1Y3RvcktpbmQo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCiAgICAgICAgICwgbV9zdXBl
ckJpbmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykpCkBAIC01Nyw2ICs1
OCw3IEBAIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiAKICAgICBib29sIHVzZXNFdmFsKCkgY29u
c3QgeyByZXR1cm4gbV91c2VzRXZhbDsgfQogICAgIGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0
IHsgcmV0dXJuIG1faXNDb25zdHJ1Y3RvcjsgfQorICAgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50
IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQ+KG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOyB9CiAgICAg
Ym9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rp
b247IH0KICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KICAg
ICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
U3VwZXJCaW5kaW5nPihtX3N1cGVyQmluZGluZyk7IH0KQEAgLTcxLDYgKzczLDcgQEAgc3RydWN0
IEV4ZWN1dGFibGVJbmZvIHsKIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV91c2VzRXZhbCA6IDE7
CiAgICAgdW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKKyAgICB1bnNpZ25lZCBtX3ByaXZh
dGVCcmFuZFJlcXVpcmVtZW50IDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1bmN0aW9u
IDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CiAgICAgdW5zaWduZWQg
bV9zdXBlckJpbmRpbmcgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXggMTIwMmYyNzk1NWI1NTZhMTEyMGNhZmVi
MDU0NmUwYWM3ZGQ5ZmVmZS4uYThiODIwM2VlOTliNTVmZDU5M2MyOWZhY2E4ZjRiY2Y0NTM0N2E3
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGlj
QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBo
aWNBY2Nlc3MuY3BwCkBAIC00NjksNyArNDY5LDggQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQ
b2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2MK
ICAgICBhbGxvY2F0b3IubG9jayhzdGF0ZS5iYXNlR1BSKTsKICAgICBpZiAoc3RhdGUudS50aGlz
R1BSICE9IEludmFsaWRHUFJSZWcpCiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0YXRlLnUudGhp
c0dQUik7Ci0gICAgYWxsb2NhdG9yLmxvY2soc3RhdGUudmFsdWVSZWdzKTsKKyAgICBpZiAoc3Rh
dGUudmFsdWVSZWdzKQorICAgICAgICBhbGxvY2F0b3IubG9jayhzdGF0ZS52YWx1ZVJlZ3MpOwog
I2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVRh
Z0dQUik7CiAgICAgaWYgKHN0dWJJbmZvLnYudGhpc1RhZ0dQUiAhPSBJbnZhbGlkR1BSUmVnKQpA
QCAtODUyLDYgKzg1MywxMiBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwg
QWNjZXNzQ2FzZTo6QWNjZXNzVHlwZSB0eXBlKQogICAgIGNhc2UgQWNjZXNzQ2FzZTo6SW5NaXNz
OgogICAgICAgICBvdXQucHJpbnQoIkluTWlzcyIpOwogICAgICAgICByZXR1cm47CisgICAgY2Fz
ZSBBY2Nlc3NDYXNlOjpDaGVja1ByaXZhdGVCcmFuZDoKKyAgICAgICAgb3V0LnByaW50KCJDaGVj
a1ByaXZhdGVCcmFuZCIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBBY2Nlc3NDYXNlOjpT
ZXRQcml2YXRlQnJhbmQ6CisgICAgICAgIG91dC5wcmludCgiU2V0UHJpdmF0ZUJyYW5kIik7Cisg
ICAgICAgIHJldHVybjsKICAgICBjYXNlIEFjY2Vzc0Nhc2U6OkFycmF5TGVuZ3RoOgogICAgICAg
ICBvdXQucHJpbnQoIkFycmF5TGVuZ3RoIik7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAppbmRleCBk
NjE1YTEzZDljM2M0NzVhNjE2YzJlNTQ3NzI5NTU0NjE2OWM0NDRkLi43ZmY1MGU0ODU3OGEzZjY3
MzA0MmU3NDkzOWFjMmEyYWQ2NTY0NjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCkBAIC0zNSw2ICszNSw4IEBAIFJlY29y
ZGVkU3RhdHVzZXMmIFJlY29yZGVkU3RhdHVzZXM6Om9wZXJhdG9yPShSZWNvcmRlZFN0YXR1c2Vz
JiYgb3RoZXIpCiAgICAgcHV0cyA9IFdURk1vdmUob3RoZXIucHV0cyk7CiAgICAgaW5zID0gV1RG
TW92ZShvdGhlci5pbnMpOwogICAgIGRlbGV0ZXMgPSBXVEZNb3ZlKG90aGVyLmRlbGV0ZXMpOwor
ICAgIGNoZWNrUHJpdmF0ZUJyYW5kcyA9IFdURk1vdmUob3RoZXIuY2hlY2tQcml2YXRlQnJhbmRz
KTsKKyAgICBzZXRQcml2YXRlQnJhbmRzID0gV1RGTW92ZShvdGhlci5zZXRQcml2YXRlQnJhbmRz
KTsKICAgICBzaHJpbmtUb0ZpdCgpOwogICAgIHJldHVybiAqdGhpczsKIH0KQEAgLTg0LDEyICs4
NiwzMiBAQCBEZWxldGVCeVN0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkRGVsZXRlQnlTdGF0
dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
K0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGRDaGVja1ByaXZh
dGVCcmFuZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBjb25zdCBDaGVja1By
aXZhdGVCcmFuZFN0YXR1cyYgc3RhdHVzKQoreworICAgIGF1dG8gc3RhdHVzUHRyID0gbWFrZVVu
aXF1ZTxDaGVja1ByaXZhdGVCcmFuZFN0YXR1cz4oc3RhdHVzKTsKKyAgICBDaGVja1ByaXZhdGVC
cmFuZFN0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdldCgpOworICAgIGNoZWNrUHJpdmF0ZUJy
YW5kcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoY29kZU9yaWdpbiwgV1RGTW92ZShzdGF0dXNQdHIp
KSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworU2V0UHJpdmF0ZUJyYW5kU3RhdHVzKiBSZWNv
cmRlZFN0YXR1c2VzOjphZGRTZXRQcml2YXRlQnJhbmRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYg
Y29kZU9yaWdpbiwgY29uc3QgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzJiBzdGF0dXMpCit7CisgICAg
YXV0byBzdGF0dXNQdHIgPSBtYWtlVW5pcXVlPFNldFByaXZhdGVCcmFuZFN0YXR1cz4oc3RhdHVz
KTsKKyAgICBTZXRQcml2YXRlQnJhbmRTdGF0dXMqIHJlc3VsdCA9IHN0YXR1c1B0ci5nZXQoKTsK
KyAgICBzZXRQcml2YXRlQnJhbmRzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihjb2RlT3JpZ2luLCBX
VEZNb3ZlKHN0YXR1c1B0cikpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB2b2lkIFJlY29y
ZGVkU3RhdHVzZXM6OnZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9yJiBzbG90VmlzaXRvcikKIHsK
ICAgICBmb3IgKGF1dG8mIHBhaXIgOiBnZXRzKQogICAgICAgICBwYWlyLnNlY29uZC0+dmlzaXRB
Z2dyZWdhdGUoc2xvdFZpc2l0b3IpOwogICAgIGZvciAoYXV0byYgcGFpciA6IGRlbGV0ZXMpCiAg
ICAgICAgIHBhaXIuc2Vjb25kLT52aXNpdEFnZ3JlZ2F0ZShzbG90VmlzaXRvcik7CisgICAgZm9y
IChhdXRvJiBwYWlyIDogY2hlY2tQcml2YXRlQnJhbmRzKQorICAgICAgICBwYWlyLnNlY29uZC0+
dmlzaXRBZ2dyZWdhdGUoc2xvdFZpc2l0b3IpOworICAgIGZvciAoYXV0byYgcGFpciA6IHNldFBy
aXZhdGVCcmFuZHMpCisgICAgICAgIHBhaXIuc2Vjb25kLT52aXNpdEFnZ3JlZ2F0ZShzbG90Vmlz
aXRvcik7CiB9CiAKIHZvaWQgUmVjb3JkZWRTdGF0dXNlczo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0
b3ImIHNsb3RWaXNpdG9yKQpAQCAtMTAyLDYgKzEyNCwxMCBAQCB2b2lkIFJlY29yZGVkU3RhdHVz
ZXM6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiBzbG90VmlzaXRvcikKICAgICAgICAgcGFpci5z
ZWNvbmQtPm1hcmtJZkNoZWFwKHNsb3RWaXNpdG9yKTsKICAgICBmb3IgKGF1dG8mIHBhaXIgOiBk
ZWxldGVzKQogICAgICAgICBwYWlyLnNlY29uZC0+bWFya0lmQ2hlYXAoc2xvdFZpc2l0b3IpOwor
ICAgIGZvciAoYXV0byYgcGFpciA6IGNoZWNrUHJpdmF0ZUJyYW5kcykKKyAgICAgICAgcGFpci5z
ZWNvbmQtPm1hcmtJZkNoZWFwKHNsb3RWaXNpdG9yKTsKKyAgICBmb3IgKGF1dG8mIHBhaXIgOiBz
ZXRQcml2YXRlQnJhbmRzKQorICAgICAgICBwYWlyLnNlY29uZC0+bWFya0lmQ2hlYXAoc2xvdFZp
c2l0b3IpOwogfQogCiB2b2lkIFJlY29yZGVkU3RhdHVzZXM6OmZpbmFsaXplV2l0aG91dERlbGV0
aW5nKFZNJiB2bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9S
ZWNvcmRlZFN0YXR1c2VzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3Jk
ZWRTdGF0dXNlcy5oCmluZGV4IDllNzA1NWQyNDNmMjRhYTZhZjVhYTA5MmFkMzAyZWYxNWE4ZDA1
NzUuLmU4NDNiNjY4MDFlMDExN2M5ZWYzNzliYjA4M2M0OTRkN2IxMTg1NzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuaApAQCAtMjYs
MTAgKzI2LDEyIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgi
CisjaW5jbHVkZSAiQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMuaCIKICNpbmNsdWRlICJEZWxldGVC
eVN0YXR1cy5oIgogI2luY2x1ZGUgIkdldEJ5U3RhdHVzLmgiCiAjaW5jbHVkZSAiSW5CeUlkU3Rh
dHVzLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgorI2luY2x1ZGUgIlNldFByaXZhdGVC
cmFuZFN0YXR1cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDksNiArNTEsOCBAQCBzdHJ1
Y3QgUmVjb3JkZWRTdGF0dXNlcyB7CiAgICAgUHV0QnlJZFN0YXR1cyogYWRkUHV0QnlJZFN0YXR1
cyhjb25zdCBDb2RlT3JpZ2luJiwgY29uc3QgUHV0QnlJZFN0YXR1cyYpOwogICAgIEluQnlJZFN0
YXR1cyogYWRkSW5CeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mLCBjb25zdCBJbkJ5SWRTdGF0
dXMmKTsKICAgICBEZWxldGVCeVN0YXR1cyogYWRkRGVsZXRlQnlTdGF0dXMoY29uc3QgQ29kZU9y
aWdpbiYsIGNvbnN0IERlbGV0ZUJ5U3RhdHVzJik7CisgICAgQ2hlY2tQcml2YXRlQnJhbmRTdGF0
dXMqIGFkZENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mLCBjb25zdCBD
aGVja1ByaXZhdGVCcmFuZFN0YXR1cyYpOworICAgIFNldFByaXZhdGVCcmFuZFN0YXR1cyogYWRk
U2V0UHJpdmF0ZUJyYW5kU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mLCBjb25zdCBTZXRQcml2YXRl
QnJhbmRTdGF0dXMmKTsKICAgICAKICAgICB2b2lkIHZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9y
Jik7CiAgICAgdm9pZCBtYXJrSWZDaGVhcChTbG90VmlzaXRvciYpOwpAQCAtNjYsNiArNzAsOCBA
QCBzdHJ1Y3QgUmVjb3JkZWRTdGF0dXNlcyB7CiAgICAgICAgIGZ1bmMocHV0cyk7CiAgICAgICAg
IGZ1bmMoaW5zKTsKICAgICAgICAgZnVuYyhkZWxldGVzKTsKKyAgICAgICAgZnVuYyhjaGVja1By
aXZhdGVCcmFuZHMpOworICAgICAgICBmdW5jKHNldFByaXZhdGVCcmFuZHMpOwogICAgIH0KICAg
ICAKICAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxDYWxs
TGlua1N0YXR1cz4+PiBjYWxsczsKQEAgLTczLDYgKzc5LDggQEAgc3RydWN0IFJlY29yZGVkU3Rh
dHVzZXMgewogICAgIFZlY3RvcjxzdGQ6OnBhaXI8Q29kZU9yaWdpbiwgc3RkOjp1bmlxdWVfcHRy
PFB1dEJ5SWRTdGF0dXM+Pj4gcHV0czsKICAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4s
IHN0ZDo6dW5pcXVlX3B0cjxJbkJ5SWRTdGF0dXM+Pj4gaW5zOwogICAgIFZlY3RvcjxzdGQ6OnBh
aXI8Q29kZU9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPERlbGV0ZUJ5U3RhdHVzPj4+IGRlbGV0ZXM7
CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8Q2hlY2tQ
cml2YXRlQnJhbmRTdGF0dXM+Pj4gY2hlY2tQcml2YXRlQnJhbmRzOworICAgIFZlY3RvcjxzdGQ6
OnBhaXI8Q29kZU9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPFNldFByaXZhdGVCcmFuZFN0YXR1cz4+
PiBzZXRQcml2YXRlQnJhbmRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TZXRQcml2YXRlQnJhbmRTdGF0dXMu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmU2Y2Y3NGJlNTVlYzJkOGI5ZDJlODkzNmEyMTZiMzhhMzU5ZDhiNzYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2V0UHJp
dmF0ZUJyYW5kU3RhdHVzLmNwcApAQCAtMCwwICsxLDI3OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgSWdhbGlhIFMuQS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlNldFByaXZhdGVCcmFuZFN0YXR1cy5oIgorCisjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmll
cklubGluZXMuaCIKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJJQ1N0YXR1c1V0
aWxzLmgiCisjaW5jbHVkZSAiUG9seW1vcnBoaWNBY2Nlc3MuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1
cmVTdHViSW5mby5oIgorI2luY2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgorCituYW1lc3BhY2UgSlND
IHsKKworYm9vbCBTZXRQcml2YXRlQnJhbmRTdGF0dXM6OmFwcGVuZFZhcmlhbnQoY29uc3QgU2V0
UHJpdmF0ZUJyYW5kVmFyaWFudCYgdmFyaWFudCkKK3sKKyAgICByZXR1cm4gYXBwZW5kSUNTdGF0
dXNWYXJpYW50KG1fdmFyaWFudHMsIHZhcmlhbnQpOworfQorCitTZXRQcml2YXRlQnJhbmRTdGF0
dXMgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOjpjb21wdXRlRm9yQmFzZWxpbmUoQ29kZUJsb2NrKiBi
YXNlbGluZUJsb2NrLCBJQ1N0YXR1c01hcCYgbWFwLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5k
ZXgsIEV4aXRGbGFnIGRpZEV4aXQpCit7CisgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihi
YXNlbGluZUJsb2NrLT5tX2xvY2spOworCisgICAgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzIHJlc3Vs
dDsKKworI2lmIEVOQUJMRShERkdfSklUKQorICAgIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5m
b1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKAorICAgICAgICBsb2NrZXIsIGJhc2VsaW5lQmxvY2ss
IG1hcC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUluZGV4KSkuc3R1YkluZm8pOworCisgICAgaWYg
KGRpZEV4aXQpCisgICAgICAgIHJldHVybiByZXN1bHQuc2xvd1ZlcnNpb24oKTsKKyNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKG1hcCk7CisgICAgVU5VU0VEX1BBUkFNKGRpZEV4aXQpOworICAgIFVO
VVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKKyNlbmRpZgorCisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworI2lmIEVOQUJMRShKSVQpCitTZXRQcml2YXRlQnJhbmRTdGF0dXM6OlNldFByaXZhdGVC
cmFuZFN0YXR1cyhTdHViSW5mb1N1bW1hcnkgc3VtbWFyeSwgU3RydWN0dXJlU3R1YkluZm8mIHN0
dWJJbmZvKQoreworICAgIHN3aXRjaCAoc3VtbWFyeSkgeworICAgIGNhc2UgU3R1YkluZm9TdW1t
YXJ5OjpOb0luZm9ybWF0aW9uOgorICAgICAgICBtX3N0YXRlID0gTm9JbmZvcm1hdGlvbjsKKyAg
ICAgICAgcmV0dXJuOworICAgIGNhc2UgU3R1YkluZm9TdW1tYXJ5OjpTaW1wbGU6CisgICAgY2Fz
ZSBTdHViSW5mb1N1bW1hcnk6Ok1ha2VzQ2FsbHM6CisgICAgY2FzZSBTdHViSW5mb1N1bW1hcnk6
OlRha2VzU2xvd1BhdGhBbmRNYWtlc0NhbGxzOgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBTdHViSW5mb1N1bW1hcnk6OlRh
a2VzU2xvd1BhdGg6CisgICAgICAgIG1fc3RhdGUgPSBzdHViSW5mby50b29rU2xvd1BhdGggPyBP
YnNlcnZlZFRha2VzU2xvd1BhdGggOiBMaWtlbHlUYWtlc1Nsb3dQYXRoOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK1NldFBy
aXZhdGVCcmFuZFN0YXR1cyBTZXRQcml2YXRlQnJhbmRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5m
b1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKAorICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYs
IENvZGVCbG9jayogYmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbykKK3sKKyAgICBT
dHViSW5mb1N1bW1hcnkgc3VtbWFyeSA9IFN0cnVjdHVyZVN0dWJJbmZvOjpzdW1tYXJ5KGJsb2Nr
LT52bSgpLCBzdHViSW5mbyk7CisgICAgaWYgKCFpc0lubGluZWFibGUoc3VtbWFyeSkpCisgICAg
ICAgIHJldHVybiBTZXRQcml2YXRlQnJhbmRTdGF0dXMoc3VtbWFyeSwgKnN0dWJJbmZvKTsKKwor
ICAgIFNldFByaXZhdGVCcmFuZFN0YXR1cyByZXN1bHQ7CisgICAgcmVzdWx0Lm1fc3RhdGUgPSBT
aW1wbGU7CisgICAgc3dpdGNoIChzdHViSW5mby0+Y2FjaGVUeXBlKCkpIHsKKyAgICBjYXNlIENh
Y2hlVHlwZTo6VW5zZXQ6CisgICAgICAgIHJldHVybiBTZXRQcml2YXRlQnJhbmRTdGF0dXMoTm9J
bmZvcm1hdGlvbik7CisKKyAgICBjYXNlIENhY2hlVHlwZTo6U3R1YjogeworICAgICAgICBQb2x5
bW9ycGhpY0FjY2VzcyogbGlzdCA9IHN0dWJJbmZvLT51LnN0dWI7CisKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBsaXN0SW5kZXggPSAwOyBsaXN0SW5kZXggPCBsaXN0LT5zaXplKCk7ICsrbGlzdElu
ZGV4KSB7CisgICAgICAgICAgICBjb25zdCBBY2Nlc3NDYXNlJiBhY2Nlc3MgPSBsaXN0LT5hdChs
aXN0SW5kZXgpOworCisgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGFjY2Vzcy5z
dHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUpOworICAgICAgICAgICAg
QVNTRVJUKGFjY2Vzcy50eXBlKCkgPT0gQWNjZXNzQ2FzZTo6U2V0UHJpdmF0ZUJyYW5kKTsKKwor
ICAgICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OnNldEJyYW5k
VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseShzdHJ1Y3R1cmUsIGFj
Y2Vzcy5pZGVudGlmaWVyKCkudWlkKCkpOworICAgICAgICAgICAgaWYgKCFuZXdTdHJ1Y3R1cmUp
CisgICAgICAgICAgICAgICAgcmV0dXJuIFNldFByaXZhdGVCcmFuZFN0YXR1cyhKU0M6OnNsb3dW
ZXJzaW9uKHN1bW1hcnkpLCAqc3R1YkluZm8pOworCisgICAgICAgICAgICBTZXRQcml2YXRlQnJh
bmRWYXJpYW50IHZhcmlhbnQoYWNjZXNzLmlkZW50aWZpZXIoKSwgc3RydWN0dXJlLCBuZXdTdHJ1
Y3R1cmUpOworICAgICAgICAgICAgaWYgKCFyZXN1bHQuYXBwZW5kVmFyaWFudCh2YXJpYW50KSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gU2V0UHJpdmF0ZUJyYW5kU3RhdHVzKEpTQzo6c2xvd1Zl
cnNpb24oc3VtbWFyeSksICpzdHViSW5mbyk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgIH0KKworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBTZXRQcml2YXRl
QnJhbmRTdGF0dXMoSlNDOjpzbG93VmVyc2lvbihzdW1tYXJ5KSwgKnN0dWJJbmZvKTsKKyAgICB9
CisKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBTZXRQcml2
YXRlQnJhbmRTdGF0dXMoKTsKK30KKworU2V0UHJpdmF0ZUJyYW5kU3RhdHVzIFNldFByaXZhdGVC
cmFuZFN0YXR1czo6Y29tcHV0ZUZvcigKKyAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIElD
U3RhdHVzTWFwJiBiYXNlbGluZU1hcCwKKyAgICBJQ1N0YXR1c0NvbnRleHRTdGFjayYgY29udGV4
dFN0YWNrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCit7CisgICAgQnl0ZWNvZGVJbmRleCBieXRl
Y29kZUluZGV4ID0gY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KCk7CisgICAgRXhpdEZsYWcgZGlk
RXhpdCA9IGhhc0JhZENhY2hlRXhpdFNpdGUoYmFzZWxpbmVCbG9jaywgYnl0ZWNvZGVJbmRleCk7
CisKKyAgICBmb3IgKElDU3RhdHVzQ29udGV4dCogY29udGV4dCA6IGNvbnRleHRTdGFjaykgewor
ICAgICAgICBJQ1N0YXR1cyBzdGF0dXMgPSBjb250ZXh0LT5nZXQoY29kZU9yaWdpbik7CisKKyAg
ICAgICAgYXV0byBibGVzcyA9IFsmXSAoY29uc3QgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzJiByZXN1
bHQpIC0+IFNldFByaXZhdGVCcmFuZFN0YXR1cyB7CisgICAgICAgICAgICBpZiAoIWNvbnRleHQt
PmlzSW5saW5lZChjb2RlT3JpZ2luKSkgeworICAgICAgICAgICAgICAgIFNldFByaXZhdGVCcmFu
ZFN0YXR1cyBiYXNlbGluZVJlc3VsdCA9IGNvbXB1dGVGb3JCYXNlbGluZSgKKyAgICAgICAgICAg
ICAgICAgICAgYmFzZWxpbmVCbG9jaywgYmFzZWxpbmVNYXAsIGJ5dGVjb2RlSW5kZXgsIGRpZEV4
aXQpOworICAgICAgICAgICAgICAgIGJhc2VsaW5lUmVzdWx0Lm1lcmdlKHJlc3VsdCk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGJhc2VsaW5lUmVzdWx0OworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKGRpZEV4aXQuaXNTZXQoRXhpdEZyb21JbmxpbmVkKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0LnNsb3dWZXJzaW9uKCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgICAgICB9OworCisgICAgICAgIGlmIChzdGF0dXMuc3R1YkluZm8pIHsKKyAgICAgICAg
ICAgIFNldFByaXZhdGVCcmFuZFN0YXR1cyByZXN1bHQ7CisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb250ZXh0LT5vcHRpbWl6ZWRDb2Rl
QmxvY2stPm1fbG9jayk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJ
bmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soCisgICAgICAgICAgICAgICAgICAgIGxvY2tlciwg
Y29udGV4dC0+b3B0aW1pemVkQ29kZUJsb2NrLCBzdGF0dXMuc3R1YkluZm8pOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgaWYgKHJlc3VsdC5pc1NldCgpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBibGVzcyhyZXN1bHQpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGNvbXB1
dGVGb3JCYXNlbGluZShiYXNlbGluZUJsb2NrLCBiYXNlbGluZU1hcCwgYnl0ZWNvZGVJbmRleCwg
ZGlkRXhpdCk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCitTZXRQcml2YXRlQnJhbmRT
dGF0dXMgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOjpzbG93VmVyc2lvbigpIGNvbnN0Cit7CisgICAg
aWYgKG9ic2VydmVkU2xvd1BhdGgoKSkKKyAgICAgICAgcmV0dXJuIFNldFByaXZhdGVCcmFuZFN0
YXR1cyhPYnNlcnZlZFRha2VzU2xvd1BhdGgpOworICAgIHJldHVybiBTZXRQcml2YXRlQnJhbmRT
dGF0dXMoTGlrZWx5VGFrZXNTbG93UGF0aCk7Cit9CisKK3ZvaWQgU2V0UHJpdmF0ZUJyYW5kU3Rh
dHVzOjptZXJnZShjb25zdCBTZXRQcml2YXRlQnJhbmRTdGF0dXMmIG90aGVyKQoreworICAgIGlm
IChvdGhlci5tX3N0YXRlID09IE5vSW5mb3JtYXRpb24pCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8gbWVyZ2VTbG93ID0gWyZdICgpIHsKKyAgICAgICAgaWYgKG9ic2VydmVkU2xvd1BhdGgo
KSB8fCBvdGhlci5vYnNlcnZlZFNsb3dQYXRoKCkpCisgICAgICAgICAgICAqdGhpcyA9IFNldFBy
aXZhdGVCcmFuZFN0YXR1cyhPYnNlcnZlZFRha2VzU2xvd1BhdGgpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICAqdGhpcyA9IFNldFByaXZhdGVCcmFuZFN0YXR1cyhMaWtlbHlUYWtlc1Nsb3dQ
YXRoKTsKKyAgICB9OworCisgICAgc3dpdGNoIChtX3N0YXRlKSB7CisgICAgY2FzZSBOb0luZm9y
bWF0aW9uOgorICAgICAgICAqdGhpcyA9IG90aGVyOworICAgICAgICByZXR1cm47CisKKyAgICBj
YXNlIFNpbXBsZToKKyAgICAgICAgaWYgKG1fc3RhdGUgIT0gb3RoZXIubV9zdGF0ZSkKKyAgICAg
ICAgICAgIHJldHVybiBtZXJnZVNsb3coKTsKKworICAgICAgICBmb3IgKGF1dG8mIG90aGVyVmFy
aWFudCA6IG90aGVyLm1fdmFyaWFudHMpIHsKKyAgICAgICAgICAgIGlmICghYXBwZW5kVmFyaWFu
dChvdGhlclZhcmlhbnQpKQorICAgICAgICAgICAgICAgIHJldHVybiBtZXJnZVNsb3coKTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIExpa2VseVRha2VzU2xvd1BhdGg6
CisgICAgY2FzZSBPYnNlcnZlZFRha2VzU2xvd1BhdGg6CisgICAgICAgIHJldHVybiBtZXJnZVNs
b3coKTsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2
b2lkIFNldFByaXZhdGVCcmFuZFN0YXR1czo6ZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYgc3Ry
dWN0dXJlU2V0KQoreworICAgIGlmIChtX3N0YXRlICE9IFNpbXBsZSkKKyAgICAgICAgcmV0dXJu
OworICAgIG1fdmFyaWFudHMucmVtb3ZlQWxsTWF0Y2hpbmcoCisgICAgICAgIFsmXSAoYXV0byYg
dmFyaWFudCkgLT4gYm9vbCB7CisgICAgICAgICAgICByZXR1cm4gIXN0cnVjdHVyZVNldC5jb250
YWlucyh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKTsKKyAgICAgICAgfSk7CisgICAgaWYgKG1fdmFy
aWFudHMuaXNFbXB0eSgpKQorICAgICAgICBtX3N0YXRlID0gTm9JbmZvcm1hdGlvbjsKK30KKwor
Q2FjaGVhYmxlSWRlbnRpZmllciBTZXRQcml2YXRlQnJhbmRTdGF0dXM6OnNpbmdsZUlkZW50aWZp
ZXIoKSBjb25zdAoreworICAgIGlmIChtX3ZhcmlhbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIHJlc3VsdCA9IG1fdmFyaWFu
dHMuZmlyc3QoKS5pZGVudGlmaWVyKCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgbV92YXJpYW50cy5zaXplKCk7
ICsraSkgeworICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBtX3Zhcmlh
bnRzW2ldLmlkZW50aWZpZXIoKTsKKyAgICAgICAgaWYgKCFpZGVudGlmaWVyKQorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGlmIChpZGVudGlmaWVyICE9IHJlc3VsdCkKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQor
Cit2b2lkIFNldFByaXZhdGVCcmFuZFN0YXR1czo6dmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCit7CisgICAgZm9yIChTZXRQcml2YXRlQnJhbmRWYXJpYW50JiB2YXJpYW50IDog
bV92YXJpYW50cykKKyAgICAgICAgdmFyaWFudC52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKK30K
Kwordm9pZCBTZXRQcml2YXRlQnJhbmRTdGF0dXM6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQoreworICAgIGZvciAoU2V0UHJpdmF0ZUJyYW5kVmFyaWFudCYgdmFyaWFudCA6IG1f
dmFyaWFudHMpCisgICAgICAgIHZhcmlhbnQubWFya0lmQ2hlYXAodmlzaXRvcik7Cit9CisKK2Jv
b2wgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOjpmaW5hbGl6ZShWTSYgdm0pCit7CisgICAgZm9yIChh
dXRvJiB2YXJpYW50IDogbV92YXJpYW50cykgeworICAgICAgICBpZiAoIXZhcmlhbnQuZmluYWxp
emUodm0pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwordm9pZCBTZXRQcml2YXRlQnJhbmRTdGF0dXM6OmR1bXAoUHJpbnRTdHJlYW0mIG91
dCkgY29uc3QKK3sKKyAgICBvdXQucHJpbnQoIigiKTsKKyAgICBzd2l0Y2ggKG1fc3RhdGUpIHsK
KyAgICBjYXNlIE5vSW5mb3JtYXRpb246CisgICAgICAgIG91dC5wcmludCgiTm9JbmZvcm1hdGlv
biIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNpbXBsZToKKyAgICAgICAgb3V0LnByaW50
KCJTaW1wbGUiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMaWtlbHlUYWtlc1Nsb3dQYXRo
OgorICAgICAgICBvdXQucHJpbnQoIkxpa2VseVRha2VzU2xvd1BhdGgiKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBPYnNlcnZlZFRha2VzU2xvd1BhdGg6CisgICAgICAgIG91dC5wcmludCgi
T2JzZXJ2ZWRUYWtlc1Nsb3dQYXRoIik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBvdXQu
cHJpbnQoIiwgIiwgbGlzdER1bXAobV92YXJpYW50cyksICIpIik7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NldFBy
aXZhdGVCcmFuZFN0YXR1cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NldFBy
aXZhdGVCcmFuZFN0YXR1cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlMTI4MmYyNGVkMGI5NDdkMWU4NjNkZDYx
MzBhODE0NGJhNGQ1MzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmgKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJDb2RlT3JpZ2lu
LmgiCisjaW5jbHVkZSAiQ29uY3VycmVudEpTTG9jay5oIgorI2luY2x1ZGUgIkV4aXRGbGFnLmgi
CisjaW5jbHVkZSAiSUNTdGF0dXNNYXAuaCIKKyNpbmNsdWRlICJTZXRQcml2YXRlQnJhbmRWYXJp
YW50LmgiCisjaW5jbHVkZSAiU3R1YkluZm9TdW1tYXJ5LmgiCisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBBY2Nlc3NDYXNlOworY2xhc3MgQ29kZUJsb2NrOworY2xhc3MgU3RydWN0dXJlU3R1
YkluZm87CisKK2NsYXNzIFNldFByaXZhdGVCcmFuZFN0YXR1cyBmaW5hbCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZW51bSBTdGF0ZSA6IHVpbnQ4X3Qgewor
ICAgICAgICAvLyBJdCdzIHVuY2FjaGVkIHNvIHdlIGhhdmUgbm8gaW5mb3JtYXRpb24uCisgICAg
ICAgIE5vSW5mb3JtYXRpb24sCisgICAgICAgIC8vIEl0J3MgY2FjaGVkIGZvciBhIHNpbXBsZSBh
Y2Nlc3MuCisgICAgICAgIFNpbXBsZSwKKyAgICAgICAgLy8gSXQgd2lsbCBsaWtlbHkgdGFrZSB0
aGUgc2xvdyBwYXRoLgorICAgICAgICBMaWtlbHlUYWtlc1Nsb3dQYXRoLAorICAgICAgICAvLyBJ
dCBoYXMgYmVlbiBzZWVuIHRvIHRha2UgdGhlIHNsb3cgcGF0aC4KKyAgICAgICAgT2JzZXJ2ZWRU
YWtlc1Nsb3dQYXRoLAorICAgIH07CisKKyAgICBTZXRQcml2YXRlQnJhbmRTdGF0dXMoKQorICAg
ICAgICA6IG1fc3RhdGUoTm9JbmZvcm1hdGlvbikKKyAgICB7CisgICAgfQorCisgICAgZXhwbGlj
aXQgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzKFN0YXRlIHN0YXRlKQorICAgICAgICA6IG1fc3RhdGUo
c3RhdGUpCisgICAgeworICAgICAgICBBU1NFUlQoc3RhdGUgIT0gU2ltcGxlKTsKKyAgICB9CisK
KyAgICBzdGF0aWMgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBi
YXNlbGluZUJsb2NrLCBJQ1N0YXR1c01hcCYgYmFzZWxpbmVNYXAsIElDU3RhdHVzQ29udGV4dFN0
YWNrJiBkZmdDb250ZXh0U3RhY2ssIENvZGVPcmlnaW4pOworCisgICAgU3RhdGUgc3RhdGUoKSBj
b25zdCB7IHJldHVybiBtX3N0YXRlOyB9CisKKyAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0ZSAhPSBOb0luZm9ybWF0aW9uOyB9CisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25z
dCB7IHJldHVybiAhaXNTZXQoKTsgfQorICAgIGJvb2wgb2JzZXJ2ZWRTbG93UGF0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RhdGUgPT0gT2JzZXJ2ZWRUYWtlc1Nsb3dQYXRoOyB9CisgICAgYm9vbCBp
c1NpbXBsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gU2ltcGxlOyB9CisgICAgY29uc3Qg
VmVjdG9yPFNldFByaXZhdGVCcmFuZFZhcmlhbnQsIDE+JiB2YXJpYW50cygpIHsgcmV0dXJuIG1f
dmFyaWFudHM7IH0KKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIHNpbmdsZUlkZW50aWZpZXIoKSBj
b25zdDsKKworICAgIFNldFByaXZhdGVCcmFuZFN0YXR1cyBzbG93VmVyc2lvbigpIGNvbnN0Owor
CisgICAgLy8gQXR0ZW1wdHMgdG8gcmVkdWNlIHRoZSBzZXQgb2YgdmFyaWFudHMgdG8gZml0IHRo
ZSBnaXZlbiBzdHJ1Y3R1cmUgc2V0LiBUaGlzIG1heSBiZSBhcHByb3hpbWF0ZS4KKyAgICB2b2lk
IGZpbHRlcihjb25zdCBTdHJ1Y3R1cmVTZXQmKTsKKworICAgIHZvaWQgdmlzaXRBZ2dyZWdhdGUo
U2xvdFZpc2l0b3ImKTsKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7CisgICAg
Ym9vbCBmaW5hbGl6ZShWTSYpOworCisgICAgYm9vbCBhcHBlbmRWYXJpYW50KGNvbnN0IFNldFBy
aXZhdGVCcmFuZFZhcmlhbnQmKTsKKworICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0
OworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFNldFByaXZhdGVCcmFuZFN0YXR1cyhTdHViSW5m
b1N1bW1hcnksIFN0cnVjdHVyZVN0dWJJbmZvJik7CisgICAgdm9pZCBtZXJnZShjb25zdCBTZXRQ
cml2YXRlQnJhbmRTdGF0dXMmKTsKKworICAgIHN0YXRpYyBTZXRQcml2YXRlQnJhbmRTdGF0dXMg
Y29tcHV0ZUZvckJhc2VsaW5lKENvZGVCbG9jayosIElDU3RhdHVzTWFwJiwgQnl0ZWNvZGVJbmRl
eCwgRXhpdEZsYWcpOworI2lmIEVOQUJMRShKSVQpCisgICAgc3RhdGljIFNldFByaXZhdGVCcmFu
ZFN0YXR1cyBjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjaygKKyAgICAg
ICAgY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBT
dHJ1Y3R1cmVTdHViSW5mbyopOworI2VuZGlmCisKKyAgICBWZWN0b3I8U2V0UHJpdmF0ZUJyYW5k
VmFyaWFudCwgMT4gbV92YXJpYW50czsKKyAgICBTdGF0ZSBtX3N0YXRlOworfTsKKworfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U2V0UHJpdmF0ZUJyYW5kVmFyaWFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU2V0UHJpdmF0ZUJyYW5kVmFyaWFudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGRkZGU4YTI5MTNiNmVl
NDg2YjY4YWNiZjQwYTA0NzdmOTkwYmRhZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TZXRQcml2YXRlQnJhbmRWYXJpYW50LmNwcApAQCAtMCwwICsx
LDEwMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuQS4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNldFByaXZhdGVCcmFuZFZhcmlhbnQuaCIKKwor
I2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitTZXRQcml2YXRlQnJhbmRWYXJpYW50OjpTZXRQcml2YXRlQnJhbmRWYXJpYW50KENhY2hl
YWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVj
dHVyZSogbmV3U3RydWN0dXJlKQorICAgIDogbV9vbGRTdHJ1Y3R1cmUob2xkU3RydWN0dXJlKQor
ICAgICwgbV9uZXdTdHJ1Y3R1cmUobmV3U3RydWN0dXJlKQorICAgICwgbV9pZGVudGlmaWVyKFdU
Rk1vdmUoaWRlbnRpZmllcikpCit7IH0KKworU2V0UHJpdmF0ZUJyYW5kVmFyaWFudDo6flNldFBy
aXZhdGVCcmFuZFZhcmlhbnQoKSB7IH0KKworU2V0UHJpdmF0ZUJyYW5kVmFyaWFudDo6U2V0UHJp
dmF0ZUJyYW5kVmFyaWFudChjb25zdCBTZXRQcml2YXRlQnJhbmRWYXJpYW50JiBvdGhlcikKK3sK
KyAgICAqdGhpcyA9IG90aGVyOworfQorCitib29sIFNldFByaXZhdGVCcmFuZFZhcmlhbnQ6OmF0
dGVtcHRUb01lcmdlKGNvbnN0IFNldFByaXZhdGVCcmFuZFZhcmlhbnQmIG90aGVyKQoreworICAg
IGlmICghIW1faWRlbnRpZmllciAhPSAhIW90aGVyLm1faWRlbnRpZmllcikKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgaWYgKG1faWRlbnRpZmllciAmJiAobV9pZGVudGlmaWVyICE9IG90
aGVyLm1faWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX29s
ZFN0cnVjdHVyZSAhPSBvdGhlci5tX29sZFN0cnVjdHVyZSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIEFTU0VSVChtX25ld1N0cnVjdHVyZSA9PSBvdGhlci5tX25ld1N0cnVjdHVyZSk7CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBTZXRQcml2YXRlQnJhbmRWYXJpYW50OjptYXJr
SWZDaGVhcChTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBpZiAobV9vbGRTdHJ1Y3R1cmUp
CisgICAgICAgIG1fb2xkU3RydWN0dXJlLT5tYXJrSWZDaGVhcCh2aXNpdG9yKTsKKyAgICBpZiAo
bV9uZXdTdHJ1Y3R1cmUpCisgICAgICAgIG1fbmV3U3RydWN0dXJlLT5tYXJrSWZDaGVhcCh2aXNp
dG9yKTsKK30KKworYm9vbCBTZXRQcml2YXRlQnJhbmRWYXJpYW50OjpmaW5hbGl6ZShWTSYgdm0p
Cit7CisgICAgaWYgKCF2bS5oZWFwLmlzTWFya2VkKG1fb2xkU3RydWN0dXJlKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmIChtX25ld1N0cnVjdHVyZSAmJiAhdm0uaGVhcC5pc01hcmtl
ZChtX25ld1N0cnVjdHVyZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwordm9pZCBTZXRQcml2YXRlQnJhbmRWYXJpYW50Ojp2aXNpdEFnZ3JlZ2F0ZShTbG90
VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBtX2lkZW50aWZpZXIudmlzaXRBZ2dyZWdhdGUodmlz
aXRvcik7Cit9CisKK3ZvaWQgU2V0UHJpdmF0ZUJyYW5kVmFyaWFudDo6ZHVtcChQcmludFN0cmVh
bSYgb3V0KSBjb25zdAoreworICAgIGR1bXBJbkNvbnRleHQob3V0LCBudWxscHRyKTsKK30KKwor
dm9pZCBTZXRQcml2YXRlQnJhbmRWYXJpYW50OjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBv
dXQsIER1bXBDb250ZXh0KikgY29uc3QKK3sKKyAgICBvdXQucHJpbnQoIjwiKTsKKyAgICBvdXQu
cHJpbnQoImlkPSciLCBtX2lkZW50aWZpZXIsICInIik7CisgICAgaWYgKG1fb2xkU3RydWN0dXJl
KQorICAgICAgICBvdXQucHJpbnQoIiwgIiwgKm1fb2xkU3RydWN0dXJlKTsKKyAgICBpZiAobV9u
ZXdTdHJ1Y3R1cmUpCisgICAgICAgIG91dC5wcmludCgiIC0+ICIsICptX25ld1N0cnVjdHVyZSk7
CisgICAgb3V0LnByaW50KCI+Iik7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NldFByaXZhdGVCcmFuZFZhcmlhbnQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TZXRQcml2YXRlQnJhbmRWYXJpYW50
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjg1ZTRhMGUwMWFmZDRkYmEwZThjNmU2NDY3MjQ0YjBmMzZhMGIzYQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TZXRQcml2
YXRlQnJhbmRWYXJpYW50LmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgSWdhbGlhIFMuQS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDYWNoZWFi
bGVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8d3RmL0JveC5oPgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOworCitjbGFzcyBTZXRQcml2YXRlQnJhbmRW
YXJpYW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBTZXRQ
cml2YXRlQnJhbmRWYXJpYW50KENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZSogb2xkU3Ry
dWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSk7CisKKyAgICB+U2V0UHJpdmF0ZUJyYW5k
VmFyaWFudCgpOworCisgICAgU2V0UHJpdmF0ZUJyYW5kVmFyaWFudChjb25zdCBTZXRQcml2YXRl
QnJhbmRWYXJpYW50Jik7CisKKyAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fb2xkU3RydWN0dXJlOyB9CisgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX25ld1N0cnVjdHVyZTsgfQorCisgICAgYm9vbCBhdHRlbXB0VG9NZXJn
ZShjb25zdCBTZXRQcml2YXRlQnJhbmRWYXJpYW50JiBvdGhlcik7CisKKyAgICB2b2lkIHZpc2l0
QWdncmVnYXRlKFNsb3RWaXNpdG9yJik7CisgICAgdm9pZCBtYXJrSWZDaGVhcChTbG90VmlzaXRv
ciYpOworICAgIGJvb2wgZmluYWxpemUoVk0mKTsKKworICAgIHZvaWQgZHVtcChQcmludFN0cmVh
bSYpIGNvbnN0OworICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250
ZXh0KikgY29uc3Q7CisKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25z
dCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKworICAgIGJvb2wgb3ZlcmxhcHMoY29uc3QgU2V0
UHJpdmF0ZUJyYW5kVmFyaWFudCYgb3RoZXIpCisgICAgeworICAgICAgICBpZiAoISFtX2lkZW50
aWZpZXIgIT0gISFvdGhlci5tX2lkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgaWYgKG1faWRlbnRpZmllcikgeworICAgICAgICAgICAgaWYgKG1faWRlbnRpZmll
ciAhPSBvdGhlci5tX2lkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiBtX29sZFN0cnVjdHVyZSA9PSBvdGhlci5tX29sZFN0
cnVjdHVyZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFNldFByaXZhdGVC
cmFuZFN0YXR1czsKKworICAgIFN0cnVjdHVyZSogbV9vbGRTdHJ1Y3R1cmU7CisgICAgU3RydWN0
dXJlKiBtX25ld1N0cnVjdHVyZTsKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIG1faWRlbnRpZmll
cjsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKaW5kZXggNTI2ZmRhYmJhNTRkOTI3
NGIzZDViODJiODdjZjhmMDgxMzhhNjQ5Ni4uMjY2ZDdkODU3NjQ2YjM4ODVlZjg3NDNhODkzMDEy
YTQ0NDVhOTFhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0
cnVjdHVyZVN0dWJJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkluZm8uY3BwCkBAIC0yODQsNiArMjg0LDEyIEBAIHZvaWQgU3RydWN0dXJl
U3R1YkluZm86OnJlc2V0KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmIGxvY2tlciwgQ29k
ZUJsb2NrKiBjCiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpEZWxldGVCeVZhbDoKICAgICAgICAgcmVz
ZXREZWxCeShjb2RlQmxvY2ssICp0aGlzLCBEZWxCeUtpbmQ6Ok5vcm1hbEJ5VmFsKTsKICAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZDoKKyAgICAg
ICAgcmVzZXRDaGVja1ByaXZhdGVCcmFuZChjb2RlQmxvY2ssICp0aGlzKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpTZXRQcml2YXRlQnJhbmQ6CisgICAgICAgIHJlc2V0
U2V0UHJpdmF0ZUJyYW5kKGNvZGVCbG9jaywgKnRoaXMpOworICAgICAgICBicmVhazsKICAgICB9
CiAgICAgCiAgICAgZGVyZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKaW5kZXggODlkZjRkN2IxMjhjY2JjMDQ5NmQxNWVkZDYy
NjZjZmU3ZDIyOGNkMi4uYzViYjk1ZTBjMzc3YjdjOWI5NGQzOGM1YjQ0ODFhZTI5YmJhYzJlMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJ
bmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJ
bmZvLmgKQEAgLTU5LDYgKzU5LDggQEAgZW51bSBjbGFzcyBBY2Nlc3NUeXBlIDogaW50OF90IHsK
ICAgICBEZWxldGVCeUlELAogICAgIERlbGV0ZUJ5VmFsLAogICAgIEdldFByaXZhdGVOYW1lLAor
ICAgIENoZWNrUHJpdmF0ZUJyYW5kLAorICAgIFNldFByaXZhdGVCcmFuZCwKIH07CiAKIGVudW0g
Y2xhc3MgQ2FjaGVUeXBlIDogaW50OF90IHsKQEAgLTM1Miw2ICszNTQsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIEdQUlJlZyB0aGlzR1BSOwogICAgICAgICBHUFJSZWcgcHJvdG90eXBlR1BSOwogICAg
ICAgICBHUFJSZWcgcHJvcGVydHlHUFI7CisgICAgICAgIEdQUlJlZyBicmFuZEdQUjsKICAgICB9
IHJlZ3M7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBHUFJSZWcgdmFsdWVUYWdHUFI7CkBA
IC0zNjEsNiArMzY0LDcgQEAgcHVibGljOgogICAgIHVuaW9uIHsKICAgICAgICAgR1BSUmVnIHRo
aXNUYWdHUFI7CiAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eVRhZ0dQUjsKKyAgICAgICAgR1BSUmVn
IGJyYW5kVGFnR1BSOwogICAgIH0gdjsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCBiM2FkYzBiNzdl
YjdjNzI0MTg2YTk4MWM2MzUzYzMxOWE1OTliMGUwLi45M2RmZjc3NDJkMzc0ZWVjM2VmYTJkZTA3
NGUyODQ4MWY5Njk2MTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTY5LDYgKzY5LDEwIEBAIFVubGlua2VkQ29k
ZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayhWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBD
b2RlVHlwZSBjb2RlCiAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoaG9sZExvY2so
Y2VsbExvY2soKSkpOwogICAgICAgICBtX3JhcmVEYXRhLT5tX25lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
OjpZZXMpOwogICAgIH0KKyAgICBpZiAoaW5mby5wcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpID09
IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOZWVkZWQpIHsKKyAgICAgICAgY3JlYXRlUmFyZURh
dGFJZk5lY2Vzc2FyeShob2xkTG9jayhjZWxsTG9jaygpKSk7CisgICAgICAgIG1fcmFyZURhdGEt
Pm1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5lZWRlZCk7CisgICAgfQogfQogCiB2b2lkIFVubGlua2VkQ29k
ZUJsb2NrOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5oCmluZGV4IDAwZGM2MTYzMzVmZDMxYjA0MzI1MWUzNDQwMGU1N2RlZjUzMTVkNWYuLjFmNTFl
Y2U1ZDZmODZkNzA5NTExYjRhNGMxODJjNjRjYmZhMTgzYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC0yNjYsNiArMjY2
LDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
OjpObzsKICAgICB9CiAKKyAgICBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRS
ZXF1aXJlbWVudCgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9yYXJlRGF0YSkKKyAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxQcml2YXRlQnJhbmRSZXF1aXJlbWVudD4obV9yYXJl
RGF0YS0+bV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7CisgICAgICAgIHJldHVybiBQcml2YXRl
QnJhbmRSZXF1aXJlbWVudDo6Tm9uZTsKKyAgICB9CisKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mKSBjb25zdDsKIAogICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyYgbGl2ZW5lc3NBbmFs
eXNpcyhDb2RlQmxvY2sqIGNvZGVCbG9jaykKQEAgLTQwNyw2ICs0MTQsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIFJlZkNvdW50ZWRBcnJheTxDb25zdGFudElkZW50aWZpZXJTZXRFbnRyeT4gbV9jb25z
dGFudElkZW50aWZpZXJTZXRzOwogCiAgICAgICAgIHVuc2lnbmVkIG1fbmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIgOiAxOworICAgICAgICB1bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVt
ZW50IDogMTsKICAgICB9OwogCiAgICAgaW50IG91dE9mTGluZUp1bXBPZmZzZXQoSW5zdHJ1Y3Rp
b25TdHJlYW06Ok9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5oCmluZGV4IDJlYjk4NGMxYjA1
YTQ1ZTBhYTUyMGUxZmQzNzhhZDllMmZjOTMyMjIuLjk0YzY4NzBlOTk0YzJiZjVjOTgyY2U5NTJl
NGM1MzRiZGM5NmI0ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5oCkBAIC01MCw2ICs1MCw3IEBA
IHB1YmxpYzoKICAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4g
bV9jb2RlQmxvY2stPnN1cGVyQmluZGluZygpOyB9CiAgICAgSlNQYXJzZXJTY3JpcHRNb2RlIHNj
cmlwdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+c2NyaXB0TW9kZSgpOyB9CiAg
ICAgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIo
KSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIo
KTsgfQorICAgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50
KCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCk7
IH0KICAgICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnVzZXNF
dmFsKCk7IH0KICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4g
bV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpOyB9CiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSB7
IHJldHVybiBtX2NvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9uKCk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUuY3BwCmluZGV4IDdlY2I0ZmM3NTlhZDBmMTEzODliNjY2OTQzZjA1N2RmM2IzZGQ3MWUu
LjgwNWRmODBhZDUyNjk2ZGUyNGExMDJiYWU4YzM0ODRkNzVhZmM5NmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlLmNwcApAQCAtNzAsMTEgKzcwLDEyIEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAKICAgICBib29s
IGlzQ2xhc3NDb250ZXh0ID0gZXhlY3V0YWJsZS0+c3VwZXJCaW5kaW5nKCkgPT0gU3VwZXJCaW5k
aW5nOjpOZWVkZWQgfHwgZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2Rl
OjpDbGFzc0ZpZWxkSW5pdGlhbGl6ZXJNb2RlOwogCi0gICAgVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKHZtLCBGdW5j
dGlvbkNvZGUsIEV4ZWN1dGFibGVJbmZvKGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBraW5kID09IENv
ZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0aW9uS2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwg
ZXhlY3V0YWJsZS0+Y29uc3RydWN0b3JLaW5kKCksIHNjcmlwdE1vZGUsIGV4ZWN1dGFibGUtPnN1
cGVyQmluZGluZygpLCBwYXJzZU1vZGUsIGV4ZWN1dGFibGUtPmRlcml2ZWRDb250ZXh0VHlwZSgp
LCBleGVjdXRhYmxlLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBmYWxzZSwgaXNDbGFz
c0NvbnRleHQsIEV2YWxDb250ZXh0VHlwZTo6RnVuY3Rpb25FdmFsQ29udGV4dCksIGNvZGVHZW5l
cmF0aW9uTW9kZSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKHZtLCBGdW5jdGlvbkNvZGUsIEV4ZWN1dGFi
bGVJbmZvKGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGV4
ZWN1dGFibGUtPnByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCksIGZ1bmN0aW9uS2luZCA9PSBVbmxp
bmtlZEJ1aWx0aW5GdW5jdGlvbiwgZXhlY3V0YWJsZS0+Y29uc3RydWN0b3JLaW5kKCksIHNjcmlw
dE1vZGUsIGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpLCBwYXJzZU1vZGUsIGV4ZWN1dGFibGUt
PmRlcml2ZWRDb250ZXh0VHlwZSgpLCBleGVjdXRhYmxlLT5uZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplcigpLCBmYWxzZSwgaXNDbGFzc0NvbnRleHQsIEV2YWxDb250ZXh0VHlwZTo6RnVuY3Rpb25F
dmFsQ29udGV4dCksIGNvZGVHZW5lcmF0aW9uTW9kZSk7CiAKICAgICBhdXRvIHBhcmVudFNjb3Bl
VERaVmFyaWFibGVzID0gZXhlY3V0YWJsZS0+cGFyZW50U2NvcGVURFpWYXJpYWJsZXMoKTsKKyAg
ICBQcml2YXRlTmFtZUVudmlyb25tZW50IHBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQgPSBl
eGVjdXRhYmxlLT5wYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50KCk7CiAgICAgRUNNQU1vZGUg
ZWNtYU1vZGUgPSBleGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpID8gRUNNQU1vZGU6OnN0
cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgpOwotICAgIGVycm9yID0gQnl0ZWNvZGVHZW5lcmF0
b3I6OmdlbmVyYXRlKHZtLCBmdW5jdGlvbi5nZXQoKSwgc291cmNlLCByZXN1bHQsIGNvZGVHZW5l
cmF0aW9uTW9kZSwgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIGVjbWFNb2RlKTsKKyAgICBlcnJv
ciA9IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSh2bSwgZnVuY3Rpb24uZ2V0KCksIHNvdXJj
ZSwgcmVzdWx0LCBjb2RlR2VuZXJhdGlvbk1vZGUsIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCAm
cGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgZWNtYU1vZGUpOwogCiAgICAgaWYgKGVycm9y
LmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC04Miw3ICs4Myw3IEBAIHN0
YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2soCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHBhcmVudFNvdXJjZSwgRnVuY3Rpb25NZXRhZGF0YU5v
ZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGtpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29u
c3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIFJlZlB0cjxURFpF
bnZpcm9ubWVudExpbms+IHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBEZXJpdmVkQ29udGV4dFR5
cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3Rv
cikKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBwYXJlbnRT
b3VyY2UsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBr
aW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9k
ZSBzY3JpcHRNb2RlLCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiBwYXJlbnRTY29wZVREWlZh
cmlhYmxlcywgT3B0aW9uYWw8UHJpdmF0ZU5hbWVFbnZpcm9ubWVudD4gcGFyZW50UHJpdmF0ZU5h
bWVFbnZpcm9ubWVudCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZh
dGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29sIGlzQnVpbHRp
bkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKQogICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQogICAg
ICwgbV9maXJzdExpbmVPZmZzZXQobm9kZS0+Zmlyc3RMaW5lKCkgLSBwYXJlbnRTb3VyY2UuZmly
c3RMaW5lKCkub25lQmFzZWRJbnQoKSkKICAgICAsIG1faXNJblN0cmljdENvbnRleHQobm9kZS0+
aXNJblN0cmljdENvbnRleHQoKSkKQEAgLTEwMyw2ICsxMDQsNyBAQCBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdAogICAgICwgbV90eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQobm9kZS0+ZnVuY3Rpb25L
ZXl3b3JkU3RhcnQoKSkKICAgICAsIG1fdHlwZVByb2ZpbGluZ0VuZE9mZnNldChub2RlLT5zdGFy
dFN0YXJ0T2Zmc2V0KCkgKyBub2RlLT5zb3VyY2UoKS5sZW5ndGgoKSAtIDEpCiAgICAgLCBtX3Bh
cmFtZXRlckNvdW50KG5vZGUtPnBhcmFtZXRlckNvdW50KCkpCisgICAgLCBtX3ByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50KHN0YXRpY19jYXN0PHVuc2lnbmVkPihwcml2YXRlQnJhbmRSZXF1aXJlbWVu
dCkpCiAgICAgLCBtX2ZlYXR1cmVzKDApCiAgICAgLCBtX3NvdXJjZVBhcnNlTW9kZShub2RlLT5w
YXJzZU1vZGUoKSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVk
Pihub2RlLT5jb25zdHJ1Y3RvcktpbmQoKSkpCkBAIC0xMjIsMTIgKzEyNCwxNSBAQCBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdAogICAgIEFTU0VSVChtX3NjcmlwdE1vZGUgPT0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHNjcmlwdE1vZGUpKTsKICAgICBBU1NFUlQobV9zdXBlckJpbmRpbmcgPT0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPnN1cGVyQmluZGluZygpKSk7CiAgICAgQVNTRVJUKG1f
ZGVyaXZlZENvbnRleHRUeXBlID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXJpdmVkQ29udGV4
dFR5cGUpKTsKKyAgICBBU1NFUlQobV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9PSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4ocHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpKTsKICAgICBBU1NFUlQoISht
X2lzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yICYmIGNvbnN0cnVjdG9yS2luZCgpID09
IENvbnN0cnVjdG9yS2luZDo6Tm9uZSkpOwogICAgIEFTU0VSVCghbV9uZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplciB8fCAoaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKSB8fCBkZXJpdmVkQ29u
dGV4dFR5cGUgPT0gRGVyaXZlZENvbnRleHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0
KSk7CiAgICAgaWYgKCFub2RlLT5jbGFzc1NvdXJjZSgpLmlzTnVsbCgpKQogICAgICAgICBzZXRD
bGFzc1NvdXJjZShub2RlLT5jbGFzc1NvdXJjZSgpKTsKICAgICBpZiAocGFyZW50U2NvcGVURFpW
YXJpYWJsZXMpCiAgICAgICAgIGVuc3VyZVJhcmVEYXRhKCkubV9wYXJlbnRTY29wZVREWlZhcmlh
YmxlcyA9IFdURk1vdmUocGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOworICAgIGlmIChwYXJlbnRQ
cml2YXRlTmFtZUVudmlyb25tZW50KQorICAgICAgICBlbnN1cmVSYXJlRGF0YSgpLm1fcGFyZW50
UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCA9IFdURk1vdmUoKnBhcmVudFByaXZhdGVOYW1lRW52aXJv
bm1lbnQpOwogfQogCiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6flVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKaW5kZXggYmVhZjFlNWQ1YmU4ZjEx
YmVmZjNlZDNiMWI4MDc5NTljNDYyN2FiNy4uZmI3ZGJhOWVmYjRhYTA0ZGFkMzZhMTI4MWMwMTA4
ZTUwZmJiZTRjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKQEAgLTcwLDEwICs3MCwxMCBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiAmdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFj
ZS5zcGFjZTsKICAgICB9CiAKLSAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IGNyZWF0ZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25NZXRhZGF0
YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIHVubGlua2VkRnVuY3Rpb25LaW5kLCBD
b25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3Jp
cHRNb2RlLCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiBwYXJlbnRTY29wZVREWlZhcmlhYmxl
cywgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNCdWlsdGluRGVm
YXVsdENsYXNzQ29uc3RydWN0b3IgPSBmYWxzZSkKKyAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqIGNyZWF0ZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVu
Y3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIHVubGlua2VkRnVu
Y3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2Ny
aXB0TW9kZSBzY3JpcHRNb2RlLCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiBwYXJlbnRTY29w
ZVREWlZhcmlhYmxlcywgT3B0aW9uYWw8UHJpdmF0ZU5hbWVFbnZpcm9ubWVudD4gcGFyZW50UHJp
dmF0ZU5hbWVFbnZpcm9ubWVudCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlw
ZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIs
IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29sIGlz
QnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yID0gZmFsc2UpCiAgICAgewogICAgICAgICBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0uaGVhcCkpCi0gICAgICAgICAg
ICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgbm9kZSwgdW5saW5rZWRGdW5jdGlvbktpbmQs
IGNvbnN0cnVjdEFiaWxpdHksIHNjcmlwdE1vZGUsIFdURk1vdmUocGFyZW50U2NvcGVURFpWYXJp
YWJsZXMpLCBkZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBp
c0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3Rvcik7CisgICAgICAgICAgICBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1
cmUuZ2V0KCksIHNvdXJjZSwgbm9kZSwgdW5saW5rZWRGdW5jdGlvbktpbmQsIGNvbnN0cnVjdEFi
aWxpdHksIHNjcmlwdE1vZGUsIFdURk1vdmUocGFyZW50U2NvcGVURFpWYXJpYWJsZXMpLCBXVEZN
b3ZlKHBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQpLCBkZXJpdmVkQ29udGV4dFR5cGUsIG5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCwgaXNCdWls
dGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IpOwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3Jl
YXRpb24odm0pOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpAQCAtMTQzLDYgKzE0
Myw4IEBAIHB1YmxpYzoKICAgICBDb2RlRmVhdHVyZXMgZmVhdHVyZXMoKSBjb25zdCB7IHJldHVy
biBtX2ZlYXR1cmVzOyB9CiAgICAgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcygpIGNvbnN0IHsg
cmV0dXJuIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXM7IH0KIAorICAgIFByaXZhdGVCcmFuZFJlcXVp
cmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ+KG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOyB9
CisKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CiAg
ICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIApAQCAtMTc0LDYgKzE3NiwxMyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIG1fcmFy
ZURhdGEtPm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7CiAgICAgfQorCisgICAgUHJpdmF0ZU5h
bWVFbnZpcm9ubWVudCBwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50KCkgY29uc3QKKyAgICB7
CisgICAgICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgICAgIHJldHVybiBQcml2YXRlTmFt
ZUVudmlyb25tZW50KCk7CisgICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX3BhcmVudFByaXZh
dGVOYW1lRW52aXJvbm1lbnQ7CisgICAgfQogICAgIAogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9u
KCkgY29uc3QgeyByZXR1cm4gaXNBcnJvd0Z1bmN0aW9uUGFyc2VNb2RlKHBhcnNlTW9kZSgpKTsg
fQogCkBAIC0yMTAsNiArMjE5LDcgQEAgcHVibGljOgogICAgICAgICBTdHJpbmcgbV9zb3VyY2VN
YXBwaW5nVVJMRGlyZWN0aXZlOwogICAgICAgICBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiBt
X3BhcmVudFNjb3BlVERaVmFyaWFibGVzOwogICAgICAgICBWZWN0b3I8SlNUZXh0UG9zaXRpb24+
IG1fY2xhc3NGaWVsZExvY2F0aW9uczsKKyAgICAgICAgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCBt
X3BhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQ7CiAgICAgfTsKIAogICAgIE5lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI+KG1fbmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIpOyB9CkBAIC0yMjksNyArMjM5LDcgQEAgcHVibGljOgogICAgIH0KIAog
cHJpdmF0ZToKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYsIFN0cnVjdHVyZSos
IGNvbnN0IFNvdXJjZUNvZGUmLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rp
b25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUsIFJlZlB0cjxURFpF
bnZpcm9ubWVudExpbms+LCAgSlNDOjpEZXJpdmVkQ29udGV4dFR5cGUsIEpTQzo6TmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3Ip
OworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNJiwgU3RydWN0dXJlKiwgY29uc3Qg
U291cmNlQ29kZSYsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgVW5saW5rZWRGdW5jdGlvbktpbmQs
IENvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZSwgUmVmUHRyPFREWkVudmlyb25t
ZW50TGluaz4sIE9wdGlvbmFsPFByaXZhdGVOYW1lRW52aXJvbm1lbnQ+LCBKU0M6OkRlcml2ZWRD
b250ZXh0VHlwZSwgSlNDOjpOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQsIGJvb2wgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IpOwogICAg
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKERlY29kZXImLCBjb25zdCBDYWNoZWRGdW5jdGlv
bkV4ZWN1dGFibGUmKTsKIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwg
U2xvdFZpc2l0b3ImKTsKQEAgLTI2MSw3ICsyNzEsOCBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVk
IG1faXNDYWNoZWQgOiAxOwogICAgIHVuc2lnbmVkIG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0
OwogICAgIHVuc2lnbmVkIG1fdHlwZVByb2ZpbGluZ0VuZE9mZnNldDsKLSAgICB1bnNpZ25lZCBt
X3BhcmFtZXRlckNvdW50OworICAgIHVuc2lnbmVkIG1fcGFyYW1ldGVyQ291bnQgOiAzMTsKKyAg
ICB1bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsKICAgICBDb2RlRmVhdHVy
ZXMgbV9mZWF0dXJlczsKICAgICBTb3VyY2VQYXJzZU1vZGUgbV9zb3VyY2VQYXJzZU1vZGU7CiAg
ICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA2
MTdjYTBjYmM1NWJjZTZjYzA3ZTVlZGJlNTM0ZDk3YTk4NDI4OWY0Li40ZTU3MTllZjgyNThmM2Iy
OWZlNjBkNzZkYjIwMmQyZjliMjhhNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMjg5LDcgKzI4
OSw3IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgcmV0
dXJuIFBhcnNlckVycm9yKFBhcnNlckVycm9yOjpFcnJvck5vbmUpOwogfQogCi1CeXRlY29kZUdl
bmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBQcm9ncmFtTm9kZSogcHJvZ3JhbU5v
ZGUsIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdl
bmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFJlZlB0cjxURFpFbnZpcm9u
bWVudExpbms+JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRUNNQU1vZGUgZWNtYU1vZGUpCitC
eXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBQcm9ncmFtTm9kZSog
cHJvZ3JhbU5vZGUsIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25T
ZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFJlZlB0cjxU
RFpFbnZpcm9ubWVudExpbms+JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgY29uc3QgUHJpdmF0
ZU5hbWVFbnZpcm9ubWVudCosIEVDTUFNb2RlIGVjbWFNb2RlKQogICAgIDogQnl0ZWNvZGVHZW5l
cmF0b3JCYXNlKG1ha2VVbmlxdWU8VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I+KHZtLCBjb2Rl
QmxvY2spLCBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxS
ZWdpc3RlcnMoKSkKICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2RlKGNvZGVHZW5lcmF0aW9uTW9k
ZSkKICAgICAsIG1fc2NvcGVOb2RlKHByb2dyYW1Ob2RlKQpAQCAtMzM2LDcgKzMzNiw3IEBAIEJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBw
cm9ncmFtTm9kZSwgVW5saW5rZWRQCiAgICAgfQogfQogCi1CeXRlY29kZUdlbmVyYXRvcjo6Qnl0
ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5r
ZWRGdW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25N
b2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+
JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRUNNQU1vZGUgZWNtYU1vZGUpCitCeXRlY29kZUdl
bmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9u
Tm9kZSwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29k
ZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFJlZlB0cjxURFpFbnZp
cm9ubWVudExpbms+JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgY29uc3QgUHJpdmF0ZU5hbWVF
bnZpcm9ubWVudCogcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgRUNNQU1vZGUgZWNtYU1v
ZGUpCiAgICAgOiBCeXRlY29kZUdlbmVyYXRvckJhc2UobWFrZVVuaXF1ZTxVbmxpbmtlZENvZGVC
bG9ja0dlbmVyYXRvcj4odm0sIGNvZGVCbG9jayksIENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNh
bGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKQogICAgICwgbV9jb2RlR2VuZXJhdGlv
bk1vZGUoY29kZUdlbmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5vZGUoZnVuY3Rpb25Ob2Rl
KQpAQCAtMzU5LDYgKzM1OSw4IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRv
cihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgLCBtX2Vj
bWFNb2RlKGVjbWFNb2RlKQogICAgICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoY29kZUJsb2NrLT5k
ZXJpdmVkQ29udGV4dFR5cGUoKSkKIHsKKyAgICBwdXNoUHJpdmF0ZUFjY2Vzc05hbWVzKHBhcmVu
dFByaXZhdGVOYW1lRW52aXJvbm1lbnQpOworCiAgICAgU3ltYm9sVGFibGUqIGZ1bmN0aW9uU3lt
Ym9sVGFibGUgPSBTeW1ib2xUYWJsZTo6Y3JlYXRlKG1fdm0pOwogICAgIGZ1bmN0aW9uU3ltYm9s
VGFibGUtPnNldFVzZXNOb25TdHJpY3RFdmFsKG1fdXNlc05vblN0cmljdEV2YWwpOwogICAgIGlu
dCBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXggPSAwOwpAQCAtNzA3LDYgKzcwOSw5IEBAIEJ5dGVj
b2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVu
Y3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgICAgICAgICAgY2FzZSBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmU6CiAgICAgICAgICAgICAgICAgY2FzZSBDb25zdHJ1Y3RvcktpbmQ6OkJhc2U6CiAgICAg
ICAgICAgICAgICAgICAgIGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChPcHRpb25zOjp1c2VQcml2YXRlTWV0aG9kcygpICYmIHByaXZhdGVC
cmFuZFJlcXVpcmVtZW50KCkgPT0gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5lZWRlZCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGVtaXRJbnN0YWxsUHJpdmF0ZUJyYW5kKCZtX3RoaXNSZWdp
c3Rlcik7CisKICAgICAgICAgICAgICAgICAgICAgZW1pdEluc3RhbmNlRmllbGRJbml0aWFsaXph
dGlvbklmTmVlZGVkKCZtX3RoaXNSZWdpc3RlciwgJm1fY2FsbGVlUmVnaXN0ZXIsIG1fc2NvcGVO
b2RlLT5wb3NpdGlvbigpLCBtX3Njb3BlTm9kZS0+cG9zaXRpb24oKSwgbV9zY29wZU5vZGUtPnBv
c2l0aW9uKCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBj
YXNlIENvbnN0cnVjdG9yS2luZDo6RXh0ZW5kczoKQEAgLTgzOCw3ICs4NDMsNyBAQCBCeXRlY29k
ZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0
aW9uTm9kZSwgVW5saW5rZQogICAgIHB1c2hMZXhpY2FsU2NvcGUobV9zY29wZU5vZGUsIFREWkNo
ZWNrT3B0aW1pemF0aW9uOjpPcHRpbWl6ZSwgTmVzdGVkU2NvcGVUeXBlOjpJc05vdE5lc3RlZCwg
bnVsbHB0ciwgc2hvdWxkSW5pdGlhbGl6ZUJsb2NrU2NvcGVkRnVuY3Rpb25zKTsKIH0KIAotQnl0
ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2YWxO
b2RlLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5l
cmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBSZWZQdHI8VERaRW52aXJvbm1l
bnRMaW5rPiYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIEVDTUFNb2RlIGVjbWFNb2RlKQorQnl0
ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2YWxO
b2RlLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5l
cmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBSZWZQdHI8VERaRW52aXJvbm1l
bnRMaW5rPiYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIGNvbnN0IFByaXZhdGVOYW1lRW52aXJv
bm1lbnQqIHBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQsIEVDTUFNb2RlIGVjbWFNb2RlKQog
ICAgIDogQnl0ZWNvZGVHZW5lcmF0b3JCYXNlKG1ha2VVbmlxdWU8VW5saW5rZWRDb2RlQmxvY2tH
ZW5lcmF0b3I+KHZtLCBjb2RlQmxvY2spLCBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVT
YXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSkKICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2Rl
KGNvZGVHZW5lcmF0aW9uTW9kZSkKICAgICAsIG1fc2NvcGVOb2RlKGV2YWxOb2RlKQpAQCAtODU2
LDYgKzg2MSw4IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0s
IEV2YWxOb2RlKiBldmFsTm9kZSwgVW5saW5rZWRFdmFsQ29kCiB7CiAgICAgbV9jb2RlQmxvY2st
PnNldE51bVBhcmFtZXRlcnMoMSk7CiAKKyAgICBwdXNoUHJpdmF0ZUFjY2Vzc05hbWVzKHBhcmVu
dFByaXZhdGVOYW1lRW52aXJvbm1lbnQpOworCiAgICAgbV9jYWNoZWRQYXJlbnRURFogPSBwYXJl
bnRTY29wZVREWlZhcmlhYmxlczsKIAogICAgIGVtaXRFbnRlcigpOwpAQCAtOTAxLDcgKzkwOCw3
IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEV2YWxOb2Rl
KiBldmFsTm9kZSwgVW5saW5rZWRFdmFsQ29kCiAgICAgcHVzaExleGljYWxTY29wZShtX3Njb3Bl
Tm9kZSwgVERaQ2hlY2tPcHRpbWl6YXRpb246Ok9wdGltaXplLCBOZXN0ZWRTY29wZVR5cGU6Oklz
Tm90TmVzdGVkLCBudWxscHRyLCBzaG91bGRJbml0aWFsaXplQmxvY2tTY29wZWRGdW5jdGlvbnMp
OwogfQogCi1CeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBNb2R1
bGVQcm9ncmFtTm9kZSogbW9kdWxlUHJvZ3JhbU5vZGUsIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2Vu
ZXJhdGlvbk1vZGUsIGNvbnN0IFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+JiBwYXJlbnRTY29w
ZVREWlZhcmlhYmxlcywgRUNNQU1vZGUgZWNtYU1vZGUpCitCeXRlY29kZUdlbmVyYXRvcjo6Qnl0
ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBNb2R1bGVQcm9ncmFtTm9kZSogbW9kdWxlUHJvZ3JhbU5v
ZGUsIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8
Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFJlZlB0cjxURFpF
bnZpcm9ubWVudExpbms+JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgY29uc3QgUHJpdmF0ZU5h
bWVFbnZpcm9ubWVudCosIEVDTUFNb2RlIGVjbWFNb2RlKQogICAgIDogQnl0ZWNvZGVHZW5lcmF0
b3JCYXNlKG1ha2VVbmlxdWU8VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I+KHZtLCBjb2RlQmxv
Y2spLCBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdp
c3RlcnMoKSkKICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2RlKGNvZGVHZW5lcmF0aW9uTW9kZSkK
ICAgICAsIG1fc2NvcGVOb2RlKG1vZHVsZVByb2dyYW1Ob2RlKQpAQCAtMTg5Myw4ICsxOTAwLDEw
IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6Omluc3RhbnRpYXRlTGV4aWNhbFZhcmlhYmxlcyhj
b25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBsCiAKICAgICAgICAgICAgIC8vIEZJWE1FOiBvbmx5
IGRvIHRoaXMgaWYgdGhlcmUgaXMgYW4gZXZhbCgpIHdpdGhpbiBhIG5lc3RlZCBzY29wZSAtLS0g
b3RoZXJ3aXNlIGl0IGlzbid0IG5lZWRlZC4KICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY2NjMKLSAgICAgICAgICAgIGlmIChlbnRyeS52
YWx1ZS5pc1ByaXZhdGVOYW1lKCkpCi0gICAgICAgICAgICAgICAgc3ltYm9sVGFibGUtPmFkZFBy
aXZhdGVOYW1lKGVudHJ5LmtleS5nZXQoKSk7CisgICAgICAgICAgICBpZiAoZW50cnkudmFsdWUu
aXNQcml2YXRlRmllbGQoKSkKKyAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+YWRkUHJpdmF0
ZU5hbWUoZW50cnkua2V5LmdldCgpLCBQcml2YXRlTmFtZUVudHJ5KFByaXZhdGVOYW1lRW50cnk6
OlRyYWl0czo6SXNEZWNsYXJlZCkpOworICAgICAgICAgICAgZWxzZSBpZiAoZW50cnkudmFsdWUu
aXNQcml2YXRlTWV0aG9kKCkpCisgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUtPmFkZFByaXZh
dGVOYW1lKGVudHJ5LmtleS5nZXQoKSwgUHJpdmF0ZU5hbWVFbnRyeShQcml2YXRlTmFtZUVudHJ5
OjpUcmFpdHM6OklzRGVjbGFyZWQgfCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzTWV0aG9k
KSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGhhc0NhcHR1cmVkVmFyaWFibGVzOwpA
QCAtMjcxNCw3ICsyNzIzLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQ
dXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmEKICAgICByZXR1cm4g
dmFsdWU7CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0R2V0
QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9w
ZXJ0eSkKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0UHJpdmF0ZU5hbWUo
UmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSkK
IHsKICAgICBPcEdldFByaXZhdGVOYW1lOjplbWl0KHRoaXMsIGRzdCwgYmFzZSwgcHJvcGVydHkp
OwogICAgIHJldHVybiBkc3Q7CkBAIC0yNzUwLDEyICsyNzU5LDQ0IEBAIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVmaW5lUHJpdmF0ZUZpZWxkKFJlZ2lzdGVySUQqIGJhc2Us
IFJlZ2lzdGVyCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0Q3JlYXRlUHJpdmF0ZUJyYW5kKFJlZ2lzdGVySUQqIHNjb3BlLCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCit7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNyZWF0
ZVByaXZhdGVTeW1ib2wgPSBtb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNv
bnN0YW50OjpjcmVhdGVQcml2YXRlU3ltYm9sKTsKKworICAgIENhbGxBcmd1bWVudHMgYXJndW1l
bnRzKCp0aGlzLCBudWxscHRyLCAwKTsKKyAgICBlbWl0TG9hZChhcmd1bWVudHMudGhpc1JlZ2lz
dGVyKCksIGpzVW5kZWZpbmVkKCkpOworICAgIFJlZ2lzdGVySUQqIG5ld1N5bWJvbCA9IGVtaXRD
YWxsKGZpbmFsRGVzdGluYXRpb24obnVsbHB0ciwgY3JlYXRlUHJpdmF0ZVN5bWJvbC5nZXQoKSks
IGNyZWF0ZVByaXZhdGVTeW1ib2wuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgYXJndW1lbnRz
LCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQsIERlYnVnZ2FibGVDYWxsOjpObyk7CisKKyAg
ICBWYXJpYWJsZSBwcml2YXRlQnJhbmRWYXIgPSB2YXJpYWJsZShwcm9wZXJ0eU5hbWVzKCkuYnVp
bHRpbk5hbWVzKCkucHJpdmF0ZUJyYW5kUHJpdmF0ZU5hbWUoKSk7CisKKyAgICBlbWl0UHV0VG9T
Y29wZShzY29wZSwgcHJpdmF0ZUJyYW5kVmFyLCBuZXdTeW1ib2wsIERvTm90VGhyb3dJZk5vdEZv
dW5kLCBJbml0aWFsaXphdGlvbk1vZGU6OkluaXRpYWxpemF0aW9uKTsKK30KKwordm9pZCBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdEluc3RhbGxQcml2YXRlQnJhbmQoUmVnaXN0ZXJJRCogdGFyZ2V0
KQoreworICAgIFZhcmlhYmxlIHByaXZhdGVCcmFuZFZhciA9IHZhcmlhYmxlKHByb3BlcnR5TmFt
ZXMoKS5idWlsdGluTmFtZXMoKS5wcml2YXRlQnJhbmRQcml2YXRlTmFtZSgpKTsKKyAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZUJyYW5kVmFyU2NvcGUgPSBlbWl0UmVzb2x2ZVNjb3BlKG51
bGxwdHIsIHByaXZhdGVCcmFuZFZhcik7CisgICAgUmVnaXN0ZXJJRCogcHJpdmF0ZUJyYW5kU3lt
Ym9sID0gZW1pdEdldFByaXZhdGVCcmFuZChuZXdUZW1wb3JhcnkoKSwgcHJpdmF0ZUJyYW5kVmFy
U2NvcGUuZ2V0KCkpOworICAgIE9wU2V0UHJpdmF0ZUJyYW5kOjplbWl0KHRoaXMsIHRhcmdldCwg
cHJpdmF0ZUJyYW5kU3ltYm9sKTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRHZXRQcml2YXRlQnJhbmQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzY29wZSkK
K3sKKyAgICBWYXJpYWJsZSBwcml2YXRlQnJhbmRWYXIgPSB2YXJpYWJsZShwcm9wZXJ0eU5hbWVz
KCkuYnVpbHRpbk5hbWVzKCkucHJpdmF0ZUJyYW5kUHJpdmF0ZU5hbWUoKSk7CisgICAgcmV0dXJu
IGVtaXRHZXRGcm9tU2NvcGUoZHN0LCBzY29wZSwgcHJpdmF0ZUJyYW5kVmFyLCBUaHJvd0lmTm90
Rm91bmQpOworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFByaXZhdGVG
aWVsZFB1dChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJ
RCogdmFsdWUpCiB7CiAgICAgT3BQdXRQcml2YXRlTmFtZTo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9w
ZXJ0eSwgdmFsdWUsIFByaXZhdGVGaWVsZFB1dEtpbmQ6OnNldCgpKTsKICAgICByZXR1cm4gdmFs
dWU7CiB9CiAKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDaGVja1ByaXZhdGVCcmFuZChS
ZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBicmFuZFN5bWJvbCkKK3sKKyAgICBPcENoZWNr
UHJpdmF0ZUJyYW5kOjplbWl0KHRoaXMsIGJhc2UsIGJyYW5kU3ltYm9sKTsKK30KKwogdm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFN1cGVyU2FtcGxlckJlZ2luKCkKIHsKICAgICBPcFN1cGVy
U2FtcGxlckJlZ2luOjplbWl0KHRoaXMpOwpAQCAtMjg5MCw2ICsyOTMxLDMyIEBAIHZvaWQgQnl0
ZWNvZGVHZW5lcmF0b3I6OmxpZnRURFpDaGVja0lmUG9zc2libGUoY29uc3QgVmFyaWFibGUmIHZh
cmlhYmxlKQogICAgIH0KIH0KIAorYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6aXNQcml2YXRlTWV0
aG9kKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQoreworICAgIGZvciAodW5zaWduZWQgaSA9IG1f
cHJpdmF0ZU5hbWVzU3RhY2suc2l6ZSgpOyBpLS07ICkgeworICAgICAgICBhdXRvJiBtYXAgPSBt
X3ByaXZhdGVOYW1lc1N0YWNrW2ldOworICAgICAgICBhdXRvIGl0ID0gbWFwLmZpbmQoaWRlbnQu
aW1wbCgpKTsKKyAgICAgICAgaWYgKGl0ICE9IG1hcC5lbmQoKSkKKyAgICAgICAgICAgIHJldHVy
biBpdC0+dmFsdWUuaXNNZXRob2QoKTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnB1c2hQcml2YXRlQWNjZXNzTmFtZXMoY29uc3QgUHJp
dmF0ZU5hbWVFbnZpcm9ubWVudCogZW52aXJvbm1lbnQpCit7CisgICAgaWYgKCFlbnZpcm9ubWVu
dCB8fCAhZW52aXJvbm1lbnQtPnNpemUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wcml2
YXRlTmFtZXNTdGFjay5hcHBlbmQoKmVudmlyb25tZW50KTsKK30KKwordm9pZCBCeXRlY29kZUdl
bmVyYXRvcjo6cG9wUHJpdmF0ZUFjY2Vzc05hbWVzKCkKK3sKKyAgICBBU1NFUlQobV9wcml2YXRl
TmFtZXNTdGFjay5zaXplKCkpOworICAgIG1fcHJpdmF0ZU5hbWVzU3RhY2sucmVtb3ZlTGFzdCgp
OworfQorCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoVERaVmFyaWFibGVzKGNvbnN0IFZh
cmlhYmxlRW52aXJvbm1lbnQmIGVudmlyb25tZW50LCBURFpDaGVja09wdGltaXphdGlvbiBvcHRp
bWl6YXRpb24sIFREWlJlcXVpcmVtZW50IHJlcXVpcmVtZW50KQogewogICAgIGlmICghZW52aXJv
bm1lbnQuc2l6ZSgpKQpAQCAtMjkxMSw2ICsyOTc4LDI4IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OnB1c2hURFpWYXJpYWJsZXMoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgZW52aXJvbm1l
bnQsCiAgICAgbV9URFpTdGFjay5hcHBlbmQoVERaU3RhY2tFbnRyeSB7IFdURk1vdmUobWFwKSwg
bnVsbHB0ciB9KTsKIH0KIAorT3B0aW9uYWw8UHJpdmF0ZU5hbWVFbnZpcm9ubWVudD4gQnl0ZWNv
ZGVHZW5lcmF0b3I6OmdldEF2YWlsYWJsZVByaXZhdGVBY2Nlc3NOYW1lcygpCit7CisgICAgUHJp
dmF0ZU5hbWVFbnZpcm9ubWVudCByZXN1bHQ7CisgICAgU21hbGxQdHJTZXQ8VW5pcXVlZFN0cmlu
Z0ltcGwqLCAxNj4gZXhjbHVkZWROYW1lczsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3ByaXZh
dGVOYW1lc1N0YWNrLnNpemUoKTsgaS0tOyApIHsKKyAgICAgICAgYXV0byYgbWFwID0gbV9wcml2
YXRlTmFtZXNTdGFja1tpXTsKKyAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1hcCkgIHsKKyAg
ICAgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc1ByaXZhdGVNZXRob2RPckFjZXNzb3IoKSkgewor
ICAgICAgICAgICAgICAgIGlmICghZXhjbHVkZWROYW1lcy5jb250YWlucyhlbnRyeS5rZXkuZ2V0
KCkpKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoZW50cnkua2V5LCBlbnRyeS52
YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIGV4Y2x1ZGVkTmFtZXMuYWRkKGVudHJ5LmtleS5n
ZXQoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICAgICAgZXhjbHVkZWROYW1lcy5hZGQoZW50cnkua2V5LmdldCgpKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGlmICghcmVzdWx0LnNpemUoKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiBC
eXRlY29kZUdlbmVyYXRvcjo6Z2V0VmFyaWFibGVzVW5kZXJURFooKQogewogICAgIFJlZlB0cjxU
RFpFbnZpcm9ubWVudExpbms+IHBhcmVudCA9IG1fY2FjaGVkUGFyZW50VERaOwpAQCAtMzEyMCw5
ICszMjA5LDkgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdNZXRob2RE
ZWZpbml0aW9uKFJlZ2lzdGVySUQqIGRzdCwgTWV0aG9kRGUKIH0KIAogUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCogZHN0
LCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1l
LAotICAgIGNvbnN0IElkZW50aWZpZXImIGVjbWFOYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBjbGFz
c1NvdXJjZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIpCisgICAgY29uc3QgSWRlbnRpZmllciYgZWNtYU5hbWUsIGNvbnN0IFNvdXJjZUNvZGUm
IGNsYXNzU291cmNlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQpCiB7Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBtX3Zt
LmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoY29uc3RydWN0
b3JLaW5kLCBuYW1lLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcik7CisgICAgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBtX3ZtLmJ1aWx0aW5FeGVjdXRhYmxlcygp
LT5jcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoY29uc3RydWN0b3JLaW5kLCBuYW1lLCBuZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplciwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOwogICAgIGV4ZWN1
dGFibGUtPnNldEludmFsaWRUeXBlUHJvZmlsaW5nT2Zmc2V0cygpOwogICAgIGV4ZWN1dGFibGUt
PnNldEVjbWFOYW1lKGVjbWFOYW1lKTsKICAgICBleGVjdXRhYmxlLT5zZXRDbGFzc1NvdXJjZShj
bGFzc1NvdXJjZSk7CkBAIC0zMTQ2LDEzICszMjM1LDE0IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0TmV3Q2xhc3NGaWVsZEluaXRpYWxpemVyRnVuY3Rpb24oUmVnaXN0ZXJJ
RCoKICAgICB9CiAKICAgICBhdXRvIHZhcmlhYmxlc1VuZGVyVERaID0gZ2V0VmFyaWFibGVzVW5k
ZXJURFooKTsKKyAgICBPcHRpb25hbDxQcml2YXRlTmFtZUVudmlyb25tZW50PiBwYXJlbnRQcml2
YXRlTmFtZUVudmlyb25tZW50ID0gZ2V0QXZhaWxhYmxlUHJpdmF0ZUFjY2Vzc05hbWVzKCk7CiAg
ICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6Q2xhc3NGaWVs
ZEluaXRpYWxpemVyTW9kZTsKICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkg
PSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7CiAKICAgICBjb25zdCBib29sIGFs
d2F5c1N0cmljdEluQ2xhc3MgPSB0cnVlOwogICAgIEZ1bmN0aW9uTWV0YWRhdGFOb2RlIG1ldGFk
YXRhKHBhcnNlckFyZW5hKCksIEpTVG9rZW5Mb2NhdGlvbigpLCBKU1Rva2VuTG9jYXRpb24oKSwg
MCwgMCwgMCwgMCwgMCwgYWx3YXlzU3RyaWN0SW5DbGFzcywgQ29uc3RydWN0b3JLaW5kOjpOb25l
LCBzdXBlckJpbmRpbmcsIDAsIHBhcnNlTW9kZSwgZmFsc2UpOwogICAgIG1ldGFkYXRhLmZpbmlz
aFBhcnNpbmcobV9zY29wZU5vZGUtPnNvdXJjZSgpLCBJZGVudGlmaWVyKCksIEZ1bmN0aW9uTW9k
ZTo6TWV0aG9kRGVmaW5pdGlvbik7Ci0gICAgYXV0byBpbml0aWFsaXplciA9IFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgpLCAmbWV0
YWRhdGEsIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVu
bGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIHNjcmlwdE1vZGUoKSwgV1RG
TW92ZSh2YXJpYWJsZXNVbmRlclREWiksIG5ld0Rlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vKTsKKyAgICBhdXRvIGluaXRpYWxpemVyID0gVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksICZt
ZXRhZGF0YSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDog
VW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwgc2NyaXB0TW9kZSgpLCBX
VEZNb3ZlKHZhcmlhYmxlc1VuZGVyVERaKSwgV1RGTW92ZShwYXJlbnRQcml2YXRlTmFtZUVudmly
b25tZW50KSwgbmV3RGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
cjo6Tm8sIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lKTsKICAgICBpbml0aWFsaXplci0+
c2V0Q2xhc3NGaWVsZExvY2F0aW9ucyhXVEZNb3ZlKGNsYXNzRmllbGRMb2NhdGlvbnMpKTsKIAog
ICAgIHVuc2lnbmVkIGluZGV4ID0gbV9jb2RlQmxvY2stPmFkZEZ1bmN0aW9uRXhwcihpbml0aWFs
aXplcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggNTBiNTQ2NWY5Yjc1YjI4YjliY2I4ZDNkOGUxZTMzOWUx
YTdlMDMxMC4uYmJmYjU2ODE5OGY0NDQ1NTdkYTMxMzNjMjk2NjNjZDQyMDFlN2JlNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaApAQCAtNDA4LDEwICs0MDgsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGlj
OgogICAgICAgICB0eXBlZGVmIERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrIEZ1bmN0
aW9uU3RhY2s7CiAKLSAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBQcm9ncmFtTm9kZSos
IFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayosIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+
LCBjb25zdCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiYsIEVDTUFNb2RlKTsKLSAgICAgICAg
Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBGdW5jdGlvbk5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFJlZlB0cjxURFpF
bnZpcm9ubWVudExpbms+JiwgRUNNQU1vZGUpOwotICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihW
TSYsIEV2YWxOb2RlKiwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5l
cmF0aW9uTW9kZT4sIGNvbnN0IFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+JiwgRUNNQU1vZGUp
OwotICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIE1vZHVsZVByb2dyYW1Ob2RlKiwgVW5s
aW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9k
ZT4sIGNvbnN0IFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+JiwgRUNNQU1vZGUpOworICAgICAg
ICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIFByb2dyYW1Ob2RlKiwgVW5saW5rZWRQcm9ncmFtQ29k
ZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFJlZlB0cjxURFpF
bnZpcm9ubWVudExpbms+JiwgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCosIEVDTUFNb2Rl
KTsKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBGdW5jdGlvbk5vZGUqLCBVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0
IFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+JiwgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVu
dCosIEVDTUFNb2RlKTsKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBFdmFsTm9kZSos
IFVubGlua2VkRXZhbENvZGVCbG9jayosIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBj
b25zdCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiYsIGNvbnN0IFByaXZhdGVOYW1lRW52aXJv
bm1lbnQqLCBFQ01BTW9kZSk7CisgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgTW9kdWxl
UHJvZ3JhbU5vZGUqLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqLCBPcHRpb25TZXQ8
Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4mLCBj
b25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiwgRUNNQU1vZGUpOwogCiAgICAgICAgIH5CeXRl
Y29kZUdlbmVyYXRvcigpOwogICAgICAgICAKQEAgLTQyNSwyMCArNDI1LDIxIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBib29sIG5lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dCgp
IGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0OyB9CiAg
ICAgICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlTm9kZS0+dXNlc0V2
YWwoKTsgfQogICAgICAgICBib29sIHVzZXNUaGlzKCkgY29uc3QgeyByZXR1cm4gbV9zY29wZU5v
ZGUtPnVzZXNUaGlzKCk7IH0KKyAgICAgICAgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+cHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQoKTsgfQogICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JL
aW5kKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmNvbnN0cnVjdG9yS2luZCgpOyB9CiAg
ICAgICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX2NvZGVC
bG9jay0+c3VwZXJCaW5kaW5nKCk7IH0KICAgICAgICAgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlw
dE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+c2NyaXB0TW9kZSgpOyB9CiAgICAg
ICAgIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
KCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
KCk7IH0KIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBOb2RlLCB0eXBlbmFtZSBVbmxpbmtl
ZENvZGVCbG9jaz4KLSAgICAgICAgc3RhdGljIFBhcnNlckVycm9yIGdlbmVyYXRlKFZNJiB2bSwg
Tm9kZSogbm9kZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgVW5saW5rZWRDb2RlQmxv
Y2sqIHVubGlua2VkQ29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2Rl
R2VuZXJhdGlvbk1vZGUsIGNvbnN0IFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+JiBwYXJlbnRT
Y29wZVREWlZhcmlhYmxlcywgRUNNQU1vZGUgZWNtYU1vZGUpCisgICAgICAgIHN0YXRpYyBQYXJz
ZXJFcnJvciBnZW5lcmF0ZShWTSYgdm0sIE5vZGUqIG5vZGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZUNvZGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywgT3B0aW9uU2V0
PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBSZWZQdHI8VERa
RW52aXJvbm1lbnRMaW5rPiYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIGNvbnN0IFByaXZhdGVO
YW1lRW52aXJvbm1lbnQqIHByaXZhdGVOYW1lRW52aXJvbm1lbnQsIEVDTUFNb2RlIGVjbWFNb2Rl
KQogICAgICAgICB7CiAgICAgICAgICAgICBNb25vdG9uaWNUaW1lIGJlZm9yZTsKICAgICAgICAg
ICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpyZXBvcnRCeXRlY29kZUNvbXBpbGVUaW1lcygpKSkK
ICAgICAgICAgICAgICAgICBiZWZvcmUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKIAogICAgICAg
ICAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwotICAgICAgICAgICAgYXV0byBieXRlY29k
ZUdlbmVyYXRvciA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVHZW5lcmF0b3I+KHZtLCBub2RlLCB1bmxp
bmtlZENvZGVCbG9jaywgY29kZUdlbmVyYXRpb25Nb2RlLCBwYXJlbnRTY29wZVREWlZhcmlhYmxl
cywgZWNtYU1vZGUpOworICAgICAgICAgICAgYXV0byBieXRlY29kZUdlbmVyYXRvciA9IG1ha2VV
bmlxdWU8Qnl0ZWNvZGVHZW5lcmF0b3I+KHZtLCBub2RlLCB1bmxpbmtlZENvZGVCbG9jaywgY29k
ZUdlbmVyYXRpb25Nb2RlLCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgcHJpdmF0ZU5hbWVFbnZp
cm9ubWVudCwgZWNtYU1vZGUpOwogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBieXRlY29kZUdl
bmVyYXRvci0+Z2VuZXJhdGUoKTsKIAogICAgICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6
OnJlcG9ydEJ5dGVjb2RlQ29tcGlsZVRpbWVzKCkpKSB7CkBAIC03NzQsNyArNzc1LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uKFJlZ2lz
dGVySUQqIGRzdCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmNFeHByTm9kZSop
OwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKFJlZ2lzdGVy
SUQqIGRzdCwgQ29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBJ
ZGVudGlmaWVyJiBlY21hTmFtZSwgY29uc3QgU291cmNlQ29kZSYgY2xhc3NTb3VyY2UsIE5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0RlZmF1
bHRDb25zdHJ1Y3RvcihSZWdpc3RlcklEKiBkc3QsIENvbnN0cnVjdG9yS2luZCwgY29uc3QgSWRl
bnRpZmllciYgbmFtZSwgY29uc3QgSWRlbnRpZmllciYgZWNtYU5hbWUsIGNvbnN0IFNvdXJjZUNv
ZGUmIGNsYXNzU291cmNlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgUHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3Q2xhc3NGaWVsZEluaXRp
YWxpemVyRnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+JiYg
Y2xhc3NGaWVsZExvY2F0aW9ucywgYm9vbCBpc0Rlcml2ZWQpOwogICAgICAgICBSZWdpc3RlcklE
KiBlbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCosIEFycm93RnVuY0V4
cHJOb2RlKik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdNZXRob2REZWZpbml0aW9uKFJl
Z2lzdGVySUQqIGRzdCwgTWV0aG9kRGVmaW5pdGlvbk5vZGUqKTsKQEAgLTgxNSw3ICs4MTYsNiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERpcmVjdFNldFByb3Rv
dHlwZU9mKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3RvdHlwZSk7CiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBw
cm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0
QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdGhpc1ZhbHVlLCBSZWdpc3RlcklE
KiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0
RGlyZWN0R2V0QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3Rl
cklEKiBwcm9wZXJ0eSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREaXJlY3RQdXRCeVZhbChS
ZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUp
OwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGVsZXRlQnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSk7CiAKQEAgLTgyMyw2ICs4MjMs
MTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRJbnRlcm5h
bEZpZWxkKFJlZ2lzdGVySUQqIGJhc2UsIHVuc2lnbmVkIGluZGV4LCBSZWdpc3RlcklEKiB2YWx1
ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREZWZpbmVQcml2YXRlRmllbGQoUmVnaXN0ZXJJ
RCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKICAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdFByaXZhdGVGaWVsZFB1dChSZWdpc3RlcklEKiBiYXNlLCBSZWdp
c3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOworICAgICAgICBSZWdpc3RlcklE
KiBlbWl0R2V0UHJpdmF0ZU5hbWUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBS
ZWdpc3RlcklEKiBwcm9wZXJ0eSk7CisKKyAgICAgICAgdm9pZCBlbWl0Q3JlYXRlUHJpdmF0ZUJy
YW5kKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5k
KTsKKyAgICAgICAgdm9pZCBlbWl0SW5zdGFsbFByaXZhdGVCcmFuZChSZWdpc3RlcklEKiB0YXJn
ZXQpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0UHJpdmF0ZUJyYW5kKFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogc2NvcGUpOworICAgICAgICB2b2lkIGVtaXRDaGVja1ByaXZhdGVC
cmFuZChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBicmFuZCk7CiAKICAgICAgICAgdm9p
ZCBlbWl0U3VwZXJTYW1wbGVyQmVnaW4oKTsKICAgICAgICAgdm9pZCBlbWl0U3VwZXJTYW1wbGVy
RW5kKCk7CkBAIC0xMTc2LDE2ICsxMTgyLDE5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAg
ICAgRGVyaXZlZENvbnRleHRUeXBlIG5ld0Rlcml2ZWRDb250ZXh0VHlwZSA9IERlcml2ZWRDb250
ZXh0VHlwZTo6Tm9uZTsKIAogICAgICAgICAgICAgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIg
bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSBtZXRhZGF0YS0+aXNDb25zdHJ1Y3RvckFuZE5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkgPyBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6
WWVzIDogTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vOworICAgICAgICAgICAgUHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBtZXRhZGF0YS0+cHJp
dmF0ZUJyYW5kUmVxdWlyZW1lbnQoKTsKICAgICAgICAgICAgIGlmIChTb3VyY2VQYXJzZU1vZGVT
ZXQoU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSwgU291cmNlUGFyc2VNb2RlOjpB
c3luY0Fycm93RnVuY3Rpb25Nb2RlLCBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlv
bkJvZHlNb2RlKS5jb250YWlucyhtZXRhZGF0YS0+cGFyc2VNb2RlKCkpKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RXh0ZW5kcyB8
fCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSkgewogICAgICAgICAgICAgICAgICAgICBu
ZXdEZXJpdmVkQ29udGV4dFR5cGUgPSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRDb25zdHJ1
Y3RvckNvbnRleHQ7CiAgICAgICAgICAgICAgICAgICAgIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyID0gbV9jb2RlQmxvY2stPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCk7CisgICAgICAg
ICAgICAgICAgICAgIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID0gbV9jb2RlQmxvY2stPnByaXZh
dGVCcmFuZFJlcXVpcmVtZW50KCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IGVsc2UgaWYgKG1fY29kZUJsb2NrLT5pc0NsYXNzQ29udGV4dCgpIHx8IGlzRGVyaXZlZENsYXNz
Q29udGV4dCgpKQogICAgICAgICAgICAgICAgICAgICBuZXdEZXJpdmVkQ29udGV4dFR5cGUgPSBE
ZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRNZXRob2RDb250ZXh0OwogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBhdXRvIG9wdGlvbmFsVmFyaWFibGVzVW5kZXJURFogPSBnZXRWYXJpYWJs
ZXNVbmRlclREWigpOworICAgICAgICAgICAgT3B0aW9uYWw8UHJpdmF0ZU5hbWVFbnZpcm9ubWVu
dD4gcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCA9IGdldEF2YWlsYWJsZVByaXZhdGVBY2Nl
c3NOYW1lcygpOwogCiAgICAgICAgICAgICAvLyBGSVhNRTogVGhlc2UgZmxhZ3MsIFBhcnNlck1v
ZGVzIGFuZCBwcm9wYWdhdGlvbiB0byBYWFhDb2RlQmxvY2tzIHNob3VsZCBiZSByZW9yZ2FuaXpl
ZC4KICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTE1NDcKQEAgLTExOTQsMTAgKzEyMDMsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSAmJiBtZXRh
ZGF0YS0+Y29uc3RydWN0b3JLaW5kKCkgIT0gQ29uc3RydWN0b3JLaW5kOjpOb25lKQogICAgICAg
ICAgICAgICAgIGNvbnN0cnVjdEFiaWxpdHkgPSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1
Y3Q7CiAKLSAgICAgICAgICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3Jl
YXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgbWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0
aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24s
IGNvbnN0cnVjdEFiaWxpdHksIHNjcmlwdE1vZGUoKSwgV1RGTW92ZShvcHRpb25hbFZhcmlhYmxl
c1VuZGVyVERaKSwgbmV3RGVyaXZlZENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplcik7CisgICAgICAgICAgICByZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNy
ZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksIG1ldGFkYXRhLCBpc0J1aWx0aW5GdW5j
dGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9u
LCBjb25zdHJ1Y3RBYmlsaXR5LCBzY3JpcHRNb2RlKCksIFdURk1vdmUob3B0aW9uYWxWYXJpYWJs
ZXNVbmRlclREWiksIFdURk1vdmUocGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCksIG5ld0Rl
cml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50KTsKICAgICAgICAgfQogCiAgICAgICAgIFJlZlB0cjxURFpFbnZpcm9ubWVu
dExpbms+IGdldFZhcmlhYmxlc1VuZGVyVERaKCk7CisgICAgICAgIE9wdGlvbmFsPFByaXZhdGVO
YW1lRW52aXJvbm1lbnQ+IGdldEF2YWlsYWJsZVByaXZhdGVBY2Nlc3NOYW1lcygpOwogCiAgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRDb25zdHJ1Y3RWYXJhcmdzKFJlZ2lzdGVySUQqIGRzdCwgUmVn
aXN0ZXJJRCogZnVuYywgUmVnaXN0ZXJJRCogdGhpc1JlZ2lzdGVyLCBSZWdpc3RlcklEKiBhcmd1
bWVudHMsIFJlZ2lzdGVySUQqIGZpcnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFyQXJn
T2Zmc2V0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIERlYnVnZ2FibGVD
YWxsKTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbE9wPgpAQCAtMTI1Myw2ICsxMjYz
LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgbV9sYXN0SW5zdHJ1Y3Rpb24gPSBw
cmV2TGFzdEluc3RydWN0aW9uOwogICAgICAgICB9CiAKKyAgICAgICAgYm9vbCBpc1ByaXZhdGVN
ZXRob2QoY29uc3QgSWRlbnRpZmllciYpOworCisgICAgICAgIHZvaWQgcHVzaFByaXZhdGVBY2Nl
c3NOYW1lcyhjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50Kik7CisgICAgICAgIHZvaWQgcG9w
UHJpdmF0ZUFjY2Vzc05hbWVzKCk7CisKICAgICBwcml2YXRlOgogICAgICAgICBPcHRpb25TZXQ8
Q29kZUdlbmVyYXRpb25Nb2RlPiBtX2NvZGVHZW5lcmF0aW9uTW9kZTsKIApAQCAtMTI2Niw2ICsx
MjgxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgUmVmUHRyPFREWkVudmlyb25tZW50
TGluaz4gbV9jYWNoZWRQYXJlbnRURFo7CiAgICAgICAgIFZlY3RvcjxURFpTdGFja0VudHJ5PiBt
X1REWlN0YWNrOworICAgICAgICBWZWN0b3I8UHJpdmF0ZU5hbWVFbnZpcm9ubWVudD4gbV9wcml2
YXRlTmFtZXNTdGFjazsKICAgICAgICAgT3B0aW9uYWw8c2l6ZV90PiBtX3ZhclNjb3BlTGV4aWNh
bFNjb3BlU3RhY2tJbmRleDsKICAgICAgICAgdm9pZCBwdXNoVERaVmFyaWFibGVzKGNvbnN0IFZh
cmlhYmxlRW52aXJvbm1lbnQmLCBURFpDaGVja09wdGltaXphdGlvbiwgVERaUmVxdWlyZW1lbnQp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHAKaW5kZXggYmE5MTU5MGZlMGQ0M2E4Yjg2ZDliZTg3YWRmZDc4OGQ3ODUwNmU4ZS4u
NGMwOGEzM2QzZjg3YmI0MmJlM2Y4ZjZjZGJhNWZhMDM3MDA3OGU1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtNTYz
LDcgKzU2Myw3IEBAIHZvaWQgUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdERlY2xhcmVQcml2YXRlRmll
bGROYW1lcyhCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yCiAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IGNyZWF0ZVByaXZhdGVTeW1ib2w7CiAgICAgZm9yIChQcm9wZXJ0eUxpc3ROb2RlKiBwID0g
dGhpczsgcDsgcCA9IHAtPm1fbmV4dCkgewogICAgICAgICBjb25zdCBQcm9wZXJ0eU5vZGUmIG5v
ZGUgPSAqcC0+bV9ub2RlOwotICAgICAgICBpZiAobm9kZS50eXBlKCkgJiBQcm9wZXJ0eU5vZGU6
OlByaXZhdGUpIHsKKyAgICAgICAgaWYgKG5vZGUudHlwZSgpICYgUHJvcGVydHlOb2RlOjpQcml2
YXRlRmllbGQpIHsKICAgICAgICAgICAgIGlmICghY3JlYXRlUHJpdmF0ZVN5bWJvbCkKICAgICAg
ICAgICAgICAgICBjcmVhdGVQcml2YXRlU3ltYm9sID0gZ2VuZXJhdG9yLm1vdmVMaW5rVGltZUNv
bnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OmNyZWF0ZVByaXZhdGVTeW1ib2wpOwog
CkBAIC01ODksNyArNTg5LDcgQEAgUmVnaXN0ZXJJRCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGUKICAgICAgICAgaWYg
KHAtPmlzQ29tcHV0ZWRDbGFzc0ZpZWxkKCkpCiAgICAgICAgICAgICBlbWl0U2F2ZUNvbXB1dGVk
RmllbGROYW1lKGdlbmVyYXRvciwgKnAtPm1fbm9kZSk7CiAKLSAgICAgICAgaWYgKHAtPmlzSW5z
dGFuY2VDbGFzc0ZpZWxkKCkpIHsKKyAgICAgICAgaWYgKHAtPmlzSW5zdGFuY2VDbGFzc0ZpZWxk
KCkgJiYgIShwLT5tX25vZGUtPnR5cGUoKSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0ZU1ldGhvZCkp
IHsKICAgICAgICAgICAgIEFTU0VSVChpbnN0YW5jZUZpZWxkTG9jYXRpb25zKTsKICAgICAgICAg
ICAgIGluc3RhbmNlRmllbGRMb2NhdGlvbnMtPmFwcGVuZChwLT5wb3NpdGlvbigpKTsKICAgICAg
ICAgICAgIGNvbnRpbnVlOwpAQCAtNzU3LDcgKzc1Nyw3IEBAIFJlZ2lzdGVySUQqIFByb3BlcnR5
TGlzdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlCiB2b2lkIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRQdXRDb25zdGFudFByb3BlcnR5KEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIG5ld09iaiwgUHJvcGVydHlOb2Rl
JiBub2RlKQogewogICAgIC8vIFByaXZhdGUgZmllbGRzIGFyZSBoYW5kbGVkIGluIGEgc3ludGhl
dGljIGNsYXNzRmllbGRJbml0aWFsaXplciBmdW5jdGlvbiwgbm90IGhlcmUuCi0gICAgQVNTRVJU
KCEobm9kZS50eXBlKCkgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGUpKTsKKyAgICBBU1NFUlQoIShu
b2RlLnR5cGUoKSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0ZUZpZWxkKSk7CiAKICAgICBpZiAoUHJv
cGVydHlOb2RlOjppc1VuZGVyc2NvcmVQcm90b1NldHRlcihnZW5lcmF0b3Iudm0oKSwgbm9kZSkp
IHsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3RvdHlwZSA9IGdlbmVyYXRvci5lbWl0
Tm9kZShub2RlLm1fYXNzaWduKTsKQEAgLTc4Miw2ICs3ODIsMTQgQEAgdm9pZCBQcm9wZXJ0eUxp
c3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWcKIAogICAgIGlmIChub2RlLmlzQ2xhc3NQcm9wZXJ0eSgpKSB7CiAgICAgICAgIEFT
U0VSVChub2RlLm5lZWRzU3VwZXJCaW5kaW5nKCkpOworCisgICAgICAgIGlmIChub2RlLnR5cGUo
KSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0ZU1ldGhvZCkgeworICAgICAgICAgICAgVmFyaWFibGUg
dmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKCpub2RlLm5hbWUoKSk7CisgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdFB1dFRvU2NvcGUoZ2VuZXJhdG9yLnNjb3BlUmVnaXN0ZXIoKSwgdmFyLCB2YWx1
ZS5nZXQoKSwgRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6Q29uc3RJ
bml0aWFsaXphdGlvbik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcGVydHlOYW1lUmVnaXN0ZXI7CiAgICAgICAgIGlmIChu
b2RlLm5hbWUoKSkKICAgICAgICAgICAgIHByb3BlcnR5TmFtZSA9IGdlbmVyYXRvci5lbWl0TG9h
ZChudWxscHRyLCAqbm9kZS5uYW1lKCkpOwogCkBAIC05MTAsMTQgKzkxOCwyNCBAQCBSZWdpc3Rl
cklEKiBEb3RBY2Nlc3Nvck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcgogCiBSZWdpc3RlcklEKiBCYXNlRG90Tm9kZTo6ZW1pdEdldFByb3Bl
cnR5VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBiYXNlLCBSZWZQdHI8UmVnaXN0ZXJJRD4mIHRoaXNWYWx1ZSkKIHsKLSAgICBp
ZiAoaXNQcml2YXRlRmllbGQoKSkgeworICAgIGlmIChpc1ByaXZhdGVNZW1iZXIoKSkgeworICAg
ICAgICBpZiAoZ2VuZXJhdG9yLmlzUHJpdmF0ZU1ldGhvZChpZGVudGlmaWVyKCkpKSB7CisgICAg
ICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnRpZmllcigpKTsK
KyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVz
b2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CisKKyAgICAgICAgICAgIFJlZ2lzdGVySUQqIHByaXZh
dGVCcmFuZFN5bWJvbCA9IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZUJyYW5kKGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRD
aGVja1ByaXZhdGVCcmFuZChiYXNlLCBwcml2YXRlQnJhbmRTeW1ib2wpOworCisgICAgICAgICAg
ICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZHN0LCBzY29wZS5nZXQoKSwgdmFy
LCBUaHJvd0lmTm90Rm91bmQpOworICAgICAgICB9CisKICAgICAgICAgVmFyaWFibGUgdmFyID0g
Z2VuZXJhdG9yLnZhcmlhYmxlKG1faWRlbnQpOwogICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KCF2YXIubG9jYWwoKSwgIlByaXZhdGUgRmllbGQgbmFtZXMgbXVzdCBiZSBzdG9yZWQgaW4gY2Fw
dHVyZWQgdmFyaWFibGVzIik7CiAKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0g
Z2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKICAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAg
ICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShwcml2YXRlTmFtZS5nZXQoKSwgc2NvcGUu
Z2V0KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQpOwotICAgICAgICByZXR1cm4gZ2VuZXJh
dG9yLmVtaXREaXJlY3RHZXRCeVZhbChkc3QsIGJhc2UsIHByaXZhdGVOYW1lLmdldCgpKTsKKyAg
ICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZU5hbWUoZHN0LCBiYXNlLCBwcml2
YXRlTmFtZS5nZXQoKSk7CiAgICAgfQogCiAgICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkg
ewpAQCAtOTM3LDcgKzk1NSwxOCBAQCBSZWdpc3RlcklEKiBCYXNlRG90Tm9kZTo6ZW1pdEdldFBy
b3BlcnR5VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaQogCiBSZWdpc3Rl
cklEKiBCYXNlRG90Tm9kZTo6ZW1pdFB1dFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZWZQdHI8UmVnaXN0
ZXJJRD4mIHRoaXNWYWx1ZSkKIHsKLSAgICBpZiAoaXNQcml2YXRlRmllbGQoKSkgeworICAgIGlm
IChpc1ByaXZhdGVNZW1iZXIoKSkgeworICAgICAgICBhdXRvIGlkZW50aWZpZXJOYW1lID0gaWRl
bnRpZmllcigpOworICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzUHJpdmF0ZU1ldGhvZChpZGVudGlm
aWVyTmFtZSkpIHsKKyAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJs
ZShpZGVudGlmaWVyTmFtZSk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUg
PSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOworCisgICAgICAgICAg
ICBSZWdpc3RlcklEKiBwcml2YXRlQnJhbmRTeW1ib2wgPSBnZW5lcmF0b3IuZW1pdEdldFByaXZh
dGVCcmFuZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpKTsKKyAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0Q2hlY2tQcml2YXRlQnJhbmQoYmFzZSwgcHJpdmF0ZUJyYW5kU3lt
Ym9sKTsKKworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvd1R5cGVFcnJvcigiVHJ5aW5n
IHRvIGFjY2VzcyBhIG5vdCBkZWZpbmVkIHByaXZhdGUgc2V0dGVyIik7CisgICAgICAgIH0KKwog
ICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUobV9pZGVudCk7CiAgICAg
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXZhci5sb2NhbCgpLCAiUHJpdmF0ZSBGaWVsZCBuYW1l
cyBtdXN0IGJlIHN0b3JlZCBpbiBjYXB0dXJlZCB2YXJpYWJsZXMiKTsKIApAQCAtMTA5NSwxMiAr
MTEyNCwxNCBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZQogICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRQdXRUaGlzVG9BcnJvd0Z1bmN0aW9uQ29udGV4dFNjb3BlKCk7CiAKICAgICAgICAgLy8g
SW5pdGlhbGl6ZSBpbnN0YW5jZSBmaWVsZHMgYWZ0ZXIgc3VwZXItY2FsbC4KKyAgICAgICAgaWYg
KE9wdGlvbnM6OnVzZVByaXZhdGVNZXRob2RzKCkgJiYgZ2VuZXJhdG9yLnByaXZhdGVCcmFuZFJl
cXVpcmVtZW50KCkgPT0gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5lZWRlZCkKKyAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0SW5zdGFsbFByaXZhdGVCcmFuZChnZW5lcmF0b3IudGhpc1JlZ2lz
dGVyKCkpOworCiAgICAgICAgIGlmIChnZW5lcmF0b3IubmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIoKSA9PSBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6WWVzKSB7CiAgICAgICAgICAgICBB
U1NFUlQoZ2VuZXJhdG9yLmlzQ29uc3RydWN0b3IoKSB8fCBnZW5lcmF0b3IuaXNEZXJpdmVkQ29u
c3RydWN0b3JDb250ZXh0KCkpOwogICAgICAgICAgICAgZnVuYyA9IGdlbmVyYXRvci5lbWl0TG9h
ZERlcml2ZWRDb25zdHJ1Y3RvcigpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRJbnN0YW5j
ZUZpZWxkSW5pdGlhbGl6YXRpb25JZk5lZWRlZChnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCksIGZ1
bmMuZ2V0KCksIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIH0K
LQogICAgICAgICByZXR1cm4gcmV0OwogICAgIH0KIApAQCAtMjI1NCwxNCArMjI4NSwxNCBAQCBS
ZWdpc3RlcklEKiBQb3N0Zml4Tm9kZTo6ZW1pdERvdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QpCiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZv
KGRvdEFjY2Vzc29yLT5kaXZvdCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RTdGFydCgpLCBkb3RBY2Nl
c3Nvci0+ZGl2b3RFbmQoKSk7CiAKLSAgICBpZiAoZG90QWNjZXNzb3ItPmlzUHJpdmF0ZUZpZWxk
KCkpIHsKKyAgICBpZiAoZG90QWNjZXNzb3ItPmlzUHJpdmF0ZU1lbWJlcigpKSB7CiAgICAgICAg
IEFTU0VSVCghYmFzZUlzU3VwZXIpOwogICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3Iu
dmFyaWFibGUoaWRlbnQpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5l
cmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwogICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgICAg
IGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHByaXZhdGVOYW1lLmdldCgpLCBzY29wZS5nZXQo
KSwgdmFyLCBEb05vdFRocm93SWZOb3RGb3VuZCk7CiAKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXREaXJlY3RHZXRCeVZhbChnZW5lcmF0b3IubmV3VGVt
cG9yYXJ5KCksIGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpKTsKKyAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlTmFtZShnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCksIGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpKTsKICAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG9sZFZhbHVlID0gZW1pdFBvc3RJbmNPckRlYyhnZW5lcmF0
b3IsIGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCksIG1fb3BlcmF0
b3IpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJpdmF0ZUZpZWxk
UHV0KGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpLCB2YWx1ZS5nZXQoKSk7CkBAIC0yNDkz
LDE0ICsyNTI0LDE0IEBAIFJlZ2lzdGVySUQqIFByZWZpeE5vZGU6OmVtaXREb3QoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogCiAgICAgZ2VuZXJhdG9yLmVt
aXRFeHByZXNzaW9uSW5mbyhkb3RBY2Nlc3Nvci0+ZGl2b3QoKSwgZG90QWNjZXNzb3ItPmRpdm90
U3RhcnQoKSwgZG90QWNjZXNzb3ItPmRpdm90RW5kKCkpOwogICAgIFJlZ2lzdGVySUQqIHZhbHVl
OwotICAgIGlmIChkb3RBY2Nlc3Nvci0+aXNQcml2YXRlRmllbGQoKSkgeworICAgIGlmIChkb3RB
Y2Nlc3Nvci0+aXNQcml2YXRlTWVtYmVyKCkpIHsKICAgICAgICAgQVNTRVJUKCFiYXNlTm9kZS0+
aXNTdXBlck5vZGUoKSk7CiAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJs
ZShpZGVudCk7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5l
bWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBwcml2YXRlTmFtZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIs
IERvTm90VGhyb3dJZk5vdEZvdW5kKTsKIAotICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0
RGlyZWN0R2V0QnlWYWwocHJvcERzdC5nZXQoKSwgYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0
KCkpOworICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZU5hbWUocHJvcERz
dC5nZXQoKSwgYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCkpOwogICAgICAgICBlbWl0SW5j
T3JEZWMoZ2VuZXJhdG9yLCB2YWx1ZSwgbV9vcGVyYXRvcik7CiAgICAgICAgIGdlbmVyYXRvci5l
bWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRQcml2YXRlRmllbGRQdXQoYmFzZS5nZXQoKSwgcHJpdmF0ZU5h
bWUuZ2V0KCksIHZhbHVlKTsKQEAgLTQ5MTUsNiArNDk0NiwxMyBAQCBSZWdpc3RlcklEKiBDbGFz
c0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRAogICAgIGlmIChtX25lZWRzTGV4aWNhbFNjb3BlKQogICAgICAgICBnZW5lcmF0b3Iu
cHVzaExleGljYWxTY29wZSh0aGlzLCBCeXRlY29kZUdlbmVyYXRvcjo6VERaQ2hlY2tPcHRpbWl6
YXRpb246Ok9wdGltaXplLCBCeXRlY29kZUdlbmVyYXRvcjo6TmVzdGVkU2NvcGVUeXBlOjpJc05l
c3RlZCk7CiAKKyAgICBib29sIGhhc1ByaXZhdGVOYW1lcyA9ICEhbV9sZXhpY2FsVmFyaWFibGVz
LnByaXZhdGVOYW1lc1NpemUoKTsKKyAgICBib29sIHNob3VsZEVtaXRQcml2YXRlQnJhbmQgPSBt
X2xleGljYWxWYXJpYWJsZXMuaGFzUHJpdmF0ZU1ldGhvZE9yQWNjZXNzb3IoKTsKKyAgICBpZiAo
aGFzUHJpdmF0ZU5hbWVzKQorICAgICAgICBnZW5lcmF0b3IucHVzaFByaXZhdGVBY2Nlc3NOYW1l
cyhtX2xleGljYWxWYXJpYWJsZXMucHJpdmF0ZU5hbWVFbnZpcm9ubWVudCgpKTsKKyAgICBpZiAo
c2hvdWxkRW1pdFByaXZhdGVCcmFuZCkKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRDcmVhdGVQcml2
YXRlQnJhbmQoZ2VuZXJhdG9yLnNjb3BlUmVnaXN0ZXIoKSwgbV9wb3NpdGlvbiwgbV9wb3NpdGlv
biwgbV9wb3NpdGlvbik7CisKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3VwZXJjbGFzczsKICAg
ICBpZiAobV9jbGFzc0hlcml0YWdlKSB7CiAgICAgICAgIHN1cGVyY2xhc3MgPSBnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCk7CkBAIC00OTI1LDE3ICs0OTYzLDE4IEBAIFJlZ2lzdGVySUQqIENsYXNz
RXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklECiAgICAgYm9vbCBuZWVkc0hvbWVPYmplY3QgPSBmYWxzZTsKIAogICAgIGF1dG8gbmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSB0aGlzLT5oYXNJbnN0YW5jZUZpZWxkcygpID8gTmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6OlllcyA6IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
OjpObzsKLQorICAgIGF1dG8gcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgPSBzaG91bGRFbWl0UHJp
dmF0ZUJyYW5kID8gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5lZWRlZCA6IFByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50OjpOb25lOwogICAgIGlmIChtX2NvbnN0cnVjdG9yRXhwcmVzc2lvbikgewog
ICAgICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvckV4cHJlc3Npb24tPmlzRnVuY0V4cHJOb2RlKCkp
OwogICAgICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbWV0YWRhdGEgPSBzdGF0aWNfY2FzdDxG
dW5jRXhwck5vZGUqPihtX2NvbnN0cnVjdG9yRXhwcmVzc2lvbiktPm1ldGFkYXRhKCk7CiAgICAg
ICAgIG1ldGFkYXRhLT5zZXRFY21hTmFtZShlY21hTmFtZSgpKTsKICAgICAgICAgbWV0YWRhdGEt
PnNldENsYXNzU291cmNlKG1fY2xhc3NTb3VyY2UpOwogICAgICAgICBtZXRhZGF0YS0+c2V0TmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIobmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPT0gTmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Olllcyk7CisgICAgICAgIG1ldGFkYXRhLT5zZXRQcml2
YXRlQnJhbmRSZXF1aXJlbWVudChwcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7CiAgICAgICAgIGNv
bnN0cnVjdG9yID0gZ2VuZXJhdG9yLmVtaXROb2RlKGNvbnN0cnVjdG9yLmdldCgpLCBtX2NvbnN0
cnVjdG9yRXhwcmVzc2lvbik7CiAgICAgICAgIG5lZWRzSG9tZU9iamVjdCA9IG1fY2xhc3NIZXJp
dGFnZSB8fCBtZXRhZGF0YS0+c3VwZXJCaW5kaW5nKCkgPT0gU3VwZXJCaW5kaW5nOjpOZWVkZWQ7
CiAgICAgfSBlbHNlCi0gICAgICAgIGNvbnN0cnVjdG9yID0gZ2VuZXJhdG9yLmVtaXROZXdEZWZh
dWx0Q29uc3RydWN0b3IoY29uc3RydWN0b3IuZ2V0KCksIG1fY2xhc3NIZXJpdGFnZSA/IENvbnN0
cnVjdG9yS2luZDo6RXh0ZW5kcyA6IENvbnN0cnVjdG9yS2luZDo6QmFzZSwgbV9uYW1lLCBlY21h
TmFtZSgpLCBtX2NsYXNzU291cmNlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcik7CisgICAg
ICAgIGNvbnN0cnVjdG9yID0gZ2VuZXJhdG9yLmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoY29u
c3RydWN0b3IuZ2V0KCksIG1fY2xhc3NIZXJpdGFnZSA/IENvbnN0cnVjdG9yS2luZDo6RXh0ZW5k
cyA6IENvbnN0cnVjdG9yS2luZDo6QmFzZSwgbV9uYW1lLCBlY21hTmFtZSgpLCBtX2NsYXNzU291
cmNlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQp
OwogCiAgICAgY29uc3QgYXV0byYgcHJvcGVydHlOYW1lcyA9IGdlbmVyYXRvci5wcm9wZXJ0eU5h
bWVzKCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3RvdHlwZSA9IGdlbmVyYXRvci5lbWl0
TmV3T2JqZWN0KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSk7CkBAIC01MDE0LDYgKzUwNTMsOSBA
QCBSZWdpc3RlcklEKiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogICAgIGlmIChtX25lZWRzTGV4aWNhbFNjb3BlKQog
ICAgICAgICBnZW5lcmF0b3IucG9wTGV4aWNhbFNjb3BlKHRoaXMpOwogCisgICAgaWYgKGhhc1By
aXZhdGVOYW1lcykKKyAgICAgICAgZ2VuZXJhdG9yLnBvcFByaXZhdGVBY2Nlc3NOYW1lcygpOwor
CiAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRz
dCwgY29uc3RydWN0b3IuZ2V0KCkpLCBjb25zdHJ1Y3Rvci5nZXQoKSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCmlu
ZGV4IDg3N2U2MzI1NTBiY2Q1MjA2MGE3NTQ1YWVmNTA4NmRjMTkzYTRmZGYuLjc0MGFkODJjNzk1
NGEwZjk4MjgyMjgzNTY4YjEzZTE5Zjg0MWJmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcApAQCAtMjU5LDExICsyNTks
MTEgQEAgSlNWYWx1ZSBEZWJ1Z2dlckNhbGxGcmFtZTo6ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNp
b24oY29uc3QgU3RyaW5nJiBzY3JpcHQsIEpTT2IKICAgICAgICAgZXZhbENvbnRleHRUeXBlID0g
RXZhbENvbnRleHRUeXBlOjpOb25lOwogCiAgICAgVERaRW52aXJvbm1lbnQgdmFyaWFibGVzVW5k
ZXJURFo7Ci0gICAgVmFyaWFibGVFbnZpcm9ubWVudCBwcml2YXRlTmFtZXM7Ci0gICAgSlNTY29w
ZTo6Y29sbGVjdENsb3N1cmVWYXJpYWJsZXNVbmRlclREWihzY29wZSgpLT5qc1Njb3BlKCksIHZh
cmlhYmxlc1VuZGVyVERaLCBwcml2YXRlTmFtZXMpOworICAgIFByaXZhdGVOYW1lRW52aXJvbm1l
bnQgcHJpdmF0ZU5hbWVFbnZpcm9ubWVudDsKKyAgICBKU1Njb3BlOjpjb2xsZWN0Q2xvc3VyZVZh
cmlhYmxlc1VuZGVyVERaKHNjb3BlKCktPmpzU2NvcGUoKSwgdmFyaWFibGVzVW5kZXJURFosIHBy
aXZhdGVOYW1lRW52aXJvbm1lbnQpOwogCiAgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBjb2RlQmxv
Y2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0luU3RyaWN0Q29udGV4dCgpID8gRUNNQU1vZGU6OnN0
cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgpOwotICAgIGF1dG8qIGV2YWwgPSBEaXJlY3RFdmFs
RXhlY3V0YWJsZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgbWFrZVNvdXJjZShzY3JpcHQsIGNhbGxG
cmFtZS0+Y2FsbGVyU291cmNlT3JpZ2luKHZtKSksIGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxv
Y2soKS0+ZGVyaXZlZENvbnRleHRUeXBlKCksIGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2so
KS0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVC
bG9jaygpLT5pc0Fycm93RnVuY3Rpb24oKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+
aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKCksIGV2YWxDb250ZXh0VHlwZSwgJnZhcmlhYmxlc1Vu
ZGVyVERaLCAmcHJpdmF0ZU5hbWVzLCBlY21hTW9kZSk7CisgICAgYXV0byogZXZhbCA9IERpcmVj
dEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtYWtlU291cmNlKHNjcmlwdCwg
Y2FsbEZyYW1lLT5jYWxsZXJTb3VyY2VPcmlnaW4odm0pKSwgY29kZUJsb2NrLT51bmxpbmtlZENv
ZGVCbG9jaygpLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgY29kZUJsb2NrLT51bmxpbmtlZENvZGVC
bG9jaygpLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpLCBjb2RlQmxvY2stPnVubGlua2Vk
Q29kZUJsb2NrKCktPnByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCksIGNvZGVCbG9jay0+dW5saW5r
ZWRDb2RlQmxvY2soKS0+aXNBcnJvd0Z1bmN0aW9uKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRh
YmxlKCktPmlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbigpLCBldmFsQ29udGV4dFR5cGUsICZ2YXJp
YWJsZXNVbmRlclREWiwgJnByaXZhdGVOYW1lRW52aXJvbm1lbnQsIGVjbWFNb2RlKTsKICAgICBp
ZiAoVU5MSUtFTFkoY2F0Y2hTY29wZS5leGNlcHRpb24oKSkpIHsKICAgICAgICAgZXhjZXB0aW9u
ID0gY2F0Y2hTY29wZS5leGNlcHRpb24oKTsKICAgICAgICAgY2F0Y2hTY29wZS5jbGVhckV4Y2Vw
dGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDIxMWYxZDI0YTY1ODk2NWIwZWEyY2VjYjc2
NjFjYzdmYjQ4MTNjYTUuLmY2NDU1OTQ1MzM3ZWUxMjc2Yzk0YTU1ZGVkMjMxMDhkYjI4MDU2Y2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBcnJheUNv
bnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiQXJyYXlQcm90b3R5cGUuaCIKICNpbmNsdWRlICJDYWNo
ZWFibGVJZGVudGlmaWVySW5saW5lcy5oIgorI2luY2x1ZGUgIkNoZWNrUHJpdmF0ZUJyYW5kU3Rh
dHVzLmgiCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkRG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJDbG9iYmVyU3RhdGUuaCIKICNpbmNsdWRlICJET01KSVRHZXR0
ZXJTZXR0ZXIuaCIKQEAgLTQ3LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJNYXRoQ29tbW9uLmgiCiAj
aW5jbHVkZSAiTnVtYmVyQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgi
CisjaW5jbHVkZSAiU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmgiCiAjaW5jbHVkZSAiU3RyaW5nT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlQ2FjaGUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVS
YXJlRGF0YUlubGluZXMuaCIKQEAgLTQwNzksNiArNDA4MSw4IEBAIGJvb2wgQWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2Ji
ZXJMaW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgQ2hlY2tQcml2YXRlQnJh
bmQ6CisgICAgY2FzZSBTZXRQcml2YXRlQnJhbmQ6CiAgICAgY2FzZSBQdXRQcml2YXRlTmFtZTog
ewogICAgICAgICBjbG9iYmVyV29ybGQoKTsKICAgICAgICAgYnJlYWs7CkBAIC00NDA5LDYgKzQ0
MTMsOCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVj
dXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0
YXR1czoKICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRlckRlbGV0
ZUJ5U3RhdHVzOgorICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CisgICAg
Y2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAgY2FzZSBDbGVhckNhdGNoTG9j
YWxzOgogICAgICAgICBicmVhazsKIApAQCAtNDU5Nyw2ICs0NjAzLDIxIEBAIHZvaWQgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmZpbHRlcklDU3RhdHVzKE5vZGUqIG5v
ZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRl
QnJhbmRTdGF0dXM6IHsKKyAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgaWYgKHZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkp
CisgICAgICAgICAgICBub2RlLT5jaGVja1ByaXZhdGVCcmFuZFN0YXR1cygpLT5maWx0ZXIodmFs
dWUubV9zdHJ1Y3R1cmUudG9TdHJ1Y3R1cmVTZXQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KworICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOiB7CisgICAgICAgIEFic3Ry
YWN0VmFsdWUmIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIGlmICh2
YWx1ZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgpKQorICAgICAgICAgICAgbm9kZS0+c2V0UHJpdmF0
ZUJyYW5kU3RhdHVzKCktPmZpbHRlcih2YWx1ZS5tX3N0cnVjdHVyZS50b1N0cnVjdHVyZVNldCgp
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2Uu
Y3BwCmluZGV4IDZiMzYxOTk1ZTJkODU2Y2NjYzg0Yzk5NTJmZDBjZDNjY2I1M2FjOGYuLjZmODE3
Mzg4YWMzOGZlNWFmZTAyMGU0MGYwNGUzNjczNTQxNTU2MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNw
cApAQCAtNDA2LDYgKzQwNiw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0
ZXJDYWxsTGlua1N0YXR1czoKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1
czoKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgorICAgICAgICAg
ICAgICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CisgICAgICAgICAgICAg
ICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogCiAgICAgICAgICAgICAgICAgY2FzZSBDaGVja0FycmF5T3JFbXB0eToKQEAgLTEy
NjYsNyArMTI2OCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJQdXRC
eUlkU3RhdHVzOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAg
ICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6Ci0gICAgICAgICAgICAgICAg
Y2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czogeworICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVy
RGVsZXRlQnlTdGF0dXM6CisgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVC
cmFuZFN0YXR1czoKKyAgICAgICAgICAgICAgICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0
YXR1czogewogICAgICAgICAgICAgICAgICAgICBpZiAoIWlzRWxpbWluYXRlZEFsbG9jYXRpb24o
bm9kZS0+Y2hpbGQxKCkubm9kZSgpKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUobV9ncmFwaCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGVlNzRjYmI2MGNi
NDE1OTY2N2E1NjRhZjU2N2Y1NmNlMzNmMTFmMDYuLjk2N2E2MzY3ZjgzNGFiNTU2NTRjYTFmYWY1
Mzk3ZDgzYWE1ZWQ0NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVPcGVy
YW5kc0ZvckNoZWNrcG9pbnQuaCIKICNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVySW5saW5l
cy5oIgogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCisjaW5jbHVkZSAiQ2hlY2tQcml2YXRl
QnJhbmRTdGF0dXMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJDb2RlQmxv
Y2tXaXRoSklUVHlwZS5oIgogI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgpAQCAtNzQsNiAr
NzUsNyBAQAogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0
dXMuaCIKICNpbmNsdWRlICJSZWdFeHBQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJTZXRQcml2YXRl
QnJhbmRTdGF0dXMuaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgogI2luY2x1ZGUgIlN0
cmluZ0NvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlU3R1YkluZm8uaCIKQEAgLTYy
NjEsNiArNjI2Myw5MiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVk
IGxpbWl0KQogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X2J5X3ZhbF93aXRoX3RoaXMp
OwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9jaGVja19wcml2YXRlX2JyYW5kOiB7Cisg
ICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcENoZWNr
UHJpdmF0ZUJyYW5kPigpOworICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29kZS5t
X2Jhc2UpOworICAgICAgICAgICAgTm9kZSogYnJhbmQgPSBnZXQoYnl0ZWNvZGUubV9icmFuZCk7
CisgICAgICAgICAgICBib29sIGNvbXBpbGVkQXNDaGVja1N0cnVjdHVyZSA9IGZhbHNlOworCisg
ICAgICAgICAgICBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyBjaGVja1N0YXR1cyA9IENoZWNrUHJp
dmF0ZUJyYW5kU3RhdHVzOjpjb21wdXRlRm9yKAorICAgICAgICAgICAgICAgIG1faW5saW5lU3Rh
Y2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKKyAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9w
LT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNrLAorICAgICAgICAgICAgICAgIGN1cnJl
bnRDb2RlT3JpZ2luKCkpOworCisgICAgICAgICAgICBpZiAoIW1faW5saW5lU3RhY2tUb3AtPm1f
ZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZElkZW50KQorICAgICAg
ICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRl
KG1fY3VycmVudEluZGV4LCBCYWRUeXBlKQorICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0
YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDb25z
dGFudFZhbHVlKSkgeworCisgICAgICAgICAgICAgICAgaWYgKENhY2hlYWJsZUlkZW50aWZpZXIg
aWRlbnRpZmllciA9IGNoZWNrU3RhdHVzLnNpbmdsZUlkZW50aWZpZXIoKSkgeworICAgICAgICAg
ICAgICAgICAgICBtX2dyYXBoLmlkZW50aWZpZXJzKCkuZW5zdXJlKGlkZW50aWZpZXIudWlkKCkp
OworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaWRlbnRpZmllci5pc1N5bWJvbCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plbiA9IG1fZ3JhcGguZnJlZXplU3Ry
b25nKGlkZW50aWZpZXIuY2VsbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChD
aGVja0lzQ29uc3RhbnQsIE9wSW5mbyhmcm96ZW4pLCBicmFuZCk7CisKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGNoZWNrU3RhdHVzLmlzU2ltcGxlKCkgJiYgY2hlY2tTdGF0dXMudmFyaWFudHMo
KS5zaXplKCkgJiYgT3B0aW9uczo6dXNlQWNjZXNzSW5saW5pbmcoKSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKGNoZWNrU3RhdHVzLnZhcmlhbnRzKCkuc2l6ZSgpID09IDEpOyAv
LyBJZiB3ZSBoYXZlIHNpbmdsZSBpZGVudGlmaWVyLCB3ZSBzaG91bGQgaGF2ZSBvbmx5IDEgdmFy
aWFudC4KKyAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudCB2
YXJpYW50ID0gY2hlY2tTdGF0dXMudmFyaWFudHMoKVswXTsKKworICAgICAgICAgICAgICAgICAg
ICAgICAgYWRkVG9HcmFwaChGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1cywgT3BJbmZvKG1f
Z3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMoKS5hZGRDaGVja1ByaXZhdGVCcmFuZFN0YXR1
cyhjdXJyZW50Q29kZU9yaWdpbigpLCBjaGVja1N0YXR1cykpLCBiYXNlKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBoLmFk
ZFN0cnVjdHVyZVNldCh2YXJpYW50LnN0cnVjdHVyZVNldCgpKSksIGJhc2UpOworCisgICAgICAg
ICAgICAgICAgICAgICAgICBjb21waWxlZEFzQ2hlY2tTdHJ1Y3R1cmUgPSB0cnVlOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAoIWNvbXBpbGVkQXNDaGVja1N0cnVjdHVyZSkKKyAgICAgICAgICAgICAgICBh
ZGRUb0dyYXBoKENoZWNrUHJpdmF0ZUJyYW5kLCBiYXNlLCBicmFuZCk7CisKKyAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOworICAgICAgICB9CisKKyAgICAg
ICAgY2FzZSBvcF9zZXRfcHJpdmF0ZV9icmFuZDogeworICAgICAgICAgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BTZXRQcml2YXRlQnJhbmQ+KCk7CisgICAgICAg
ICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1fYmFzZSk7CisgICAgICAgICAgICBOb2Rl
KiBicmFuZCA9IGdldChieXRlY29kZS5tX2JyYW5kKTsKKworICAgICAgICAgICAgYm9vbCBpbmxp
bmVkU2V0UHJpdmF0ZUJyYW5kID0gZmFsc2U7CisgICAgICAgICAgICBTZXRQcml2YXRlQnJhbmRT
dGF0dXMgc2V0U3RhdHVzID0gU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOjpjb21wdXRlRm9yKAorICAg
ICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKKyAgICAgICAg
ICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNr
LAorICAgICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCkpOworCisgICAgICAgICAgICBp
ZiAoIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50
SW5kZXgsIEJhZElkZW50KQorICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5t
X2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRUeXBlKQorICAgICAg
ICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRl
KG1fY3VycmVudEluZGV4LCBCYWRDb25zdGFudFZhbHVlKSkgeworCisgICAgICAgICAgICAgICAg
aWYgKENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IHNldFN0YXR1cy5zaW5nbGVJZGVu
dGlmaWVyKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGlkZW50aWZpZXIuaXNTeW1i
b2woKSk7CisgICAgICAgICAgICAgICAgICAgIEZyb3plblZhbHVlKiBmcm96ZW4gPSBtX2dyYXBo
LmZyZWV6ZVN0cm9uZyhpZGVudGlmaWVyLmNlbGwoKSk7CisgICAgICAgICAgICAgICAgICAgIGFk
ZFRvR3JhcGgoQ2hlY2tJc0NvbnN0YW50LCBPcEluZm8oZnJvemVuKSwgYnJhbmQpOworCisKKyAg
ICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBpbmNsdWRlIGEgTXVsdGlTZXRQ
cml2YXRlQnJhbmQgdG8gaGFuZGxlIHBvbHltb3JwaGljIGNhc2VzCisgICAgICAgICAgICAgICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE1NzAKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKHNldFN0YXR1cy5pc1NpbXBsZSgpICYmIHNldFN0YXR1cy52
YXJpYW50cygpLnNpemUoKSA9PSAxICYmIE9wdGlvbnM6OnVzZUFjY2Vzc0lubGluaW5nKCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIFNldFByaXZhdGVCcmFuZFZhcmlhbnQgdmFyaWFudCA9
IHNldFN0YXR1cy52YXJpYW50cygpWzBdOworCisgICAgICAgICAgICAgICAgICAgICAgICBhZGRU
b0dyYXBoKEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFu
LnJlY29yZGVkU3RhdHVzZXMoKS5hZGRTZXRQcml2YXRlQnJhbmRTdGF0dXMoY3VycmVudENvZGVP
cmlnaW4oKSwgc2V0U3RhdHVzKSksIGJhc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgYWRk
VG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHZh
cmlhbnQub2xkU3RydWN0dXJlKCkpKSwgYmFzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBB
U1NFUlQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNC
ZWVuSW52YWxpZGF0ZWQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQodmFyaWFu
dC5uZXdTdHJ1Y3R1cmUoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24q
IHRyYW5zaXRpb24gPSBtX2dyYXBoLm1fdHJhbnNpdGlvbnMuYWRkKAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1Y3R1
cmUoKSksIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSkp
OworCisgICAgICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dFN0cnVjdHVyZSwgT3BJ
bmZvKHRyYW5zaXRpb24pLCBiYXNlKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5l
ZFNldFByaXZhdGVCcmFuZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghaW5saW5lZFNldFBy
aXZhdGVCcmFuZCkKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFNldFByaXZhdGVCcmFuZCwg
YmFzZSwgYnJhbmQpOworCisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9zZXRfcHJpdmF0ZV9i
cmFuZCk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX3B1dF9wcml2YXRlX25hbWU6IHsK
ICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0
UHJpdmF0ZU5hbWU+KCk7CiAgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1f
YmFzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxp
dGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAK
aW5kZXggMTBiODVhZDkxNWE5YmFiMjJmZmY0NTAwNjJhMTMxYWZkYTc1NmRiMy4uYWNhMDBkZTRm
NjUxZjk0ZWE0OGM5NGM2ODU5OWVhNWQyN2VkYmMxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjk0LDYgKzI5NCw4IEBAIENhcGFiaWxp
dHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29k
ZUJsb2NrLCBjb25zdCBJCiAgICAgY2FzZSBvcF9zdXBlcl9zYW1wbGVyX2VuZDoKICAgICBjYXNl
IG9wX2dldF9wcml2YXRlX25hbWU6CiAgICAgY2FzZSBvcF9wdXRfcHJpdmF0ZV9uYW1lOgorICAg
IGNhc2Ugb3Bfc2V0X3ByaXZhdGVfYnJhbmQ6CisgICAgY2FzZSBvcF9jaGVja19wcml2YXRlX2Jy
YW5kOgogICAgICAgICByZXR1cm4gQ2FuQ29tcGlsZUFuZElubGluZTsKIAogICAgIGNhc2Ugb3Bf
c3dpdGNoX3N0cmluZzogLy8gRG9uJ3QgaW5saW5lIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBj
b3B5IHN0cmluZyB0YWJsZXMgaW4gdGhlIGNvbmN1cnJlbnQgSklULgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCBlNzY3MjNlNzVkZjlhZTk0NjQzZmFjMDNi
OWVlYjI5ODg0Zjg5ZmVhLi5hNTg3NTM0N2I3NzQyNTZiNWFkNmMzNzMzZTRhMjI2NzI0NzQ5YzFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtNTA1LDYg
KzUwNSw4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0
IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlk
U3RhdHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVyRGVs
ZXRlQnlTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1czoKKyAg
ICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czoKICAgICAgICAgd3JpdGUoU2lkZVN0
YXRlKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKQEAgLTY3Nyw2ICs2NzksMTAgQEAgdm9p
ZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3Im
IHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKICAgICBj
YXNlIEdldFByaXZhdGVOYW1lOgogICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOgorICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBhIGJldHRlciBjbG9iZXJpemUgcnVsZSBmb3IgYm90aCBD
aGVja1ByaXZhdGVCcmFuZCBhbmQgU2V0UHJpdmF0ZUJyYW5kCisgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTU3MQorICAgIGNhc2UgQ2hlY2tQcml2YXRl
QnJhbmQ6CisgICAgY2FzZSBTZXRQcml2YXRlQnJhbmQ6CiAgICAgY2FzZSBEZWZpbmVEYXRhUHJv
cGVydHk6CiAgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAgIGNhc2UgRGVsZXRl
QnlJZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNF
eGl0U3RhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRT
dGF0ZS5jcHAKaW5kZXggYjk1ZjI0MzUwYmI3NTlkZWQ2ODk2Y2ZlNjMwMWU0ZmJlNTkwYmM3ZS4u
NmZkNGE3NmI2MThmODkyYmE1NTdiOTgzZDNmZTU1MzI2NGM0ZDhjYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKQEAgLTg0LDYg
Kzg0LDggQEAgYm9vbCBjbG9iYmVyc0V4aXRTdGF0ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUp
CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3Rh
dHVzOgogICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJDaGVj
a1ByaXZhdGVCcmFuZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1
czoKICAgICBjYXNlIFRyeUdldEJ5SWQ6CiAgICAgICAgIC8vIFRoZXNlIGRvIGNsb2JiZXIgbWVt
b3J5LCBidXQgbm90aGluZyB0aGF0IGlzIG9ic2VydmFibGUuIEl0IG1heSBiZSBuaWNlIHRvIHNl
cGFyYXRlIHRoZQogICAgICAgICAvLyBoZWFwcyBpbnRvIHRob3NlIHRoYXQgYXJlIG9ic2VydmFi
bGUgYW5kIHRob3NlIHRoYXQgYXJlbid0LCBidXQgd2UgZG9uJ3QgZG8gdGhhdCByaWdodCBub3cu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggZTk5M2ZiMDYxYWIz
OWQwNjg1YzIxMTJjZTUzYTY0NDYwYWQ3ZmU5ZC4uYjcxNjEwYTUxZGI3MTdlNTNkYmU1ZTQ5YjNj
YWU2YmIwNzg1MjY2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
b2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApA
QCAtMjUwLDYgKzI1MCw4IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkK
ICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0
dXM6CiAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKKyAgICBjYXNlIEZpbHRlckNoZWNr
UHJpdmF0ZUJyYW5kU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVz
OgogICAgIGNhc2UgRGF0ZUdldEludDMyT3JOYU46CiAgICAgY2FzZSBEYXRlR2V0VGltZToKICAg
ICBjYXNlIERhdGFWaWV3R2V0SW50OgpAQCAtMzI3LDYgKzMyOSw4IEBAIGJvb2wgZG9lc0dDKEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKICAg
ICBjYXNlIEdldFByaXZhdGVOYW1lOgogICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOgorICAg
IGNhc2UgU2V0UHJpdmF0ZUJyYW5kOgorICAgIGNhc2UgQ2hlY2tQcml2YXRlQnJhbmQ6CiAgICAg
Y2FzZSBQdXRTdGFjazoKICAgICBjYXNlIFB1dFRvQXJndW1lbnRzOgogICAgIGNhc2UgUmVnRXhw
RXhlYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4
IGE5OWY3MGI5NDE4YmRhODVkMDA2NDkzOGYwMmUzMzRhNTY1MmUzMGEuLjQ4ZDNjMWM4OTg5M2Rh
YmJkMjI3YmI1NzlkOWU3NDdmYTBjYzBjZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTk3Myw2ICsxOTczLDEzIEBAIHByaXZhdGU6CiAgICAg
ICAgIH0KIAogCisgICAgICAgIGNhc2UgU2V0UHJpdmF0ZUJyYW5kOiB7CisgICAgICAgICAgICBm
aXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8U3lt
Ym9sVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
CisgICAgICAgIGNhc2UgQ2hlY2tQcml2YXRlQnJhbmQ6CiAgICAgICAgIGNhc2UgUHV0UHJpdmF0
ZU5hbWU6IHsKICAgICAgICAgICAgIGZpeEVkZ2U8U3ltYm9sVXNlPihub2RlLT5jaGlsZDIoKSk7
CiAgICAgICAgICAgICBicmVhazsKQEAgLTI4NjksNiArMjg3Niw4IEBAIHByaXZhdGU6CiAgICAg
ICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRT
dGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CisgICAgICAgIGNhc2Ug
RmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVyU2V0UHJp
dmF0ZUJyYW5kU3RhdHVzOgogICAgICAgICBjYXNlIEludmFsaWRhdGlvblBvaW50OgogICAgICAg
ICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseToKICAgICAgICAgICAgIGJyZWFrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAppbmRleCBkODZhY2E0
MWQ2YzQ5ZGZiNmE2MWMxYzU4YzM1MzFlZjFkZTY3MDFkLi43ODI2NGNlYTAxNzVjNGQ2MmE0MmVh
MGMxNTdlMDQ0MWI1YjU4MWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvbXBpbGVyLmNwcApAQCAtMjQ1LDYgKzI0NSw3IEBAIHZvaWQgSklUQ29tcGlsZXI6Omxpbmso
TGlua0J1ZmZlciYgbGlua0J1ZmZlcikKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2RlbEJ5
VmFscywgbGlua0J1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9pbkJ5SWRzLCBs
aW5rQnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2luc3RhbmNlT2ZzLCBsaW5r
QnVmZmVyKTsKKyAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX3ByaXZhdGVCcmFuZEFjY2Vzc2Vz
LCBsaW5rQnVmZmVyKTsKIAogICAgIGF1dG8gbGlua0NhbGxUaHVuayA9IEZ1bmN0aW9uUHRyPE5v
UHRyVGFnPih2bSgpLmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikucmV0YWdnZWRD
b2RlPE5vUHRyVGFnPigpKTsKICAgICBmb3IgKGF1dG8mIHJlY29yZCA6IG1fanNDYWxscykgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCmluZGV4IDk5ZmJiODJh
ODhiY2ZmNDMwNWM5MzMzN2I0ZmJlMjI5ZmYzMTRlMGQuLjg4ZDYyNzY3MjQ4ZTE4OGVmMDM3NTk2
M2RjMTcyYmZjNTRiYmQ4MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklUQ29tcGlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
bXBpbGVyLmgKQEAgLTIxMiw2ICsyMTIsMTEgQEAgcHVibGljOgogICAgICAgICBtX2luQnlJZHMu
YXBwZW5kKElubGluZUNhY2hlV3JhcHBlcjxKSVRJbkJ5SWRHZW5lcmF0b3I+KGdlbiwgc2xvd1Bh
dGgpKTsKICAgICB9CiAKKyAgICB2b2lkIGFkZFByaXZhdGVCcmFuZEFjY2Vzcyhjb25zdCBKSVRQ
cml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiwgU2xvd1BhdGhHZW5lcmF0b3IqIHNsb3dQ
YXRoKQorICAgIHsKKyAgICAgICAgbV9wcml2YXRlQnJhbmRBY2Nlc3Nlcy5hcHBlbmQoSW5saW5l
Q2FjaGVXcmFwcGVyPEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcj4oZ2VuLCBzbG93UGF0
aCkpOworICAgIH0KKwogICAgIHZvaWQgYWRkSlNDYWxsKENhbGwgZmFzdENhbGwsIENhbGwgc2xv
d0NhbGwsIERhdGFMYWJlbFB0ciB0YXJnZXRUb0NoZWNrLCBDYWxsTGlua0luZm8qIGluZm8pCiAg
ICAgewogICAgICAgICBtX2pzQ2FsbHMuYXBwZW5kKEpTQ2FsbFJlY29yZChmYXN0Q2FsbCwgc2xv
d0NhbGwsIHRhcmdldFRvQ2hlY2ssIGluZm8pKTsKQEAgLTM2Miw2ICszNjcsNyBAQCBwcml2YXRl
OgogICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBwZXI8SklURGVsQnlWYWxHZW5lcmF0b3I+LCA0
PiBtX2RlbEJ5VmFsczsKICAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVEluQnlJZEdl
bmVyYXRvcj4sIDQ+IG1faW5CeUlkczsKICAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJ
VEluc3RhbmNlT2ZHZW5lcmF0b3I+LCA0PiBtX2luc3RhbmNlT2ZzOworICAgIFZlY3RvcjxJbmxp
bmVDYWNoZVdyYXBwZXI8SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yPiwgND4gbV9wcml2
YXRlQnJhbmRBY2Nlc3NlczsKICAgICBWZWN0b3I8SlNDYWxsUmVjb3JkLCA0PiBtX2pzQ2FsbHM7
CiAgICAgVmVjdG9yPEpTRGlyZWN0Q2FsbFJlY29yZCwgND4gbV9qc0RpcmVjdENhbGxzOwogICAg
IFZlY3RvcjxKU0RpcmVjdFRhaWxDYWxsUmVjb3JkLCA0PiBtX2pzRGlyZWN0VGFpbENhbGxzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKaW5kZXggMDViOTNiZTA5MWFm
YTFjMTEwZTViOGQzOGJkYzNjMWFkMzk3YzE1NS4uNjdiYTE4NDVkMTZiZjgzM2JkNTY5MzMzYjk1
YTg0YzhhMmJjZTI0OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdN
YXlFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3Bw
CkBAIC0xMDgsNiArMTA4LDggQEAgRXhpdE1vZGUgbWF5RXhpdEltcGwoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlLCBTdGF0ZVR5cGUmIHN0YXRlKQogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1
czoKICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5
U3RhdHVzOgorICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CisgICAgY2Fz
ZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2Fz
ZSBTdHJDYXQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDI2MDRjN2U3YWQ5
MzQ5Zjk3M2IwMjRjZjkyZWRlZGYxMmEzOGMxZTYuLjU4OTNiZTgwNjYwMTY5OWI2NzAxNDBiMjFj
ZTliNzRlYWY5M2QxMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0yOSw2
ICsyOSw3IEBACiAKICNpbmNsdWRlICJCM1NwYXJzZUNvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJC
YXNpY0Jsb2NrTG9jYXRpb24uaCIKKyNpbmNsdWRlICJDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQu
aCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdBZGphY2VuY3lMaXN0Lmgi
CiAjaW5jbHVkZSAiREZHQXJpdGhNb2RlLmgiCkBAIC01NCw2ICs1NSw3IEBACiAjaW5jbHVkZSAi
T3BlcmFuZHMuaCIKICNpbmNsdWRlICJQcml2YXRlRmllbGRQdXRLaW5kLmgiCiAjaW5jbHVkZSAi
UHV0QnlJZFZhcmlhbnQuaCIKKyNpbmNsdWRlICJTZXRQcml2YXRlQnJhbmRWYXJpYW50LmgiCiAj
aW5jbHVkZSAiU3BlY3VsYXRlZFR5cGUuaCIKICNpbmNsdWRlICJUeXBlTG9jYXRpb24uaCIKICNp
bmNsdWRlICJWYWx1ZVByb2ZpbGUuaCIKQEAgLTMxNDAsNiArMzE0MiwyOCBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBtX29wSW5mby5hczxEZWxldGVCeVN0YXR1cyo+KCk7CiAgICAgfQogCisg
ICAgYm9vbCBoYXNDaGVja1ByaXZhdGVCcmFuZFN0YXR1cygpCisgICAgeworICAgICAgICByZXR1
cm4gb3AoKSA9PSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1czsKKyAgICB9CisKKyAgICBD
aGVja1ByaXZhdGVCcmFuZFN0YXR1cyogY2hlY2tQcml2YXRlQnJhbmRTdGF0dXMoKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKGhhc0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzKCkpOworICAgICAgICBy
ZXR1cm4gbV9vcEluZm8uYXM8Q2hlY2tQcml2YXRlQnJhbmRTdGF0dXMqPigpOworICAgIH0KKwor
ICAgIGJvb2wgaGFzU2V0UHJpdmF0ZUJyYW5kU3RhdHVzKCkKKyAgICB7CisgICAgICAgIHJldHVy
biBvcCgpID09IEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czsKKyAgICB9CisKKyAgICBTZXRQ
cml2YXRlQnJhbmRTdGF0dXMqIHNldFByaXZhdGVCcmFuZFN0YXR1cygpCisgICAgeworICAgICAg
ICBBU1NFUlQoaGFzU2V0UHJpdmF0ZUJyYW5kU3RhdHVzKCkpOworICAgICAgICByZXR1cm4gbV9v
cEluZm8uYXM8U2V0UHJpdmF0ZUJyYW5kU3RhdHVzKj4oKTsKKyAgICB9CisKICAgICB2b2lkIGR1
bXBDaGlsZHJlbihQcmludFN0cmVhbSYgb3V0KQogICAgIHsKICAgICAgICAgaWYgKCFjaGlsZDEo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCA2NDk2YzE3ODA0
MWM5MTllOTQwYWY0NDQ4ODViZDRlZDliMWMwYzUxLi4yMzcxZmJmZGRiMjczZmI4MWQ4N2NlZTVh
MzRlOWIwNDFmMjc5MmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
CkBAIC0yMTIsNiArMjEyLDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAg
IG1hY3JvKFB1dEJ5VmFsQWxpYXMsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykg
XAogICAgIG1hY3JvKFB1dFByaXZhdGVOYW1lLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFj
cm8oUHV0UHJpdmF0ZU5hbWVCeUlkLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oQ2hl
Y2tQcml2YXRlQnJhbmQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhTZXRQcml2YXRl
QnJhbmQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhUcnlHZXRCeUlkLCBOb2RlUmVz
dWx0SlMpIFwKICAgICBtYWNybyhHZXRCeUlkLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVy
YXRlKSBcCiAgICAgbWFjcm8oR2V0QnlJZEZsdXNoLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdl
bmVyYXRlKSBcCkBAIC01NDQsNiArNTQ2LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogICAgIG1hY3JvKEZpbHRlckluQnlJZFN0YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkgXAog
ICAgIG1hY3JvKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBt
YWNybyhGaWx0ZXJEZWxldGVCeVN0YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3Jv
KEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAg
bWFjcm8oRmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAg
ICAgLyogRGF0YSB2aWV3IGFjY2VzcyAqLyBcCiAgICAgbWFjcm8oRGF0YVZpZXdHZXRJbnQsIE5v
ZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0SlMpIC8qIFRoZSBnZXRzIGFyZSBtdXN0IGdlbmVy
YXRlIGZvciBub3cgYmVjYXVzZSB0aGV5IGRvIGJvdW5kcyBjaGVja3MgKi8gXAogICAgIG1hY3Jv
KERhdGFWaWV3R2V0RmxvYXQsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0RG91YmxlKSBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRp
b25TaW5raW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RB
bGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAppbmRleCA5OTU0ZDU5MTIyZWZiYjE5ZmI5MDhjMTEw
ZjZmN2RiYzVjODVkNTIxLi43YTY5ZTRlOGQ1ZmU1OGU3NTg5YWI1NTU5OWFjMzM5ZWYwZDM0YjEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRp
b25TaW5raW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2Jq
ZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKQEAgLTEyNjEsNiArMTI2MSw4IEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAgY2FzZSBGaWx0
ZXJJbkJ5SWRTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CisgICAg
ICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CisgICAgICAgIGNhc2UgRmls
dGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOgogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAg
ZGVmYXVsdDoKQEAgLTI2MTEsNiArMjYxMyw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
Y2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVySW5C
eUlkU3RhdHVzOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6Cisg
ICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1czoKKyAgICAg
ICAgICAgICAgICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czoKICAgICAgICAgICAg
ICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5pc1BoYW50b21BbGxvY2F0aW9uKCkpCiAgICAg
ICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmVXaXRob3V0Q2hlY2tzKCk7CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCA5NmMwODY1YzU2
OTMwNTFkMjk5NjdlNGU4YmQ0MzcyODFmYWQxMjk1Li5hZmMyNmMyZDdkZjdjOGQ2OTFhNWNlZTg0
M2FlZjc2YTg2NmQzODZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMTM4OCw2ICsxMzg4
LDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBQdXRCeVZhbDoKICAgICAgICAgY2FzZSBQdXRQ
cml2YXRlTmFtZToKICAgICAgICAgY2FzZSBQdXRQcml2YXRlTmFtZUJ5SWQ6CisgICAgICAgIGNh
c2UgU2V0UHJpdmF0ZUJyYW5kOgorICAgICAgICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5kOgogICAg
ICAgICBjYXNlIFB1dENsb3N1cmVWYXI6CiAgICAgICAgIGNhc2UgUHV0SW50ZXJuYWxGaWVsZDoK
ICAgICAgICAgY2FzZSBQdXRUb0FyZ3VtZW50czoKQEAgLTE0NTQsNiArMTQ1Niw4IEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAgY2FzZSBGaWx0
ZXJJbkJ5SWRTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CisgICAg
ICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CisgICAgICAgIGNhc2UgRmls
dGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOgogICAgICAgICBjYXNlIENsZWFyQ2F0Y2hMb2NhbHM6
CiAgICAgICAgIGNhc2UgRGF0YVZpZXdTZXQ6CiAgICAgICAgIGNhc2UgSW52YWxpZGF0aW9uUG9p
bnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4
IGE0ZjRjNzU3NzRhZDdlNjdlMDdmOWM4NDkzZmY5MGQyYmI0NTQ3NWIuLjAwYTQ1MTM3YThmMTdk
NjlmY2Q4ZGRkMWMxNWM5M2NlYTlkNjY0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0zNjIsNiArMzYyLDggQEAgYm9vbCBzYWZlVG9FeGVj
dXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBi
b29sIGlnbm8KICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJJ
bkJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKKyAgICBjYXNlIEZp
bHRlckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0ZUJy
YW5kU3RhdHVzOgogICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRoZXNlIHRvIGJlIG1vdmVkIGFu
eXdoZXJlIG90aGVyIHRoYW4gd2hlcmUgd2UgcHV0IHRoZW0sIHNpbmNlIHdlIHdhbnQgdGhlbQog
ICAgICAgICAvLyB0byBjYXB0dXJlICJwcm9maWxpbmciIGF0IHRoZSBwb2ludCBpbiBjb250cm9s
IGZsb3cgaGVyZSB0aGUgdXNlciBwdXQgdGhlbS4KICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
NTMyLDYgKzUzNCw4IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3Rh
dGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBQdXRQcml2
YXRlTmFtZUJ5SWQ6CiAgICAgY2FzZSBHZXRQcml2YXRlTmFtZToKICAgICBjYXNlIEdldFByaXZh
dGVOYW1lQnlJZDoKKyAgICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5kOgorICAgIGNhc2UgU2V0UHJp
dmF0ZUJyYW5kOgogICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OgogICAgIGNhc2UgRGVmaW5l
QWNjZXNzb3JQcm9wZXJ0eToKICAgICBjYXNlIEFycmF5aWZ5OgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCBhNGE1ODQ4NTJhMjM3ZWU3
ZGIyYjNjYWFmNjJkYjk2ZTllYzdkNGJiLi5kNDM2YjFiMWNhMDRhZTRlMmJjMTc1MjdiZTBlODli
YWQ5OGE4NWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcApAQCAtMzY5Miw2ICszNjkyLDc3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVQdXRQcml2YXRlTmFtZUJ5SWQoTm9kZSogbm9kZSkKICAgICBub1Jlc3VsdChub2RlKTsK
IH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrUHJpdmF0ZUJyYW5kKE5vZGUq
IG5vZGUpCit7CisgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYnJhbmRWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIo
KSk7CisKKyAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKKwor
ICAgIEdQUlJlZyBicmFuZEdQUiA9IGJyYW5kVmFsdWUuZ3ByKCk7CisKKyAgICBzcGVjdWxhdGVT
eW1ib2wobm9kZS0+Y2hpbGQyKCksIGJyYW5kR1BSKTsKKworICAgIENvZGVPcmlnaW4gY29kZU9y
aWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKKyAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRl
ID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhp
dElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOworICAgIFJlZ2lzdGVyU2V0
IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CisKKyAgICBKSVRDb21waWxl
cjo6SnVtcExpc3Qgc2xvd0Nhc2VzOworICAgIGlmIChuZWVkc1R5cGVDaGVjayhub2RlLT5jaGls
ZDEoKSwgU3BlY0NlbGwpKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElm
Tm90Q2VsbChiYXNlUmVncykpOworCisgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9y
IGdlbigKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBB
Y2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZCwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgYmFz
ZVJlZ3MsIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShicmFuZEdQUikpOworCisgICAgZ2VuLnN0
dWJJbmZvKCktPnByb3BlcnR5SXNTeW1ib2wgPSB0cnVlOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQ
YXRoKG1faml0KTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1Bh
dGhDYWxsKAorICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJy
YW5kT3B0aW1pemUsIE5vUmVzdWx0LAorICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHVi
SW5mbygpLCBiYXNlUmVncywgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKKwor
ICAgIG1faml0LmFkZFByaXZhdGVCcmFuZEFjY2VzcyhnZW4sIHNsb3dQYXRoLmdldCgpKTsKKyAg
ICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CisKKyAgICBub1Jlc3Vs
dChub2RlKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNldFByaXZhdGVCcmFu
ZChOb2RlKiBub2RlKQoreworICAgIEFTU0VSVChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0g
Q2VsbFVzZSk7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYnJhbmRWYWx1ZSh0aGlzLCBub2RlLT5j
aGlsZDIoKSk7CisKKyAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisgICAgR1BSUmVn
IGJyYW5kR1BSID0gYnJhbmRWYWx1ZS5ncHIoKTsKKworICAgIHNwZWN1bGF0ZVN5bWJvbChub2Rl
LT5jaGlsZDIoKSwgYnJhbmRHUFIpOworCisgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gbm9k
ZS0+b3JpZ2luLnNlbWFudGljOworICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5y
ZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQo
Y29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CisgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lz
dGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wTGlz
dCBzbG93Q2FzZXM7CisgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGdlbigKKyAg
ICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBl
OjpTZXRQcml2YXRlQnJhbmQsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIEpTVmFsdWVSZWdzOjpw
YXlsb2FkT25seShiYXNlR1BSKSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJyYW5kR1BSKSk7
CisKKyAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJc1N5bWJvbCA9IHRydWU7CisgICAgZ2Vu
LmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOworICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQ
YXRoSnVtcCgpKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xv
d1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9u
U2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LCAKKyAgICAgICAgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdp
bikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIEND
YWxsSGVscGVyczo6Q2VsbFZhbHVlKGJyYW5kR1BSKSk7CisKKyAgICBtX2ppdC5hZGRQcml2YXRl
QnJhbmRBY2Nlc3MoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3IoV1RGTW92ZShzbG93UGF0aCkpOworCisgICAgbm9SZXN1bHQobm9kZSk7Cit9CisKIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja1R5cGVJbmZvRmxhZ3MoTm9kZSogbm9kZSkKIHsK
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCAwZWZj
ODZjYmRmOGZmYzFmZmNkOWNjNDIzMTA0ZjkzYzAyOTA1ZmU1Li4xMjQ4MWNmZGY1NGRkZWQzZjlk
OTc5MmI0MzFmNDVhOTJhZWQwYTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xMzczLDYgKzEzNzMsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBjb21waWxlR2V0QnlWYWxXaXRoVGhpcyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxlUHV0UHJp
dmF0ZU5hbWUoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVB1dFByaXZhdGVOYW1lQnlJZChOb2Rl
Kik7CisgICAgdm9pZCBjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQoTm9kZSopOworICAgIHZvaWQg
Y29tcGlsZVNldFByaXZhdGVCcmFuZChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlR2V0QnlPZmZz
ZXQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVB1dEJ5T2Zmc2V0KE5vZGUqKTsKICAgICB2b2lk
IGNvbXBpbGVNYXRjaFN0cnVjdHVyZShOb2RlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCAxZThiOGMyOTZjNDAy
NjA3NjM0NDhlMzY0MDM5NmI2OWE4NWQ4MTE1Li4wNzMyOTA3YTdmYzJkMDUyYTI2MTU2ZjdiYmZl
YjRhNTcxZWM3N2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTI2MDYsNiArMjYwNiwxNiBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAor
ICAgIGNhc2UgQ2hlY2tQcml2YXRlQnJhbmQ6IHsKKyAgICAgICAgY29tcGlsZUNoZWNrUHJpdmF0
ZUJyYW5kKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFNldFByaXZh
dGVCcmFuZDogeworICAgICAgICBjb21waWxlU2V0UHJpdmF0ZUJyYW5kKG5vZGUpOworICAgICAg
ICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgIGNhc2UgUHV0
QnlWYWw6CiAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOiB7CkBAIC00MjQxLDYgKzQyNTEsOCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBGaWx0ZXJQ
dXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgogICAgIGNhc2UgRmls
dGVyRGVsZXRlQnlTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1
czoKKyAgICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czoKICAgICAgICAgbV9pbnRl
cnByZXRlci5maWx0ZXJJQ1N0YXR1cyhub2RlKTsKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAKaW5kZXggMmYzMjgyNTc1NTFhNWRiN2FmMDRiMzE0NGRkNTNlYWNiODMw
NjJhOC4uMGM5YzUxNDI0MGNhYzEyOTAwN2QxZTk4M2YwZWNjMjljMDg0ZjM5ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0y
OTY2LDYgKzI5NjYsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5kOiB7
CisgICAgICAgIGNvbXBpbGVDaGVja1ByaXZhdGVCcmFuZChub2RlKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorCisgICAgY2FzZSBTZXRQcml2YXRlQnJhbmQ6IHsKKyAgICAgICAgY29tcGlsZVNl
dFByaXZhdGVCcmFuZChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBQ
dXRCeVZhbERpcmVjdDoKICAgICBjYXNlIFB1dEJ5VmFsOgogICAgIGNhc2UgUHV0QnlWYWxBbGlh
czogewpAQCAtNTY4Nyw2ICs1Njk3LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRl
ckluQnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgorICAgIGNhc2Ug
RmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRl
QnJhbmRTdGF0dXM6CiAgICAgICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVySUNTdGF0dXMobm9kZSk7
CiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFz
ZS5jcHAKaW5kZXggNzBlNzgzOThjMzZhMjg2OGZhZjcyN2M0OGVmMTM5MTJkOGQzOWE2OC4uYjkw
NjY1ZWNjZTUyYzU3ZjQ0YjcwZDQ2N2M0YTRlNWE1ZjM3MDJlMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFz
ZS5jcHAKQEAgLTI3Myw2ICsyNzMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBjYXNlIFNldFByaXZhdGVCcmFuZDoKICAg
ICAgICAgICAgIGNhc2UgUHV0QnlJZDoKICAgICAgICAgICAgIGNhc2UgUHV0QnlJZEZsdXNoOgog
ICAgICAgICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAKaW5kZXggNjY5ZTVi
YjgyMzY3M2NhZGJhNjliNWZmMjcyOWJjOGNkNDMzMTMzOS4uMDYzZWUzMWIwNTVkNjQwNWJhYThl
YTU4MWI4NzBkMmRhODZkZTAwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwCkBAIC0xOTksNiArMTk5LDggQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAgICAgICAg
ICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKICAgICAgICAgICAgIGNhc2UgRmlsdGVyRGVs
ZXRlQnlTdGF0dXM6CisgICAgICAgICAgICBjYXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5kU3Rh
dHVzOgorICAgICAgICAgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2UgR2V0QnlPZmZzZXQ6IHsKQEAg
LTQwMiw2ICs0MDQsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlu
a1N0YXR1czoKICAgICAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgogICAgICAgICAg
ICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKKyAgICAgICAgICAgIGNhc2UgRmlsdGVyQ2hl
Y2tQcml2YXRlQnJhbmRTdGF0dXM6CisgICAgICAgICAgICBjYXNlIEZpbHRlclNldFByaXZhdGVC
cmFuZFN0YXR1czoKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkubm9kZSgpID09
IGNhbmRpZGF0ZSkKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKG1fZ3JhcGgpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
YXBhYmlsaXRpZXMuY3BwCmluZGV4IDM1MjUzYjYwNGU0NzhkZjBhMjI4ZDNiMTNmNWNjYTM1MjJi
NDZiMjQuLjNkMTQ5MjUzZjZkNmI3ZDE2MjU3NTRiMDJkMGNjYjEyY2VmZTBmNDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTQwMCwxMiAr
NDAwLDE2IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQog
ICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgogICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWU6CiAg
ICAgY2FzZSBHZXRQcml2YXRlTmFtZUJ5SWQ6CisgICAgY2FzZSBDaGVja1ByaXZhdGVCcmFuZDoK
KyAgICBjYXNlIFNldFByaXZhdGVCcmFuZDoKICAgICBjYXNlIE1hdGNoU3RydWN0dXJlOgogICAg
IGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoK
ICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0
dXM6CiAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKKyAgICBjYXNlIEZpbHRlckNoZWNr
UHJpdmF0ZUJyYW5kU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVz
OgogICAgIGNhc2UgQ3JlYXRlVGhpczoKICAgICBjYXNlIENyZWF0ZVByb21pc2U6CiAgICAgY2Fz
ZSBDcmVhdGVHZW5lcmF0b3I6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAKaW5kZXggMTg4ODIxMGVmMDMwZjE2ODYxNTkyOWFjNWY3Y2I4OWQ4ZDA4NzVl
MS4uNDU4NzZlMjBkMGU5YmVjNWZkNzMwZGE0NGVkYmE4MTQ2NjdkZWM0NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtOTYxLDYgKzk2MSwx
MiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEluQnlWYWw6CiAgICAgICAgICAgICBjb21waWxl
SW5CeVZhbCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ2hlY2tQcml2YXRl
QnJhbmQ6CisgICAgICAgICAgICBjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQoKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIFNldFByaXZhdGVCcmFuZDoKKyAgICAgICAgICAgIGNv
bXBpbGVTZXRQcml2YXRlQnJhbmQoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IEhhc093blByb3BlcnR5OgogICAgICAgICAgICAgY29tcGlsZUhhc093blByb3BlcnR5KCk7CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTE2MzgsNiArMTY0NCw4IEBAIHByaXZhdGU6CiAgICAgICAg
IGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0
dXM6CiAgICAgICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CisgICAgICAgIGNhc2UgRmls
dGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0
ZUJyYW5kU3RhdHVzOgogICAgICAgICAgICAgY29tcGlsZUZpbHRlcklDU3RhdHVzKCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBEYXRlR2V0SW50MzJPck5hTjoKQEAgLTQwODMs
NiArNDA5MSw5MyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgfQogCisgICAgdm9pZCBjb21w
aWxlUHJpdmF0ZUJyYW5kQWNjZXNzKExWYWx1ZSBiYXNlLCBMVmFsdWUgYnJhbmQsIEFjY2Vzc1R5
cGUgYWNjZXNzVHlwZSkKKyAgICB7CisgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7CisgICAg
ICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoVm9pZCk7
CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihiYXNlKTsKKyAgICAgICAg
cGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGJyYW5kKTsKKyAgICAgICAgcGF0Y2hwb2lu
dC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om5vdENl
bGxNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFn
LCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOworICAgICAg
ICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMo
KSk7CisKKyAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlv
bkhhbmRsZSA9IHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKKwor
ICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKKyAgICAgICAgYm9vbCBiYXNlSXND
ZWxsID0gYWJzdHJhY3RWYWx1ZShtX25vZGUtPmNoaWxkMSgpKS5pc1R5cGUoU3BlY0NlbGwpOwor
ICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwg
Y29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIEFs
bG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKworICAgICAg
ICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0gc3RhdGUtPmppdENvZGUtPmNvbW1v
bi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChub2RlLT5vcmlnaW4uc2VtYW50
aWMpOworCisgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBkaXJlY3QgZXhpdCB0YXJnZXQgZm9y
IG9wZXJhdGlvbiBjYWxscy4KKyAgICAgICAgICAgIEJveDxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0
PiBleGNlcHRpb25zID0gZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbihwYXJh
bXMpLT5qdW1wcyhqaXQpOworCisgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBleGl0IGZvciBj
YWxsIElDJ3MgY3JlYXRlZCBieSB0aGUgSUMgZm9yIGdldHRlcnMuIFdlIGRvbid0IGhhdmUKKyAg
ICAgICAgICAgIC8vIHRvIGRvIGFueXRoaW5nIHdlaXJkIG90aGVyIHRoYW4gY2FsbCB0aGlzLCBz
aW5jZSBpdCB3aWxsIGFzc29jaWF0ZSB0aGUgZXhpdCB3aXRoCisgICAgICAgICAgICAvLyB0aGUg
Y2FsbHNpdGUgaW5kZXguCisgICAgICAgICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhp
dENyZWF0aW9uRm9yVW53aW5kKHBhcmFtcywgY2FsbFNpdGVJbmRleCk7CisKKyAgICAgICAgICAg
IEdQUlJlZyBiYXNlR1BSID0gcGFyYW1zWzBdLmdwcigpOworICAgICAgICAgICAgR1BSUmVnIGJy
YW5kR1BSID0gcGFyYW1zWzFdLmdwcigpOworCisgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9
IEJveDxKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I+OjpjcmVhdGUoCisgICAgICAgICAg
ICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5k
ZXgsIGFjY2Vzc1R5cGUsCisgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhicmFuZEdQUikpOworCisg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm90Q2VsbDsKKyAgICAgICAgICAgIGlmICgh
YmFzZUlzQ2VsbCkKKyAgICAgICAgICAgICAgICBub3RDZWxsID0gaml0LmJyYW5jaElmTm90Q2Vs
bChiYXNlR1BSKTsKKworICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGpp
dCk7CisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsK
KworICAgICAgICAgICAgcGFyYW1zLmFkZExhdGVQYXRoKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQp
IHsKKyAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dT
Y3JhdGNoKGppdCk7CisKKyAgICAgICAgICAgICAgICBhdXRvIGFwcHJvcHJpYXRlUHJpdmF0ZUFj
Y2Vzc0Z1bmN0aW9uID0gWz1dIChBY2Nlc3NUeXBlIHR5cGUpIC0+IGRlY2x0eXBlKCZvcGVyYXRp
b25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplKSB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRj
aCAodHlwZSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIEFjY2Vzc1R5cGU6OkNoZWNrUHJp
dmF0ZUJyYW5kOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkNoZWNr
UHJpdmF0ZUJyYW5kT3B0aW1pemU7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQWNjZXNzVHlw
ZTo6U2V0UHJpdmF0ZUJyYW5kOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wZXJh
dGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplOworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgIGlmIChub3RDZWxs
LmlzU2V0KCkpCisgICAgICAgICAgICAgICAgICAgIG5vdENlbGwubGluaygmaml0KTsKKyAgICAg
ICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CisgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7
CisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxP
cGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAg
ICAgICBleGNlcHRpb25zLmdldCgpLCBhcHByb3ByaWF0ZVByaXZhdGVBY2Nlc3NGdW5jdGlvbihh
Y2Nlc3NUeXBlKSwgSW52YWxpZEdQUlJlZywKKyAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVC
bG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1Yklu
Zm8oKSksIGJhc2VHUFIsIGJyYW5kR1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgaml0Lmp1
bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CisKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnJl
cG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOworCisgICAgICAg
ICAgICAgICAgaml0LmFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewor
ICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmZpbmFsaXplKGxpbmtCdWZmZXIsIGxpbmtC
dWZmZXIpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0p
OworICAgIH0KKworICAgIHZvaWQgY29tcGlsZUNoZWNrUHJpdmF0ZUJyYW5kKCkKKyAgICB7Cisg
ICAgICAgIGNvbXBpbGVQcml2YXRlQnJhbmRBY2Nlc3MobG93SlNWYWx1ZShtX25vZGUtPmNoaWxk
MSgpKSwgbG93U3ltYm9sKG1fbm9kZS0+Y2hpbGQyKCkpLCBBY2Nlc3NUeXBlOjpDaGVja1ByaXZh
dGVCcmFuZCk7CisgICAgfQorCisgICAgdm9pZCBjb21waWxlU2V0UHJpdmF0ZUJyYW5kKCkKKyAg
ICB7CisgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmNoaWxkMSgp
LnVzZUtpbmQoKSA9PSBDZWxsVXNlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSk7CisgICAg
ICAgIGNvbXBpbGVQcml2YXRlQnJhbmRBY2Nlc3MobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwg
bG93U3ltYm9sKG1fbm9kZS0+Y2hpbGQyKCkpLCBBY2Nlc3NUeXBlOjpTZXRQcml2YXRlQnJhbmQp
OworICAgIH0KKwogICAgIHZvaWQgY29tcGlsZVB1dEJ5SWRXaXRoVGhpcygpCiAgICAgewogICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IobV9vcmlnaW4uc2VtYW50aWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggYjA1MTdiZDk3N2MxNGI1YTMxY2Y1MGVjNTZj
MjViNmZkMjU2NmQxNS4uN2VmOTU5MTk5NWNlZGVlZWM3ZTE2ZDY4MGMyN2RiZmE0OTkyMDVkYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwCkBAIC0xNDQsOSArMTQ0LDkgQEAgSlNWYWx1ZSBldmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBFQ01BTW9kZSBlY21hTW8KICAgICAgICAg
fQogICAgICAgICAKICAgICAgICAgVERaRW52aXJvbm1lbnQgdmFyaWFibGVzVW5kZXJURFo7Ci0g
ICAgICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgcHJpdmF0ZU5hbWVzOwotICAgICAgICBKU1Njb3Bl
Ojpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKGNhbGxlclNjb3BlQ2hhaW4sIHZhcmlh
Ymxlc1VuZGVyVERaLCBwcml2YXRlTmFtZXMpOwotICAgICAgICBldmFsID0gRGlyZWN0RXZhbEV4
ZWN1dGFibGU6OmNyZWF0ZShnbG9iYWxPYmplY3QsIG1ha2VTb3VyY2UocHJvZ3JhbVNvdXJjZSwg
Y2FsbGVyQ29kZUJsb2NrLT5zb3VyY2UoKS5wcm92aWRlcigpLT5zb3VyY2VPcmlnaW4oKSksIGRl
cml2ZWRDb250ZXh0VHlwZSwgY2FsbGVyVW5saW5rZWRDb2RlQmxvY2stPm5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyKCksIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGNhbGxlckNvZGVCbG9jay0+
b3duZXJFeGVjdXRhYmxlKCktPmlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbigpLCBldmFsQ29udGV4
dFR5cGUsICZ2YXJpYWJsZXNVbmRlclREWiwgJnByaXZhdGVOYW1lcywgZWNtYU1vZGUpOworICAg
ICAgICBQcml2YXRlTmFtZUVudmlyb25tZW50IHByaXZhdGVOYW1lRW52aXJvbm1lbnQ7CisgICAg
ICAgIEpTU2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFooY2FsbGVyU2NvcGVD
aGFpbiwgdmFyaWFibGVzVW5kZXJURFosIHByaXZhdGVOYW1lRW52aXJvbm1lbnQpOworICAgICAg
ICBldmFsID0gRGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShnbG9iYWxPYmplY3QsIG1ha2VT
b3VyY2UocHJvZ3JhbVNvdXJjZSwgY2FsbGVyQ29kZUJsb2NrLT5zb3VyY2UoKS5wcm92aWRlcigp
LT5zb3VyY2VPcmlnaW4oKSksIGRlcml2ZWRDb250ZXh0VHlwZSwgY2FsbGVyVW5saW5rZWRDb2Rl
QmxvY2stPm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCksIGNhbGxlclVubGlua2VkQ29kZUJs
b2NrLT5wcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBj
YWxsZXJDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0luc2lkZU9yZGluYXJ5RnVuY3Rp
b24oKSwgZXZhbENvbnRleHRUeXBlLCAmdmFyaWFibGVzVW5kZXJURFosICZwcml2YXRlTmFtZUVu
dmlyb25tZW50LCBlY21hTW9kZSk7CiAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5l
eGNlcHRpb24oKSA9PSAhZXZhbCk7CiAgICAgICAgIGlmICghZXZhbCkKICAgICAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9JQ1N0YXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaAppbmRleCA5
NGQxZjkyNmNmMmFmMTdlYWEyODk0YmNhYTVkZjM1OTdiZTE1ZjBlLi5hZTNjNzg2OTU4NWFmMjlh
NmFmYzc0ZDNiZjE4OGI0OTZiZjljMDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0lDU3RhdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMu
aApAQCAtNzUsNyArNzUsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8oT3BlcmF0aW9u
R2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSkgXAogICAgIG1hY3JvKE9wZXJhdGlvbkdldFByaXZhdGVO
YW1lQnlJZCkgXAogICAgIG1hY3JvKE9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZE9wdGltaXpl
KSBcCi0gICAgbWFjcm8oT3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVCeUlkR2VuZXJpYykKKyAgICBt
YWNybyhPcGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWRHZW5lcmljKSBcCisgICAgbWFjcm8oQ2hl
Y2tQcml2YXRlQnJhbmRBZGRBY2Nlc3NDYXNlKSBcCisgICAgbWFjcm8oU2V0UHJpdmF0ZUJyYW5k
QWRkQWNjZXNzQ2FzZSkgXAorICAgIG1hY3JvKENoZWNrUHJpdmF0ZUJyYW5kUmVwbGFjZVdpdGhK
dW1wKSBcCisgICAgbWFjcm8oU2V0UHJpdmF0ZUJyYW5kUmVwbGFjZVdpdGhKdW1wKQogCiBjbGFz
cyBJQ0V2ZW50IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBhY2Mz
NGQwZWE4YmMzNGM5Y2YxYmQxYTgxYjA1ZmNmNDdjOTBkNzkyLi42YTNmYmQ3NmM1MWRhNGQ3YWQ1
YTAyYWQ5MzkyOTM1MjFhNTMwMmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0z
NTgsNiArMzU4LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAg
ICBERUZJTkVfT1Aob3BfZ2V0X2J5X2lkX2RpcmVjdCkKICAgICAgICAgREVGSU5FX09QKG9wX2dl
dF9ieV92YWwpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfcHJpdmF0ZV9uYW1lKQorICAgICAg
ICBERUZJTkVfT1Aob3Bfc2V0X3ByaXZhdGVfYnJhbmQpCisgICAgICAgIERFRklORV9PUChvcF9j
aGVja19wcml2YXRlX2JyYW5kKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X3Byb3RvdHlwZV9v
ZikKICAgICAgICAgREVGSU5FX09QKG9wX292ZXJyaWRlc19oYXNfaW5zdGFuY2UpCiAgICAgICAg
IERFRklORV9PUChvcF9pbnN0YW5jZW9mKQpAQCAtNTA4LDYgKzUxMCw3IEBAIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgbV9kZWxCeVZhbEluZGV4ID0gMDsKICAgICBt
X2RlbEJ5SWRJbmRleCA9IDA7CiAgICAgbV9pbnN0YW5jZU9mSW5kZXggPSAwOworICAgIG1fcHJp
dmF0ZUJyYW5kQWNjZXNzSW5kZXggPSAwOwogICAgIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4ID0g
MDsKICAgICBtX2NhbGxMaW5rSW5mb0luZGV4ID0gMDsKIApAQCAtNTY0LDYgKzU2Nyw4IEBAIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FT
RV9PUChvcF9nZXRfYnlfaWRfZGlyZWN0KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bf
Z2V0X2J5X3ZhbCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2dldF9wcml2YXRlX25h
bWUpCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9zZXRfcHJpdmF0ZV9icmFuZCkKKyAg
ICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2NoZWNrX3ByaXZhdGVfYnJhbmQpCiAgICAgICAg
IERFRklORV9TTE9XQ0FTRV9PUChvcF9pbnN0YW5jZW9mKQogICAgICAgICBERUZJTkVfU0xPV0NB
U0VfT1Aob3BfaW5zdGFuY2VvZl9jdXN0b20pCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChv
cF9qbGVzcykKQEAgLTY1NCw2ICs2NTksNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93
Q2FzZXMoKQogICAgIFJFTEVBU0VfQVNTRVJUKG1fcHV0QnlJZEluZGV4ID09IG1fcHV0QnlJZHMu
c2l6ZSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVChtX2luQnlJZEluZGV4ID09IG1faW5CeUlkcy5z
aXplKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKG1faW5zdGFuY2VPZkluZGV4ID09IG1faW5zdGFu
Y2VPZnMuc2l6ZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChtX3ByaXZhdGVCcmFuZEFjY2Vzc0lu
ZGV4ID09IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMuc2l6ZSgpKTsKICAgICBSRUxFQVNFX0FTU0VS
VChtX2NhbGxMaW5rSW5mb0luZGV4ID09IG1fY2FsbENvbXBpbGF0aW9uSW5mby5zaXplKCkpOwog
CiAgICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmcoKSkKQEAgLTkwMiw2ICs5MDgsNyBAQCBDb21w
aWxhdGlvblJlc3VsdCBKSVQ6OmxpbmsoKQogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZGVs
QnlWYWxzLCBwYXRjaEJ1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9pbkJ5SWRz
LCBwYXRjaEJ1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9pbnN0YW5jZU9mcywg
cGF0Y2hCdWZmZXIpOworICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fcHJpdmF0ZUJyYW5kQWNj
ZXNzZXMsIHBhdGNoQnVmZmVyKTsKIAogICAgIGlmIChtX2J5VmFsQ29tcGlsYXRpb25JbmZvLnNp
emUoKSkgewogICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxFeGNlcHRpb25IYW5kbGVyUHRyVGFn
PiBleGNlcHRpb25IYW5kbGVyID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZjxFeGNlcHRpb25IYW5k
bGVyUHRyVGFnPihtX2V4Y2VwdGlvbkhhbmRsZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5k
ZXggN2MzNWI1NjczNDc3NWUzNmVmYzM5NmQ1NzJiOTkyMTVjNTllNmRmMi4uMmVhZDU1ZGMwNTRj
MDcyNjExMGI4NDVhZDA4Yzg3YjdjM2E5ODQwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBA
IC01NjMsNiArNTYzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9n
ZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9n
ZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9v
cF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2
b2lkIGVtaXRfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiopOwogICAg
ICAgICB2b2lkIGVtaXRfb3BfZ2V0X3Byb3RvdHlwZV9vZihjb25zdCBJbnN0cnVjdGlvbiopOwog
ICAgICAgICB2b2lkIGVtaXRfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKQEAgLTY5
NSw2ICs2OTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9n
ZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9ieV92YWwoY29uc3Qg
SW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAg
IHZvaWQgZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiosIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19v
cF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jaGVja19wcml2YXRl
X2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9hcmd1bWVudF9ieV92YWwoY29uc3Qg
SW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAg
IHZvaWQgZW1pdFNsb3dfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaW5zdGFu
Y2VvZihjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
KTsKQEAgLTk4NSw2ICs5ODksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPEpJ
VERlbEJ5SWRHZW5lcmF0b3I+IG1fZGVsQnlJZHM7CiAgICAgICAgIFZlY3RvcjxKSVREZWxCeVZh
bEdlbmVyYXRvcj4gbV9kZWxCeVZhbHM7CiAgICAgICAgIFZlY3RvcjxKSVRJbnN0YW5jZU9mR2Vu
ZXJhdG9yPiBtX2luc3RhbmNlT2ZzOworICAgICAgICBWZWN0b3I8SklUUHJpdmF0ZUJyYW5kQWNj
ZXNzR2VuZXJhdG9yPiBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzOwogICAgICAgICBWZWN0b3I8QnlW
YWxDb21waWxhdGlvbkluZm8+IG1fYnlWYWxDb21waWxhdGlvbkluZm87CiAgICAgICAgIFZlY3Rv
cjxDYWxsQ29tcGlsYXRpb25JbmZvPiBtX2NhbGxDb21waWxhdGlvbkluZm87CiAgICAgICAgIFZl
Y3RvcjxKdW1wVGFibGU+IG1fam1wVGFibGU7CkBAIC0xMDA4LDYgKzEwMTMsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQgbV9kZWxCeVZhbEluZGV4IHsgVUlOVF9NQVggfTsK
ICAgICAgICAgdW5zaWduZWQgbV9kZWxCeUlkSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1
bnNpZ25lZCBtX2luc3RhbmNlT2ZJbmRleCB7IFVJTlRfTUFYIH07CisgICAgICAgIHVuc2lnbmVk
IG1fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25l
ZCBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCB7IFVJTlRfTUFYIH07CiAgICAgICAgIHVuc2lnbmVk
IG1fY2FsbExpbmtJbmZvSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBtX2J5
dGVjb2RlQ291bnRIYXZpbmdTbG93Q2FzZSB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKaW5kZXggOWJjMjYyM2Iz
ZmQ1MDdkYzlhZmM5OGE3NzAxODZmMWU1ODFiNWM4ZS4uZjUyYzNjNzYyMTVhYTMyNmRkZTlmODk4
NTYyOThjM2RlNjQ2MjJjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKQEAgLTMyNCw2ICszMjQsMzcgQEAgdm9pZCBK
SVRHZXRCeVZhbEdlbmVyYXRvcjo6ZmluYWxpemUoCiAgICAgICAgIGZhc3RQYXRoLCBzbG93UGF0
aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOwog
fQogCitKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OkpJVFByaXZhdGVCcmFuZEFjY2Vz
c0dlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBD
YWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdz
IGJyYW5kKQorICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgs
IGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMpCit7CisgICAgQVNTRVJUKGFjY2Vzc1R5cGUgPT0g
QWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQgfHwgYWNjZXNzVHlwZSA9PSBBY2Nlc3NUeXBl
OjpTZXRQcml2YXRlQnJhbmQpOworICAgIG1fc3R1YkluZm8tPmhhc0NvbnN0YW50SWRlbnRpZmll
ciA9IGZhbHNlOworCisgICAgbV9zdHViSW5mby0+YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigp
OworICAgIG1fc3R1YkluZm8tPnJlZ3MuYnJhbmRHUFIgPSBicmFuZC5wYXlsb2FkR1BSKCk7Cisg
ICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSBJbnZhbGlkR1BSUmVnOworI2lmIFVTRShKU1ZBTFVF
MzJfNjQpCisgICAgbV9zdHViSW5mby0+YmFzZVRhZ0dQUiA9IGJhc2UudGFnR1BSKCk7CisgICAg
bV9zdHViSW5mby0+di5icmFuZFRhZ0dQUiA9IGJyYW5kLnRhZ0dQUigpOworICAgIG1fc3R1Yklu
Zm8tPnZhbHVlVGFnR1BSID0gSW52YWxpZEdQUlJlZzsKKyNlbmRpZgorfQorCit2b2lkIEpJVFBy
aXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxl
ciYgaml0KQoreworICAgIG1fc3RhcnQgPSBqaXQubGFiZWwoKTsKKyAgICBtX3Nsb3dQYXRoSnVt
cCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAgbV9kb25lID0gaml0LmxhYmVsKCk7Cit9CisK
K3ZvaWQgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpmaW5hbGl6ZSgKKyAgICBMaW5r
QnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCit7CisgICAgQVNTRVJUKG1f
c3RhcnQuaXNTZXQoKSk7CisgICAgQmFzZTo6ZmluYWxpemUoCisgICAgICAgIGZhc3RQYXRoLCBz
bG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFy
dCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJh
dG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9y
LmgKaW5kZXggODUzODM1YTM5MzU4NTI5MTI3ZGUyZjM5N2I0OTc5OTgyNGUzNmY2Yi4uZDZjYTZl
MTZhM2YzMmM2NDBmOTZjYjI1NTE5NTU0OGIwZjJlYjY1MSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaApAQCAtMjQ2LDEyICsy
NDYsMzYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBKU1ZhbHVlUmVncyBtX2Jhc2U7CiAgICAg
SlNWYWx1ZVJlZ3MgbV9yZXN1bHQ7Ci0gICAgSlNWYWx1ZVJlZ3MgbV87CiAKICAgICBNYWNyb0Fz
c2VtYmxlcjo6TGFiZWwgbV9zdGFydDsKICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVt
cCBtX3Nsb3dQYXRoSnVtcDsKIH07CiAKK2NsYXNzIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVy
YXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CisgICAgdXNpbmcgQmFzZSA9
IEpJVElubGluZUNhY2hlR2VuZXJhdG9yOworcHVibGljOgorICAgIEpJVFByaXZhdGVCcmFuZEFj
Y2Vzc0dlbmVyYXRvcigpIHsgfQorCisgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9y
KAorICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NU
eXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgSlNWYWx1ZVJl
Z3MgYmFzZSwgSlNWYWx1ZVJlZ3MgYnJhbmQpOworCisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAg
c2xvd1BhdGhKdW1wKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3Nsb3dQYXRoSnVt
cC5tX2p1bXAuaXNTZXQoKSk7CisgICAgICAgIHJldHVybiBtX3Nsb3dQYXRoSnVtcC5tX2p1bXA7
CisgICAgfQorCisgICAgdm9pZCBmaW5hbGl6ZSgKKyAgICAgICAgTGlua0J1ZmZlciYgZmFzdFBh
dGhMaW5rQnVmZmVyLCBMaW5rQnVmZmVyJiBzbG93UGF0aExpbmtCdWZmZXIpOworICAgIAorICAg
IHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOworCitwcml2YXRlOgorICAg
IE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX3N0YXJ0OworICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRj
aGFibGVKdW1wIG1fc2xvd1BhdGhKdW1wOworfTsKKwogdGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9y
VHlwZT4KIHZvaWQgZmluYWxpemVJbmxpbmVDYWNoZXMoVmVjdG9yVHlwZSYgdmVjdG9yLCBMaW5r
QnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCA2Y2NhMWM5MjQ0OWFkYTRiYTMx
YTY4YTkxOTc0MmI5ODEwYTEyOTU4Li45MTg1NzA1NTZmMGY5N2EyY2Q2YTVjZTI3ZGE0MjhhOWQ0
NzZjZGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAK
QEAgLTEwOTQsNiArMTA5NCwxMDEgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bkRpcmVjdFB1dEJ5VmFsR2VuZXJpYywgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KgogICAgIGRpcmVj
dFB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgYXNPYmplY3QoYmFzZVZhbHVlKSwgc3Vic2NyaXB0LCB2
YWx1ZSwgYnlWYWxJbmZvLCBlY21hTW9kZSk7CiB9CiAKK0pTQ19ERUZJTkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJyYW5kKSkKK3sKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkQmFzZVZhbHVlKTsKKyAgICBKU1ZhbHVlIGJyYW5kID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRCcmFuZCk7CisKKyAgICBBU1NFUlQoYmFzZVZhbHVlLmlzT2JqZWN0KCkpOwor
ICAgIEFTU0VSVChicmFuZC5pc1N5bWJvbCgpKTsKKworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0
ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKKyAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IGJh
c2VPYmplY3QtPnN0cnVjdHVyZSh2bSk7CisgICAgYmFzZU9iamVjdC0+c2V0UHJpdmF0ZUJyYW5k
KGdsb2JhbE9iamVjdCwgYnJhbmQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZv
aWQoKSk7CisKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2Nr
KCk7CisgICAgaWYgKENhY2hlYWJsZUlkZW50aWZpZXI6OmlzQ2FjaGVhYmxlSWRlbnRpZmllckNl
bGwoYnJhbmQpKSB7CisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21DZWxsKGJyYW5kLmFzQ2VsbCgpKTsKKyAgICAg
ICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeSh2bSwgY29kZUJsb2NrLCBiYXNlT2Jq
ZWN0LT5zdHJ1Y3R1cmUodm0pLCBpZGVudGlmaWVyKSkKKyAgICAgICAgICAgIHJlcGF0Y2hTZXRQ
cml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIG9sZFN0cnVj
dHVyZSwgaWRlbnRpZmllciwgKnN0dWJJbmZvKTsKKyAgICB9CisKK30KKworSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvblNldFByaXZhdGVCcmFuZEdlbmVyaWMsIHZvaWQsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCcmFu
ZCkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9s
b2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2VWYWx1ZSk7CisgICAgSlNWYWx1ZSBicmFuZCA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkQnJhbmQpOworCisgICAgaWYgKHN0dWJJbmZvKQorICAgICAg
ICBzdHViSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKKworICAgIEFTU0VSVChiYXNlVmFsdWUu
aXNPYmplY3QoKSk7CisgICAgQVNTRVJUKGJyYW5kLmlzU3ltYm9sKCkpOworCisgICAgSlNPYmpl
Y3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOworICAgIGJhc2VPYmplY3QtPnNl
dFByaXZhdGVCcmFuZChnbG9iYWxPYmplY3QsIGJyYW5kKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB2b2lkKCkpOworfQorCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJyYW5kKSkKK3sKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkQmFzZVZhbHVlKTsKKyAgICBKU1ZhbHVlIGJyYW5kID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRCcmFuZCk7CisKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGJhc2VWYWx1ZS50b09i
amVjdChnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7CisKKyAgICBBU1NFUlQoYnJhbmQuaXNTeW1ib2woKSk7CisKKyAgICBiYXNlT2JqZWN0LT5j
aGVja1ByaXZhdGVCcmFuZChnbG9iYWxPYmplY3QsIGJyYW5kKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxs
RnJhbWUtPmNvZGVCbG9jaygpOworICAgIGlmIChDYWNoZWFibGVJZGVudGlmaWVyOjppc0NhY2hl
YWJsZUlkZW50aWZpZXJDZWxsKGJyYW5kKSkgeworICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVy
IGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tQ2VsbChicmFuZC5h
c0NlbGwoKSk7CisgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nQnkodm0sIGNv
ZGVCbG9jaywgYmFzZU9iamVjdC0+c3RydWN0dXJlKHZtKSwgaWRlbnRpZmllcikpCisgICAgICAg
ICAgICByZXBhdGNoQ2hlY2tQcml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJh
c2VPYmplY3QsIGlkZW50aWZpZXIsICpzdHViSW5mbyk7CisgICAgfQorfQorCitKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRHZW5lcmljLCB2b2lkLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QnJhbmQpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOworICAgIEpTVmFsdWUgYnJhbmQg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJyYW5kKTsKKworICAgIHN0dWJJbmZvLT50b29rU2xv
d1BhdGggPSB0cnVlOworCisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBiYXNlVmFsdWUudG9P
YmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lk
KCkpOworCisgICAgQVNTRVJUKGJyYW5kLmlzU3ltYm9sKCkpOworCisgICAgYmFzZU9iamVjdC0+
Y2hlY2tQcml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0LCBicmFuZCk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgdm9pZCgpKTsKK30KKwogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5m
byogYnlWYWxJbmZvLCBQcml2YXRlRmllbGRQdXRLaW5kIHB1dEtpbmQpKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTIyNzYsNiArMjM3MSw4IEBAIEFMV0FZU19JTkxJ
TkUgc3RhdGljIEpTVmFsdWUgZ2V0UHJpdmF0ZU5hbWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsK
IAogICAgIEpTT2JqZWN0KiBiYXNlID0gYmFzZVZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKKwogICAgIFByb3Bl
cnR5U2xvdCBzbG90KGJhc2UsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRP
d25Qcm9wZXJ0eSk7CiAgICAgYmFzZS0+Z2V0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgZmll
bGROYW1lLCBzbG90KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkp
OwpAQCAtMjM4Miw3ICsyNDc5LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bkdldFByaXZhdGVOYW1lQnlJZE9wdGltaXplLCBFbmNvZGVkSlNWYWx1ZSwgKEoKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShzbG90LmdldFZhbHVlKGdsb2JhbE9iamVjdCwgZmllbGRO
YW1lKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShnZXRQcml2YXRlTmFt
ZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBmaWVsZE5hbWUpKTsKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShnZXRQcml2YXRlTmFtZShn
bG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBmaWVsZE5hbWUpKSk7CiB9CiAKIEpT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWRHZW5lcmlj
LCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIGJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJZGVudGlmaWVyKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggOTQyNWI1MTdmOThlZWY2M2Uz
NDlkMDc5NTFjMTk4MGVkZDU5OTE4OC4uMmZjM2E1YzY2MjAyNDY0YTA0YmU0MjEwZGEyNjg0YjJm
YmViMDFhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAg
LTE5Miw2ICsxOTIsMTEgQEAgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRC
eUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUsIHZvaWQKIEpTQ19ERUNMQVJFX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0QnlJZFNldFByaXZhdGVGaWVsZFN0cmljdCwgdm9pZCwg
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpKTsKIEpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0QnlJZFNldFByaXZhdGVGaWVsZFN0cmlj
dE9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVp
bnRwdHJfdCkpOwogCitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblNldFByaXZh
dGVCcmFuZE9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5m
byosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkpOworSlNDX0RFQ0xBUkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplLCB2b2lkLCAoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSkpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25TZXRQcml2YXRlQnJh
bmRHZW5lcmljLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZEdlbmVyaWMsIHZvaWQsIChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSk7
CisKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRp
bWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgUHJpdmF0ZUZpZWxkUHV0S2luZCkpOwog
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWMs
IHZvaWQsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIFByaXZhdGVGaWVsZFB1dEtpbmQpKTsKIEpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZSwgdm9pZCwgKEpT
R2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggNTVlYWI2ZDc3MTc5NGRlM2IzOWNiYmRl
N2MzZTI0ZGNlZGM1MGVkMi4uY2E1NzcyYjBhOGM0NWYwM2JmODI0ZjQ4NmM2ZDU5OGMyZGIxZTBj
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAKQEAgLTE0Miw2ICsxNDIsNzkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9wcml2YXRl
X25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUKICAgICBnZW4u
cmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogfQogCit2b2lkIEpJVDo6
ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
U2V0UHJpdmF0ZUJyYW5kPigpOworICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUu
bV9iYXNlOworICAgIFZpcnR1YWxSZWdpc3RlciBicmFuZCA9IGJ5dGVjb2RlLm1fYnJhbmQ7Cisg
ICAgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKKyAgICBHUFJSZWcgYnJhbmRHUFIgPSByZWdUMTsK
KyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VHUFIpOworICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoYnJhbmQsIGJyYW5kR1BSKTsKKworICAgIGVtaXRKdW1wU2xvd0Nhc2VJ
Zk5vdEpTQ2VsbChiYXNlR1BSLCBiYXNlKTsKKworICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dl
bmVyYXRvciBnZW4oCisgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJ
bmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6U2V0UHJp
dmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAg
ICAgIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhicmFuZEdQUikpOworICAgIGdl
bi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhK
dW1wKCkpOworICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMuYXBwZW5kKGdlbik7CisKKyAgICAv
LyBXZSBzaG91bGQgZW1pdCB3cml0ZS1iYXJyaWVyIGF0IHRoZSBlbmQgb2Ygc2VxdWVuY2Ugc2lu
Y2Ugd3JpdGUtYmFycmllciBjbG9iYmVycyByZWdpc3RlcnMuCisgICAgLy8gSUMgY2FuIHdyaXRl
IG5ldyBTdHJ1Y3R1cmUgd2l0aG91dCB3cml0ZS1iYXJyaWVyIGlmIGEgYmFzZSBpcyBjZWxsLgor
ICAgIC8vIEZJWE1FOiBVc2UgVW5jb25kaXRpb25hbFdyaXRlQmFycmllciBpbiBCYXNlbGluZSBl
ZmZlY3RpdmVseSB0byByZWR1Y2UgY29kZSBzaXplLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkzOTUKKyAgICBlbWl0V3JpdGVCYXJyaWVyKGJhc2Us
IFNob3VsZEZpbHRlckJhc2UpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3ByaXZh
dGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyKQoreworICAgIEdQUlJlZyBiYXNlR1BSID0gcmVnVDA7CisgICAgR1BSUmVnIGJy
YW5kR1BSID0gcmVnVDE7CisKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworCisgICAgSklU
UHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yJiBnZW4gPSBtX3ByaXZhdGVCcmFuZEFjY2Vzc2Vz
W21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXhdOworICAgICsrbV9wcml2YXRlQnJhbmRBY2Nlc3NJ
bmRleDsKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBDYWxsIGNhbGwg
PSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplLCBUcnVzdGVk
SW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBiYXNl
R1BSLCBicmFuZEdQUik7CisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2lu
LCBjYWxsKTsKK30KKwordm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQ2hlY2tQcml2YXRlQnJhbmQ+KCk7CisgICAgVmly
dHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVy
IGJyYW5kID0gYnl0ZWNvZGUubV9icmFuZDsKKworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
YmFzZSwgcmVnVDApOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnJhbmQsIHJlZ1QxKTsK
KworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7CisKKyAgICBK
SVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IgZ2VuKAorICAgICAgICBtX2NvZGVCbG9jaywg
Q29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRl
eCksIEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJl
Z3MocmVnVDEpKTsKKyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgYWRkU2xv
d0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzLmFw
cGVuZChnZW4pOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFu
ZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0
ZXIpCit7CisgICAgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKKyAgICBHUFJSZWcgYnJhbmRHUFIg
PSByZWdUMTsKKworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisKKyAgICBKSVRQcml2YXRl
QnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2
YXRlQnJhbmRBY2Nlc3NJbmRleF07CisgICAgKyttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4Owor
ICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIENhbGwgY2FsbCA9IGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSwgVHJ1c3RlZEltbVB0
cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgYmFzZUdQUiwg
YnJhbmRHUFIpOworICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2Fs
bCk7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWxfZGlyZWN0KGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdF9vcF9wdXRfYnlfdmFsPE9w
UHV0QnlWYWxEaXJlY3Q+KGN1cnJlbnRJbnN0cnVjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRleCBiMTRhNTA2
MzQ5NDUxNTkzODNlN2QwOWFiNWI5ZGU0YzM1MGRkZTgyLi5kODYxNTFiNjMxMWY0ZGMyNmRjNDNm
ZGZkOTc1YjU2ZDZmNGU5NzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKQEAgLTM4MCw2ICszODAsODAgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmUKICAgICBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCsrOwogfQogCit2
b2lkIEpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wU2V0UHJpdmF0ZUJyYW5kPigpOworICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0g
Ynl0ZWNvZGUubV9iYXNlOworICAgIFZpcnR1YWxSZWdpc3RlciBicmFuZCA9IGJ5dGVjb2RlLm1f
YnJhbmQ7CisgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MocmVnVDEsIHJlZ1QwKTsKKyAgICBKU1Zh
bHVlUmVncyBicmFuZFJlZ3MocmVnVDMsIHJlZ1QyKTsKKyAgICBlbWl0TG9hZChiYXNlLCBiYXNl
UmVncy50YWdHUFIoKSwgYmFzZVJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICBlbWl0TG9hZChicmFu
ZCwgYnJhbmRSZWdzLnRhZ0dQUigpLCBicmFuZFJlZ3MucGF5bG9hZEdQUigpKTsKKworICAgIGVt
aXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCBiYXNlUmVncy50YWdHUFIoKSk7CisKKyAg
ICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IgZ2VuKAorICAgICAgICBtX2NvZGVCbG9j
aywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJ
bmRleCksIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVCcmFuZCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBiYXNlUmVncywgYnJhbmRSZWdzKTsKKyAgICBn
ZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRo
SnVtcCgpKTsKKyAgICBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzLmFwcGVuZChnZW4pOworCisgICAg
Ly8gV2Ugc2hvdWxkIGVtaXQgd3JpdGUtYmFycmllciBhdCB0aGUgZW5kIG9mIHNlcXVlbmNlIHNp
bmNlIHdyaXRlLWJhcnJpZXIgY2xvYmJlcnMgcmVnaXN0ZXJzLgorICAgIC8vIElDIGNhbiB3cml0
ZSBuZXcgU3RydWN0dXJlIHdpdGhvdXQgd3JpdGUtYmFycmllciBpZiBhIGJhc2UgaXMgY2VsbC4K
KyAgICAvLyBGSVhNRTogVXNlIFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIgaW4gQmFzZWxpbmUg
ZWZmZWN0aXZlbHkgdG8gcmVkdWNlIGNvZGUgc2l6ZS4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5Mzk1CisgICAgZW1pdFdyaXRlQmFycmllcihiYXNl
LCBTaG91bGRGaWx0ZXJCYXNlKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX3NldF9wcml2
YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKK3sKKyAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyhyZWdUMSwgcmVnVDApOwor
ICAgIEpTVmFsdWVSZWdzIGJyYW5kUmVncyhyZWdUMywgcmVnVDIpOworCisgICAgbGlua0FsbFNs
b3dDYXNlcyhpdGVyKTsKKworICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYgZ2Vu
ID0gbV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4XTsKKyAg
ICArK21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXg7CisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9
IGxhYmVsKCk7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TZXRQcml2
YXRlQnJhbmRPcHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
KCkpLCBnZW4uc3R1YkluZm8oKSwgYmFzZVJlZ3MsIGJyYW5kUmVncyk7CisgICAgZ2VuLnJlcG9y
dFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKK30KKwordm9pZCBKSVQ6OmVtaXRf
b3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQ2hl
Y2tQcml2YXRlQnJhbmQ+KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5t
X2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJyYW5kID0gYnl0ZWNvZGUubV9icmFuZDsKKyAg
ICBKU1ZhbHVlUmVncyBiYXNlUmVncyhyZWdUMSwgcmVnVDApOworICAgIEpTVmFsdWVSZWdzIGJy
YW5kUmVncyhyZWdUMywgcmVnVDIpOworICAgIGVtaXRMb2FkKGJhc2UsIGJhc2VSZWdzLnRhZ0dQ
UigpLCBiYXNlUmVncy5wYXlsb2FkR1BSKCkpOworICAgIGVtaXRMb2FkKGJyYW5kLCBicmFuZFJl
Z3MudGFnR1BSKCksIGJyYW5kUmVncy5wYXlsb2FkR1BSKCkpOworCisgICAgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SlNDZWxsKGJhc2UsIGJhc2VSZWdzLnRhZ0dQUigpKTsKKworICAgIEpJVFByaXZh
dGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCisgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNj
ZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKKyAgICAgICAgYmFzZVJlZ3MsIGJyYW5kUmVncyk7CisgICAgZ2VuLmdlbmVy
YXRlRmFzdFBhdGgoKnRoaXMpOworICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7
CisgICAgbV9wcml2YXRlQnJhbmRBY2Nlc3Nlcy5hcHBlbmQoZ2VuKTsKK30KKwordm9pZCBKSVQ6
OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIEpTVmFsdWVSZWdzIGJh
c2VSZWdzKHJlZ1QxLCByZWdUMCk7CisgICAgSlNWYWx1ZVJlZ3MgYnJhbmRSZWdzKHJlZ1QzLCBy
ZWdUMik7CisKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworCisgICAgSklUUHJpdmF0ZUJy
YW5kQWNjZXNzR2VuZXJhdG9yJiBnZW4gPSBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzW21fcHJpdmF0
ZUJyYW5kQWNjZXNzSW5kZXhdOworICAgICsrbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleDsKKyAg
ICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUsIFRydXN0ZWRJbW1QdHIo
bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VSZWdzLCBi
cmFuZFJlZ3MpOworICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2Fs
bCk7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWxfZGlyZWN0KGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdF9vcF9wdXRfYnlfdmFsPE9w
UHV0QnlWYWxEaXJlY3Q+KGN1cnJlbnRJbnN0cnVjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmNwcAppbmRleCA5ZjQwYTkwMjBhOGQxNjUzN2ViNzhlMDQ5M2ExYTgxYWE5N2I2
YzU0Li5mZjU5YTBmYjVmOGNjYmFhZjVkMmQzYTA5YTRlMTIwMDIxMjBiMjE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTEwMTAsNiArMTAxMCwxMTIgQEAgdm9pZCBy
ZXBhdGNoSW5CeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29k
ZUJsb2NrLCBKU09iamVjdCoKICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVC
bG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkluQnlJZCk7CiB9
CiAKK3N0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUNoZWNrUHJpdmF0ZUJyYW5kKAor
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBK
U09iamVjdCogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBicmFuZElELAorICAgIFN0cnVjdHVy
ZVN0dWJJbmZvJiBzdHViSW5mbykKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCByZXN1bHQ7CisgICAgSWRlbnRpZmllciBpZGVu
dCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIGJyYW5kSUQudWlkKCkpOworCisgICAgeworICAg
ICAgICBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrLCB2
bS5oZWFwKTsKKyAgICAgICAgaWYgKGZvcmNlSUNGYWlsdXJlKGdsb2JhbE9iamVjdCkpCisgICAg
ICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IGJhc2UtPnN0cnVjdHVyZSh2bSk7CisKKyAgICAgICAgSW5saW5lQ2FjaGVBY3Rpb24g
YWN0aW9uID0gYWN0aW9uRm9yQ2VsbCh2bSwgYmFzZSk7CisgICAgICAgIGlmIChhY3Rpb24gIT0g
QXR0ZW1wdFRvQ2FjaGUpCisgICAgICAgICAgICByZXR1cm4gYWN0aW9uOworCisgICAgICAgIGJv
b2wgaXNCYXNlUHJvcGVydHkgPSB0cnVlOworICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkNoZWNr
UHJpdmF0ZUJyYW5kQWRkQWNjZXNzQ2FzZSwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQs
IGlzQmFzZVByb3BlcnR5KSk7CisKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVCcmFuZCh2bSwgY29kZUJs
b2NrLCBicmFuZElELCBzdHJ1Y3R1cmUpOworCisgICAgICAgIHJlc3VsdCA9IHN0dWJJbmZvLmFk
ZEFjY2Vzc0Nhc2UobG9ja2VyLCBnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgRUNNQU1vZGU6OnN0
cmljdCgpLCBicmFuZElELCBXVEZNb3ZlKG5ld0Nhc2UpKTsKKworICAgICAgICBpZiAocmVzdWx0
LmdlbmVyYXRlZFNvbWVDb2RlKCkpIHsKKyAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6Q2hl
Y2tQcml2YXRlQnJhbmRSZXBsYWNlV2l0aEp1bXAsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlk
ZW50LCBpc0Jhc2VQcm9wZXJ0eSkpOworCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1
bHQuY29kZSgpKTsKKyAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChz
dHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5j
b2RlKCkpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZpcmVXYXRjaHBvaW50c0FuZENsZWFy
U3R1YklmTmVlZGVkKHZtLCBzdHViSW5mbywgY29kZUJsb2NrLCByZXN1bHQpOworCisgICAgcmV0
dXJuIHJlc3VsdC5zaG91bGRHaXZlVXBOb3coKSA/IEdpdmVVcE9uQ2FjaGUgOiBSZXRyeUNhY2hl
TGF0ZXI7Cit9CisKK3ZvaWQgcmVwYXRjaENoZWNrUHJpdmF0ZUJyYW5kKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU09iamVjdCogYmFzZU9iamVj
dCwgQ2FjaGVhYmxlSWRlbnRpZmllciBicmFuZElELCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1Yklu
Zm8pCit7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwor
CisgICAgaWYgKHRyeUNhY2hlQ2hlY2tQcml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxv
Y2ssIGJhc2VPYmplY3QsIGJyYW5kSUQsIHN0dWJJbmZvKSA9PSBHaXZlVXBPbkNhY2hlKQorICAg
ICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0
aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRHZW5lcmljKTsKK30KKwor
c3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlU2V0UHJpdmF0ZUJyYW5kKAorICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU09iamVj
dCogYmFzZSwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXIgYnJh
bmRJRCwKKyAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCit7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgcmVzdWx0Owor
ICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBicmFuZElELnVp
ZCgpKTsKKworICAgIHsKKyAgICAgICAgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihj
b2RlQmxvY2stPm1fbG9jaywgdm0uaGVhcCk7CisgICAgICAgIGlmIChmb3JjZUlDRmFpbHVyZShn
bG9iYWxPYmplY3QpKQorICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisgICAgICAg
IAorICAgICAgICBBU1NFUlQob2xkU3RydWN0dXJlKTsKKworICAgICAgICBpZiAob2xkU3RydWN0
dXJlLT5pc0RpY3Rpb25hcnkoKSkKKyAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7
CisKKyAgICAgICAgSW5saW5lQ2FjaGVBY3Rpb24gYWN0aW9uID0gYWN0aW9uRm9yQ2VsbCh2bSwg
YmFzZSk7CisgICAgICAgIGlmIChhY3Rpb24gIT0gQXR0ZW1wdFRvQ2FjaGUpCisgICAgICAgICAg
ICByZXR1cm4gYWN0aW9uOworICAgICAgICAKKyAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1
cmUgPSBTdHJ1Y3R1cmU6OnNldEJyYW5kVHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUNv
bmN1cnJlbnRseShvbGRTdHJ1Y3R1cmUsIGJyYW5kSUQudWlkKCkpOworICAgICAgICBpZiAoIW5l
d1N0cnVjdHVyZSkKKyAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7CisgICAgICAg
IGlmIChuZXdTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQorICAgICAgICAgICAgcmV0dXJuIEdp
dmVVcE9uQ2FjaGU7CisgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSA9
PSBvbGRTdHJ1Y3R1cmUpOworICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlLT50cmFuc2l0aW9u
S2luZCgpID09IFRyYW5zaXRpb25LaW5kOjpTZXRCcmFuZCk7CisgICAgICAgIEFTU0VSVChuZXdT
dHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOworICAgICAgICAKKyAgICAgICAgYm9vbCBpc0Jhc2VQcm9w
ZXJ0eSA9IHRydWU7CisgICAgICAgIExPR19JQygoSUNFdmVudDo6U2V0UHJpdmF0ZUJyYW5kQWRk
QWNjZXNzQ2FzZSwgb2xkU3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIGlzQmFzZVByb3Bl
cnR5KSk7CisKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2UgPSBB
Y2Nlc3NDYXNlOjpjcmVhdGVTZXRQcml2YXRlQnJhbmQodm0sIGNvZGVCbG9jaywgYnJhbmRJRCwg
b2xkU3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUpOworCisgICAgICAgIHJlc3VsdCA9IHN0dWJJbmZv
LmFkZEFjY2Vzc0Nhc2UobG9ja2VyLCBnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgRUNNQU1vZGU6
OnN0cmljdCgpLCBicmFuZElELCBXVEZNb3ZlKG5ld0Nhc2UpKTsKKworICAgICAgICBpZiAocmVz
dWx0LmdlbmVyYXRlZFNvbWVDb2RlKCkpIHsKKyAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6
U2V0UHJpdmF0ZUJyYW5kUmVwbGFjZVdpdGhKdW1wLCBvbGRTdHJ1Y3R1cmUtPmNsYXNzSW5mbygp
LCBpZGVudCwgaXNCYXNlUHJvcGVydHkpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJl
d2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmaXJlV2F0
Y2hwb2ludHNBbmRDbGVhclN0dWJJZk5lZWRlZCh2bSwgc3R1YkluZm8sIGNvZGVCbG9jaywgcmVz
dWx0KTsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0LnNob3VsZEdpdmVVcE5vdygpID8gR2l2ZVVw
T25DYWNoZSA6IFJldHJ5Q2FjaGVMYXRlcjsKK30KKwordm9pZCByZXBhdGNoU2V0UHJpdmF0ZUJy
YW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBK
U09iamVjdCogYmFzZU9iamVjdCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIENhY2hlYWJsZUlk
ZW50aWZpZXIgYnJhbmRJRCwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQoreworICAgIFN1
cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKworICAgIGlmICh0cnlD
YWNoZVNldFByaXZhdGVCcmFuZChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwg
b2xkU3RydWN0dXJlLCAgYnJhbmRJRCwgc3R1YkluZm8pID09IEdpdmVVcE9uQ2FjaGUpCisgICAg
ICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRo
Q2FsbExvY2F0aW9uLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRHZW5lcmljKTsKK30KKwogc3Rh
dGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5zdGFuY2VPZigKICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZSB2YWx1ZVZh
bHVlLCBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8s
CiAgICAgYm9vbCB3YXNGb3VuZCkKQEAgLTE1ODUsNiArMTY5MSwxOCBAQCB2b2lkIHJlc2V0SW5z
dGFuY2VPZihTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiAgICAgcmVzZXRQYXRjaGFibGVK
dW1wKHN0dWJJbmZvKTsKIH0KIAordm9pZCByZXNldENoZWNrUHJpdmF0ZUJyYW5kKENvZGVCbG9j
ayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCit7CisgICAgZnRsVGh1
bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRp
b24sIG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUpOworICAgIElubGluZUFjY2Vz
czo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0
aW9uKTsKK30KKwordm9pZCByZXNldFNldFByaXZhdGVCcmFuZChDb2RlQmxvY2sqIGNvZGVCbG9j
aywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQoreworICAgIGZ0bFRodW5rQXdhcmVSZXBh
dGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRp
b25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSk7CisgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHVi
QXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworfQorCiBN
YWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4ganNUb1dhc21JQ0NvZGVQdHIoVk0m
IHZtLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpTT2JqZWN0KiBjYWxsZWUpCiB7CiAj
aWYgRU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAppbmRl
eCA1ZGQyMGM2MzZhMDUxNjg3ZDkxNmU4MGFiNzgzYjBlOWU2NmQzMWRhLi5lZTZkNmYzZmM4NmZk
MTBjZjg5NDk3ODM3YTRhOGI2YTU0YjczMzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlcGF0Y2guaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0
Y2guaApAQCAtNTMsNiArNTMsOCBAQCB2b2lkIHJlcGF0Y2hHZXRCeShKU0dsb2JhbE9iamVjdCos
IENvZGVCbG9jayosIEpTVmFsdWUsIENhY2hlYWJsZUlkZW50aWZpZXIsIGNvbgogdm9pZCByZXBh
dGNoUHV0QnlJRChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUsIFN0cnVjdHVy
ZSosIENhY2hlYWJsZUlkZW50aWZpZXIsIGNvbnN0IFB1dFByb3BlcnR5U2xvdCYsIFN0cnVjdHVy
ZVN0dWJJbmZvJiwgUHV0S2luZCk7CiB2b2lkIHJlcGF0Y2hEZWxldGVCeShKU0dsb2JhbE9iamVj
dCosIENvZGVCbG9jayosIERlbGV0ZVByb3BlcnR5U2xvdCYsIEpTVmFsdWUsIFN0cnVjdHVyZSos
IENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZvJiwgRGVsQnlLaW5kLCBFQ01B
TW9kZSk7CiB2b2lkIHJlcGF0Y2hJbkJ5SUQoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBK
U09iamVjdCosIENhY2hlYWJsZUlkZW50aWZpZXIsIGJvb2wgd2FzRm91bmQsIGNvbnN0IFByb3Bl
cnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJbmZvJik7Cit2b2lkIHJlcGF0Y2hDaGVja1ByaXZhdGVC
cmFuZChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTT2JqZWN0KiwgQ2FjaGVhYmxlSWRl
bnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mKTsKK3ZvaWQgcmVwYXRjaFNldFByaXZhdGVCcmFu
ZChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTT2JqZWN0KiwgU3RydWN0dXJlKiwgQ2Fj
aGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVwYXRjaEluc3Rh
bmNlT2YoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVl
IHByb3RvdHlwZSwgU3RydWN0dXJlU3R1YkluZm8mLCBib29sIHdhc0ZvdW5kKTsKIHZvaWQgbGlu
a0ZvcihWTSYsIENhbGxGcmFtZSosIENhbGxMaW5rSW5mbyYsIENvZGVCbG9jayosIEpTT2JqZWN0
KiBjYWxsZWUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPik7CiB2b2lkIGxp
bmtEaXJlY3RGb3IoQ2FsbEZyYW1lKiwgQ2FsbExpbmtJbmZvJiwgQ29kZUJsb2NrKiwgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KTsKQEAgLTY0LDYgKzY2LDggQEAgdm9pZCBy
ZXNldFB1dEJ5SUQoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVzZXRE
ZWxCeShDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIERlbEJ5S2luZCk7CiB2b2lkIHJl
c2V0SW5CeUlEKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlc2V0SW5z
dGFuY2VPZihTdHJ1Y3R1cmVTdHViSW5mbyYpOwordm9pZCByZXNldENoZWNrUHJpdmF0ZUJyYW5k
KENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7Cit2b2lkIHJlc2V0U2V0UHJpdmF0ZUJy
YW5kKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIGZ0bFRodW5rQXdhcmVS
ZXBhdGNoQ2FsbChDb2RlQmxvY2sqLCBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQdHJUYWc+
LCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IG5ld0NhbGxlZUZ1bmN0aW9uKTsKIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBqc1RvV2FzbUlDQ29kZVB0cihWTSYsIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQsIEpTT2JqZWN0KiBjYWxsZWUpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCBkMTVhYmE4MWYwYmRj
ODdlODdjZWUyZDI4M2VjNzNjZjY1MDc2MTUxLi40YTI5OTEwZjJjNGJhYmYyYTczMjQyNjg1YWVi
NjkyNDE3YWJkN2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAKQEAgLTEzMDEsNiArMTMwMSw3NyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfcHV0X3ByaXZhdGVfbmFtZSkKICAgICBMTElOVF9FTkQoKTsgICAgCiB9CiAKK0xM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zZXRfcHJpdmF0ZV9icmFuZCkKK3sKKyAgICBM
TElOVF9CRUdJTigpOworCisgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcFNldFByaXZhdGVC
cmFuZD4oKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBi
eXRlY29kZS5tX2Jhc2UpOworICAgIEpTVmFsdWUgYnJhbmQgPSBnZXRPcGVyYW5kKGNhbGxGcmFt
ZSwgYnl0ZWNvZGUubV9icmFuZCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRh
ZGF0YShjb2RlQmxvY2spOworICAgIEFTU0VSVChiYXNlVmFsdWUuaXNPYmplY3QoKSk7CisgICAg
QVNTRVJUKGJyYW5kLmlzU3ltYm9sKCkpOworCisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBh
c09iamVjdChiYXNlVmFsdWUpOworICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gYmFzZU9i
amVjdC0+c3RydWN0dXJlKHZtKTsKKworICAgIGJhc2VPYmplY3QtPnNldFByaXZhdGVCcmFuZChn
bG9iYWxPYmplY3QsIGJyYW5kKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKworICAg
IGlmICghTExJTlRfQUxXQVlTX0FDQ0VTU19TTE9XICYmICFvbGRTdHJ1Y3R1cmUtPmlzRGljdGlv
bmFyeSgpKSB7CisgICAgICAgIEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJs
b2NrLT5tX2xvY2ssIHZtLmhlYXApOworICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9
IGJhc2VPYmplY3QtPnN0cnVjdHVyZSh2bSk7CisKKyAgICAgICAgQVNTRVJUKG9sZFN0cnVjdHVy
ZSA9PSBuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7CisgICAgICAgIEFTU0VSVChvbGRTdHJ1
Y3R1cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpOworCisg
ICAgICAgIC8vIFN0YXJ0IG91dCBieSBjbGVhcmluZyBvdXQgdGhlIG9sZCBjYWNoZS4KKyAgICAg
ICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgIG1ldGFkYXRhLm1fbmV3
U3RydWN0dXJlSUQgPSAwOworICAgICAgICBtZXRhZGF0YS5tX2JyYW5kLmNsZWFyKCk7CisKKyAg
ICAgICAgaWYgKCFuZXdTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7CisgICAgICAgICAgICBt
ZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEID0gb2xkU3RydWN0dXJlLT5pZCgpOworICAgICAgICAg
ICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRCA9IG5ld1N0cnVjdHVyZS0+aWQoKTsKKyAgICAg
ICAgICAgIG1ldGFkYXRhLm1fYnJhbmQuc2V0KHZtLCBjb2RlQmxvY2ssIGJyYW5kLmFzQ2VsbCgp
KTsKKyAgICAgICAgfQorICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2spOwor
ICAgIH0KKworICAgIExMSU5UX0VORCgpOyAgICAKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX2NoZWNrX3ByaXZhdGVfYnJhbmQpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKwor
ICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BDaGVja1ByaXZhdGVCcmFuZD4oKTsKKyAgICBh
dXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAgSlNWYWx1
ZSBiYXNlVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKTsKKyAg
ICBKU1ZhbHVlIGJyYW5kID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYnJhbmQp
OworCisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBiYXNlVmFsdWUudG9PYmplY3QoZ2xvYmFs
T2JqZWN0KTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKworICAgIEFTU0VSVChicmFu
ZC5pc1N5bWJvbCgpKTsKKworICAgIGJhc2VPYmplY3QtPmNoZWNrUHJpdmF0ZUJyYW5kKGdsb2Jh
bE9iamVjdCwgYnJhbmQpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworCisgICAgLy8g
U2luY2UgYSBicmFuZCBjYW4ndCBldmVyIGJlIHJlbW92ZWQgZnJvbSBhbiBvYmplY3QsIGl0J3Mg
c2FmZSB0bworICAgIC8vIHJlbHkgb24gU3RydWN0dXJlSUQgZXZlbiBpZiBpdCdzIGFuIHVuY2Fj
aGVhYmxlIGRpY3Rpb25hcnkuCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlT2JqZWN0
LT5zdHJ1Y3R1cmUodm0pOworICAgIGlmICghTExJTlRfQUxXQVlTX0FDQ0VTU19TTE9XKSB7Cisg
ICAgICAgIEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2ss
IHZtLmhlYXApOworCisgICAgICAgIG1ldGFkYXRhLm1fc3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUt
PmlkKCk7CisgICAgICAgIG1ldGFkYXRhLm1fYnJhbmQuc2V0KHZtLCBjb2RlQmxvY2ssIGJyYW5k
LmFzQ2VsbCgpKTsKKyAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKKyAg
ICB9CisKKyAgICBMTElOVF9FTkQoKTsgICAgCit9CisKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9kZWxfYnlfdmFsKQogewogICAgIExMSU5UX0JFR0lOKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCmluZGV4IDk4MWIzNmU1ZTgwNDUyODhj
MGViNTFlOGY4YmY0ZWZkOTUzMGM5OGYuLjQ3MTFhOGVhNTI1MjdlZjAzMWQ4NmQ1NjY2OWRmZDI1
ZjMwMzE0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5oCkBAIC03Nyw2ICs3Nyw4IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfZ2V0X2FyZ3VtZW50X2J5X3ZhbCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX3B1dF9ieV92YWwpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9wdXRfYnlfdmFsX2RpcmVjdCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX3B1dF9wcml2YXRlX25hbWUpOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9jaGVja19wcml2YXRlX2JyYW5kKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfc2V0X3ByaXZhdGVfYnJhbmQpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9kZWxfYnlfdmFsKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfcHV0X2dldHRlcl9ieV9pZCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX3B1dF9zZXR0ZXJfYnlfaWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCBlYTQzMWNlNzNl
ZDgyMTg2MmQzNmUyZjA1NmQyZTBmMmQzYThlOTQ1Li42NjU3MWJlYjVjNjBiMTE3OWI0YTdjMGJh
Zjk0OGJhMjI5MmRkZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtMjk5MSwzICsyOTkxLDQ4IEBA
IGVuZCkKIG9wKGZ1enplcl9yZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQsIG1hY3JvICgpCiAg
ICAgbm90U3VwcG9ydGVkKCkKIGVuZCkKKworCitsbGludE9wV2l0aE1ldGFkYXRhKG9wX2NoZWNr
X3ByaXZhdGVfYnJhbmQsIE9wQ2hlY2tQcml2YXRlQnJhbmQsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorICAgIG1ldGFkYXRhKHQ1LCB0MikKKyAgICBnZXQo
bV9iYXNlLCB0MykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0Mywg
Q2VsbFRhZywgdDAsIC5vcENoZWNrUHJpdmF0ZUJyYW5kU2xvdykKKyAgICBnZXQobV9icmFuZCwg
dDMpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDMsIENlbGxUYWcs
IHQxLCAub3BDaGVja1ByaXZhdGVCcmFuZFNsb3cpCisKKyAgICBsb2FkaSBPcENoZWNrUHJpdmF0
ZUJyYW5kOjpNZXRhZGF0YTo6bV9zdHJ1Y3R1cmVJRFt0NV0sIHQzCisgICAgYmluZXEgSlNDZWxs
OjptX3N0cnVjdHVyZUlEW3QwXSwgdDMsIC5vcENoZWNrUHJpdmF0ZUJyYW5kU2xvdworCisgICAg
bG9hZHAgT3BDaGVja1ByaXZhdGVCcmFuZDo6TWV0YWRhdGE6Om1fYnJhbmRbdDVdLCB0MworICAg
IGJwbmVxIHQzLCB0MSwgLm9wQ2hlY2tQcml2YXRlQnJhbmRTbG93CisgICAgZGlzcGF0Y2goKQor
Cisub3BDaGVja1ByaXZhdGVCcmFuZFNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93
X3BhdGhfY2hlY2tfcHJpdmF0ZV9icmFuZCkKKyAgICBkaXNwYXRjaCgpCitlbmQpCisKKworbGxp
bnRPcFdpdGhNZXRhZGF0YShvcF9zZXRfcHJpdmF0ZV9icmFuZCwgT3BTZXRQcml2YXRlQnJhbmQs
IG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorICAgIG1ldGFk
YXRhKHQ1LCB0MikKKyAgICBnZXQobV9iYXNlLCB0MykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZChzaXplLCB0MywgQ2VsbFRhZywgdDAsIC5vcFNldFByaXZhdGVCcmFuZFNsb3cp
CisgICAgZ2V0KG1fYnJhbmQsIHQzKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
KHNpemUsIHQzLCBDZWxsVGFnLCB0MSwgLm9wU2V0UHJpdmF0ZUJyYW5kU2xvdykKKworICAgIGxv
YWRpIE9wU2V0UHJpdmF0ZUJyYW5kOjpNZXRhZGF0YTo6bV9vbGRTdHJ1Y3R1cmVJRFt0NV0sIHQy
CisgICAgYmluZXEgdDIsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIC5vcFNldFByaXZhdGVC
cmFuZFNsb3cKKworICAgIGxvYWRwIE9wU2V0UHJpdmF0ZUJyYW5kOjpNZXRhZGF0YTo6bV9icmFu
ZFt0NV0sIHQzCisgICAgYnBuZXEgdDMsIHQxLCAub3BTZXRQcml2YXRlQnJhbmRTbG93CisKKyAg
ICBsb2FkaSBPcFNldFByaXZhdGVCcmFuZDo6TWV0YWRhdGE6Om1fbmV3U3RydWN0dXJlSURbdDVd
LCB0MQorICAgIHN0b3JlaSB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXQorICAgIHdyaXRl
QmFycmllck9uT3BlcmFuZChzaXplLCBnZXQsIG1fYmFzZSkKKyAgICBkaXNwYXRjaCgpCisKKy5v
cFNldFByaXZhdGVCcmFuZFNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhf
c2V0X3ByaXZhdGVfYnJhbmQpCisgICAgZGlzcGF0Y2goKQorZW5kKQorCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4
IGUxMmRjMzgzYmNlNzYzZmI4YjYxNzNiMzIxMmE2YTM1NmU2MTNlM2QuLjI3ZTc2ZDJmMjA2NWNl
NzhjNDNiYTQzNDM2NWM5MzU5ZDkxOWNiMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0xODE1LDYgKzE4MTUs
NDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wdXRfcHJpdmF0ZV9uYW1lLCBPcFB1dFByaXZh
dGVOYW1lLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXMKICAgICBkaXNwYXRjaCgpCiBlbmQpCiAKK2xs
aW50T3BXaXRoTWV0YWRhdGEob3Bfc2V0X3ByaXZhdGVfYnJhbmQsIE9wU2V0UHJpdmF0ZUJyYW5k
LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKKyAgICBnZXQo
bV9iYXNlLCB0MykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChzaXplLCB0MywgdDAs
IC5vcFNldFByaXZhdGVCcmFuZFNsb3cpCisgICAgZ2V0KG1fYnJhbmQsIHQzKQorICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQzLCB0MSwgLm9wU2V0UHJpdmF0ZUJyYW5kU2xv
dykKKyAgICBtZXRhZGF0YSh0NSwgdDIpCisgICAgbG9hZGkgT3BTZXRQcml2YXRlQnJhbmQ6Ok1l
dGFkYXRhOjptX29sZFN0cnVjdHVyZUlEW3Q1XSwgdDIKKyAgICBiaW5lcSB0MiwgSlNDZWxsOjpt
X3N0cnVjdHVyZUlEW3QwXSwgLm9wU2V0UHJpdmF0ZUJyYW5kU2xvdworCisgICAgbG9hZHAgT3BT
ZXRQcml2YXRlQnJhbmQ6Ok1ldGFkYXRhOjptX2JyYW5kW3Q1XSwgdDMKKyAgICBicG5lcSB0Mywg
dDEsIC5vcFNldFByaXZhdGVCcmFuZFNsb3cKKworICAgIGxvYWRpIE9wU2V0UHJpdmF0ZUJyYW5k
OjpNZXRhZGF0YTo6bV9uZXdTdHJ1Y3R1cmVJRFt0NV0sIHQxCisgICAgc3RvcmVpIHQxLCBKU0Nl
bGw6Om1fc3RydWN0dXJlSURbdDBdCisgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kKHNpemUsIGdl
dCwgbV9iYXNlKQorICAgIGRpc3BhdGNoKCkKKworLm9wU2V0UHJpdmF0ZUJyYW5kU2xvdzoKKyAg
ICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9zZXRfcHJpdmF0ZV9icmFuZCkKKyAgICBk
aXNwYXRjaCgpCitlbmQpCisKK2xsaW50T3BXaXRoTWV0YWRhdGEob3BfY2hlY2tfcHJpdmF0ZV9i
cmFuZCwgT3BDaGVja1ByaXZhdGVCcmFuZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1l
dGFkYXRhLCByZXR1cm4pCisgICAgbWV0YWRhdGEodDUsIHQyKQorICAgIGdldChtX2Jhc2UsIHQz
KQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQzLCB0MCwgLm9wQ2hlY2tQ
cml2YXRlQnJhbmRTbG93KQorICAgIGdldChtX2JyYW5kLCB0MykKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlQ2VsbChzaXplLCB0MywgdDEsIC5vcENoZWNrUHJpdmF0ZUJyYW5kU2xvdykKKwor
ICAgIGxvYWRwIE9wQ2hlY2tQcml2YXRlQnJhbmQ6Ok1ldGFkYXRhOjptX2JyYW5kW3Q1XSwgdDMK
KyAgICBicW5lcSB0MywgdDEsIC5vcENoZWNrUHJpdmF0ZUJyYW5kU2xvdworCisgICAgbG9hZGkg
T3BDaGVja1ByaXZhdGVCcmFuZDo6TWV0YWRhdGE6Om1fc3RydWN0dXJlSURbdDVdLCB0MgorICAg
IGJpbmVxIHQyLCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCAub3BDaGVja1ByaXZhdGVCcmFu
ZFNsb3cKKyAgICBkaXNwYXRjaCgpCisKKy5vcENoZWNrUHJpdmF0ZUJyYW5kU2xvdzoKKyAgICBj
YWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9jaGVja19wcml2YXRlX2JyYW5kKQorICAgIGRp
c3BhdGNoKCkKK2VuZCkKKwogbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1
Y3QsIG9zckV4aXRQb2ludCkKICAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1l
JSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJl
dHVybikKICAgICAgICAgbWFjcm8gY29udGlndW91c1B1dEJ5VmFsKHN0b3JlQ2FsbGJhY2spCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IDY0YTY2Zjc2NWM4ZjRkMjg0
OTZkYTljZTZjNDRhYmIwOGFhODgxYjkuLjAyYjc4NzVjY2FmNmFmZjY2M2FjMWVlZjVhZGRiOGRi
ZDM0MDkzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC0yMDIs
NiArMjAyLDcgQEAgRnVuY3Rpb25NZXRhZGF0YU5vZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKAog
ICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1
Y3RvcktpbmQpKQogICAgICAgICAsIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObykpCiAgICAgICAg
ICwgbV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbihpc0Fycm93RnVuY3Rpb25Cb2R5RXhw
cmVzc2lvbikKKyAgICAgICAgLCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50KHN0YXRpY19jYXN0
PHVuc2lnbmVkPihQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZSkpCiAgICAgICAgICwgbV9w
YXJzZU1vZGUobW9kZSkKICAgICAgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQogICAg
ICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikKQEAgLTIyNiw2ICsyMjcsNyBAQCBGdW5jdGlv
bk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUoCiAgICAgICAgICwgbV9jb25zdHJ1
Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCiAgICAgICAg
ICwgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vKSkKICAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlv
bkJvZHlFeHByZXNzaW9uKGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQorICAgICAgICAs
IG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByaXZhdGVC
cmFuZFJlcXVpcmVtZW50OjpOb25lKSkKICAgICAgICAgLCBtX3BhcnNlTW9kZShtb2RlKQogICAg
ICAgICAsIG1fc3RhcnRDb2x1bW4oc3RhcnRDb2x1bW4pCiAgICAgICAgICwgbV9lbmRDb2x1bW4o
ZW5kQ29sdW1uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IGVkOTA3NzUz
OTA1N2Y1MzYxNjIzZmM3OWQ3ZWJiY2I5OGMwMTdiZGYuLjRiZjkzODZmMjZmMDI5ODNiNzg4Njll
NGEyNTAyNWY2MGVjOGFiMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAg
LTcyMSw3ICs3MjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBlbnVtIGNsYXNzIENsYXNzRWxl
bWVudFRhZyA6IHVpbnQ4X3QgeyBObywgSW5zdGFuY2UsIFN0YXRpYywgTGFzdFRhZyB9OwogICAg
IGNsYXNzIFByb3BlcnR5Tm9kZSBmaW5hbCA6IHB1YmxpYyBQYXJzZXJBcmVuYUZyZWVhYmxlIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIGVudW0gVHlwZSA6IHVpbnQ4X3QgeyBDb25zdGFudCA9IDEs
IEdldHRlciA9IDIsIFNldHRlciA9IDQsIENvbXB1dGVkID0gOCwgU2hvcnRoYW5kID0gMTYsIFNw
cmVhZCA9IDMyLCBQcml2YXRlID0gNjQgfTsKKyAgICAgICAgZW51bSBUeXBlIDogdWludDhfdCB7
IENvbnN0YW50ID0gMSwgR2V0dGVyID0gMiwgU2V0dGVyID0gNCwgQ29tcHV0ZWQgPSA4LCBTaG9y
dGhhbmQgPSAxNiwgU3ByZWFkID0gMzIsIFByaXZhdGVGaWVsZCA9IDY0LCBQcml2YXRlTWV0aG9k
ID0gMTI4IH07CiAKICAgICAgICAgUHJvcGVydHlOb2RlKGNvbnN0IElkZW50aWZpZXImLCBFeHBy
ZXNzaW9uTm9kZSosIFR5cGUsIFN1cGVyQmluZGluZywgQ2xhc3NFbGVtZW50VGFnKTsKICAgICAg
ICAgUHJvcGVydHlOb2RlKEV4cHJlc3Npb25Ob2RlKiwgVHlwZSwgU3VwZXJCaW5kaW5nLCBDbGFz
c0VsZW1lbnRUYWcpOwpAQCAtNzQwLDcgKzc0MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBib29sIGlzSW5zdGFuY2VDbGFzc0ZpZWxkKCkgY29uc3QgeyByZXR1cm4gaXNJbnN0YW5jZUNs
YXNzUHJvcGVydHkoKSAmJiAhbmVlZHNTdXBlckJpbmRpbmcoKTsgfQogICAgICAgICBib29sIGlz
U3RhdGljQ2xhc3NGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGlzU3RhdGljQ2xhc3NQcm9wZXJ0eSgp
ICYmICFuZWVkc1N1cGVyQmluZGluZygpOyB9CiAgICAgICAgIGJvb2wgaXNPdmVycmlkZGVuQnlE
dXBsaWNhdGUoKSBjb25zdCB7IHJldHVybiBtX2lzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlOyB9Ci0g
ICAgICAgIGJvb2wgaXNQcml2YXRlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlICYgUHJpdmF0ZTsg
fQorICAgICAgICBib29sIGlzUHJpdmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSAmIChQcml2
YXRlRmllbGQgfCBQcml2YXRlTWV0aG9kKTsgfQogICAgICAgICBib29sIGhhc0NvbXB1dGVkTmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXhwcmVzc2lvbjsgfQogICAgICAgICBib29sIGlzQ29tcHV0
ZWRDbGFzc0ZpZWxkKCkgY29uc3QgeyByZXR1cm4gaXNDbGFzc0ZpZWxkKCkgJiYgaGFzQ29tcHV0
ZWROYW1lKCk7IH0KICAgICAgICAgdm9pZCBzZXRJc092ZXJyaWRkZW5CeUR1cGxpY2F0ZSgpIHsg
bV9pc092ZXJyaWRkZW5CeUR1cGxpY2F0ZSA9IHRydWU7IH0KQEAgLTc2MCw3ICs3NjAsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogbV9uYW1lOwogICAgICAg
ICBFeHByZXNzaW9uTm9kZSogbV9leHByZXNzaW9uOwogICAgICAgICBFeHByZXNzaW9uTm9kZSog
bV9hc3NpZ247Ci0gICAgICAgIHVuc2lnbmVkIG1fdHlwZSA6IDc7CisgICAgICAgIHVuc2lnbmVk
IG1fdHlwZTsKICAgICAgICAgdW5zaWduZWQgbV9uZWVkc1N1cGVyQmluZGluZyA6IDE7CiAgICAg
ICAgIHN0YXRpY19hc3NlcnQoMSA8PCAyID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENsYXNzRWxl
bWVudFRhZzo6TGFzdFRhZyksICJDbGFzc0VsZW1lbnRUYWcgc2hvdWxkbid0IHVzZSBtb3JlIHRo
YW4gdHdvIGJpdHMiKTsKICAgICAgICAgdW5zaWduZWQgbV9jbGFzc0VsZW1lbnRUYWcgOiAyOwpA
QCAtODM4LDcgKzgzOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1fc3Vic2Ny
aXB0SGFzQXNzaWdubWVudHM7CiAgICAgfTsKIAotICAgIGVudW0gY2xhc3MgRG90VHlwZSB7IE5h
bWUsIFByaXZhdGVGaWVsZCB9OworICAgIGVudW0gY2xhc3MgRG90VHlwZSB7IE5hbWUsIFByaXZh
dGVNZW1iZXIgfTsKICAgICBjbGFzcyBCYXNlRG90Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9k
ZSB7CiAgICAgcHVibGljOgogICAgICAgICBCYXNlRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERvdFR5cGUpOwpA
QCAtODQ2LDcgKzg0Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBFeHByZXNzaW9uTm9k
ZSogYmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZTsgfQogICAgICAgICBjb25zdCBJZGVudGlm
aWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudDsgfQogICAgICAgICBEb3RU
eXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KLSAgICAgICAgYm9vbCBpc1ByaXZh
dGVGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBEb3RUeXBlOjpQcml2YXRlRmllbGQ7
IH0KKyAgICAgICAgYm9vbCBpc1ByaXZhdGVNZW1iZXIoKSBjb25zdCB7IHJldHVybiBtX3R5cGUg
PT0gRG90VHlwZTo6UHJpdmF0ZU1lbWJlcjsgfQogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRH
ZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBiYXNlLCBSZWZQdHI8UmVnaXN0ZXJJRD4mIHRoaXNWYWx1ZSk7CiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlKTsKQEAgLTg3MCw3ICs4NzAsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBmaW5hbDsKIAogICAgICAgICBib29sIGlzTG9j
YXRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIGJvb2wgaXNQcml2
YXRlTG9jYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3R5cGUgPT0gRG90VHlwZTo6
UHJpdmF0ZUZpZWxkOyB9CisgICAgICAgIGJvb2wgaXNQcml2YXRlTG9jYXRpb24oKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX3R5cGUgPT0gRG90VHlwZTo6UHJpdmF0ZU1lbWJlcjsgfQogICAg
ICAgICBib29sIGlzRG90QWNjZXNzb3JOb2RlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsg
fQogICAgIH07CiAKQEAgLTIxNjEsNiArMjE2MSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB2b2lkIHNldEVjbWFOYW1lKGNvbnN0IElkZW50aWZpZXImIGVjbWFOYW1lKSB7IG1fZWNtYU5h
bWUgPSBlY21hTmFtZTsgfQogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBlY21hTmFtZSgpIHsg
cmV0dXJuIG1faWRlbnQuaXNFbXB0eSgpID8gbV9lY21hTmFtZSA6IG1faWRlbnQ7IH0KIAorICAg
ICAgICB2b2lkIHNldFByaXZhdGVCcmFuZFJlcXVpcmVtZW50KFByaXZhdGVCcmFuZFJlcXVpcmVt
ZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KSB7IG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpOyB9CisgICAg
ICAgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ+KG1fcHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQpOyB9CisKICAgICAgICAgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSgpIHsg
cmV0dXJuIG1fZnVuY3Rpb25Nb2RlOyB9CiAKICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0
KCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbk5hbWVTdGFydDsgfQpAQCAtMjIwOSw2ICsyMjEy
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5k
IDogMjsKICAgICAgICAgdW5zaWduZWQgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA6IDE7
CiAgICAgICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gOiAxOwor
ICAgICAgICB1bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsKICAgICAgICAg
U291cmNlUGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogICAgICAgICBGdW5jdGlvbk1vZGUgbV9mdW5j
dGlvbk1vZGU7CiAgICAgICAgIElkZW50aWZpZXIgbV9pZGVudDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCBhYmZmNDQwNDNmYmM0OWVjZTk2M2MzNGRiZWVmNjNi
MWYxZWY0NTY3Li40YzM3OWIzMDliOTNkZDUyYjZiZDYzMWZkODVhMmY4OGNmYTVjODU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yODcwLDYgKzI4NzAsNyBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVDbGFzc0V4cHJlc3Npb24gUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlQ2xhc3MoVAogICAgIGNsYXNzU2NvcGUtPnNldElzTGV4aWNhbFNj
b3BlKCk7CiAgICAgY2xhc3NTY29wZS0+cHJldmVudFZhckRlY2xhcmF0aW9ucygpOwogICAgIGNs
YXNzU2NvcGUtPnNldFN0cmljdE1vZGUoKTsKKyAgICBib29sIGRlY2xhcmVzUHJpdmF0ZU1ldGhv
ZCA9IGZhbHNlOwogICAgIG5leHQoKTsKIAogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocmVxdWly
ZW1lbnRzICE9IEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50czo6VW5uYW1lZCwgIkN1cnJlbnRseSwg
dGhlcmUgaXMgbm8gY2FsbGVyIHRoYXQgdXNlcyBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHM6OlVu
bmFtZWQgZm9yIGNsYXNzIHN5bnRheC4iKTsKQEAgLTI5ODksMTYgKzI5OTAsMjIgQEAgcGFyc2VN
ZXRob2Q6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQUklWQVRFTkFNRTogewog
ICAgICAgICAgICAgQVNTRVJUKE9wdGlvbnM6OnVzZVByaXZhdGVDbGFzc0ZpZWxkcygpKTsKLSAg
ICAgICAgICAgIEpTVG9rZW4gdG9rZW4gPSBtX3Rva2VuOwogICAgICAgICAgICAgaWRlbnQgPSBt
X3Rva2VuLm1fZGF0YS5pZGVudDsKICAgICAgICAgICAgIGlmICghT3B0aW9uczo6dXNlUHJpdmF0
ZVN0YXRpY0NsYXNzRmllbGRzKCkpCiAgICAgICAgICAgICAgICAgZmFpbElmVHJ1ZSh0YWcgPT0g
Q2xhc3NFbGVtZW50VGFnOjpTdGF0aWMsICJTdGF0aWMgY2xhc3MgZWxlbWVudCBjYW5ub3QgYmUg
cHJpdmF0ZSIpOwogICAgICAgICAgICAgZmFpbElmVHJ1ZShpc0dldHRlciB8fCBpc1NldHRlciwg
IkNhbm5vdCBwYXJzZSBjbGFzcyBtZXRob2Qgd2l0aCBwcml2YXRlIG5hbWUiKTsKICAgICAgICAg
ICAgIEFTU0VSVChpZGVudCk7CiAgICAgICAgICAgICBuZXh0KCk7Ci0gICAgICAgICAgICBmYWls
SWZUcnVlKG1hdGNoQW5kVXBkYXRlKE9QRU5QQVJFTiwgdG9rZW4pLCAiQ2Fubm90IHBhcnNlIGNs
YXNzIG1ldGhvZCB3aXRoIHByaXZhdGUgbmFtZSIpOwotICAgICAgICAgICAgc2VtYW50aWNGYWls
SWZUcnVlKGNsYXNzU2NvcGUtPmRlY2xhcmVQcml2YXRlTmFtZSgqaWRlbnQpICYgRGVjbGFyYXRp
b25SZXN1bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbiwgIkNhbm5vdCBkZWNsYXJlIHBy
aXZhdGUgZmllbGQgdHdpY2UiKTsKLSAgICAgICAgICAgIHR5cGUgPSBzdGF0aWNfY2FzdDxQcm9w
ZXJ0eU5vZGU6OlR5cGU+KHR5cGUgfCBQcm9wZXJ0eU5vZGU6OlByaXZhdGUpOworICAgICAgICAg
ICAgaWYgKE9wdGlvbnM6OnVzZVByaXZhdGVNZXRob2RzKCkgJiYgbWF0Y2goT1BFTlBBUkVOKSkg
eworICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShjbGFzc1Njb3BlLT5kZWNsYXJl
UHJpdmF0ZU1ldGhvZCgqaWRlbnQpICYgRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBsaWNh
dGVEZWNsYXJhdGlvbiwgIkNhbm5vdCBkZWNsYXJlIHByaXZhdGUgbWV0aG9kIHR3aWNlIik7Cisg
ICAgICAgICAgICAgICAgZGVjbGFyZXNQcml2YXRlTWV0aG9kID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICB0eXBlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlIHwgUHJvcGVy
dHlOb2RlOjpQcml2YXRlTWV0aG9kKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaChPUEVOUEFSRU4pLCAiQ2Fubm90
IHBhcnNlIGNsYXNzIG1ldGhvZCB3aXRoIHByaXZhdGUgbmFtZSIpOworICAgICAgICAgICAgc2Vt
YW50aWNGYWlsSWZUcnVlKGNsYXNzU2NvcGUtPmRlY2xhcmVQcml2YXRlRmllbGQoKmlkZW50KSAm
IERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb24sICJDYW5ub3Qg
ZGVjbGFyZSBwcml2YXRlIGZpZWxkIHR3aWNlIik7CisgICAgICAgICAgICB0eXBlID0gc3RhdGlj
X2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlIHwgUHJvcGVydHlOb2RlOjpQcml2YXRlRmll
bGQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAg
LTMwODQsMTAgKzMwOTEsMTkgQEAgcGFyc2VNZXRob2Q6CiAgICAgaW5mby5lbmRPZmZzZXQgPSB0
b2tlbkxvY2F0aW9uKCkuZW5kT2Zmc2V0IC0gMTsKICAgICBjb25zdW1lT3JGYWlsKENMT1NFQlJB
Q0UsICJFeHBlY3RlZCBhIGNsb3NpbmcgJ30nIGFmdGVyIGEgY2xhc3MgYm9keSIpOwogCisgICAg
aWYgKGRlY2xhcmVzUHJpdmF0ZU1ldGhvZCkgeworICAgICAgICBJZGVudGlmaWVyIHByaXZhdGVC
cmFuZElkZW50aWZpZXIgPSBtX3ZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnByaXZh
dGVCcmFuZFByaXZhdGVOYW1lKCk7CisgICAgICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNs
YXJhdGlvblJlc3VsdCA9IGNsYXNzU2NvcGUtPmRlY2xhcmVMZXhpY2FsVmFyaWFibGUoJnByaXZh
dGVCcmFuZElkZW50aWZpZXIsIHRydWUpOworICAgICAgICBBU1NFUlRfVU5VU0VEKGRlY2xhcmF0
aW9uUmVzdWx0LCBkZWNsYXJhdGlvblJlc3VsdCA9PSBEZWNsYXJhdGlvblJlc3VsdDo6VmFsaWQp
OworICAgICAgICBjbGFzc1Njb3BlLT51c2VWYXJpYWJsZSgmcHJpdmF0ZUJyYW5kSWRlbnRpZmll
ciwgZmFsc2UpOworICAgICAgICBjbGFzc1Njb3BlLT5hZGRDbG9zZWRWYXJpYWJsZUNhbmRpZGF0
ZVVuY29uZGl0aW9uYWxseShwcml2YXRlQnJhbmRJZGVudGlmaWVyLmltcGwoKSk7CisgICAgfQor
CiAgICAgaWYgKE9wdGlvbnM6OnVzZVByaXZhdGVDbGFzc0ZpZWxkcygpKSB7CiAgICAgICAgIC8v
IEZhaWwgaWYgdGhlcmUgYXJlIG5vIHBhcmVudCBwcml2YXRlIG5hbWUgc2NvcGVzIGFuZCBhbnkg
dXNlZC1idXQtdW5kZWNsYXJlZCBwcml2YXRlIG5hbWVzLgogICAgICAgICBzZW1hbnRpY0ZhaWxJ
ZkZhbHNlKGNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzVG9PdXRlclNjb3BlKCksICJDYW5ub3Qg
cmVmZXJlbmNlIHVuZGVjbGFyZWQgcHJpdmF0ZSBuYW1lcyIpOwogICAgIH0KKwogICAgIGF1dG8g
Y2xhc3NFeHByZXNzaW9uID0gY29udGV4dC5jcmVhdGVDbGFzc0V4cHIobG9jYXRpb24sIGluZm8s
IGNsYXNzU2NvcGUtPmZpbmFsaXplTGV4aWNhbEVudmlyb25tZW50KCksIGNvbnN0cnVjdG9yLCBw
YXJlbnRDbGFzcywgY2xhc3NFbGVtZW50cyk7CiAgICAgcG9wU2NvcGUoY2xhc3NTY29wZSwgVHJl
ZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbyk7CiAgICAgcmV0dXJuIGNsYXNzRXhwcmVz
c2lvbjsKQEAgLTUxNjUsNyArNTE4MSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzCiAgICAg
ICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmRmFsc2UodXNlUHJpdmF0ZU5hbWUoaWRlbnQp
LCAiQ2Fubm90IHJlZmVyZW5jZSBwcml2YXRlIG5hbWVzIG91dHNpZGUgb2YgY2xhc3MiKTsKICAg
ICAgICAgICAgICAgICAgICAgbV9wYXJzZXJTdGF0ZS5sYXN0UHJpdmF0ZU5hbWUgPSBpZGVudDsK
ICAgICAgICAgICAgICAgICAgICAgY3VycmVudFNjb3BlKCktPnVzZVZhcmlhYmxlKGlkZW50LCBm
YWxzZSk7Ci0gICAgICAgICAgICAgICAgICAgIHR5cGUgPSBEb3RUeXBlOjpQcml2YXRlRmllbGQ7
CisgICAgICAgICAgICAgICAgICAgIHR5cGUgPSBEb3RUeXBlOjpQcml2YXRlTWVtYmVyOwogICAg
ICAgICAgICAgICAgICAgICBtX3Rva2VuLm1fdHlwZSA9IElERU5UOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICBtYXRjaE9yRmFpbChJREVOVCwgIkV4cGVjdGVkIGEgcHJvcGVy
dHkgbmFtZSBhZnRlciAiLCBvcHRpb25hbENoYWluQmFzZSA/ICInPy4nIiA6ICInLiciKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDkwNTY1YmE0NDAyNzQxZTdmOTQ3
NGMyOTk2NjQ1Mzk0MDkyNTU0NzEuLjY4ZWZjYWRlYWEzZjYwOTUzZmU5NmNkMmViZmQwZDdiYTg1
NDQ5NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtNTAwLDExICs1
MDAsMjggQEAgcHVibGljOgogICAgICAgICBtX2xleGljYWxWYXJpYWJsZXMudXNlUHJpdmF0ZU5h
bWUoaWRlbnQpOwogICAgIH0KIAotICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJlUHJp
dmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgRGVjbGFyYXRpb25SZXN1bHRN
YXNrIGRlY2xhcmVQcml2YXRlTWV0aG9kKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKG1fYWxsb3dzTGV4aWNhbERlY2xhcmF0aW9ucyk7CiAgICAgICAgIERl
Y2xhcmF0aW9uUmVzdWx0TWFzayByZXN1bHQgPSBEZWNsYXJhdGlvblJlc3VsdDo6VmFsaWQ7Ci0g
ICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9sZXhpY2FsVmFyaWFibGVzLmRlY2xhcmVQcml2YXRl
TmFtZShpZGVudCk7CisgICAgICAgIGJvb2wgYWRkUmVzdWx0ID0gbV9sZXhpY2FsVmFyaWFibGVz
LmRlY2xhcmVQcml2YXRlTWV0aG9kKGlkZW50KTsKKworICAgICAgICBpZiAoIWFkZFJlc3VsdCkg
eworICAgICAgICAgICAgcmVzdWx0IHw9IERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGlj
YXRlRGVjbGFyYXRpb247CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisK
KyAgICAgICAgdXNlVmFyaWFibGUoJmlkZW50LCBmYWxzZSk7CisgICAgICAgIGFkZENsb3NlZFZh
cmlhYmxlQ2FuZGlkYXRlVW5jb25kaXRpb25hbGx5KGlkZW50LmltcGwoKSk7CisKKyAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFy
ZVByaXZhdGVGaWVsZChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICB7CisgICAgICAgIEFT
U0VSVChtX2FsbG93c0xleGljYWxEZWNsYXJhdGlvbnMpOworICAgICAgICBEZWNsYXJhdGlvblJl
c3VsdE1hc2sgcmVzdWx0ID0gRGVjbGFyYXRpb25SZXN1bHQ6OlZhbGlkOworICAgICAgICBhdXRv
IGFkZFJlc3VsdCA9IG1fbGV4aWNhbFZhcmlhYmxlcy5kZWNsYXJlUHJpdmF0ZUZpZWxkKGlkZW50
KTsKICAgICAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgIHJlc3Vs
dCB8PSBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uOwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwpAQCAtOTQ0LDcgKzk2MSw3IEBAIHB1YmxpYzoKICAgICB+UGFy
c2VyKCk7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4KLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFyc2VyRXJyb3ImLCBjb25zdCBJZGVudGlmaWVyJiwg
UGFyc2luZ0NvbnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRl
cnNFbmRQb3NpdGlvbiA9IFdURjo6bnVsbG9wdCwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCog
PSBudWxscHRyLCBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiA9IG51bGxwdHIpOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZShQYXJzZXJFcnJvciYsIGNvbnN0IElk
ZW50aWZpZXImLCBQYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVj
dG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gV1RGOjpudWxsb3B0LCBjb25zdCBQcml2YXRlTmFt
ZUVudmlyb25tZW50KiA9IG51bGxwdHIsIGNvbnN0IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qID0g
bnVsbHB0cik7CiAKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5l
KCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOyB9
CiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uQmVmb3JlTGFzdFRva2VuKCkgY29uc3QgeyBy
ZXR1cm4gbV9sZXhlci0+bGFzdFRva2VuTG9jYXRpb24oKTsgfQpAQCAtMjA4MCw3ICsyMDk3LDcg
QEAgcHJpdmF0ZToKIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxj
bGFzcyBQYXJzZWROb2RlPgotc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IElkZW50aWZpZXImIGNhbGxl
ZU5hbWUsIFBhcnNpbmdDb250ZXh0IHBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0
aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIGNvbnN0IFZhcmlhYmxlRW52aXJv
bm1lbnQqIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzLCBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRp
b24+KiBjbGFzc0ZpZWxkTG9jYXRpb25zKQorc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IElkZW50aWZp
ZXImIGNhbGxlZU5hbWUsIFBhcnNpbmdDb250ZXh0IHBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxp
bnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIGNvbnN0IFByaXZh
dGVOYW1lRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzLCBjb25zdCBWZWN0b3I8
SlNUZXh0UG9zaXRpb24+KiBjbGFzc0ZpZWxkTG9jYXRpb25zKQogewogICAgIGludCBlcnJMaW5l
OwogICAgIFN0cmluZyBlcnJNc2c7CkBAIC0yMDk2LDkgKzIxMTMsOSBAQCBzdGQ6OnVuaXF1ZV9w
dHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlKFBhcnNlckVycm9yJiBlcnJv
ciwgY29uc3QgSQogICAgIEFTU0VSVChtX3NvdXJjZS0+c3RhcnRDb2x1bW4oKSA+IE9yZGluYWxO
dW1iZXI6OmJlZm9yZUZpcnN0KCkpOwogICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uID0gbV9zb3Vy
Y2UtPnN0YXJ0Q29sdW1uKCkuemVyb0Jhc2VkSW50KCk7CiAKLSAgICBpZiAoaXNFdmFsTm9kZTxQ
YXJzZWROb2RlPigpICYmIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzICYmIHBhcmVudFNjb3BlUHJp
dmF0ZU5hbWVzLT5wcml2YXRlTmFtZXNTaXplKCkpIHsKKyAgICBpZiAoaXNFdmFsTm9kZTxQYXJz
ZWROb2RlPigpICYmIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzICYmIHBhcmVudFNjb3BlUHJpdmF0
ZU5hbWVzLT5zaXplKCkpIHsKICAgICAgICAgY3VycmVudFNjb3BlKCktPnNldElzUHJpdmF0ZU5h
bWVTY29wZSgpOwotICAgICAgICBwYXJlbnRTY29wZVByaXZhdGVOYW1lcy0+Y29weVByaXZhdGVO
YW1lc1RvKGN1cnJlbnRTY29wZSgpLT5sZXhpY2FsVmFyaWFibGVzKCkpOworICAgICAgICBjdXJy
ZW50U2NvcGUoKS0+bGV4aWNhbFZhcmlhYmxlcygpLmFkZFByaXZhdGVOYW1lc0Zyb20ocGFyZW50
U2NvcGVQcml2YXRlTmFtZXMpOwogICAgIH0KIAogICAgIGF1dG8gcGFyc2VSZXN1bHQgPSBwYXJz
ZUlubmVyKGNhbGxlZU5hbWUsIHBhcnNpbmdDb250ZXh0LCBmdW5jdGlvbkNvbnN0cnVjdG9yUGFy
YW1ldGVyc0VuZFBvc2l0aW9uLCBjbGFzc0ZpZWxkTG9jYXRpb25zKTsKQEAgLTIxODUsNyArMjIw
Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgKICAgICBEZXJpdmVkQ29u
dGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlID0gRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLAog
ICAgIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUgPSBFdmFsQ29udGV4dFR5cGU6Ok5v
bmUsCiAgICAgRGVidWdnZXJQYXJzZURhdGEqIGRlYnVnZ2VyUGFyc2VEYXRhID0gbnVsbHB0ciwK
LSAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVByaXZhdGVOYW1lcyA9
IG51bGxwdHIsCisgICAgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVQ
cml2YXRlTmFtZXMgPSBudWxscHRyLAogICAgIGNvbnN0IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4q
IGNsYXNzRmllbGRMb2NhdGlvbnMgPSBudWxscHRyLAogICAgIGJvb2wgaXNJbnNpZGVPcmRpbmFy
eUZ1bmN0aW9uID0gZmFsc2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlck1vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ck1vZGVzLmgKaW5kZXggNzk1MThhMzA1NGQ3ZjY1NWE4OTc3ODYzZmE0MTlmNDNiNjg1ZDAxOS4u
MWNkYWZjNTg1OTI2MDc2Y2YxM2I2MzhmYTIxNjI3ZDJmNzU1ZGI2NCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaApAQCAtMzcsNiArMzcsOCBAQCBlbnVtIGNs
YXNzIEpTUGFyc2VyU2NyaXB0TW9kZSB7IENsYXNzaWMsIE1vZHVsZSB9OwogCiBlbnVtIGNsYXNz
IFN1cGVyQmluZGluZyB7IE5lZWRlZCwgTm90TmVlZGVkIH07CiAKK2VudW0gY2xhc3MgUHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQgeyBOb25lLCBOZWVkZWQgfTsKKwogZW51bSBjbGFzcyBDb2RlR2Vu
ZXJhdGlvbk1vZGUgOiB1aW50OF90IHsKICAgICBEZWJ1Z2dlciA9IDEgPDwgMCwKICAgICBUeXBl
UHJvZmlsZXIgPSAxIDw8IDEsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4
Q2hlY2tlci5oCmluZGV4IDg1NjFmMTU2YmY3MzAwNGRhYmI5ZjdkN2Y0MmFlZTZhOGVhNGE5MTku
LjllZjJlZjdiZDIxZjQzMzE5YjQ2ZDk3MjYyZTQ1YWU3MmY1OWRhZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC0xNzksNyArMTc5LDcgQEAg
cHVibGljOgogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJvb2xlYW4oY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgYm9vbCkgeyByZXR1cm4gQm9vbEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBj
cmVhdGVOdWxsKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpIHsgcmV0dXJuIE51bGxFeHByOyB9CiAg
ICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQnJhY2tldEFjY2Vzcyhjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUsIGJvb2wsIGludCwgaW50LCBpbnQp
IHsgcmV0dXJuIEJyYWNrZXRFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRG90QWNj
ZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBjb25zdCBJZGVudGlm
aWVyKiwgRG90VHlwZSB0eXBlLCBpbnQsIGludCwgaW50KSB7IHJldHVybiB0eXBlID09IERvdFR5
cGU6OlByaXZhdGVGaWVsZCA/IFByaXZhdGVEb3RFeHByIDogRG90RXhwcjsgfQorICAgIEV4cHJl
c3Npb25UeXBlIGNyZWF0ZURvdEFjY2Vzcyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNz
aW9uVHlwZSwgY29uc3QgSWRlbnRpZmllciosIERvdFR5cGUgdHlwZSwgaW50LCBpbnQsIGludCkg
eyByZXR1cm4gdHlwZSA9PSBEb3RUeXBlOjpQcml2YXRlTWVtYmVyID8gUHJpdmF0ZURvdEV4cHIg
OiBEb3RFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlUmVnRXhwKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXIm
IGZsYWdzLCBpbnQpIHsgcmV0dXJuIFlhcnI6Omhhc0Vycm9yKFlhcnI6OmNoZWNrU3ludGF4KHBh
dHRlcm4uc3RyaW5nKCksIGZsYWdzLnN0cmluZygpKSkgPyAwIDogUmVnRXhwRXhwcjsgfQogICAg
IEV4cHJlc3Npb25UeXBlIGNyZWF0ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhw
cmVzc2lvblR5cGUsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhwcjsgfQogICAg
IEV4cHJlc3Npb25UeXBlIGNyZWF0ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhw
cmVzc2lvblR5cGUsIGludCwgaW50KSB7IHJldHVybiBOZXdFeHByOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcAppbmRleCA4
MWE5YzkzOGRjMTFhNDIwMGRjYzQyODZjZjM0ZTc1ZTUyNDY4YzY1Li4zZWM1N2MzZTJhYmE1ZGIz
N2I3ZmI2MmUzYzlmMGExNjNmYjVkZTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAKQEAgLTEwNCw2ICsxMDQsNDAgQEAg
dm9pZCBWYXJpYWJsZUVudmlyb25tZW50OjptYXJrVmFyaWFibGVBc0V4cG9ydGVkKGNvbnN0IFJl
ZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4KICAgICBmaW5kUmVzdWx0LT52YWx1ZS5zZXRJc0V4cG9y
dGVkKCk7CiB9CiAKK2Jvb2wgVmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVByaXZhdGVNZXRo
b2QoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikKK3sKKyAgICBp
ZiAoIW1fcmFyZURhdGEpCisgICAgICAgIG1fcmFyZURhdGEgPSBtYWtlVW5pcXVlPFZhcmlhYmxl
RW52aXJvbm1lbnQ6OlJhcmVEYXRhPigpOworCisgICAgYXV0byBmaW5kUmVzdWx0ID0gbV9yYXJl
RGF0YS0+bV9wcml2YXRlTmFtZXMuZmluZChpZGVudGlmaWVyKTsKKworICAgIGlmIChmaW5kUmVz
dWx0ID09IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmVuZCgpKSB7CisgICAgICAgIFByaXZh
dGVOYW1lRW50cnkgbWV0YShQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzRGVjbGFyZWQgfCBQ
cml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzTWV0aG9kKTsKKworICAgICAgICBhdXRvIGVudHJ5
ID0gVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCk7CisgICAgICAgIGVudHJ5LnNldElzUHJpdmF0
ZU1ldGhvZCgpOworICAgICAgICBlbnRyeS5zZXRJc0NvbnN0KCk7CisgICAgICAgIGVudHJ5LnNl
dElzQ2FwdHVyZWQoKTsKKyAgICAgICAgbV9tYXAuYWRkKGlkZW50aWZpZXIsIGVudHJ5KTsKKwor
ICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChp
ZGVudGlmaWVyLCBtZXRhKTsKKyAgICAgICAgcmV0dXJuIGFkZFJlc3VsdC5pc05ld0VudHJ5Owor
ICAgIH0KKworICAgIGlmIChmaW5kUmVzdWx0LT52YWx1ZS5pc0RlY2xhcmVkKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsgLy8gRXJyb3I6IGRlY2xhcmluZyBhIGR1cGxpY2F0ZSBwcml2YXRlIG5h
bWUuCisKKyAgICBhdXRvIGVudHJ5ID0gVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCk7CisgICAg
ZW50cnkuc2V0SXNQcml2YXRlTWV0aG9kKCk7CisgICAgZW50cnkuc2V0SXNDb25zdCgpOworICAg
IGVudHJ5LnNldElzQ2FwdHVyZWQoKTsKKyAgICBtX21hcC5hZGQoaWRlbnRpZmllciwgZW50cnkp
OworCisgICAgLy8gaXQgd2FzIHByZXZpb3VzbHkgdXNlZCwgbWFyayBpdCBhcyBkZWNsYXJlZC4K
KyAgICBQcml2YXRlTmFtZUVudHJ5IG1ldGEoUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc0Rl
Y2xhcmVkIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc1VzZWQgfCBQcml2YXRlTmFtZUVu
dHJ5OjpUcmFpdHM6OklzTWV0aG9kKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmFyZURhdGEt
Pm1fcHJpdmF0ZU5hbWVzLnNldChpZGVudGlmaWVyLCBtZXRhKTsKKyAgICByZXR1cm4gIWFkZFJl
c3VsdC5pc05ld0VudHJ5OworfQogCiB2b2lkIENvbXBhY3RURFpFbnZpcm9ubWVudDo6c29ydENv
bXBhY3QoQ29tcGFjdCYgY29tcGFjdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKaW5kZXggNTJlOWFhNDY1ODM3NTY5MzA4MWIz
Nzc3ZTljN2FiN2NhOTFiZWU0My4uZjZkMzU4YjE5NzAwMmQyMGRlOTdmNDA2OTNjMzNmNjlkNTU3
MzgyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVu
dmlyb25tZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVu
dmlyb25tZW50LmgKQEAgLTQ1LDcgKzQ1LDggQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBpc0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNGdW5jdGlvbjsgfQog
ICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1BhcmFtZXRlcigpIGNvbnN0IHsgcmV0dXJuIG1fYml0
cyAmIElzUGFyYW1ldGVyOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzU2xvcHB5TW9kZUhv
aXN0aW5nQ2FuZGlkYXRlKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNTbG9wcHlNb2RlSG9p
c3RpbmdDYW5kaWRhdGU7IH0KLSAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQcml2YXRlTmFtZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzUHJpdmF0ZU5hbWU7IH0KKyAgICBBTFdBWVNfSU5M
SU5FIGJvb2wgaXNQcml2YXRlRmllbGQoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1ByaXZh
dGVGaWVsZDsgfQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1ByaXZhdGVNZXRob2QoKSBjb25z
dCB7IHJldHVybiBtX2JpdHMgJiBJc1ByaXZhdGVNZXRob2Q7IH0KIAogICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXRJc0NhcHR1cmVkKCkgeyBtX2JpdHMgfD0gSXNDYXB0dXJlZDsgfQogICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXRJc0NvbnN0KCkgeyBtX2JpdHMgfD0gSXNDb25zdDsgfQpAQCAt
NTcsNyArNTgsOCBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzRnVuY3Rp
b24oKSB7IG1fYml0cyB8PSBJc0Z1bmN0aW9uOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dElzUGFyYW1ldGVyKCkgeyBtX2JpdHMgfD0gSXNQYXJhbWV0ZXI7IH0KICAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0SXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGUoKSB7IG1fYml0cyB8PSBJ
c1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZTsgfQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXRJc1ByaXZhdGVOYW1lKCkgeyBtX2JpdHMgfD0gSXNQcml2YXRlTmFtZTsgfQorICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXRJc1ByaXZhdGVGaWVsZCgpIHsgbV9iaXRzIHw9IElzUHJpdmF0ZUZp
ZWxkOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzUHJpdmF0ZU1ldGhvZCgpIHsgbV9i
aXRzIHw9IElzUHJpdmF0ZU1ldGhvZDsgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGNsZWFy
SXNWYXIoKSB7IG1fYml0cyAmPSB+SXNWYXI7IH0KIApAQCAtODAsNyArODIsOCBAQCBwcml2YXRl
OgogICAgICAgICBJc0Z1bmN0aW9uID0gMSA8PCA3LAogICAgICAgICBJc1BhcmFtZXRlciA9IDEg
PDwgOCwKICAgICAgICAgSXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGUgPSAxIDw8IDksCi0g
ICAgICAgIElzUHJpdmF0ZU5hbWUgPSAxIDw8IDEwLAorICAgICAgICBJc1ByaXZhdGVGaWVsZCA9
IDEgPDwgMTAsCisgICAgICAgIElzUHJpdmF0ZU1ldGhvZCA9IDEgPDwgMTEsCiAgICAgfTsKICAg
ICB1aW50MTZfdCBtX2JpdHMgeyAwIH07CiB9OwpAQCAtOTAsMTEgKzkzLDE2IEBAIHN0cnVjdCBW
YXJpYWJsZUVudmlyb25tZW50RW50cnlIYXNoVHJhaXRzIDogSGFzaFRyYWl0czxWYXJpYWJsZUVu
dmlyb25tZW50RW50cnk+CiB9OwogCiBzdHJ1Y3QgUHJpdmF0ZU5hbWVFbnRyeSB7CisgICAgZnJp
ZW5kIGNsYXNzIENhY2hlZFByaXZhdGVOYW1lRW50cnk7CisKIHB1YmxpYzoKICAgICBQcml2YXRl
TmFtZUVudHJ5KHVpbnQxNl90IHRyYWl0cyA9IDApIHsgbV9iaXRzID0gdHJhaXRzOyB9CiAKICAg
ICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNVc2VkKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNV
c2VkOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzRGVjbGFyZWQoKSBjb25zdCB7IHJldHVy
biBtX2JpdHMgJiBJc0RlY2xhcmVkOyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzTWV0aG9k
KCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNNZXRob2Q7IH0KKworICAgIGJvb2wgaXNQcml2
YXRlTWV0aG9kT3JBY2Vzc29yKCkgY29uc3QgeyByZXR1cm4gaXNNZXRob2QoKTsgfQogCiAgICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldElzVXNlZCgpIHsgbV9iaXRzIHw9IElzVXNlZDsgfQogICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0RlY2xhcmVkKCkgeyBtX2JpdHMgfD0gSXNEZWNsYXJl
ZDsgfQpAQCAtMTA3LDggKzExNSwxMCBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgZW51bSBUcmFp
dHMgOiB1aW50MTZfdCB7CisgICAgICAgIE5vbmUgPSAwLAogICAgICAgICBJc1VzZWQgPSAxIDw8
IDAsCiAgICAgICAgIElzRGVjbGFyZWQgPSAxIDw8IDEsCisgICAgICAgIElzTWV0aG9kID0gMSA8
PCAyLAogICAgIH07CiAKIHByaXZhdGU6CkBAIC0xMTYsMTUgKzEyNiwxOCBAQCBwcml2YXRlOgog
fTsKIAogc3RydWN0IFByaXZhdGVOYW1lRW50cnlIYXNoVHJhaXRzIDogSGFzaFRyYWl0czxQcml2
YXRlTmFtZUVudHJ5PiB7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9
IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFs
c2U7CiB9OwogCit0eXBlZGVmIEhhc2hNYXA8UGFja2VkUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBs
PiwgUHJpdmF0ZU5hbWVFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRy
PFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnlIYXNoVHJhaXRzPiBQcml2YXRl
TmFtZUVudmlyb25tZW50OworCiBjbGFzcyBWYXJpYWJsZUVudmlyb25tZW50IHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFBhY2tl
ZFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSwgSWRl
bnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFZh
cmlhYmxlRW52aXJvbm1lbnRFbnRyeUhhc2hUcmFpdHM+IE1hcDsKLSAgICB0eXBlZGVmIEhhc2hN
YXA8UGFja2VkUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgUHJpdmF0ZU5hbWVFbnRyeSwgSWRl
bnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFBy
aXZhdGVOYW1lRW50cnlIYXNoVHJhaXRzPiBQcml2YXRlTmFtZXM7CisKIHB1YmxpYzoKKwogICAg
IFZhcmlhYmxlRW52aXJvbm1lbnQoKSB7IH0KICAgICBWYXJpYWJsZUVudmlyb25tZW50KFZhcmlh
YmxlRW52aXJvbm1lbnQmJiBvdGhlcikKICAgICAgICAgOiBtX21hcChXVEZNb3ZlKG90aGVyLm1f
bWFwKSkKQEAgLTE0Niw2ICsxNTksMTYgQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgTWFw
Ojpjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX21hcC5lbmQoKTsgfQogICAg
IEFMV0FZU19JTkxJTkUgTWFwOjpBZGRSZXN1bHQgYWRkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3Ry
aW5nSW1wbD4mIGlkZW50aWZpZXIpIHsgcmV0dXJuIG1fbWFwLmFkZChpZGVudGlmaWVyLCBWYXJp
YWJsZUVudmlyb25tZW50RW50cnkoKSk7IH0KICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6QWRkUmVz
dWx0IGFkZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBhZGQoaWRlbnRp
Zmllci5pbXBsKCkpOyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIFByaXZhdGVOYW1lRW52aXJvbm1l
bnQ6OkFkZFJlc3VsdCBhZGRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVy
KSB7IHJldHVybiBhZGRQcml2YXRlTmFtZShpZGVudGlmaWVyLmltcGwoKSk7IH0KKyAgICBBTFdB
WVNfSU5MSU5FIFByaXZhdGVOYW1lRW52aXJvbm1lbnQ6OkFkZFJlc3VsdCBhZGRQcml2YXRlTmFt
ZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQorICAgIHsKKyAg
ICAgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICAgICAgbV9yYXJlRGF0YSA9IG1ha2VVbmlx
dWU8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+KCk7CisKKyAgICAgICAgcmV0dXJuIG1f
cmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChpZGVudGlmaWVyLCBQcml2YXRlTmFtZUVudHJ5
KCkpOworICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbWFwLnNpemUoKSArIHByaXZhdGVOYW1lc1NpemUoKTsgfQogICAgIEFMV0FZU19J
TkxJTkUgdW5zaWduZWQgbWFwU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKTsgfQog
ICAgIEFMV0FZU19JTkxJTkUgYm9vbCBjb250YWlucyhjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmlu
Z0ltcGw+JiBpZGVudGlmaWVyKSBjb25zdCB7IHJldHVybiBtX21hcC5jb250YWlucyhpZGVudGlm
aWVyKTsgfQpAQCAtMTY0LDE3ICsxODcsMjAgQEAgcHVibGljOgogICAgIGJvb2wgaXNFdmVyeXRo
aW5nQ2FwdHVyZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkOyB9CiAg
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fbWFwLnNpemUoKTsgfQogCi0gICAg
dXNpbmcgUHJpdmF0ZU5hbWVzUmFuZ2UgPSBXVEY6Okl0ZXJhdG9yUmFuZ2U8UHJpdmF0ZU5hbWVz
OjppdGVyYXRvcj47CisgICAgdXNpbmcgUHJpdmF0ZU5hbWVzUmFuZ2UgPSBXVEY6Okl0ZXJhdG9y
UmFuZ2U8UHJpdmF0ZU5hbWVFbnZpcm9ubWVudDo6aXRlcmF0b3I+OwogCi0gICAgQUxXQVlTX0lO
TElORSBNYXA6OkFkZFJlc3VsdCBkZWNsYXJlUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYg
aWRlbnRpZmllcikgeyByZXR1cm4gZGVjbGFyZVByaXZhdGVOYW1lKGlkZW50aWZpZXIuaW1wbCgp
KTsgfQorICAgIEFMV0FZU19JTkxJTkUgTWFwOjpBZGRSZXN1bHQgZGVjbGFyZVByaXZhdGVGaWVs
ZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBkZWNsYXJlUHJpdmF0ZUZp
ZWxkKGlkZW50aWZpZXIuaW1wbCgpKTsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1c2VQcml2
YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHVzZVByaXZhdGVOYW1lKGlk
ZW50aWZpZXIuaW1wbCgpKTsgfQogCi0gICAgTWFwOjpBZGRSZXN1bHQgZGVjbGFyZVByaXZhdGVO
YW1lKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCisgICAgYm9v
bCBkZWNsYXJlUHJpdmF0ZU1ldGhvZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJl
dHVybiBkZWNsYXJlUHJpdmF0ZU1ldGhvZChpZGVudGlmaWVyLmltcGwoKSk7IH0KKyAgICBib29s
IGRlY2xhcmVQcml2YXRlTWV0aG9kKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlk
ZW50aWZpZXIpOworCisgICAgTWFwOjpBZGRSZXN1bHQgZGVjbGFyZVByaXZhdGVGaWVsZChjb25z
dCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQogICAgIHsKICAgICAgICAg
YXV0byYgbWV0YSA9IGdldE9yQWRkUHJpdmF0ZU5hbWUoaWRlbnRpZmllci5nZXQoKSk7CiAgICAg
ICAgIG1ldGEuc2V0SXNEZWNsYXJlZCgpOwogICAgICAgICBhdXRvIGVudHJ5ID0gVmFyaWFibGVF
bnZpcm9ubWVudEVudHJ5KCk7Ci0gICAgICAgIGVudHJ5LnNldElzUHJpdmF0ZU5hbWUoKTsKKyAg
ICAgICAgZW50cnkuc2V0SXNQcml2YXRlRmllbGQoKTsKICAgICAgICAgZW50cnkuc2V0SXNDb25z
dCgpOwogICAgICAgICBlbnRyeS5zZXRJc0NhcHR1cmVkKCk7CiAgICAgICAgIHJldHVybiBtX21h
cC5hZGQoaWRlbnRpZmllciwgZW50cnkpOwpAQCAtMjAxLDYgKzIyNywyNiBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5zaXplKCk7CiAgICAgfQog
CisgICAgQUxXQVlTX0lOTElORSBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiBwcml2YXRl
TmFtZUVudmlyb25tZW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghbV9yYXJlRGF0YSkK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gJm1fcmFyZURhdGEt
Pm1fcHJpdmF0ZU5hbWVzOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgYm9vbCBoYXNQcml2
YXRlTWV0aG9kT3JBY2Nlc3NvcigpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIW1fcmFyZURh
dGEpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgZm9yIChhdXRvIGVudHJ5
IDogcHJpdmF0ZU5hbWVzKCkpIHsKKyAgICAgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc1ByaXZh
dGVNZXRob2RPckFjZXNzb3IoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5F
IGJvb2wgaGFzUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKICAgICB7
CiAgICAgICAgIGlmICghbV9yYXJlRGF0YSkKQEAgLTIyMiw2ICsyNjgsMjAgQEAgcHVibGljOgog
ICAgICAgICB9CiAgICAgfQogCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGFkZFByaXZhdGVOYW1l
c0Zyb20oY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogcHJpdmF0ZU5hbWVFbnZpcm9ubWVu
dCkKKyAgICB7CisgICAgICAgIGlmICghcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgICAgICBtX3Jh
cmVEYXRhID0gbWFrZVVuaXF1ZTxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4oKTsKKwor
ICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiAqcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCkgeworICAg
ICAgICAgICAgQVNTRVJUKGVudHJ5LnZhbHVlLmlzRGVjbGFyZWQoKSk7CisgICAgICAgICAgICBt
X3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoZW50cnkua2V5LCBlbnRyeS52YWx1ZSk7Cisg
ICAgICAgIH0KKyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY29weVVuZGVjbGFyZWRQ
cml2YXRlTmFtZXNUbyhWYXJpYWJsZUVudmlyb25tZW50JiBvdXRlcikgY29uc3QgewogICAgICAg
ICAvLyBVc2VkIGJ5IHRoZSBQYXJzZXIgdG8gdHJhbnNmZXIgcmVjb3JkZWQgdXNlcyBvZiBQcml2
YXRlTmFtZXMgZnJvbSBhbgogICAgICAgICAvLyBpbm5lciBQcml2YXRlTmFtZUVudmlyb25tZW50
IGludG8gYW4gb3V0ZXIgb25lLCBpbiBjYXNlIGEgUE5FIGlzIHVzZWQKQEAgLTI0NCw3ICszMDQs
NyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICAgICAgUmFyZURhdGEoY29uc3QgUmFyZURhdGEm
KSA9IGRlZmF1bHQ7CiAgICAgICAgIFJhcmVEYXRhJiBvcGVyYXRvcj0oY29uc3QgUmFyZURhdGEm
KSA9IGRlZmF1bHQ7Ci0gICAgICAgIFByaXZhdGVOYW1lcyBtX3ByaXZhdGVOYW1lczsKKyAgICAg
ICAgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCBtX3ByaXZhdGVOYW1lczsKICAgICB9OwogCiBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnJhbmRlZFN0
cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CcmFuZGVkU3RydWN0
dXJlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mMjU0ZDEzMTdmN2M2OTA3NWZmMjQ3ZmJmNzZmMjdlMzdlMGJk
NzdlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnJh
bmRlZFN0cnVjdHVyZS5jcHAKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgSWdhbGlhIFMuQS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJC
cmFuZGVkU3RydWN0dXJlLmgiCisKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitCcmFuZGVkU3RydWN0dXJlOjpCcmFuZGVkU3RydWN0dXJlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBwcmV2aW91cywgVW5pcXVlZFN0cmluZ0ltcGwqIGJyYW5kVWlkLCBEZWZlcnJlZFN0
cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogZGVmZXJyZWQpCisgICAgOiBTdHJ1Y3R1
cmUodm0sIHByZXZpb3VzLCBkZWZlcnJlZCkKKyAgICAsIG1fYnJhbmQoYnJhbmRVaWQpCit7Cisg
ICAgaWYgKHByZXZpb3VzLT5pc0JyYW5kZWRTdHJ1Y3R1cmUoKSkKKyAgICAgICAgbV9wYXJlbnRC
cmFuZC5zZXQodm0sIHRoaXMsIGpzQ2FzdDxCcmFuZGVkU3RydWN0dXJlKj4ocHJldmlvdXMpKTsK
KyAgICB0aGlzLT5zZXRJc0JyYW5kZWRTdHJ1Y3R1cmUodHJ1ZSk7Cit9CisKK0JyYW5kZWRTdHJ1
Y3R1cmU6OkJyYW5kZWRTdHJ1Y3R1cmUoVk0mIHZtLCBCcmFuZGVkU3RydWN0dXJlKiBwcmV2aW91
cywgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqIGRlZmVycmVkKQor
ICAgIDogU3RydWN0dXJlKHZtLCBwcmV2aW91cywgZGVmZXJyZWQpCisgICAgLCBtX2JyYW5kKHBy
ZXZpb3VzLT5tX2JyYW5kKQorICAgICwgbV9wYXJlbnRCcmFuZCh2bSwgdGhpcywgcHJldmlvdXMt
Pm1fcGFyZW50QnJhbmQuZ2V0KCksIFdyaXRlQmFycmllcjxCcmFuZGVkU3RydWN0dXJlPjo6TWF5
QmVOdWxsKQoreworICAgIHRoaXMtPnNldElzQnJhbmRlZFN0cnVjdHVyZSh0cnVlKTsKK30KKwor
U3RydWN0dXJlKiBCcmFuZGVkU3RydWN0dXJlOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHBy
ZXZpb3VzLCBVbmlxdWVkU3RyaW5nSW1wbCogYnJhbmRVaWQsIERlZmVycmVkU3RydWN0dXJlVHJh
bnNpdGlvbldhdGNocG9pbnRGaXJlKiBkZWZlcnJlZCkKK3sKKyAgICBBU1NFUlQodm0uc3RydWN0
dXJlU3RydWN0dXJlKTsKKyAgICBCcmFuZGVkU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxCcmFuZGVkU3RydWN0dXJlPih2bS5oZWFwKSkgQnJhbmRl
ZFN0cnVjdHVyZSh2bSwgcHJldmlvdXMsIGJyYW5kVWlkLCBkZWZlcnJlZCk7CisgICAgbmV3U3Ry
dWN0dXJlLT5maW5pc2hDcmVhdGlvbih2bSwgcHJldmlvdXMpOworICAgIHJldHVybiBuZXdTdHJ1
Y3R1cmU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQnJhbmRlZFN0cnVjdHVyZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQnJhbmRlZFN0cnVjdHVyZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwMmI2NDNhODlhMWY4
YjBiMjA2NTcxODdjY2M4MDcwMjNlODYwODYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9CcmFuZGVkU3RydWN0dXJlLmgKQEAgLTAsMCArMSw3NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuQS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiU3RydWN0dXJlLmgiCisjaW5jbHVkZSAiU3ltYm9sLmgiCisjaW5jbHVk
ZSAiV2F0Y2hwb2ludC5oIgorI2luY2x1ZGUgIldyaXRlQmFycmllcklubGluZXMuaCIKKworbmFt
ZXNwYWNlIFdURiB7CisKK2NsYXNzIFVuaXF1ZWRTdHJpbmdJbXBsOworCit9IC8vIG5hbWVzcGFj
ZSBXVEYKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEJyYW5kZWRTdHJ1Y3R1cmUgZmluYWwg
OiBwdWJsaWMgU3RydWN0dXJlIHsKKyAgICB0eXBlZGVmIFN0cnVjdHVyZSBCYXNlOworCitwdWJs
aWM6CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+Cisg
ICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAg
ICByZXR1cm4gJnZtLmJyYW5kZWRTdHJ1Y3R1cmVTcGFjZTsKKyAgICB9CisKKyAgICBBTFdBWVNf
SU5MSU5FIGJvb2wgY2hlY2tCcmFuZChTeW1ib2wqIGJyYW5kKQorICAgIHsKKyAgICAgICAgVW5p
cXVlZFN0cmluZ0ltcGwqIGJyYW5kVWlkID0gJmJyYW5kLT51aWQoKTsKKyAgICAgICAgZm9yIChC
cmFuZGVkU3RydWN0dXJlKiBjdXJyZW50U3RydWN0dXJlID0gdGhpczsgY3VycmVudFN0cnVjdHVy
ZTsgY3VycmVudFN0cnVjdHVyZSA9IGN1cnJlbnRTdHJ1Y3R1cmUtPm1fcGFyZW50QnJhbmQuZ2V0
KCkpIHsKKyAgICAgICAgICAgIGlmIChicmFuZFVpZCA9PSBjdXJyZW50U3RydWN0dXJlLT5tX2Jy
YW5kKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKK3ByaXZhdGU6IAorICAgIEJyYW5kZWRTdHJ1Y3R1cmUoVk0m
LCBTdHJ1Y3R1cmUqLCBVbmlxdWVkU3RyaW5nSW1wbCogYnJhbmQsIERlZmVycmVkU3RydWN0dXJl
VHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKik7CisgICAgQnJhbmRlZFN0cnVjdHVyZShWTSYsIEJy
YW5kZWRTdHJ1Y3R1cmUqLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50Rmly
ZSopOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgVW5p
cXVlZFN0cmluZ0ltcGwqIGJyYW5kLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBv
aW50RmlyZSogPSBudWxscHRyKTsKKworICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBtX2JyYW5kOwor
ICAgIFdyaXRlQmFycmllcjxCcmFuZGVkU3RydWN0dXJlPiBtX3BhcmVudEJyYW5kOworCisgICAg
ZnJpZW5kIGNsYXNzIFN0cnVjdHVyZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCmluZGV4IGNmZGM5ZWRi
MDU1YTgzMTkwMTdhODkzYzRlYjY1ZDQ2NThhYmQ0OGEuLmUzMDI0ZDg3YTg1ODc5Y2M3OTc3MDQz
NzY3ZTVmMTdmOWY1MzY3ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NhY2hlZFR5cGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
YWNoZWRUeXBlcy5jcHAKQEAgLTk5NCw2ICs5OTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYml0
VmVjdG9ycy5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9iaXRWZWN0b3JzKTsKICAgICAgICAg
bV9jb25zdGFudElkZW50aWZpZXJTZXRzLmVuY29kZShlbmNvZGVyLCByYXJlRGF0YS5tX2NvbnN0
YW50SWRlbnRpZmllclNldHMpOwogICAgICAgICBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
ID0gcmFyZURhdGEubV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjsKKyAgICAgICAgbV9wcml2
YXRlQnJhbmRSZXF1aXJlbWVudCA9IHJhcmVEYXRhLm1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ7
CiAgICAgfQogCiAgICAgVW5saW5rZWRDb2RlQmxvY2s6OlJhcmVEYXRhKiBkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikgY29uc3QKQEAgLTEwMDgsNiArMTAwOSw3IEBAIHB1YmxpYzoKICAgICAgICAg
bV9iaXRWZWN0b3JzLmRlY29kZShkZWNvZGVyLCByYXJlRGF0YS0+bV9iaXRWZWN0b3JzKTsKICAg
ICAgICAgbV9jb25zdGFudElkZW50aWZpZXJTZXRzLmRlY29kZShkZWNvZGVyLCByYXJlRGF0YS0+
bV9jb25zdGFudElkZW50aWZpZXJTZXRzKTsKICAgICAgICAgcmFyZURhdGEtPm1fbmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIgPSBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOworICAgICAg
ICByYXJlRGF0YS0+bV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9IG1fcHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQ7CiAgICAgICAgIHJldHVybiByYXJlRGF0YTsKICAgICB9CiAKQEAgLTEwMjEsOCAr
MTAyMywxMSBAQCBwcml2YXRlOgogICAgIENhY2hlZFZlY3RvcjxDYWNoZWRCaXRWZWN0b3I+IG1f
Yml0VmVjdG9yczsKICAgICBDYWNoZWRWZWN0b3I8Q2FjaGVkQ29uc3RhbnRJZGVudGlmaWVyU2V0
RW50cnk+IG1fY29uc3RhbnRJZGVudGlmaWVyU2V0czsKICAgICB1bnNpZ25lZCBtX25lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyIDogMTsKKyAgICB1bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVp
cmVtZW50IDogMTsKIH07CiAKK3R5cGVkZWYgQ2FjaGVkSGFzaE1hcDxDYWNoZWRSZWZQdHI8Q2Fj
aGVkVW5pcXVlZFN0cmluZ0ltcGwsIFVuaXF1ZWRTdHJpbmdJbXBsLCBXVEY6OlBhY2tlZFB0clRy
YWl0czxVbmlxdWVkU3RyaW5nSW1wbD4+LCBQcml2YXRlTmFtZUVudHJ5LCBJZGVudGlmaWVyUmVw
SGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiwgUHJpdmF0ZU5hbWVF
bnRyeUhhc2hUcmFpdHM+IENhY2hlZFByaXZhdGVOYW1lRW52aXJvbm1lbnQ7CisKIGNsYXNzIENh
Y2hlZFZhcmlhYmxlRW52aXJvbm1lbnRSYXJlRGF0YSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8VmFy
aWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+IHsKIHB1YmxpYzoKICAgICB2b2lkIGVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YSYgcmFy
ZURhdGEpCkBAIC0xMDM2LDcgKzEwNDEsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgot
ICAgIENhY2hlZEhhc2hNYXA8Q2FjaGVkUmVmUHRyPENhY2hlZFVuaXF1ZWRTdHJpbmdJbXBsLCBV
bmlxdWVkU3RyaW5nSW1wbCwgV1RGOjpQYWNrZWRQdHJUcmFpdHM8VW5pcXVlZFN0cmluZ0ltcGw+
PiwgUHJpdmF0ZU5hbWVFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRy
PFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnlIYXNoVHJhaXRzPiBtX3ByaXZh
dGVOYW1lczsKKyAgICBDYWNoZWRQcml2YXRlTmFtZUVudmlyb25tZW50IG1fcHJpdmF0ZU5hbWVz
OwogfTsKIAogY2xhc3MgQ2FjaGVkVmFyaWFibGVFbnZpcm9ubWVudCA6IHB1YmxpYyBDYWNoZWRP
YmplY3Q8VmFyaWFibGVFbnZpcm9ubWVudD4gewpAQCAtMTIxMyw3ICsxMjE4LDcgQEAgcHVibGlj
OgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBDYWNoZWRIYXNoU2V0PENhY2hlZFJlZlB0cjxDYWNo
ZWRVbmlxdWVkU3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPiBtX3ByaXZhdGVOYW1lczsK
KyAgICBDYWNoZWRQcml2YXRlTmFtZUVudmlyb25tZW50IG1fcHJpdmF0ZU5hbWVzOwogfTsKIAog
Y2xhc3MgQ2FjaGVkU3ltYm9sVGFibGUgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFN5bWJvbFRhYmxl
PiB7CkBAIC0xNzkwLDYgKzE3OTUsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2NsYXNz
U291cmNlLmVuY29kZShlbmNvZGVyLCByYXJlRGF0YS5tX2NsYXNzU291cmNlKTsKICAgICAgICAg
bV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9wYXJl
bnRTY29wZVREWlZhcmlhYmxlcyk7CisgICAgICAgIG1fcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9u
bWVudC5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9wYXJlbnRQcml2YXRlTmFtZUVudmlyb25t
ZW50KTsKICAgICB9CiAKICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6UmFyZURhdGEq
IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKSBjb25zdApAQCAtMTc5NywxMiArMTgwMywxNCBAQCBw
dWJsaWM6CiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpSYXJlRGF0YSogcmFy
ZURhdGEgPSBuZXcgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlJhcmVEYXRhIHsgfTsKICAg
ICAgICAgbV9jbGFzc1NvdXJjZS5kZWNvZGUoZGVjb2RlciwgcmFyZURhdGEtPm1fY2xhc3NTb3Vy
Y2UpOwogICAgICAgICBtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzLmRlY29kZShkZWNvZGVyLCBy
YXJlRGF0YS0+bV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CisgICAgICAgIG1fcGFyZW50UHJp
dmF0ZU5hbWVFbnZpcm9ubWVudC5kZWNvZGUoZGVjb2RlciwgcmFyZURhdGEtPm1fcGFyZW50UHJp
dmF0ZU5hbWVFbnZpcm9ubWVudCk7CiAgICAgICAgIHJldHVybiByYXJlRGF0YTsKICAgICB9CiAK
IHByaXZhdGU6CiAgICAgQ2FjaGVkU291cmNlQ29kZVdpdGhvdXRQcm92aWRlciBtX2NsYXNzU291
cmNlOwogICAgIENhY2hlZFJlZlB0cjxDYWNoZWRURFpFbnZpcm9ubWVudExpbms+IG1fcGFyZW50
U2NvcGVURFpWYXJpYWJsZXM7CisgICAgQ2FjaGVkUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCBtX3Bh
cmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQ7CiB9OwogCiBjbGFzcyBDYWNoZWRGdW5jdGlvbkV4
ZWN1dGFibGUgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
PiB7CkBAIC0xODM4LDYgKzE4NDYsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgc3VwZXJCaW5k
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdXBlckJpbmRpbmc7IH0KICAgICB1bnNpZ25lZCBkZXJp
dmVkQ29udGV4dFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2Rlcml2ZWRDb250ZXh0VHlwZTsgfQog
ICAgIHVuc2lnbmVkIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkgY29uc3QgeyByZXR1cm4g
bV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjsgfQorICAgIHVuc2lnbmVkIHByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudDsg
fQogCiAgICAgSWRlbnRpZmllciBuYW1lKERlY29kZXImIGRlY29kZXIpIGNvbnN0IHsgcmV0dXJu
IG1fbmFtZS5kZWNvZGUoZGVjb2Rlcik7IH0KICAgICBJZGVudGlmaWVyIGVjbWFOYW1lKERlY29k
ZXImIGRlY29kZXIpIGNvbnN0IHsgcmV0dXJuIG1fZWNtYU5hbWUuZGVjb2RlKGRlY29kZXIpOyB9
CkBAIC0xODY2LDcgKzE4NzUsOCBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fcGFyYW1ldGVy
c1N0YXJ0T2Zmc2V0IDogMzE7CiAgICAgdW5zaWduZWQgbV90eXBlUHJvZmlsaW5nU3RhcnRPZmZz
ZXQ7CiAgICAgdW5zaWduZWQgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0OwotICAgIHVuc2lnbmVk
IG1fcGFyYW1ldGVyQ291bnQ7CisgICAgdW5zaWduZWQgbV9wYXJhbWV0ZXJDb3VudDozMTsKKyAg
ICB1bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsKICAgICBTb3VyY2VQYXJz
ZU1vZGUgbV9zb3VyY2VQYXJzZU1vZGU7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQg
OiAyOwogICAgIHVuc2lnbmVkIG1fZnVuY3Rpb25Nb2RlIDogMjsgLy8gRnVuY3Rpb25Nb2RlCkBA
IC0xOTIzLDcgKzE5MzMsNiBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgaXNDbGFzc0NvbnRleHQo
KSBjb25zdCB7IHJldHVybiBtX2lzQ2xhc3NDb250ZXh0OyB9CiAgICAgdW5zaWduZWQgY29uc3Ry
dWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gbV9jb25zdHJ1Y3RvcktpbmQ7IH0KICAgICB1bnNp
Z25lZCBkZXJpdmVkQ29udGV4dFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2Rlcml2ZWRDb250ZXh0
VHlwZTsgfQotICAgIHVuc2lnbmVkIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkgY29uc3Qg
eyByZXR1cm4gbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjsgfQogICAgIHVuc2lnbmVkIGV2
YWxDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXZhbENvbnRleHRUeXBlOyB9CiAgICAg
dW5zaWduZWQgaGFzVGFpbENhbGxzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNUYWlsQ2FsbHM7IH0K
ICAgICB1bnNpZ25lZCBoYXNDaGVja3BvaW50cygpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ2hlY2tw
b2ludHM7IH0KQEAgLTE5NTUsNyArMTk2NCw2IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9p
c0NsYXNzQ29udGV4dCA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwog
ICAgIHVuc2lnbmVkIG1fZGVyaXZlZENvbnRleHRUeXBlIDogMjsKLSAgICB1bnNpZ25lZCBtX25l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIDogMTsKICAgICB1bnNpZ25lZCBtX2V2YWxDb250ZXh0
VHlwZSA6IDI7CiAgICAgdW5zaWduZWQgbV9oYXNUYWlsQ2FsbHMgOiAxOwogICAgIHVuc2lnbmVk
IG1fY29kZVR5cGUgOiAyOwpAQCAtMjIzNiw2ICsyMjQ0LDcgQEAgQUxXQVlTX0lOTElORSB2b2lk
IENhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IFVubGkKICAgICBtX3N1cGVyQmluZGluZyA9IGV4ZWN1dGFibGUubV9zdXBlckJpbmRpbmc7CiAg
ICAgbV9kZXJpdmVkQ29udGV4dFR5cGUgPSBleGVjdXRhYmxlLm1fZGVyaXZlZENvbnRleHRUeXBl
OwogICAgIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgPSBleGVjdXRhYmxlLm1fbmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXI7CisgICAgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9IGV4
ZWN1dGFibGUubV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudDsKIAogICAgIG1fcmFyZURhdGEuZW5j
b2RlKGVuY29kZXIsIGV4ZWN1dGFibGUubV9yYXJlRGF0YS5nZXQoKSk7CiAKQEAgLTIyNzcsNiAr
MjI4Niw3IEBAIEFMV0FZU19JTkxJTkUgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKERlY29kZXImIGRlCiAgICAgLCBtX3R5cGVQcm9maWxpbmdT
dGFydE9mZnNldChjYWNoZWRFeGVjdXRhYmxlLnR5cGVQcm9maWxpbmdTdGFydE9mZnNldCgpKQog
ICAgICwgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KGNhY2hlZEV4ZWN1dGFibGUudHlwZVByb2Zp
bGluZ0VuZE9mZnNldCgpKQogICAgICwgbV9wYXJhbWV0ZXJDb3VudChjYWNoZWRFeGVjdXRhYmxl
LnBhcmFtZXRlckNvdW50KCkpCisgICAgLCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50KGNhY2hl
ZEV4ZWN1dGFibGUucHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoKSkKICAgICAsIG1fZmVhdHVyZXMo
Y2FjaGVkRXhlY3V0YWJsZS5mZWF0dXJlcygpKQogICAgICwgbV9zb3VyY2VQYXJzZU1vZGUoY2Fj
aGVkRXhlY3V0YWJsZS5zb3VyY2VQYXJzZU1vZGUoKSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5k
KGNhY2hlZEV4ZWN1dGFibGUuY29uc3RydWN0b3JLaW5kKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRleCAxYzczYjRjMzI0MmZiMDdlMjhmYWUzZDFi
YTFkZTczOGFiYjU3YTI1Li5jNDI5NzJhZmZkYzlmMjdhYzExYzlkZGM1YzlkMzE4ZTkyYTY0ZDJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKQEAgLTcx
LDEzICs3MSwxMyBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrRm9yRnVu
Y3Rpb25zKFZNJiB2bSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubAogfQogCiB0ZW1wbGF0ZSA8Y2xh
c3MgVW5saW5rZWRDb2RlQmxvY2tUeXBlLCBjbGFzcyBFeGVjdXRhYmxlVHlwZSA9IFNjcmlwdEV4
ZWN1dGFibGU+Ci1VbmxpbmtlZENvZGVCbG9ja1R5cGUqIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxv
Y2tJbXBsKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlclN0cmljdE1v
ZGUgc3RyaWN0TW9kZSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIE9wdGlvblNldDxD
b2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9y
LCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVy
aXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGNvbnN0IFREWkVu
dmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclREWiA9IG51bGxwdHIsIGNvbnN0IFZhcmlhYmxlRW52
aXJvbm1lbnQqIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzID0gbnVsbHB0ciwgRXhlY3V0YWJsZVR5
cGUqIGV4ZWN1dGFibGUgPSBudWxscHRyKQorVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBnZW5lcmF0
ZVVubGlua2VkQ29kZUJsb2NrSW1wbChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwg
SlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRN
b2RlLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIFBh
cnNlckVycm9yJiBlcnJvciwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgRGVyaXZl
ZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250
ZXh0LCBjb25zdCBURFpFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFogPSBudWxscHRyLCBj
b25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiBwcml2YXRlTmFtZUVudmlyb25tZW50ID0gbnVs
bHB0ciwgRXhlY3V0YWJsZVR5cGUqIGV4ZWN1dGFibGUgPSBudWxscHRyKQogewogICAgIHR5cGVk
ZWYgdHlwZW5hbWUgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpSb290Tm9kZSBS
b290Tm9kZTsKICAgICBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiA9IGV4ZWN1dGFibGUg
JiYgZXhlY3V0YWJsZS0+aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKCk7CiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8Um9vdE5vZGU+IHJvb3ROb2RlID0gcGFyc2U8Um9vdE5vZGU+KAotICAgICAgICB2
bSwgc291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4s
IHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBl
Pjo6cGFyc2VNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IsIG51bGxwdHIsIENv
bnN0cnVjdG9yS2luZDo6Tm9uZSwgZGVyaXZlZENvbnRleHRUeXBlLCBldmFsQ29udGV4dFR5cGUs
IG51bGxwdHIsIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzLCBudWxscHRyLCBpc0luc2lkZU9yZGlu
YXJ5RnVuY3Rpb24pOworICAgICAgICB2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFyc2Vy
QnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIENhY2hlVHlw
ZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5l
ZWRlZCwgZXJyb3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZGVyaXZlZENvbnRl
eHRUeXBlLCBldmFsQ29udGV4dFR5cGUsIG51bGxwdHIsIHByaXZhdGVOYW1lRW52aXJvbm1lbnQs
IG51bGxwdHIsIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbik7CiAKICAgICBpZiAoIXJvb3ROb2Rl
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTk0LDkgKzk0LDEyIEBAIFVubGlua2VkQ29k
ZUJsb2NrVHlwZSogZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ltcGwoVk0mIHZtLCBjb25zdCBT
b3VyY2VDb2RlJiBzCiAgICAgYm9vbCB1c2VzRXZhbCA9IHJvb3ROb2RlLT5mZWF0dXJlcygpICYg
RXZhbEZlYXR1cmU7CiAgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSByb290Tm9kZS0+ZmVhdHVyZXMo
KSAmIFN0cmljdE1vZGVGZWF0dXJlID8gRUNNQU1vZGU6OnN0cmljdCgpIDogRUNNQU1vZGU6OnNs
b3BweSgpOwogICAgIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyID0gTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vOwotICAgIGlmIGNvbnN0
ZXhwciAoc3RkOjppc19zYW1lX3Y8RXhlY3V0YWJsZVR5cGUsIERpcmVjdEV2YWxFeGVjdXRhYmxl
PikKKyAgICBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9
IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19zYW1lX3Y8RXhlY3V0YWJsZVR5cGUsIERpcmVjdEV2YWxFeGVjdXRhYmxlPikgewogICAgICAg
ICBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9IGV4ZWN1dGFibGUtPm5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyKCk7Ci0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8odXNlc0V2
YWwsIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBzY3JpcHRNb2RlLCBTdXBl
ckJpbmRpbmc6Ok5vdE5lZWRlZCwgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+Ojpw
YXJzZU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIs
IGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGZhbHNlLCBldmFsQ29udGV4dFR5cGUpOworICAgICAg
ICBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9IGV4ZWN1dGFibGUtPnByaXZhdGVCcmFuZFJlcXVp
cmVtZW50KCk7CisgICAgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKHVzZXNF
dmFsLCBmYWxzZSwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGZhbHNlLCBDb25zdHJ1Y3Rvcktp
bmQ6Ok5vbmUsIHNjcmlwdE1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBDYWNoZVR5cGVz
PFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlLCBu
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgZmFsc2Us
IGV2YWxDb250ZXh0VHlwZSk7CiAKICAgICBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIHVubGlua2Vk
Q29kZUJsb2NrID0gVW5saW5rZWRDb2RlQmxvY2tUeXBlOjpjcmVhdGUodm0sIGV4ZWN1dGFibGVJ
bmZvLCBjb2RlR2VuZXJhdGlvbk1vZGUpOwogICAgIHVubGlua2VkQ29kZUJsb2NrLT5yZWNvcmRQ
YXJzZShyb290Tm9kZS0+ZmVhdHVyZXMoKSwgcm9vdE5vZGUtPmhhc0NhcHR1cmVkVmFyaWFibGVz
KCksIGxpbmVDb3VudCwgdW5saW5rZWRFbmRDb2x1bW4pOwpAQCAtMTA4LDcgKzExMSw3IEBAIFVu
bGlua2VkQ29kZUJsb2NrVHlwZSogZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ltcGwoVk0mIHZt
LCBjb25zdCBTb3VyY2VDb2RlJiBzCiAgICAgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4gcGFy
ZW50VmFyaWFibGVzVW5kZXJURFo7CiAgICAgaWYgKHZhcmlhYmxlc1VuZGVyVERaKQogICAgICAg
ICBwYXJlbnRWYXJpYWJsZXNVbmRlclREWiA9IFREWkVudmlyb25tZW50TGluazo6Y3JlYXRlKHZt
Lm1fY29tcGFjdFZhcmlhYmxlTWFwLT5nZXQoKnZhcmlhYmxlc1VuZGVyVERaKSwgbnVsbHB0cik7
Ci0gICAgZXJyb3IgPSBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUodm0sIHJvb3ROb2RlLmdl
dCgpLCBzb3VyY2UsIHVubGlua2VkQ29kZUJsb2NrLCBjb2RlR2VuZXJhdGlvbk1vZGUsIHBhcmVu
dFZhcmlhYmxlc1VuZGVyVERaLCBlY21hTW9kZSk7CisgICAgZXJyb3IgPSBCeXRlY29kZUdlbmVy
YXRvcjo6Z2VuZXJhdGUodm0sIHJvb3ROb2RlLmdldCgpLCBzb3VyY2UsIHVubGlua2VkQ29kZUJs
b2NrLCBjb2RlR2VuZXJhdGlvbk1vZGUsIHBhcmVudFZhcmlhYmxlc1VuZGVyVERaLCBwcml2YXRl
TmFtZUVudmlyb25tZW50LCBlY21hTW9kZSk7CiAKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTExNywxNCArMTIwLDE0IEBAIFVubGlua2VkQ29k
ZUJsb2NrVHlwZSogZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ltcGwoVk0mIHZtLCBjb25zdCBT
b3VyY2VDb2RlJiBzCiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBVbmxpbmtlZENvZGVCbG9ja1R5cGUs
IGNsYXNzIEV4ZWN1dGFibGVUeXBlPgotVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBnZW5lcmF0ZVVu
bGlua2VkQ29kZUJsb2NrKFZNJiB2bSwgRXhlY3V0YWJsZVR5cGUqIGV4ZWN1dGFibGUsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIEpTUGFy
c2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBj
b2RlR2VuZXJhdGlvbk1vZGUsIFBhcnNlckVycm9yJiBlcnJvciwgRXZhbENvbnRleHRUeXBlIGV2
YWxDb250ZXh0VHlwZSwgY29uc3QgVERaRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaID0g
bnVsbHB0ciwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVQcml2YXRlTmFt
ZXMgPSBudWxscHRyKQorVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBnZW5lcmF0ZVVubGlua2VkQ29k
ZUJsb2NrKFZNJiB2bSwgRXhlY3V0YWJsZVR5cGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIEpTUGFyc2VyU2NyaXB0
TW9kZSBzY3JpcHRNb2RlLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJh
dGlvbk1vZGUsIFBhcnNlckVycm9yJiBlcnJvciwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0
VHlwZSwgY29uc3QgVERaRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaID0gbnVsbHB0ciwg
Y29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCA9IG51
bGxwdHIpCiB7Ci0gICAgcmV0dXJuIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsPFVubGlu
a2VkQ29kZUJsb2NrVHlwZSwgRXhlY3V0YWJsZVR5cGU+KHZtLCBzb3VyY2UsIHN0cmljdE1vZGUs
IHNjcmlwdE1vZGUsIGNvZGVHZW5lcmF0aW9uTW9kZSwgZXJyb3IsIGV2YWxDb250ZXh0VHlwZSwg
ZXhlY3V0YWJsZS0+ZGVyaXZlZENvbnRleHRUeXBlKCksIGV4ZWN1dGFibGUtPmlzQXJyb3dGdW5j
dGlvbkNvbnRleHQoKSwgdmFyaWFibGVzVW5kZXJURFosIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVz
LCBleGVjdXRhYmxlKTsKKyAgICByZXR1cm4gZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ltcGw8
VW5saW5rZWRDb2RlQmxvY2tUeXBlLCBFeGVjdXRhYmxlVHlwZT4odm0sIHNvdXJjZSwgc3RyaWN0
TW9kZSwgc2NyaXB0TW9kZSwgY29kZUdlbmVyYXRpb25Nb2RlLCBlcnJvciwgZXZhbENvbnRleHRU
eXBlLCBleGVjdXRhYmxlLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgZXhlY3V0YWJsZS0+aXNBcnJv
d0Z1bmN0aW9uQ29udGV4dCgpLCB2YXJpYWJsZXNVbmRlclREWiwgcHJpdmF0ZU5hbWVFbnZpcm9u
bWVudCwgZXhlY3V0YWJsZSk7CiB9CiAKLVVubGlua2VkRXZhbENvZGVCbG9jayogZ2VuZXJhdGVV
bmxpbmtlZENvZGVCbG9ja0ZvckRpcmVjdEV2YWwoVk0mIHZtLCBEaXJlY3RFdmFsRXhlY3V0YWJs
ZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlclN0cmljdE1v
ZGUgc3RyaWN0TW9kZSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIE9wdGlvblNldDxD
b2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9y
LCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlLCBjb25zdCBURFpFbnZpcm9ubWVudCog
dmFyaWFibGVzVW5kZXJURFosIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3Bl
UHJpdmF0ZU5hbWVzKQorVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkQ29k
ZUJsb2NrRm9yRGlyZWN0RXZhbChWTSYgdm0sIERpcmVjdEV2YWxFeGVjdXRhYmxlKiBleGVjdXRh
YmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RN
b2RlLCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgT3B0aW9uU2V0PENvZGVHZW5lcmF0
aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IsIEV2YWxDb250
ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIGNvbnN0IFREWkVudmlyb25tZW50KiB2YXJpYWJsZXNV
bmRlclREWiwgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogcHJpdmF0ZU5hbWVFbnZpcm9u
bWVudCkKIHsKLSAgICByZXR1cm4gZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9jazxVbmxpbmtlZEV2
YWxDb2RlQmxvY2s+KHZtLCBleGVjdXRhYmxlLCBzb3VyY2UsIHN0cmljdE1vZGUsIHNjcmlwdE1v
ZGUsIGNvZGVHZW5lcmF0aW9uTW9kZSwgZXJyb3IsIGV2YWxDb250ZXh0VHlwZSwgdmFyaWFibGVz
VW5kZXJURFosIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzKTsKKyAgICByZXR1cm4gZ2VuZXJhdGVV
bmxpbmtlZENvZGVCbG9jazxVbmxpbmtlZEV2YWxDb2RlQmxvY2s+KHZtLCBleGVjdXRhYmxlLCBz
b3VyY2UsIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIGNvZGVHZW5lcmF0aW9uTW9kZSwgZXJyb3Is
IGV2YWxDb250ZXh0VHlwZSwgdmFyaWFibGVzVW5kZXJURFosIHByaXZhdGVOYW1lRW52aXJvbm1l
bnQpOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgVW5saW5rZWRDb2RlQmxvY2tUeXBlPgpAQCAtMjQ4
LDcgKzI1MSw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBDb2RlQ2FjaGU6OmdldFVu
bGlua2VkR2xvYmFsRnVuY3Rpb25FeGVjdXRhYmxlKFZNJiB2CiAgICAgLy8gVGhlIEZ1bmN0aW9u
IGNvbnN0cnVjdG9yIG9ubHkgaGFzIGFjY2VzcyB0byBnbG9iYWwgdmFyaWFibGVzLCBzbyBubyB2
YXJpYWJsZXMgd2lsbCBiZSB1bmRlciBURFogdW5sZXNzIHRoZXkncmUKICAgICAvLyBpbiB0aGUg
Z2xvYmFsIGxleGljYWwgZW52aXJvbm1lbnQsIHdoaWNoIHdlIGFsd2F5cyBURFogY2hlY2sgYWNj
ZXNzZXMgZnJvbS4KICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkgPSBjb25z
dHJ1Y3RBYmlsaXR5Rm9yUGFyc2VNb2RlKG1ldGFkYXRhLT5wYXJzZU1vZGUoKSk7Ci0gICAgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUodm0sIHNvdXJjZSwgbWV0YWRhdGEsIFVubGlua2VkTm9y
bWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3Np
YywgbnVsbHB0ciwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBOZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplcjo6Tm8pOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4
ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBzb3VyY2Us
IG1ldGFkYXRhLCBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCBKU1Bh
cnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIG51bGxwdHIsIFdURjo6bnVsbG9wdCwgRGVyaXZlZENv
bnRleHRUeXBlOjpOb25lLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8sIFByaXZhdGVC
cmFuZFJlcXVpcmVtZW50OjpOb25lKTsKIAogICAgIGlmICghc291cmNlLnByb3ZpZGVyKCktPnNv
dXJjZVVSTERpcmVjdGl2ZSgpLmlzTnVsbCgpKQogICAgICAgICBmdW5jdGlvbkV4ZWN1dGFibGUt
PnNldFNvdXJjZVVSTERpcmVjdGl2ZShzb3VyY2UucHJvdmlkZXIoKS0+c291cmNlVVJMRGlyZWN0
aXZlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNh
Y2hlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaAppbmRleCA5
Y2MxY2E3MDA0NDc5Y2U1N2QyM2M2NDQ3Yzg0YzFjYzhkNmM5ZmRiLi42MGE3N2QyYWYzYWQwYWI3
NDJiNDA0N2I0OTY3MmY4ZjMyMTljOTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db2RlQ2FjaGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db2RlQ2FjaGUuaApAQCAtMjU0LDcgKzI1NCw3IEBAIHRlbXBsYXRlIDw+IHN0cnVjdCBDYWNo
ZVR5cGVzPFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaz4gewogICAgIHN0YXRpYyBjb25z
dGV4cHIgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxl
RXZhbHVhdGVNb2RlOwogfTsKIAotVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlu
a2VkQ29kZUJsb2NrRm9yRGlyZWN0RXZhbChWTSYsIERpcmVjdEV2YWxFeGVjdXRhYmxlKiwgY29u
c3QgU291cmNlQ29kZSYsIEpTUGFyc2VyU3RyaWN0TW9kZSwgSlNQYXJzZXJTY3JpcHRNb2RlLCBP
cHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgUGFyc2VyRXJyb3ImLCBFdmFsQ29udGV4dFR5
cGUsIGNvbnN0IFREWkVudmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclREWiwgY29uc3QgVmFyaWFi
bGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVQcml2YXRlTmFtZXMpOworVW5saW5rZWRFdmFsQ29k
ZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrRm9yRGlyZWN0RXZhbChWTSYsIERpcmVj
dEV2YWxFeGVjdXRhYmxlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyU3RyaWN0TW9kZSwg
SlNQYXJzZXJTY3JpcHRNb2RlLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgUGFyc2Vy
RXJyb3ImLCBFdmFsQ29udGV4dFR5cGUsIGNvbnN0IFREWkVudmlyb25tZW50KiB2YXJpYWJsZXNV
bmRlclREWiwgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCopOwogVW5saW5rZWRQcm9ncmFt
Q29kZUJsb2NrKiByZWN1cnNpdmVseUdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tGb3JQcm9ncmFt
KFZNJiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyU3RyaWN0TW9kZSwgSlNQYXJzZXJTY3Jp
cHRNb2RlLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgUGFyc2VyRXJyb3ImLCBFdmFs
Q29udGV4dFR5cGUpOwogVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiByZWN1cnNpdmVs
eUdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tGb3JNb2R1bGVQcm9ncmFtKFZNJiwgY29uc3QgU291
cmNlQ29kZSYsIEpTUGFyc2VyU3RyaWN0TW9kZSwgSlNQYXJzZXJTY3JpcHRNb2RlLCBPcHRpb25T
ZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgUGFyc2VyRXJyb3ImLCBFdmFsQ29udGV4dFR5cGUpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhl
Y3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhl
Y3V0YWJsZS5jcHAKaW5kZXggYzdjMjljMDUwMjk2MjMxMGQzNjlmNGU5NDYxNmI5ZDEwMmRiNjky
Ni4uZjZmNzkzMDdkZmU3OWY4YTJiMWI4ODBiMWI4NmZiYjI2OWM0MjVjZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNw
cApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotRGlyZWN0RXZhbEV4ZWN1
dGFibGUqIERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVy
aXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRl
T3JkaW5hcnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgY29uc3Qg
VERaRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaLCBjb25zdCBWYXJpYWJsZUVudmlyb25t
ZW50KiBwcml2YXRlTmFtZXMsIEVDTUFNb2RlIGVjbWFNb2RlKQorRGlyZWN0RXZhbEV4ZWN1dGFi
bGUqIERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZl
ZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplciwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQgcHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVu
Y3Rpb24sIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIGNvbnN0IFREWkVudmlyb25t
ZW50KiB2YXJpYWJsZXNVbmRlclREWiwgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogcHJp
dmF0ZU5hbWVFbnZpcm9ubWVudCwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKQEAgLTQ0LDcgKzQ0LDcgQEAgRGlyZWN0RXZhbEV4ZWN1dGFibGUqIERpcmVjdEV2YWxF
eGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byogZXhlY3V0YWJsZSA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPERpcmVjdEV2YWxFeGVjdXRhYmxlPih2bS5oZWFwKSkgRGlyZWN0
RXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGVjbWFNb2RlLmlzU3RyaWN0KCks
IGRlcml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGlzQXJyb3dG
dW5jdGlvbkNvbnRleHQsIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgZXZhbENvbnRleHRUeXBl
KTsKKyAgICBhdXRvKiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RGly
ZWN0RXZhbEV4ZWN1dGFibGU+KHZtLmhlYXApKSBEaXJlY3RFdmFsRXhlY3V0YWJsZShnbG9iYWxP
YmplY3QsIHNvdXJjZSwgZWNtYU1vZGUuaXNTdHJpY3QoKSwgZGVyaXZlZENvbnRleHRUeXBlLCBu
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGlzQXJy
b3dGdW5jdGlvbkNvbnRleHQsIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgZXZhbENvbnRleHRU
eXBlKTsKICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbih2bSk7CiAKICAgICBQYXJzZXJF
cnJvciBlcnJvcjsKQEAgLTUyLDcgKzUyLDcgQEAgRGlyZWN0RXZhbEV4ZWN1dGFibGUqIERpcmVj
dEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAg
ICBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUgPSBnbG9i
YWxPYmplY3QtPmRlZmF1bHRDb2RlR2VuZXJhdGlvbk1vZGUoKTsKIAogICAgIC8vIFdlIGRvbid0
IGJvdGhlciB3aXRoIENvZGVDYWNoZSBoZXJlIGJlY2F1c2UgZGlyZWN0IGV2YWwgdXNlcyBhIHNw
ZWNpYWxpemVkIERpcmVjdEV2YWxDb2RlQ2FjaGUuCi0gICAgVW5saW5rZWRFdmFsQ29kZUJsb2Nr
KiB1bmxpbmtlZEV2YWxDb2RlID0gZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ZvckRpcmVjdEV2
YWwodm0sIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPnNvdXJjZSgpLCBzdHJpY3RNb2RlLCBKU1Bh
cnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIGNvZGVHZW5lcmF0aW9uTW9kZSwgZXJyb3IsIGV2YWxD
b250ZXh0VHlwZSwgdmFyaWFibGVzVW5kZXJURFosIHByaXZhdGVOYW1lcyk7CisgICAgVW5saW5r
ZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZEV2YWxDb2RlID0gZ2VuZXJhdGVVbmxpbmtlZENvZGVC
bG9ja0ZvckRpcmVjdEV2YWwodm0sIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPnNvdXJjZSgpLCBz
dHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIGNvZGVHZW5lcmF0aW9uTW9k
ZSwgZXJyb3IsIGV2YWxDb250ZXh0VHlwZSwgdmFyaWFibGVzVW5kZXJURFosIHByaXZhdGVOYW1l
RW52aXJvbm1lbnQpOwogCiAgICAgaWYgKGdsb2JhbE9iamVjdC0+aGFzRGVidWdnZXIoKSkKICAg
ICAgICAgZ2xvYmFsT2JqZWN0LT5kZWJ1Z2dlcigpLT5zb3VyY2VQYXJzZWQoZ2xvYmFsT2JqZWN0
LCBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLCBlcnJvci5saW5lKCksIGVycm9yLm1l
c3NhZ2UoKSk7CkBAIC02NywxMCArNjcsMTAgQEAgRGlyZWN0RXZhbEV4ZWN1dGFibGUqIERpcmVj
dEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAg
ICByZXR1cm4gZXhlY3V0YWJsZTsKIH0KIAotRGlyZWN0RXZhbEV4ZWN1dGFibGU6OkRpcmVjdEV2
YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgYm9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJp
dmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVP
cmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKQotICAgIDog
RXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGluU3RyaWN0Q29udGV4dCwgZGVy
aXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBpc0luc2lkZU9yZGluYXJ5
RnVuY3Rpb24sIGV2YWxDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpCitE
aXJlY3RFdmFsRXhlY3V0YWJsZTo6RGlyZWN0RXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGluU3RyaWN0Q29u
dGV4dCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJl
cXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBib29sIGlzQXJyb3dGdW5jdGlvbkNv
bnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUgZXZh
bENvbnRleHRUeXBlKQorICAgIDogRXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2Us
IGluU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250
ZXh0LCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250ZXh0VHlwZSwgbmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KQogewotICAgIEFTU0VS
VChuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9PSBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
cjo6Tm8gfHwgZGVyaXZlZENvbnRleHRUeXBlID09IERlcml2ZWRDb250ZXh0VHlwZTo6RGVyaXZl
ZENvbnN0cnVjdG9yQ29udGV4dCk7CisgICAgQVNTRVJUKChuZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplciA9PSBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8gJiYgcHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQgPT0gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmUpIHx8IGRlcml2ZWRDb250
ZXh0VHlwZSA9PSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5oCmluZGV4IDhjNTJjYjY4MWU4ZDA1ZDI2
NGVhZjMwZDZjOTRkMTNiZTcxZDM1ODguLjM2MmNlZDhkN2IxNzExMjBmMmIyYmU1ZmQ1Yzk1NjBl
MzA1OWVlMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVj
dEV2YWxFeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGly
ZWN0RXZhbEV4ZWN1dGFibGUuaApAQCAtMzEsOSArMzEsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
Y2xhc3MgRGlyZWN0RXZhbEV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgRXZhbEV4ZWN1dGFibGUg
ewogcHVibGljOgotICAgIHN0YXRpYyBEaXJlY3RFdmFsRXhlY3V0YWJsZSogY3JlYXRlKEpTR2xv
YmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIERlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBp
c0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSwgY29uc3QgVERaRW52aXJv
bm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50
KiBwcml2YXRlTmFtZXMsIEVDTUFNb2RlKTsKKyAgICBzdGF0aWMgRGlyZWN0RXZhbEV4ZWN1dGFi
bGUqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBEZXJpdmVkQ29u
dGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJl
bWVudCwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlG
dW5jdGlvbiwgRXZhbENvbnRleHRUeXBlLCBjb25zdCBURFpFbnZpcm9ubWVudCogcGFyZW50U2Nv
cGVURFpWYXJpYWJsZXMsIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqLCBFQ01BTW9kZSk7
CiBwcml2YXRlOgotICAgIERpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiwgY29u
c3QgU291cmNlQ29kZSYsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUs
IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQs
IGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUpOworICAgIERp
cmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIGJv
b2wgaW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCwgYm9vbCBpc0Fycm93RnVuY3Rpb25D
b250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBlKTsK
IH07CiAKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKERpcmVjdEV2YWxFeGVjdXRhYmxlKSA9PSBzaXpl
b2YoRXZhbEV4ZWN1dGFibGUpLCAiIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FdmFsRXhlY3V0YWJsZS5jcHAKaW5kZXggMmVjMTM3YTczNjIyNDIxYjVmOWQxMjJjMjcz
NTE4ZDVlNjM4NjQ5Yy4uMGIzZDQxNjRhYTY1YWJkMDA0ZmVlOThiOGNlY2U4Nzk2ZGZiYzJhMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmNw
cApAQCAtMzIsOSArMzIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBF
dmFsRXhlY3V0YWJsZTo6c19pbmZvID0geyAiRXZhbEV4ZWN1dGFibGUiLCAmQmFzZTo6c19pbmZv
LCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEV2YWxFeGVjdXRhYmxlKSB9
OwogCi1FdmFsRXhlY3V0YWJsZTo6RXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGluU3RyaWN0Q29udGV4dCwg
RGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rp
b25Db250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBl
IGV2YWxDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIpCitFdmFsRXhlY3V0YWJsZTo6RXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGluU3Ry
aWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBp
c0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZh
bENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIg
bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZh
dGVCcmFuZFJlcXVpcmVtZW50KQogICAgIDogQmFzZShnbG9iYWxPYmplY3QtPnZtKCkuZXZhbEV4
ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIGdsb2JhbE9iamVjdC0+dm0oKSwgc291cmNlLCBpblN0
cmljdENvbnRleHQsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwg
aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBldmFsQ29udGV4dFR5cGUsIE5vSW50cmluc2ljKQog
ICAgICwgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpKQorICAgICwgbV9wcml2YXRlQnJhbmRSZXF1aXJl
bWVudChzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpKQogewog
ICAgIEFTU0VSVChzb3VyY2UucHJvdmlkZXIoKS0+c291cmNlVHlwZSgpID09IFNvdXJjZVByb3Zp
ZGVyU291cmNlVHlwZTo6UHJvZ3JhbSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXZhbEV4ZWN1dGFibGUuaAppbmRleCA2N2U2OWM4NjI5YmEzZmIzODExNDgxMTM2Yjhl
N2U5OTQ4MGVkNzcxLi41MjYwMjUxYWNlZTIyNWU5YjU3OWY4ZTgyZjZlZGM4MTBjN2FkZWQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmgKQEAg
LTYyLDEzICs2MiwxNCBAQCBwdWJsaWM6CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVj
dXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZv
KHVzZXNFdmFsKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBKU1BhcnNl
clNjcmlwdE1vZGU6OkNsYXNzaWMsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJz
ZU1vZGU6OlByb2dyYW1Nb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUoKSwgbmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIoKSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgZXZhbENvbnRl
eHRUeXBlKCkpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7
IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1c2VzRXZhbCgpLCBmYWxzZSwgUHJpdmF0ZUJyYW5kUmVx
dWlyZW1lbnQ6Ok5vbmUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2Ny
aXB0TW9kZTo6Q2xhc3NpYywgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9k
ZTo6UHJvZ3JhbU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBuZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplcigpLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlLCBldmFsQ29udGV4dFR5
cGUoKSk7IH0KIAogICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlcygpIHsgcmV0dXJuIG1fdW5saW5r
ZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJpYWJsZXMoKTsgfQogICAgIHVuc2lnbmVkIG51bUZ1bmN0
aW9uSG9pc3RpbmdDYW5kaWRhdGVzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2st
Pm51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKCk7IH0KICAgICB1bnNpZ25lZCBudW1Ub3BM
ZXZlbEZ1bmN0aW9uRGVjbHMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVt
YmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KICAgICBib29sIGFsbG93RGlyZWN0RXZhbENhY2hlKCkg
Y29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPmFsbG93RGlyZWN0RXZhbENh
Y2hlKCk7IH0KICAgICBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplcigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyPihtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsgfQorICAgIFByaXZhdGVC
cmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ+KG1fcHJpdmF0ZUJyYW5kUmVxdWly
ZW1lbnQpOyB9CiAgICAgVGVtcGxhdGVPYmplY3RNYXAmIGVuc3VyZVRlbXBsYXRlT2JqZWN0TWFw
KFZNJik7CiAKIHByb3RlY3RlZDoKQEAgLTc2LDExICs3NywxMiBAQCBwcm90ZWN0ZWQ6CiAgICAg
ZnJpZW5kIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CiAKICAgICB1c2luZyBCYXNlOjpmaW5pc2hD
cmVhdGlvbjsKLSAgICBFdmFsRXhlY3V0YWJsZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJj
ZUNvZGUmLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlz
QXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFs
Q29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsKKyAgICBFdmFsRXhlY3V0
YWJsZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGluU3RyaWN0Q29u
dGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJv
b2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCk7CiAKICAgICBzdGF0aWMg
dm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICB1bnNpZ25l
ZCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIDogMTsKKyAgICB1bnNpZ25lZCBtX3ByaXZh
dGVCcmFuZFJlcXVpcmVtZW50IDogMTsKIAogICAgIFdyaXRlQmFycmllcjxFeGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlPiBtX2V2YWxDb2RlQmxvY2s7CiAgICAgV3JpdGVCYXJyaWVyPFVubGlua2Vk
RXZhbENvZGVCbG9jaz4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2s7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCmluZGV4IDQxNGU3YmRm
NzdhYjRmYzc2NGI1NjVkZjZmMWJkNGEwZDY0YjMwY2IuLmQ4NzQ0Nzk0YmJiMWFkMzAzMWZiNDhh
YmM2NGVlNTUwMzNjNmJhYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCkBAIC0zMzQsNiArMzM0LDE2IEBAIEpTT2JqZWN0KiBj
cmVhdGVSZWRlZmluZWRQcml2YXRlTmFtZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCiAgICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmco
IkNhbm5vdCByZWRlZmluZSBleGlzdGluZyBwcml2YXRlIGZpZWxkIiksIGRlZmF1bHRTb3VyY2VB
cHBlbmRlciwgVHlwZU5vdGhpbmcpOwogfQogCitKU09iamVjdCogY3JlYXRlUHJpdmF0ZU1ldGhv
ZEFjY2Vzc0Vycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJu
IGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoIkNhbm5vdCBhY2Nlc3Mg
cHJpdmF0ZSBtZXRob2QiX3MpLCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIFR5cGVOb3RoaW5nKTsK
K30KKworSlNPYmplY3QqIGNyZWF0ZVJlaW5zdGFsbFByaXZhdGVNZXRob2RFcnJvcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBjcmVhdGVUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBtYWtlU3RyaW5nKCJDYW5ub3QgaW5zdGFsbCBzYW1lIHByaXZhdGUgbWV0aG9k
cyBvbiBvYmplY3QgbW9yZSB0aGFuIG9uY2UiX3MpLCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIFR5
cGVOb3RoaW5nKTsKK30KKwogRXhjZXB0aW9uKiB0aHJvd091dE9mTWVtb3J5RXJyb3IoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUpCiB7CiAgICAgcmV0dXJu
IHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZU91dE9mTWVtb3J5RXJy
b3IoZ2xvYmFsT2JqZWN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCmluZGV4IDk4ZDdlMmI4M2EyNzkxMmZh
NTRjMmMyNWVlMTgzYmZiNGUwNDZjNzMuLjc0OTgyMDUwMThjZGVmOGYzZjgzNjdiNGJiZTJlZjc5
ZGJkMTdjMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGly
ZWN0RXZhbEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCkBAIC02OSw3ICs2OSw3IEBAIEluZGlyZWN0RXZh
bEV4ZWN1dGFibGUqIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqCiBjb25zdGV4cHIgYm9vbCBpblN0cmljdENvbnRleHQgPSBmYWxzZTsKIGNv
bnN0ZXhwciBib29sIGluc2lkZU9yZGluYXJ5RnVuY3Rpb24gPSBmYWxzZTsKIEluZGlyZWN0RXZh
bEV4ZWN1dGFibGU6OkluZGlyZWN0RXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVy
aXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0
VHlwZSBldmFsQ29udGV4dFR5cGUpCi0gICAgOiBFdmFsRXhlY3V0YWJsZShnbG9iYWxPYmplY3Qs
IHNvdXJjZSwgaW5TdHJpY3RDb250ZXh0LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5j
dGlvbkNvbnRleHQsIGluc2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxDb250ZXh0VHlwZSwgTmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vKQorICAgIDogRXZhbEV4ZWN1dGFibGUoZ2xvYmFs
T2JqZWN0LCBzb3VyY2UsIGluU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fy
cm93RnVuY3Rpb25Db250ZXh0LCBpbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBldmFsQ29udGV4dFR5
cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObywgUHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQ6Ok5vbmUpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
CmluZGV4IDliOTM4YjNlNWU3YTA0NTQ0YTU1OGYwMGUzNDk1YmFhNWFmZjkxNDcuLjgyOTY1ZDE4
NzMyMTc0NzRkMzcwNTlhYjQ3NjRhOTM2NjBiYWVjMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuaApAQCAtMTg0LDYgKzE4NCw4IEBAIHB1YmxpYzoKICAgICBpbmxp
bmUgYm9vbCBnZXRQcml2YXRlRmllbGQoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYpOwogICAgIGlubGluZSB2b2lkIHNldFByaXZhdGVGaWVsZChKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgaW5s
aW5lIHZvaWQgZGVmaW5lUHJpdmF0ZUZpZWxkKEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBpbmxpbmUgYm9vbCBjaGVja1ByaXZh
dGVCcmFuZChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgYnJhbmQpOworICAgIGlubGluZSB2b2lk
IHNldFByaXZhdGVCcmFuZChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgYnJhbmQpOwogCiAgICAg
dW5zaWduZWQgZ2V0QXJyYXlMZW5ndGgoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5kZXggMDA1ZWUxNDY2NDM1NThm
Y2I3NzQ4NmRiMzAyNTgwNGM3MDAwZGJjZC4uOGU1ZTQwNzVlMTA4NTYxODYwZDZhMWQxNmI1ODk3
ZDVmYTk0YWM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3RJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3RJbmxpbmVzLmgKQEAgLTI0LDYgKzI0LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
QXV4aWxpYXJ5QmFycmllcklubGluZXMuaCIKKyNpbmNsdWRlICJCcmFuZGVkU3RydWN0dXJlLmgi
CiAjaW5jbHVkZSAiQnV0dGVyZmx5SW5saW5lcy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5j
bHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAtNTc4LDYgKzU3OSw4IEBAIGlubGluZSBKU1ZhbHVlIEpT
T2JqZWN0OjpnZXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdWludDY0X3QgcHJvcGVy
dHlOYW1lCiAKIEpTT2JqZWN0KiBjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcihKU0dsb2Jh
bE9iamVjdCopOwogSlNPYmplY3QqIGNyZWF0ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3IoSlNH
bG9iYWxPYmplY3QqKTsKK0pTT2JqZWN0KiBjcmVhdGVSZWluc3RhbGxQcml2YXRlTWV0aG9kRXJy
b3IoSlNHbG9iYWxPYmplY3QqKTsKK0pTT2JqZWN0KiBjcmVhdGVQcml2YXRlTWV0aG9kQWNjZXNz
RXJyb3IoSlNHbG9iYWxPYmplY3QqKTsKIAogQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0Ojpn
ZXRQcml2YXRlRmllbGRTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
IHsKQEAgLTY2OSw0ICs2NzIsNDMgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpTT2JqZWN0OjpnZXRO
b25SZWlmaWVkU3RhdGljUHJvcGVydHlOYW1lcyhWTSYgdm0sIFByb3BlcnR5TmEKICAgICB9CiB9
CiAKK2lubGluZSBib29sIEpTT2JqZWN0OjpjaGVja1ByaXZhdGVCcmFuZChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJyYW5kKQoreworICAgIEFTU0VSVChicmFuZC5pc1N5
bWJvbCgpKTsKKyAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gdGhpcy0+c3RydWN0dXJlKHZtKTsKKyAgICBpZiAoIXN0cnVjdHVyZS0+aXNCcmFuZGVkU3Ry
dWN0dXJlKCkgfHwgIWpzQ2FzdDxCcmFuZGVkU3RydWN0dXJlKj4oc3RydWN0dXJlKS0+Y2hlY2tC
cmFuZChhc1N5bWJvbChicmFuZCkpKSB7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9i
amVjdCwgc2NvcGUsIGNyZWF0ZVByaXZhdGVNZXRob2RBY2Nlc3NFcnJvcihnbG9iYWxPYmplY3Qp
KTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBmYWxzZSk7CisgICAgfQorICAg
IEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpKTsKKworICAgIHJldHVybiB0cnVl
OworfQorCitpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0UHJpdmF0ZUJyYW5kKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYnJhbmQpCit7CisgICAgQVNTRVJUKGJyYW5kLmlz
U3ltYm9sKCkpOworICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOworICAgIGlmIChzdHJ1Y3R1cmUtPmlzQnJhbmRlZFN0
cnVjdHVyZSgpICYmIGpzQ2FzdDxCcmFuZGVkU3RydWN0dXJlKj4oc3RydWN0dXJlKS0+Y2hlY2tC
cmFuZChhc1N5bWJvbChicmFuZCkpKSB7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9i
amVjdCwgc2NvcGUsIGNyZWF0ZVJlaW5zdGFsbFByaXZhdGVNZXRob2RFcnJvcihnbG9iYWxPYmpl
Y3QpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB2b2lkKCkpOworICAgIH0K
KyAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CisKKyAgICBzY29wZS5y
ZWxlYXNlKCk7CisKKyAgICBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50Rmly
ZSBkZWZlcnJlZFdhdGNocG9pbnRGaXJlKHZtLCBzdHJ1Y3R1cmUpOworCisgICAgU3RydWN0dXJl
KiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OnNldEJyYW5kVHJhbnNpdGlvbih2bSwgc3RydWN0
dXJlLCBhc1N5bWJvbChicmFuZCksICZkZWZlcnJlZFdhdGNocG9pbnRGaXJlKTsKKyAgICBBU1NF
UlQobmV3U3RydWN0dXJlLT5pc0JyYW5kZWRTdHJ1Y3R1cmUoKSk7CisgICAgQVNTRVJUKG5ld1N0
cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSB8fCAhdGhpcy0+c3RydWN0dXJlKHZtKS0+b3V0
T2ZMaW5lQ2FwYWNpdHkoKSk7CisgICAgdGhpcy0+c2V0U3RydWN0dXJlKHZtLCBuZXdTdHJ1Y3R1
cmUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTY29wZS5jcHAKaW5kZXggNGZiMjRhMjgyNzMzNWNiNzU5YmZjZmE5OGI5Nzk4NWE1OTQ5
ODgxYS4uZmM3NzQyZTIzMDg5NjdlOTkxMjViZjA2ZmIzMWM3ZTYzYjhiNzBkNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKQEAgLTMyMSw3ICszMjEsNyBAQCBS
ZXNvbHZlT3AgSlNTY29wZTo6YWJzdHJhY3RSZXNvbHZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIHNpemVfdCBkZXB0aE9mZgogICAgIHJldHVybiBvcDsKIH0KIAotdm9pZCBKU1Njb3Bl
Ojpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKEpTU2NvcGUqIHNjb3BlLCBURFpFbnZp
cm9ubWVudCYgcmVzdWx0LCBWYXJpYWJsZUVudmlyb25tZW50JiBwcml2YXRlTmFtZXMpCit2b2lk
IEpTU2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFooSlNTY29wZSogc2NvcGUs
IFREWkVudmlyb25tZW50JiByZXN1bHQsIFByaXZhdGVOYW1lRW52aXJvbm1lbnQmIHByaXZhdGVO
YW1lRW52aXJvbm1lbnQpCiB7CiAgICAgZm9yICg7IHNjb3BlOyBzY29wZSA9IHNjb3BlLT5uZXh0
KCkpIHsKICAgICAgICAgaWYgKCFzY29wZS0+aXNMZXhpY2FsU2NvcGUoKSAmJiAhc2NvcGUtPmlz
Q2F0Y2hTY29wZSgpKQpAQCAtMzQwLDggKzM0MCw5IEBAIHZvaWQgSlNTY29wZTo6Y29sbGVjdENs
b3N1cmVWYXJpYWJsZXNVbmRlclREWihKU1Njb3BlKiBzY29wZSwgVERaRW52aXJvbm1lbnQmIHJl
CiAgICAgICAgICAgICByZXN1bHQuYWRkKGl0ZXItPmtleSk7CiAKICAgICAgICAgaWYgKHN5bWJv
bFRhYmxlLT5oYXNQcml2YXRlTmFtZXMoKSkgewotICAgICAgICAgICAgZm9yIChhdXRvIG5hbWUg
OiBzeW1ib2xUYWJsZS0+cHJpdmF0ZU5hbWVzKCkpCi0gICAgICAgICAgICAgICAgcHJpdmF0ZU5h
bWVzLnVzZVByaXZhdGVOYW1lKG5hbWUpOyAgICAKKyAgICAgICAgICAgIGF1dG8gcHJpdmF0ZU5h
bWVzID0gc3ltYm9sVGFibGUtPnByaXZhdGVOYW1lcygpOworICAgICAgICAgICAgZm9yIChhdXRv
IGVuZCA9IHByaXZhdGVOYW1lcy5lbmQoKSwgaXRlciA9IHByaXZhdGVOYW1lcy5iZWdpbigpOyBp
dGVyICE9IGVuZDsgKytpdGVyKQorICAgICAgICAgICAgICAgIHByaXZhdGVOYW1lRW52aXJvbm1l
bnQuYWRkKGl0ZXItPmtleSwgaXRlci0+dmFsdWUpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCmluZGV4IDdhM2MyNDE1MTFiODdlZDNk
YWQ5Y2RjOTMxMWQxNTA1YjkxM2JlN2MuLmU0Y2QwYmIzMDk3ZmRjMzE2ZDMwYWNkNmZmOTA3Yzky
Zjg2MDEzMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2Nv
cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmgKQEAgLTI3
LDEyICsyNywxMiBAQAogCiAjaW5jbHVkZSAiR2V0UHV0SW5mby5oIgogI2luY2x1ZGUgIkpTT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiVmFyaWFibGVFbnZpcm9ubWVudC5oIgogCiBuYW1lc3BhY2UgSlND
IHsKIAogY2xhc3MgU2NvcGVDaGFpbkl0ZXJhdG9yOwogY2xhc3MgU3ltYm9sVGFibGU7Ci1jbGFz
cyBWYXJpYWJsZUVudmlyb25tZW50OwogY2xhc3MgV2F0Y2hwb2ludFNldDsKIAogdXNpbmcgVERa
RW52aXJvbm1lbnQgPSBIYXNoU2V0PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIElkZW50aWZp
ZXJSZXBIYXNoPjsKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGhh
c0NvbnN0YW50U2NvcGUoUmVzb2x2ZVR5cGUpOwogICAgIHN0YXRpYyBKU1Njb3BlKiBjb25zdGFu
dFNjb3BlRm9yQ29kZUJsb2NrKFJlc29sdmVUeXBlLCBDb2RlQmxvY2sqKTsKIAotICAgIHN0YXRp
YyB2b2lkIGNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFooSlNTY29wZSosIFREWkVudmly
b25tZW50JiByZXN1bHQsIFZhcmlhYmxlRW52aXJvbm1lbnQmIHByaXZhdGVOYW1lcyk7CisgICAg
c3RhdGljIHZvaWQgY29sbGVjdENsb3N1cmVWYXJpYWJsZXNVbmRlclREWihKU1Njb3BlKiwgVERa
RW52aXJvbm1lbnQmIHJlc3VsdCwgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCYpOwogCiAgICAgc3Rh
dGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGUuaAppbmRleCAwOTlkODk5YWQ1ZTYzYTc0MzM1OGUyYWJiMjBhYjM0ZjU5Yjk2MGVjLi5iODU5
MTRmZjhlYTBkZDAzYzYyNDc3NTM1OTZmZjQyZDU2MTY2YjM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgKQEAg
LTYzLDcgKzYzLDcgQEAgcHVibGljOgogCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0
YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1
c2VzRXZhbCgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJT
Y3JpcHRNb2RlOjpNb2R1bGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1v
ZGU6Ok1vZHVsZUV2YWx1YXRlTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIE5lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyOjpObywgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgRXZh
bENvbnRleHRUeXBlOjpOb25lKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZv
KCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8odXNlc0V2YWwoKSwgZmFsc2UsIFByaXZh
dGVCcmFuZFJlcXVpcmVtZW50OjpOb25lLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBK
U1BhcnNlclNjcmlwdE1vZGU6Ok1vZHVsZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJj
ZVBhcnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVNb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUoKSwgTmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCksIGZh
bHNlLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUpOyB9CiAKICAgICBVbmxpbmtlZE1vZHVsZVByb2dy
YW1Db2RlQmxvY2sqIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygpIHsgcmV0dXJuIG1f
dW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKaW5kZXggODAxM2ExOWI4M2Q5OGIxMzQwMTEyZTgz
M2E4OTg5ODRkMTljNTM3Ny4uYWExN2M0YmFjZTY4MzRiMGZiYjFjYzRlNWNhZjY5Mzk0ZGU1ZTQw
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKQEAgLTUzOSw2
ICs1MzksOSBAQCB2b2lkIE9wdGlvbnM6OnJlY29tcHV0ZURlcGVuZGVudE9wdGlvbnMoKQogICAg
ICAgICBPcHRpb25zOjpyYW5kb21JbnRlZ3JpdHlBdWRpdFJhdGUoKSA9IDA7CiAgICAgZWxzZSBp
ZiAoT3B0aW9uczo6cmFuZG9tSW50ZWdyaXR5QXVkaXRSYXRlKCkgPiAxLjApCiAgICAgICAgIE9w
dGlvbnM6OnJhbmRvbUludGVncml0eUF1ZGl0UmF0ZSgpID0gMS4wOworICAgIAorICAgIGlmIChP
cHRpb25zOjp1c2VQcml2YXRlTWV0aG9kcygpKQorICAgICAgICBPcHRpb25zOjp1c2VQcml2YXRl
Q2xhc3NGaWVsZHMoKSA9IHRydWU7CiAKICAgICBpZiAoIU9wdGlvbnM6OmFsbG93VW5zdXBwb3J0
ZWRUaWVycygpKSB7CiAjZGVmaW5lIERJU0FCTEVfVElFUlMob3B0aW9uLCBmbGFncywgLi4uKSBk
byB7IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNM
aXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCmluZGV4
IGZmM2JmMzVjYWFmOTZhZDEyNzUxNmJiMDc1OTQ5ZjZkYTk4NTY1MGIuLjdmZGUxNzJiYjU3OTFj
NWQ1ZmVlZTcwOGJiOWRkMGNhNTk3YmU4ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9uc0xpc3QuaApAQCAtNTEyLDYgKzUxMiw3IEBAIEpTX0VYUE9SVF9QUklWQVRF
IGJvb2wgY2FuVXNlSklUQ2FnZSgpOwogICAgIHYoQm9vbCwgZXhwb3NlUHJvZmlsZXJzT25HbG9i
YWxPYmplY3QsIGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIGV4cG9zZSBmdW5jdGlv
bnMgdG8gZW5hYmxlL2Rpc2FibGUgYm90aCB0aGUgc2FtcGxpbmcgcHJvZmlsZXIgYW5kIHRoZSBz
dXBlciBzYW1wbGVyIikgXAogICAgIHYoQm9vbCwgYWxsb3dVbnN1cHBvcnRlZFRpZXJzLCBmYWxz
ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCBub3QgZGlzYWJsZSBERkcgb3IgRlRMIHdoZW4g
YW4gZXhwZXJpbWVudGFsIGZlYXR1cmUgaXMgZW5hYmxlZC4iKSBcCiAgICAgdihCb29sLCB1c2VQ
cml2YXRlQ2xhc3NGaWVsZHMsIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHRoZSBwYXJzZXIgd2ls
bCB1bmRlcnN0YW5kIHByaXZhdGUgZGF0YSBmaWVsZHMgaW5zaWRlIGNsYXNzZXMuIikgXAorICAg
IHYoQm9vbCwgdXNlUHJpdmF0ZU1ldGhvZHMsIGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCB0aGUg
cGFyc2VyIHdpbGwgdW5kZXJzdGFuZCBwcml2YXRlIG1ldGhvZHMgaW5zaWRlIGNsYXNzZXMuIikg
XAogICAgIHYoQm9vbCwgcmV0dXJuRWFybHlGcm9tSW5maW5pdGVMb29wc0ZvckZ1enppbmcsIGZh
bHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KFNpemUsIGVhcmx5UmV0dXJuRnJvbUluZmlu
aXRlTG9vcHNMaW1pdCwgMTMwMDAwMDAwMCwgTm9ybWFsLCAiV2hlbiByZXR1cm5FYXJseUZyb21J
bmZpbml0ZUxvb3BzRm9yRnV6emluZyBpcyB0cnVlLCB0aGlzIGRldGVybWluZXMgdGhlIG51bWJl
ciBvZiBleGVjdXRpb25zIGEgbG9vcCBjYW4gcnVuIGZvciBiZWZvcmUganVzdCByZXR1cm5pbmcu
IFRoaXMgaXMgaGVscGZ1bCBmb3IgdGhlIGZ1enplciBzbyBpdCBkb2Vzbid0IGdldCBzdHVjayBp
biBpbmZpbml0ZSBsb29wcy4iKSBcCiAgICAgdihCb29sLCB1c2VMSUNNRnV6emluZywgZmFsc2Us
IE5vcm1hbCwgbnVsbHB0cikgXApAQCAtNTY4LDcgKzU2OSw4IEBAIGVudW0gRXhwZXJpbWVudGFs
T3B0aW9uRmxhZ3MgewogfTsKIAogI2RlZmluZSBGT1JfRUFDSF9KU0NfRVhQRVJJTUVOVEFMX09Q
VElPTih2KSBcCi0gICAgdih1c2VQcml2YXRlQ2xhc3NGaWVsZHMsIChTdXBwb3J0c0ZUTCB8IFN1
cHBvcnRzREZHKSwgImh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI3
ODEiLCAiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjc4NCIpCisg
ICAgdih1c2VQcml2YXRlQ2xhc3NGaWVsZHMsIChTdXBwb3J0c0ZUTCB8IFN1cHBvcnRzREZHKSwg
Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI3ODEiLCAiaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjc4NCIpIFwKKyAgICB2KHVzZVBy
aXZhdGVNZXRob2RzLCAoU3VwcG9ydHNGVEwgfCBTdXBwb3J0c0RGRyksICJodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NDM0IiwgImh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ0MzQiKQogCiBjb25zdGV4cHIgc2l6ZV90IGNvdW50TnVt
YmVyT2ZKU0NPcHRpb25zKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCmluZGV4IGI4NzE1YWE3MmJiY2I3MzM5ZDZlMzQxM2FjNTlj
NzQ0MTE3YjgyYTguLjk0OTc2MzEyMDVjYTBlNGQwYTI5NGUwNDVjZTc2YjcxYWQxMTQ0YWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUu
aApAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgIERFQ0xBUkVfSU5GTzsK
IAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhl
Y3V0YWJsZUluZm8odXNlc0V2YWwoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5v
bmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQs
IFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBOZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgZmFs
c2UsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRh
YmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGZhbHNl
LCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6
Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRl
ZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIE5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObywgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBm
YWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsgfQogCiAgICAgVGVtcGxhdGVPYmplY3RNYXAm
IGVuc3VyZVRlbXBsYXRlT2JqZWN0TWFwKFZNJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IGQzOGMzOWU0NDdkNjMxM2FhZjE4Y2UxMjE3ZDcy
MzNlN2Y2MGM4MWYuLjQ4ZGJhMjFlY2Q1NjdkZWZiNmIzYjE5YTVmZmNmMDFkNGZhY2Y5ZTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtMjcsNiAr
MjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogCisj
aW5jbHVkZSAiQnJhbmRlZFN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgog
I2luY2x1ZGUgIkR1bXBDb250ZXh0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgpAQCAtNDI0
LDcgKzQyNSw3IEBAIFByb3BlcnR5VGFibGUqIFN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0
eVRhYmxlKFZNJiB2bSwgYm9vbCBzZXRQcm9wZXJ0eVRhYmxlCiAKICAgICBmb3IgKHNpemVfdCBp
ID0gc3RydWN0dXJlcy5zaXplKCk7IGktLTspIHsKICAgICAgICAgc3RydWN0dXJlID0gc3RydWN0
dXJlc1tpXTsKLSAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblByb3BlcnR5TmFt
ZSkKKyAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblByb3BlcnR5TmFtZSB8fCBz
dHJ1Y3R1cmUtPnRyYW5zaXRpb25LaW5kKCkgPT0gVHJhbnNpdGlvbktpbmQ6OlNldEJyYW5kKQog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIHN3aXRjaCAoc3RydWN0dXJlLT50cmFuc2l0
aW9uS2luZCgpKSB7CiAgICAgICAgIGNhc2UgVHJhbnNpdGlvbktpbmQ6OlByb3BlcnR5QWRkaXRp
b246IHsKQEAgLTE0OTYsNCArMTQ5Nyw1MiBAQCBhdXRvIFN0cnVjdHVyZTo6ZmluZFByb3BlcnR5
SGFzaEVudHJ5KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0IC0+IE9wdGlvbgogICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKK1N0cnVjdHVyZSogU3RydWN0dXJlOjpzZXRCcmFu
ZFRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKFN0cnVjdHVyZSogc3RydWN0dXJl
LCBVbmlxdWVkU3RyaW5nSW1wbCogYnJhbmRJRCkKK3sKKyAgICBBU1NFUlQoc3RydWN0dXJlLT5p
c09iamVjdCgpKTsKKworICAgIGlmIChzdHJ1Y3R1cmUtPmhhc0JlZW5EaWN0aW9uYXJ5KCkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKFN0cnVjdHVyZSogZXhpc3RpbmdUcmFu
c2l0aW9uID0gc3RydWN0dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5nZXQoYnJhbmRJRCwgMCwgVHJh
bnNpdGlvbktpbmQ6OlNldEJyYW5kKSkKKyAgICAgICAgcmV0dXJuIGV4aXN0aW5nVHJhbnNpdGlv
bjsKKworICAgIHJldHVybiBudWxscHRyOworfQorCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6c2V0
QnJhbmRUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlQ29uY3VycmVudGx5KFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBVbmlxdWVkU3RyaW5nSW1wbCogYnJhbmRJRCkKK3sKKyAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKHN0cnVjdHVyZS0+bV9sb2NrKTsKKyAgICByZXR1cm4gc2V0QnJh
bmRUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlSW1wbChzdHJ1Y3R1cmUsIGJyYW5kSUQp
OworfQorCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6c2V0QnJhbmRUcmFuc2l0aW9uKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN5bWJvbCogYnJhbmQsIERlZmVycmVkU3RydWN0dXJlVHJh
bnNpdGlvbldhdGNocG9pbnRGaXJlKiBkZWZlcnJlZCkKK3sKKyAgICBTdHJ1Y3R1cmUqIGV4aXN0
aW5nVHJhbnNpdGlvbiA9IHNldEJyYW5kVHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUlt
cGwoc3RydWN0dXJlLCAmYnJhbmQtPnVpZCgpKTsKKyAgICBpZiAoZXhpc3RpbmdUcmFuc2l0aW9u
KSAKKyAgICAgICAgcmV0dXJuIGV4aXN0aW5nVHJhbnNpdGlvbjsKKworICAgIFN0cnVjdHVyZSog
dHJhbnNpdGlvbiA9IEJyYW5kZWRTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgc3RydWN0dXJlLCAmYnJh
bmQtPnVpZCgpLCBkZWZlcnJlZCk7CisgICAgdHJhbnNpdGlvbi0+c2V0VHJhbnNpdGlvbktpbmQo
VHJhbnNpdGlvbktpbmQ6OlNldEJyYW5kKTsKKworICAgIHRyYW5zaXRpb24tPm1fY2FjaGVkUHJv
dG90eXBlQ2hhaW4uc2V0TWF5QmVOdWxsKHZtLCB0cmFuc2l0aW9uLCBzdHJ1Y3R1cmUtPm1fY2Fj
aGVkUHJvdG90eXBlQ2hhaW4uZ2V0KCkpOworICAgIHRyYW5zaXRpb24tPm1fYmxvYi5zZXRJbmRl
eGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5KHN0cnVjdHVyZS0+aW5kZXhpbmdNb2RlSW5jbHVkaW5n
SGlzdG9yeSgpKTsKKyAgICB0cmFuc2l0aW9uLT5tX3RyYW5zaXRpb25Qcm9wZXJ0eU5hbWUgPSAm
YnJhbmQtPnVpZCgpOworICAgIHRyYW5zaXRpb24tPnNldFRyYW5zaXRpb25Qcm9wZXJ0eUF0dHJp
YnV0ZXMoMCk7CisgICAgdHJhbnNpdGlvbi0+c2V0UHJvcGVydHlUYWJsZSh2bSwgc3RydWN0dXJl
LT50YWtlUHJvcGVydHlUYWJsZU9yQ2xvbmVJZlBpbm5lZCh2bSkpOworICAgIHRyYW5zaXRpb24t
PnNldE1heE9mZnNldCh2bSwgc3RydWN0dXJlLT5tYXhPZmZzZXQoKSk7CisgICAgY2hlY2tPZmZz
ZXQodHJhbnNpdGlvbi0+bWF4T2Zmc2V0KCksIHRyYW5zaXRpb24tPmlubGluZUNhcGFjaXR5KCkp
OworCisgICAgaWYgKHN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpIHsKKyAgICAgICAgUHJvcGVy
dHlUYWJsZSogdGFibGUgPSB0cmFuc2l0aW9uLT5lbnN1cmVQcm9wZXJ0eVRhYmxlKHZtKTsKKyAg
ICAgICAgdHJhbnNpdGlvbi0+cGluKGhvbGRMb2NrKHRyYW5zaXRpb24tPm1fbG9jayksIHZtLCB0
YWJsZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhzdHJ1
Y3R1cmUtPm1fbG9jayk7CisgICAgICAgIHN0cnVjdHVyZS0+bV90cmFuc2l0aW9uVGFibGUuYWRk
KHZtLCB0cmFuc2l0aW9uKTsKKyAgICB9CisKKyAgICB0cmFuc2l0aW9uLT5jaGVja09mZnNldENv
bnNpc3RlbmN5KCk7CisgICAgcmV0dXJuIHRyYW5zaXRpb247Cit9CisKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAppbmRleCAzZTQ3
NTE0YzljZDYxYTk4NmEzMDBhMDk5NmRhMDlkNzc2ZGRmMjA2Li41MTA2OWQyYzk2N2VhZTAyNWFi
YTljMWQyNWI2MmQ0NmUxNDgyOWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuaApAQCAtMTIzLDcgKzEyMyw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgU3RydWN0
dXJlKiBtX3N0cnVjdHVyZTsKIH07CiAKLWNsYXNzIFN0cnVjdHVyZSBmaW5hbCA6IHB1YmxpYyBK
U0NlbGwgeworY2xhc3MgU3RydWN0dXJlIDogcHVibGljIEpTQ2VsbCB7CiAgICAgc3RhdGljIGNv
bnN0ZXhwciB1aW50MTZfdCBzaG9ydEludmFsaWRPZmZzZXQgPSBzdGQ6Om51bWVyaWNfbGltaXRz
PHVpbnQxNl90Pjo6bWF4KCkgLSAxOwogICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDE2X3QgdXNl
UmFyZURhdGFGbGFnID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MTZfdD46Om1heCgpOwogcHVi
bGljOgpAQCAtMTQ2LDEzICsxNDYsNyBAQCBwdWJsaWM6CiAKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgYm9vbCBpc1ZhbGlkUHJvdG90eXBlKEpTVmFsdWUpOwogCi1wcml2YXRlOgotICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtKQotICAgIHsKLSAgICAgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24odm0pOwotICAgICAgICBBU1NFUlQobV9wcm90b3R5cGUuZ2V0KCkuaXNFbXB0eSgp
IHx8IGlzVmFsaWRQcm90b3R5cGUobV9wcm90b3R5cGUuZ2V0KCkpKTsKLSAgICB9Ci0KK3Byb3Rl
Y3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSwgY29uc3QgU3RydWN0dXJlKiBw
cmV2aW91cykKICAgICB7CiAgICAgICAgIHRoaXMtPmZpbmlzaENyZWF0aW9uKHZtKTsKQEAgLTE2
NSw2ICsxNTksMTMgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KIAorcHJpdmF0ZToKKyAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSkKKyAgICB7CisgICAgICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtKTsKKyAgICAgICAgQVNTRVJUKG1fcHJvdG90eXBlLmdldCgpLmlzRW1wdHko
KSB8fCBpc1ZhbGlkUHJvdG90eXBlKG1fcHJvdG90eXBlLmdldCgpKSk7CisgICAgfQorCiAgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0sIENyZWF0aW5nRWFybHlDZWxsVGFnKQogICAgIHsK
ICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIHRoaXMsIENyZWF0aW5nRWFybHlDZWxs
KTsKQEAgLTIwNiw2ICsyMDcsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cnVjdHVyZSogcHJl
dmVudEV4dGVuc2lvbnNUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIFN0
cnVjdHVyZSogbm9uUHJvcGVydHlUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKiwgVHJhbnNpdGlv
bktpbmQpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIG5vblByb3Bl
cnR5VHJhbnNpdGlvblNsb3coVk0mLCBTdHJ1Y3R1cmUqLCBUcmFuc2l0aW9uS2luZCk7CisgICAg
c3RhdGljIFN0cnVjdHVyZSogc2V0QnJhbmRUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJl
Q29uY3VycmVudGx5KFN0cnVjdHVyZSosIFVuaXF1ZWRTdHJpbmdJbXBsKik7CisgICAgc3RhdGlj
IFN0cnVjdHVyZSogc2V0QnJhbmRUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKiwgU3ltYm9sKiBi
cmFuZCwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqID0gbnVsbHB0
cik7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzU2VhbGVkKFZNJik7CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgYm9vbCBpc0Zyb3plbihWTSYpOwpAQCAtNzE1LDIxICs3MTgsMjUgQEAg
cHVibGljOgogICAgIERFRklORV9CSVRGSUVMRChib29sLCBoYXNCZWVuRGljdGlvbmFyeSwgSGFz
QmVlbkRpY3Rpb25hcnksIDEsIDI3KTsKICAgICBERUZJTkVfQklURklFTEQoYm9vbCwgcHJvdGVj
dFByb3BlcnR5VGFibGVXaGlsZVRyYW5zaXRpb25pbmcsIFByb3RlY3RQcm9wZXJ0eVRhYmxlV2hp
bGVUcmFuc2l0aW9uaW5nLCAxLCAyOCk7CiAgICAgREVGSU5FX0JJVEZJRUxEKGJvb2wsIGhhc1Vu
ZGVyc2NvcmVQcm90b1Byb3BlcnR5RXhjbHVkaW5nT3JpZ2luYWxQcm90bywgSGFzVW5kZXJzY29y
ZVByb3RvUHJvcGVydHlFeGNsdWRpbmdPcmlnaW5hbFByb3RvLCAxLCAyOSk7CisgICAgREVGSU5F
X0JJVEZJRUxEKGJvb2wsIGlzQnJhbmRlZFN0cnVjdHVyZSwgSXNCcmFuZGVkU3RydWN0dXJlLCAx
LCAzMCk7CiAKICAgICBzdGF0aWNfYXNzZXJ0KHNfYml0V2lkdGhPZlRyYW5zaXRpb25Qcm9wZXJ0
eUF0dHJpYnV0ZXMgPD0gc2l6ZW9mKFRyYW5zaXRpb25Qcm9wZXJ0eUF0dHJpYnV0ZXMpICogOCk7
CiAgICAgc3RhdGljX2Fzc2VydChzX2JpdFdpZHRoT2ZUcmFuc2l0aW9uS2luZCA8PSBzaXplb2Yo
VHJhbnNpdGlvbktpbmQpICogOCk7CiAKK3Byb3RlY3RlZDoKKyAgICBTdHJ1Y3R1cmUoVk0mLCBT
dHJ1Y3R1cmUqLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSopOwor
CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFs
dWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNvbnN0IENsYXNzSW5mbyosIEluZGV4aW5n
VHlwZSwgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkpOwogICAgIFN0cnVjdHVyZShWTSYpOwotICAg
IFN0cnVjdHVyZShWTSYsIFN0cnVjdHVyZSosIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldh
dGNocG9pbnRGaXJlKik7CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGUoVk0mLCBTdHJ1
Y3R1cmUqLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogPSBudWxs
cHRyKTsKICAgICAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25U
b0V4aXN0aW5nU3RydWN0dXJlSW1wbChTdHJ1Y3R1cmUqLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlk
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYpOwogICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUltcGwo
U3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9m
ZnNldCYpOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHNldEJyYW5kVHJhbnNpdGlvbkZyb21FeGlz
dGluZ1N0cnVjdHVyZUltcGwoU3RydWN0dXJlKiwgVW5pcXVlZFN0cmluZ0ltcGwqKTsKIAogICAg
IC8vIFRoaXMgd2lsbCByZXR1cm4gdGhlIHN0cnVjdHVyZSB0aGF0IGhhcyBhIHVzYWJsZSBwcm9w
ZXJ0eSB0YWJsZSwgdGhhdCBwcm9wZXJ0eSB0YWJsZSwKICAgICAvLyBhbmQgdGhlIGxpc3Qgb2Yg
c3RydWN0dXJlcyB0aGF0IHdlIHZpc2l0ZWQgYmVmb3JlIHdlIGdvdCB0byBpdC4gSWYgaXQgcmV0
dXJucyBhCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxp
bmVzLmgKaW5kZXggMzZhZWJjYTBhM2IyODI1NzZmMDNjOTllYzJlNWQ1ZDk5NTA2Y2U0My4uMjky
M2RlODk0OGJlZTA2ZTk0MTQ0ZDA5YjhmMDkyMTM5Mzg0M2ZkOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaApAQCAtMjUsNiArMjUsNyBA
QAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkJyYW5kZWRTdHJ1Y3R1cmUuaCIKICNpbmNs
dWRlICJKU0FycmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKQEAgLTYxLDcgKzYyLDEyIEBAIGlubGluZSBT
dHJ1Y3R1cmUqIFN0cnVjdHVyZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSkKIGlubGluZSBTdHJ1
Y3R1cmUqIFN0cnVjdHVyZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBwcmV2aW91cywgRGVm
ZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqIGRlZmVycmVkKQogewogICAg
IEFTU0VSVCh2bS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUpOwotICAgIFN0cnVjdHVyZSogbmV3U3RydWN0
dXJlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3RydWN0dXJlPih2bS5oZWFwKSkgU3Ry
dWN0dXJlKHZtLCBwcmV2aW91cywgZGVmZXJyZWQpOworICAgIFN0cnVjdHVyZSogbmV3U3RydWN0
dXJlOworICAgIGlmIChwcmV2aW91cy0+aXNCcmFuZGVkU3RydWN0dXJlKCkpCisgICAgICAgIG5l
d1N0cnVjdHVyZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEJyYW5kZWRTdHJ1Y3R1cmU+
KHZtLmhlYXApKSBCcmFuZGVkU3RydWN0dXJlKHZtLCBqc0Nhc3Q8QnJhbmRlZFN0cnVjdHVyZSo+
KHByZXZpb3VzKSwgZGVmZXJyZWQpOworICAgIGVsc2UKKyAgICAgICAgbmV3U3RydWN0dXJlID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3RydWN0dXJlPih2bS5oZWFwKSkgU3RydWN0dXJl
KHZtLCBwcmV2aW91cywgZGVmZXJyZWQpOworCiAgICAgbmV3U3RydWN0dXJlLT5maW5pc2hDcmVh
dGlvbih2bSwgcHJldmlvdXMpOwogICAgIHJldHVybiBuZXdTdHJ1Y3R1cmU7CiB9CkBAIC0xODEs
NiArMTg3LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6OmZvckVhY2hQcm9wZXJ0eUNvbmN1cnJlbnRseShj
b25zdCBGdW5jdG9yJiBmdW5jdG9yKQogICAgICAgICBjYXNlIFRyYW5zaXRpb25LaW5kOjpQcm9w
ZXJ0eUF0dHJpYnV0ZUNoYW5nZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRy
YW5zaXRpb25LaW5kOjpQcm9wZXJ0eURlbGV0aW9uOgorICAgICAgICBjYXNlIFRyYW5zaXRpb25L
aW5kOjpTZXRCcmFuZDoKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oCmluZGV4IDYz
Y2Y4ZTAyMTIyMTE0NWVjMWM5ZTNmNjQzNTBlNGEzN2FlMzk3YzYuLjgwNjJjMmM3ODdjM2Y1YThi
ZDZiMmJhYzdlMzg4YTJjNjNiNDZmYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oCkBAIC01NSw3ICs1NSwx
MCBAQCBlbnVtIGNsYXNzIFRyYW5zaXRpb25LaW5kIDogdWludDhfdCB7CiAgICAgQWRkSW5kZXhl
ZEFjY2Vzc29ycywKICAgICBQcmV2ZW50RXh0ZW5zaW9ucywKICAgICBTZWFsLAotICAgIEZyZWV6
ZQorICAgIEZyZWV6ZSwKKworICAgIC8vIFN1cHBvcnQgZm9yIHRyYW5zaXRpb25zIHJlbGF0ZWQg
d2l0aCBwcml2YXRlIGJyYW5kCisgICAgU2V0QnJhbmQKIH07CiAKIHN0YXRpYyBjb25zdGV4cHIg
YXV0byBGaXJzdE5vblByb3BlcnR5VHJhbnNpdGlvbktpbmQgPSBUcmFuc2l0aW9uS2luZDo6QWxs
b2NhdGVVbmRlY2lkZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TeW1ib2xUYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xU
YWJsZS5jcHAKaW5kZXggMTY0Y2E2ZDQzMTBlNmJiMzhlNjQ3ZTJmNmJlMmY5ZjdkOWYzMjY1Yy4u
ZmI0NjAwMWJhZWQyZjljMWM4N2U1NzIyZTI2MTViNDE0NWQxODcwMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcApAQCAtMTg0LDcgKzE4NCw3IEBA
IFN5bWJvbFRhYmxlKiBTeW1ib2xUYWJsZTo6Y2xvbmVTY29wZVBhcnQoVk0mIHZtKQogCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGZvciAoYXV0byBuYW1lIDogbV9yYXJlRGF0YS0+bV9wcml2YXRl
TmFtZXMpCi0gICAgICAgICAgICAgICAgcmVzdWx0LT5tX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1l
cy5hZGQobmFtZSk7CisgICAgICAgICAgICAgICAgcmVzdWx0LT5tX3JhcmVEYXRhLT5tX3ByaXZh
dGVOYW1lcy5hZGQobmFtZS5rZXksIG5hbWUudmFsdWUpOwogICAgICAgICB9CiAgICAgfQogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKaW5kZXggNTlh
NzIzMDVkM2E3MDQyMGFiYjFhZjRlZmJlNjdmZDZjY2RmZGVhMC4uYTUzODFjY2JlZTFjYjdjM2Jj
Y2Q2NWVhN2UwODE2ZWI0M2E1OTU2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3ltYm9sVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TeW1ib2xUYWJsZS5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiU2NvcGVkQXJndW1l
bnRzVGFibGUuaCIKICNpbmNsdWRlICJUeXBlTG9jYXRpb24uaCIKICNpbmNsdWRlICJWYXJPZmZz
ZXQuaCIKKyNpbmNsdWRlICJWYXJpYWJsZUVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiV2F0Y2hw
b2ludC5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgpA
QCAtNDUwLDggKzQ1MSw3IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVu
aXF1ZWRTdHJpbmdJbXBsPiwgUmVmUHRyPFR5cGVTZXQ+LCBJZGVudGlmaWVyUmVwSGFzaD4gVW5p
cXVlVHlwZVNldE1hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8VmFyT2Zmc2V0LCBSZWZQdHI8VW5p
cXVlZFN0cmluZ0ltcGw+PiBPZmZzZXRUb1ZhcmlhYmxlTWFwOwogICAgIHR5cGVkZWYgVmVjdG9y
PFN5bWJvbFRhYmxlRW50cnkqPiBMb2NhbFRvRW50cnlWZWM7Ci0gICAgdHlwZWRlZiBIYXNoU2V0
PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPiBQcml2YXRlTmFt
ZVNldDsKLSAgICB0eXBlZGVmIFdURjo6SXRlcmF0b3JSYW5nZTx0eXBlbmFtZSBQcml2YXRlTmFt
ZVNldDo6aXRlcmF0b3I+IFByaXZhdGVOYW1lSXRlcmF0b3JSYW5nZTsKKyAgICB0eXBlZGVmIFdU
Rjo6SXRlcmF0b3JSYW5nZTx0eXBlbmFtZSBQcml2YXRlTmFtZUVudmlyb25tZW50OjppdGVyYXRv
cj4gUHJpdmF0ZU5hbWVJdGVyYXRvclJhbmdlOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2Vs
bFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQpAQCAtNjA1LDE0ICs2MDUsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
bWFrZUl0ZXJhdG9yUmFuZ2UobV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYmVnaW4oKSwgbV9y
YXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZW5kKCkpOwogICAgIH0KIAotICAgIHZvaWQgYWRkUHJp
dmF0ZU5hbWUoVW5pcXVlZFN0cmluZ0ltcGwqIGtleSkKKyAgICB2b2lkIGFkZFByaXZhdGVOYW1l
KGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGtleSwgUHJpdmF0ZU5hbWVFbnRyeSB2
YWx1ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChrZXkgJiYgIWtleS0+aXNTeW1ib2woKSk7CiAg
ICAgICAgIGlmICghbV9yYXJlRGF0YSkKICAgICAgICAgICAgIG1fcmFyZURhdGEgPSBXVEY6Om1h
a2VVbmlxdWU8U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKIAotICAgICAgICBBU1NFUlQoIW1fcmFy
ZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmNvbnRhaW5zKGtleSkpOwotICAgICAgICBtX3JhcmVEYXRh
LT5tX3ByaXZhdGVOYW1lcy5hZGQoa2V5KTsKKyAgICAgICAgQVNTRVJUKG1fcmFyZURhdGEtPm1f
cHJpdmF0ZU5hbWVzLmZpbmQoa2V5KSA9PSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5lbmQo
KSk7CisgICAgICAgIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChrZXksIHZhbHVlKTsK
ICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbnRyeT4KQEAgLTc1Niw3ICs3NTYsNyBA
QCBwdWJsaWM6CiAgICAgICAgIE9mZnNldFRvVmFyaWFibGVNYXAgbV9vZmZzZXRUb1ZhcmlhYmxl
TWFwOwogICAgICAgICBVbmlxdWVUeXBlU2V0TWFwIG1fdW5pcXVlVHlwZVNldE1hcDsKICAgICAg
ICAgV3JpdGVCYXJyaWVyPENvZGVCbG9jaz4gbV9jb2RlQmxvY2s7Ci0gICAgICAgIFByaXZhdGVO
YW1lU2V0IG1fcHJpdmF0ZU5hbWVzOworICAgICAgICBQcml2YXRlTmFtZUVudmlyb25tZW50IG1f
cHJpdmF0ZU5hbWVzOwogICAgIH07CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAKaW5kZXggZTcxYTNjZWQ1ZjE4NzRlNDlhNWRkMjA5MDlkZjZmODIwODBiZjRhZC4u
YjhiZTQyMGEyNzE5OTY2N2Y2OTBlNDljYzQ3ZmY5NTE2ZGYwYjljMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMzY5LDYgKzM2OSw3IEBAIFZNOjpWTShWTVR5cGUgdm1U
eXBlLCBIZWFwVHlwZSBoZWFwVHlwZSwgV1RGOjpSdW5Mb29wKiBydW5Mb29wLCBib29sKiBzdWNj
ZXNzKQogICAgICwgc3RydWN0dXJlQ2hhaW5TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBj
ZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTdHJ1Y3R1cmVDaGFpbikKICAgICAsIHN0cnVjdHVyZVJh
cmVEYXRhU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBD
ZWxsVHlwZS5nZXQoKSwgU3RydWN0dXJlUmFyZURhdGEpIC8vIEhhc2g6MHhhY2E0ZTYyZAogICAg
ICwgc3RydWN0dXJlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2Vs
bEhlYXBDZWxsVHlwZS5nZXQoKSwgU3RydWN0dXJlKSAvLyBIYXNoOjB4MWYxYmNkY2EKKyAgICAs
IGJyYW5kZWRTdHJ1Y3R1cmVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGli
bGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBCcmFuZGVkU3RydWN0dXJlKQogICAgICwgc3ltYm9s
VGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBTeW1ib2xUYWJsZSkgLy8gSGFzaDoweGM1MjE1YWZkCiAgICAgLCBleGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cyhleGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlU3BhY2UpCiAgICAgLCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6
ZXJzKGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCmluZGV4IDcwYWUzNjUyMzZjN2YxNjhkNmM5YTQ1NzU0N2JiZjNhMDU5MDYzY2YuLjVl
ZjVmOTI4OGEyMWU4NjdkZGNhZWZlOTE4ZDYzOTY0ZmUxYjFmYmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaApAQCAtNDY1LDYgKzQ2NSw3IEBAIHB1YmxpYzoKICAgICBJc29TdWJzcGFj
ZSBzdHJ1Y3R1cmVDaGFpblNwYWNlOwogICAgIElzb1N1YnNwYWNlIHN0cnVjdHVyZVJhcmVEYXRh
U3BhY2U7CiAgICAgSXNvU3Vic3BhY2Ugc3RydWN0dXJlU3BhY2U7CisgICAgSXNvU3Vic3BhY2Ug
YnJhbmRlZFN0cnVjdHVyZVNwYWNlOwogICAgIElzb1N1YnNwYWNlIHN5bWJvbFRhYmxlU3BhY2U7
CiAKICNkZWZpbmUgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihuYW1lKSBcCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDZk
MzVkZTRhZDQ5YmRlMjExNGM3Zjc1OGQyYzkxOWRhMGJkMTg1NDkuLjYzNzFiNmIyYTE3NGY1YzYy
MmI3MTA5MWU1ZGRlY2QzYWJhZWMyMTIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMjEtMDEtMjkgIENhaW8g
TGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgorCisgICAgICAgIFtFU05leHRdIEltcGxlbWVu
dCBwcml2YXRlIG1ldGhvZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5NDQzNAorCisgICAgICAgIFJldmlld2VkIGJ5IEZpbGlwIFBpemxvLgorCisg
ICAgICAgICogc3RyZXNzL3ByaXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVyLWNhbGwt
ZnJvbS1hcnJvdy1mdW5jdGlvbi5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUt
YnJhbmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVyLWNhbGwtZnJvbS1ldmFsLmpzOiBBZGRlZC4KKyAg
ICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2QtYnJhbmQtY2hlY2suanM6IEFkZGVkLgorICAg
ICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZC1jaGFuZ2UtYXR0cmlidXRlLWZyb20tYnJhbmRl
ZC1zdHJ1Y3R1cmUuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZC1j
aGFuZ2UtcHJvdG90eXBlLWZyb20tYnJhbmRlZC1zdHJ1Y3R1cmUuanM6IEFkZGVkLgorICAgICAg
ICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZC1jaGVjay1wcml2YXRlLWJyYW5kLWljLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2QtY2hlY2stc3RydWN0dXJlLW1pc3Mu
anM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZC1jb21wYXJpc29uLmpz
OiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2QtZGVsZXRlLXByb3BlcnR5
LWZyb20tYnJhbmRlZC1zdHJ1Y3R1cmUuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2
YXRlLW1ldGhvZC1leHRlbmRzLWJyYW5kLWNoZWNrLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJl
c3MvcHJpdmF0ZS1tZXRob2QtZ2V0LWFuZC1jYWxsLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJl
c3MvcHJpdmF0ZS1tZXRob2QtaW52YWxpZC1tdWx0aXBsZS1icmFuZC1pbnN0YWxsYXRpb24uanM6
IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZC1pbnZhbGlkYXRlLWNvbXBp
bGVkLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHJp
dmF0ZS1tZXRob2QtbmVzdGVkLWNsYXNzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHJp
dmF0ZS1tZXRob2Qtb24tc2VhbGVkLW9iamVjdHMuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVz
cy9wcml2YXRlLW1ldGhvZC1vbi11bmNhY2hlYWJsZS1kaWN0aW9uYXJ5LmpzOiBBZGRlZC4KKyAg
ICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2QtcG9seW1vcnBoaWMtd2l0aC1jb25zdGFudC1z
eW1ib2wuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZC1zZXQtYnJh
bmQtc2hvdWxkLWhhdmUtd3JpdGUtYmFycmllci5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNz
L3ByaXZhdGUtbWV0aG9kLXVudHlwZWQtdXNlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3Mv
cHJpdmF0ZS1tZXRob2Qtd2l0aC11bmNhY2hlYWJsZS1kaWN0aW9uYXJ5LXRyYW5zaXRpb24uanM6
IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZHMtaW5saW5lLWNhY2hlLmpz
OiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2RzLW1lZ2Ftb3JwaGljLWlj
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2RzLW9uLXByb3h5Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZXRob2RzLXBvbHktaWMtbXVsdGlw
bGUtY2xhc3Nlcy5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1w
b2x5LWljLXNpbmdsZS1jbGFzcy5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUt
bmFtZXMtYXZhaWxhYmxlLW9uLWRpcmVjdC1ldmFsLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0
MjYyL2NvbmZpZy55YW1sOgorCiAyMDIxLTAyLTA2ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2Fs
ZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjY0NTc0KTogVW5jaGVja2Vk
IEpTIGV4Y2VwdGlvbiBpbiB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9yKCkKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVyLXN1
cGVyLWNhbGwtZnJvbS1hcnJvdy1mdW5jdGlvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUt
YnJhbmQtaW5zdGFsbGVkLWFmdGVyLXN1cGVyLWNhbGwtZnJvbS1hcnJvdy1mdW5jdGlvbi5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43ZTI5YzdiYzExYzM2MzQzOTE1YmQyMDJlODAyMjM3YTg4MDQxZTRmCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1icmFuZC1pbnN0YWxsZWQtYWZ0
ZXItc3VwZXItY2FsbC1mcm9tLWFycm93LWZ1bmN0aW9uLmpzCkBAIC0wLDAgKzEsMjcgQEAKKy8v
QCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworZnVuY3Rpb24g
YXNzZXJ0KGEsIGUpIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKK30KKworY2xhc3MgQSB7fQor
CitjbGFzcyBDIGV4dGVuZHMgQSB7CisgICAgI21ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuICJi
YXNlIjsKKyAgICB9CisKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgbGV0IGluaXQgPSAo
KSA9PiBzdXBlcigpOworICAgICAgICBpbml0KCk7CisgICAgfQorCisgICAgYmFzZUFjY2Vzcygp
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI21ldGhvZCgpOworICAgIH0KK30KKworbGV0IGMgPSBu
ZXcgQygpOworYXNzZXJ0KGMuYmFzZUFjY2VzcygpLCAiYmFzZSIpOworCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9wcml2YXRlLWJyYW5kLWluc3RhbGxlZC1hZnRlci1zdXBlci1jYWxsLWZy
b20tZXZhbC5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYnJhbmQtaW5zdGFsbGVkLWFmdGVy
LXN1cGVyLWNhbGwtZnJvbS1ldmFsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllMTZlZTM4ZTM0MWNjYzE2MTA1
NGRiMTcyYjVlMjIxZmI2ODZjODIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9w
cml2YXRlLWJyYW5kLWluc3RhbGxlZC1hZnRlci1zdXBlci1jYWxsLWZyb20tZXZhbC5qcwpAQCAt
MCwwICsxLDI2IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1
ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBlKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7Cit9
CisKK2NsYXNzIEEge30KKworY2xhc3MgQyBleHRlbmRzIEEgeworICAgICNtZXRob2QoKSB7Cisg
ICAgICAgIHJldHVybiAiYmFzZSI7CisgICAgfQorCisgICAgY29uc3RydWN0b3IoKSB7CisgICAg
ICAgIGV2YWwoInN1cGVyKCkiKTsKKyAgICB9CisKKyAgICBiYXNlQWNjZXNzKCkgeworICAgICAg
ICByZXR1cm4gdGhpcy4jbWV0aG9kKCk7CisgICAgfQorfQorCitsZXQgYyA9IG5ldyBDKCk7Cith
c3NlcnQoYy5iYXNlQWNjZXNzKCksICJiYXNlIik7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL3ByaXZhdGUtbWV0aG9kLWJyYW5kLWNoZWNrLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0
ZS1tZXRob2QtYnJhbmQtY2hlY2suanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmE1MTc1YTNmNWJjYWY5YjI0MGIx
OTYwMGE3YjdiZGQxZWIwNWU0OQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3By
aXZhdGUtbWV0aG9kLWJyYW5kLWNoZWNrLmpzCkBAIC0wLDAgKzEsMzMgQEAKKy8vQCByZXF1aXJl
T3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGEs
IGUpIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKK30KKworY2xhc3MgQyB7CisgICAgI20oKSB7
CisgICAgICAgIHJldHVybiB0aGlzLiNmOworICAgIH0KKworICAgIG1ldGhvZCgpIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuI20oKTsKKyAgICB9CisKKyAgICAjZiA9IDQ7Cit9CisKK2xldCBjID0g
bmV3IEMoKTsKK2Fzc2VydChjLm1ldGhvZCgpLCA0KTsKKwordHJ5IHsKKyAgICBjbGFzcyBDIHsK
KyAgICAgICAgI20oKSB7IHJldHVybiAzOyB9CisgICAgfQorCisgICAgbGV0IG8gPSBuZXcgQygp
OworICAgIGMubWV0aG9kLmNhbGwobyk7Cit9IGNhdGNoIChlKSB7CisgICAgYXNzZXJ0KGUgaW5z
dGFuY2VvZiBUeXBlRXJyb3IsIHRydWUpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9wcml2YXRlLW1ldGhvZC1jaGFuZ2UtYXR0cmlidXRlLWZyb20tYnJhbmRlZC1zdHJ1Y3R1cmUu
anMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1jaGFuZ2UtYXR0cmlidXRlLWZyb20t
YnJhbmRlZC1zdHJ1Y3R1cmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc5MGM0MDM1OWM5OWUwYzc2ZTY3NzE1
NWQyM2QxNzFjYTM2NDRkMgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZh
dGUtbWV0aG9kLWNoYW5nZS1hdHRyaWJ1dGUtZnJvbS1icmFuZGVkLXN0cnVjdHVyZS5qcwpAQCAt
MCwwICsxLDUwIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1
ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYWN0dWFsLCBl
eHBlY3RlZCkgeworICAgICAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBleHBlY3RlZCArICIgYnV0IGdvdDogIiAr
IGFjdHVhbCk7CisgICAgfSwKKworICAgIHRocm93czogZnVuY3Rpb24gKGV4cGVjdGVkRXJyb3Is
IG9wKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgb3AoKTsKKyAgICAgICAgfSBjYXRjaChl
KSB7CisgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgZXhwZWN0ZWRFcnJvcikpCisgICAg
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4cGVj
dGVkRXJyb3IgKyAiIGJ1dCB0aHJldzogIiArIGUpOworICAgICAgICB9CisgICAgfQorfTsKKwor
Y2xhc3MgQyB7CisgICAgI20oKSB7IHJldHVybiAndGVzdCc7IH0KKworICAgIGFjY2VzcygpIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMuI20oKTsKKyAgICB9Cit9CisKK2xldCBjMSA9IG5ldyBDKCk7
CitjMS5mb28gPSAndGVzdCc7Cithc3NlcnQuc2FtZVZhbHVlKGMxLmFjY2VzcygpLCAndGVzdCcp
OworYXNzZXJ0LnNhbWVWYWx1ZShjMS5mb28sICd0ZXN0Jyk7Cithc3NlcnQudGhyb3dzKFR5cGVF
cnJvciwgZnVuY3Rpb24gKCkgeworICAgIGMxLmFjY2Vzcy5jYWxsKHt9KTsKK30pOworCitPYmpl
Y3QuZGVmaW5lUHJvcGVydHkoYzEsICdmb28nLCB7CisgICAgd3JpdGFibGU6IGZhbHNlLAorICAg
IGVudW1lcmFibGU6IGZhbHNlCit9KTsKKworYXNzZXJ0LnNhbWVWYWx1ZShjMS5hY2Nlc3MoKSwg
J3Rlc3QnKTsKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgYzEu
YWNjZXNzLmNhbGwoe30pOworfSk7CisKK2xldCBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihjMSwgJ2ZvbycpOworCithc3NlcnQuc2FtZVZhbHVlKGRlc2NyaXB0
b3IudmFsdWUsICd0ZXN0Jyk7Cithc3NlcnQuc2FtZVZhbHVlKGRlc2NyaXB0b3IuZW51bWVyYWJs
ZSwgZmFsc2UpOworYXNzZXJ0LnNhbWVWYWx1ZShkZXNjcmlwdG9yLndyaXRhYmxlLCBmYWxzZSk7
CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWNoYW5nZS1wcm90
b3R5cGUtZnJvbS1icmFuZGVkLXN0cnVjdHVyZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUt
bWV0aG9kLWNoYW5nZS1wcm90b3R5cGUtZnJvbS1icmFuZGVkLXN0cnVjdHVyZS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lZGIxZjY2OWNhMDJmZDc2NGVlMWZhNDNmNTZmNzA5ZmE1MzZkMzNmCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtY2hhbmdlLXByb3RvdHlwZS1m
cm9tLWJyYW5kZWQtc3RydWN0dXJlLmpzCkBAIC0wLDAgKzEsNDAgQEAKKy8vQCByZXF1aXJlT3B0
aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBz
YW1lVmFsdWU6IGZ1bmN0aW9uIChsaHMsIHJocykgeworICAgICAgICBpZiAobGhzICE9PSByaHMp
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgbGhzICsgIiBidWcg
Z290OiAiICsgcmhzKTsKKyAgICB9LAorCisgICAgdGhyb3dzOiBmdW5jdGlvbiAoZXhwZWN0ZWRF
cnJvciwgb3ApIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICBvcCgpOworICAgICAgICB9IGNh
dGNoKGUpIHsKKyAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEVycm9yKSkK
KyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsg
ZXhwZWN0ZWRFcnJvciArICIgYnV0IHRocmV3OiAiICsgZSk7CisgICAgICAgIH0KKyAgICB9Cit9
OworCitjbGFzcyBDIHsKKyAgICAjbSgpIHsgcmV0dXJuICd0ZXN0JzsgfQorCisgICAgYWNjZXNz
KCkgeworICAgICAgICByZXR1cm4gdGhpcy4jbSgpOworICAgIH0KK30KKworbGV0IGMxID0gbmV3
IEMoKTsKK2Fzc2VydC5zYW1lVmFsdWUoYzEuYWNjZXNzKCksICd0ZXN0Jyk7Cithc3NlcnQudGhy
b3dzKFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgIGMxLmFjY2Vzcy5jYWxsKHt9KTsKK30p
OworCitPYmplY3Quc2V0UHJvdG90eXBlT2YoYzEsIG51bGwpOworCithc3NlcnQuc2FtZVZhbHVl
KGMxLmFjY2VzcywgdW5kZWZpbmVkKTsKK2Fzc2VydC5zYW1lVmFsdWUoQy5wcm90b3R5cGUuYWNj
ZXNzLmNhbGwoYzEpLCAndGVzdCcpOworYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9u
ICgpIHsKKyAgICBjMS5hY2Nlc3MuY2FsbCh7fSk7Cit9KTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtY2hlY2stcHJpdmF0ZS1icmFuZC1pYy5qcyBiL0pTVGVz
dHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWNoZWNrLXByaXZhdGUtYnJhbmQtaWMuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODdkMzJlNjQzMjI3YzE5MDE4YzQwYjcxZWQ5NzgyZTFlOTZmMzIyYwotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWNoZWNrLXByaXZhdGUtYnJh
bmQtaWMuanMKQEAgLTAsMCArMSw0MCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZh
dGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rp
b24gKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICAgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQp
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgYWN0dWFsICsgIiBi
dWcgZ290OiAiICsgZXhwZWN0ZWQpOworICAgIH0sCisgICAgdGhyb3dzOiBmdW5jdGlvbiAoZXhw
ZWN0ZWRFcnJvciwgb3ApIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICBvcCgpOworICAgICAg
ICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEVy
cm9yKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93
OiAiICsgZXhwZWN0ZWRFcnJvciArICIgYnV0IHRocmV3OiAiICsgZSk7CisgICAgICAgIH0KKyAg
ICB9Cit9OworCitmdW5jdGlvbiBjbGFzc0ZhY3RvcnkoKSB7CisgICAgcmV0dXJuIGNsYXNzIHsK
KyAgICAgICAgI21ldGhvZCgpIHsKKyAgICAgICAgICAgIHJldHVybiAndGVzdCc7CisgICAgICAg
IH0KKworICAgICAgICBhY2Nlc3MoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy4jbWV0aG9k
KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2xldCBDMSA9IGNsYXNzRmFjdG9yeSgpOworbGV0
IEMyID0gY2xhc3NGYWN0b3J5KCk7CisKK2xldCBjMSA9IG5ldyBDMSgpOworbGV0IGMyID0gbmV3
IEMyKCk7CisKK2Fzc2VydC5zYW1lVmFsdWUoYzEuYWNjZXNzKCksICd0ZXN0Jyk7Cithc3NlcnQu
dGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgIGMyLmFjY2Vzcy5jYWxsKGMxKQor
fSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWNoZWNrLXN0
cnVjdHVyZS1taXNzLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtY2hlY2stc3Ry
dWN0dXJlLW1pc3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTgwZDdmN2VlZTcwNGVmMGNiOGQ5MDk4MDAzNTEw
MTFhZjMzMDMxYwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0
aG9kLWNoZWNrLXN0cnVjdHVyZS1taXNzLmpzCkBAIC0wLDAgKzEsNTEgQEAKKy8vQCByZXF1aXJl
T3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAg
ICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEp
OworICAgIH0sCisgICAgc2hvdWxkVGhyb3c6IGZ1bmN0aW9uKGV4Y2VwdGlvbiwgZnVuY3Rvcikg
eworICAgICAgICBsZXQgdGhyZXdFeGNlcHRpb247CisgICAgICAgIHRyeSB7CisgICAgICAgICAg
ICBmdW5jdG9yKCk7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IGZhbHNlOworICAgICAg
ICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAg
ICAgICAgIGlmICghZSBpbnN0YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1
dCBpdCB0aHJvd3M6ICIgKyBlLm5hbWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aHJl
d0V4Y2VwdGlvbikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhy
b3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9u
Iik7CisgICAgfQorfQorCitsZXQgaSA9IDA7CisKK2NsYXNzIEMgeworICAgIGNvbnN0cnVjdG9y
KCkgeworICAgICAgICBpZiAoaSA+PSA1MDAwKQorICAgICAgICAgICAgdGhpcy5wcm9wZXJ0eSA9
IGk7CisgICAgfQorCisgICAgI21ldGhvZCh2KSB7CisgICAgICAgIHRoaXMuZmllbGQgPSB2Owor
ICAgIH0KKworICAgIGFjY2Vzcyh2KSB7CisgICAgICAgIHRoaXMuI21ldGhvZCh2KTsKKyAgICB9
Cit9Citub0lubGluZShDLnByb3RvdHlwZS5hY2Nlc3MpOworCitsZXQgYyA9IG5ldyBDKCk7Citm
b3IgKDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBjLmFjY2VzcygnZm9vJyArIGkpOworICAgIGFz
c2VydC5zYW1lVmFsdWUoYy5maWVsZCwgJ2ZvbycgKyBpKTsKK30KKworYXNzZXJ0LnNob3VsZFRo
cm93KFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgYy5hY2Nlc3MuY2FsbCh7fSwgJ3Rlc3Qn
KTsKK30pOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1jb21w
YXJpc29uLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtY29tcGFyaXNvbi5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40NmRhNzg2N2JhNDhlYjc3YTFiNDAxNGNmNGVmNjQxNmQxMjRhN2Q2Ci0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtY29tcGFyaXNvbi5q
cwpAQCAtMCwwICsxLDMxIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhv
ZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAobGhz
LCByaHMpIHsKKyAgICAgICAgaWYgKGxocyAhPT0gcmhzKQorICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJFeHBlY3RlZDogIiArIGxocyArICIgYnVnIGdvdDogIiArIHJocyk7CisgICAgfSwK
KworICAgIHRocm93czogZnVuY3Rpb24gKGV4cGVjdGVkRXJyb3IsIG9wKSB7CisgICAgICAgIHRy
eSB7CisgICAgICAgICAgb3AoKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBp
ZiAoIShlIGluc3RhbmNlb2YgZXhwZWN0ZWRFcnJvcikpCisgICAgICAgICAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4cGVjdGVkRXJyb3IgKyAiIGJ1dCB0
aHJldzogIiArIGUpOworICAgICAgICB9CisgICAgfQorfTsKKworY2xhc3MgQyB7CisgICAgI20o
KSB7IHJldHVybiAndGVzdDI2Mic7IH0KKworICAgIGdldFByaXZhdGVNZXRob2QoKSB7CisgICAg
ICAgIHJldHVybiB0aGlzLiNtOworICAgIH0KK30KKworbGV0IGMxID0gbmV3IEMoKTsKK2xldCBj
MiA9IG5ldyBDKCk7CisKK2Fzc2VydC5zYW1lVmFsdWUoYzEuZ2V0UHJpdmF0ZU1ldGhvZCgpLCBj
Mi5nZXRQcml2YXRlTWV0aG9kKCkpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2
YXRlLW1ldGhvZC1kZWxldGUtcHJvcGVydHktZnJvbS1icmFuZGVkLXN0cnVjdHVyZS5qcyBiL0pT
VGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWRlbGV0ZS1wcm9wZXJ0eS1mcm9tLWJyYW5kZWQt
c3RydWN0dXJlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlZmFlNWYyMWNjZDgyNjJjMWFlZWM3ZjY1ZGJlN2I5
NmRmOTAyN2UKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhv
ZC1kZWxldGUtcHJvcGVydHktZnJvbS1icmFuZGVkLXN0cnVjdHVyZS5qcwpAQCAtMCwwICsxLDQy
IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xl
dCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAobGhzLCByaHMpIHsKKyAgICAg
ICAgaWYgKGxocyAhPT0gcmhzKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZDogIiArIGxocyArICIgYnVnIGdvdDogIiArIHJocyk7CisgICAgfSwKKworICAgIHRocm93czog
ZnVuY3Rpb24gKGV4cGVjdGVkRXJyb3IsIG9wKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAg
b3AoKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNl
b2YgZXhwZWN0ZWRFcnJvcikpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBl
Y3RlZCB0byB0aHJvdzogIiArIGV4cGVjdGVkRXJyb3IgKyAiIGJ1dCB0aHJldzogIiArIGUpOwor
ICAgICAgICB9CisgICAgfQorfTsKKworY2xhc3MgQyB7CisgICAgI20oKSB7IHJldHVybiAndGVz
dCc7IH0KKworICAgIGFjY2VzcygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI20oKTsKKyAgICB9
Cit9CisKK2xldCBjMSA9IG5ldyBDKCk7CitjMS5mb28gPSAndGVzdCc7Cithc3NlcnQuc2FtZVZh
bHVlKGMxLmFjY2VzcygpLCAndGVzdCcpOworYXNzZXJ0LnNhbWVWYWx1ZShjMS5mb28sICd0ZXN0
Jyk7Cithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgIGMxLmFjY2Vz
cy5jYWxsKHt9KTsKK30pOworCitkZWxldGUgYzEuZm9vOworCithc3NlcnQuc2FtZVZhbHVlKGMx
LmFjY2VzcygpLCAndGVzdCcpOworYXNzZXJ0LnNhbWVWYWx1ZShjMS5mb28sIHVuZGVmaW5lZCk7
Cithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgIGMxLmFjY2Vzcy5j
YWxsKHt9KTsKK30pOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhv
ZC1leHRlbmRzLWJyYW5kLWNoZWNrLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2Qt
ZXh0ZW5kcy1icmFuZC1jaGVjay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMjY2NGIyZmNjY2Y2ODk1YzIxNDUx
Zjc2OTc4YzdhMjg0YzdhM2QxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJp
dmF0ZS1tZXRob2QtZXh0ZW5kcy1icmFuZC1jaGVjay5qcwpAQCAtMCwwICsxLDQxIEBACisvL0Ag
cmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFz
c2VydChhLCBlKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigi
RXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7Cit9CisKK2NsYXNzIEJhc2Ugewor
ICAgICNtQmFzZSgpIHsKKyAgICAgICAgcmV0dXJuIDQ7CisgICAgfQorCisgICAgbWV0aG9kQmFz
ZSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI21CYXNlKCk7CisgICAgfQorfQorCitjbGFzcyBD
IGV4dGVuZHMgQmFzZSB7CisgICAgI20oKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmOworICAg
IH0KKworICAgIG1ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI20oKTsKKyAgICB9CisK
KyAgICAjZiA9IDE1OworfQorCitsZXQgYyA9IG5ldyBDKCk7Cithc3NlcnQoYy5tZXRob2QoKSwg
MTUpOworYXNzZXJ0KGMubWV0aG9kQmFzZSgpLCA0KTsKKworbGV0IGJhc2UgPSBuZXcgQmFzZSAo
KTsKK2Fzc2VydChiYXNlLm1ldGhvZEJhc2UoKSwgNCk7Cit0cnkgeworICAgIGMubWV0aG9kLmNh
bGwoYmFzZSk7Cit9IGNhdGNoIChlKSB7CisgICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBUeXBlRXJy
b3IsIHRydWUpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhv
ZC1nZXQtYW5kLWNhbGwuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1nZXQtYW5k
LWNhbGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTMxN2UxZTc3ZTQzMzZkNGVkYjhiODMwN2Y2MzViZDgwYTZh
MmY4OAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWdl
dC1hbmQtY2FsbC5qcwpAQCAtMCwwICsxLDI0IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNl
UHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBm
dW5jdGlvbiAobGhzLCByaHMpIHsKKyAgICAgICAgaWYgKGxocyAhPT0gcmhzKQorICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGxocyArICIgYnVnIGdvdDogIiArIHJo
cyk7CisgICAgfQorfTsKKworY2xhc3MgQyB7CisgICAgI20oKSB7IHJldHVybiB0aGlzLl92OyB9
CisKKyAgICBnZXRQcml2YXRlTWV0aG9kKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jbTsKKyAg
ICB9Cit9CisKK2xldCBjID0gbmV3IEMoKTsKKworbGV0IG8xID0ge192OiAndGVzdDI2Mid9Owor
bGV0IG8yID0ge192OiAnZm9vJ307Cithc3NlcnQuc2FtZVZhbHVlKGMuZ2V0UHJpdmF0ZU1ldGhv
ZCgpLmNhbGwobzEpLCAndGVzdDI2MicpOworYXNzZXJ0LnNhbWVWYWx1ZShjLmdldFByaXZhdGVN
ZXRob2QoKS5jYWxsKG8yKSwgJ2ZvbycpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9w
cml2YXRlLW1ldGhvZC1pbnZhbGlkLW11bHRpcGxlLWJyYW5kLWluc3RhbGxhdGlvbi5qcyBiL0pT
VGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWludmFsaWQtbXVsdGlwbGUtYnJhbmQtaW5zdGFs
bGF0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkNzc1MDc5ZjMxNGQwODgwY2Y3YjhjNjYxODY3YWQ1ZWY5
MjJhNDMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1p
bnZhbGlkLW11bHRpcGxlLWJyYW5kLWluc3RhbGxhdGlvbi5qcwpAQCAtMCwwICsxLDUxIEBACisv
L0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3Nl
cnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYSwgZSkgeworICAgICAgIGlmIChhICE9
PSBlKSAKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBn
b3Q6ICIgKyBhKTsKKyAgICB9LAorICAgIHNob3VsZFRocm93OiBmdW5jdGlvbihleGNlcHRpb24s
IGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhjZXB0aW9uOworICAgICAgICB0cnkgewor
ICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSBmYWxz
ZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRy
dWU7CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2VvZiBleGNlcHRpb24pCisgICAgICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5u
YW1lICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAgICAgICAgfQorCisgICAgICAg
IGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVj
dGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBleGVjdXRlZCB3aXRob3V0
IGV4Y2VwdGlvbiIpOworICAgIH0KK30KKworbGV0IGkgPSAwOworCitsZXQgbyA9IHt9OworY2xh
c3MgQmFzZSB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIHJldHVybiBvOworICAgIH0K
K30KKworY2xhc3MgQyBleHRlbmRzIEJhc2UgeworICAgICNtZXRob2QodikgeworICAgICAgICB0
aGlzLmZpZWxkID0gdjsKKyAgICB9CisKKyAgICBhY2Nlc3ModikgeworICAgICAgICB0aGlzLiNt
ZXRob2Qodik7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuYWNjZXNzKTsKKworbGV0
IGMgPSBuZXcgQygpOworQy5wcm90b3R5cGUuYWNjZXNzLmNhbGwoYywgJ2ZvbycpOworYXNzZXJ0
LnNhbWVWYWx1ZShjLmZpZWxkLCAnZm9vJyk7CisKK2Fzc2VydC5zaG91bGRUaHJvdyhUeXBlRXJy
b3IsIGZ1bmN0aW9uKCkgeworICAgIGMgPSBuZXcgQygpOworfSk7CisKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kLWludmFsaWRhdGUtY29tcGlsZWQtd2l0aC1jb25z
dGFudC1zeW1ib2wuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1pbnZhbGlkYXRl
LWNvbXBpbGVkLXdpdGgtY29uc3RhbnQtc3ltYm9sLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI5ZDNjNzJiMDM4
YmIwYWQ3ZWU3OTlkNTIxNDdjMjJiZDg2YmE1OTQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9wcml2YXRlLW1ldGhvZC1pbnZhbGlkYXRlLWNvbXBpbGVkLXdpdGgtY29uc3RhbnQt
c3ltYm9sLmpzCkBAIC0wLDAgKzEsNjIgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2
YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0
aW9uIChhLCBlKSB7CisgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAgIH0sCisgICAgdGhy
b3dzOiBmdW5jdGlvbihleGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAgbGV0IHRocmV3RXhj
ZXB0aW9uOworICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICAg
ICAgdGhyZXdFeGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAg
ICAgICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICBpZiAoIWUgaW5zdGFuY2Vv
ZiBleGNlcHRpb24pCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0
byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgaXQgdGhyb3dzOiAiICsgZS5uYW1l
KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24pCisgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUg
KyAiIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworICAgIH0KK30KKworZnVuY3Rp
b24gZmFjdG9yeUNsYXNzKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICAjbWV0aG9kKCkgewor
ICAgICAgICAgICAgcmV0dXJuICd0ZXN0JzsKKyAgICAgICAgfQorICAgIAorICAgICAgICBhY2Nl
c3MoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy4jbWV0aG9kKCk7CisgICAgICAgIH0KKyAg
ICB9CisgICAgbm9JbmxpbmUoQy5wcm90b3R5cGUuYWNjZXNzKTsKKworICAgIHJldHVybiBDOwor
fQorCitsZXQgQyA9IGZhY3RvcnlDbGFzcygpOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAw
OyBpKyspIHsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmFj
Y2VzcygpLCAndGVzdCcpOworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCAoKSA9PiB7Cisg
ICAgICAgIGMuYWNjZXNzLmNhbGwoe30pOworICAgIH0pOworfQorCitsZXQgQzIgPSBmYWN0b3J5
Q2xhc3MoKTsKKworbGV0IGMyID0gbmV3IEMyKCk7Cithc3NlcnQuc2FtZVZhbHVlKGMyLmFjY2Vz
cygpLCAndGVzdCcpOworCitsZXQgYyA9IG5ldyBDKCk7CisKK2Fzc2VydC50aHJvd3MoVHlwZUVy
cm9yLCAoKSA9PiB7CisgICAgYy5hY2Nlc3MuY2FsbChjMik7Cit9KTsKKworYXNzZXJ0LnRocm93
cyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICBjMi5hY2Nlc3MuY2FsbChjKTsKK30pOwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtbmVzdGVkLWNsYXNzLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtbmVzdGVkLWNsYXNzLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhj
ZGY0ODk5YTQzZTY5ZWQwZGFiMzRjMjI2M2VmZDM4ODNkOWEyMmQKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1uZXN0ZWQtY2xhc3MuanMKQEAgLTAsMCAr
MSw2OCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQor
CitmdW5jdGlvbiBhc3NlcnQoYSwgZSkgeworICAgIGlmIChhICE9PSBlKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworfQorCiso
KCkgPT4geworICAgIGNsYXNzIEJhc2UgeworICAgICAgICBDID0gY2xhc3MgeworICAgICAgICAg
ICAgbWV0aG9kKCkgeworICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiNtQmFzZSgpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgI21CYXNlKCkgeworICAgICAgICAgICAg
cmV0dXJuIDQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYmFzZSA9IG5ldyBCYXNlKCk7
CisgICAgbGV0IGMgPSBuZXcgYmFzZS5DKCk7CisgICAgYXNzZXJ0KGMubWV0aG9kLmNhbGwoYmFz
ZSksIDQpOworCisgICAgdHJ5IHsKKyAgICAgICAgYy5tZXRob2QoKTsKKyAgICB9IGNhdGNoIChl
KSB7CisgICAgICAgIGFzc2VydChlIGluc3RhbmNlb2YgVHlwZUVycm9yLCB0cnVlKTsKKyAgICB9
Cit9KSgpOworCisvLyBUZXN0IHNoYWRvdyBtZXRob2RzCisKKygoKSA9PiB7CisgICAgY2xhc3Mg
QmFzZSB7CisgICAgICAgIG1ldGhvZCgpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLiNtKCk7
CisgICAgICAgIH0KKworICAgICAgICBDID0gY2xhc3MgeworICAgICAgICAgICAgbWV0aG9kKG8p
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gby4jbSgpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAjbSgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mb287CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGZvbyA9IDQ7CisgICAgICAgIH07CisKKyAgICAgICAgI20o
KSB7CisgICAgICAgICAgICByZXR1cm4gImZvbyI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBs
ZXQgYmFzZSA9IG5ldyBCYXNlKCk7CisgICAgbGV0IGMgPSBuZXcgYmFzZS5DKCk7CisgICAgYXNz
ZXJ0KGMubWV0aG9kKGMpLCA0KTsKKyAgICBhc3NlcnQoYmFzZS5tZXRob2QoKSwgImZvbyIpOwor
CisgICAgdHJ5IHsKKyAgICAgICAgYy5tZXRob2QoYmFzZSk7CisgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIFR5cGVFcnJvciwgdHJ1ZSk7CisgICAgfQorfSko
KTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2Qtb24tc2VhbGVk
LW9iamVjdHMuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1vbi1zZWFsZWQtb2Jq
ZWN0cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hNjJmMDk5NDMxMjI1NzE0OTIxYWJkNWUxNWJhZGE0ZmI4NTA2
YzYwCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2Qtb24t
c2VhbGVkLW9iamVjdHMuanMKQEAgLTAsMCArMSw2NCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCIt
LXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1
ZTogZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICAgICAgaWYgKGFjdHVhbCAhPT0g
ZXhwZWN0ZWQpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgYWN0
dWFsICsgIiBidWcgZ290OiAiICsgZXhwZWN0ZWQpOworICAgIH0sCisKKyAgICB0aHJvd3M6IGZ1
bmN0aW9uIChleHBlY3RlZEVycm9yLCBvcCkgeworICAgICAgICB0cnkgeworICAgICAgICAgIG9w
KCk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9m
IGV4cGVjdGVkRXJyb3IpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0
ZWQgdG8gdGhyb3c6ICIgKyBleHBlY3RlZEVycm9yICsgIiBidXQgdGhyZXc6ICIgKyBlKTsKKyAg
ICAgICAgfQorICAgIH0KK307CisKK2NsYXNzIEMgeworICAgICNtKCkgeyByZXR1cm4gJ3Rlc3Qn
OyB9CisKKyAgICBhY2Nlc3MoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtKCk7CisgICAgfQor
fQorCitsZXQgYzEgPSBuZXcgQygpOworYXNzZXJ0LnNhbWVWYWx1ZShjMS5hY2Nlc3MoKSwgJ3Rl
c3QnKTsKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgYzEuYWNj
ZXNzLmNhbGwoe30pOworfSk7CisKK09iamVjdC5zZWFsKGMxKTsKKworYXNzZXJ0LnNhbWVWYWx1
ZShjMS5hY2Nlc3MoKSwgJ3Rlc3QnKTsKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlv
biAoKSB7CisgICAgYzEuYWNjZXNzLmNhbGwoe30pOworfSk7CisKKy8vIFBlcmZvcm0gYSBzZXQg
YnJhbmQgdHJhbnNpdGlvbiBvbiBmcm96ZW4gb2JqZWN0CitsZXQgc2VhbGVkT2JqZWN0ID0ge307
CitPYmplY3QuZnJlZXplKHNlYWxlZE9iamVjdCk7CisKK2NsYXNzIEJhc2UgeworICAgIGNvbnN0
cnVjdG9yKCkgeworICAgICAgICByZXR1cm4gc2VhbGVkT2JqZWN0OworICAgIH0KK30KKworY2xh
c3MgRCBleHRlbmRzIEJhc2UgeworICAgICNtKCkgeyByZXR1cm4gJ3Rlc3QgRCc7IH0KKworICAg
IHN0YXRpYyBhY2Nlc3MobykgeworICAgICAgICByZXR1cm4gby4jbSgpOworICAgIH0KK30KKwor
bGV0IGQgPSBuZXcgRCgpOworCithc3NlcnQuc2FtZVZhbHVlKEQuYWNjZXNzKGQpLCAndGVzdCBE
Jyk7Cithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgIEQuYWNjZXNz
KHt9KTsKK30pOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1v
bi11bmNhY2hlYWJsZS1kaWN0aW9uYXJ5LmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRo
b2Qtb24tdW5jYWNoZWFibGUtZGljdGlvbmFyeS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMDU1MTUwZWQ3NDU0
YTViMDA5ZTcxMjFjNTQ2ODZhODMwMDk0NzRhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3MvcHJpdmF0ZS1tZXRob2Qtb24tdW5jYWNoZWFibGUtZGljdGlvbmFyeS5qcwpAQCAtMCww
ICsxLDY0IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIp
CisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoYWN0dWFsLCBleHBl
Y3RlZCkgeworICAgICAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBhY3R1YWwgKyAiIGJ1ZyBnb3Q6ICIgKyBleHBl
Y3RlZCk7CisgICAgfSwKKworICAgIHRocm93czogZnVuY3Rpb24gKGV4cGVjdGVkRXJyb3IsIG9w
KSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgb3AoKTsKKyAgICAgICAgfSBjYXRjaChlKSB7
CisgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgZXhwZWN0ZWRFcnJvcikpCisgICAgICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4cGVjdGVk
RXJyb3IgKyAiIGJ1dCB0aHJldzogIiArIGUpOworICAgICAgICB9CisgICAgfQorfTsKKworY2xh
c3MgQyB7CisgICAgI20oKSB7IHJldHVybiAndGVzdCc7IH0KKworICAgIGFjY2VzcygpIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuI20oKTsKKyAgICB9Cit9CisKK2xldCBjMSA9IG5ldyBDKCk7Cith
c3NlcnQuc2FtZVZhbHVlKGMxLmFjY2VzcygpLCAndGVzdCcpOworYXNzZXJ0LnRocm93cyhUeXBl
RXJyb3IsIGZ1bmN0aW9uICgpIHsKKyAgICBjMS5hY2Nlc3MuY2FsbCh7fSk7Cit9KTsKKworT2Jq
ZWN0LmZyZWV6ZShjMSk7CisKK2Fzc2VydC5zYW1lVmFsdWUoYzEuYWNjZXNzKCksICd0ZXN0Jyk7
Cithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgIGMxLmFjY2Vzcy5j
YWxsKHt9KTsKK30pOworCisvLyBQZXJmb3JtIGEgc2V0IGJyYW5kIHRyYW5zaXRpb24gb24gZnJv
emVuIG9iamVjdAorbGV0IGZyb3plbk9iamVjdCA9IHt9OworT2JqZWN0LmZyZWV6ZShmcm96ZW5P
YmplY3QpOworCitjbGFzcyBCYXNlIHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgcmV0
dXJuIGZyb3plbk9iamVjdDsKKyAgICB9Cit9CisKK2NsYXNzIEQgZXh0ZW5kcyBCYXNlIHsKKyAg
ICAjbSgpIHsgcmV0dXJuICd0ZXN0IEQnOyB9CisKKyAgICBzdGF0aWMgYWNjZXNzKG8pIHsKKyAg
ICAgICAgcmV0dXJuIG8uI20oKTsKKyAgICB9Cit9CisKK2xldCBkID0gbmV3IEQoKTsKKworYXNz
ZXJ0LnNhbWVWYWx1ZShELmFjY2VzcyhkKSwgJ3Rlc3QgRCcpOworYXNzZXJ0LnRocm93cyhUeXBl
RXJyb3IsIGZ1bmN0aW9uICgpIHsKKyAgICBELmFjY2Vzcyh7fSk7Cit9KTsKKwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtcG9seW1vcnBoaWMtd2l0aC1jb25zdGFu
dC1zeW1ib2wuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1wb2x5bW9ycGhpYy13
aXRoLWNvbnN0YW50LXN5bWJvbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMDE3NjI3YTUzMDk5YTIwMWZiZWFl
YjNkOTE3YjAzNmJmOTMxYzE2Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJp
dmF0ZS1tZXRob2QtcG9seW1vcnBoaWMtd2l0aC1jb25zdGFudC1zeW1ib2wuanMKQEAgLTAsMCAr
MSw1MyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQor
CitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGEsIGUpIHsKKyAgICAg
ICBpZiAoYSAhPT0gZSkgCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBl
ICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfSwKKyAgICBzaG91bGRUaHJvdzogZnVuY3Rpb24o
ZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAg
ICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0
aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNl
cHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQor
ICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBl
eGNlcHRpb24ubmFtZSArICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7CisgICAgICAgIH0K
KworICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0
ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2xldCBpID0gMDsKKworY2xhc3Mg
QmFzZSB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIGlmIChpICUgMikKKyAgICAgICAg
ICAgIHRoaXMuYW5vdGhlckZpZWxkID0gaTsKKyAgICB9Cit9CisKK2NsYXNzIEMgZXh0ZW5kcyBC
YXNlIHsKKyAgICAjbWV0aG9kKCkgeworICAgICAgICByZXR1cm4gJ3Rlc3QnOworICAgIH0KKwor
ICAgIGFjY2VzcygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI21ldGhvZCgpOworICAgIH0KK30K
K25vSW5saW5lKEMucHJvdG90eXBlLmFjY2Vzcyk7CisKK2ZvciAoOyBpIDwgMTAwMDA7IGkrKykg
eworICAgIGNvdW50ID0gaTsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVW
YWx1ZShjLmFjY2VzcygpLCAndGVzdCcpOworfQorCithc3NlcnQuc2hvdWxkVGhyb3coVHlwZUVy
cm9yLCAoKSA9PiB7CisgICAgYy5hY2Nlc3MuY2FsbCh7fSk7Cit9KTsKKwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2Qtc2V0LWJyYW5kLXNob3VsZC1oYXZlLXdyaXRl
LWJhcnJpZXIuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZC1zZXQtYnJhbmQtc2hv
dWxkLWhhdmUtd3JpdGUtYmFycmllci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYjM5YjdhNWU3M2NiMzNmNDQ0
NGUxZmY0MDMyZGNkNDU2NTE1YzUzCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
cHJpdmF0ZS1tZXRob2Qtc2V0LWJyYW5kLXNob3VsZC1oYXZlLXdyaXRlLWJhcnJpZXIuanMKQEAg
LTAsMCArMSw0MSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRy
dWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24oYSwgZSkgewor
ICAgICAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0
ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfQorfTsKKworbGV0IG9iaiA9IHt9
OworbGV0IG92ZXJyaWRlU3VwZXIgPSBmYWxzZQorY2xhc3MgQmFzZSB7CisgICAgY29uc3RydWN0
b3IoKSB7CisgICAgICAgIGlmIChvdmVycmlkZVN1cGVyKQorICAgICAgICAgICAgcmV0dXJuIG9i
ajsKKyAgICAgICAgcmV0dXJuIHt9OworICAgIH0KK30KKworY2xhc3MgQyBleHRlbmRzIEJhc2Ug
eworICAgICNtZXRob2QoKSB7CisgICAgICAgIHJldHVybiAndGVzdCc7CisgICAgfQorCisgICAg
c3RhdGljIGFjY2VzcyhvKSB7CisgICAgICAgIHJldHVybiBvLiNtZXRob2QoKTsKKyAgICB9Cit9
Citub0lubGluZShDLmFjY2Vzcyk7CisKK2djKCk7CitsZXQgYyA9IG5ldyBDKCk7IC8vIFRoaXMg
aXMgZG9uZSB0byBmaWxsIElDIHBhdGgKK2MgPSBudWxsOworCitvdmVycmlkZVN1cGVyID0gdHJ1
ZTsKK25ldyBDKCk7CitlZGVuR0MoKTsgLy8gdGhpcyBsZWF2ZXMgb2JqIHdpdGggYSBTdHJ1Y3V0
cmUgdGhhdCB3YXMgZnJlZWQKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAg
IGFzc2VydC5zYW1lVmFsdWUoQy5hY2Nlc3Mob2JqKSwgJ3Rlc3QnKTsKK30KKwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtdW50eXBlZC11c2UuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9wcml2YXRlLW1ldGhvZC11bnR5cGVkLXVzZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iODdjOTg1
MTc2MTkzNmUxYTA3MzI3MTFkZjYxYzkxMWMyZGI4MDljCi0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2QtdW50eXBlZC11c2UuanMKQEAgLTAsMCArMSw1NyBA
QAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiLCAiLS11c2VB
Y2Nlc3NJbmxpbmluZz1mYWxzZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2hvdWxkVGhyb3c6
IGZ1bmN0aW9uKGV4Y2VwdGlvbiwgZnVuY3RvcikgeworICAgICAgICBsZXQgdGhyZXdFeGNlcHRp
b247CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7CisgICAgICAgICAgICB0
aHJld0V4Y2VwdGlvbiA9IGZhbHNlOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAg
IHRocmV3RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICghZSBpbnN0YW5jZW9mIGV4
Y2VwdGlvbikKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRo
cm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBpdCB0aHJvd3M6ICIgKyBlLm5hbWUpOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aHJld0V4Y2VwdGlvbikKKyAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIg
YnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7CisgICAgfQorfQorCitjbGFzcyBDIHsK
KyAgI21ldGhvZCgpIHt9CisKKyAgYWNjZXNzKHYpIHsKKyAgICAgIGxldCBvID0gdGhpczsKKyAg
ICAgIC8vIFRoaXMgYnJhbmNoIGlzIGhlcmUgdG8gYXZvaWQgQ2hlY2tQcml2YXRlQnJhbmQgdG8g
YmUgZm9sZGVkLgorICAgICAgaWYgKHYgPiAxMDApCisgICAgICAgICAgbyA9IHt9OworICAgICAg
by4jbWV0aG9kKCk7CisgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLmFjY2Vzcyk7CisKK2xl
dCBjID0gbmV3IEMoKTsKKworLy8gTGV0J3MgdHJpZ2dlciBKSVQgY29tcGlsYXRpb24gZm9yIGBD
LnByb3RvdHlwZS5hY2Nlc3NgCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAg
ICBjLmFjY2VzcygxNSk7Cit9CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgewor
ICAgIGFzc2VydC5zaG91bGRUaHJvdyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICAgICAgYy5hY2Nl
c3MuY2FsbCh7fSwgMCk7CisgICAgfSk7CisKKyAgICBhc3NlcnQuc2hvdWxkVGhyb3coVHlwZUVy
cm9yLCAoKSA9PiB7CisgICAgICAgIGMuYWNjZXNzLmNhbGwoMTUsIDApOworICAgIH0pOworCisg
ICAgYXNzZXJ0LnNob3VsZFRocm93KFR5cGVFcnJvciwgKCkgPT4geworICAgICAgICBjLnNldEZp
ZWxkLmNhbGwoJ3N0cmluZycsIDApOworICAgIH0pOworCisgICAgYXNzZXJ0LnNob3VsZFRocm93
KFR5cGVFcnJvciwgKCkgPT4geworICAgICAgICBjLnNldEZpZWxkLmNhbGwoU3ltYm9sKCdzeW1i
b2wnKSwgMCk7CisgICAgfSk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZh
dGUtbWV0aG9kLXdpdGgtdW5jYWNoZWFibGUtZGljdGlvbmFyeS10cmFuc2l0aW9uLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2Qtd2l0aC11bmNhY2hlYWJsZS1kaWN0aW9uYXJ5LXRy
YW5zaXRpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjIxMjg4ZWJlNmQ4MjFmMzNjYjFlMmU1ZjM4ZDY1MTE0
ZjcyMzFkZQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9k
LXdpdGgtdW5jYWNoZWFibGUtZGljdGlvbmFyeS10cmFuc2l0aW9uLmpzCkBAIC0wLDAgKzEsMzkg
QEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0
IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkKSB7
CisgICAgICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJFeHBlY3RlZDogIiArIGFjdHVhbCArICIgYnVnIGdvdDogIiArIGV4cGVjdGVkKTsK
KyAgICB9LAorCisgICAgdGhyb3dzOiBmdW5jdGlvbiAoZXhwZWN0ZWRFcnJvciwgb3ApIHsKKyAg
ICAgICAgdHJ5IHsKKyAgICAgICAgICBvcCgpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAg
ICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEVycm9yKSkKKyAgICAgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhwZWN0ZWRFcnJvciAr
ICIgYnV0IHRocmV3OiAiICsgZSk7CisgICAgICAgIH0KKyAgICB9Cit9OworCitjbGFzcyBDIHsK
KyAgICAjbSgpIHsgcmV0dXJuICd0ZXN0JzsgfQorCisgICAgYWNjZXNzKCkgeworICAgICAgICBy
ZXR1cm4gdGhpcy4jbSgpOworICAgIH0KK30KKworbGV0IGMxID0gbmV3IEMoKTsKK2Fzc2VydC5z
YW1lVmFsdWUoYzEuYWNjZXNzKCksICd0ZXN0Jyk7Cithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwg
ZnVuY3Rpb24gKCkgeworICAgIGMxLmFjY2Vzcy5jYWxsKHt9KTsKK30pOworCiskdm0udG9VbmNh
Y2hlYWJsZURpY3Rpb25hcnkoYzEpOworCithc3NlcnQuc2FtZVZhbHVlKGMxLmFjY2VzcygpLCAn
dGVzdCcpOworYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgpIHsKKyAgICBjMS5h
Y2Nlc3MuY2FsbCh7fSk7Cit9KTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0
ZS1tZXRob2RzLWlubGluZS1jYWNoZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9k
cy1pbmxpbmUtY2FjaGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTdjYjdmODllMWMwMWNjZTE1Y2JjNzE0NjEz
NmIxYWFmMzdiNzlmNgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUt
bWV0aG9kcy1pbmxpbmUtY2FjaGUuanMKQEAgLTAsMCArMSwyMiBAQAorLy9AIHJlcXVpcmVPcHRp
b25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitmdW5jdGlvbiBhc3NlcnQoYWN0dWFs
LCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJv
dyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBleHBlY3RlZCArICIgQWN0dWFsOiAiICsgYWN0dWFsKTsK
K30KKworY2xhc3MgQyB7CisgICAgI21ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuICdmb28nOwor
ICAgIH0KKworICAgIGFjY2VzcygpIHsKKyAgICAgICByZXR1cm4gdGhpcy4jbWV0aG9kKCk7Cisg
ICAgfQorfQorCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgYyA9
IG5ldyBDKCk7CisgICAgYXNzZXJ0KGMuYWNjZXNzKCksICdmb28nKTsKK30KKwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2RzLW1lZ2Ftb3JwaGljLWljLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2RzLW1lZ2Ftb3JwaGljLWljLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjNjMTY2ZDZiNzZiNzg1ZGFiODM0Njc0MmQ1MGEyMTZiZGM2YTBlZDEKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZHMtbWVnYW1vcnBoaWMtaWMuanMKQEAg
LTAsMCArMSwyNSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRy
dWUiKQorCitmdW5jdGlvbiBhc3NlcnQoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1
YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBleHBl
Y3RlZCArICIgQWN0dWFsOiAiICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gY2xhc3NFeHByKCkg
eworICAgIHJldHVybiBjbGFzcyB7CisgICAgICAgICNtZXRob2QoKSB7CisgICAgICAgICAgICBy
ZXR1cm4gJ2Zvbyc7CisgICAgICAgIH0KKworICAgICAgICBhY2Nlc3MoKSB7CisgICAgICAgICAg
IHJldHVybiB0aGlzLiNtZXRob2QoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZm9yIChsZXQg
aSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IEMgPSBjbGFzc0V4cHIoKTsKKyAgICBs
ZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0KGMuYWNjZXNzKCksICdmb28nKTsKK30KKwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2RzLW9uLXByb3h5LmpzIGIvSlNU
ZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2RzLW9uLXByb3h5LmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiNWZk
ZmNiNjIzNGQ1NDBhYTBmYTEyZThlNzc3NmQwNjNhYTVhOWYKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZHMtb24tcHJveHkuanMKQEAgLTAsMCArMSw0MiBA
QAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitmdW5j
dGlvbiBhc3NlcnQoYSwgZSwgbSkgeworICAgIGlmIChhICE9PSBlKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IobSk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydEFycmF5Q29udGVudChhLCBlKSB7Cisg
ICAgYXNzZXJ0KGEubGVuZ3RoLCBlLmxlbmd0aCwgIlNpemUgb2YgYXJyYXlzIGRvZXNuJ3QgbWF0
Y2giKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspCisgICAgICAgIGFz
c2VydChhW2ldLCBlW2ldLCAiYVsiICsgaSArICJdID0gIiArIGFbaV0gKyAiIGJ1dCBlWyIgKyBp
ICsgIl0gPSAiICsgZVtpXSk7Cit9CisKK2xldCBhcnIgPSBbXTsKKworY2xhc3MgUHJveHlCYXNl
IHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm94eSh0aGlzLCB7
CisgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uIChvYmosIHByb3ApIHsKKyAgICAgICAgICAgICAg
ICBhcnIucHVzaChwcm9wKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gb2JqW3Byb3BdOworICAg
ICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9Cit9CisKK2NsYXNzIFRlc3QgZXh0ZW5kcyBQ
cm94eUJhc2UgeworICAgICNtKCkgeworICAgICAgICByZXR1cm4gMzsKKyAgICB9CisKKyAgICBt
ZXRob2QoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtKCk7CisgICAgfQorfQorCitsZXQgdCA9
IG5ldyBUZXN0KCk7CitsZXQgciA9IHQubWV0aG9kKCk7Cithc3NlcnQociwgMywgIkV4cGVjdGVk
OiAzIGJ1dCBnb3Q6ICIgKyByKTsKKworYXNzZXJ0QXJyYXlDb250ZW50KGFyciwgWydtZXRob2Qn
XSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1wb2x5LWlj
LW11bHRpcGxlLWNsYXNzZXMuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZHMtcG9s
eS1pYy1tdWx0aXBsZS1jbGFzc2VzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlmNmM2ZDZhNjU1NmU4MzE1NjYz
MDg3NmE4MTM5ZWY4NTJkYjFkODAKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9w
cml2YXRlLW1ldGhvZHMtcG9seS1pYy1tdWx0aXBsZS1jbGFzc2VzLmpzCkBAIC0wLDAgKzEsMjgg
QEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworZnVu
Y3Rpb24gYXNzZXJ0KGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBl
Y3RlZCkKKyAgICAgICAgdGhyb3cgRXJyb3IoIkV4cGVjdGVkOiAiICsgZXhwZWN0ZWQgKyAiIEFj
dHVhbDogIiArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIGNsYXNzRXhwcigpIHsKKyAgICByZXR1
cm4gY2xhc3MgeworICAgICAgICAjbWV0aG9kKCkgeworICAgICAgICAgICAgcmV0dXJuICdmb28n
OworICAgICAgICB9CisKKyAgICAgICAgYWNjZXNzKCkgeworICAgICAgICAgICByZXR1cm4gdGhp
cy4jbWV0aG9kKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2xldCBDMSA9IGNsYXNzRXhwcigp
OworbGV0IEMyID0gY2xhc3NFeHByKCk7CisKK2xldCBhcnIgPSBbQzEsIEMyXTsKK2ZvciAobGV0
IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBjID0gbmV3IGFycltpICUgYXJyLmxl
bmd0aF0oKTsKKyAgICBhc3NlcnQoYy5hY2Nlc3MoKSwgJ2ZvbycpOworfQorCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZHMtcG9seS1pYy1zaW5nbGUtY2xhc3MuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZHMtcG9seS1pYy1zaW5nbGUtY2xhc3MuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNWM0ODViNGY4OGU5NDQ1OTIzNjhiOGQ1ZjVmODA1NDk5ZmNmMjU2NAotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1wb2x5LWljLXNp
bmdsZS1jbGFzcy5qcwpAQCAtMCwwICsxLDI1IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNl
UHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChhY3R1YWwsIGV4cGVjdGVk
KSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IEVycm9yKCJF
eHBlY3RlZDogIiArIGV4cGVjdGVkICsgIiBBY3R1YWw6ICIgKyBhY3R1YWwpOworfQorCitjbGFz
cyBDIHsKKyAgICAjbWV0aG9kKCkgeworICAgICAgICByZXR1cm4gJ2Zvbyc7CisgICAgfQorCisg
ICAgYWNjZXNzKCkgeworICAgICAgIHJldHVybiB0aGlzLiNtZXRob2QoKTsKKyAgICB9Cit9CisK
K2xldCBjMSA9IG5ldyBDKCk7CitsZXQgYzIgPSBuZXcgQygpOworYzIuYmFyID0gJ2Jhcic7Cits
ZXQgYXJyID0gW2MxLCBjMl07Citmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAg
ICBhc3NlcnQoYXJyW2kgJSBhcnIubGVuZ3RoXS5hY2Nlc3MoKSwgJ2ZvbycpOworfQorCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5hbWVzLWF2YWlsYWJsZS1vbi1kaXJlY3Qt
ZXZhbC5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWRpcmVj
dC1ldmFsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY0Y2UwZTBhZjgwNTc4ZTg5NzE2YTE2NzJlZGMxNzczMDVi
MDY0ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5hbWVzLWF2
YWlsYWJsZS1vbi1kaXJlY3QtZXZhbC5qcwpAQCAtMCwwICsxLDIzIEBACisvL0AgcmVxdWlyZU9w
dGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAg
c2FtZVZhbHVlOiBmdW5jdGlvbiAobGhzLCByaHMpIHsKKyAgICAgICAgaWYgKGxocyAhPT0gcmhz
KQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIHJocyArICIgYnVn
IGdvdDogIiArIGxocyk7CisgICAgfQorfTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBD
IHsKKyAgICAgICAgI20oKSB7IHJldHVybiAndGVzdCc7IH0KKworICAgICAgICBjYWxsTWV0aG9k
RnJvbUV2YWwoKSB7CisgICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXM7CisgICAgICAgICAgICBy
ZXR1cm4gZXZhbCgnc2VsZi4jbSgpJyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9
IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmNhbGxNZXRob2RGcm9tRXZhbCgpLCAn
dGVzdCcpOworfSkoKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1s
IGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCmluZGV4IDUxNWRhM2NkYjc5MGVhN2Q3MzZm
ODZhYzczZjMxODY3ZGJiOWVlMTcuLjQxMTY2NzZkZDFlYTg2NDMxNTg2NDA5NWU1NDYxZDE5MGQ2
ZTViYTEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAorKysgYi9KU1Rl
c3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKQEAgLTQsNiArNCw3IEBAIGZsYWdzOgogICBXZWFrUmVm
OiB1c2VXZWFrUmVmcwogICBGaW5hbGl6YXRpb25SZWdpc3RyeTogdXNlV2Vha1JlZnMKICAgY2xh
c3MtZmllbGRzLXByaXZhdGU6IHVzZVByaXZhdGVDbGFzc0ZpZWxkcworICBjbGFzcy1tZXRob2Rz
LXByaXZhdGU6IHVzZVByaXZhdGVNZXRob2RzCiAgIGNsYXNzLXN0YXRpYy1maWVsZHMtcHVibGlj
OiB1c2VQdWJsaWNTdGF0aWNDbGFzc0ZpZWxkcwogICBjbGFzcy1zdGF0aWMtZmllbGRzLXByaXZh
dGU6IHVzZVByaXZhdGVTdGF0aWNDbGFzc0ZpZWxkcwogICBJbnRsLkRhdGVUaW1lRm9ybWF0LWRh
eVBlcmlvZDogdXNlSW50bERhdGVUaW1lRm9ybWF0RGF5UGVyaW9kCkBAIC0xOSw3ICsyMCw2IEBA
IHNraXA6CiAgICAgLSByZWdleHAtbG9va2JlaGluZAogICAgIC0gbGVnYWN5LXJlZ2V4cAogCi0g
ICAgLSBjbGFzcy1tZXRob2RzLXByaXZhdGUKICAgICAtIGNsYXNzLXN0YXRpYy1tZXRob2RzLXBy
aXZhdGUKICAgICAtIGNsZWFudXBTb21lCiAgICAgLSBob3N0LWdjLXJlcXVpcmVkCg==
</data>
<flag name="commit-queue"
          id="437915"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419630</attachid>
            <date>2021-02-08 14:35:05 -0800</date>
            <delta_ts>2021-02-09 07:44:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194434-20210208193502.patch</filename>
            <type>text/plain</type>
            <size>349272</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
OWZjM2QwNTRhN2MzZTExYmZlOTI2NDRlNGIzMGE5MTFjNzAwZThjLi41YTg4ZTkwMGQ2NWI3MzQ1
YjM0NGM5MjEzYjhkZTg1NGJmZjFjMjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MjkgQEAKKzIwMjEtMDEtMjkgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtFU05leHRdIEltcGxlbWVudCBwcml2YXRlIG1ldGhvZHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDQzNAorCisgICAgICAg
IFJldmlld2VkIGJ5IEZpbGlwIFBpemxvLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYWRkaW5n
IHN1cHBvcnQgdG8gcHJpdmF0ZSBtZXRob2RzIGZvbGxvd2luZyB0aGUKKyAgICAgICAgc3BlY2lm
aWNhdGlvbiBvbiBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtcHJpdmF0ZS1tZXRob2RzLy4KKyAg
ICAgICAgVGhpcyBpcyBpbnRyb2R1Y2luZyBhIG5ldyB3YXkgdG8gZGVjbGFyZSBwcml2YXRlIG1l
dGhvZHMgb24KKyAgICAgICAgY2xhc3Mgc3ludGF4LiBQcml2YXRlIG1ldGhvZHMgYXJlIG9ubHkg
YWNjZXNzaWJsZSB3aXRoaW4KKyAgICAgICAgY2xhc3NlcyB0aGV5IHdlcmUgZGVjbGFyZWQsIGFu
ZCBvbmx5IGNhbiBiZSBjYWxsZWQgZnJvbQorICAgICAgICBvYmplY3RzIHRoYXQgYXJlIGluc3Rh
bmNlIG9mIHRoZXNlIGNsYXNzZXMuCisgICAgICAgIFRvIGd1YXJhbnRlZSBzdWNoIHJ1bGVzLCB0
aGUgcHJvcG9zYWwgcHJlc2VudHMgdGhlIGNvbmNlcHQgb2YKKyAgICAgICAgQnJhbmQgQ2hlY2su
IER1cmluZyBjbGFzcyBldmFsdWF0aW9uLCBpZiBhIHByaXZhdGUgbWV0aG9kIGlzIHByZXNlbnQs
CisgICAgICAgIGEgYGJyYW5kYCBpcyBpbnN0YWxsZWQgaW4gdGhpcyBjbGFzcy4gRXZlcnkgaW5z
dGFuY2Ugb2Ygc3VjaCBjbGFzcworICAgICAgICB0aGVuIGdldHMgdGhpcyBicmFuZCBpbnN0YWxs
ZWQgZHVyaW5nIGBbW0NvbnN0cnVjdF1dYCBvcGVyYXRpb24uIEl0CisgICAgICAgIG1lYW5zIHRo
YXQgYW4gb2JqZWN0IGNhbiBoYXZlIG11bHRpcGxlIGJyYW5kcyAoZS5nIHdoZW4gdGhlcmUgaXMg
YWxzbworICAgICAgICBwcml2YXRlIG1ldGhvZHMgZGVjbGFyZWQgb24gc3VwZXIgY2xhc3MpLiBC
ZWZvcmUgYWNjZXNzaW5nIGEgcHJpdmF0ZQorICAgICAgICBtZXRob2QsIHRoZXJlIGlzIGEgY2hl
Y2sgdG8gdmFsaWRhdGUgaWYgdGhlIHRhcmdldCBvZiB0aGUgY2FsbCBoYXMgdGhlCisgICAgICAg
IGJyYW5kIG9mIGNhbGxlZSBtZXRob2QuCisgICAgICAgIFRoZSBicmFuZCBjaGVjayBtZWNoYW5p
c20gaXMgaW1wbGVtZW50ZWQgdXNpbmcgYSBgQHByaXZhdGVCcmFuZGAKKyAgICAgICAgc3RvcmVk
IG9uIGNsYXNzIHNjb3BlLiBIZXJlIGlzIGEgcmVwcmVzZW50YXRpb24gb2YgaG93IHRoaXMgbWVj
aGFuaXNtCisgICAgICAgIHdvcmtzOgorCisgICAgICAgIGBgYAorICAgICAgICBjbGFzcyBDIHsK
KyAgICAgICAgICAgICNtKCkgeyByZXR1cm4gMzsgfQorICAgICAgICAgICAgbWV0aG9kKCkgeyBy
ZXR1cm4gdGhpcy4jbSgpOyB9CisgICAgICAgIH0KKworICAgICAgICBsZXQgYyA9IG5ldyBDKCk7
CisgICAgICAgIGNvbnNvbGUubG9nKGMubWV0aG9kKCkpOyAvLyBwcmludHMgMworICAgICAgICBg
YGAKKworICAgICAgICBHZW5lcmF0ZWQgYnl0ZWNvZGUgZm9yIHRoZSBmb2xsb3dpbmcgcmVwcmVz
ZW50YXRpb246CisgICAgICAgIGBgYAorICAgICAgICB7IC8vIGNsYXNzIGxleGljYWwgc2NvcGUK
KyAgICAgICAgICAgIGNvbnN0IEBwcml2YXRlQnJhbmQgPSBAY3JlYXRlUHJpdmF0ZVN5bWJvbCgp
OworICAgICAgICAgICAgY29uc3QgI20gPSBmdW5jdGlvbiAoKSB7IHJldHVybiAzOyB9CisgICAg
ICAgICAgICBDLnByb3RvdHlwZS5tZXRob2QgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAg
ICBAY2hlY2tfcHJpdmF0ZV9icmFuZCh0aGlzLCBAcHJpdmF0ZUJyYW5kKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gI20uY2FsbCh0aGlzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEMg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBAc2V0X3ByaXZhdGVfYnJhbmQodGhpcywg
QHByaXZhdGVCcmFuZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBsZXQg
YyA9IG5ldyBDKCk7CisgICAgICAgIGNvbnNvbGUubG9nKGMubWV0aG9kKCkpOyAvLyBwcmludHMg
MworICAgICAgICBgYGAKKworICAgICAgICAjIFJlc29sdmluZyBjb3JyZWN0IGJyYW5kIHRvIGNo
ZWNrCisKKyAgICAgICAgSW4gdGhlIGNhc2Ugb2Ygc2hhZG93aW5nIG9yIG5lc3RlZCBzY29wZSwg
d2UgbmVlZCB0byBlbWl0IGJyYW5kCisgICAgICAgIGNoZWNrcyB0byB0aGUgcmlnaHQgcHJpdmF0
ZSBicmFuZC4gU2VlIGNvZGUgYmVsb3c6CisKKyAgICAgICAgYGBgCisgICAgICAgIGNsYXNzIEMg
eworICAgICAgICAgICAgI20oKSB7IHJldHVybiAzOyB9CisgICAgICAgICAgICBtZXRob2QoKSB7
IHJldHVybiB0aGlzLiNtKCk7fQorCisgICAgICAgICAgICBBID0gY2xhc3MgeworICAgICAgICAg
ICAgICAgICNtMigpIHsgcmV0dXJuIDM7IH0KKyAgICAgICAgICAgICAgICBmb28obykgeyByZXR1
cm4gby4jbSgpOyB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYGBgCisKKyAg
ICAgICAgVGhlIGNhbGwgb2YgIiNtIiBpbiBgZm9vYCByZWZlcnMgdG8gIkM6OiNtIi4gSW4gc3Vj
aCBjYXNlLCB3ZSBuZWVkIHRvCisgICAgICAgIGNoZWNrIEMncyBwcml2YXRlIGJyYW5kLCBpbnN0
ZWFkIG9mIEEncyBwcml2YXRlIGJyYW5kLgorICAgICAgICBUbyBwZXJmb3JtIHRoZSBwcm9wZXIg
Y2hlY2ssIHdlIGZpcnN0IHJlc29sdmUgc2NvcGUgb2YgIiNtIiBhbmQgdGhlbgorICAgICAgICBj
aGVjayB0aGUgcHJpdmF0ZSBicmFuZCBvZiB0aGlzIHNjb3BlICh0aGUgc2NvcGUgd2hlcmUgdGhl
IHByaXZhdGUKKyAgICAgICAgbWV0aG9kIGFuZCBicmFuZCBhcmUgc3RvcmVkIGlzIHRoZSBzYW1l
KS4KKyAgICAgICAgU28gdGhlIGJ5dGVjb2RlIHRvIGxvb2t1cCB0aGUgcmlnaHQgYnJhbmQgaXM6
CisKKyAgICAgICAgYGBgCisgICAgICAgIG1vdiBsb2M5LCBhcmcxCisgICAgICAgIHJlc29sdmVf
c2NvcGUgbG9jMTAsICIjbSIKKyAgICAgICAgZ2V0X2Zyb21fc2NvcGUgbG9jMTEsIGxvYzEwLCAi
QHByaXZhdGVCcmFuZCIKKyAgICAgICAgY2hlY2tfcHJpdmF0ZV9icmFuZCBsb2M5LCBsb2MxMQor
ICAgICAgICBnZXRfZnJvbV9zY29wZSBsb2MxMSwgbG9jMTAsICIjbSIKKyAgICAgICAgLy8gc2V0
dXAgY2FsbCBmcmFtZQorICAgICAgICBjYWxsIGxvYzExLCAuLi4KKyAgICAgICAgLy8gLi4uCisg
ICAgICAgIGBgYAorCisgICAgICAgICMgQnJhbmQgY2hlY2sgbWVjaGFuaXNtCisKKyAgICAgICAg
V2UgYXJlIGludHJvZHVjaW5nIGluIHRoaXMgcGF0Y2ggMiBuZXcgYnl0ZWNvZGVzIHRvIGFsbG93
IGJyYW5kIGNoZWNrCisgICAgICAgIG9mIG9iamVjdHM6IGBvcF9zZXRfYnJhbmRgIGFuZCBgb3Bf
Y2hlY2tfYnJhbmRgLgorICAgICAgICBgb3Bfc2V0X2JyYW5kYCBzZXRzIGEgbmV3IGJyYW5kIGlu
IGFuIG9iamVjdCwgc28gd2UgY2FuIHBlcmZvcm0gdGhlIGJyYW5kCisgICAgICAgIGNoZWNrIGxh
dGVyIHdoZW4gYWNjZXNzaW5nIHByaXZhdGUgbWV0aG9kcy4gVGhpcyBvcGVyYXRpb25zIHRocm93
cyB3aGVuCisgICAgICAgIHRyeWluZyB0byBhZGQgdGhlIHNhbWUgYnJhbmQgdHdpY2UgaW4gYW4g
T2JqZWN0LgorICAgICAgICBgb3BfY2hlY2tfYnJhbmRgIGNoZWNrcyBpZiB0aGUgZ2l2ZW4gb2Jq
ZWN0IGNvbnRhaW5zIHRoZSBicmFuZCB3ZSBhcmUKKyAgICAgICAgbG9va2luZyBmb3IuIEl0IHRy
YXZlcnNlcyB0aGUgYnJhbmQgY2hhaW4gdG8gdmVyaWZ5IGlmIHRoZSBicmFuZCBpcworICAgICAg
ICBwcmVzZW50LCBhbmQgdGhyb3dzIGBUeXBlRXJyb3JgIG90aGVyd2lzZS4KKworICAgICAgICBX
ZSBhcmUgYWxzbyBpbnRyb2R1Y2luZyBhIHN1YmNsYXNzIGZvciBTdHJ1Y3R1cmUgY2FsbGVkIEJy
YW5kZWRTdHJ1Y3R1cmUuCisgICAgICAgIEl0IGlzIHVzZWQgdG8gc3RvcmUgYnJhbmRzIGFuZCB0
byBhbGxvdyBicmFuZCBjaGVjayBtZWNoYW5pc20uIEJyYW5kZWRTdHJ1Y3R1cmUKKyAgICAgICAg
c3RvcmVzIGEgYnJhbmQgYW5kIGEgcGFyZW50IHBvaW50ZXIgdG8gYW5vdGhlciBCcmFuZGVkU3Ry
dWN0dXJlIHRoYXQgYWxsb3cKKyAgICAgICAgdXMgdHJhdmVyc2UgdGhlIGJyYW5kIGNoYWluLiBX
aXRoIGBCcmFuZGVkU3RydWN0dXJlYCwgd2UgY2FuIHRoZW4KKyAgICAgICAgaW5mZXIgdGhhdCBh
IGdpdmVuIG9iamVjdCBoYXMgdGhlIGJyYW5kIHdlIGFyZSBsb29raW5nIGZvciBqdXN0CisgICAg
ICAgIGNoZWNraW5nIGl0cyBzdHJ1Y3R1cmVJZC4gVGhpcyBpcyB2ZXJ5IGdvb2Qgb3B0aW1pemF0
aW9uLCBzaW5jZSB3ZSBjYW4KKyAgICAgICAgcmVkdWNlIG1vc3Qgb2YgYnJhbmQgY2hlY2tzIHRv
IHN0cnVjdHVyZSBjaGVja3MuCisKKyAgICAgICAgV2UgY3JlYXRlZCBhIG5ldyBraW5kIG9mIHRy
YW5zaXRpb24gY2FsbGVkIGBTZXRCcmFuZGAgdGhhdCBoYXBwZW5zIHdoZW4KKyAgICAgICAgYG9w
X3NldF9icmFuZGAgaXMgZXhlY3V0ZWQuIFRoaXMgYWxsb3cgdXMgdG8gY2FjaGUgc3VjaCBraW5k
IG9mCisgICAgICAgIHRyYXNpdGlvbnMgb24gdHJhc2l0aW9uIHRhYmxlIHVzaW5nIHRoZSBrZXkg
YDxicmFuZC0+dWlkLCAwLAorICAgICAgICBUcmFuc2l0aW9uS2luZDo6U2V0QnJhbmQ+YC4gRHVy
aW5nIHRoaXMgdHJhbnNpdGlvbiwgd2UgdGFrZSBwcmV2aW91cworICAgICAgICBzdHJ1Y3R1cmUg
YW5kIGFwcGx5IG9uZSBvZiB0aGUgZm9sbG93aW5nIHJ1bGVzOgorCisgICAgICAgICAgICAxLiBJ
ZiBpdOKAmXMgYSBCcmFuZGVkU3RydWN0dXJlLCB3ZSB0aGVuIHNldCBpdCB0byBgbV9wYXJlbnRC
cmFuZGAsCisgICAgICAgICAgICB0byBhbGxvdyBwcm9wZXIgYnJhbmQgY2hhaW4gY2hlY2suCisg
ICAgICAgIAorICAgICAgICAgICAgMi4gSWYgaXTigJlzIG5vdCBhIEJyYW5kZWRTdHJ1Y3R1cmUs
IHdlIHNldCBgbV9wYXJlbnRCcmFuZGAgdG8gbnVsbHB0ciwKKyAgICAgICAgICAgIG1lYW5pbmcg
dGhhdCB0aGlzIGlzIHRoZSBmaXJzdCBicmFuZCBiZWluZyBhZGRlZCB0byB0aGUgb2JqZWN0Cisg
ICAgICAgICAgICB3aXRoIHRoaXMgc3RydWN0dXJlLgorICAgICAgICAKKyAgICAgICAgRm9yIG5v
dywgd2UgYXJlIHVzaW5nIHRoZSBmbGFnIGBpc0JyYW5kZWRTdHJ1Y3R1cmVgIHRvIGlkZW50aWZ5
IHRoYXQgYQorICAgICAgICBnaXZlbiBTdHJ1Y3R1cmUgaXMgYSBCcmFuZGVkU3RydWN0dXJlLiBU
aGlzIGlzIGRvbmUgdG8gYXZvaWQgY2hhbmdlcworICAgICAgICBvbiBwbGFjZXMgd2hlcmUgd2Ug
YXJlIGNoZWNraW5nIGZvciBgdm0uc3RydWN0dXJlU3RydWN0dXJlKClgLgorICAgICAgICBIb3dl
dmVyLCBpZiB3ZSBldmVyIG5lZWQgc3BhY2Ugb24gU3RydWN0dXJlLCB0aGlzIGZsYWcgaXMgYSBn
b29kCisgICAgICAgIGNhbmRpZGF0ZSB0byBiZSBkZWxldGVkIGFuZCB3ZSBjYW4gbW92ZSB0byBh
IHNvbHV0aW9uIHRoYXQgdXNlcworICAgICAgICBgdm0uYnJhbmRlZFN0cnVjdHVyZVN0cnVjdHVy
ZSgpYDsKKworICAgICAgICAgIyBKSVQgU3VwcG9ydAorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxz
byBpbmNsdWRlcyBpbml0aWFsIEpJVCBzdXBwb3J0IGZvciBgc2V0X3ByaXZhdGVfYnJhbmRgCisg
ICAgICAgIGFuZCBgY2hlY2tfcHJpdmF0ZV9icmFuZGAuIE9uIEJhc2VsaW5lIEpJVCwgd2UgYXJl
IHVzaW5nCisgICAgICAgIGBKSVRQcmF2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3JgIHRvIHN1cHBv
cnQgSUMgZm9yIGJvdGggb3BlcmFuZHMuCisgICAgICAgIE9uIERGR0J5dGVDb2RlUGFyc2VyIHdl
IGFyZSB0cnlpbmcgdG8gaW5saW5lIGJyYW5kIGFjY2VzcyB3aGVuZXZlcgorICAgICAgICBwb3Nz
aWJsZSwgYW5kIGZhbGxiYWNraW5nIHRvIGBTZXRQcml2YXRlQnJhbmRgIGFuZAorICAgICAgICBg
Q2hlY2tQcml2YXRlQnJhbmRgIG90aGVyd2lzZS4gVGhvc2Ugbm9kZXMgYXJlIG5vdCBiZWluZyBv
cHRpbWl6ZWQgYXQKKyAgICAgICAgdGhlaXIgZnVsbCBwb3RlbnRpYWwsIGJ1dCB0aGUgY29kZSBn
ZW5lcmF0ZWQgYnkgdGhlbSBpcyBhbHNvIHJlbHlpbmcgb24gCisgICAgICAgIGBKSVRQcml2YXRl
QnJhbmRBY2Nlc3NHZW5lcmF0b3JgIHRvIGhhdmUgSUMgc3VwcG9ydCBmb3IgYm90aCBERkcgYW5k
CisgICAgICAgIEZUTC4gRHVyaW5nIERGRyBwYXJzaW5nLCB3ZSB0cnkgcmVkdWNlIHRob3NlIGFj
Y2VzcyAgdG8gYENoZWNrQ29uc3RhbnRgCisgICAgICAgIGFuZCBgQ2hlY2tTdHJ1Y3R1cmVgICh3
aXRoIGBQdXRTdHJ1Y3R1cmVgIGZvciBgc2V0X3ByaXZhdGVfYnJhbmRgIGNhc2VzKQorICAgICAg
ICBiYXNlZCBvbiBhdmFpbGFibGUgcHJvZmlsZWQgZGF0YS4gVGhpcyBpcyBtZWFudCB0byBtYWtl
IGJyYW5kIGNoZWNrcworICAgICAgICBhbG1vc3QgZnJlZSBvbiBERkcvRlRMIHRpZXJzIHdoZW4g
d2UgaGF2ZSBhIHNpbmdsZSBldmFsdWF0aW9uIG9mIGEKKyAgICAgICAgY2xhc3MsIHNpbmNlIHRo
ZSBgQ2hlY2tDb25zdGFudGAgY2FuIGJlIGVsaW1pbmF0ZWQgYnkgdGhlIGNvbnN0YW50LWZvbGRl
ZAorICAgICAgICBzY29wZSBsb2FkLCBhbmQgdGhlIGBDaGVja1N0cnVjdHVyZWAgaXMgdmVyeSBs
aWtlbHkgdG8gYmUgcmVkdW5kYW50CisgICAgICAgIHRvIGFueSBvdGhlciBgQ2hlY2tTdHJ1Y3R1
cmVgIHRoYXQgY2FuIGJlIHBlcmZvcm1lZCBvbiByZWNlaXZlcgorICAgICAgICB3aGVuIHdlIGhh
dmUgYSBmaW5pdGUgc3RydWN0dXJlIHNldC4KKyAgICAgICAgRm9yIGluc3RhbmNlLCB3aGVuIHdl
IGhhdmUgYSBicmFuZCBjaGVjayBvbiBhIHBhdGgtb2Ytbm8tcmV0dXJuIHRvCisgICAgICAgIGEg
YEdldEJ5T2Zmc2V0YCBzZXF1ZW5jZSBvbiB0aGUgc2FtZSByZWNlaXZlciwgdGhlIGBDaGVja1N0
cnVjdHVyZWAKKyAgICAgICAgZm9yIHRoZSBicmFuZCBjaGVjayB3aWxsIGVuYWJsZSBDU0Ugb2Yg
dGhlIGBDaGVja1N0cnVjdHVyZWAgdGhhdAorICAgICAgICB3b3VsZCBoYXBwZW4gZm9yIHRoYXQg
YEdldEJ5T2Zmc2V0YC4gU3VjaCBkZXNpZ24gaXMgcG9zc2libGUgYmVjYXVzZSBicmFuZAorICAg
ICAgICBjaGVja3Mgc3VwcG9ydHMgcG9seW1vcnBoaWMgYWNjZXNzIGNsb3NlIHRvIHdoYXQgd2Ug
aGF2ZSBmb3IKKyAgICAgICAgYEdldEJ5T2Zmc2V0YCBzZXF1ZW5jZXMuCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGJ1aWx0aW5zL0J1
aWx0aW5FeGVjdXRhYmxlcy5jcHA6CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVjdXRhYmxlczo6
Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFi
bGVzOjpjcmVhdGVFeGVjdXRhYmxlKToKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluRXhlY3V0
YWJsZ